kopytko-linter 0.1.4 → 0.2.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.
- package/dist/src/analysis/importParser.d.ts +1 -1
- package/dist/src/analysis/importParser.d.ts.map +1 -1
- package/dist/src/analysis/importParser.js.map +1 -1
- package/dist/src/analysis/xmlParser.d.ts +42 -0
- package/dist/src/analysis/xmlParser.d.ts.map +1 -0
- package/dist/src/analysis/xmlParser.js +220 -0
- package/dist/src/analysis/xmlParser.js.map +1 -0
- package/dist/src/linter.d.ts +1 -1
- package/dist/src/linter.d.ts.map +1 -1
- package/dist/src/linter.js +193 -41
- package/dist/src/linter.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,7 +10,7 @@ export declare class ImportResolver {
|
|
|
10
10
|
private readonly existsCache;
|
|
11
11
|
private readonly resolveCache;
|
|
12
12
|
constructor(options: ImportResolverOptions);
|
|
13
|
-
|
|
13
|
+
cachedExists(filePath: string): boolean;
|
|
14
14
|
getWorkspaceFolders(): string[];
|
|
15
15
|
getSourceDir(): string;
|
|
16
16
|
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,
|
|
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,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUvC,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importParser.js","sourceRoot":"","sources":["../../../src/analysis/importParser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,oCAkBC;AAxBD,+CAAiC;AAEjC,4DAAoC;AAEpC,MAAM,cAAc,GAAG,wDAAwD,CAAC;AAEhF,SAAgB,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,OAAO,CAAC,IAAI,CAAC;YACX,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;YACb,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACpB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS;YACjC,IAAI,EAAE,CAAC,GAAG,CAAC;YACX,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAQD,MAAa,cAAc;IACR,OAAO,CAAwB;IAC/B,WAAW,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEtE,YAAY,OAA8B;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;
|
|
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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"}
|
package/dist/src/linter.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ 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).
|
package/dist/src/linter.d.ts.map
CHANGED
|
@@ -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;
|
|
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;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,CA2BZ;AAyVD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAQzF"}
|
package/dist/src/linter.js
CHANGED
|
@@ -46,14 +46,15 @@ const importParser_1 = require("./analysis/importParser");
|
|
|
46
46
|
const functionIndex_1 = require("./analysis/functionIndex");
|
|
47
47
|
const patternSiblings_1 = require("./analysis/patternSiblings");
|
|
48
48
|
const testUtils_1 = require("./analysis/testUtils");
|
|
49
|
+
const xmlParser_1 = require("./analysis/xmlParser");
|
|
49
50
|
const testGlobals_1 = require("./catalog/testGlobals");
|
|
50
51
|
const fsWrapper_1 = __importDefault(require("./analysis/fsWrapper"));
|
|
51
52
|
/**
|
|
52
53
|
* Lints a single file with a pre-built context.
|
|
53
54
|
* Used by the extension (library mode) and internally by lintProject.
|
|
54
55
|
*/
|
|
55
|
-
function lintFile(filePath, content, context, config) {
|
|
56
|
-
const lines = content.split(/\r?\n/);
|
|
56
|
+
function lintFile(filePath, content, context, config, preLines) {
|
|
57
|
+
const lines = preLines ?? content.split(/\r?\n/);
|
|
57
58
|
const imports = context.parseImports(content);
|
|
58
59
|
const ruleContext = {
|
|
59
60
|
filePath,
|
|
@@ -107,12 +108,82 @@ function buildProjectContext(projectRoot, config) {
|
|
|
107
108
|
sourceDir: config.sourceDir,
|
|
108
109
|
resolveModules: config.resolveModules,
|
|
109
110
|
});
|
|
110
|
-
|
|
111
|
-
const
|
|
112
|
-
|
|
111
|
+
const workspaceFolders = [projectRoot];
|
|
112
|
+
const sourceDir = config.sourceDir;
|
|
113
|
+
// ── Phase 1: Scan all BRS and XML files (project + packages, single pass) ──
|
|
114
|
+
const brsFiles = [];
|
|
115
|
+
const fileContentsCache = new Map();
|
|
113
116
|
const fileFunctions = new Map();
|
|
114
117
|
const fileImports = new Map();
|
|
115
|
-
const
|
|
118
|
+
const componentNameToXml = new Map(); // lowercase component name → xml path
|
|
119
|
+
const xmlTextCache = new Map(); // normalized xml path → content
|
|
120
|
+
const brsToXmlParents = new Map(); // normalized brs path → xml paths
|
|
121
|
+
// Walk a directory collecting BRS files and indexing XML component names
|
|
122
|
+
function walkAndIndex(dir, collectBrs) {
|
|
123
|
+
let entries;
|
|
124
|
+
try {
|
|
125
|
+
entries = fsWrapper_1.default.readdirTyped(dir);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
for (const entry of entries) {
|
|
131
|
+
const fullPath = nodePath.join(dir, entry.name);
|
|
132
|
+
if (entry.isDirectory) {
|
|
133
|
+
if (entry.name === 'node_modules' || entry.name === '.git')
|
|
134
|
+
continue;
|
|
135
|
+
walkAndIndex(fullPath, collectBrs);
|
|
136
|
+
}
|
|
137
|
+
else if (entry.name.endsWith('.brs') && collectBrs) {
|
|
138
|
+
brsFiles.push(fullPath);
|
|
139
|
+
}
|
|
140
|
+
else if (entry.name.endsWith('.xml')) {
|
|
141
|
+
try {
|
|
142
|
+
const text = fsWrapper_1.default.readFileSync(fullPath, 'utf-8');
|
|
143
|
+
const normalized = nodePath.normalize(fullPath);
|
|
144
|
+
xmlTextCache.set(normalized, text);
|
|
145
|
+
fileContentsCache.set(normalized, text);
|
|
146
|
+
const name = (0, xmlParser_1.parseXmlComponentName)(text);
|
|
147
|
+
if (name)
|
|
148
|
+
componentNameToXml.set(name.toLowerCase(), normalized);
|
|
149
|
+
}
|
|
150
|
+
catch { /* skip */ }
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// Scan project source (collect BRS + XML)
|
|
155
|
+
const sourceRoot = nodePath.join(projectRoot, sourceDir);
|
|
156
|
+
const walkRoot = fsWrapper_1.default.existsSync(sourceRoot) ? sourceRoot : projectRoot;
|
|
157
|
+
walkAndIndex(walkRoot, true);
|
|
158
|
+
// Scan Kopytko packages (XML only — for extends chain resolution)
|
|
159
|
+
const nmDir = nodePath.join(projectRoot, 'node_modules');
|
|
160
|
+
try {
|
|
161
|
+
for (const entry of fsWrapper_1.default.readdirTyped(nmDir)) {
|
|
162
|
+
if (!entry.isDirectory)
|
|
163
|
+
continue;
|
|
164
|
+
if (entry.name.startsWith('@')) {
|
|
165
|
+
try {
|
|
166
|
+
for (const scoped of fsWrapper_1.default.readdirTyped(nodePath.join(nmDir, entry.name))) {
|
|
167
|
+
if (!scoped.isDirectory)
|
|
168
|
+
continue;
|
|
169
|
+
const pkgDir = nodePath.join(nmDir, entry.name, scoped.name);
|
|
170
|
+
const moduleDir = readKopytkoModuleDir(pkgDir);
|
|
171
|
+
if (moduleDir)
|
|
172
|
+
walkAndIndex(nodePath.join(pkgDir, moduleDir), false);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch { /* skip */ }
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const pkgDir = nodePath.join(nmDir, entry.name);
|
|
179
|
+
const moduleDir = readKopytkoModuleDir(pkgDir);
|
|
180
|
+
if (moduleDir)
|
|
181
|
+
walkAndIndex(nodePath.join(pkgDir, moduleDir), false);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch { /* no node_modules */ }
|
|
186
|
+
// ── Phase 2: Parse all BRS files ──
|
|
116
187
|
for (const file of brsFiles) {
|
|
117
188
|
try {
|
|
118
189
|
const text = fsWrapper_1.default.readFileSync(file, 'utf-8');
|
|
@@ -123,7 +194,18 @@ function buildProjectContext(projectRoot, config) {
|
|
|
123
194
|
}
|
|
124
195
|
catch { /* skip */ }
|
|
125
196
|
}
|
|
126
|
-
//
|
|
197
|
+
// Build BRS→XML parent mapping from indexed XML files
|
|
198
|
+
for (const [xmlPath, xmlText] of xmlTextCache) {
|
|
199
|
+
const scriptPaths = (0, xmlParser_1.getScriptPathsFromXml)(xmlPath, xmlText, workspaceFolders, sourceDir, (p) => importResolver.cachedExists(p));
|
|
200
|
+
for (const scriptPath of scriptPaths) {
|
|
201
|
+
const normalizedScript = nodePath.normalize(scriptPath);
|
|
202
|
+
const parents = brsToXmlParents.get(normalizedScript) ?? [];
|
|
203
|
+
parents.push(xmlPath);
|
|
204
|
+
brsToXmlParents.set(normalizedScript, parents);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// ── Phase 3: Cached helpers ──
|
|
208
|
+
const allFunctions = new Map();
|
|
127
209
|
const readFileCached = (filePath) => {
|
|
128
210
|
const normalized = nodePath.normalize(filePath);
|
|
129
211
|
const cached = fileContentsCache.get(normalized);
|
|
@@ -138,7 +220,6 @@ function buildProjectContext(projectRoot, config) {
|
|
|
138
220
|
return null;
|
|
139
221
|
}
|
|
140
222
|
};
|
|
141
|
-
// Helper: get parsed functions for a file, using cache
|
|
142
223
|
const getFunctions = (filePath) => {
|
|
143
224
|
const normalized = nodePath.normalize(filePath);
|
|
144
225
|
const cached = fileFunctions.get(normalized);
|
|
@@ -151,7 +232,6 @@ function buildProjectContext(projectRoot, config) {
|
|
|
151
232
|
fileFunctions.set(normalized, fns);
|
|
152
233
|
return fns;
|
|
153
234
|
};
|
|
154
|
-
// Helper: get parsed imports for a file, using cache
|
|
155
235
|
const getImports = (filePath) => {
|
|
156
236
|
const normalized = nodePath.normalize(filePath);
|
|
157
237
|
const cached = fileImports.get(normalized);
|
|
@@ -164,7 +244,59 @@ function buildProjectContext(projectRoot, config) {
|
|
|
164
244
|
fileImports.set(normalized, imports);
|
|
165
245
|
return imports;
|
|
166
246
|
};
|
|
167
|
-
//
|
|
247
|
+
// Collect functions from an XML component's extends chain (map-based, no filesystem traversal)
|
|
248
|
+
const extendsCache = new Map();
|
|
249
|
+
const collectFromExtendsChain = (componentNameLower) => {
|
|
250
|
+
const cached = extendsCache.get(componentNameLower);
|
|
251
|
+
if (cached)
|
|
252
|
+
return cached;
|
|
253
|
+
const fns = [];
|
|
254
|
+
const visitedComponents = new Set();
|
|
255
|
+
const walk = (nameLower) => {
|
|
256
|
+
if (visitedComponents.has(nameLower))
|
|
257
|
+
return;
|
|
258
|
+
visitedComponents.add(nameLower);
|
|
259
|
+
const xmlPath = componentNameToXml.get(nameLower);
|
|
260
|
+
if (!xmlPath)
|
|
261
|
+
return;
|
|
262
|
+
const xmlText = xmlTextCache.get(xmlPath) ?? readFileCached(xmlPath);
|
|
263
|
+
if (!xmlText)
|
|
264
|
+
return;
|
|
265
|
+
// Add functions from all BRS scripts listed in this XML
|
|
266
|
+
const scriptPaths = (0, xmlParser_1.getScriptPathsFromXml)(xmlPath, xmlText, workspaceFolders, sourceDir, (p) => importResolver.cachedExists(p));
|
|
267
|
+
for (const scriptPath of scriptPaths) {
|
|
268
|
+
for (const fn of getFunctions(scriptPath))
|
|
269
|
+
fns.push(fn);
|
|
270
|
+
// Follow the script's @import chain
|
|
271
|
+
const visited = new Set();
|
|
272
|
+
const followImports = (file) => {
|
|
273
|
+
for (const imp of getImports(file)) {
|
|
274
|
+
if (imp.isMock)
|
|
275
|
+
continue;
|
|
276
|
+
const resolved = importResolver.resolveImportPath(imp, file);
|
|
277
|
+
if (!resolved)
|
|
278
|
+
continue;
|
|
279
|
+
const norm = nodePath.normalize(resolved);
|
|
280
|
+
if (visited.has(norm))
|
|
281
|
+
continue;
|
|
282
|
+
visited.add(norm);
|
|
283
|
+
for (const fn of getFunctions(resolved))
|
|
284
|
+
fns.push(fn);
|
|
285
|
+
followImports(resolved);
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
followImports(scriptPath);
|
|
289
|
+
}
|
|
290
|
+
// Walk up the extends chain
|
|
291
|
+
const parentName = (0, xmlParser_1.parseXmlExtends)(xmlText);
|
|
292
|
+
if (parentName)
|
|
293
|
+
walk(parentName.toLowerCase());
|
|
294
|
+
};
|
|
295
|
+
walk(componentNameLower);
|
|
296
|
+
extendsCache.set(componentNameLower, fns);
|
|
297
|
+
return fns;
|
|
298
|
+
};
|
|
299
|
+
// ── Phase 4: Build per-file known function names ──
|
|
168
300
|
for (const file of brsFiles) {
|
|
169
301
|
const normalizedFile = nodePath.normalize(file);
|
|
170
302
|
const known = new Set();
|
|
@@ -175,7 +307,7 @@ function buildProjectContext(projectRoot, config) {
|
|
|
175
307
|
for (const fn of testGlobals_1.TEST_FRAMEWORK_GLOBALS)
|
|
176
308
|
known.add(fn);
|
|
177
309
|
}
|
|
178
|
-
// Collect functions from
|
|
310
|
+
// Collect functions from @import chain (transitively)
|
|
179
311
|
const visited = new Set();
|
|
180
312
|
const collectFromImports = (sourceFile, imps) => {
|
|
181
313
|
for (const imp of imps) {
|
|
@@ -194,7 +326,34 @@ function buildProjectContext(projectRoot, config) {
|
|
|
194
326
|
}
|
|
195
327
|
};
|
|
196
328
|
collectFromImports(file, getImports(file));
|
|
197
|
-
// Add sibling functions
|
|
329
|
+
// Add XML sibling functions — other BRS files in the same XML component
|
|
330
|
+
const parentXmls = brsToXmlParents.get(normalizedFile) ?? [];
|
|
331
|
+
for (const xmlPath of parentXmls) {
|
|
332
|
+
const xmlText = readFileCached(xmlPath);
|
|
333
|
+
if (!xmlText)
|
|
334
|
+
continue;
|
|
335
|
+
// Add all sibling BRS scripts from this XML
|
|
336
|
+
const scriptPaths = (0, xmlParser_1.getScriptPathsFromXml)(xmlPath, xmlText, workspaceFolders, sourceDir, (p) => importResolver.cachedExists(p));
|
|
337
|
+
for (const scriptPath of scriptPaths) {
|
|
338
|
+
const normalizedScript = nodePath.normalize(scriptPath);
|
|
339
|
+
if (normalizedScript === normalizedFile)
|
|
340
|
+
continue;
|
|
341
|
+
if (!visited.has(normalizedScript)) {
|
|
342
|
+
visited.add(normalizedScript);
|
|
343
|
+
for (const fn of getFunctions(scriptPath))
|
|
344
|
+
known.add(fn);
|
|
345
|
+
collectFromImports(scriptPath, getImports(scriptPath));
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
// Walk the extends chain and add inherited functions
|
|
349
|
+
const parentComponentName = (0, xmlParser_1.parseXmlExtends)(xmlText);
|
|
350
|
+
if (parentComponentName) {
|
|
351
|
+
for (const fn of collectFromExtendsChain(parentComponentName.toLowerCase())) {
|
|
352
|
+
known.add(fn);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
// Add pattern sibling functions
|
|
198
357
|
for (const siblingPath of (0, patternSiblings_1.findSiblingFiles)(file, config.siblingPatterns)) {
|
|
199
358
|
const normalizedSibling = nodePath.normalize(siblingPath);
|
|
200
359
|
if (!visited.has(normalizedSibling)) {
|
|
@@ -204,7 +363,7 @@ function buildProjectContext(projectRoot, config) {
|
|
|
204
363
|
collectFromImports(siblingPath, getImports(siblingPath));
|
|
205
364
|
}
|
|
206
365
|
}
|
|
207
|
-
// For test files, add tested file
|
|
366
|
+
// For test files, add tested file scope
|
|
208
367
|
if ((0, testUtils_1.isTestFile)(file)) {
|
|
209
368
|
for (const testedPath of (0, testUtils_1.resolveTestedFiles)(file)) {
|
|
210
369
|
const normalizedTested = nodePath.normalize(testedPath);
|
|
@@ -214,6 +373,19 @@ function buildProjectContext(projectRoot, config) {
|
|
|
214
373
|
known.add(fn);
|
|
215
374
|
collectFromImports(testedPath, getImports(testedPath));
|
|
216
375
|
}
|
|
376
|
+
// Also add the tested file's XML extends chain
|
|
377
|
+
const testedXmls = brsToXmlParents.get(normalizedTested) ?? [];
|
|
378
|
+
for (const txmlPath of testedXmls) {
|
|
379
|
+
const txmlText = readFileCached(txmlPath);
|
|
380
|
+
if (!txmlText)
|
|
381
|
+
continue;
|
|
382
|
+
const parentName = (0, xmlParser_1.parseXmlExtends)(txmlText);
|
|
383
|
+
if (parentName) {
|
|
384
|
+
for (const fn of collectFromExtendsChain(parentName.toLowerCase())) {
|
|
385
|
+
known.add(fn);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
217
389
|
}
|
|
218
390
|
for (const siblingTest of (0, testUtils_1.findTestSiblings)(file)) {
|
|
219
391
|
const normalizedSibTest = nodePath.normalize(siblingTest);
|
|
@@ -276,35 +448,15 @@ function createFileContext(baseContext, filePath) {
|
|
|
276
448
|
knownFuncNames: fileKnown,
|
|
277
449
|
};
|
|
278
450
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
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);
|
|
451
|
+
/** Read `kopytkoModuleDir` from a package's package.json. Returns null if not a Kopytko package. */
|
|
452
|
+
function readKopytkoModuleDir(pkgDir) {
|
|
453
|
+
try {
|
|
454
|
+
const content = fsWrapper_1.default.readFileSync(nodePath.join(pkgDir, 'package.json'), 'utf-8');
|
|
455
|
+
const pkg = JSON.parse(content);
|
|
456
|
+
return pkg.kopytkoModuleDir ?? null;
|
|
304
457
|
}
|
|
305
|
-
|
|
306
|
-
|
|
458
|
+
catch {
|
|
459
|
+
return null;
|
|
307
460
|
}
|
|
308
|
-
return files;
|
|
309
461
|
}
|
|
310
462
|
//# sourceMappingURL=linter.js.map
|
package/dist/src/linter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,4BA4BC;AAMD,kCA8BC;AAuLD,8CAQC;AAhRD,+CAAiC;AAIjC,qCAAyC;AACzC,yCAAgD;AAChD,0DAAuE;AACvE,4DAA6D;AAC7D,gEAA8D;AAC9D,oDAAwF;AACxF,uDAA+D;AAC/D,qEAA6C;AAE7C;;;GAGG;AACH,SAAgB,QAAQ,CACtB,QAAgB,EAChB,OAAe,EACf,OAAoB,EACpB,MAAoB;IAEpB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAgB;QAC/B,QAAQ;QACR,KAAK;QACL,OAAO;QACP,MAAM,EAAE,MAAM,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO;KACrB,CAAC;IAEF,MAAM,WAAW,GAAqB,EAAE,CAAC;IAEzC,KAAK,MAAM,SAAS,IAAI,uBAAe,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CACzB,WAAmB,EACnB,cAAsC;IAEtC,MAAM,MAAM,GAAG;QACb,GAAG,IAAA,sBAAa,EAAC,WAAW,CAAC;QAC7B,GAAG,cAAc;KAClB,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAE1F,MAAM,cAAc,GAAqB,EAAE,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACjE,cAAc,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;QACL,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE,QAAQ,CAAC,MAAM;QAC1B,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM;QACrE,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;QACzE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;QACnE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;KACpE,CAAC;AACJ,CAAC;AAQD,SAAS,mBAAmB,CAAC,WAAmB,EAAE,MAAoB;IACpE,MAAM,cAAc,GAAG,IAAI,6BAAc,CAAC;QACxC,gBAAgB,EAAE,CAAC,WAAW,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC,CAAC;IAEH,mEAAmE;IACnE,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IACpD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;IAClD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IACvD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEpD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,mBAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5C,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,IAAA,iCAAiB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACnF,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAA,2BAAY,EAAC,IAAI,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED,kDAAkD;IAClD,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAiB,EAAE;QACzD,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,mBAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACvD,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,uDAAuD;IACvD,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAY,EAAE;QAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,IAAA,iCAAiB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpE,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,qDAAqD;IACrD,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAmB,EAAE;QACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,IAAA,2BAAY,EAAC,IAAI,CAAC,CAAC;QACnC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,iFAAiF;IACjF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE1E,4CAA4C;QAC5C,IAAI,IAAA,sBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;YACrB,KAAK,MAAM,EAAE,IAAI,oCAAsB;gBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,gDAAgD;QAChD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,kBAAkB,GAAG,CAAC,UAAkB,EAAE,IAAqB,EAAQ,EAAE;YAC7E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,MAAM;oBAAE,SAAS;gBACzB,MAAM,QAAQ,GAAG,cAAc,CAAC,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBACnE,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBACxB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACxD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;oBAAE,SAAS;gBAC9C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAEhC,KAAK,MAAM,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC;oBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvD,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC;QACF,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3C,4CAA4C;QAC5C,KAAK,MAAM,WAAW,IAAI,IAAA,kCAAgB,EAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YACzE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,KAAK,MAAM,EAAE,IAAI,YAAY,CAAC,WAAW,CAAC;oBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1D,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,IAAI,IAAA,sBAAU,EAAC,IAAI,CAAC,EAAE,CAAC;YACrB,KAAK,MAAM,UAAU,IAAI,IAAA,8BAAkB,EAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACnC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;oBAC9B,KAAK,MAAM,EAAE,IAAI,YAAY,CAAC,UAAU,CAAC;wBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACzD,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YACD,KAAK,MAAM,WAAW,IAAI,IAAA,4BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACpC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;oBAC/B,KAAK,MAAM,EAAE,IAAI,YAAY,CAAC,WAAW,CAAC;wBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC1D,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;QAED,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,OAAO,GAAgB;QAC3B,IAAI,cAAc,KAAK,OAAO,IAAI,GAAG,EAAU,CAAC,CAAC,CAAC;QAElD,YAAY,CAAC,IAAY;YACvB,OAAO,IAAA,2BAAY,EAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,iBAAiB,CAAC,UAAkB,EAAE,YAAoB,EAAE,UAAmB;YAC7E,MAAM,GAAG,GAAkB,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACxE,OAAO,cAAc,CAAC,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC;QACrE,CAAC;QAED,YAAY,CAAC,UAAkB,EAAE,YAAoB,EAAE,UAAmB;YACxE,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;QAC/E,CAAC;QAED,QAAQ,CAAC,QAAgB;YACvB,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,sBAAsB,CAAC,QAAgB;YACrC,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,eAAe,CAAC,QAAgB;YAC9B,OAAO,IAAA,kCAAgB,EAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC5D,CAAC;QAED,eAAe,CAAC,QAAgB;YAC9B,OAAO,IAAA,4BAAgB,EAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,UAAU,CAAC,QAAgB;YACzB,OAAO,IAAA,sBAAU,EAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,CAAgB;QAC/E,QAAQ;QACR,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,WAAwB,EAAE,QAAgB;IAC1E,MAAM,oBAAoB,GAAG,WAAyE,CAAC;IACvG,MAAM,SAAS,GAAG,oBAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;IAE7G,OAAO;QACL,GAAG,WAAW;QACd,cAAc,EAAE,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,SAAiB;IACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS,IAAI,CAAC,UAAkB;QAC9B,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,mBAAS,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;oBAAE,SAAS;gBACrE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,mBAAS,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"linter.js","sourceRoot":"","sources":["../../src/linter.ts"],"names":[],"mappings":"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"}
|