circle-ir 3.16.8 → 3.17.1
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/README.md +7 -1
- package/dist/analysis/html/html-attribute-security-pass.d.ts +22 -0
- package/dist/analysis/html/html-attribute-security-pass.js +269 -0
- package/dist/analysis/html/html-attribute-security-pass.js.map +1 -0
- package/dist/analysis/html/html-extractor.d.ts +69 -0
- package/dist/analysis/html/html-extractor.js +169 -0
- package/dist/analysis/html/html-extractor.js.map +1 -0
- package/dist/analysis/html/html-merge.d.ts +22 -0
- package/dist/analysis/html/html-merge.js +164 -0
- package/dist/analysis/html/html-merge.js.map +1 -0
- package/dist/analysis/html/index.d.ts +11 -0
- package/dist/analysis/html/index.js +12 -0
- package/dist/analysis/html/index.js.map +1 -0
- package/dist/analyzer.js +84 -0
- package/dist/analyzer.js.map +1 -1
- package/dist/browser/circle-ir.js +627 -0
- package/dist/core/parser.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/languages/index.d.ts +2 -2
- package/dist/languages/index.js +2 -2
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/plugins/html.d.ts +33 -0
- package/dist/languages/plugins/html.js +84 -0
- package/dist/languages/plugins/html.js.map +1 -0
- package/dist/languages/plugins/index.d.ts +1 -0
- package/dist/languages/plugins/index.js +3 -0
- package/dist/languages/plugins/index.js.map +1 -1
- package/dist/languages/types.d.ts +2 -2
- package/dist/languages/types.js +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/wasm/tree-sitter-html.wasm +0 -0
- package/docs/SPEC.md +1 -1
- package/package.json +2 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,OAAO,EACP,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,aAAa,GAEd,MAAM,eAAe,CAAC;AA6EvB,sCAAsC;AACtC,OAAO,EACL,UAAU,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,eAAe,GAMhB,MAAM,iBAAiB,CAAC;AAEzB,kBAAkB;AAClB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,qBAAqB;AACrB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC1B,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,EACb,kBAAkB,GAMnB,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAqB,MAAM,iCAAiC,CAAC;AAExF,uBAAuB;AACvB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAY9B,gCAAgC;AAChC,OAAO,EACL,MAAM,EACN,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,GAIZ,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,OAAO,EACP,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,aAAa,GAEd,MAAM,eAAe,CAAC;AA6EvB,sCAAsC;AACtC,OAAO,EACL,UAAU,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,eAAe,GAMhB,MAAM,iBAAiB,CAAC;AAEzB,kBAAkB;AAClB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,qBAAqB;AACrB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,0BAA0B,EAC1B,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,EACb,kBAAkB,GAMnB,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAqB,MAAM,iCAAiC,CAAC;AAExF,uBAAuB;AACvB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAY9B,gCAAgC;AAChC,OAAO,EACL,MAAM,EACN,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,GAIZ,MAAM,mBAAmB,CAAC"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Language Plugin System
|
|
3
3
|
*
|
|
4
4
|
* Provides multi-language support through a plugin architecture.
|
|
5
|
-
* Each language (Java, JavaScript, Python, Rust) has its own plugin
|
|
5
|
+
* Each language (Java, JavaScript, Python, Rust, Bash, HTML) has its own plugin
|
|
6
6
|
* that handles AST node types, taint patterns, and framework detection.
|
|
7
7
|
*/
|
|
8
8
|
export type { SupportedLanguage, LanguageNodeTypes, LanguagePlugin, LanguageRegistry, ExtractionContext, FrameworkInfo, TaintSourcePattern, TaintSinkPattern, } from './types.js';
|
|
9
9
|
export { getLanguageRegistry, registerLanguage, getLanguagePlugin, getLanguageForFile, detectLanguage, isLanguageSupported, } from './registry.js';
|
|
10
|
-
export { JavaPlugin, JavaScriptPlugin, PythonPlugin, RustPlugin, registerBuiltinPlugins, } from './plugins/index.js';
|
|
10
|
+
export { JavaPlugin, JavaScriptPlugin, PythonPlugin, RustPlugin, HtmlPlugin, registerBuiltinPlugins, } from './plugins/index.js';
|
|
11
11
|
export { BaseLanguagePlugin } from './plugins/base.js';
|
package/dist/languages/index.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Language Plugin System
|
|
3
3
|
*
|
|
4
4
|
* Provides multi-language support through a plugin architecture.
|
|
5
|
-
* Each language (Java, JavaScript, Python, Rust) has its own plugin
|
|
5
|
+
* Each language (Java, JavaScript, Python, Rust, Bash, HTML) has its own plugin
|
|
6
6
|
* that handles AST node types, taint patterns, and framework detection.
|
|
7
7
|
*/
|
|
8
8
|
// Registry functions
|
|
9
9
|
export { getLanguageRegistry, registerLanguage, getLanguagePlugin, getLanguageForFile, detectLanguage, isLanguageSupported, } from './registry.js';
|
|
10
10
|
// Concrete plugins
|
|
11
|
-
export { JavaPlugin, JavaScriptPlugin, PythonPlugin, RustPlugin, registerBuiltinPlugins, } from './plugins/index.js';
|
|
11
|
+
export { JavaPlugin, JavaScriptPlugin, PythonPlugin, RustPlugin, HtmlPlugin, registerBuiltinPlugins, } from './plugins/index.js';
|
|
12
12
|
// Base class for custom plugins
|
|
13
13
|
export { BaseLanguagePlugin } from './plugins/base.js';
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/languages/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,qBAAqB;AACrB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,mBAAmB;AACnB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,gCAAgC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/languages/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,qBAAqB;AACrB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,mBAAmB;AACnB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,gCAAgC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML Language Plugin
|
|
3
|
+
*
|
|
4
|
+
* Provides HTML-specific AST handling for the web extraction preprocessor.
|
|
5
|
+
* HTML is a preprocessor language — it does not produce full IR.
|
|
6
|
+
* Instead, <script> blocks are extracted and delegated to the JS analyzer,
|
|
7
|
+
* and attribute-level security checks are run directly on the HTML AST.
|
|
8
|
+
*/
|
|
9
|
+
import type { Node as SyntaxNode } from 'web-tree-sitter';
|
|
10
|
+
import type { TypeInfo, CallInfo, ImportInfo } from '../../types/index.js';
|
|
11
|
+
import type { LanguageNodeTypes, ExtractionContext, FrameworkInfo, TaintSourcePattern, TaintSinkPattern } from '../types.js';
|
|
12
|
+
import { BaseLanguagePlugin } from './base.js';
|
|
13
|
+
/**
|
|
14
|
+
* HTML language plugin implementation.
|
|
15
|
+
* Acts as a preprocessor — delegates script analysis to JS plugin.
|
|
16
|
+
*/
|
|
17
|
+
export declare class HtmlPlugin extends BaseLanguagePlugin {
|
|
18
|
+
readonly id: "html";
|
|
19
|
+
readonly name = "HTML";
|
|
20
|
+
readonly extensions: string[];
|
|
21
|
+
readonly wasmPath = "tree-sitter-html.wasm";
|
|
22
|
+
readonly nodeTypes: LanguageNodeTypes;
|
|
23
|
+
detectFramework(_context: ExtractionContext): FrameworkInfo | undefined;
|
|
24
|
+
getBuiltinSources(): TaintSourcePattern[];
|
|
25
|
+
getBuiltinSinks(): TaintSinkPattern[];
|
|
26
|
+
getReceiverType(_node: SyntaxNode, _context: ExtractionContext): string | undefined;
|
|
27
|
+
isStringLiteral(node: SyntaxNode): boolean;
|
|
28
|
+
getStringValue(node: SyntaxNode): string | undefined;
|
|
29
|
+
extractTypes(_context: ExtractionContext): TypeInfo[];
|
|
30
|
+
extractCalls(_context: ExtractionContext): CallInfo[];
|
|
31
|
+
extractImports(_context: ExtractionContext): ImportInfo[];
|
|
32
|
+
extractPackage(_context: ExtractionContext): string | undefined;
|
|
33
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML Language Plugin
|
|
3
|
+
*
|
|
4
|
+
* Provides HTML-specific AST handling for the web extraction preprocessor.
|
|
5
|
+
* HTML is a preprocessor language — it does not produce full IR.
|
|
6
|
+
* Instead, <script> blocks are extracted and delegated to the JS analyzer,
|
|
7
|
+
* and attribute-level security checks are run directly on the HTML AST.
|
|
8
|
+
*/
|
|
9
|
+
import { BaseLanguagePlugin } from './base.js';
|
|
10
|
+
/**
|
|
11
|
+
* HTML language plugin implementation.
|
|
12
|
+
* Acts as a preprocessor — delegates script analysis to JS plugin.
|
|
13
|
+
*/
|
|
14
|
+
export class HtmlPlugin extends BaseLanguagePlugin {
|
|
15
|
+
id = 'html';
|
|
16
|
+
name = 'HTML';
|
|
17
|
+
extensions = ['.html', '.htm', '.xhtml'];
|
|
18
|
+
wasmPath = 'tree-sitter-html.wasm';
|
|
19
|
+
nodeTypes = {
|
|
20
|
+
// HTML has no OOP constructs
|
|
21
|
+
classDeclaration: [],
|
|
22
|
+
interfaceDeclaration: [],
|
|
23
|
+
enumDeclaration: [],
|
|
24
|
+
functionDeclaration: [],
|
|
25
|
+
methodDeclaration: [],
|
|
26
|
+
// No expressions in HTML
|
|
27
|
+
methodCall: [],
|
|
28
|
+
functionCall: [],
|
|
29
|
+
assignment: [],
|
|
30
|
+
variableDeclaration: [],
|
|
31
|
+
// No parameters
|
|
32
|
+
parameter: [],
|
|
33
|
+
argument: [],
|
|
34
|
+
// No annotations
|
|
35
|
+
annotation: [],
|
|
36
|
+
decorator: [],
|
|
37
|
+
// No imports
|
|
38
|
+
importStatement: [],
|
|
39
|
+
// No control flow
|
|
40
|
+
ifStatement: [],
|
|
41
|
+
forStatement: [],
|
|
42
|
+
whileStatement: [],
|
|
43
|
+
tryStatement: [],
|
|
44
|
+
returnStatement: [],
|
|
45
|
+
};
|
|
46
|
+
detectFramework(_context) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
getBuiltinSources() {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
getBuiltinSinks() {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
getReceiverType(_node, _context) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
isStringLiteral(node) {
|
|
59
|
+
return node.type === 'attribute_value' || node.type === 'quoted_attribute_value';
|
|
60
|
+
}
|
|
61
|
+
getStringValue(node) {
|
|
62
|
+
if (!this.isStringLiteral(node))
|
|
63
|
+
return undefined;
|
|
64
|
+
const text = node.text;
|
|
65
|
+
if ((text.startsWith('"') && text.endsWith('"')) ||
|
|
66
|
+
(text.startsWith("'") && text.endsWith("'"))) {
|
|
67
|
+
return text.slice(1, -1);
|
|
68
|
+
}
|
|
69
|
+
return text;
|
|
70
|
+
}
|
|
71
|
+
extractTypes(_context) {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
extractCalls(_context) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
extractImports(_context) {
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
extractPackage(_context) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../../src/languages/plugins/html.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C;;;GAGG;AACH,MAAM,OAAO,UAAW,SAAQ,kBAAkB;IACvC,EAAE,GAAG,MAAe,CAAC;IACrB,IAAI,GAAG,MAAM,CAAC;IACd,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,QAAQ,GAAG,uBAAuB,CAAC;IAEnC,SAAS,GAAsB;QACtC,6BAA6B;QAC7B,gBAAgB,EAAE,EAAE;QACpB,oBAAoB,EAAE,EAAE;QACxB,eAAe,EAAE,EAAE;QACnB,mBAAmB,EAAE,EAAE;QACvB,iBAAiB,EAAE,EAAE;QAErB,yBAAyB;QACzB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,EAAE;QACd,mBAAmB,EAAE,EAAE;QAEvB,gBAAgB;QAChB,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,EAAE;QAEZ,iBAAiB;QACjB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QAEb,aAAa;QACb,eAAe,EAAE,EAAE;QAEnB,kBAAkB;QAClB,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,EAAE;QAClB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;KACpB,CAAC;IAEF,eAAe,CAAC,QAA2B;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe,CAAC,KAAiB,EAAE,QAA2B;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,IAAgB;QAC9B,OAAO,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,CAAC;IACnF,CAAC;IAED,cAAc,CAAC,IAAgB;QAC7B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,QAA2B;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,YAAY,CAAC,QAA2B;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,cAAc,CAAC,QAA2B;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,cAAc,CAAC,QAA2B;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -8,6 +8,7 @@ export { JavaScriptPlugin } from './javascript.js';
|
|
|
8
8
|
export { PythonPlugin } from './python.js';
|
|
9
9
|
export { RustPlugin } from './rust.js';
|
|
10
10
|
export { BashPlugin } from './bash.js';
|
|
11
|
+
export { HtmlPlugin } from './html.js';
|
|
11
12
|
/**
|
|
12
13
|
* Register all built-in language plugins with the global registry.
|
|
13
14
|
* Call this during analyzer initialization.
|
|
@@ -8,12 +8,14 @@ export { JavaScriptPlugin } from './javascript.js';
|
|
|
8
8
|
export { PythonPlugin } from './python.js';
|
|
9
9
|
export { RustPlugin } from './rust.js';
|
|
10
10
|
export { BashPlugin } from './bash.js';
|
|
11
|
+
export { HtmlPlugin } from './html.js';
|
|
11
12
|
import { registerLanguage } from '../registry.js';
|
|
12
13
|
import { JavaPlugin } from './java.js';
|
|
13
14
|
import { JavaScriptPlugin } from './javascript.js';
|
|
14
15
|
import { PythonPlugin } from './python.js';
|
|
15
16
|
import { RustPlugin } from './rust.js';
|
|
16
17
|
import { BashPlugin } from './bash.js';
|
|
18
|
+
import { HtmlPlugin } from './html.js';
|
|
17
19
|
/**
|
|
18
20
|
* Register all built-in language plugins with the global registry.
|
|
19
21
|
* Call this during analyzer initialization.
|
|
@@ -24,5 +26,6 @@ export function registerBuiltinPlugins() {
|
|
|
24
26
|
registerLanguage(new PythonPlugin());
|
|
25
27
|
registerLanguage(new RustPlugin());
|
|
26
28
|
registerLanguage(new BashPlugin());
|
|
29
|
+
registerLanguage(new HtmlPlugin());
|
|
27
30
|
}
|
|
28
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,gBAAgB,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IACnC,gBAAgB,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;IACzC,gBAAgB,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACrC,gBAAgB,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IACnC,gBAAgB,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;AACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,gBAAgB,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IACnC,gBAAgB,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;IACzC,gBAAgB,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACrC,gBAAgB,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IACnC,gBAAgB,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;IACnC,gBAAgB,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
* Language Plugin System
|
|
3
3
|
*
|
|
4
4
|
* Defines the interface for language-specific analysis plugins.
|
|
5
|
-
* Each language (Java, JavaScript, Python, Rust) implements this interface.
|
|
5
|
+
* Each language (Java, JavaScript, Python, Rust, Bash, HTML) implements this interface.
|
|
6
6
|
*/
|
|
7
7
|
import type { Parser, Node as SyntaxNode, Tree } from 'web-tree-sitter';
|
|
8
8
|
import type { TypeInfo, CallInfo, ImportInfo } from '../types/index.js';
|
|
9
9
|
/**
|
|
10
10
|
* Supported languages for analysis
|
|
11
11
|
*/
|
|
12
|
-
export type SupportedLanguage = 'java' | 'c' | 'cpp' | 'javascript' | 'typescript' | 'python' | 'rust' | 'bash';
|
|
12
|
+
export type SupportedLanguage = 'java' | 'c' | 'cpp' | 'javascript' | 'typescript' | 'python' | 'rust' | 'bash' | 'html';
|
|
13
13
|
/**
|
|
14
14
|
* AST node type mappings for a language
|
|
15
15
|
*/
|
package/dist/languages/types.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Language Plugin System
|
|
3
3
|
*
|
|
4
4
|
* Defines the interface for language-specific analysis plugins.
|
|
5
|
-
* Each language (Java, JavaScript, Python, Rust) implements this interface.
|
|
5
|
+
* Each language (Java, JavaScript, Python, Rust, Bash, HTML) implements this interface.
|
|
6
6
|
*/
|
|
7
7
|
export {};
|
|
8
8
|
//# sourceMappingURL=types.js.map
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* These types conform to docs/SPEC.md
|
|
5
5
|
*/
|
|
6
|
-
export type SupportedLanguage = "java" | "c" | "cpp" | "javascript" | "typescript" | "python" | "rust" | "bash";
|
|
6
|
+
export type SupportedLanguage = "java" | "c" | "cpp" | "javascript" | "typescript" | "python" | "rust" | "bash" | "html";
|
|
7
7
|
export interface Meta {
|
|
8
8
|
circle_ir: "3.0";
|
|
9
9
|
file: string;
|
|
Binary file
|
package/docs/SPEC.md
CHANGED
|
@@ -73,7 +73,7 @@ File metadata and version information.
|
|
|
73
73
|
interface Meta {
|
|
74
74
|
circle_ir: "3.0";
|
|
75
75
|
file: string;
|
|
76
|
-
language: "java" | "javascript" | "typescript" | "python" | "rust" | "bash";
|
|
76
|
+
language: "java" | "javascript" | "typescript" | "python" | "rust" | "bash" | "html";
|
|
77
77
|
loc: number;
|
|
78
78
|
hash: string; // SHA256 prefix (16 chars)
|
|
79
79
|
package?: string; // PENDING: Add to implementation
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "circle-ir",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.17.1",
|
|
4
4
|
"description": "High-performance Static Application Security Testing (SAST) library for detecting security vulnerabilities through taint analysis",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -97,6 +97,7 @@
|
|
|
97
97
|
"@vitest/coverage-v8": "^4.1.2",
|
|
98
98
|
"esbuild": "^0.28.0",
|
|
99
99
|
"tree-sitter-bash": "^0.25.1",
|
|
100
|
+
"tree-sitter-html": "^0.23.2",
|
|
100
101
|
"tree-sitter-java": "^0.23.5",
|
|
101
102
|
"tree-sitter-python": "^0.25.0",
|
|
102
103
|
"tree-sitter-rust": "^0.24.0",
|