@prover-coder-ai/eslint-plugin-suggest-members 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core/plugin-meta.d.ts +2 -1
- package/lib/core/plugin-meta.d.ts.map +1 -1
- package/lib/core/plugin-meta.js +6 -5
- package/lib/core/plugin-meta.js.map +1 -1
- package/lib/core/rule-names.d.ts +4 -0
- package/lib/core/rule-names.d.ts.map +1 -0
- package/lib/core/rule-names.js +20 -0
- package/lib/core/rule-names.js.map +1 -0
- package/lib/index.d.ts +4 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +15 -12
- package/lib/index.js.map +1 -1
- package/lib/rules/index.d.ts +3 -7
- package/lib/rules/index.d.ts.map +1 -1
- package/lib/rules/index.js +0 -6
- package/lib/rules/index.js.map +1 -1
- package/lib/rules/suggest-exports/index.d.ts +2 -2
- package/lib/rules/suggest-exports/index.d.ts.map +1 -1
- package/lib/rules/suggest-exports/index.js +7 -19
- package/lib/rules/suggest-exports/index.js.map +1 -1
- package/lib/rules/suggest-members/index.d.ts +1 -2
- package/lib/rules/suggest-members/index.d.ts.map +1 -1
- package/lib/rules/suggest-members/index.js +29 -34
- package/lib/rules/suggest-members/index.js.map +1 -1
- package/lib/rules/suggest-missing-names/index.d.ts.map +1 -1
- package/lib/rules/suggest-missing-names/index.js +7 -18
- package/lib/rules/suggest-missing-names/index.js.map +1 -1
- package/lib/rules/suggest-module-paths/index.d.ts +1 -2
- package/lib/rules/suggest-module-paths/index.d.ts.map +1 -1
- package/lib/rules/suggest-module-paths/index.js +33 -43
- package/lib/rules/suggest-module-paths/index.js.map +1 -1
- package/lib/shell/shared/import-validation-rule-factory.d.ts +3 -2
- package/lib/shell/shared/import-validation-rule-factory.d.ts.map +1 -1
- package/lib/shell/shared/import-validation-rule-factory.js +7 -14
- package/lib/shell/shared/import-validation-rule-factory.js.map +1 -1
- package/lib/shell/shared/rule-creator.d.ts +8 -0
- package/lib/shell/shared/rule-creator.d.ts.map +1 -0
- package/lib/shell/shared/rule-creator.js +32 -0
- package/lib/shell/shared/rule-creator.js.map +1 -0
- package/package.json +3 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare const name = "@prover-coder-ai/eslint-plugin-suggest-members";
|
|
2
|
-
export declare const version = "0.0.
|
|
2
|
+
export declare const version = "0.0.7";
|
|
3
|
+
export declare const namespace = "eslint-plugin-suggest-members";
|
|
3
4
|
//# sourceMappingURL=plugin-meta.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-meta.d.ts","sourceRoot":"","sources":["../../src/core/plugin-meta.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,IAAI,mDAAmD,CAAA;AACpE,eAAO,MAAM,OAAO,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"plugin-meta.d.ts","sourceRoot":"","sources":["../../src/core/plugin-meta.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,IAAI,mDAAmD,CAAA;AACpE,eAAO,MAAM,OAAO,UAAU,CAAA;AAC9B,eAAO,MAAM,SAAS,kCAAkC,CAAA"}
|
package/lib/core/plugin-meta.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
// CHANGE: plugin metadata constants
|
|
2
|
-
// WHY:
|
|
1
|
+
// CHANGE: plugin metadata constants (auto-generated)
|
|
2
|
+
// WHY: keep meta version in sync with package.json
|
|
3
3
|
// QUOTE(TZ): n/a
|
|
4
4
|
// REF: AGENTS.md CORE
|
|
5
5
|
// SOURCE: n/a
|
|
6
|
-
// FORMAT THEOREM: name,version are non-empty
|
|
6
|
+
// FORMAT THEOREM: name,version,namespace are non-empty
|
|
7
7
|
// PURITY: CORE
|
|
8
8
|
// EFFECT: n/a
|
|
9
|
-
// INVARIANT: name != ""
|
|
9
|
+
// INVARIANT: name != "" && version != "" && namespace != ""
|
|
10
10
|
// COMPLEXITY: O(1)/O(1)
|
|
11
11
|
export const name = "@prover-coder-ai/eslint-plugin-suggest-members";
|
|
12
|
-
export const version = "0.0.
|
|
12
|
+
export const version = "0.0.7";
|
|
13
|
+
export const namespace = "eslint-plugin-suggest-members";
|
|
13
14
|
//# sourceMappingURL=plugin-meta.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-meta.js","sourceRoot":"","sources":["../../src/core/plugin-meta.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"plugin-meta.js","sourceRoot":"","sources":["../../src/core/plugin-meta.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,mDAAmD;AACnD,iBAAiB;AACjB,sBAAsB;AACtB,cAAc;AACd,uDAAuD;AACvD,eAAe;AACf,cAAc;AACd,4DAA4D;AAC5D,wBAAwB;AACxB,MAAM,CAAC,MAAM,IAAI,GAAG,gDAAgD,CAAA;AACpE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAA;AAC9B,MAAM,CAAC,MAAM,SAAS,GAAG,+BAA+B,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type RuleName = "suggest-exports" | "suggest-imports" | "suggest-members" | "suggest-missing-names" | "suggest-module-paths";
|
|
2
|
+
export declare const RULE_NAMES: ReadonlyArray<RuleName>;
|
|
3
|
+
export declare const ruleDocsUrl: (ruleName: RuleName) => string;
|
|
4
|
+
//# sourceMappingURL=rule-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-names.d.ts","sourceRoot":"","sources":["../../src/core/rule-names.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,QAAQ,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,uBAAuB,GACvB,sBAAsB,CAAA;AAE1B,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,QAAQ,CAM9C,CAAA;AAKD,eAAO,MAAM,WAAW,GAAI,UAAU,QAAQ,KAAG,MAAgD,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// CHANGE: centralize rule names + docs URL
|
|
2
|
+
// WHY: single source of truth for rule ids and documentation mapping
|
|
3
|
+
// QUOTE(TZ): n/a
|
|
4
|
+
// REF: AGENTS.md CORE
|
|
5
|
+
// SOURCE: n/a
|
|
6
|
+
// FORMAT THEOREM: ∀r ∈ RULE_NAMES: ruleDocsUrl(r) is total
|
|
7
|
+
// PURITY: CORE
|
|
8
|
+
// EFFECT: n/a
|
|
9
|
+
// INVARIANT: RULE_NAMES are unique
|
|
10
|
+
// COMPLEXITY: O(1)/O(1)
|
|
11
|
+
export const RULE_NAMES = [
|
|
12
|
+
"suggest-exports",
|
|
13
|
+
"suggest-imports",
|
|
14
|
+
"suggest-members",
|
|
15
|
+
"suggest-missing-names",
|
|
16
|
+
"suggest-module-paths"
|
|
17
|
+
];
|
|
18
|
+
const RULE_DOCS_BASE_URL = "https://github.com/ProverCoderAI/eslint-plugin-suggest-members/blob/main/packages/eslint-template/docs/rules";
|
|
19
|
+
export const ruleDocsUrl = (ruleName) => `${RULE_DOCS_BASE_URL}/${ruleName}.md`;
|
|
20
|
+
//# sourceMappingURL=rule-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-names.js","sourceRoot":"","sources":["../../src/core/rule-names.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,qEAAqE;AACrE,iBAAiB;AACjB,sBAAsB;AACtB,cAAc;AACd,2DAA2D;AAC3D,eAAe;AACf,cAAc;AACd,mCAAmC;AACnC,wBAAwB;AASxB,MAAM,CAAC,MAAM,UAAU,GAA4B;IACjD,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,uBAAuB;IACvB,sBAAsB;CACvB,CAAA;AAED,MAAM,kBAAkB,GACtB,8GAA8G,CAAA;AAEhH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAkB,EAAU,EAAE,CAAC,GAAG,kBAAkB,IAAI,QAAQ,KAAK,CAAA"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
-
import type { Linter } from "eslint";
|
|
3
|
-
type PluginConfig = Linter.Config;
|
|
4
2
|
type PluginBase = Omit<TSESLint.FlatConfig.Plugin, "configs">;
|
|
5
3
|
type PluginWithConfigs = PluginBase & {
|
|
6
4
|
readonly configs: {
|
|
7
|
-
readonly recommended:
|
|
5
|
+
readonly recommended: TSESLint.FlatConfig.Config;
|
|
6
|
+
readonly "flat/recommended": TSESLint.FlatConfig.Config;
|
|
8
7
|
};
|
|
9
8
|
};
|
|
10
9
|
declare const plugin: PluginWithConfigs;
|
|
11
10
|
export default plugin;
|
|
12
11
|
export declare const configs: {
|
|
13
|
-
readonly recommended:
|
|
12
|
+
readonly recommended: TSESLint.FlatConfig.Config;
|
|
13
|
+
readonly "flat/recommended": TSESLint.FlatConfig.Config;
|
|
14
14
|
};
|
|
15
15
|
export { rules } from "./rules/index.js";
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAOxD,KAAK,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAE7D,KAAK,iBAAiB,GAAG,UAAU,GAAG;IACpC,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAA;QAChD,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAA;KACxD,CAAA;CACF,CAAA;AAwBD,QAAA,MAAM,MAAM,EAAE,iBAMb,CAAA;AAED,eAAe,MAAM,CAAA;AAErB,eAAO,MAAM,OAAO;0BArCM,QAAQ,CAAC,UAAU,CAAC,MAAM;iCACnB,QAAQ,CAAC,UAAU,CAAC,MAAM;CAoCtB,CAAA;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { name, namespace, version } from "./core/plugin-meta.js";
|
|
2
|
+
import { RULE_NAMES } from "./core/rule-names.js";
|
|
3
3
|
import { rules } from "./rules/index.js";
|
|
4
4
|
const pluginBase = {
|
|
5
5
|
meta: { name, version },
|
|
6
6
|
rules
|
|
7
7
|
};
|
|
8
|
-
const
|
|
8
|
+
const buildRecommendedRules = () => {
|
|
9
|
+
const entries = {};
|
|
10
|
+
for (const ruleName of RULE_NAMES) {
|
|
11
|
+
entries[`${namespace}/${ruleName}`] = "error";
|
|
12
|
+
}
|
|
13
|
+
return entries;
|
|
14
|
+
};
|
|
15
|
+
const recommendedRules = buildRecommendedRules();
|
|
16
|
+
const flatRecommended = {
|
|
9
17
|
plugins: {
|
|
10
|
-
|
|
18
|
+
[namespace]: pluginBase
|
|
11
19
|
},
|
|
12
|
-
rules:
|
|
13
|
-
"suggest-members/suggest-exports": "error",
|
|
14
|
-
"suggest-members/suggest-imports": "error",
|
|
15
|
-
"suggest-members/suggest-members": "error",
|
|
16
|
-
"suggest-members/suggest-missing-names": "error",
|
|
17
|
-
"suggest-members/suggest-module-paths": "error"
|
|
18
|
-
}
|
|
20
|
+
rules: recommendedRules
|
|
19
21
|
};
|
|
20
22
|
const plugin = {
|
|
21
23
|
...pluginBase,
|
|
22
24
|
configs: {
|
|
23
|
-
recommended
|
|
25
|
+
recommended: flatRecommended,
|
|
26
|
+
"flat/recommended": flatRecommended
|
|
24
27
|
}
|
|
25
28
|
};
|
|
26
29
|
export default plugin;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAWxC,MAAM,UAAU,GAAe;IAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IACvB,KAAK;CACN,CAAA;AAED,MAAM,qBAAqB,GAAG,GAAuB,EAAE;IACrD,MAAM,OAAO,GAAuB,EAAE,CAAA;IACtC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAA;IAC/C,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,qBAAqB,EAAE,CAAA;AAEhD,MAAM,eAAe,GAA+B;IAClD,OAAO,EAAE;QACP,CAAC,SAAS,CAAC,EAAE,UAAU;KACxB;IACD,KAAK,EAAE,gBAAgB;CACxB,CAAA;AAED,MAAM,MAAM,GAAsB;IAChC,GAAG,UAAU;IACb,OAAO,EAAE;QACP,WAAW,EAAE,eAAe;QAC5B,kBAAkB,EAAE,eAAe;KACpC;CACF,CAAA;AAED,eAAe,MAAM,CAAA;AAErB,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA"}
|
package/lib/rules/index.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
"suggest-members": import("@typescript-eslint/utils/ts-eslint").RuleModule<"suggestMembers", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
5
|
-
"suggest-missing-names": import("@typescript-eslint/utils/ts-eslint").RuleModule<"suggestMissingNames", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
6
|
-
"suggest-module-paths": import("@typescript-eslint/utils/ts-eslint").RuleModule<"suggestModulePaths", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
7
|
-
};
|
|
1
|
+
import type { TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
import type { RuleName } from "../core/rule-names.js";
|
|
3
|
+
export declare const rules: Record<RuleName, TSESLint.RuleModule<string, ReadonlyArray<string>>>;
|
|
8
4
|
export { suggestExportsRule } from "./suggest-exports/index.js";
|
|
9
5
|
export { suggestImportsRule } from "./suggest-imports/index.js";
|
|
10
6
|
export { suggestMembersRule } from "./suggest-members/index.js";
|
package/lib/rules/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAOrD,eAAO,MAAM,KAAK,EAAE,MAAM,CACxB,QAAQ,EACR,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAOnD,CAAA;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA"}
|
package/lib/rules/index.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
// CHANGE: rules registry
|
|
2
|
-
// WHY: central rule map for plugin
|
|
3
|
-
// QUOTE(TZ): n/a
|
|
4
|
-
// REF: AGENTS.md CORE
|
|
5
|
-
// SOURCE: n/a
|
|
6
|
-
// PURITY: CORE
|
|
7
1
|
import { suggestExportsRule } from "./suggest-exports/index.js";
|
|
8
2
|
import { suggestImportsRule } from "./suggest-imports/index.js";
|
|
9
3
|
import { suggestMembersRule } from "./suggest-members/index.js";
|
package/lib/rules/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAExE,MAAM,CAAC,MAAM,KAAK,GAGd;IACF,iBAAiB,EAAE,kBAAkB;IACrC,iBAAiB,EAAE,kBAAkB;IACrC,iBAAiB,EAAE,kBAAkB;IACrC,uBAAuB,EAAE,uBAAuB;IAChD,sBAAsB,EAAE,sBAAsB;CAC/C,CAAA;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const suggestExportsRule:
|
|
1
|
+
import type { RuleListener } from "@typescript-eslint/utils/ts-eslint";
|
|
2
|
+
export declare const suggestExportsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"suggestExports", [], unknown, RuleListener>;
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-exports/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-exports/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,oCAAoC,CAAA;AA4FnF,eAAO,MAAM,kBAAkB,sGAQ9B,CAAA"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { AST_NODE_TYPES
|
|
1
|
+
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
2
|
import { Effect } from "effect";
|
|
3
3
|
import { createTypeScriptServiceLayerForContext, getParserServicesForContext } from "../../shell/shared/import-validation-base.js";
|
|
4
4
|
import { createExportValidationListener } from "../../shell/shared/import-validation-rule-factory.js";
|
|
5
|
+
import { createRule } from "../../shell/shared/rule-creator.js";
|
|
5
6
|
import { runValidationEffect } from "../../shell/shared/validation-runner.js";
|
|
6
7
|
import { formatExportValidationMessage, validateExportAccessEffect } from "../../shell/validation/export-validation-effect.js";
|
|
7
8
|
import { formatLocalExportValidationMessage, validateLocalExportIdentifierEffect } from "../../shell/validation/local-export-validation-effect.js";
|
|
8
|
-
const createRule = (ESLintUtils.RuleCreator((name) => `https://github.com/ton-ai-core/eslint-plugin-suggest-members#${name}`));
|
|
9
9
|
const getModulePathFromExport = (node) => typeof node.source?.value === "string" ? node.source.value : undefined;
|
|
10
10
|
const buildExportValidationListener = (context) => createExportValidationListener(context, {
|
|
11
11
|
validateSpecifier: validateExportAccessEffect,
|
|
@@ -50,21 +50,9 @@ const buildListener = (context) => {
|
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
};
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
description: "Suggest similar export names when importing non-existent exports"
|
|
59
|
-
},
|
|
60
|
-
messages: {
|
|
61
|
-
suggestExports: "{{message}}"
|
|
62
|
-
},
|
|
63
|
-
schema: []
|
|
64
|
-
},
|
|
65
|
-
defaultOptions: [],
|
|
66
|
-
create(context) {
|
|
67
|
-
return buildListener(context);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
53
|
+
const defaultOptions = [];
|
|
54
|
+
export const suggestExportsRule = createRule("suggest-exports", {
|
|
55
|
+
description: "Suggest similar export names when importing non-existent exports",
|
|
56
|
+
messageId: "suggestExports"
|
|
57
|
+
}, (context) => buildListener(context), defaultOptions);
|
|
70
58
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-exports/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-exports/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const suggestMembersRule: ESLintUtils.RuleModule<"suggestMembers", [], unknown, ESLintUtils.RuleListener>;
|
|
1
|
+
export declare const suggestMembersRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"suggestMembers", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
3
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-members/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-members/index.ts"],"names":[],"mappings":"AAuGA,eAAO,MAAM,kBAAkB,mJA8C9B,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { AST_NODE_TYPES
|
|
1
|
+
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
2
|
import { Effect, pipe } from "effect";
|
|
3
3
|
import { makeTypeScriptCompilerServiceLayer } from "../../shell/services/typescript-compiler.js";
|
|
4
|
+
import { getParserServicesForContext } from "../../shell/shared/import-validation-base.js";
|
|
5
|
+
import { createRule } from "../../shell/shared/rule-creator.js";
|
|
4
6
|
import { runValidationEffect } from "../../shell/shared/validation-runner.js";
|
|
5
7
|
import { formatMemberValidationMessage, validateMemberAccessEffectWithNodes, validateMemberPropertyNameEffect, validateObjectLiteralPropertyNameEffect } from "../../shell/validation/member-validation-effect.js";
|
|
6
|
-
const createRule = ESLintUtils.RuleCreator((name) => `https://github.com/ton-ai-core/eslint-plugin-suggest-members#${name}`);
|
|
7
8
|
const createValidateAndReport = (tsServiceLayer, context, esTreeNodeToTSNodeMap) => (node) => {
|
|
8
9
|
if (node.computed)
|
|
9
10
|
return;
|
|
@@ -40,37 +41,31 @@ const validateObjectProperty = (tsServiceLayer, context, esTreeNodeToTSNodeMap,
|
|
|
40
41
|
formatMessage: formatMemberValidationMessage
|
|
41
42
|
});
|
|
42
43
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
const defaultOptions = [];
|
|
45
|
+
export const suggestMembersRule = createRule("suggest-members", {
|
|
46
|
+
description: "enforce correct member names when accessing non-existent properties",
|
|
47
|
+
messageId: "suggestMembers"
|
|
48
|
+
}, (context) => {
|
|
49
|
+
const parserServices = getParserServicesForContext(context);
|
|
50
|
+
if (!parserServices)
|
|
51
|
+
return {};
|
|
52
|
+
const program = parserServices.program;
|
|
53
|
+
if (!program)
|
|
54
|
+
return {};
|
|
55
|
+
const checker = program.getTypeChecker();
|
|
56
|
+
const esTreeNodeToTSNodeMap = parserServices.esTreeNodeToTSNodeMap;
|
|
57
|
+
const tsServiceLayer = makeTypeScriptCompilerServiceLayer(checker, program);
|
|
58
|
+
const validateAndReport = createValidateAndReport(tsServiceLayer, context, esTreeNodeToTSNodeMap);
|
|
59
|
+
const validatePatternProperty = validateObjectProperty(tsServiceLayer, context, esTreeNodeToTSNodeMap, AST_NODE_TYPES.ObjectPattern, (propertyName, node, tsNode) => validateMemberPropertyNameEffect(propertyName, node, tsNode));
|
|
60
|
+
const validateLiteralProperty = validateObjectProperty(tsServiceLayer, context, esTreeNodeToTSNodeMap, AST_NODE_TYPES.ObjectExpression, (propertyName, node, tsNode) => validateObjectLiteralPropertyNameEffect(propertyName, node, tsNode));
|
|
61
|
+
return {
|
|
62
|
+
MemberExpression(node) {
|
|
63
|
+
validateAndReport(node);
|
|
49
64
|
},
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
create(context) {
|
|
57
|
-
const parserServices = ESLintUtils.getParserServices(context);
|
|
58
|
-
const program = parserServices.program;
|
|
59
|
-
const checker = program.getTypeChecker();
|
|
60
|
-
const esTreeNodeToTSNodeMap = parserServices.esTreeNodeToTSNodeMap;
|
|
61
|
-
const tsServiceLayer = makeTypeScriptCompilerServiceLayer(checker, program);
|
|
62
|
-
const validateAndReport = createValidateAndReport(tsServiceLayer, context, esTreeNodeToTSNodeMap);
|
|
63
|
-
const validatePatternProperty = validateObjectProperty(tsServiceLayer, context, esTreeNodeToTSNodeMap, AST_NODE_TYPES.ObjectPattern, (propertyName, node, tsNode) => validateMemberPropertyNameEffect(propertyName, node, tsNode));
|
|
64
|
-
const validateLiteralProperty = validateObjectProperty(tsServiceLayer, context, esTreeNodeToTSNodeMap, AST_NODE_TYPES.ObjectExpression, (propertyName, node, tsNode) => validateObjectLiteralPropertyNameEffect(propertyName, node, tsNode));
|
|
65
|
-
return {
|
|
66
|
-
MemberExpression(node) {
|
|
67
|
-
validateAndReport(node);
|
|
68
|
-
},
|
|
69
|
-
Property(node) {
|
|
70
|
-
validatePatternProperty(node);
|
|
71
|
-
validateLiteralProperty(node);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
});
|
|
65
|
+
Property(node) {
|
|
66
|
+
validatePatternProperty(node);
|
|
67
|
+
validateLiteralProperty(node);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}, defaultOptions);
|
|
76
71
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-members/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-members/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-missing-names/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-missing-names/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAA;AA2FlE,eAAO,MAAM,uBAAuB,gFAQnC,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { AST_NODE_TYPES
|
|
1
|
+
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
2
|
import { Effect } from "effect";
|
|
3
3
|
import { createTypeScriptServiceLayerForContext, getParserServicesForContext } from "../../shell/shared/import-validation-base.js";
|
|
4
|
+
import { createRule } from "../../shell/shared/rule-creator.js";
|
|
4
5
|
import { runValidationEffect } from "../../shell/shared/validation-runner.js";
|
|
5
6
|
import { formatMissingNameValidationMessage, validateMissingNameIdentifierEffect } from "../../shell/validation/missing-name-validation-effect.js";
|
|
6
7
|
const isValueIdentifierReference = (reference) => {
|
|
@@ -61,21 +62,9 @@ const buildListener = (context) => {
|
|
|
61
62
|
}
|
|
62
63
|
};
|
|
63
64
|
};
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
description: "suggest similar identifiers for unresolved names"
|
|
70
|
-
},
|
|
71
|
-
messages: {
|
|
72
|
-
suggestMissingNames: "{{message}}"
|
|
73
|
-
},
|
|
74
|
-
schema: []
|
|
75
|
-
},
|
|
76
|
-
defaultOptions: [],
|
|
77
|
-
create(context) {
|
|
78
|
-
return buildListener(context);
|
|
79
|
-
}
|
|
80
|
-
});
|
|
65
|
+
const defaultOptions = [];
|
|
66
|
+
export const suggestMissingNamesRule = createRule("suggest-missing-names", {
|
|
67
|
+
description: "suggest similar identifiers for unresolved names",
|
|
68
|
+
messageId: "suggestMissingNames"
|
|
69
|
+
}, (context) => buildListener(context), defaultOptions);
|
|
81
70
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-missing-names/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-missing-names/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const suggestModulePathsRule: ESLintUtils.RuleModule<"suggestModulePaths", [], unknown, ESLintUtils.RuleListener>;
|
|
1
|
+
export declare const suggestModulePathsRule: import("@typescript-eslint/utils/ts-eslint").RuleModule<"suggestModulePaths", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
3
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-module-paths/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-module-paths/index.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,sBAAsB,uJA0ClC,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { AST_NODE_TYPES
|
|
1
|
+
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
2
|
import { isModulePath } from "../../core/validators/index.js";
|
|
3
3
|
import { getParserServicesForContext } from "../../shell/shared/import-validation-base.js";
|
|
4
|
+
import { createRule } from "../../shell/shared/rule-creator.js";
|
|
4
5
|
import { runValidationEffect } from "../../shell/shared/validation-runner.js";
|
|
5
6
|
import { getModulePathIndex } from "../../shell/validation/module-path-index.js";
|
|
6
7
|
import { formatModulePathValidationMessage, validateModulePathEffect } from "../../shell/validation/module-validation-effect.js";
|
|
7
|
-
const createRule = ESLintUtils.RuleCreator((name) => `https://github.com/ton-ai-core/eslint-plugin-suggest-members#${name}`);
|
|
8
8
|
const createValidateAndReport = (currentFilePath, context, moduleIndex) => (node, reportNode, modulePath) => {
|
|
9
9
|
if (!isModulePath(modulePath))
|
|
10
10
|
return;
|
|
@@ -19,47 +19,37 @@ const createValidateAndReport = (currentFilePath, context, moduleIndex) => (node
|
|
|
19
19
|
formatMessage: formatModulePathValidationMessage
|
|
20
20
|
});
|
|
21
21
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
const defaultOptions = [];
|
|
23
|
+
export const suggestModulePathsRule = createRule("suggest-module-paths", {
|
|
24
|
+
description: "enforce correct module paths by suggesting similar paths when importing non-existent modules",
|
|
25
|
+
messageId: "suggestModulePaths"
|
|
26
|
+
}, (context) => {
|
|
27
|
+
const currentFilePath = context.filename;
|
|
28
|
+
const parseResult = getParserServicesForContext(context);
|
|
29
|
+
const moduleIndex = parseResult?.program
|
|
30
|
+
? getModulePathIndex(parseResult.program)
|
|
31
|
+
: undefined;
|
|
32
|
+
const validateAndReport = createValidateAndReport(currentFilePath, context, moduleIndex);
|
|
33
|
+
return {
|
|
34
|
+
ImportDeclaration(node) {
|
|
35
|
+
const modulePath = node.source.value;
|
|
36
|
+
if (typeof modulePath !== "string")
|
|
37
|
+
return;
|
|
38
|
+
validateAndReport(node, node.source, modulePath);
|
|
28
39
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
defaultOptions: [],
|
|
35
|
-
create(context) {
|
|
36
|
-
const currentFilePath = context.filename;
|
|
37
|
-
const parseResult = getParserServicesForContext(context);
|
|
38
|
-
const moduleIndex = parseResult?.program
|
|
39
|
-
? getModulePathIndex(parseResult.program)
|
|
40
|
-
: undefined;
|
|
41
|
-
const validateAndReport = createValidateAndReport(currentFilePath, context, moduleIndex);
|
|
42
|
-
return {
|
|
43
|
-
ImportDeclaration(node) {
|
|
44
|
-
const modulePath = node.source.value;
|
|
45
|
-
if (typeof modulePath !== "string")
|
|
46
|
-
return;
|
|
47
|
-
validateAndReport(node, node.source, modulePath);
|
|
48
|
-
},
|
|
49
|
-
CallExpression(node) {
|
|
50
|
-
if (node.callee.type !== AST_NODE_TYPES.Identifier ||
|
|
51
|
-
node.callee.name !== "require") {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const firstArg = node.arguments[0];
|
|
55
|
-
if (!firstArg || firstArg.type !== AST_NODE_TYPES.Literal)
|
|
56
|
-
return;
|
|
57
|
-
if (typeof firstArg.value !== "string")
|
|
58
|
-
return;
|
|
59
|
-
const modulePath = firstArg.value;
|
|
60
|
-
validateAndReport(node, firstArg, modulePath);
|
|
40
|
+
CallExpression(node) {
|
|
41
|
+
if (node.callee.type !== AST_NODE_TYPES.Identifier ||
|
|
42
|
+
node.callee.name !== "require") {
|
|
43
|
+
return;
|
|
61
44
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
45
|
+
const firstArg = node.arguments[0];
|
|
46
|
+
if (!firstArg || firstArg.type !== AST_NODE_TYPES.Literal)
|
|
47
|
+
return;
|
|
48
|
+
if (typeof firstArg.value !== "string")
|
|
49
|
+
return;
|
|
50
|
+
const modulePath = firstArg.value;
|
|
51
|
+
validateAndReport(node, firstArg, modulePath);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}, defaultOptions);
|
|
65
55
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-module-paths/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-module-paths/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAChF,OAAO,EACL,iCAAiC,EACjC,wBAAwB,EACzB,MAAM,oDAAoD,CAAA;AAE3D,MAAM,uBAAuB,GAAG,CAC9B,eAAuB,EACvB,OAA8C,EAC9C,WAAwC,EACxC,EAAE,CACJ,CAAC,IAAY,EAAE,UAAyB,EAAE,UAAkB,EAAQ,EAAE;IACpE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QAAE,OAAM;IACrC,IAAI,CAAC,WAAW;QAAE,OAAM;IAExB,MAAM,gBAAgB,GAAG,wBAAwB,CAC/C,IAAI,EACJ,UAAU,EACV,eAAe,EACf,WAAW,CACZ,CAAA;IAED,mBAAmB,CAAC;QAClB,gBAAgB;QAChB,OAAO;QACP,UAAU;QACV,SAAS,EAAE,oBAAoB;QAC/B,aAAa,EAAE,iCAAiC;KACjD,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,cAAc,GAAO,EAAE,CAAA;AAE7B,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAC9C,sBAAsB,EACtB;IACE,WAAW,EAAE,8FAA8F;IAC3G,SAAS,EAAE,oBAAoB;CAChC,EACD,CAAC,OAAO,EAAE,EAAE;IACV,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAA;IACxC,MAAM,WAAW,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAA;IACxD,MAAM,WAAW,GAAG,WAAW,EAAE,OAAO;QACtC,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC;QACzC,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,iBAAiB,GAAG,uBAAuB,CAC/C,eAAe,EACf,OAAO,EACP,WAAW,CACZ,CAAA;IAED,OAAO;QACL,iBAAiB,CAAC,IAAgC;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAA;YACpC,IAAI,OAAO,UAAU,KAAK,QAAQ;gBAAE,OAAM;YAC1C,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAClD,CAAC;QACD,cAAc,CAAC,IAA6B;YAC1C,IACE,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;gBAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAC9B,CAAC;gBACD,OAAM;YACR,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAClC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;gBAAE,OAAM;YACjE,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;gBAAE,OAAM;YAE9C,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAA;YACjC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;QAC/C,CAAC;KACF,CAAA;AACH,CAAC,EACD,cAAc,CACf,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RuleContext, RuleListener, RuleModule } from "@typescript-eslint/utils/ts-eslint";
|
|
2
|
+
import type { RuleName } from "../../core/rule-names.js";
|
|
2
3
|
import type { ImportValidationConfig } from "./import-validation-base.js";
|
|
3
4
|
export declare const createExportValidationListener: <TResult>(context: RuleContext<string, ReadonlyArray<string>>, config: ImportValidationConfig<TResult>) => RuleListener;
|
|
4
|
-
export declare const createValidationRule: <TResult>(
|
|
5
|
-
export declare const createExportValidationRule: <TResult>(
|
|
5
|
+
export declare const createValidationRule: <TResult>(ruleName: RuleName, description: string, messageId: string, config: ImportValidationConfig<TResult>) => RuleModule<string, ReadonlyArray<string>>;
|
|
6
|
+
export declare const createExportValidationRule: <TResult>(ruleName: RuleName, description: string, messageId: string, config: ImportValidationConfig<TResult>) => RuleModule<string, ReadonlyArray<string>>;
|
|
6
7
|
//# sourceMappingURL=import-validation-rule-factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-validation-rule-factory.d.ts","sourceRoot":"","sources":["../../../src/shell/shared/import-validation-rule-factory.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"import-validation-rule-factory.d.ts","sourceRoot":"","sources":["../../../src/shell/shared/import-validation-rule-factory.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAE/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,KAAK,EAAE,sBAAsB,EAAiC,MAAM,6BAA6B,CAAA;AA4CxG,eAAO,MAAM,8BAA8B,GAAI,OAAO,EACpD,SAAS,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,EACnD,QAAQ,sBAAsB,CAAC,OAAO,CAAC,KACtC,YAmBF,CAAA;AAwBD,eAAO,MAAM,oBAAoB,GAzEH,OAAO,YA0DzB,QAAQ,eACL,MAAM,aACR,MAAM,8CAEhB,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAWiC,CAAA;AAC5E,eAAO,MAAM,0BAA0B,GA/CQ,OAAO,YA+B1C,QAAQ,eACL,MAAM,aACR,MAAM,8CAEhB,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAYiD,CAAA"}
|
|
@@ -1,18 +1,8 @@
|
|
|
1
|
-
import { AST_NODE_TYPES
|
|
1
|
+
import { AST_NODE_TYPES } from "@typescript-eslint/utils";
|
|
2
2
|
import { isTypeOnlyImport } from "../../core/validators/index.js";
|
|
3
3
|
import { createTypeScriptServiceLayerForContext, validateExportSpecifierBase, validateImportSpecifierBase } from "./import-validation-base.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
type: "problem",
|
|
7
|
-
docs: { description },
|
|
8
|
-
messages: { [messageId]: "{{message}}" },
|
|
9
|
-
schema: []
|
|
10
|
-
},
|
|
11
|
-
defaultOptions: [],
|
|
12
|
-
create(context) {
|
|
13
|
-
return buildListener(context, config);
|
|
14
|
-
}
|
|
15
|
-
});
|
|
4
|
+
import { createRule } from "./rule-creator.js";
|
|
5
|
+
const defaultOptions = [];
|
|
16
6
|
const getModulePathFromImport = (node) => typeof node.source.value === "string" ? node.source.value : undefined;
|
|
17
7
|
const getModulePathFromExport = (node) => typeof node.source?.value === "string" ? node.source.value : undefined;
|
|
18
8
|
const buildImportListeners = (context, config) => {
|
|
@@ -45,7 +35,10 @@ export const createExportValidationListener = (context, config) => {
|
|
|
45
35
|
}
|
|
46
36
|
};
|
|
47
37
|
};
|
|
48
|
-
const makeValidationRule = (buildListener) => (
|
|
38
|
+
const makeValidationRule = (buildListener) => (ruleName, description, messageId, config) => createRule(ruleName, {
|
|
39
|
+
description,
|
|
40
|
+
messageId
|
|
41
|
+
}, (context) => buildListener(context, config), defaultOptions);
|
|
49
42
|
export const createValidationRule = makeValidationRule(buildImportListeners);
|
|
50
43
|
export const createExportValidationRule = makeValidationRule(createExportValidationListener);
|
|
51
44
|
//# sourceMappingURL=import-validation-rule-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-validation-rule-factory.js","sourceRoot":"","sources":["../../../src/shell/shared/import-validation-rule-factory.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"import-validation-rule-factory.js","sourceRoot":"","sources":["../../../src/shell/shared/import-validation-rule-factory.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAIzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE,OAAO,EACL,sCAAsC,EACtC,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,MAAM,cAAc,GAA0B,EAAE,CAAA;AAEhD,MAAM,uBAAuB,GAAG,CAAC,IAAgC,EAAsB,EAAE,CACvF,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAEvE,MAAM,uBAAuB,GAAG,CAC9B,IAAqC,EACjB,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAE/F,MAAM,oBAAoB,GAAG,CAC3B,OAAmD,EACnD,MAAuC,EACzB,EAAE;IAChB,MAAM,SAAS,GAAG,sCAAsC,CAAC,OAAO,CAAC,CAAA;IAEjE,OAAO;QACL,iBAAiB,CAAC,IAAgC;YAChD,IAAI,gBAAgB,CAAC,IAAI,CAAC;gBAAE,OAAM;YAClC,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAA;YAChD,IAAI,CAAC,UAAU;gBAAE,OAAM;YAEvB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe,EAAE,CAAC;oBACtD,2BAA2B,CACzB,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,SAAS,CACV,CAAA;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,OAAmD,EACnD,MAAuC,EACzB,EAAE;IAChB,MAAM,SAAS,GAAkC,sCAAsC,CAAC,OAAO,CAAC,CAAA;IAEhG,OAAO;QACL,sBAAsB,CAAC,IAAqC;YAC1D,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAA;YAChD,IAAI,CAAC,UAAU;gBAAE,OAAM;YAEvB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,2BAA2B,CACzB,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,SAAS,CACV,CAAA;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,aAGiB,EACjB,EAAE,CACJ,CACE,QAAkB,EAClB,WAAmB,EACnB,SAAiB,EACjB,MAAuC,EACI,EAAE,CAC7C,UAAU,CACR,QAAQ,EACR;IACE,WAAW;IACX,SAAS;CACV,EACD,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,EAC3C,cAAc,CACf,CAAA;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;AAC5E,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,8BAA8B,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RuleContext, RuleListener, RuleModule } from "@typescript-eslint/utils/ts-eslint";
|
|
2
|
+
import type { RuleName } from "../../core/rule-names.js";
|
|
3
|
+
export interface RuleMetaInput<TMessageId extends string> {
|
|
4
|
+
readonly description: string;
|
|
5
|
+
readonly messageId: TMessageId;
|
|
6
|
+
}
|
|
7
|
+
export declare const createRule: <TMessageId extends string, TOptions extends ReadonlyArray<string>>(ruleName: RuleName, meta: RuleMetaInput<TMessageId>, buildListener: (context: RuleContext<TMessageId, TOptions>) => RuleListener, defaultOptions: TOptions) => RuleModule<TMessageId, TOptions>;
|
|
8
|
+
//# sourceMappingURL=rule-creator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-creator.d.ts","sourceRoot":"","sources":["../../../src/shell/shared/rule-creator.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAE/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAGxD,MAAM,WAAW,aAAa,CAAC,UAAU,SAAS,MAAM;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;CAC/B;AAED,eAAO,MAAM,UAAU,GACrB,UAAU,SAAS,MAAM,EACzB,QAAQ,SAAS,aAAa,CAAC,MAAM,CAAC,EAEtC,UAAU,QAAQ,EAClB,MAAM,aAAa,CAAC,UAAU,CAAC,EAC/B,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,YAAY,EAC3E,gBAAgB,QAAQ,KACvB,UAAU,CAAC,UAAU,EAAE,QAAQ,CAmBjC,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// CHANGE: shared RuleCreator wrapper with docs URL
|
|
2
|
+
// WHY: consistent rule metadata + docs linking across rules
|
|
3
|
+
// QUOTE(TZ): n/a
|
|
4
|
+
// REF: AGENTS.md SHELL
|
|
5
|
+
// SOURCE: n/a
|
|
6
|
+
// FORMAT THEOREM: ∀r ∈ RuleName: docsUrl(r) is total
|
|
7
|
+
// PURITY: SHELL
|
|
8
|
+
// EFFECT: RuleModule creation
|
|
9
|
+
// INVARIANT: meta.messages contains messageId
|
|
10
|
+
// COMPLEXITY: O(1)/O(1)
|
|
11
|
+
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
12
|
+
import { ruleDocsUrl } from "../../core/rule-names.js";
|
|
13
|
+
export const createRule = (ruleName, meta, buildListener, defaultOptions) => {
|
|
14
|
+
const create = ESLintUtils.RuleCreator(() => ruleDocsUrl(ruleName));
|
|
15
|
+
const messages = {
|
|
16
|
+
[meta.messageId]: "{{message}}"
|
|
17
|
+
};
|
|
18
|
+
return create({
|
|
19
|
+
name: ruleName,
|
|
20
|
+
meta: {
|
|
21
|
+
type: "problem",
|
|
22
|
+
docs: {
|
|
23
|
+
description: meta.description
|
|
24
|
+
},
|
|
25
|
+
messages,
|
|
26
|
+
schema: []
|
|
27
|
+
},
|
|
28
|
+
defaultOptions,
|
|
29
|
+
create: buildListener
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=rule-creator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-creator.js","sourceRoot":"","sources":["../../../src/shell/shared/rule-creator.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,4DAA4D;AAC5D,iBAAiB;AACjB,uBAAuB;AACvB,cAAc;AACd,qDAAqD;AACrD,gBAAgB;AAChB,8BAA8B;AAC9B,8CAA8C;AAC9C,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAItD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAOtD,MAAM,CAAC,MAAM,UAAU,GAAG,CAIxB,QAAkB,EAClB,IAA+B,EAC/B,aAA2E,EAC3E,cAAwB,EACU,EAAE;IACpC,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnE,MAAM,QAAQ,GAA2B;QACvC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa;KAChC,CAAA;IAED,OAAO,MAAM,CAAC;QACZ,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B;YACD,QAAQ;YACR,MAAM,EAAE,EAAE;SACX;QACD,cAAc;QACd,MAAM,EAAE,aAAa;KACtB,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -67,10 +67,11 @@
|
|
|
67
67
|
"types": "lib/index.d.ts",
|
|
68
68
|
"name": "@prover-coder-ai/eslint-plugin-suggest-members",
|
|
69
69
|
"type": "module",
|
|
70
|
-
"version": "0.0.
|
|
70
|
+
"version": "0.0.7",
|
|
71
71
|
"scripts": {
|
|
72
72
|
"docs": "eslint-doc-generator",
|
|
73
|
-
"
|
|
73
|
+
"sync-plugin-meta": "node scripts/sync-plugin-meta.mjs",
|
|
74
|
+
"build": "pnpm run sync-plugin-meta && tsc -p tsconfig.build.json",
|
|
74
75
|
"dev": "tsc -p tsconfig.build.json --watch",
|
|
75
76
|
"lint": "npx @ton-ai-core/vibecode-linter src/",
|
|
76
77
|
"lint:tests": "npx @ton-ai-core/vibecode-linter tests/",
|