circle-ir 3.16.7 → 3.17.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 (34) hide show
  1. package/dist/analysis/html/html-attribute-security-pass.d.ts +22 -0
  2. package/dist/analysis/html/html-attribute-security-pass.js +269 -0
  3. package/dist/analysis/html/html-attribute-security-pass.js.map +1 -0
  4. package/dist/analysis/html/html-extractor.d.ts +69 -0
  5. package/dist/analysis/html/html-extractor.js +169 -0
  6. package/dist/analysis/html/html-extractor.js.map +1 -0
  7. package/dist/analysis/html/html-merge.d.ts +22 -0
  8. package/dist/analysis/html/html-merge.js +164 -0
  9. package/dist/analysis/html/html-merge.js.map +1 -0
  10. package/dist/analysis/html/index.d.ts +11 -0
  11. package/dist/analysis/html/index.js +12 -0
  12. package/dist/analysis/html/index.js.map +1 -0
  13. package/dist/analyzer.js +84 -0
  14. package/dist/analyzer.js.map +1 -1
  15. package/dist/browser/circle-ir.js +630 -0
  16. package/dist/core/circle-ir-core.cjs +2 -0
  17. package/dist/core/circle-ir-core.js +2 -0
  18. package/dist/core/parser.d.ts +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/languages/index.d.ts +1 -1
  23. package/dist/languages/index.js +1 -1
  24. package/dist/languages/index.js.map +1 -1
  25. package/dist/languages/plugins/html.d.ts +33 -0
  26. package/dist/languages/plugins/html.js +84 -0
  27. package/dist/languages/plugins/html.js.map +1 -0
  28. package/dist/languages/plugins/index.d.ts +1 -0
  29. package/dist/languages/plugins/index.js +3 -0
  30. package/dist/languages/plugins/index.js.map +1 -1
  31. package/dist/languages/types.d.ts +1 -1
  32. package/dist/types/index.d.ts +1 -1
  33. package/dist/wasm/tree-sitter-html.wasm +0 -0
  34. package/package.json +3 -2
@@ -7,7 +7,7 @@ import { Parser, Language, Tree, Node } from 'web-tree-sitter';
7
7
  export { Language, Tree };
8
8
  export type { Node };
9
9
  export type SyntaxNode = Node;
10
- export type SupportedLanguage = 'java' | 'c' | 'cpp' | 'javascript' | 'typescript' | 'python' | 'rust' | 'bash';
10
+ export type SupportedLanguage = 'java' | 'c' | 'cpp' | 'javascript' | 'typescript' | 'python' | 'rust' | 'bash' | 'html';
11
11
  interface ParserOptions {
12
12
  /**
13
13
  * Custom path/URL to the tree-sitter.wasm file.
package/dist/index.d.ts CHANGED
@@ -17,6 +17,6 @@ export { getRuleInfo, RULE_DEFINITIONS, type RuleInfo, } from './analysis/rules.
17
17
  export { DominatorGraph } from './graph/dominator-graph.js';
18
18
  export { ExceptionFlowGraph, type TryCatchInfo } from './graph/exception-flow-graph.js';
19
19
  export { TypeHierarchyResolver, createWithJdkTypes, SymbolTable, buildSymbolTable, CrossFileResolver, buildCrossFileResolver, } from './resolution/index.js';
20
- export { getLanguageRegistry, registerLanguage, getLanguagePlugin, getLanguageForFile, detectLanguage, isLanguageSupported, registerBuiltinPlugins, JavaPlugin, JavaScriptPlugin, PythonPlugin, RustPlugin, BaseLanguagePlugin, } from './languages/index.js';
20
+ export { getLanguageRegistry, registerLanguage, getLanguagePlugin, getLanguageForFile, detectLanguage, isLanguageSupported, registerBuiltinPlugins, JavaPlugin, JavaScriptPlugin, PythonPlugin, RustPlugin, HtmlPlugin, BaseLanguagePlugin, } from './languages/index.js';
21
21
  export type { LanguagePlugin, LanguageRegistry, LanguageNodeTypes, ExtractionContext, FrameworkInfo, TaintSourcePattern, TaintSinkPattern, } from './languages/index.js';
22
22
  export { logger, setLogger, configureLogger, setLogLevel, getLogLevel, type LogLevel, type LoggerConfig, type LoggerInstance, } from './utils/logger.js';
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ export { ExceptionFlowGraph } from './graph/exception-flow-graph.js';
19
19
  // Resolution utilities
20
20
  export { TypeHierarchyResolver, createWithJdkTypes, SymbolTable, buildSymbolTable, CrossFileResolver, buildCrossFileResolver, } from './resolution/index.js';
21
21
  // Language plugins
22
- export { getLanguageRegistry, registerLanguage, getLanguagePlugin, getLanguageForFile, detectLanguage, isLanguageSupported, registerBuiltinPlugins, JavaPlugin, JavaScriptPlugin, PythonPlugin, RustPlugin, BaseLanguagePlugin, } from './languages/index.js';
22
+ export { getLanguageRegistry, registerLanguage, getLanguagePlugin, getLanguageForFile, detectLanguage, isLanguageSupported, registerBuiltinPlugins, JavaPlugin, JavaScriptPlugin, PythonPlugin, RustPlugin, HtmlPlugin, BaseLanguagePlugin, } from './languages/index.js';
23
23
  // Logger (dependency injection)
24
24
  export { logger, setLogger, configureLogger, setLogLevel, getLogLevel, } from './utils/logger.js';
25
25
  //# sourceMappingURL=index.js.map
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"}
@@ -7,5 +7,5 @@
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';
@@ -8,7 +8,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"}
@@ -9,7 +9,7 @@ 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
  */
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circle-ir",
3
- "version": "3.16.7",
3
+ "version": "3.17.0",
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",
@@ -95,8 +95,9 @@
95
95
  "devDependencies": {
96
96
  "@types/node": "^25.5.0",
97
97
  "@vitest/coverage-v8": "^4.1.2",
98
- "esbuild": "^0.27.4",
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",