@iris-code/core 0.1.2 → 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.
Files changed (49) hide show
  1. package/dist/config.d.ts +1 -1
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +4 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/fileNaming.d.ts +1 -0
  6. package/dist/fileNaming.d.ts.map +1 -1
  7. package/dist/fileNaming.js +29 -0
  8. package/dist/fileNaming.js.map +1 -1
  9. package/dist/guards.d.ts.map +1 -1
  10. package/dist/guards.js +44 -2
  11. package/dist/guards.js.map +1 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +45 -9
  14. package/dist/index.js.map +1 -1
  15. package/dist/java/analyser.d.ts +4 -0
  16. package/dist/java/analyser.d.ts.map +1 -0
  17. package/dist/java/analyser.js +394 -0
  18. package/dist/java/analyser.js.map +1 -0
  19. package/dist/java/lexer.d.ts +46 -0
  20. package/dist/java/lexer.d.ts.map +1 -0
  21. package/dist/java/lexer.js +198 -0
  22. package/dist/java/lexer.js.map +1 -0
  23. package/dist/languages.d.ts +2 -10
  24. package/dist/languages.d.ts.map +1 -1
  25. package/dist/languages.js +18 -35
  26. package/dist/languages.js.map +1 -1
  27. package/dist/registry.d.ts +39 -0
  28. package/dist/registry.d.ts.map +1 -0
  29. package/dist/registry.js +74 -0
  30. package/dist/registry.js.map +1 -0
  31. package/dist/rust/analyser.d.ts +26 -0
  32. package/dist/rust/analyser.d.ts.map +1 -0
  33. package/dist/rust/analyser.js +506 -0
  34. package/dist/rust/analyser.js.map +1 -0
  35. package/dist/rust/lexer.d.ts +39 -0
  36. package/dist/rust/lexer.d.ts.map +1 -0
  37. package/dist/rust/lexer.js +192 -0
  38. package/dist/rust/lexer.js.map +1 -0
  39. package/dist/secrets.d.ts.map +1 -1
  40. package/dist/secrets.js +357 -1
  41. package/dist/secrets.js.map +1 -1
  42. package/dist/sfc.d.ts.map +1 -1
  43. package/dist/sfc.js +4 -18
  44. package/dist/sfc.js.map +1 -1
  45. package/dist/types.d.ts +4 -4
  46. package/dist/types.d.ts.map +1 -1
  47. package/dist/types.js +6 -0
  48. package/dist/types.js.map +1 -1
  49. package/package.json +2 -2
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ /**
3
+ * The Java lexical layer, in its own module because TWO callers need it: the
4
+ * Java analyser (every structural rule) and `detectParseErrorReason` in
5
+ * guards.ts (the delimiter balance check that decides whether a file is
6
+ * analysed at all).
7
+ *
8
+ * That second caller is why this exists before any rule. C# shipped a defect
9
+ * where the everyday verbatim string `@"C:\logs\"` read as unterminated, every
10
+ * brace after it landed at the wrong depth, and the file came back a parse
11
+ * error with every finding zeroed - and a zeroed file is indistinguishable from
12
+ * a clean one. Java has two constructs with that same shape.
13
+ *
14
+ * Both modes are LENGTH- and LINE-PRESERVING, so a finding's offset still maps
15
+ * to its native line with no remapping layer that could drift.
16
+ *
17
+ * Handled: line and block comments (NOT nested - Java, unlike Rust, does not
18
+ * allow that), text blocks, regular strings, char literals, and unicode escapes.
19
+ *
20
+ * THE UNICODE ESCAPE IS THE JAVA-SPECIFIC TRAP. javac translates `\uXXXX`
21
+ * BEFORE tokenising, so `\u0022` is a real double quote everywhere in the file -
22
+ * including inside what looks like a comment. `// text \u000A code()` is a
23
+ * comment followed by live code, because the escape decodes to a line
24
+ * terminator. Nothing in the other eight languages behaves this way.
25
+ *
26
+ * NOT handled here, deliberately: generics. `Map<String, List<Integer>>` needs
27
+ * care in the analyser's signature patterns, but angle brackets are not counted
28
+ * by the delimiter balance check and do not open or close a literal, so they are
29
+ * not a lexical concern.
30
+ */
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.decodeJavaUnicodeEscapes = decodeJavaUnicodeEscapes;
33
+ exports.transformJava = transformJava;
34
+ exports.stripJavaComments = stripJavaComments;
35
+ exports.javaCodeOnly = javaCodeOnly;
36
+ /** A `\` starts a unicode escape only when preceded by an EVEN number of backslashes (JLS 3.3). */
37
+ function isRealEscapeStart(source, index) {
38
+ let backslashes = 0;
39
+ let i = index - 1;
40
+ while (i >= 0 && source[i] === '\\') {
41
+ backslashes++;
42
+ i--;
43
+ }
44
+ return backslashes % 2 === 0;
45
+ }
46
+ /**
47
+ * Decodes `\uXXXX` the way javac does, before anything else runs.
48
+ *
49
+ * Length and line count are preserved rather than truly decoded: the escape is
50
+ * six or more characters and its value is one, so the value is emitted followed
51
+ * by padding spaces. An escape that decodes to a line terminator is blanked
52
+ * entirely instead - honouring it would ADD a line and break the guarantee that
53
+ * findings report native line numbers, which is worth more than being exactly
54
+ * right about a construct that appears almost exclusively in puzzles.
55
+ */
56
+ function decodeJavaUnicodeEscapes(source) {
57
+ if (!source.includes('\\u'))
58
+ return source;
59
+ const result = [];
60
+ let i = 0;
61
+ while (i < source.length) {
62
+ if (source[i] === '\\' && source[i + 1] === 'u' && isRealEscapeStart(source, i)) {
63
+ // JLS allows several `u` characters in a row: \uuu0022 is legal.
64
+ let j = i + 1;
65
+ while (source[j] === 'u')
66
+ j++;
67
+ const hex = source.slice(j, j + 4);
68
+ if (/^[0-9a-fA-F]{4}$/.test(hex)) {
69
+ const total = j + 4 - i;
70
+ const code = parseInt(hex, 16);
71
+ const decoded = String.fromCharCode(code);
72
+ const isLineTerminator = decoded === '\n' || decoded === '\r';
73
+ result.push(isLineTerminator ? ' '.repeat(total) : decoded + ' '.repeat(total - 1));
74
+ i = j + 4;
75
+ continue;
76
+ }
77
+ }
78
+ result.push(source[i]);
79
+ i++;
80
+ }
81
+ return result.join('');
82
+ }
83
+ function transformJava(source, blankStrings) {
84
+ const input = decodeJavaUnicodeEscapes(source);
85
+ const result = [];
86
+ let i = 0;
87
+ const blank = (ch) => (ch === '\n' || ch === '\r' ? ch : ' ');
88
+ const emit = (ch) => { result.push(blankStrings ? blank(ch) : ch); };
89
+ while (i < input.length) {
90
+ const ch = input[i];
91
+ if (ch === '/' && input[i + 1] === '/') {
92
+ while (i < input.length && input[i] !== '\n') {
93
+ result.push(blank(input[i]));
94
+ i++;
95
+ }
96
+ continue;
97
+ }
98
+ if (ch === '/' && input[i + 1] === '*') {
99
+ result.push(' ');
100
+ i += 2;
101
+ while (i < input.length) {
102
+ if (input[i] === '*' && input[i + 1] === '/') {
103
+ result.push(' ');
104
+ i += 2;
105
+ break;
106
+ }
107
+ result.push(blank(input[i]));
108
+ i++;
109
+ }
110
+ continue;
111
+ }
112
+ // Text block (Java 15+). Same trap as C# raw strings: scanned naively the
113
+ // opening `"""` closes on its own first two quotes and every brace inside
114
+ // the block is counted as code.
115
+ if (ch === '"' && input[i + 1] === '"' && input[i + 2] === '"') {
116
+ result.push(blankStrings ? ' ' : '"""');
117
+ i += 3;
118
+ while (i < input.length) {
119
+ if (input[i] === '"' && input[i + 1] === '"' && input[i + 2] === '"' &&
120
+ input[i - 1] !== '\\') {
121
+ result.push(blankStrings ? ' ' : '"""');
122
+ i += 3;
123
+ break;
124
+ }
125
+ // A backslash escape inside a text block still hides the next character.
126
+ if (input[i] === '\\' && i + 1 < input.length) {
127
+ emit(input[i]);
128
+ emit(input[i + 1]);
129
+ i += 2;
130
+ continue;
131
+ }
132
+ emit(input[i]);
133
+ i++;
134
+ }
135
+ continue;
136
+ }
137
+ if (ch === '"') {
138
+ emit(ch);
139
+ i++;
140
+ while (i < input.length) {
141
+ const current = input[i];
142
+ // An unterminated string ends at the line break rather than running on
143
+ // and swallowing the rest of the file.
144
+ if (current === '\n')
145
+ break;
146
+ if (current === '\\') {
147
+ emit(current);
148
+ i++;
149
+ if (i < input.length) {
150
+ emit(input[i]);
151
+ i++;
152
+ }
153
+ continue;
154
+ }
155
+ emit(current);
156
+ i++;
157
+ if (current === '"')
158
+ break;
159
+ }
160
+ continue;
161
+ }
162
+ if (ch === "'") {
163
+ emit(ch);
164
+ i++;
165
+ while (i < input.length) {
166
+ const current = input[i];
167
+ if (current === '\n')
168
+ break;
169
+ if (current === '\\') {
170
+ emit(current);
171
+ i++;
172
+ if (i < input.length) {
173
+ emit(input[i]);
174
+ i++;
175
+ }
176
+ continue;
177
+ }
178
+ emit(current);
179
+ i++;
180
+ if (current === "'")
181
+ break;
182
+ }
183
+ continue;
184
+ }
185
+ result.push(ch);
186
+ i++;
187
+ }
188
+ return result.join('');
189
+ }
190
+ /** Comments blanked, string contents intact. */
191
+ function stripJavaComments(source) {
192
+ return transformJava(source, false);
193
+ }
194
+ /** Comments AND string contents blanked: the input for anything structural. */
195
+ function javaCodeOnly(source) {
196
+ return transformJava(source, true);
197
+ }
198
+ //# sourceMappingURL=lexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.js","sourceRoot":"","sources":["../../src/java/lexer.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,10 @@
1
1
  import type { FileNamingPolicy, HealthScoreWeights, IrisConfig } from './config';
2
2
  import type { Language } from './types';
3
- export interface LanguageRegistryEntry {
4
- key: Language;
5
- label: string;
6
- extensions: string[];
7
- fileNames?: string[];
8
- }
9
- export declare const RUBY_SPECIAL_FILENAMES: readonly ["appfile", "berksfile", "brewfile", "capfile", "dangerfile", "deliverfile", "fastfile", "gemfile", "guardfile", "gymfile", "matchfile", "podfile", "pluginfile", "puppetfile", "rakefile", "scanfile", "snapfile", "thorfile", "vagrantfile", ".irbrc", ".pryrc"];
10
- export declare const LANGUAGE_REGISTRY: readonly LanguageRegistryEntry[];
11
- export declare const SFC_EXTENSIONS: readonly [".vue", ".svelte"];
3
+ export { LANGUAGE_REGISTRY, RUBY_SPECIAL_FILENAMES, SFC_EXTENSIONS, fileExtension, languageForRegularFile, } from './registry';
4
+ export type { LanguageRegistryEntry } from './registry';
12
5
  export declare const ANALYSABLE_EXTENSIONS: readonly [...string[], ".vue", ".svelte"];
13
6
  export declare const ANALYSABLE_FILENAMES: string[];
14
7
  export declare const ANALYSABLE_EXTS: ReadonlySet<string>;
15
- export declare function fileExtension(filePath: string): string;
16
8
  export declare function isAnalysableFile(filePath: string): boolean;
17
9
  export declare const LANGUAGE_KEYS: readonly Language[];
18
10
  export declare function isLanguageKey(value: string): value is Language;
@@ -1 +1 @@
1
- {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAClG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAKvC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,sBAAsB,GACvB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAIvD,eAAO,MAAM,qBAAqB,2CAGxB,CAAA;AACV,eAAO,MAAM,oBAAoB,UAA4D,CAAA;AAC7F,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAAkC,CAAA;AAGlF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,QAAQ,EAA8C,CAAA;AAE3F,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAE9D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAEnD;AAKD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAU9E;AAOD,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC,CAAA;IACzE,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAEzE,eAAO,MAAM,6BAA6B,oMAShC,CAAA;AAEV,eAAO,MAAM,6BAA6B,oEAAqE,CAAA;AAE/G,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAGnD,CAAA;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,eAAe,GAAG,SAAS,EACtC,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB,GAAG,SAAS,CAK9B;AAOD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAqBpG;AAmBD,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAKD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,eAAe,GAAG,SAAS,EACtC,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB,GAAG,SAAS,CAO9B"}
package/dist/languages.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LANGUAGE_OVERRIDE_KEYS = exports.LANGUAGE_OVERRIDE_OBJECT_KEYS = exports.LANGUAGE_OVERRIDE_NUMBER_KEYS = exports.LANGUAGE_KEYS = exports.ANALYSABLE_EXTS = exports.ANALYSABLE_FILENAMES = exports.ANALYSABLE_EXTENSIONS = exports.SFC_EXTENSIONS = exports.LANGUAGE_REGISTRY = exports.RUBY_SPECIAL_FILENAMES = void 0;
4
- exports.fileExtension = fileExtension;
3
+ exports.LANGUAGE_OVERRIDE_KEYS = exports.LANGUAGE_OVERRIDE_OBJECT_KEYS = exports.LANGUAGE_OVERRIDE_NUMBER_KEYS = exports.LANGUAGE_KEYS = exports.ANALYSABLE_EXTS = exports.ANALYSABLE_FILENAMES = exports.ANALYSABLE_EXTENSIONS = exports.languageForRegularFile = exports.fileExtension = exports.SFC_EXTENSIONS = exports.RUBY_SPECIAL_FILENAMES = exports.LANGUAGE_REGISTRY = void 0;
5
4
  exports.isAnalysableFile = isAnalysableFile;
6
5
  exports.isLanguageKey = isLanguageKey;
7
6
  exports.languageLabel = languageLabel;
@@ -11,51 +10,35 @@ exports.resolveLanguageOverride = resolveLanguageOverride;
11
10
  exports.resolveConfigForFile = resolveConfigForFile;
12
11
  exports.resolveLanguageGateCaps = resolveLanguageGateCaps;
13
12
  const sfc_1 = require("./sfc");
14
- exports.RUBY_SPECIAL_FILENAMES = [
15
- 'appfile', 'berksfile', 'brewfile', 'capfile', 'dangerfile', 'deliverfile',
16
- 'fastfile', 'gemfile', 'guardfile', 'gymfile', 'matchfile', 'podfile',
17
- 'pluginfile', 'puppetfile', 'rakefile', 'scanfile', 'snapfile', 'thorfile',
18
- 'vagrantfile', '.irbrc', '.pryrc',
19
- ];
20
- exports.LANGUAGE_REGISTRY = [
21
- { key: 'typescript', label: 'TypeScript', extensions: ['.ts', '.tsx', '.mts', '.cts'] },
22
- { key: 'javascript', label: 'JavaScript', extensions: ['.js', '.jsx', '.mjs', '.cjs'] },
23
- { key: 'go', label: 'Go', extensions: ['.go'] },
24
- { key: 'python', label: 'Python', extensions: ['.py', '.pyw'] },
25
- {
26
- key: 'ruby',
27
- label: 'Ruby',
28
- extensions: ['.rb', '.rbw', '.rake', '.gemspec', '.ru', '.thor', '.builder', '.jbuilder', '.rabl', '.arb', '.podspec', '.erb', '.rhtml'],
29
- fileNames: [...exports.RUBY_SPECIAL_FILENAMES],
30
- },
31
- { key: 'csharp', label: 'C#', extensions: ['.cs', '.csproj'] },
32
- ];
33
- exports.SFC_EXTENSIONS = ['.vue', '.svelte'];
13
+ // The registry itself lives in registry.ts, which imports nothing, so sfc.ts can
14
+ // share it without the cycle that previously forced a second hand-written copy.
15
+ var registry_1 = require("./registry");
16
+ Object.defineProperty(exports, "LANGUAGE_REGISTRY", { enumerable: true, get: function () { return registry_1.LANGUAGE_REGISTRY; } });
17
+ Object.defineProperty(exports, "RUBY_SPECIAL_FILENAMES", { enumerable: true, get: function () { return registry_1.RUBY_SPECIAL_FILENAMES; } });
18
+ Object.defineProperty(exports, "SFC_EXTENSIONS", { enumerable: true, get: function () { return registry_1.SFC_EXTENSIONS; } });
19
+ Object.defineProperty(exports, "fileExtension", { enumerable: true, get: function () { return registry_1.fileExtension; } });
20
+ Object.defineProperty(exports, "languageForRegularFile", { enumerable: true, get: function () { return registry_1.languageForRegularFile; } });
21
+ const registry_2 = require("./registry");
34
22
  exports.ANALYSABLE_EXTENSIONS = [
35
- ...exports.LANGUAGE_REGISTRY.flatMap(entry => entry.extensions),
36
- ...exports.SFC_EXTENSIONS,
23
+ ...registry_2.LANGUAGE_REGISTRY.flatMap(entry => entry.extensions),
24
+ ...registry_2.SFC_EXTENSIONS,
37
25
  ];
38
- exports.ANALYSABLE_FILENAMES = exports.LANGUAGE_REGISTRY.flatMap(entry => entry.fileNames ?? []);
26
+ exports.ANALYSABLE_FILENAMES = registry_2.LANGUAGE_REGISTRY.flatMap(entry => entry.fileNames ?? []);
39
27
  exports.ANALYSABLE_EXTS = new Set(exports.ANALYSABLE_EXTENSIONS);
40
- function fileExtension(filePath) {
41
- const base = filePath.replace(/\\/g, '/').slice(filePath.replace(/\\/g, '/').lastIndexOf('/') + 1);
42
- const dot = base.lastIndexOf('.');
43
- return dot === -1 ? '' : base.slice(dot).toLowerCase();
44
- }
45
28
  function isAnalysableFile(filePath) {
46
29
  const lower = filePath.toLowerCase();
47
30
  if (/\.d\.(?:ts|mts|cts)$/.test(lower))
48
31
  return false;
49
32
  const base = lower.replace(/\\/g, '/').split('/').pop() ?? lower;
50
- return exports.ANALYSABLE_EXTS.has(fileExtension(lower)) ||
51
- exports.LANGUAGE_REGISTRY.some(entry => entry.fileNames?.includes(base));
33
+ return exports.ANALYSABLE_EXTS.has((0, registry_2.fileExtension)(lower)) ||
34
+ registry_2.LANGUAGE_REGISTRY.some(entry => entry.fileNames?.includes(base));
52
35
  }
53
- exports.LANGUAGE_KEYS = exports.LANGUAGE_REGISTRY.map(entry => entry.key);
36
+ exports.LANGUAGE_KEYS = registry_2.LANGUAGE_REGISTRY.map(entry => entry.key);
54
37
  function isLanguageKey(value) {
55
38
  return exports.LANGUAGE_KEYS.includes(value);
56
39
  }
57
40
  function languageLabel(key) {
58
- return exports.LANGUAGE_REGISTRY.find(entry => entry.key === key)?.label ?? key;
41
+ return registry_2.LANGUAGE_REGISTRY.find(entry => entry.key === key)?.label ?? key;
59
42
  }
60
43
  // Mirrors detectLanguage in guards.ts (unknown extensions fall back to
61
44
  // typescript there too) so override resolution and analysis can never disagree
@@ -66,7 +49,7 @@ function languageKeyForFile(filePath, source) {
66
49
  return source ? (0, sfc_1.extractSfcScripts)(source, filePath).language : 'javascript';
67
50
  }
68
51
  const base = lower.replace(/\\/g, '/').split('/').pop() ?? lower;
69
- for (const entry of exports.LANGUAGE_REGISTRY) {
52
+ for (const entry of registry_2.LANGUAGE_REGISTRY) {
70
53
  if (entry.extensions.some(ext => lower.endsWith(ext)) || entry.fileNames?.includes(base))
71
54
  return entry.key;
72
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"languages.js","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":";;;AAyBA,4CAMC;AAID,sCAEC;AAED,sCAEC;AAKD,gDAUC;AAyCD,sDAEC;AAED,0DASC;AAOD,oDAqBC;AA2BD,0DAWC;AA9KD,+BAAyC;AAEzC,iFAAiF;AACjF,gFAAgF;AAChF,uCAMmB;AALjB,6GAAA,iBAAiB,OAAA;AACjB,kHAAA,sBAAsB,OAAA;AACtB,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,kHAAA,sBAAsB,OAAA;AAIxB,yCAAqG;AAExF,QAAA,qBAAqB,GAAG;IACnC,GAAG,4BAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IACvD,GAAG,yBAAc;CACT,CAAA;AACG,QAAA,oBAAoB,GAAG,4BAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;AAChF,QAAA,eAAe,GAAwB,IAAI,GAAG,CAAC,6BAAqB,CAAC,CAAA;AAGlF,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACpC,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAA;IAChE,OAAO,uBAAe,CAAC,GAAG,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,CAAC;QAC9C,4BAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AACpE,CAAC;AAEY,QAAA,aAAa,GAAwB,4BAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAE3F,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,qBAAa,CAAC,QAAQ,CAAC,KAAiB,CAAC,CAAA;AAClD,CAAC;AAED,SAAgB,aAAa,CAAC,GAAa;IACzC,OAAO,4BAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG,CAAA;AACzE,CAAC;AAED,uEAAuE;AACvE,+EAA+E;AAC/E,0CAA0C;AAC1C,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,MAAe;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAA,uBAAiB,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAA;IAC7E,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAA;IAChE,KAAK,MAAM,KAAK,IAAI,4BAAiB,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAA;IAC5G,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC;AAuBY,QAAA,6BAA6B,GAAG;IAC3C,yBAAyB;IACzB,qBAAqB;IACrB,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;CACb,CAAA;AAEG,QAAA,6BAA6B,GAAG,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,YAAY,CAAU,CAAA;AAElG,QAAA,sBAAsB,GAAsB;IACvD,GAAG,qCAA6B;IAChC,GAAG,qCAA6B;CACjC,CAAA;AAED,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,OAAO,8BAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC7C,CAAC;AAED,SAAgB,uBAAuB,CACrC,QAAgB,EAChB,SAAsC,EACtC,MAAe;IAEf,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IAChE,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACrE,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,uEAAuE;AACvE,wEAAwE;AACxE,SAAgB,oBAAoB,CAAC,QAAgB,EAAE,IAAgB,EAAE,MAAe;IACtF,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC1E,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1B,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,UAAU,EAAE,GAAG,QAAQ,CAAA;IAChI,KAAK,oBAAoB,CAAA;IACzB,KAAK,mBAAmB,CAAA;IAExB,OAAO;QACL,GAAG,IAAI;QACP,GAAG,UAAU;QACb,UAAU,EAAE,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QAChE,kBAAkB,EAAE;YAClB,GAAG,IAAI,CAAC,kBAAkB;YAC1B,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC;SAC9B;QACD,iBAAiB,EAAE;YACjB,GAAG,IAAI,CAAC,iBAAiB;YACzB,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;SAC7B;KACF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAC9B,SAAuC,EACvC,QAAsC;IAEtC,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/B,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAA;AACH,CAAC;AAOD,2EAA2E;AAC3E,2EAA2E;AAC3E,8BAA8B;AAC9B,SAAgB,uBAAuB,CACrC,QAAgB,EAChB,SAAsC,EACtC,MAAe;IAEf,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC/B,MAAM,IAAI,GAAqB,EAAE,CAAA;IACjC,IAAI,QAAQ,CAAC,oBAAoB,KAAK,SAAS;QAAE,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,CAAA;IACtG,IAAI,QAAQ,CAAC,mBAAmB,KAAK,SAAS;QAAE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,mBAAmB,CAAA;IACnG,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;AACxD,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The single extension-to-language mapping, in its own module to break an
3
+ * import cycle that had produced a second, hand-maintained copy.
4
+ *
5
+ * `languages.ts` imports `extractSfcScripts` from `sfc.ts`, because a .vue or
6
+ * .svelte file's language depends on its CONTENTS. That meant `sfc.ts` could not
7
+ * import back from `languages.ts`, so it grew its own `languageForRegularFile`
8
+ * with the extension list written out again. The two then drifted: registering
9
+ * Java and Rust in `LANGUAGE_REGISTRY` was not enough, because `analyseFile`
10
+ * takes its language from the sfc copy, and a `.java` file was reported as
11
+ * TypeScript with zero functions and a perfect score - a silently clean result,
12
+ * which is the failure mode this codebase treats as the worst one.
13
+ *
14
+ * Nothing here imports `sfc.ts`, so both modules can depend on it and the
15
+ * mapping exists once. Adding a language means adding a registry entry and
16
+ * nothing else.
17
+ */
18
+ import type { Language } from './types';
19
+ export interface LanguageRegistryEntry {
20
+ key: Language;
21
+ label: string;
22
+ extensions: string[];
23
+ fileNames?: string[];
24
+ }
25
+ /** Ruby is the one language whose files are commonly extensionless. */
26
+ export declare const RUBY_SPECIAL_FILENAMES: readonly ["appfile", "berksfile", "brewfile", "capfile", "dangerfile", "deliverfile", "fastfile", "gemfile", "guardfile", "gymfile", "matchfile", "podfile", "pluginfile", "puppetfile", "rakefile", "scanfile", "snapfile", "thorfile", "vagrantfile", ".irbrc", ".pryrc"];
27
+ export declare const LANGUAGE_REGISTRY: readonly LanguageRegistryEntry[];
28
+ export declare const SFC_EXTENSIONS: readonly [".vue", ".svelte"];
29
+ export declare function fileExtension(filePath: string): string;
30
+ /**
31
+ * The language for a file whose extension decides it.
32
+ *
33
+ * Single-file components are NOT resolved here: their language depends on the
34
+ * `lang` attribute inside the file, so `languageKeyForFile` handles them with
35
+ * the source in hand. Callers without source get `javascript` there, which is
36
+ * the documented behaviour rather than an accident.
37
+ */
38
+ export declare function languageForRegularFile(filePath: string): Language;
39
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,QAAQ,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,6QAKzB,CAAA;AAEV,eAAO,MAAM,iBAAiB,EAAE,SAAS,qBAAqB,EAiBpD,CAAA;AAEV,eAAO,MAAM,cAAc,8BAA+B,CAAA;AAE1D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAQjE"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * The single extension-to-language mapping, in its own module to break an
4
+ * import cycle that had produced a second, hand-maintained copy.
5
+ *
6
+ * `languages.ts` imports `extractSfcScripts` from `sfc.ts`, because a .vue or
7
+ * .svelte file's language depends on its CONTENTS. That meant `sfc.ts` could not
8
+ * import back from `languages.ts`, so it grew its own `languageForRegularFile`
9
+ * with the extension list written out again. The two then drifted: registering
10
+ * Java and Rust in `LANGUAGE_REGISTRY` was not enough, because `analyseFile`
11
+ * takes its language from the sfc copy, and a `.java` file was reported as
12
+ * TypeScript with zero functions and a perfect score - a silently clean result,
13
+ * which is the failure mode this codebase treats as the worst one.
14
+ *
15
+ * Nothing here imports `sfc.ts`, so both modules can depend on it and the
16
+ * mapping exists once. Adding a language means adding a registry entry and
17
+ * nothing else.
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.SFC_EXTENSIONS = exports.LANGUAGE_REGISTRY = exports.RUBY_SPECIAL_FILENAMES = void 0;
21
+ exports.fileExtension = fileExtension;
22
+ exports.languageForRegularFile = languageForRegularFile;
23
+ /** Ruby is the one language whose files are commonly extensionless. */
24
+ exports.RUBY_SPECIAL_FILENAMES = [
25
+ 'appfile', 'berksfile', 'brewfile', 'capfile', 'dangerfile', 'deliverfile',
26
+ 'fastfile', 'gemfile', 'guardfile', 'gymfile', 'matchfile', 'podfile',
27
+ 'pluginfile', 'puppetfile', 'rakefile', 'scanfile', 'snapfile', 'thorfile',
28
+ 'vagrantfile', '.irbrc', '.pryrc',
29
+ ];
30
+ exports.LANGUAGE_REGISTRY = [
31
+ { key: 'typescript', label: 'TypeScript', extensions: ['.ts', '.tsx', '.mts', '.cts'] },
32
+ { key: 'javascript', label: 'JavaScript', extensions: ['.js', '.jsx', '.mjs', '.cjs'] },
33
+ { key: 'go', label: 'Go', extensions: ['.go'] },
34
+ { key: 'python', label: 'Python', extensions: ['.py', '.pyw'] },
35
+ {
36
+ key: 'ruby',
37
+ label: 'Ruby',
38
+ extensions: ['.rb', '.rbw', '.rake', '.gemspec', '.ru', '.thor', '.builder', '.jbuilder', '.rabl', '.arb', '.podspec', '.erb', '.rhtml'],
39
+ fileNames: [...exports.RUBY_SPECIAL_FILENAMES],
40
+ },
41
+ { key: 'csharp', label: 'C#', extensions: ['.cs', '.csproj'] },
42
+ // `.properties` and Spring's application.yml are MANIFESTS, not source: read
43
+ // for secrets only, because a spring.datasource.password is the most commonly
44
+ // committed Java credential. Same split a .csproj already uses.
45
+ { key: 'java', label: 'Java', extensions: ['.java', '.properties'] },
46
+ { key: 'rust', label: 'Rust', extensions: ['.rs'] },
47
+ ];
48
+ exports.SFC_EXTENSIONS = ['.vue', '.svelte'];
49
+ function fileExtension(filePath) {
50
+ const normalised = filePath.replace(/\\/g, '/');
51
+ const base = normalised.slice(normalised.lastIndexOf('/') + 1);
52
+ const dot = base.lastIndexOf('.');
53
+ return dot === -1 ? '' : base.slice(dot).toLowerCase();
54
+ }
55
+ /**
56
+ * The language for a file whose extension decides it.
57
+ *
58
+ * Single-file components are NOT resolved here: their language depends on the
59
+ * `lang` attribute inside the file, so `languageKeyForFile` handles them with
60
+ * the source in hand. Callers without source get `javascript` there, which is
61
+ * the documented behaviour rather than an accident.
62
+ */
63
+ function languageForRegularFile(filePath) {
64
+ const lower = filePath.toLowerCase();
65
+ const base = lower.replace(/\\/g, '/').split('/').pop() ?? lower;
66
+ for (const entry of exports.LANGUAGE_REGISTRY) {
67
+ if (entry.extensions.some(ext => lower.endsWith(ext)))
68
+ return entry.key;
69
+ if (entry.fileNames?.includes(base))
70
+ return entry.key;
71
+ }
72
+ return 'typescript';
73
+ }
74
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { IrisConfig } from '../config';
2
+ import type { LanguageAnalysis } from '../types';
3
+ /**
4
+ * Character ranges covered by `#[cfg(test)]` modules and `#[test]` functions.
5
+ *
6
+ * THIS HAS NO PRECEDENT IN THE OTHER EIGHT LANGUAGES. Every one of them puts
7
+ * tests in separate FILES, so `isTestFile` was enough. Rust puts them inside
8
+ * the file under test:
9
+ *
10
+ * pub fn parse(s: &str) -> u32 { s.parse().unwrap() } // production
11
+ * #[cfg(test)]
12
+ * mod tests { #[test] fn works() { assert_eq!(parse("1"), 1) } }
13
+ *
14
+ * A file-level exemption is either wrong (it exempts the production half too)
15
+ * or useless (it exempts nothing). Without a range-aware exemption, `unwrap()`
16
+ * density floods every well-tested Rust file, which is exactly the population
17
+ * most likely to be evaluating us.
18
+ */
19
+ export declare function testRanges(source: string): {
20
+ start: number;
21
+ end: number;
22
+ }[];
23
+ /** `unsafe` blocks with no safety comment above them. */
24
+ export declare function unsafeWithoutSafetyComment(source: string): number;
25
+ export declare function analyseRust(source: string, config: IrisConfig, filePath?: string): LanguageAnalysis;
26
+ //# sourceMappingURL=analyser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyser.d.ts","sourceRoot":"","sources":["../../src/rust/analyser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAKtC,OAAO,KAAK,EACmB,gBAAgB,EAC9C,MAAM,UAAU,CAAA;AA8CjB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAa3E;AA4WD,yDAAyD;AACzD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAYjE;AAqDD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,SAAK,GAAG,gBAAgB,CA+B/F"}