@vibe-agent-toolkit/resource-compiler 0.1.11
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 +449 -0
- package/bin/vat-compile-resources +8 -0
- package/dist/cli/compile-command.d.ts +11 -0
- package/dist/cli/compile-command.d.ts.map +1 -0
- package/dist/cli/compile-command.js +34 -0
- package/dist/cli/compile-command.js.map +1 -0
- package/dist/cli/compile-utils.d.ts +41 -0
- package/dist/cli/compile-utils.d.ts.map +1 -0
- package/dist/cli/compile-utils.js +51 -0
- package/dist/cli/compile-utils.js.map +1 -0
- package/dist/cli/generate-types-command.d.ts +11 -0
- package/dist/cli/generate-types-command.d.ts.map +1 -0
- package/dist/cli/generate-types-command.js +107 -0
- package/dist/cli/generate-types-command.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/watch-command.d.ts +11 -0
- package/dist/cli/watch-command.d.ts.map +1 -0
- package/dist/cli/watch-command.js +88 -0
- package/dist/cli/watch-command.js.map +1 -0
- package/dist/compiler/dts-generator.d.ts +29 -0
- package/dist/compiler/dts-generator.d.ts.map +1 -0
- package/dist/compiler/dts-generator.js +133 -0
- package/dist/compiler/dts-generator.js.map +1 -0
- package/dist/compiler/index.d.ts +9 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +9 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/javascript-generator.d.ts +22 -0
- package/dist/compiler/javascript-generator.d.ts.map +1 -0
- package/dist/compiler/javascript-generator.js +106 -0
- package/dist/compiler/javascript-generator.js.map +1 -0
- package/dist/compiler/markdown-compiler.d.ts +30 -0
- package/dist/compiler/markdown-compiler.d.ts.map +1 -0
- package/dist/compiler/markdown-compiler.js +125 -0
- package/dist/compiler/markdown-compiler.js.map +1 -0
- package/dist/compiler/markdown-parser.d.ts +32 -0
- package/dist/compiler/markdown-parser.d.ts.map +1 -0
- package/dist/compiler/markdown-parser.js +126 -0
- package/dist/compiler/markdown-parser.js.map +1 -0
- package/dist/compiler/types.d.ts +71 -0
- package/dist/compiler/types.d.ts.map +1 -0
- package/dist/compiler/types.js +5 -0
- package/dist/compiler/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/language-service/completions.d.ts +27 -0
- package/dist/language-service/completions.d.ts.map +1 -0
- package/dist/language-service/completions.js +147 -0
- package/dist/language-service/completions.js.map +1 -0
- package/dist/language-service/definitions.d.ts +14 -0
- package/dist/language-service/definitions.d.ts.map +1 -0
- package/dist/language-service/definitions.js +140 -0
- package/dist/language-service/definitions.js.map +1 -0
- package/dist/language-service/diagnostics.d.ts +13 -0
- package/dist/language-service/diagnostics.d.ts.map +1 -0
- package/dist/language-service/diagnostics.js +169 -0
- package/dist/language-service/diagnostics.js.map +1 -0
- package/dist/language-service/hover.d.ts +15 -0
- package/dist/language-service/hover.d.ts.map +1 -0
- package/dist/language-service/hover.js +125 -0
- package/dist/language-service/hover.js.map +1 -0
- package/dist/language-service/index.d.ts +26 -0
- package/dist/language-service/index.d.ts.map +1 -0
- package/dist/language-service/index.js +30 -0
- package/dist/language-service/index.js.map +1 -0
- package/dist/language-service/markdown-cache.d.ts +44 -0
- package/dist/language-service/markdown-cache.d.ts.map +1 -0
- package/dist/language-service/markdown-cache.js +77 -0
- package/dist/language-service/markdown-cache.js.map +1 -0
- package/dist/language-service/plugin.d.ts +15 -0
- package/dist/language-service/plugin.d.ts.map +1 -0
- package/dist/language-service/plugin.js +51 -0
- package/dist/language-service/plugin.js.map +1 -0
- package/dist/language-service/utils.d.ts +173 -0
- package/dist/language-service/utils.d.ts.map +1 -0
- package/dist/language-service/utils.js +341 -0
- package/dist/language-service/utils.js.map +1 -0
- package/dist/transformer/ast-helpers.d.ts +35 -0
- package/dist/transformer/ast-helpers.d.ts.map +1 -0
- package/dist/transformer/ast-helpers.js +153 -0
- package/dist/transformer/ast-helpers.js.map +1 -0
- package/dist/transformer/declaration-generator.d.ts +47 -0
- package/dist/transformer/declaration-generator.d.ts.map +1 -0
- package/dist/transformer/declaration-generator.js +53 -0
- package/dist/transformer/declaration-generator.js.map +1 -0
- package/dist/transformer/import-detector.d.ts +62 -0
- package/dist/transformer/import-detector.d.ts.map +1 -0
- package/dist/transformer/import-detector.js +115 -0
- package/dist/transformer/import-detector.js.map +1 -0
- package/dist/transformer/index.d.ts +11 -0
- package/dist/transformer/index.d.ts.map +1 -0
- package/dist/transformer/index.js +11 -0
- package/dist/transformer/index.js.map +1 -0
- package/dist/transformer/module-generator.d.ts +29 -0
- package/dist/transformer/module-generator.d.ts.map +1 -0
- package/dist/transformer/module-generator.js +48 -0
- package/dist/transformer/module-generator.js.map +1 -0
- package/dist/transformer/path-resolver.d.ts +32 -0
- package/dist/transformer/path-resolver.d.ts.map +1 -0
- package/dist/transformer/path-resolver.js +112 -0
- package/dist/transformer/path-resolver.js.map +1 -0
- package/dist/transformer/transformer.d.ts +46 -0
- package/dist/transformer/transformer.d.ts.map +1 -0
- package/dist/transformer/transformer.js +89 -0
- package/dist/transformer/transformer.js.map +1 -0
- package/dist/utils/copy-resources.d.ts +54 -0
- package/dist/utils/copy-resources.d.ts.map +1 -0
- package/dist/utils/copy-resources.js +77 -0
- package/dist/utils/copy-resources.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/language-service/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AST helper utilities for creating TypeScript nodes
|
|
3
|
+
* Converts MarkdownResource objects to TypeScript AST object literals
|
|
4
|
+
*/
|
|
5
|
+
import ts from 'typescript';
|
|
6
|
+
import type { MarkdownResource } from '../compiler/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Convert a MarkdownResource to an AST object literal
|
|
9
|
+
*
|
|
10
|
+
* @param resource - The parsed markdown resource
|
|
11
|
+
* @returns Object literal expression representing the resource
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const resource = { frontmatter: { title: 'Test' }, content: '...', fragments: [...] };
|
|
16
|
+
* const ast = resourceToAst(resource);
|
|
17
|
+
* // Generates: { frontmatter: { title: 'Test' }, content: '...', fragments: [...] }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function resourceToAst(resource: MarkdownResource): ts.ObjectLiteralExpression;
|
|
21
|
+
/**
|
|
22
|
+
* Create a const variable declaration statement
|
|
23
|
+
*
|
|
24
|
+
* @param name - Variable name
|
|
25
|
+
* @param initializer - Expression to assign
|
|
26
|
+
* @returns Variable statement node
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const node = createConstDeclaration('Core', objectExpression);
|
|
31
|
+
* // Generates: const Core = { ... };
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function createConstDeclaration(name: string, initializer: ts.Expression): ts.VariableStatement;
|
|
35
|
+
//# sourceMappingURL=ast-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-helpers.d.ts","sourceRoot":"","sources":["../../src/transformer/ast-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,sBAAsB,CAAC;AAkH/E;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,gBAAgB,GAAG,EAAE,CAAC,uBAAuB,CAqBpF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,EAAE,CAAC,UAAU,GACzB,EAAE,CAAC,iBAAiB,CAetB"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AST helper utilities for creating TypeScript nodes
|
|
3
|
+
* Converts MarkdownResource objects to TypeScript AST object literals
|
|
4
|
+
*/
|
|
5
|
+
import ts from 'typescript';
|
|
6
|
+
/**
|
|
7
|
+
* Create a string literal node
|
|
8
|
+
*
|
|
9
|
+
* @param value - The string value
|
|
10
|
+
* @returns String literal node
|
|
11
|
+
*/
|
|
12
|
+
function createStringLiteral(value) {
|
|
13
|
+
return ts.factory.createStringLiteral(value);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create an object literal property assignment
|
|
17
|
+
*
|
|
18
|
+
* @param name - Property name
|
|
19
|
+
* @param value - Property value expression
|
|
20
|
+
* @returns Property assignment node
|
|
21
|
+
*/
|
|
22
|
+
function createPropertyAssignment(name, value) {
|
|
23
|
+
return ts.factory.createPropertyAssignment(ts.factory.createIdentifier(name), value);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert a plain object to an AST object literal
|
|
27
|
+
*
|
|
28
|
+
* @param obj - Plain JavaScript object
|
|
29
|
+
* @returns Object literal expression node
|
|
30
|
+
*/
|
|
31
|
+
function objectToAst(obj) {
|
|
32
|
+
const properties = [];
|
|
33
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
34
|
+
let valueNode;
|
|
35
|
+
if (typeof value === 'string') {
|
|
36
|
+
valueNode = createStringLiteral(value);
|
|
37
|
+
}
|
|
38
|
+
else if (typeof value === 'number') {
|
|
39
|
+
valueNode = ts.factory.createNumericLiteral(value);
|
|
40
|
+
}
|
|
41
|
+
else if (typeof value === 'boolean') {
|
|
42
|
+
valueNode = value ? ts.factory.createTrue() : ts.factory.createFalse();
|
|
43
|
+
}
|
|
44
|
+
else if (value === null) {
|
|
45
|
+
valueNode = ts.factory.createNull();
|
|
46
|
+
}
|
|
47
|
+
else if (Array.isArray(value)) {
|
|
48
|
+
valueNode = arrayToAst(value);
|
|
49
|
+
}
|
|
50
|
+
else if (typeof value === 'object') {
|
|
51
|
+
valueNode = objectToAst(value);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// Fallback for undefined or other types
|
|
55
|
+
valueNode = ts.factory.createIdentifier('undefined');
|
|
56
|
+
}
|
|
57
|
+
properties.push(createPropertyAssignment(key, valueNode));
|
|
58
|
+
}
|
|
59
|
+
return ts.factory.createObjectLiteralExpression(properties, true);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Convert an array to an AST array literal
|
|
63
|
+
*
|
|
64
|
+
* @param arr - Array of values
|
|
65
|
+
* @returns Array literal expression node
|
|
66
|
+
*/
|
|
67
|
+
function arrayToAst(arr) {
|
|
68
|
+
const elements = [];
|
|
69
|
+
for (const item of arr) {
|
|
70
|
+
if (typeof item === 'string') {
|
|
71
|
+
elements.push(createStringLiteral(item));
|
|
72
|
+
}
|
|
73
|
+
else if (typeof item === 'number') {
|
|
74
|
+
elements.push(ts.factory.createNumericLiteral(item));
|
|
75
|
+
}
|
|
76
|
+
else if (typeof item === 'boolean') {
|
|
77
|
+
elements.push(item ? ts.factory.createTrue() : ts.factory.createFalse());
|
|
78
|
+
}
|
|
79
|
+
else if (item === null) {
|
|
80
|
+
elements.push(ts.factory.createNull());
|
|
81
|
+
}
|
|
82
|
+
else if (Array.isArray(item)) {
|
|
83
|
+
elements.push(arrayToAst(item));
|
|
84
|
+
}
|
|
85
|
+
else if (typeof item === 'object') {
|
|
86
|
+
elements.push(objectToAst(item));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
elements.push(ts.factory.createIdentifier('undefined'));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return ts.factory.createArrayLiteralExpression(elements, false);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Convert a MarkdownFragment to an AST object literal
|
|
96
|
+
*
|
|
97
|
+
* @param fragment - The markdown fragment
|
|
98
|
+
* @returns Object literal expression node
|
|
99
|
+
*/
|
|
100
|
+
function fragmentToAst(fragment) {
|
|
101
|
+
return ts.factory.createObjectLiteralExpression([
|
|
102
|
+
createPropertyAssignment('heading', createStringLiteral(fragment.heading)),
|
|
103
|
+
createPropertyAssignment('slug', createStringLiteral(fragment.slug)),
|
|
104
|
+
createPropertyAssignment('camelCase', createStringLiteral(fragment.camelCase)),
|
|
105
|
+
createPropertyAssignment('header', createStringLiteral(fragment.header)),
|
|
106
|
+
createPropertyAssignment('body', createStringLiteral(fragment.body)),
|
|
107
|
+
createPropertyAssignment('text', createStringLiteral(fragment.text)),
|
|
108
|
+
], true);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Convert a MarkdownResource to an AST object literal
|
|
112
|
+
*
|
|
113
|
+
* @param resource - The parsed markdown resource
|
|
114
|
+
* @returns Object literal expression representing the resource
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* const resource = { frontmatter: { title: 'Test' }, content: '...', fragments: [...] };
|
|
119
|
+
* const ast = resourceToAst(resource);
|
|
120
|
+
* // Generates: { frontmatter: { title: 'Test' }, content: '...', fragments: [...] }
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export function resourceToAst(resource) {
|
|
124
|
+
// Convert frontmatter
|
|
125
|
+
const frontmatterAst = objectToAst(resource.frontmatter);
|
|
126
|
+
// Build fragments object with camelCase property access
|
|
127
|
+
const fragmentsObject = ts.factory.createObjectLiteralExpression(resource.fragments.map((fragment) => createPropertyAssignment(fragment.camelCase, fragmentToAst(fragment))), true);
|
|
128
|
+
// Create main object with meta, text, and fragments
|
|
129
|
+
return ts.factory.createObjectLiteralExpression([
|
|
130
|
+
createPropertyAssignment('meta', frontmatterAst),
|
|
131
|
+
createPropertyAssignment('text', createStringLiteral(resource.content)),
|
|
132
|
+
createPropertyAssignment('fragments', fragmentsObject),
|
|
133
|
+
], true);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Create a const variable declaration statement
|
|
137
|
+
*
|
|
138
|
+
* @param name - Variable name
|
|
139
|
+
* @param initializer - Expression to assign
|
|
140
|
+
* @returns Variable statement node
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* const node = createConstDeclaration('Core', objectExpression);
|
|
145
|
+
* // Generates: const Core = { ... };
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export function createConstDeclaration(name, initializer) {
|
|
149
|
+
return ts.factory.createVariableStatement(undefined, ts.factory.createVariableDeclarationList([
|
|
150
|
+
ts.factory.createVariableDeclaration(ts.factory.createIdentifier(name), undefined, undefined, initializer),
|
|
151
|
+
], ts.NodeFlags.Const));
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=ast-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-helpers.js","sourceRoot":"","sources":["../../src/transformer/ast-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declaration file generator for markdown modules
|
|
3
|
+
* Generates .md.d.ts files that TypeScript can use for module resolution
|
|
4
|
+
*/
|
|
5
|
+
import type { MarkdownResource } from '../compiler/types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generate a .md.d.ts declaration file for a markdown module
|
|
8
|
+
*
|
|
9
|
+
* For a file named `prompts.md`, this generates `prompts.md.d.ts` that contains
|
|
10
|
+
* the exports directly (not wrapped in declare module), allowing TypeScript to
|
|
11
|
+
* resolve the .md import using standard module resolution.
|
|
12
|
+
*
|
|
13
|
+
* @param mdPath - Absolute path to the markdown file (unused, kept for API compatibility)
|
|
14
|
+
* @param resource - Parsed markdown resource
|
|
15
|
+
* @returns Generated TypeScript declaration content
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const resource = parseMarkdown(content);
|
|
20
|
+
* const declaration = generateMarkdownDeclarationFile('/path/to/prompts.md', resource);
|
|
21
|
+
* // Outputs:
|
|
22
|
+
* // export interface Fragment {
|
|
23
|
+
* // readonly header: string;
|
|
24
|
+
* // readonly body: string;
|
|
25
|
+
* // readonly text: string;
|
|
26
|
+
* // }
|
|
27
|
+
* // export const meta: { ... };
|
|
28
|
+
* // export const text: string;
|
|
29
|
+
* // ...
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function generateMarkdownDeclarationFile(_mdPath: string, resource: MarkdownResource): string;
|
|
33
|
+
/**
|
|
34
|
+
* Get the output path for a .md.d.ts file
|
|
35
|
+
* Places the declaration file alongside the source .md file
|
|
36
|
+
*
|
|
37
|
+
* @param mdPath - Absolute path to the markdown file
|
|
38
|
+
* @returns Absolute path for the .md.d.ts file
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* getDeclarationPath('/path/to/file.md')
|
|
43
|
+
* // Returns: '/path/to/file.md.d.ts'
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function getDeclarationPath(mdPath: string): string;
|
|
47
|
+
//# sourceMappingURL=declaration-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declaration-generator.d.ts","sourceRoot":"","sources":["../../src/transformer/declaration-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,GACzB,MAAM,CAIR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declaration file generator for markdown modules
|
|
3
|
+
* Generates .md.d.ts files that TypeScript can use for module resolution
|
|
4
|
+
*/
|
|
5
|
+
import { generateTypeScriptDeclarations } from '../compiler/dts-generator.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generate a .md.d.ts declaration file for a markdown module
|
|
8
|
+
*
|
|
9
|
+
* For a file named `prompts.md`, this generates `prompts.md.d.ts` that contains
|
|
10
|
+
* the exports directly (not wrapped in declare module), allowing TypeScript to
|
|
11
|
+
* resolve the .md import using standard module resolution.
|
|
12
|
+
*
|
|
13
|
+
* @param mdPath - Absolute path to the markdown file (unused, kept for API compatibility)
|
|
14
|
+
* @param resource - Parsed markdown resource
|
|
15
|
+
* @returns Generated TypeScript declaration content
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const resource = parseMarkdown(content);
|
|
20
|
+
* const declaration = generateMarkdownDeclarationFile('/path/to/prompts.md', resource);
|
|
21
|
+
* // Outputs:
|
|
22
|
+
* // export interface Fragment {
|
|
23
|
+
* // readonly header: string;
|
|
24
|
+
* // readonly body: string;
|
|
25
|
+
* // readonly text: string;
|
|
26
|
+
* // }
|
|
27
|
+
* // export const meta: { ... };
|
|
28
|
+
* // export const text: string;
|
|
29
|
+
* // ...
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function generateMarkdownDeclarationFile(_mdPath, resource) {
|
|
33
|
+
// Simply return the declarations directly
|
|
34
|
+
// TypeScript will associate prompts.md.d.ts with prompts.md automatically
|
|
35
|
+
return generateTypeScriptDeclarations(resource);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the output path for a .md.d.ts file
|
|
39
|
+
* Places the declaration file alongside the source .md file
|
|
40
|
+
*
|
|
41
|
+
* @param mdPath - Absolute path to the markdown file
|
|
42
|
+
* @returns Absolute path for the .md.d.ts file
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* getDeclarationPath('/path/to/file.md')
|
|
47
|
+
* // Returns: '/path/to/file.md.d.ts'
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export function getDeclarationPath(mdPath) {
|
|
51
|
+
return `${mdPath}.d.ts`;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=declaration-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declaration-generator.js","sourceRoot":"","sources":["../../src/transformer/declaration-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAG9E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAe,EACf,QAA0B;IAE1B,0CAA0C;IAC1C,0EAA0E;IAC1E,OAAO,8BAA8B,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,GAAG,MAAM,OAAO,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import detection utilities for TypeScript AST
|
|
3
|
+
* Detects .md imports and extracts import information
|
|
4
|
+
*/
|
|
5
|
+
import ts from 'typescript';
|
|
6
|
+
/**
|
|
7
|
+
* Information about a detected .md import
|
|
8
|
+
*/
|
|
9
|
+
export interface MarkdownImportInfo {
|
|
10
|
+
/** The import declaration node */
|
|
11
|
+
node: ts.ImportDeclaration;
|
|
12
|
+
/** The identifier name (e.g., "Core" in "import * as Core") */
|
|
13
|
+
identifier: string;
|
|
14
|
+
/** The module specifier path (e.g., "./prompts/core.md") */
|
|
15
|
+
modulePath: string;
|
|
16
|
+
/** The type of import (namespace, named, or default) */
|
|
17
|
+
importType: 'namespace' | 'named' | 'default';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Check if an import declaration imports a .md file
|
|
21
|
+
*
|
|
22
|
+
* @param node - The import declaration to check
|
|
23
|
+
* @returns True if it imports a .md file
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import * as Core from './core.md'; // true
|
|
28
|
+
* import { foo } from './bar.ts'; // false
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function isMarkdownImport(node: ts.ImportDeclaration): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Extract import information from a markdown import declaration
|
|
34
|
+
*
|
|
35
|
+
* @param node - The import declaration node
|
|
36
|
+
* @returns Import information or null if invalid
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* // import * as Core from './core.md'
|
|
41
|
+
* extractImportInfo(node) // { identifier: 'Core', modulePath: './core.md', ... }
|
|
42
|
+
*
|
|
43
|
+
* // import Core from './core.md'
|
|
44
|
+
* extractImportInfo(node) // { identifier: 'Core', modulePath: './core.md', importType: 'default' }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function extractImportInfo(node: ts.ImportDeclaration): MarkdownImportInfo | null;
|
|
48
|
+
/**
|
|
49
|
+
* Find all markdown imports in a source file
|
|
50
|
+
*
|
|
51
|
+
* @param sourceFile - The TypeScript source file to scan
|
|
52
|
+
* @returns Array of markdown import information
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const sourceFile = ts.createSourceFile(...);
|
|
57
|
+
* const mdImports = findMarkdownImports(sourceFile);
|
|
58
|
+
* // [{ identifier: 'Core', modulePath: './core.md', ... }]
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function findMarkdownImports(sourceFile: ts.SourceFile): MarkdownImportInfo[];
|
|
62
|
+
//# sourceMappingURL=import-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-detector.d.ts","sourceRoot":"","sources":["../../src/transformer/import-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC;IAC3B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,UAAU,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;CAC/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,GAAG,OAAO,CASpE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,GAAG,kBAAkB,GAAG,IAAI,CAqDvF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,kBAAkB,EAAE,CAgBnF"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import detection utilities for TypeScript AST
|
|
3
|
+
* Detects .md imports and extracts import information
|
|
4
|
+
*/
|
|
5
|
+
import ts from 'typescript';
|
|
6
|
+
/**
|
|
7
|
+
* Check if an import declaration imports a .md file
|
|
8
|
+
*
|
|
9
|
+
* @param node - The import declaration to check
|
|
10
|
+
* @returns True if it imports a .md file
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import * as Core from './core.md'; // true
|
|
15
|
+
* import { foo } from './bar.ts'; // false
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function isMarkdownImport(node) {
|
|
19
|
+
const moduleSpecifier = node.moduleSpecifier;
|
|
20
|
+
if (!ts.isStringLiteral(moduleSpecifier)) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const modulePath = moduleSpecifier.text;
|
|
24
|
+
return modulePath.endsWith('.md');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extract import information from a markdown import declaration
|
|
28
|
+
*
|
|
29
|
+
* @param node - The import declaration node
|
|
30
|
+
* @returns Import information or null if invalid
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* // import * as Core from './core.md'
|
|
35
|
+
* extractImportInfo(node) // { identifier: 'Core', modulePath: './core.md', ... }
|
|
36
|
+
*
|
|
37
|
+
* // import Core from './core.md'
|
|
38
|
+
* extractImportInfo(node) // { identifier: 'Core', modulePath: './core.md', importType: 'default' }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export function extractImportInfo(node) {
|
|
42
|
+
if (!isMarkdownImport(node)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const moduleSpecifier = node.moduleSpecifier;
|
|
46
|
+
const modulePath = moduleSpecifier.text;
|
|
47
|
+
const importClause = node.importClause;
|
|
48
|
+
if (!importClause) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
// Handle namespace import: import * as Core from './core.md'
|
|
52
|
+
if (importClause.namedBindings && ts.isNamespaceImport(importClause.namedBindings)) {
|
|
53
|
+
const identifier = importClause.namedBindings.name.text;
|
|
54
|
+
return {
|
|
55
|
+
node,
|
|
56
|
+
identifier,
|
|
57
|
+
modulePath,
|
|
58
|
+
importType: 'namespace',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// Handle default import: import Core from './core.md'
|
|
62
|
+
if (importClause.name) {
|
|
63
|
+
const identifier = importClause.name.text;
|
|
64
|
+
return {
|
|
65
|
+
node,
|
|
66
|
+
identifier,
|
|
67
|
+
modulePath,
|
|
68
|
+
importType: 'default',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Handle named imports: import { foo } from './core.md'
|
|
72
|
+
if (importClause.namedBindings && ts.isNamedImports(importClause.namedBindings)) {
|
|
73
|
+
// For now, we'll use the first named import
|
|
74
|
+
const firstElement = importClause.namedBindings.elements[0];
|
|
75
|
+
if (!firstElement) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const identifier = firstElement.name.text;
|
|
79
|
+
return {
|
|
80
|
+
node,
|
|
81
|
+
identifier,
|
|
82
|
+
modulePath,
|
|
83
|
+
importType: 'named',
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Find all markdown imports in a source file
|
|
90
|
+
*
|
|
91
|
+
* @param sourceFile - The TypeScript source file to scan
|
|
92
|
+
* @returns Array of markdown import information
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const sourceFile = ts.createSourceFile(...);
|
|
97
|
+
* const mdImports = findMarkdownImports(sourceFile);
|
|
98
|
+
* // [{ identifier: 'Core', modulePath: './core.md', ... }]
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export function findMarkdownImports(sourceFile) {
|
|
102
|
+
const markdownImports = [];
|
|
103
|
+
function visit(node) {
|
|
104
|
+
if (ts.isImportDeclaration(node)) {
|
|
105
|
+
const importInfo = extractImportInfo(node);
|
|
106
|
+
if (importInfo) {
|
|
107
|
+
markdownImports.push(importInfo);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
ts.forEachChild(node, visit);
|
|
111
|
+
}
|
|
112
|
+
visit(sourceFile);
|
|
113
|
+
return markdownImports;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=import-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-detector.js","sourceRoot":"","sources":["../../src/transformer/import-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAgB5B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACzD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IAE7C,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA0B;IAC1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,eAAmC,CAAC;IACjE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC;IAExC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACvC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6DAA6D;IAC7D,IAAI,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;QACnF,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACxD,OAAO;YACL,IAAI;YACJ,UAAU;YACV,UAAU;YACV,UAAU,EAAE,WAAW;SACxB,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C,OAAO;YACL,IAAI;YACJ,UAAU;YACV,UAAU;YACV,UAAU,EAAE,SAAS;SACtB,CAAC;IACJ,CAAC;IAED,wDAAwD;IACxD,IAAI,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;QAChF,4CAA4C;QAC5C,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C,OAAO;YACL,IAAI;YACJ,UAAU;YACV,UAAU;YACV,UAAU,EAAE,OAAO;SACpB,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAyB;IAC3D,MAAM,eAAe,GAAyB,EAAE,CAAC;IAEjD,SAAS,KAAK,CAAC,IAAa;QAC1B,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,UAAU,EAAE,CAAC;gBACf,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript transformer for markdown imports
|
|
3
|
+
* Enables direct .md imports in TypeScript code
|
|
4
|
+
*/
|
|
5
|
+
export { isMarkdownImport, extractImportInfo, findMarkdownImports, type MarkdownImportInfo, } from './import-detector.js';
|
|
6
|
+
export { resolveMarkdownPath, createDefaultCompilerOptions, } from './path-resolver.js';
|
|
7
|
+
export { resourceToAst, createConstDeclaration, } from './ast-helpers.js';
|
|
8
|
+
export { generateModuleReplacement, replaceImportWithConst, } from './module-generator.js';
|
|
9
|
+
export { createTransformer, type TransformerOptions, default, } from './transformer.js';
|
|
10
|
+
export { generateMarkdownDeclarationFile, getDeclarationPath, } from './declaration-generator.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transformer/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,OAAO,GACR,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,GACnB,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript transformer for markdown imports
|
|
3
|
+
* Enables direct .md imports in TypeScript code
|
|
4
|
+
*/
|
|
5
|
+
export { isMarkdownImport, extractImportInfo, findMarkdownImports, } from './import-detector.js';
|
|
6
|
+
export { resolveMarkdownPath, createDefaultCompilerOptions, } from './path-resolver.js';
|
|
7
|
+
export { resourceToAst, createConstDeclaration, } from './ast-helpers.js';
|
|
8
|
+
export { generateModuleReplacement, replaceImportWithConst, } from './module-generator.js';
|
|
9
|
+
export { createTransformer, default, } from './transformer.js';
|
|
10
|
+
export { generateMarkdownDeclarationFile, getDeclarationPath, } from './declaration-generator.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transformer/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GAEpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EAEjB,OAAO,GACR,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,GACnB,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module generator for converting markdown imports to const declarations
|
|
3
|
+
* Replaces import statements with inline resource objects
|
|
4
|
+
*/
|
|
5
|
+
import ts from 'typescript';
|
|
6
|
+
import type { MarkdownImportInfo } from './import-detector.js';
|
|
7
|
+
/**
|
|
8
|
+
* Generate a const declaration from a markdown import
|
|
9
|
+
*
|
|
10
|
+
* @param importInfo - Information about the markdown import
|
|
11
|
+
* @param resolvedPath - Absolute path to the markdown file
|
|
12
|
+
* @returns Variable statement node replacing the import
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // Input: import * as Core from './core.md'
|
|
17
|
+
* // Output: const Core = { meta: {...}, text: "...", fragments: {...} };
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateModuleReplacement(importInfo: MarkdownImportInfo, resolvedPath: string): ts.VariableStatement;
|
|
21
|
+
/**
|
|
22
|
+
* Replace an import declaration with a const declaration
|
|
23
|
+
*
|
|
24
|
+
* @param node - The import declaration node to replace
|
|
25
|
+
* @param replacement - The replacement variable statement
|
|
26
|
+
* @returns The replacement node
|
|
27
|
+
*/
|
|
28
|
+
export declare function replaceImportWithConst(node: ts.ImportDeclaration, replacement: ts.VariableStatement): ts.VariableStatement;
|
|
29
|
+
//# sourceMappingURL=module-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-generator.d.ts","sourceRoot":"","sources":["../../src/transformer/module-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,MAAM,YAAY,CAAC;AAK5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,kBAAkB,EAC9B,YAAY,EAAE,MAAM,GACnB,EAAE,CAAC,iBAAiB,CAWtB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAC1B,WAAW,EAAE,EAAE,CAAC,iBAAiB,GAChC,EAAE,CAAC,iBAAiB,CAatB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module generator for converting markdown imports to const declarations
|
|
3
|
+
* Replaces import statements with inline resource objects
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync } from 'node:fs';
|
|
6
|
+
import ts from 'typescript';
|
|
7
|
+
import { parseMarkdown } from '../compiler/markdown-parser.js';
|
|
8
|
+
import { resourceToAst, createConstDeclaration } from './ast-helpers.js';
|
|
9
|
+
/**
|
|
10
|
+
* Generate a const declaration from a markdown import
|
|
11
|
+
*
|
|
12
|
+
* @param importInfo - Information about the markdown import
|
|
13
|
+
* @param resolvedPath - Absolute path to the markdown file
|
|
14
|
+
* @returns Variable statement node replacing the import
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Input: import * as Core from './core.md'
|
|
19
|
+
* // Output: const Core = { meta: {...}, text: "...", fragments: {...} };
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function generateModuleReplacement(importInfo, resolvedPath) {
|
|
23
|
+
// Read and parse the markdown file
|
|
24
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- Validated path from import resolution
|
|
25
|
+
const markdownContent = readFileSync(resolvedPath, 'utf-8');
|
|
26
|
+
const resource = parseMarkdown(markdownContent);
|
|
27
|
+
// Convert resource to AST
|
|
28
|
+
const resourceAst = resourceToAst(resource);
|
|
29
|
+
// Create const declaration
|
|
30
|
+
return createConstDeclaration(importInfo.identifier, resourceAst);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Replace an import declaration with a const declaration
|
|
34
|
+
*
|
|
35
|
+
* @param node - The import declaration node to replace
|
|
36
|
+
* @param replacement - The replacement variable statement
|
|
37
|
+
* @returns The replacement node
|
|
38
|
+
*/
|
|
39
|
+
export function replaceImportWithConst(node, replacement) {
|
|
40
|
+
// Preserve any comments from the original import
|
|
41
|
+
const leadingComments = ts.getLeadingCommentRanges(node.getSourceFile().getFullText(), node.getFullStart());
|
|
42
|
+
if (leadingComments && leadingComments.length > 0) {
|
|
43
|
+
// Comments are preserved through the source transformation
|
|
44
|
+
return replacement;
|
|
45
|
+
}
|
|
46
|
+
return replacement;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=module-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-generator.js","sourceRoot":"","sources":["../../src/transformer/module-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAGzE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAA8B,EAC9B,YAAoB;IAEpB,mCAAmC;IACnC,4GAA4G;IAC5G,MAAM,eAAe,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC;IAEhD,0BAA0B;IAC1B,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE5C,2BAA2B;IAC3B,OAAO,sBAAsB,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAA0B,EAC1B,WAAiC;IAEjC,iDAAiD;IACjD,MAAM,eAAe,GAAG,EAAE,CAAC,uBAAuB,CAChD,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,EAClC,IAAI,CAAC,YAAY,EAAE,CACpB,CAAC;IAEF,IAAI,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,2DAA2D;QAC3D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|