kopytko-linter 0.1.4 → 0.3.0

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.
@@ -89,14 +89,14 @@ function printVersion() {
89
89
  console.log('kopytko-lint (development)');
90
90
  }
91
91
  }
92
- function main() {
92
+ async function main() {
93
93
  const options = parseArgs(process.argv);
94
94
  const projectRoot = process.cwd();
95
95
  const config = (0, config_1.resolveConfig)(projectRoot, options.configPath);
96
96
  if (options.sourceDir) {
97
97
  config.sourceDir = options.sourceDir;
98
98
  }
99
- const result = (0, linter_1.lintProject)(projectRoot, config);
99
+ const result = await (0, linter_1.lintProjectAsync)(projectRoot, config);
100
100
  // Output
101
101
  switch (options.format) {
102
102
  case 'json':
@@ -1 +1 @@
1
- {"version":3,"file":"kopytko-lint.js","sourceRoot":"","sources":["../../bin/kopytko-lint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kopytko-lint.js","sourceRoot":"","sources":["../../bin/kopytko-lint.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,11 @@ export declare class ImportResolver {
9
9
  private readonly options;
10
10
  private readonly existsCache;
11
11
  private readonly resolveCache;
12
+ private readonly knownFilePaths;
12
13
  constructor(options: ImportResolverOptions);
13
- private cachedExists;
14
+ /** Pre-seed with paths known to exist (from filesystem walk). */
15
+ registerKnownPaths(paths: Iterable<string>): void;
16
+ cachedExists(filePath: string): boolean;
14
17
  getWorkspaceFolders(): string[];
15
18
  getSourceDir(): string;
16
19
  parseImports(text: string): KopytkoImport[];
@@ -1 +1 @@
1
- {"version":3,"file":"importParser.d.ts","sourceRoot":"","sources":["../../../src/analysis/importParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK9C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAkB1D;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;gBAE1D,OAAO,EAAE,qBAAqB;IAI1C,OAAO,CAAC,YAAY;IAUpB,mBAAmB,IAAI,MAAM,EAAE;IAI/B,YAAY,IAAI,MAAM;IAItB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IAI3C,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAe/E,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAI/D,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,qBAAqB;CAwB9B"}
1
+ {"version":3,"file":"importParser.d.ts","sourceRoot":"","sources":["../../../src/analysis/importParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAK9C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAkB1D;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAExC,OAAO,EAAE,qBAAqB;IAI1C,iEAAiE;IACjE,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAQjD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYvC,mBAAmB,IAAI,MAAM,EAAE;IAI/B,YAAY,IAAI,MAAM;IAItB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE;IAI3C,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAe/E,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAI/D,OAAO,CAAC,qBAAqB;IAwB7B,OAAO,CAAC,qBAAqB;CAwB9B"}
@@ -62,11 +62,23 @@ class ImportResolver {
62
62
  options;
63
63
  existsCache = new Map();
64
64
  resolveCache = new Map();
65
+ knownFilePaths = new Set();
65
66
  constructor(options) {
66
67
  this.options = options;
67
68
  }
69
+ /** Pre-seed with paths known to exist (from filesystem walk). */
70
+ registerKnownPaths(paths) {
71
+ for (const p of paths) {
72
+ const normalized = nodePath.normalize(p);
73
+ this.knownFilePaths.add(normalized);
74
+ this.existsCache.set(normalized, true);
75
+ }
76
+ }
68
77
  cachedExists(filePath) {
69
78
  const normalized = nodePath.normalize(filePath);
79
+ // Fast path: check in-memory set of known files first
80
+ if (this.knownFilePaths.has(normalized))
81
+ return true;
70
82
  let result = this.existsCache.get(normalized);
71
83
  if (result === undefined) {
72
84
  result = fsWrapper_1.default.existsSync(filePath);
@@ -1 +1 @@
1
- {"version":3,"file":"importParser.js","sourceRoot":"","sources":["../../../src/analysis/importParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"importParser.js","sourceRoot":"","sources":["../../../src/analysis/importParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Returns raw URI strings from all <script> tags in an XML text.
3
+ */
4
+ export declare function parseXmlScriptUris(xmlText: string): string[];
5
+ /**
6
+ * Resolves a script URI from an XML file to an absolute filesystem path.
7
+ * Supports `pkg:/path/file.brs` and relative paths.
8
+ */
9
+ export declare function resolveScriptUri(uri: string, xmlDir: string, workspaceFolders: string[], sourceDir: string, cachedExists?: (path: string) => boolean): string | undefined;
10
+ /**
11
+ * Returns absolute paths for all BrightScript files listed in an XML's <script> tags.
12
+ */
13
+ export declare function getScriptPathsFromXml(xmlPath: string, xmlText: string, workspaceFolders: string[], sourceDir: string, cachedExists?: (path: string) => boolean): string[];
14
+ /**
15
+ * Returns the `extends` attribute value from a <component> tag, or null.
16
+ */
17
+ export declare function parseXmlExtends(xmlText: string): string | null;
18
+ /**
19
+ * Returns the `name` attribute value from a <component> tag, or null.
20
+ */
21
+ export declare function parseXmlComponentName(xmlText: string): string | null;
22
+ export interface XmlInterfaceField {
23
+ name: string;
24
+ type: string;
25
+ }
26
+ export interface XmlInterfaceFunction {
27
+ name: string;
28
+ }
29
+ export interface ParsedXmlInterface {
30
+ fields: XmlInterfaceField[];
31
+ functions: XmlInterfaceFunction[];
32
+ }
33
+ /**
34
+ * Parses the <interface> section of a SceneGraph XML file.
35
+ */
36
+ export declare function parseXmlInterface(xmlText: string): ParsedXmlInterface;
37
+ /**
38
+ * Finds a component's XML file by name across multiple search roots.
39
+ * Tries exact filename match first, then searches by <component name="..."> attribute.
40
+ */
41
+ export declare function findComponentXml(componentName: string, searchRoots: string[], maxDepth?: number): string | undefined;
42
+ //# sourceMappingURL=xmlParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xmlParser.d.ts","sourceRoot":"","sources":["../../../src/analysis/xmlParser.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,MAAM,EAAE,EAC1B,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GACvC,MAAM,GAAG,SAAS,CAepB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,EAAE,EAC1B,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GACvC,MAAM,EAAE,CAKV;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CA2BrE;AA2DD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,SAAI,GACX,MAAM,GAAG,SAAS,CAYpB"}
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.parseXmlScriptUris = parseXmlScriptUris;
40
+ exports.resolveScriptUri = resolveScriptUri;
41
+ exports.getScriptPathsFromXml = getScriptPathsFromXml;
42
+ exports.parseXmlExtends = parseXmlExtends;
43
+ exports.parseXmlComponentName = parseXmlComponentName;
44
+ exports.parseXmlInterface = parseXmlInterface;
45
+ exports.findComponentXml = findComponentXml;
46
+ const nodePath = __importStar(require("path"));
47
+ const fsWrapper_1 = __importDefault(require("./fsWrapper"));
48
+ /**
49
+ * Returns raw URI strings from all <script> tags in an XML text.
50
+ */
51
+ function parseXmlScriptUris(xmlText) {
52
+ const uris = [];
53
+ const pattern = /<script\b[^>]*\buri\s*=\s*"([^"]+)"[^>]*>/gi;
54
+ let match;
55
+ while ((match = pattern.exec(xmlText)) !== null) {
56
+ uris.push(match[1]);
57
+ }
58
+ return uris;
59
+ }
60
+ /**
61
+ * Resolves a script URI from an XML file to an absolute filesystem path.
62
+ * Supports `pkg:/path/file.brs` and relative paths.
63
+ */
64
+ function resolveScriptUri(uri, xmlDir, workspaceFolders, sourceDir, cachedExists) {
65
+ const exists = cachedExists ?? fsWrapper_1.default.existsSync;
66
+ if (uri.startsWith('pkg:/')) {
67
+ const rel = uri.slice(5);
68
+ for (const ws of workspaceFolders) {
69
+ const candidate = nodePath.join(ws, sourceDir, rel);
70
+ if (exists(candidate))
71
+ return candidate;
72
+ const candidateRoot = nodePath.join(ws, rel);
73
+ if (exists(candidateRoot))
74
+ return candidateRoot;
75
+ }
76
+ return undefined;
77
+ }
78
+ const candidate = nodePath.join(xmlDir, uri);
79
+ return exists(candidate) ? candidate : undefined;
80
+ }
81
+ /**
82
+ * Returns absolute paths for all BrightScript files listed in an XML's <script> tags.
83
+ */
84
+ function getScriptPathsFromXml(xmlPath, xmlText, workspaceFolders, sourceDir, cachedExists) {
85
+ const xmlDir = nodePath.dirname(xmlPath);
86
+ return parseXmlScriptUris(xmlText)
87
+ .map((uri) => resolveScriptUri(uri, xmlDir, workspaceFolders, sourceDir, cachedExists))
88
+ .filter((p) => p !== undefined);
89
+ }
90
+ /**
91
+ * Returns the `extends` attribute value from a <component> tag, or null.
92
+ */
93
+ function parseXmlExtends(xmlText) {
94
+ const match = /<component\b[^>]*\bextends\s*=\s*["']([^"']+)["']/i.exec(xmlText);
95
+ return match ? match[1] : null;
96
+ }
97
+ /**
98
+ * Returns the `name` attribute value from a <component> tag, or null.
99
+ */
100
+ function parseXmlComponentName(xmlText) {
101
+ const match = /<component\b[^>]*\bname\s*=\s*["']([^"']+)["']/i.exec(xmlText);
102
+ return match ? match[1] : null;
103
+ }
104
+ /**
105
+ * Parses the <interface> section of a SceneGraph XML file.
106
+ */
107
+ function parseXmlInterface(xmlText) {
108
+ const fields = [];
109
+ const functions = [];
110
+ const ifaceMatch = /<interface\b[^>]*>([\s\S]*?)<\/interface>/i.exec(xmlText);
111
+ if (!ifaceMatch)
112
+ return { fields, functions };
113
+ const ifaceText = ifaceMatch[1];
114
+ const fieldRe = /<field\b([^>]*)>/gi;
115
+ let m;
116
+ while ((m = fieldRe.exec(ifaceText)) !== null) {
117
+ const attrs = m[1];
118
+ const idMatch = /\bid\s*=\s*["']([^"']+)["']/i.exec(attrs);
119
+ const typeMatch = /\btype\s*=\s*["']([^"']+)["']/i.exec(attrs);
120
+ if (idMatch) {
121
+ fields.push({ name: idMatch[1], type: typeMatch ? typeMatch[1] : 'dynamic' });
122
+ }
123
+ }
124
+ const funcRe = /<function\b([^>]*)>/gi;
125
+ while ((m = funcRe.exec(ifaceText)) !== null) {
126
+ const attrs = m[1];
127
+ const nameMatch = /\bname\s*=\s*["']([^"']+)["']/i.exec(attrs);
128
+ if (nameMatch)
129
+ functions.push({ name: nameMatch[1] });
130
+ }
131
+ return { fields, functions };
132
+ }
133
+ /**
134
+ * Searches directories recursively for a file by name.
135
+ */
136
+ function findFileInTree(dir, filename, depth) {
137
+ if (depth < 0)
138
+ return undefined;
139
+ let entries;
140
+ try {
141
+ entries = fsWrapper_1.default.readdirTyped(dir);
142
+ }
143
+ catch {
144
+ return undefined;
145
+ }
146
+ for (const entry of entries) {
147
+ if (!entry.isDirectory && entry.name === filename) {
148
+ return nodePath.join(dir, entry.name);
149
+ }
150
+ }
151
+ for (const entry of entries) {
152
+ if (!entry.isDirectory)
153
+ continue;
154
+ if (entry.name.startsWith('.') || entry.name === 'node_modules')
155
+ continue;
156
+ const found = findFileInTree(nodePath.join(dir, entry.name), filename, depth - 1);
157
+ if (found)
158
+ return found;
159
+ }
160
+ return undefined;
161
+ }
162
+ /**
163
+ * Searches directories for an XML file whose <component name="..."> matches.
164
+ */
165
+ function findXmlByComponentName(dir, nameLower, depth) {
166
+ if (depth < 0)
167
+ return undefined;
168
+ let entries;
169
+ try {
170
+ entries = fsWrapper_1.default.readdirTyped(dir);
171
+ }
172
+ catch {
173
+ return undefined;
174
+ }
175
+ for (const entry of entries) {
176
+ if (entry.isDirectory)
177
+ continue;
178
+ if (!entry.name.endsWith('.xml'))
179
+ continue;
180
+ const xmlPath = nodePath.join(dir, entry.name);
181
+ try {
182
+ const text = fsWrapper_1.default.readFileSync(xmlPath, 'utf-8');
183
+ const nameMatch = /<component\b[^>]*\bname\s*=\s*"([^"]+)"/i.exec(text);
184
+ if (nameMatch && nameMatch[1].toLowerCase() === nameLower) {
185
+ return xmlPath;
186
+ }
187
+ }
188
+ catch { /* skip */ }
189
+ }
190
+ for (const entry of entries) {
191
+ if (!entry.isDirectory)
192
+ continue;
193
+ if (entry.name.startsWith('.') || entry.name === 'node_modules')
194
+ continue;
195
+ const found = findXmlByComponentName(nodePath.join(dir, entry.name), nameLower, depth - 1);
196
+ if (found)
197
+ return found;
198
+ }
199
+ return undefined;
200
+ }
201
+ /**
202
+ * Finds a component's XML file by name across multiple search roots.
203
+ * Tries exact filename match first, then searches by <component name="..."> attribute.
204
+ */
205
+ function findComponentXml(componentName, searchRoots, maxDepth = 8) {
206
+ const filename = `${componentName}.xml`;
207
+ for (const root of searchRoots) {
208
+ const found = findFileInTree(root, filename, maxDepth);
209
+ if (found)
210
+ return found;
211
+ }
212
+ const nameLower = componentName.toLowerCase();
213
+ for (const root of searchRoots) {
214
+ const found = findXmlByComponentName(root, nameLower, maxDepth);
215
+ if (found)
216
+ return found;
217
+ }
218
+ return undefined;
219
+ }
220
+ //# sourceMappingURL=xmlParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xmlParser.js","sourceRoot":"","sources":["../../../src/analysis/xmlParser.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  * const diagnostics = lintFile(filePath, content, context, config);
13
13
  * ```
14
14
  */
15
- export { lintFile, lintProject, createFileContext } from './linter';
15
+ export { lintFile, lintProject, lintProjectAsync, createFileContext } from './linter';
16
16
  export { LinterConfig, DEFAULT_LINTER_CONFIG, DEFAULT_RULE_CONFIG, parseLinterConfig, resolveConfig } from './config';
17
17
  export type { LintDiagnostic, LintResult, LintSeverity, GeneratedModuleConfig, KopytkoImport, FunctionDefinition, RuleContext, RuleConfig, RuleFn, RuleDefinition } from './types';
18
18
  export type { LintContext } from './context';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACtH,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACnL,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3H,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACtH,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACnL,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3H,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/src/index.js CHANGED
@@ -14,10 +14,11 @@
14
14
  * ```
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.escapeRegex = exports.stripStringLiterals = exports.findTestSiblings = exports.getTestBaseName = exports.isTestFile = exports.parseInnerMethodDefs = exports.parseFunctionDefs = exports.ImportResolver = exports.parseImports = exports.findComponent = exports.keywordNames = exports.builtinNames = exports.findBuiltin = exports.BRIGHTSCRIPT_KEYWORDS = exports.BRIGHTSCRIPT_BUILTINS = exports.formatSarif = exports.formatJson = exports.formatText = exports.resolveConfig = exports.parseLinterConfig = exports.DEFAULT_RULE_CONFIG = exports.DEFAULT_LINTER_CONFIG = exports.createFileContext = exports.lintProject = exports.lintFile = void 0;
17
+ exports.escapeRegex = exports.stripStringLiterals = exports.findTestSiblings = exports.getTestBaseName = exports.isTestFile = exports.parseInnerMethodDefs = exports.parseFunctionDefs = exports.ImportResolver = exports.parseImports = exports.findComponent = exports.keywordNames = exports.builtinNames = exports.findBuiltin = exports.BRIGHTSCRIPT_KEYWORDS = exports.BRIGHTSCRIPT_BUILTINS = exports.formatSarif = exports.formatJson = exports.formatText = exports.resolveConfig = exports.parseLinterConfig = exports.DEFAULT_RULE_CONFIG = exports.DEFAULT_LINTER_CONFIG = exports.createFileContext = exports.lintProjectAsync = exports.lintProject = exports.lintFile = void 0;
18
18
  var linter_1 = require("./linter");
19
19
  Object.defineProperty(exports, "lintFile", { enumerable: true, get: function () { return linter_1.lintFile; } });
20
20
  Object.defineProperty(exports, "lintProject", { enumerable: true, get: function () { return linter_1.lintProject; } });
21
+ Object.defineProperty(exports, "lintProjectAsync", { enumerable: true, get: function () { return linter_1.lintProjectAsync; } });
21
22
  Object.defineProperty(exports, "createFileContext", { enumerable: true, get: function () { return linter_1.createFileContext; } });
22
23
  var config_1 = require("./config");
23
24
  Object.defineProperty(exports, "DEFAULT_LINTER_CONFIG", { enumerable: true, get: function () { return config_1.DEFAULT_LINTER_CONFIG; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,mCAAoE;AAA3D,kGAAA,QAAQ,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AACjD,mCAAsH;AAA/F,+GAAA,qBAAqB,OAAA;AAAE,6GAAA,mBAAmB,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,uGAAA,aAAa,OAAA;AAGnG,wDAAoD;AAA3C,2GAAA,UAAU,OAAA;AACnB,wDAAoD;AAA3C,2GAAA,UAAU,OAAA;AACnB,0DAAsD;AAA7C,6GAAA,WAAW,OAAA;AACpB,+CAA2H;AAAlH,iHAAA,qBAAqB,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA;AAC9F,mDAAqD;AAA5C,2GAAA,aAAa,OAAA;AACtB,wDAAuE;AAA9D,4GAAA,YAAY,OAAA;AAAE,8GAAA,cAAc,OAAA;AACrC,0DAAmF;AAA1E,kHAAA,iBAAiB,OAAA;AAAE,qHAAA,oBAAoB,OAAA;AAChD,kDAAqF;AAA5E,uGAAA,UAAU,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AACtD,kDAAwE;AAA/D,gHAAA,mBAAmB,OAAA;AAAE,wGAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAEH,mCAAsF;AAA7E,kGAAA,QAAQ,OAAA;AAAE,qGAAA,WAAW,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AACnE,mCAAsH;AAA/F,+GAAA,qBAAqB,OAAA;AAAE,6GAAA,mBAAmB,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,uGAAA,aAAa,OAAA;AAGnG,wDAAoD;AAA3C,2GAAA,UAAU,OAAA;AACnB,wDAAoD;AAA3C,2GAAA,UAAU,OAAA;AACnB,0DAAsD;AAA7C,6GAAA,WAAW,OAAA;AACpB,+CAA2H;AAAlH,iHAAA,qBAAqB,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA;AAC9F,mDAAqD;AAA5C,2GAAA,aAAa,OAAA;AACtB,wDAAuE;AAA9D,4GAAA,YAAY,OAAA;AAAE,8GAAA,cAAc,OAAA;AACrC,0DAAmF;AAA1E,kHAAA,iBAAiB,OAAA;AAAE,qHAAA,oBAAoB,OAAA;AAChD,kDAAqF;AAA5E,uGAAA,UAAU,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AACtD,kDAAwE;AAA/D,gHAAA,mBAAmB,OAAA;AAAE,wGAAA,WAAW,OAAA"}
@@ -5,12 +5,16 @@ import type { LinterConfig } from './config';
5
5
  * Lints a single file with a pre-built context.
6
6
  * Used by the extension (library mode) and internally by lintProject.
7
7
  */
8
- export declare function lintFile(filePath: string, content: string, context: LintContext, config: LinterConfig): LintDiagnostic[];
8
+ export declare function lintFile(filePath: string, content: string, context: LintContext, config: LinterConfig, preLines?: string[]): LintDiagnostic[];
9
9
  /**
10
10
  * Lints all .brs files in a project directory.
11
11
  * Used by the CLI (standalone mode).
12
12
  */
13
13
  export declare function lintProject(projectRoot: string, configOverride?: Partial<LinterConfig>): LintResult;
14
+ /**
15
+ * Async version of lintProject — uses parallel I/O for ~6x faster file loading.
16
+ */
17
+ export declare function lintProjectAsync(projectRoot: string, configOverride?: Partial<LinterConfig>): Promise<LintResult>;
14
18
  /**
15
19
  * Overrides the context's knownFuncNames for a specific file.
16
20
  * Called from lintFile to provide per-file known names.
@@ -1 +1 @@
1
- {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAA8B,MAAM,SAAS,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAU7C;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,GACnB,cAAc,EAAE,CAuBlB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GACrC,UAAU,CA2BZ;AAmLD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAQzF"}
1
+ {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAA8B,MAAM,SAAS,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAW7C;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,EACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,cAAc,EAAE,CAuBlB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GACrC,UAAU,CASZ;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GACrC,OAAO,CAAC,UAAU,CAAC,CASrB;AA4iBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAQzF"}
@@ -38,22 +38,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.lintFile = lintFile;
40
40
  exports.lintProject = lintProject;
41
+ exports.lintProjectAsync = lintProjectAsync;
41
42
  exports.createFileContext = createFileContext;
42
43
  const nodePath = __importStar(require("path"));
44
+ const fs = __importStar(require("fs"));
43
45
  const config_1 = require("./config");
44
46
  const index_1 = require("./rules/index");
45
47
  const importParser_1 = require("./analysis/importParser");
46
48
  const functionIndex_1 = require("./analysis/functionIndex");
47
49
  const patternSiblings_1 = require("./analysis/patternSiblings");
48
50
  const testUtils_1 = require("./analysis/testUtils");
51
+ const xmlParser_1 = require("./analysis/xmlParser");
49
52
  const testGlobals_1 = require("./catalog/testGlobals");
50
53
  const fsWrapper_1 = __importDefault(require("./analysis/fsWrapper"));
51
54
  /**
52
55
  * Lints a single file with a pre-built context.
53
56
  * Used by the extension (library mode) and internally by lintProject.
54
57
  */
55
- function lintFile(filePath, content, context, config) {
56
- const lines = content.split(/\r?\n/);
58
+ function lintFile(filePath, content, context, config, preLines) {
59
+ const lines = preLines ?? content.split(/\r?\n/);
57
60
  const imports = context.parseImports(content);
58
61
  const ruleContext = {
59
62
  filePath,
@@ -83,6 +86,20 @@ function lintProject(projectRoot, configOverride) {
83
86
  ...configOverride,
84
87
  };
85
88
  const { context, brsFiles, fileContentsCache } = buildProjectContext(projectRoot, config);
89
+ return runLint(brsFiles, fileContentsCache, context, config);
90
+ }
91
+ /**
92
+ * Async version of lintProject — uses parallel I/O for ~6x faster file loading.
93
+ */
94
+ async function lintProjectAsync(projectRoot, configOverride) {
95
+ const config = {
96
+ ...(0, config_1.resolveConfig)(projectRoot),
97
+ ...configOverride,
98
+ };
99
+ const { context, brsFiles, fileContentsCache } = await buildProjectContextAsync(projectRoot, config);
100
+ return runLint(brsFiles, fileContentsCache, context, config);
101
+ }
102
+ function runLint(brsFiles, fileContentsCache, context, config) {
86
103
  const allDiagnostics = [];
87
104
  for (const file of brsFiles) {
88
105
  const content = fileContentsCache.get(nodePath.normalize(file));
@@ -101,29 +118,282 @@ function lintProject(projectRoot, configOverride) {
101
118
  hintCount: allDiagnostics.filter(d => d.severity === 'hint').length,
102
119
  };
103
120
  }
104
- function buildProjectContext(projectRoot, config) {
121
+ // ── Async walk + parallel read (used by lintProjectAsync / CLI) ──
122
+ async function walkAsync(dir) {
123
+ const brsFiles = [];
124
+ const xmlFiles = [];
125
+ let entries;
126
+ try {
127
+ entries = await fs.promises.readdir(dir, { withFileTypes: true });
128
+ }
129
+ catch {
130
+ return { brsFiles, xmlFiles };
131
+ }
132
+ const subdirPromises = [];
133
+ for (const entry of entries) {
134
+ const fullPath = nodePath.join(dir, entry.name);
135
+ if (entry.isDirectory()) {
136
+ if (entry.name === 'node_modules' || entry.name === '.git')
137
+ continue;
138
+ subdirPromises.push(walkAsync(fullPath));
139
+ }
140
+ else if (entry.name.endsWith('.brs')) {
141
+ brsFiles.push(fullPath);
142
+ }
143
+ else if (entry.name.endsWith('.xml')) {
144
+ xmlFiles.push(fullPath);
145
+ }
146
+ }
147
+ for (const sub of await Promise.all(subdirPromises)) {
148
+ brsFiles.push(...sub.brsFiles);
149
+ xmlFiles.push(...sub.xmlFiles);
150
+ }
151
+ return { brsFiles, xmlFiles };
152
+ }
153
+ async function buildProjectContextAsync(projectRoot, config) {
105
154
  const importResolver = new importParser_1.ImportResolver({
106
155
  workspaceFolders: [projectRoot],
107
156
  sourceDir: config.sourceDir,
108
157
  resolveModules: config.resolveModules,
109
158
  });
110
- // Build a project-wide function index — single pass over all files
111
- const brsFiles = collectBrsFiles(projectRoot, config.sourceDir);
112
- const allFunctions = new Map();
159
+ const workspaceFolders = [projectRoot];
160
+ const sourceDir = config.sourceDir;
161
+ // Phase 1: Async walk project + kopytko packages
162
+ const sourceRoot = nodePath.join(projectRoot, sourceDir);
163
+ const walkRoot = fsWrapper_1.default.existsSync(sourceRoot) ? sourceRoot : projectRoot;
164
+ const projectFiles = await walkAsync(walkRoot);
165
+ // Scan kopytko packages for XML
166
+ const packageXmlFiles = [];
167
+ const packageBrsFiles = [];
168
+ const nmDir = nodePath.join(projectRoot, 'node_modules');
169
+ try {
170
+ const nmEntries = await fs.promises.readdir(nmDir, { withFileTypes: true });
171
+ const pkgPromises = [];
172
+ const scanPkg = async (pkgDir) => {
173
+ const moduleDir = readKopytkoModuleDir(pkgDir);
174
+ if (!moduleDir)
175
+ return;
176
+ const sub = await walkAsync(nodePath.join(pkgDir, moduleDir));
177
+ packageXmlFiles.push(...sub.xmlFiles);
178
+ packageBrsFiles.push(...sub.brsFiles);
179
+ };
180
+ for (const entry of nmEntries) {
181
+ if (!entry.isDirectory())
182
+ continue;
183
+ const fullPath = nodePath.join(nmDir, entry.name);
184
+ if (entry.name.startsWith('@')) {
185
+ try {
186
+ const scopedEntries = await fs.promises.readdir(fullPath, { withFileTypes: true });
187
+ for (const scoped of scopedEntries) {
188
+ if (scoped.isDirectory())
189
+ pkgPromises.push(scanPkg(nodePath.join(fullPath, scoped.name)));
190
+ }
191
+ }
192
+ catch { /* skip */ }
193
+ }
194
+ else {
195
+ pkgPromises.push(scanPkg(fullPath));
196
+ }
197
+ }
198
+ await Promise.all(pkgPromises);
199
+ }
200
+ catch { /* no node_modules */ }
201
+ const allXmlFiles = [...projectFiles.xmlFiles, ...packageXmlFiles];
202
+ const allBrsFilesForIndex = [...projectFiles.brsFiles, ...packageBrsFiles];
203
+ const brsFiles = projectFiles.brsFiles; // only project files get linted
204
+ // Phase 2: Parallel read all files
205
+ const readResults = await Promise.all([
206
+ ...brsFiles.map(f => fs.promises.readFile(f, 'utf-8').then(text => ({ path: f, text, type: 'brs' })).catch(() => null)),
207
+ ...packageBrsFiles.map(f => fs.promises.readFile(f, 'utf-8').then(text => ({ path: f, text, type: 'pkg-brs' })).catch(() => null)),
208
+ ...allXmlFiles.map(f => fs.promises.readFile(f, 'utf-8').then(text => ({ path: f, text, type: 'xml' })).catch(() => null)),
209
+ ]);
210
+ // Phase 3: Parse (synchronous, CPU-bound — fast)
211
+ const fileContentsCache = new Map();
113
212
  const fileFunctions = new Map();
114
213
  const fileImports = new Map();
214
+ const componentNameToXml = new Map();
215
+ const xmlTextCache = new Map();
216
+ const brsToXmlParents = new Map();
217
+ for (const result of readResults) {
218
+ if (!result)
219
+ continue;
220
+ const normalized = nodePath.normalize(result.path);
221
+ fileContentsCache.set(normalized, result.text);
222
+ if (result.type === 'brs' || result.type === 'pkg-brs') {
223
+ fileFunctions.set(normalized, (0, functionIndex_1.parseFunctionDefs)(result.text, result.path).map(f => f.nameLower));
224
+ if (result.type === 'brs') {
225
+ fileImports.set(normalized, (0, importParser_1.parseImports)(result.text));
226
+ }
227
+ }
228
+ else {
229
+ xmlTextCache.set(normalized, result.text);
230
+ const name = (0, xmlParser_1.parseXmlComponentName)(result.text);
231
+ if (name)
232
+ componentNameToXml.set(name.toLowerCase(), normalized);
233
+ }
234
+ }
235
+ // Pre-seed resolver cache
236
+ importResolver.registerKnownPaths(allBrsFilesForIndex);
237
+ importResolver.registerKnownPaths(allXmlFiles);
238
+ // Register node_modules package directories
239
+ try {
240
+ const nmEntries = await fs.promises.readdir(nmDir, { withFileTypes: true });
241
+ for (const entry of nmEntries) {
242
+ if (!entry.isDirectory())
243
+ continue;
244
+ if (entry.name.startsWith('@')) {
245
+ try {
246
+ const scopedEntries = await fs.promises.readdir(nodePath.join(nmDir, entry.name), { withFileTypes: true });
247
+ for (const scoped of scopedEntries) {
248
+ if (scoped.isDirectory())
249
+ importResolver.registerKnownPaths([nodePath.join(nmDir, entry.name, scoped.name)]);
250
+ }
251
+ }
252
+ catch { /* skip */ }
253
+ }
254
+ else {
255
+ importResolver.registerKnownPaths([nodePath.join(nmDir, entry.name)]);
256
+ }
257
+ }
258
+ }
259
+ catch { /* skip */ }
260
+ // Build BRS→XML parent mapping
261
+ for (const [xmlPath, xmlText] of xmlTextCache) {
262
+ const scriptPaths = (0, xmlParser_1.getScriptPathsFromXml)(xmlPath, xmlText, workspaceFolders, sourceDir, (p) => importResolver.cachedExists(p));
263
+ for (const scriptPath of scriptPaths) {
264
+ const normalizedScript = nodePath.normalize(scriptPath);
265
+ const parents = brsToXmlParents.get(normalizedScript) ?? [];
266
+ parents.push(xmlPath);
267
+ brsToXmlParents.set(normalizedScript, parents);
268
+ }
269
+ }
270
+ // Phase 4: Build per-file known functions (reuse shared logic)
271
+ return buildKnownFunctions({
272
+ importResolver, workspaceFolders, sourceDir, brsFiles,
273
+ fileContentsCache, fileFunctions, fileImports,
274
+ componentNameToXml, xmlTextCache, brsToXmlParents,
275
+ });
276
+ }
277
+ function buildProjectContext(projectRoot, config) {
278
+ const importResolver = new importParser_1.ImportResolver({
279
+ workspaceFolders: [projectRoot],
280
+ sourceDir: config.sourceDir,
281
+ resolveModules: config.resolveModules,
282
+ });
283
+ const workspaceFolders = [projectRoot];
284
+ const sourceDir = config.sourceDir;
285
+ // ── Phase 1: Scan all BRS and XML files (project + packages, single pass) ──
286
+ // Also read file contents during the walk to avoid re-reading later.
287
+ const brsFiles = [];
288
+ const allKnownPaths = []; // every file found during walk — pre-seeds existsSync cache
115
289
  const fileContentsCache = new Map();
116
- for (const file of brsFiles) {
290
+ const fileFunctions = new Map();
291
+ const fileImports = new Map();
292
+ const componentNameToXml = new Map();
293
+ const xmlTextCache = new Map();
294
+ const brsToXmlParents = new Map();
295
+ function walkAndIndex(dir, collectBrs) {
296
+ let entries;
117
297
  try {
118
- const text = fsWrapper_1.default.readFileSync(file, 'utf-8');
119
- const normalized = nodePath.normalize(file);
120
- fileContentsCache.set(normalized, text);
121
- fileFunctions.set(normalized, (0, functionIndex_1.parseFunctionDefs)(text, file).map(f => f.nameLower));
122
- fileImports.set(normalized, (0, importParser_1.parseImports)(text));
298
+ entries = fsWrapper_1.default.readdirTyped(dir);
299
+ }
300
+ catch {
301
+ return;
302
+ }
303
+ for (const entry of entries) {
304
+ const fullPath = nodePath.join(dir, entry.name);
305
+ if (entry.isDirectory) {
306
+ if (entry.name === 'node_modules' || entry.name === '.git')
307
+ continue;
308
+ walkAndIndex(fullPath, collectBrs);
309
+ }
310
+ else if (entry.name.endsWith('.brs')) {
311
+ allKnownPaths.push(fullPath);
312
+ if (collectBrs) {
313
+ brsFiles.push(fullPath);
314
+ // Read + parse BRS in the same pass
315
+ try {
316
+ const text = fsWrapper_1.default.readFileSync(fullPath, 'utf-8');
317
+ const normalized = nodePath.normalize(fullPath);
318
+ fileContentsCache.set(normalized, text);
319
+ fileFunctions.set(normalized, (0, functionIndex_1.parseFunctionDefs)(text, fullPath).map(f => f.nameLower));
320
+ fileImports.set(normalized, (0, importParser_1.parseImports)(text));
321
+ }
322
+ catch { /* skip */ }
323
+ }
324
+ }
325
+ else if (entry.name.endsWith('.xml')) {
326
+ allKnownPaths.push(fullPath);
327
+ try {
328
+ const text = fsWrapper_1.default.readFileSync(fullPath, 'utf-8');
329
+ const normalized = nodePath.normalize(fullPath);
330
+ xmlTextCache.set(normalized, text);
331
+ fileContentsCache.set(normalized, text);
332
+ const name = (0, xmlParser_1.parseXmlComponentName)(text);
333
+ if (name)
334
+ componentNameToXml.set(name.toLowerCase(), normalized);
335
+ }
336
+ catch { /* skip */ }
337
+ }
338
+ }
339
+ }
340
+ // Scan project source (collect BRS + XML, read + parse in one pass)
341
+ const sourceRoot = nodePath.join(projectRoot, sourceDir);
342
+ const walkRoot = fsWrapper_1.default.existsSync(sourceRoot) ? sourceRoot : projectRoot;
343
+ walkAndIndex(walkRoot, true);
344
+ // Scan Kopytko packages (XML + BRS for extends chain resolution)
345
+ // Also register all package directories to avoid existsSync in walk-up resolution
346
+ const nmDir = nodePath.join(projectRoot, 'node_modules');
347
+ try {
348
+ for (const entry of fsWrapper_1.default.readdirTyped(nmDir)) {
349
+ if (!entry.isDirectory)
350
+ continue;
351
+ if (entry.name.startsWith('@')) {
352
+ try {
353
+ for (const scoped of fsWrapper_1.default.readdirTyped(nodePath.join(nmDir, entry.name))) {
354
+ if (!scoped.isDirectory)
355
+ continue;
356
+ const pkgDir = nodePath.join(nmDir, entry.name, scoped.name);
357
+ allKnownPaths.push(pkgDir); // register package dir for walk-up resolution
358
+ const moduleDir = readKopytkoModuleDir(pkgDir);
359
+ if (moduleDir)
360
+ walkAndIndex(nodePath.join(pkgDir, moduleDir), false);
361
+ }
362
+ }
363
+ catch { /* skip */ }
364
+ }
365
+ else {
366
+ const pkgDir = nodePath.join(nmDir, entry.name);
367
+ allKnownPaths.push(pkgDir); // register package dir for walk-up resolution
368
+ const moduleDir = readKopytkoModuleDir(pkgDir);
369
+ if (moduleDir)
370
+ walkAndIndex(nodePath.join(pkgDir, moduleDir), false);
371
+ }
123
372
  }
124
- catch { /* skip */ }
125
373
  }
126
- // Helper: read a file, using cache when available
374
+ catch { /* no node_modules */ }
375
+ // Pre-seed the import resolver's existsSync cache with all discovered files
376
+ importResolver.registerKnownPaths(allKnownPaths);
377
+ // Build BRS→XML parent mapping
378
+ for (const [xmlPath, xmlText] of xmlTextCache) {
379
+ const scriptPaths = (0, xmlParser_1.getScriptPathsFromXml)(xmlPath, xmlText, workspaceFolders, sourceDir, (p) => importResolver.cachedExists(p));
380
+ for (const scriptPath of scriptPaths) {
381
+ const normalizedScript = nodePath.normalize(scriptPath);
382
+ const parents = brsToXmlParents.get(normalizedScript) ?? [];
383
+ parents.push(xmlPath);
384
+ brsToXmlParents.set(normalizedScript, parents);
385
+ }
386
+ }
387
+ return buildKnownFunctions({
388
+ importResolver, workspaceFolders, sourceDir, brsFiles,
389
+ fileContentsCache, fileFunctions, fileImports,
390
+ componentNameToXml, xmlTextCache, brsToXmlParents,
391
+ });
392
+ }
393
+ function buildKnownFunctions(params) {
394
+ const { importResolver, workspaceFolders, sourceDir, brsFiles, fileContentsCache, fileFunctions, fileImports, componentNameToXml, xmlTextCache, brsToXmlParents, } = params;
395
+ const config = { generatedPaths: [], generatedModules: [], siblingPatterns: [] };
396
+ const allFunctions = new Map();
127
397
  const readFileCached = (filePath) => {
128
398
  const normalized = nodePath.normalize(filePath);
129
399
  const cached = fileContentsCache.get(normalized);
@@ -138,7 +408,6 @@ function buildProjectContext(projectRoot, config) {
138
408
  return null;
139
409
  }
140
410
  };
141
- // Helper: get parsed functions for a file, using cache
142
411
  const getFunctions = (filePath) => {
143
412
  const normalized = nodePath.normalize(filePath);
144
413
  const cached = fileFunctions.get(normalized);
@@ -151,7 +420,6 @@ function buildProjectContext(projectRoot, config) {
151
420
  fileFunctions.set(normalized, fns);
152
421
  return fns;
153
422
  };
154
- // Helper: get parsed imports for a file, using cache
155
423
  const getImports = (filePath) => {
156
424
  const normalized = nodePath.normalize(filePath);
157
425
  const cached = fileImports.get(normalized);
@@ -164,7 +432,59 @@ function buildProjectContext(projectRoot, config) {
164
432
  fileImports.set(normalized, imports);
165
433
  return imports;
166
434
  };
167
- // For each file, compute its known function names from imports + siblings + self
435
+ // Collect functions from an XML component's extends chain (map-based, no filesystem traversal)
436
+ const extendsCache = new Map();
437
+ const collectFromExtendsChain = (componentNameLower) => {
438
+ const cached = extendsCache.get(componentNameLower);
439
+ if (cached)
440
+ return cached;
441
+ const fns = [];
442
+ const visitedComponents = new Set();
443
+ const walk = (nameLower) => {
444
+ if (visitedComponents.has(nameLower))
445
+ return;
446
+ visitedComponents.add(nameLower);
447
+ const xmlPath = componentNameToXml.get(nameLower);
448
+ if (!xmlPath)
449
+ return;
450
+ const xmlText = xmlTextCache.get(xmlPath) ?? readFileCached(xmlPath);
451
+ if (!xmlText)
452
+ return;
453
+ // Add functions from all BRS scripts listed in this XML
454
+ const scriptPaths = (0, xmlParser_1.getScriptPathsFromXml)(xmlPath, xmlText, workspaceFolders, sourceDir, (p) => importResolver.cachedExists(p));
455
+ for (const scriptPath of scriptPaths) {
456
+ for (const fn of getFunctions(scriptPath))
457
+ fns.push(fn);
458
+ // Follow the script's @import chain
459
+ const visited = new Set();
460
+ const followImports = (file) => {
461
+ for (const imp of getImports(file)) {
462
+ if (imp.isMock)
463
+ continue;
464
+ const resolved = importResolver.resolveImportPath(imp, file);
465
+ if (!resolved)
466
+ continue;
467
+ const norm = nodePath.normalize(resolved);
468
+ if (visited.has(norm))
469
+ continue;
470
+ visited.add(norm);
471
+ for (const fn of getFunctions(resolved))
472
+ fns.push(fn);
473
+ followImports(resolved);
474
+ }
475
+ };
476
+ followImports(scriptPath);
477
+ }
478
+ // Walk up the extends chain
479
+ const parentName = (0, xmlParser_1.parseXmlExtends)(xmlText);
480
+ if (parentName)
481
+ walk(parentName.toLowerCase());
482
+ };
483
+ walk(componentNameLower);
484
+ extendsCache.set(componentNameLower, fns);
485
+ return fns;
486
+ };
487
+ // ── Phase 4: Build per-file known function names ──
168
488
  for (const file of brsFiles) {
169
489
  const normalizedFile = nodePath.normalize(file);
170
490
  const known = new Set();
@@ -175,7 +495,7 @@ function buildProjectContext(projectRoot, config) {
175
495
  for (const fn of testGlobals_1.TEST_FRAMEWORK_GLOBALS)
176
496
  known.add(fn);
177
497
  }
178
- // Collect functions from imports (transitively)
498
+ // Collect functions from @import chain (transitively)
179
499
  const visited = new Set();
180
500
  const collectFromImports = (sourceFile, imps) => {
181
501
  for (const imp of imps) {
@@ -194,7 +514,34 @@ function buildProjectContext(projectRoot, config) {
194
514
  }
195
515
  };
196
516
  collectFromImports(file, getImports(file));
197
- // Add sibling functions (and their imports)
517
+ // Add XML sibling functions other BRS files in the same XML component
518
+ const parentXmls = brsToXmlParents.get(normalizedFile) ?? [];
519
+ for (const xmlPath of parentXmls) {
520
+ const xmlText = readFileCached(xmlPath);
521
+ if (!xmlText)
522
+ continue;
523
+ // Add all sibling BRS scripts from this XML
524
+ const scriptPaths = (0, xmlParser_1.getScriptPathsFromXml)(xmlPath, xmlText, workspaceFolders, sourceDir, (p) => importResolver.cachedExists(p));
525
+ for (const scriptPath of scriptPaths) {
526
+ const normalizedScript = nodePath.normalize(scriptPath);
527
+ if (normalizedScript === normalizedFile)
528
+ continue;
529
+ if (!visited.has(normalizedScript)) {
530
+ visited.add(normalizedScript);
531
+ for (const fn of getFunctions(scriptPath))
532
+ known.add(fn);
533
+ collectFromImports(scriptPath, getImports(scriptPath));
534
+ }
535
+ }
536
+ // Walk the extends chain and add inherited functions
537
+ const parentComponentName = (0, xmlParser_1.parseXmlExtends)(xmlText);
538
+ if (parentComponentName) {
539
+ for (const fn of collectFromExtendsChain(parentComponentName.toLowerCase())) {
540
+ known.add(fn);
541
+ }
542
+ }
543
+ }
544
+ // Add pattern sibling functions
198
545
  for (const siblingPath of (0, patternSiblings_1.findSiblingFiles)(file, config.siblingPatterns)) {
199
546
  const normalizedSibling = nodePath.normalize(siblingPath);
200
547
  if (!visited.has(normalizedSibling)) {
@@ -204,7 +551,7 @@ function buildProjectContext(projectRoot, config) {
204
551
  collectFromImports(siblingPath, getImports(siblingPath));
205
552
  }
206
553
  }
207
- // For test files, add tested file functions and test siblings
554
+ // For test files, add tested file scope
208
555
  if ((0, testUtils_1.isTestFile)(file)) {
209
556
  for (const testedPath of (0, testUtils_1.resolveTestedFiles)(file)) {
210
557
  const normalizedTested = nodePath.normalize(testedPath);
@@ -214,6 +561,19 @@ function buildProjectContext(projectRoot, config) {
214
561
  known.add(fn);
215
562
  collectFromImports(testedPath, getImports(testedPath));
216
563
  }
564
+ // Also add the tested file's XML extends chain
565
+ const testedXmls = brsToXmlParents.get(normalizedTested) ?? [];
566
+ for (const txmlPath of testedXmls) {
567
+ const txmlText = readFileCached(txmlPath);
568
+ if (!txmlText)
569
+ continue;
570
+ const parentName = (0, xmlParser_1.parseXmlExtends)(txmlText);
571
+ if (parentName) {
572
+ for (const fn of collectFromExtendsChain(parentName.toLowerCase())) {
573
+ known.add(fn);
574
+ }
575
+ }
576
+ }
217
577
  }
218
578
  for (const siblingTest of (0, testUtils_1.findTestSiblings)(file)) {
219
579
  const normalizedSibTest = nodePath.normalize(siblingTest);
@@ -276,35 +636,15 @@ function createFileContext(baseContext, filePath) {
276
636
  knownFuncNames: fileKnown,
277
637
  };
278
638
  }
279
- function collectBrsFiles(dir, sourceDir) {
280
- const sourceRoot = nodePath.join(dir, sourceDir);
281
- const files = [];
282
- function walk(currentDir) {
283
- let entries;
284
- try {
285
- entries = fsWrapper_1.default.readdirTyped(currentDir);
286
- }
287
- catch {
288
- return;
289
- }
290
- for (const entry of entries) {
291
- const fullPath = nodePath.join(currentDir, entry.name);
292
- if (entry.isDirectory) {
293
- if (entry.name === 'node_modules' || entry.name === '.git')
294
- continue;
295
- walk(fullPath);
296
- }
297
- else if (entry.name.endsWith('.brs')) {
298
- files.push(fullPath);
299
- }
300
- }
301
- }
302
- if (fsWrapper_1.default.existsSync(sourceRoot)) {
303
- walk(sourceRoot);
639
+ /** Read `kopytkoModuleDir` from a package's package.json. Returns null if not a Kopytko package. */
640
+ function readKopytkoModuleDir(pkgDir) {
641
+ try {
642
+ const content = fsWrapper_1.default.readFileSync(nodePath.join(pkgDir, 'package.json'), 'utf-8');
643
+ const pkg = JSON.parse(content);
644
+ return pkg.kopytkoModuleDir ?? null;
304
645
  }
305
- else {
306
- walk(dir);
646
+ catch {
647
+ return null;
307
648
  }
308
- return files;
309
649
  }
310
650
  //# sourceMappingURL=linter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kopytko-linter",
3
- "version": "0.1.4",
3
+ "version": "0.3.0",
4
4
  "description": "BrightScript linter for the Kopytko ecosystem. Use as a CLI tool or import as a library.",
5
5
  "license": "MIT",
6
6
  "author": "bchelkowski",