@prover-coder-ai/eslint-plugin-suggest-members 0.0.20 → 0.0.22

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.
@@ -1,4 +1,4 @@
1
1
  export declare const name = "@prover-coder-ai/eslint-plugin-suggest-members";
2
- export declare const version = "0.0.20";
2
+ export declare const version = "0.0.22";
3
3
  export declare const namespace = "eslint-plugin-suggest-members";
4
4
  //# sourceMappingURL=plugin-meta.d.ts.map
@@ -9,6 +9,6 @@
9
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.20";
12
+ export const version = "0.0.22";
13
13
  export const namespace = "eslint-plugin-suggest-members";
14
14
  //# sourceMappingURL=plugin-meta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-members/index.ts"],"names":[],"mappings":"AAuGA,eAAO,MAAM,kBAAkB,mJA8C9B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rules/suggest-members/index.ts"],"names":[],"mappings":"AAwFA,eAAO,MAAM,kBAAkB,mJAoC9B,CAAA"}
@@ -4,7 +4,7 @@ import { makeTypeScriptCompilerServiceLayer } from "../../shell/services/typescr
4
4
  import { getParserServicesForContext } from "../../shell/shared/import-validation-base.js";
5
5
  import { createRule } from "../../shell/shared/rule-creator.js";
6
6
  import { runValidationEffect } from "../../shell/shared/validation-runner.js";
7
- import { formatMemberValidationMessage, validateMemberAccessEffectWithNodes, validateMemberPropertyNameEffect, validateObjectLiteralPropertyNameEffect } from "../../shell/validation/member-validation-effect.js";
7
+ import { formatMemberValidationMessage, validateMemberAccessEffectWithNodes, validateMemberPropertyNameEffect } from "../../shell/validation/member-validation-effect.js";
8
8
  const createValidateAndReport = (tsServiceLayer, context, esTreeNodeToTSNodeMap) => (node) => {
9
9
  if (node.computed)
10
10
  return;
@@ -22,17 +22,17 @@ const createValidateAndReport = (tsServiceLayer, context, esTreeNodeToTSNodeMap)
22
22
  formatMessage: formatMemberValidationMessage
23
23
  });
24
24
  };
25
- const validateObjectProperty = (tsServiceLayer, context, esTreeNodeToTSNodeMap, parentType, buildValidationEffect) => (property) => {
25
+ const validatePatternProperty = (tsServiceLayer, context, esTreeNodeToTSNodeMap) => (property) => {
26
26
  if (property.computed)
27
27
  return;
28
28
  if (property.key.type !== AST_NODE_TYPES.Identifier)
29
29
  return;
30
- if (property.parent.type !== parentType)
30
+ if (property.parent.type !== AST_NODE_TYPES.ObjectPattern)
31
31
  return;
32
32
  const tsParentNode = esTreeNodeToTSNodeMap.get(property.parent);
33
33
  if (!tsParentNode)
34
34
  return;
35
- const validationEffect = pipe(buildValidationEffect(property.key.name, property.key, tsParentNode), Effect.provide(tsServiceLayer));
35
+ const validationEffect = pipe(validateMemberPropertyNameEffect(property.key.name, property.key, tsParentNode), Effect.provide(tsServiceLayer));
36
36
  runValidationEffect({
37
37
  validationEffect,
38
38
  context,
@@ -56,15 +56,13 @@ export const suggestMembersRule = createRule("suggest-members", {
56
56
  const esTreeNodeToTSNodeMap = parserServices.esTreeNodeToTSNodeMap;
57
57
  const tsServiceLayer = makeTypeScriptCompilerServiceLayer(checker, program);
58
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));
59
+ const validatePatternPropertyName = validatePatternProperty(tsServiceLayer, context, esTreeNodeToTSNodeMap);
61
60
  return {
62
61
  MemberExpression(node) {
63
62
  validateAndReport(node);
64
63
  },
65
64
  Property(node) {
66
- validatePatternProperty(node);
67
- validateLiteralProperty(node);
65
+ validatePatternPropertyName(node);
68
66
  }
69
67
  };
70
68
  }, defaultOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-members/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rules/suggest-members/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAGrC,OAAO,EACL,kCAAkC,EAEnC,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EACL,6BAA6B,EAC7B,mCAAmC,EACnC,gCAAgC,EACjC,MAAM,oDAAoD,CAAA;AAM3D,MAAM,uBAAuB,GAAG,CAC9B,cAAyD,EACzD,OAA0C,EAC1C,qBAA8B,EAC9B,EAAE,CACJ,CAAC,IAA+B,EAAQ,EAAE;IACxC,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAM;IACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QAAE,OAAM;IAE5D,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3D,IAAI,CAAC,YAAY;QAAE,OAAM;IAEzB,MAAM,gBAAgB,GAAG,IAAI,CAC3B,mCAAmC,CAAC,IAAI,EAAE,YAAY,CAAC,EACvD,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAC/B,CAAA;IAED,mBAAmB,CAAC;QAClB,gBAAgB;QAChB,OAAO;QACP,UAAU,EAAE,IAAI,CAAC,QAAQ;QACzB,SAAS,EAAE,gBAAgB;QAC3B,aAAa,EAAE,6BAA6B;KAC7C,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAC9B,cAAyD,EACzD,OAA0C,EAC1C,qBAA8B,EAC9B,EAAE,CACJ,CAAC,QAA2B,EAAQ,EAAE;IACpC,IAAI,QAAQ,CAAC,QAAQ;QAAE,OAAM;IAC7B,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;QAAE,OAAM;IAC3D,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa;QAAE,OAAM;IAEjE,MAAM,YAAY,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC/D,IAAI,CAAC,YAAY;QAAE,OAAM;IAEzB,MAAM,gBAAgB,GAAG,IAAI,CAC3B,gCAAgC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,EAC/E,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAC/B,CAAA;IAED,mBAAmB,CAAC;QAClB,gBAAgB;QAChB,OAAO;QACP,UAAU,EAAE,QAAQ,CAAC,GAAG;QACxB,SAAS,EAAE,gBAAgB;QAC3B,aAAa,EAAE,6BAA6B;KAC7C,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,cAAc,GAAO,EAAE,CAAA;AAE7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,iBAAiB,EACjB;IACE,WAAW,EAAE,qEAAqE;IAClF,SAAS,EAAE,gBAAgB;CAC5B,EACD,CAAC,OAAO,EAAE,EAAE;IACV,MAAM,cAAc,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAA;IAC3D,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAA;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACvB,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAA;IACxC,MAAM,qBAAqB,GAAG,cAAc,CAAC,qBAAqB,CAAA;IAElE,MAAM,cAAc,GAAG,kCAAkC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC3E,MAAM,iBAAiB,GAAG,uBAAuB,CAC/C,cAAc,EACd,OAAO,EACP,qBAAqB,CACtB,CAAA;IACD,MAAM,2BAA2B,GAAG,uBAAuB,CACzD,cAAc,EACd,OAAO,EACP,qBAAqB,CACtB,CAAA;IAED,OAAO;QACL,gBAAgB,CAAC,IAA+B;YAC9C,iBAAiB,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC;QACD,QAAQ,CAAC,IAAuB;YAC9B,2BAA2B,CAAC,IAAI,CAAC,CAAA;QACnC,CAAC;KACF,CAAA;AACH,CAAC,EACD,cAAc,CACf,CAAA"}
@@ -4,6 +4,7 @@ export interface ModulePathIndex {
4
4
  readonly localFileSet: ReadonlySet<string>;
5
5
  readonly packageNames: ReadonlyArray<string>;
6
6
  readonly packageNameSet: ReadonlySet<string>;
7
+ readonly canResolveModule?: (modulePath: string, containingFile: string) => boolean;
7
8
  }
8
9
  export declare const buildModulePathIndex: (program: ts.Program) => ModulePathIndex;
9
10
  export declare const getModulePathIndex: (program: ts.Program) => ModulePathIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"module-path-index.d.ts","sourceRoot":"","sources":["../../../src/shell/validation/module-path-index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAIhC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAC7C;AAyFD,eAAO,MAAM,oBAAoB,GAAI,SAAS,EAAE,CAAC,OAAO,KAAG,eA0B1D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,EAAE,CAAC,OAAO,KAAG,eAMxD,CAAA"}
1
+ {"version":3,"file":"module-path-index.d.ts","sourceRoot":"","sources":["../../../src/shell/validation/module-path-index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAIhC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC1C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,OAAO,CAAA;CACpF;AAqOD,eAAO,MAAM,oBAAoB,GAAI,SAAS,EAAE,CAAC,OAAO,KAAG,eAe1D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,EAAE,CAAC,OAAO,KAAG,eAMxD,CAAA"}
@@ -67,20 +67,81 @@ const findNearestPackageJson = (startDir) => {
67
67
  const rootCandidate = joinPath(currentDir, "package.json");
68
68
  return ts.sys.fileExists(rootCandidate) ? rootCandidate : null;
69
69
  };
70
- const readPackageNamesFromNearest = (startDir) => {
71
- const packageJsonPath = findNearestPackageJson(startDir);
72
- if (!packageJsonPath)
73
- return [];
70
+ // CHANGE: read package.json "name" field for workspace package discovery
71
+ // WHY: monorepo workspace packages need their names collected so cross-package imports are recognized
72
+ // PURITY: SHELL
73
+ // INVARIANT: returns name or null
74
+ // COMPLEXITY: O(1)/O(1)
75
+ const PackageNameSchema = S.Struct({
76
+ name: S.String
77
+ }).pipe(S.partial);
78
+ const decodePackageName = S.decodeUnknownEither(S.parseJson(PackageNameSchema));
79
+ const readPackageNameFromPath = (packageJsonPath) => {
74
80
  const content = ts.sys.readFile(packageJsonPath);
75
81
  if (!content)
76
- return [];
77
- const parsed = parsePackageJson(content);
78
- return parsed ? extractPackageNames(parsed) : [];
82
+ return null;
83
+ return Either.match(decodePackageName(content), {
84
+ onLeft: () => null,
85
+ onRight: (value) => value.name !== undefined && value.name.length > 0 ? value.name : null
86
+ });
79
87
  };
80
- const moduleIndexCache = new WeakMap();
81
- export const buildModulePathIndex = (program) => {
88
+ // CHANGE: collect unique package.json directories from source files
89
+ // WHY: in monorepos, program.getCurrentDirectory() returns the workspace root,
90
+ // missing package-level dependencies. Source files belong to specific packages,
91
+ // so we find their nearest package.json files for accurate dependency discovery.
92
+ // PURITY: SHELL
93
+ // INVARIANT: each unique package.json is read at most once
94
+ // COMPLEXITY: O(n)/O(n) where n = |sourceFiles|
95
+ const collectPackageJsonPaths = (sourceFileDirs) => {
96
+ const seen = new Set();
97
+ const result = [];
98
+ for (const dir of sourceFileDirs) {
99
+ const found = findNearestPackageJson(dir);
100
+ if (found && !seen.has(found)) {
101
+ seen.add(found);
102
+ result.push(found);
103
+ }
104
+ }
105
+ return result;
106
+ };
107
+ // CHANGE: discover workspace sibling package names
108
+ // WHY: in monorepos, cross-package imports reference sibling packages by name.
109
+ // These names must be in the index to prevent false-positive "module not found" errors.
110
+ // REF: issue #14 — plugin unable to work with monorepos where one package imports from another
111
+ // PURITY: SHELL
112
+ // INVARIANT: only reads package.json files that exist on disk
113
+ // COMPLEXITY: O(w)/O(w) where w = |workspace packages|
114
+ const discoverWorkspacePackageNames = (packageJsonPaths) => {
115
+ const names = [];
116
+ const visitedParents = new Set();
117
+ for (const pkgPath of packageJsonPaths) {
118
+ const pkgDir = dirname(pkgPath);
119
+ const parentDir = dirname(pkgDir);
120
+ if (visitedParents.has(parentDir))
121
+ continue;
122
+ visitedParents.add(parentDir);
123
+ // use getDirectories to enumerate sibling package directories
124
+ const subdirs = ts.sys.getDirectories(parentDir);
125
+ for (const subdir of subdirs) {
126
+ if (subdir === "node_modules")
127
+ continue;
128
+ const sibPkgJson = joinPath(parentDir, subdir, "package.json");
129
+ if (ts.sys.fileExists(sibPkgJson)) {
130
+ const name = readPackageNameFromPath(sibPkgJson);
131
+ if (name)
132
+ names.push(name);
133
+ }
134
+ }
135
+ }
136
+ return names;
137
+ };
138
+ // CHANGE: collect local source files and their directories from a TypeScript program
139
+ // WHY: extracted from buildModulePathIndex to reduce complexity
140
+ // PURITY: SHELL
141
+ // COMPLEXITY: O(n)/O(n) where n = |sourceFiles|
142
+ const collectSourceFilesAndDirs = (program) => {
82
143
  const localFiles = [];
83
- const packageNames = new Set();
144
+ const sourceFileDirs = new Set();
84
145
  for (const sourceFile of program.getSourceFiles()) {
85
146
  if (sourceFile.isDeclarationFile)
86
147
  continue;
@@ -90,17 +151,64 @@ export const buildModulePathIndex = (program) => {
90
151
  if (isSupportedFile(normalized)) {
91
152
  localFiles.push(normalized);
92
153
  }
154
+ sourceFileDirs.add(dirname(normalized));
93
155
  }
94
- const packageFromManifest = readPackageNamesFromNearest(program.getCurrentDirectory());
95
- for (const name of packageFromManifest) {
156
+ return { localFiles, sourceFileDirs };
157
+ };
158
+ // CHANGE: extract dependency names from all package.json files and workspace siblings
159
+ // WHY: extracted from buildModulePathIndex to reduce complexity
160
+ // PURITY: SHELL
161
+ // COMPLEXITY: O(n)/O(n)
162
+ const collectAllPackageNames = (packageJsonPaths) => {
163
+ const packageNames = new Set();
164
+ for (const pkgPath of packageJsonPaths) {
165
+ const content = ts.sys.readFile(pkgPath);
166
+ if (!content)
167
+ continue;
168
+ const parsed = parsePackageJson(content);
169
+ if (!parsed)
170
+ continue;
171
+ for (const name of extractPackageNames(parsed)) {
172
+ packageNames.add(name);
173
+ }
174
+ }
175
+ for (const name of discoverWorkspacePackageNames(packageJsonPaths)) {
96
176
  packageNames.add(name);
97
177
  }
178
+ return [...packageNames];
179
+ };
180
+ // CHANGE: create a TypeScript module resolution fallback function
181
+ // WHY: even if package name discovery misses a workspace package,
182
+ // TypeScript's own resolution can validate the import as a last resort
183
+ // PURITY: SHELL
184
+ // COMPLEXITY: O(1)/O(1)
185
+ const createModuleResolver = (program) => {
186
+ const compilerOptions = program.getCompilerOptions();
187
+ return (modulePath, containingFile) => {
188
+ const resolved = ts.resolveModuleName(modulePath, containingFile, compilerOptions, ts.sys);
189
+ return resolved.resolvedModule !== undefined;
190
+ };
191
+ };
192
+ const moduleIndexCache = new WeakMap();
193
+ // CHANGE: collect dependencies from all package.json files near source files, not just program root
194
+ // WHY: in monorepos, program.getCurrentDirectory() returns workspace root which has minimal deps.
195
+ // Each package has its own package.json with the actual dependencies used by that package.
196
+ // REF: issue #14 — monorepo cross-package imports not recognized
197
+ // PURITY: SHELL
198
+ // INVARIANT: index contains deps from all relevant package.json files + workspace package names
199
+ // COMPLEXITY: O(n)/O(n)
200
+ export const buildModulePathIndex = (program) => {
201
+ const { localFiles, sourceFileDirs } = collectSourceFilesAndDirs(program);
202
+ const startDirs = [...sourceFileDirs, normalizePath(program.getCurrentDirectory())];
203
+ const packageJsonPaths = collectPackageJsonPaths(startDirs);
204
+ const packageNames = collectAllPackageNames(packageJsonPaths);
98
205
  const uniqueFiles = [...new Set(localFiles)];
99
206
  return {
100
207
  localFiles: uniqueFiles,
101
208
  localFileSet: new Set(uniqueFiles),
102
- packageNames: [...packageNames],
103
- packageNameSet: new Set(packageNames)
209
+ packageNames,
210
+ packageNameSet: new Set(packageNames),
211
+ canResolveModule: createModuleResolver(program)
104
212
  };
105
213
  };
106
214
  export const getModulePathIndex = (program) => {
@@ -1 +1 @@
1
- {"version":3,"file":"module-path-index.js","sourceRoot":"","sources":["../../../src/shell/validation/module-path-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-path-index.js","sourceRoot":"","sources":["../../../src/shell/validation/module-path-index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module-validation-effect.d.ts","sourceRoot":"","sources":["../../../src/shell/validation/module-validation-effect.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAA;AAE5C,OAAO,KAAK,EAAE,0BAA0B,EAAuB,MAAM,qBAAqB,CAAA;AAe1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AA4H7D,eAAO,MAAM,wBAAwB,GACnC,MAAM,MAAM,EACZ,eAAe,MAAM,EACrB,gBAAgB,MAAM,EACtB,cAAc,eAAe,KAC5B,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,eAAe,CAUzD,CAAA;AAEH,eAAO,MAAM,sBAAsB,GACjC,YAAY,MAAM,EAClB,gBAAgB,MAAM,KACrB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,oBAAoB,CAS5D,CAAA;AAEH,eAAO,MAAM,sBAAsB,GACjC,WAAW,MAAM,EACjB,WAAW,MAAM,KAChB,OAQF,CAAA;AAED,eAAO,MAAM,iCAAiC,GAC5C,QAAQ,0BAA0B,KACjC,MAaA,CAAA"}
1
+ {"version":3,"file":"module-validation-effect.d.ts","sourceRoot":"","sources":["../../../src/shell/validation/module-validation-effect.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAA;AAG5C,OAAO,KAAK,EAAE,0BAA0B,EAAuB,MAAM,qBAAqB,CAAA;AAe1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAuJ7D,eAAO,MAAM,wBAAwB,GACnC,MAAM,MAAM,EACZ,eAAe,MAAM,EACrB,gBAAgB,MAAM,EACtB,cAAc,eAAe,KAC5B,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,eAAe,CAUzD,CAAA;AAEH,eAAO,MAAM,sBAAsB,GACjC,YAAY,MAAM,EAClB,gBAAgB,MAAM,KACrB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,oBAAoB,CAS5D,CAAA;AAEH,eAAO,MAAM,sBAAsB,GACjC,WAAW,MAAM,EACjB,WAAW,MAAM,KAChB,OAQF,CAAA;AAED,eAAO,MAAM,iCAAiC,GAC5C,QAAQ,0BAA0B,KACjC,MAaA,CAAA"}
@@ -10,6 +10,7 @@
10
10
  import * as NodePath from "@effect/platform-node/NodePath";
11
11
  import * as Path from "@effect/platform/Path";
12
12
  import { Effect, Match, pipe } from "effect";
13
+ import * as ts from "typescript";
13
14
  import { extractModuleName, formatModuleMessage, isModulePath, isValidCandidate, makeModuleNotFoundResult, makeValidModuleResult } from "../../core/index.js";
14
15
  import { findSimilarCandidates } from "../../core/suggestion/engine.js";
15
16
  import { MODULE_FILE_EXTENSIONS, normalizeModuleSpecifier, stripKnownExtension } from "../../core/validation/module-path-utils.js";
@@ -45,12 +46,24 @@ const checkIndexFilesInIndex = (index, dirPath) => MODULE_FILE_EXTENSIONS.some((
45
46
  const isRelativeModuleSpecifier = (value) => value.startsWith("./") || value.startsWith("../") || value.startsWith("/");
46
47
  const isNodeProtocolSpecifier = (value) => value.startsWith("node:");
47
48
  const isPackageSpecifier = (value) => !isRelativeModuleSpecifier(value) && !isNodeProtocolSpecifier(value);
48
- const validatePackageModulePathWithIndex = (index, requestedPath, node) => {
49
+ const fileExistsOnDisk = (filePath) => ts.sys.fileExists(filePath);
50
+ // CHANGE: add containingFile parameter and TypeScript resolution fallback
51
+ // WHY: in monorepos, workspace packages may not appear in the package name index.
52
+ // TypeScript's module resolution can validate these imports as a last resort.
53
+ // REF: issue #14 — monorepo cross-package imports produce false-positive errors
54
+ // PURITY: SHELL
55
+ // INVARIANT: Valid when package is in index OR resolvable by TypeScript
56
+ // COMPLEXITY: O(n log n)/O(n)
57
+ const validatePackageModulePathWithIndex = (index, requestedPath, node, containingFile) => {
49
58
  const moduleName = extractModuleName(requestedPath);
50
59
  if (moduleName.length === 0)
51
60
  return makeValidModuleResult();
52
61
  if (index.packageNameSet.has(moduleName))
53
62
  return makeValidModuleResult();
63
+ // fallback: check if TypeScript can resolve the module
64
+ if (index.canResolveModule?.(requestedPath, containingFile)) {
65
+ return makeValidModuleResult();
66
+ }
54
67
  const validCandidates = index.packageNames.filter((candidate) => isValidCandidate(candidate, moduleName));
55
68
  const suggestions = findSimilarCandidates(moduleName, validCandidates);
56
69
  if (suggestions.length === 0) {
@@ -61,6 +74,18 @@ const validatePackageModulePathWithIndex = (index, requestedPath, node) => {
61
74
  const validateRelativeModulePathWithIndex = (index, node, requestedPath, containingFile) => {
62
75
  const resolvedPath = resolveRelativePath(containingFile, requestedPath);
63
76
  const resolvedWithoutExtension = stripKnownExtension(resolvedPath);
77
+ // CHANGE: accept existing on-disk imports even if TS program index excludes file type
78
+ // WHY: style/assets imports (e.g. .css) are usually not part of Program.getSourceFiles()
79
+ // but should not be reported as missing when file exists.
80
+ // QUOTE(TZ): "должно не падать ... если подключаем модуль"
81
+ // REF: user-message-2026-02-11
82
+ // SOURCE: n/a
83
+ // FORMAT THEOREM: ∀p ∈ RelativeImports: fileExists(p) → Valid(p)
84
+ // PURITY: SHELL
85
+ // INVARIANT: fallback only suppresses false positives for real files on disk
86
+ // COMPLEXITY: O(1)/O(1)
87
+ if (fileExistsOnDisk(resolvedPath))
88
+ return makeValidModuleResult();
64
89
  if (containsFile(index, resolvedPath))
65
90
  return makeValidModuleResult();
66
91
  if (checkPathWithExtensionsInIndex(index, resolvedWithoutExtension))
@@ -81,7 +106,7 @@ const validateModulePathWithIndex = (index, node, requestedPath, containingFile)
81
106
  return makeValidModuleResult();
82
107
  }
83
108
  if (isPackageSpecifier(requestedPath)) {
84
- return validatePackageModulePathWithIndex(index, requestedPath, node);
109
+ return validatePackageModulePathWithIndex(index, requestedPath, node, containingFile);
85
110
  }
86
111
  return validateRelativeModulePathWithIndex(index, node, requestedPath, containingFile);
87
112
  };
@@ -1 +1 @@
1
- {"version":3,"file":"module-validation-effect.js","sourceRoot":"","sources":["../../../src/shell/validation/module-validation-effect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-validation-effect.js","sourceRoot":"","sources":["../../../src/shell/validation/module-validation-effect.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -13,13 +13,13 @@
13
13
  "types": "lib/index.d.ts",
14
14
  "name": "@prover-coder-ai/eslint-plugin-suggest-members",
15
15
  "type": "module",
16
- "version": "0.0.20",
16
+ "version": "0.0.22",
17
17
  "dependencies": {
18
- "@effect/platform": "^0.94.2",
18
+ "@effect/platform": "^0.94.4",
19
19
  "@effect/platform-node": "^0.104.1",
20
20
  "@effect/schema": "^0.75.5",
21
- "@typescript-eslint/utils": "8.54.0",
22
- "effect": "^3.19.15"
21
+ "@typescript-eslint/utils": "8.55.0",
22
+ "effect": "^3.19.16"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "eslint": "^8.57.0 || ^9.0.0",
@@ -30,9 +30,9 @@
30
30
  "sync-plugin-meta": "node scripts/sync-plugin-meta.mjs",
31
31
  "build": "pnpm run sync-plugin-meta && tsc -p tsconfig.build.json",
32
32
  "dev": "tsc -p tsconfig.build.json --watch",
33
- "lint": "npx @ton-ai-core/vibecode-linter src/",
34
- "lint:tests": "npx @ton-ai-core/vibecode-linter tests/",
35
- "lint:effect": "npx eslint --config eslint.effect-ts-check.config.mjs .",
33
+ "lint": "vibecode-linter src/",
34
+ "lint:tests": "vibecode-linter tests/",
35
+ "lint:effect": "eslint --config eslint.effect-ts-check.config.mjs .",
36
36
  "check": "pnpm run typecheck",
37
37
  "prestart": "pnpm run build",
38
38
  "start": "node lib/index.js",