valid-lazy

Ensures that definitions and uses of properties on the lazy object are valid. This rule checks for using unknown properties, duplicated symbols, unused symbols, and also lazy getter used at top-level unconditionally.

Examples of incorrect code for this rule:

const lazy = {};
if (x) {
  // Unknown lazy member property {{name}}
  lazy.bar.foo();
}
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, { foo: "foo.sys.mjs"});

// Duplicate symbol foo being added to lazy.
ChromeUtils.defineLazyGetter(lazy, "foo", () => {});
if (x) {
  lazy.foo3.bar();
}
const lazy = {};
// Unused lazy property foo
ChromeUtils.defineESModuleGetters(lazy, { foo: "foo.sys.mjs"});
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, { foo: "foo.sys.mjs"});
// Used at top-level unconditionally.
lazy.foo.bar();

Examples of correct code for this rule:

const lazy = {};
ChromeUtils.defineLazyGetter(lazy, "foo1", () => {});
ChromeUtils.defineESModuleGetters(lazy, { foo2: "foo2.sys.mjs"});

if (x) {
  lazy.foo1.bar();
  lazy.foo2.bar();
}