@openuji/speculator 0.7.1 → 0.7.3

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 (67) hide show
  1. package/README.md +25 -3
  2. package/dist/file-provider/memory.d.ts +3 -0
  3. package/dist/file-provider/memory.d.ts.map +1 -1
  4. package/dist/file-provider/memory.js +14 -0
  5. package/dist/file-provider/memory.js.map +1 -1
  6. package/dist/file-provider/node.d.ts +3 -0
  7. package/dist/file-provider/node.d.ts.map +1 -1
  8. package/dist/file-provider/node.js +17 -0
  9. package/dist/file-provider/node.js.map +1 -1
  10. package/dist/file-provider/types.d.ts +10 -0
  11. package/dist/file-provider/types.d.ts.map +1 -1
  12. package/dist/file-provider/types.js.map +1 -1
  13. package/dist/parse/assembler.d.ts.map +1 -1
  14. package/dist/parse/assembler.js +2 -2
  15. package/dist/parse/assembler.js.map +1 -1
  16. package/dist/parse/html/IdlHtmlParser.d.ts +12 -0
  17. package/dist/parse/html/IdlHtmlParser.d.ts.map +1 -0
  18. package/dist/parse/html/IdlHtmlParser.js +166 -0
  19. package/dist/parse/html/IdlHtmlParser.js.map +1 -0
  20. package/dist/parse/html/LikeC4ViewHtmlParser.d.ts +6 -0
  21. package/dist/parse/html/LikeC4ViewHtmlParser.d.ts.map +1 -0
  22. package/dist/parse/html/LikeC4ViewHtmlParser.js +31 -0
  23. package/dist/parse/html/LikeC4ViewHtmlParser.js.map +1 -0
  24. package/dist/parse/markdown/escapeTablePipes.d.ts +14 -0
  25. package/dist/parse/markdown/escapeTablePipes.d.ts.map +1 -0
  26. package/dist/parse/markdown/escapeTablePipes.js +87 -0
  27. package/dist/parse/markdown/escapeTablePipes.js.map +1 -0
  28. package/dist/parse/markdown/parser.d.ts.map +1 -1
  29. package/dist/parse/markdown/parser.js +4 -1
  30. package/dist/parse/markdown/parser.js.map +1 -1
  31. package/dist/parse/parsers.d.ts +2 -0
  32. package/dist/parse/parsers.d.ts.map +1 -1
  33. package/dist/parse/parsers.js +6 -0
  34. package/dist/parse/parsers.js.map +1 -1
  35. package/dist/parse/pipeline.d.ts.map +1 -1
  36. package/dist/parse/pipeline.js +1 -1
  37. package/dist/parse/pipeline.js.map +1 -1
  38. package/dist/parse/utils/markdown-utils.d.ts +4 -0
  39. package/dist/parse/utils/markdown-utils.d.ts.map +1 -1
  40. package/dist/parse/utils/markdown-utils.js +70 -0
  41. package/dist/parse/utils/markdown-utils.js.map +1 -1
  42. package/dist/postprocess/plugins/reference-resolve.d.ts +1 -0
  43. package/dist/postprocess/plugins/reference-resolve.d.ts.map +1 -1
  44. package/dist/postprocess/plugins/reference-resolve.js +193 -26
  45. package/dist/postprocess/plugins/reference-resolve.js.map +1 -1
  46. package/dist/preprocess/EscapePipeMiddleware.d.ts +12 -0
  47. package/dist/preprocess/EscapePipeMiddleware.d.ts.map +1 -0
  48. package/dist/preprocess/EscapePipeMiddleware.js +102 -0
  49. package/dist/preprocess/EscapePipeMiddleware.js.map +1 -0
  50. package/dist/preprocess/config/normalize.d.ts.map +1 -1
  51. package/dist/preprocess/config/normalize.js +5 -0
  52. package/dist/preprocess/config/normalize.js.map +1 -1
  53. package/dist/preprocess/config/types.d.ts +1 -0
  54. package/dist/preprocess/config/types.d.ts.map +1 -1
  55. package/dist/preprocess/pipeline.d.ts.map +1 -1
  56. package/dist/preprocess/pipeline.js.map +1 -1
  57. package/dist/preprocess/types.d.ts +5 -1
  58. package/dist/preprocess/types.d.ts.map +1 -1
  59. package/dist/types/ast.generated.d.ts +36 -2
  60. package/dist/types/ast.generated.d.ts.map +1 -1
  61. package/dist/types/ast.generated.js +3 -2
  62. package/dist/types/ast.generated.js.map +1 -1
  63. package/dist/workspace/builder.d.ts.map +1 -1
  64. package/dist/workspace/builder.js +98 -4
  65. package/dist/workspace/builder.js.map +1 -1
  66. package/package.json +2 -1
  67. package/schema/spec-ast.schema.json +86 -0
package/README.md CHANGED
@@ -8,10 +8,12 @@ Speculator is the core engine of the Speculator ecosystem. It transforms specifi
8
8
 
9
9
  Speculator operates on a strict three-stage pipeline to ensure determinism and semantic accuracy:
10
10
 
11
- ### 1. Preprocess (Composition)
11
+ ### 1. Preprocess (Discovery & Composition)
12
12
 
13
- Handles configuration loading and spec composition. It resolves includes (both Markdown directives and HTML markers) into a deterministic `CompositeSource`.
13
+ Handles workspace discovery, configuration loading, and spec composition.
14
14
 
15
+ - **Workspace Discovery**: Automatically finds specifications using directory shorthands (e.g., `spec/docs/`) or glob patterns (e.g., `spec/**/*.md`).
16
+ - **Composition**: Resolves includes (both Markdown directives and HTML markers) into a deterministic `CompositeSource`.
15
17
  - **Isomorphic IO**: Uses `FileProvider` adapters for Node.js, Web, or Memory environments.
16
18
  - **Cycle Detection**: Prevents infinite include loops with actionable diagnostics.
17
19
 
@@ -44,6 +46,8 @@ The **Speculator AST JSON Schema** is the single source of truth. All pipeline o
44
46
 
45
47
  ## 🚀 Usage
46
48
 
49
+ ### Single Document
50
+
47
51
  ```typescript
48
52
  import { speculate, corePlugins, NodeFileProvider } from "@openuji/speculator";
49
53
 
@@ -53,7 +57,25 @@ const result = await speculate({
53
57
  fileProvider: new NodeFileProvider(),
54
58
  });
55
59
 
56
- console.log(result.workspace.documents[0].ast);
60
+ // The result contains the Workspace AST
61
+ const document = result.workspace?.documents[0];
62
+ console.log(document?.id);
63
+ ```
64
+
65
+ ### Multiple Workspaces (Discovery)
66
+
67
+ ```typescript
68
+ import { buildWorkspaces, corePlugins } from "@openuji/speculator";
69
+
70
+ const result = await buildWorkspaces({
71
+ entryMap: {
72
+ "api-group": "spec/api/", // Scans directory for index.{md,html}
73
+ "md-group": "spec/**/*.md", // Glob discovery
74
+ },
75
+ plugins: [...corePlugins],
76
+ });
77
+
78
+ console.log(Object.keys(result.workspaces)); // ["api-group", "md-group"]
57
79
  ```
58
80
 
59
81
  ## 🛠️ Development & Playbook
@@ -41,6 +41,9 @@ export declare class MemoryFileProvider implements FileProvider {
41
41
  listFiles(): string[];
42
42
  readText(path: string): Promise<string>;
43
43
  resolve(fromFile: string, relativePath: string): string;
44
+ readdir(path: string, options?: {
45
+ recursive?: boolean;
46
+ }): Promise<string[]>;
44
47
  canonicalize(path: string): string;
45
48
  }
46
49
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/file-provider/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACH,YAAY,EAEf,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACnD,OAAO,CAAC,KAAK,CAAsB;gBAEvB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAO9C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIf,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAevD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CA0BrC"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/file-provider/memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACH,YAAY,EAEf,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACnD,OAAO,CAAC,KAAK,CAAsB;gBAEvB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAO9C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIf,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAejD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBjF,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CA0BrC"}
@@ -72,6 +72,20 @@ export class MemoryFileProvider {
72
72
  // Combine and canonicalize
73
73
  return this.canonicalize(`${fromDir}/${relativePath}`);
74
74
  }
75
+ async readdir(path, options) {
76
+ const canonical = this.canonicalize(path);
77
+ const prefix = canonical.endsWith('/') ? canonical : canonical + '/';
78
+ const results = [];
79
+ for (const filePath of this.files.keys()) {
80
+ if (filePath.startsWith(prefix)) {
81
+ const relative = filePath.slice(prefix.length);
82
+ if (options?.recursive || !relative.includes('/')) {
83
+ results.push(filePath);
84
+ }
85
+ }
86
+ }
87
+ return results;
88
+ }
75
89
  canonicalize(path) {
76
90
  // Normalize to forward slashes
77
91
  let normalized = path.replace(/\\/g, '/');
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/file-provider/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/file-provider/memory.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,9 @@ export declare class NodeFileProvider implements FileProvider {
27
27
  constructor(basePath?: string);
28
28
  readText(filePath: string): Promise<string>;
29
29
  resolve(fromFile: string, relativePath: string): string;
30
+ readdir(dirPath: string, options?: {
31
+ recursive?: boolean;
32
+ }): Promise<string[]>;
30
33
  canonicalize(filePath: string): string;
31
34
  }
32
35
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/file-provider/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACH,YAAY,EAGf,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;OAIG;gBACS,QAAQ,CAAC,EAAE,MAAM;IAIvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAejD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAavD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CASzC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/file-provider/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACH,YAAY,EAGf,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;OAIG;gBACS,QAAQ,CAAC,EAAE,MAAM;IAIvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAejD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAajD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBpF,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CASzC"}
@@ -53,6 +53,23 @@ export class NodeFileProvider {
53
53
  // Resolve relative to source file's directory
54
54
  return this.canonicalize(path.join(fromDir, relativePath));
55
55
  }
56
+ async readdir(dirPath, options) {
57
+ const canonical = this.canonicalize(dirPath);
58
+ try {
59
+ const files = await fs.readdir(canonical, { recursive: options?.recursive });
60
+ // readdir with recursive: true returns relative paths from the root
61
+ // we want to return absolute canonical paths
62
+ return files.map(file => path.join(canonical, file.toString()));
63
+ }
64
+ catch (error) {
65
+ if (error instanceof Error && 'code' in error) {
66
+ if (error.code === 'ENOENT') {
67
+ return []; // Non-existent directory returns empty list
68
+ }
69
+ }
70
+ throw new FileReadError(canonical, error instanceof Error ? error : undefined);
71
+ }
72
+ }
56
73
  canonicalize(filePath) {
57
74
  // Make absolute if relative
58
75
  const absolutePath = path.isAbsolute(filePath)
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/file-provider/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAEH,iBAAiB,EACjB,aAAa,EAChB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,gBAAgB;IACjB,QAAQ,CAAS;IAEzB;;;;OAIG;IACH,YAAY,QAAiB;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE9C,IAAI,CAAC;YACD,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC5C,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACrD,MAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAC3C,CAAC;YACL,CAAC;YACD,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACnF,CAAC;IACL,CAAC;IAED,OAAO,CAAC,QAAgB,EAAE,YAAoB;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE5C,wBAAwB;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;QAED,8CAA8C;QAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY,CAAC,QAAgB;QACzB,4BAA4B;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEzC,gCAAgC;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;CACJ"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/file-provider/node.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,16 @@ export interface FileProvider {
37
37
  * @throws FileReadError if file cannot be read
38
38
  */
39
39
  readText(path: string): Promise<string>;
40
+ /**
41
+ * List files in a directory
42
+ *
43
+ * @param path - Canonical directory path
44
+ * @param options - Scanning options (e.g., recursive)
45
+ * @returns List of canonical file paths
46
+ */
47
+ readdir?(path: string, options?: {
48
+ recursive?: boolean;
49
+ }): Promise<string[]>;
40
50
  /**
41
51
  * Resolve a relative path from a source file's location
42
52
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/file-provider/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAGZ,IAAI,EAAE,MAAM;IAFxC,QAAQ,CAAC,IAAI,oBAAoB;gBAEL,IAAI,EAAE,MAAM;CAI3C;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAIhB,IAAI,EAAE,MAAM;aACZ,KAAK,CAAC,EAAE,KAAK;IAJjC,QAAQ,CAAC,IAAI,qBAAqB;gBAGd,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,KAAK,YAAA;CAKpC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAExD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAG9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAGtE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/file-provider/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAGZ,IAAI,EAAE,MAAM;IAFxC,QAAQ,CAAC,IAAI,oBAAoB;gBAEL,IAAI,EAAE,MAAM;CAI3C;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAIhB,IAAI,EAAE,MAAM;aACZ,KAAK,CAAC,EAAE,KAAK;IAJjC,QAAQ,CAAC,IAAI,qBAAqB;gBAGd,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,KAAK,YAAA;CAKpC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7E;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAExD;;;;;;;;;;OAUG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAG9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAGtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/file-provider/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAGZ;IAFnB,IAAI,GAAG,gBAAgB,CAAC;IAEjC,YAA4B,IAAY;QACpC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QADT,SAAI,GAAJ,IAAI,CAAQ;QAEpC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACpC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAIhB;IACA;IAJX,IAAI,GAAG,iBAAiB,CAAC;IAElC,YACoB,IAAY,EACZ,KAAa;QAE7B,KAAK,CAAC,wBAAwB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAH3D,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAChC,CAAC;CACJ;AA0CD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAC9C,OAAO,KAAK,YAAY,iBAAiB;QACrC,CAAC,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAK,KAAkC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;AACrH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC1C,OAAO,KAAK,YAAY,aAAa;QACjC,CAAC,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAK,KAAkC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;AACtH,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/file-provider/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAGZ;IAFnB,IAAI,GAAG,gBAAgB,CAAC;IAEjC,YAA4B,IAAY;QACpC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QADT,SAAI,GAAJ,IAAI,CAAQ;QAEpC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACpC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAIhB;IACA;IAJX,IAAI,GAAG,iBAAiB,CAAC;IAElC,YACoB,IAAY,EACZ,KAAa;QAE7B,KAAK,CAAC,wBAAwB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAH3D,SAAI,GAAJ,IAAI,CAAQ;QACZ,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAChC,CAAC;CACJ;AAmDD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAC9C,OAAO,KAAK,YAAY,iBAAiB;QACrC,CAAC,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAK,KAAkC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC;AACrH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC1C,OAAO,KAAK,YAAY,aAAa;QACjC,CAAC,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAK,KAAkC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;AACtH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"assembler.d.ts","sourceRoot":"","sources":["../../src/parse/assembler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EAEL,QAAQ,EAEX,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkDxD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAmEtF;AA+GD;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,EAC3B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,GAClB,QAAQ,CA2BV"}
1
+ {"version":3,"file":"assembler.d.ts","sourceRoot":"","sources":["../../src/parse/assembler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EAEL,QAAQ,EAEX,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkDxD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,CAmEtF;AAgHD;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE,EAC3B,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,MAAM,GAClB,QAAQ,CA2BV"}
@@ -142,8 +142,8 @@ function configToMetadata(config) {
142
142
  meta.version = config.version;
143
143
  hasContent = true;
144
144
  }
145
- else if (config.specIri) {
146
- meta.version = config.specIri;
145
+ if (config.deps && config.deps.length > 0) {
146
+ meta.deps = config.deps;
147
147
  hasContent = true;
148
148
  }
149
149
  if (config.publishDate) {
@@ -1 +1 @@
1
- {"version":3,"file":"assembler.js","sourceRoot":"","sources":["../../src/parse/assembler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assembler.js","sourceRoot":"","sources":["../../src/parse/assembler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * IDL HTML Parser
3
+ *
4
+ * Parses <pre class="idl"> blocks to extract WebIDL definitions.
5
+ * Tokenizes the content to generate a BlockIdl node with Inline children.
6
+ * - Definitions (interfaces, members) become InlineDefinition.
7
+ * - Types become Reference nodes (to be linked).
8
+ * - Keywords/Punctuation become Text nodes.
9
+ */
10
+ import type { HtmlParserModule } from '#src/parse/registry';
11
+ export declare const IdlHtmlParser: HtmlParserModule;
12
+ //# sourceMappingURL=IdlHtmlParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdlHtmlParser.d.ts","sourceRoot":"","sources":["../../../src/parse/html/IdlHtmlParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAoC,MAAM,qBAAqB,CAAC;AAkB9F,eAAO,MAAM,aAAa,EAAE,gBAkJ3B,CAAC"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * IDL HTML Parser
3
+ *
4
+ * Parses <pre class="idl"> blocks to extract WebIDL definitions.
5
+ * Tokenizes the content to generate a BlockIdl node with Inline children.
6
+ * - Definitions (interfaces, members) become InlineDefinition.
7
+ * - Types become Reference nodes (to be linked).
8
+ * - Keywords/Punctuation become Text nodes.
9
+ */
10
+ import { CodeHtmlParser } from './CodeHtmlParser.js';
11
+ // Keywords that start a definition
12
+ const DEF_KEYWORDS = new Set(['interface', 'dictionary', 'enum', 'callback', 'typedef', 'partial']);
13
+ // Keywords to ignore (not types or names)
14
+ const IGNORED_KEYWORDS = new Set([
15
+ 'readonly', 'attribute', 'required', 'const', 'serializer', 'stringifier', 'inherit',
16
+ 'static', 'getter', 'setter', 'deleter', 'legacycaller', 'iterable', 'maplike', 'setlike'
17
+ ]);
18
+ // Helper to check if a word is likely a type or name
19
+ function isIdentifier(word) {
20
+ return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(word);
21
+ }
22
+ export const IdlHtmlParser = {
23
+ name: 'IdlHtmlParser',
24
+ handles: ['pre'],
25
+ order: 9, // Must be lower than CodeHtmlParser (10)
26
+ handleBlock(element, ctx) {
27
+ // Check if it's an IDL block
28
+ const className = ctx.getAttr(element, 'class') ?? ctx.getAttr(element, 'className');
29
+ if (!className || !className.split(/\s+/).includes('idl')) {
30
+ // Fallback to standard code parser for non-IDL pre blocks
31
+ return CodeHtmlParser.handleBlock(element, ctx);
32
+ }
33
+ const content = ctx.getTextContent(element);
34
+ const sourcePos = ctx.createSourcePos(element);
35
+ const children = [];
36
+ // Tokenization State
37
+ let currentContext = 'top-level';
38
+ let contextName = null;
39
+ let expectingNameFor = null; // 'interface', 'dictionary', etc.
40
+ let expectingMemberName = false;
41
+ // Simple tokenizer: split by delimiters but keep them
42
+ // Delimiters: whitespace, {};(),=?
43
+ const tokens = content.split(/([ \t\n\r]+|[{};(),=?])/);
44
+ for (const token of tokens) {
45
+ if (!token)
46
+ continue;
47
+ // Handle whitespace/punctuation
48
+ if (/^[ \t\n\r]+$/.test(token) || /^[{};(),=?]$/.test(token)) {
49
+ children.push({ type: 'text', value: token, sourcePos }); // TODO: finer pos
50
+ // State transitions based on punctuation
51
+ if (token === '{') {
52
+ // Enter context
53
+ }
54
+ else if (token === '}') {
55
+ currentContext = 'top-level';
56
+ contextName = null;
57
+ }
58
+ else if (token === ';') {
59
+ expectingMemberName = false;
60
+ if (currentContext === 'top-level') {
61
+ expectingNameFor = null;
62
+ }
63
+ }
64
+ continue;
65
+ }
66
+ // Handle Words
67
+ if (DEF_KEYWORDS.has(token)) {
68
+ children.push({ type: 'text', value: token, sourcePos });
69
+ expectingNameFor = token; // Next identifier is the name being defined
70
+ }
71
+ else if (IGNORED_KEYWORDS.has(token)) {
72
+ children.push({ type: 'text', value: token, sourcePos });
73
+ }
74
+ else if (isIdentifier(token)) {
75
+ // Decision: Definition or Reference?
76
+ if (expectingNameFor) {
77
+ // This is a Definition! (e.g., interface MyInterface)
78
+ const dfnType = expectingNameFor === 'interface' ? 'interface' :
79
+ expectingNameFor === 'dictionary' ? 'dictionary' :
80
+ expectingNameFor === 'enum' ? 'enum' : 'typedef';
81
+ children.push({
82
+ type: 'definition',
83
+ term: token,
84
+ dfnType,
85
+ sourcePos,
86
+ children: [{ type: 'text', value: token }]
87
+ });
88
+ contextName = token;
89
+ currentContext = dfnType;
90
+ expectingNameFor = null; // Reset
91
+ }
92
+ else if (contextName && (currentContext === 'interface' || currentContext === 'dictionary')) {
93
+ // We are inside an interface/dictionary.
94
+ // Is this a Type or a Member Name?
95
+ // Heuristic: If it's followed by (; or = or (), it's likely a member name.
96
+ // But we are processing stream.
97
+ // A better heuristic for IDL: Type MemberName;
98
+ // So if we just saw a Type, this is a MemberName.
99
+ // This simple tokenizer is too state-light for perfect parsing.
100
+ //
101
+ // Let's use a simpler heuristic:
102
+ // If it matches a known Type pattern (starts with Uppercase), treat as Reference.
103
+ // If it starts with lowercase, treat as Member Name (Definition), unless it's a primitive type.
104
+ const isPrimitive = ['long', 'unsigned', 'short', 'float', 'double', 'boolean', 'byte', 'octet', 'void', 'any', 'object'].includes(token);
105
+ if (isPrimitive) {
106
+ children.push({ type: 'text', value: token, sourcePos });
107
+ expectingMemberName = true; // Next lowercase identifier is likely the member
108
+ }
109
+ else if (/^[A-Z]/.test(token)) {
110
+ // Uppercase -> Likely a Type Reference
111
+ children.push({
112
+ type: 'workspaceIdlReference',
113
+ targetTerm: token,
114
+ children: [{ type: 'text', value: token }]
115
+ });
116
+ expectingMemberName = true;
117
+ }
118
+ else {
119
+ // Lowercase -> Likely a Member Name (if we are expecting one)
120
+ // or a primitive type we missed?
121
+ if (expectingMemberName) {
122
+ const fullTerm = `${contextName}/${token}`;
123
+ children.push({
124
+ type: 'definition',
125
+ term: fullTerm,
126
+ dfnType: currentContext === 'interface' ? 'method' : 'field',
127
+ sourcePos,
128
+ children: [{ type: 'text', value: token }]
129
+ });
130
+ expectingMemberName = false;
131
+ }
132
+ else {
133
+ // Just text?
134
+ children.push({ type: 'text', value: token, sourcePos });
135
+ }
136
+ }
137
+ }
138
+ else {
139
+ // Default to text or reference?
140
+ // If it looks like a type, reference it.
141
+ if (/^[A-Z]/.test(token)) {
142
+ children.push({
143
+ type: 'workspaceIdlReference',
144
+ targetTerm: token,
145
+ children: [{ type: 'text', value: token }]
146
+ });
147
+ }
148
+ else {
149
+ children.push({ type: 'text', value: token, sourcePos });
150
+ }
151
+ }
152
+ }
153
+ else {
154
+ // Fallback for unknown tokens
155
+ children.push({ type: 'text', value: token, sourcePos });
156
+ }
157
+ }
158
+ return {
159
+ type: 'idl',
160
+ value: content,
161
+ sourcePos,
162
+ children
163
+ }; // Type assertion needed until registry types update
164
+ }
165
+ };
166
+ //# sourceMappingURL=IdlHtmlParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdlHtmlParser.js","sourceRoot":"","sources":["../../../src/parse/html/IdlHtmlParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { HtmlParserModule } from '#src/parse/registry';
2
+ /**
3
+ * HTML parser module for <likec4-view>.
4
+ */
5
+ export declare const LikeC4ViewHtmlParser: HtmlParserModule;
6
+ //# sourceMappingURL=LikeC4ViewHtmlParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LikeC4ViewHtmlParser.d.ts","sourceRoot":"","sources":["../../../src/parse/html/LikeC4ViewHtmlParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAoC,MAAM,qBAAqB,CAAC;AAG9F;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBA8BlC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * HTML parser module for <likec4-view>.
3
+ */
4
+ export const LikeC4ViewHtmlParser = {
5
+ name: 'LikeC4ViewHtmlParser',
6
+ handles: ['likec4-view'],
7
+ order: 9,
8
+ handleBlock(element, ctx) {
9
+ const sourcePos = ctx.createSourcePos(element);
10
+ const id = ctx.getAttr(element, 'id');
11
+ const viewId = ctx.getAttr(element, 'view-id') || ctx.getAttr(element, 'viewid');
12
+ const dynamicVariant = ctx.getAttr(element, 'dynamic-variant') || ctx.getAttr(element, 'dynamicvariant');
13
+ if (!viewId) {
14
+ return null;
15
+ }
16
+ const result = {
17
+ type: 'likeC4View',
18
+ viewId: viewId,
19
+ children: [],
20
+ };
21
+ if (dynamicVariant === 'diagram' || dynamicVariant === 'sequence') {
22
+ result.dynamicVariant = dynamicVariant;
23
+ }
24
+ if (id)
25
+ result.id = id;
26
+ if (sourcePos)
27
+ result.sourcePos = sourcePos;
28
+ return result;
29
+ },
30
+ };
31
+ //# sourceMappingURL=LikeC4ViewHtmlParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LikeC4ViewHtmlParser.js","sourceRoot":"","sources":["../../../src/parse/html/LikeC4ViewHtmlParser.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IAClD,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,KAAK,EAAE,CAAC;IAER,WAAW,CAAC,OAAgB,EAAE,GAAiB;QAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjF,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAEzG,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAoB;YAC5B,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,MAAO;YACf,QAAQ,EAAE,EAAE;SACf,CAAC;QAEF,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;YAChE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;QAC3C,CAAC;QAED,IAAI,EAAE;YAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACvB,IAAI,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAE5C,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Escape Shorthand Pipes in Table Lines
3
+ *
4
+ * This preprocessor escapes pipe characters inside shorthand patterns
5
+ * (e.g. [§#id|alias], [=term|alias=], |var|) only within Markdown tables.
6
+ *
7
+ * This is necessary because GFM/remark-gfm split tables on unescaped pipes
8
+ * even if they are inside backtick spans (inline code).
9
+ */
10
+ /**
11
+ * Robustly identify table blocks and escape pipes in them.
12
+ */
13
+ export declare function escapeShorthandPipesInTables(content: string): string;
14
+ //# sourceMappingURL=escapeTablePipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeTablePipes.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/escapeTablePipes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkBH;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA8DpE"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Escape Shorthand Pipes in Table Lines
3
+ *
4
+ * This preprocessor escapes pipe characters inside shorthand patterns
5
+ * (e.g. [§#id|alias], [=term|alias=], |var|) only within Markdown tables.
6
+ *
7
+ * This is necessary because GFM/remark-gfm split tables on unescaped pipes
8
+ * even if they are inside backtick spans (inline code).
9
+ */
10
+ const FENCED_CODE_START = /^(\s{0,3})(?:```|~~~)/;
11
+ const TABLE_SEPARATOR = /^\s*\|?[\s:|-]+\|[\s:|-]*\|?\s*$/;
12
+ /**
13
+ * Escape shorthand pipes inside a string.
14
+ */
15
+ function escapeShorthandPipes(text) {
16
+ return text
17
+ // Section reference: [§#id|alias] → [§#id\|alias]
18
+ .replace(/(\[§#[^\]|]*)(\|)([^\]]+\])/g, '$1\\|$3')
19
+ // Concept: [=term|alias=] → [=term\|alias=]
20
+ .replace(/(\[=[^=|]*)(\|)([^=]+=\])/g, '$1\\|$3')
21
+ // Variable: |var| → \|var\|
22
+ .replace(/(?<!\\)\|([^\s|:][^|:]*?)\|/g, '\\|$1\\|');
23
+ }
24
+ /**
25
+ * Robustly identify table blocks and escape pipes in them.
26
+ */
27
+ export function escapeShorthandPipesInTables(content) {
28
+ const lines = content.split('\n');
29
+ const result = [];
30
+ let i = 0;
31
+ while (i < lines.length) {
32
+ const line = lines[i];
33
+ // 1. Skip fenced code blocks
34
+ if (FENCED_CODE_START.test(line)) {
35
+ const fence = line.match(FENCED_CODE_START)[0].trim();
36
+ result.push(line);
37
+ i++;
38
+ while (i < lines.length && !lines[i].trim().startsWith(fence)) {
39
+ result.push(lines[i]);
40
+ i++;
41
+ }
42
+ if (i < lines.length) {
43
+ result.push(lines[i]);
44
+ i++;
45
+ }
46
+ continue;
47
+ }
48
+ // 2. Detect table blocks
49
+ // A table must have a separator row as its second row (or later if it has multiple header rows,
50
+ // but typically second). We look ahead for a separator row.
51
+ let isTable = false;
52
+ let tableEnd = i;
53
+ // Scan ahead to see if this block contains a table separator
54
+ for (let j = i; j < lines.length && lines[j].trim() !== ''; j++) {
55
+ if (TABLE_SEPARATOR.test(lines[j])) {
56
+ isTable = true;
57
+ // Found separator, now find the end of the table
58
+ for (let k = j + 1; k < lines.length && lines[k].trim() !== ''; k++) {
59
+ tableEnd = k;
60
+ }
61
+ if (tableEnd === i)
62
+ tableEnd = j; // only header + separator
63
+ break;
64
+ }
65
+ }
66
+ if (isTable) {
67
+ // Process all lines in the table block
68
+ while (i <= tableEnd) {
69
+ // We escape pipes in all table lines EXCEPT the separator row itself
70
+ if (TABLE_SEPARATOR.test(lines[i])) {
71
+ result.push(lines[i]);
72
+ }
73
+ else {
74
+ result.push(escapeShorthandPipes(lines[i]));
75
+ }
76
+ i++;
77
+ }
78
+ }
79
+ else {
80
+ // Not a table, push as-is
81
+ result.push(line);
82
+ i++;
83
+ }
84
+ }
85
+ return result.join('\n');
86
+ }
87
+ //# sourceMappingURL=escapeTablePipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeTablePipes.js","sourceRoot":"","sources":["../../../src/parse/markdown/escapeTablePipes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EAGR,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,oBAAoB,EAIvB,MAAM,qBAAqB,CAAC;AAoC7B;;GAEG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IACjD,QAAQ,CAAC,MAAM,EAAG,UAAU,CAAU;IAEtC,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,QAAQ,CAAuB;gBAE3B,QAAQ,GAAE,oBAAsC;IAI5D;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;IAgB5C;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAgBlC"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parse/markdown/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EACR,OAAO,EACP,KAAK,EAGR,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,oBAAoB,EAIvB,MAAM,qBAAqB,CAAC;AAqC7B;;GAEG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IACjD,QAAQ,CAAC,MAAM,EAAG,UAAU,CAAU;IAEtC,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,QAAQ,CAAuB;gBAE3B,QAAQ,GAAE,oBAAsC;IAI5D;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,EAAE;IAkB5C;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAgBlC"}
@@ -8,6 +8,7 @@ import { unified } from 'unified';
8
8
  import remarkParse from 'remark-parse';
9
9
  import remarkGfm from 'remark-gfm';
10
10
  import { defaultRegistry, } from '#src/parse/registry';
11
+ import { escapeShorthandPipesInTables } from '../utils/markdown-utils.js';
11
12
  /**
12
13
  * Create source position from mdast node position
13
14
  */
@@ -51,7 +52,9 @@ export class MarkdownUnitParser {
51
52
  * Parse markdown unit to AST blocks
52
53
  */
53
54
  parse(unit) {
54
- const tree = this.processor.parse(unit.content);
55
+ // Escape shorthand pipes in table lines before GFM splits them into cells
56
+ const content = escapeShorthandPipesInTables(unit.content);
57
+ const tree = this.processor.parse(content);
55
58
  // Create context for handlers
56
59
  const ctx = this.createContext(unit);
57
60
  const blocks = [];