@flink-app/ts-source-to-json-schema 0.1.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.
- package/LICENSE +21 -0
- package/README.md +574 -0
- package/dist/ast.d.ts +102 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/ast.js +5 -0
- package/dist/ast.js.map +1 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +276 -0
- package/dist/cli.js.map +1 -0
- package/dist/emitter.d.ts +120 -0
- package/dist/emitter.d.ts.map +1 -0
- package/dist/emitter.js +808 -0
- package/dist/emitter.js.map +1 -0
- package/dist/import-parser.d.ts +18 -0
- package/dist/import-parser.d.ts.map +1 -0
- package/dist/import-parser.js +117 -0
- package/dist/import-parser.js.map +1 -0
- package/dist/index.d.ts +99 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +177 -0
- package/dist/index.js.map +1 -0
- package/dist/module-resolver.d.ts +29 -0
- package/dist/module-resolver.d.ts.map +1 -0
- package/dist/module-resolver.js +95 -0
- package/dist/module-resolver.js.map +1 -0
- package/dist/parser.d.ts +38 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +464 -0
- package/dist/parser.js.map +1 -0
- package/dist/path-utils.d.ts +16 -0
- package/dist/path-utils.d.ts.map +1 -0
- package/dist/path-utils.js +63 -0
- package/dist/path-utils.js.map +1 -0
- package/dist/tokenizer.d.ts +9 -0
- package/dist/tokenizer.d.ts.map +1 -0
- package/dist/tokenizer.js +192 -0
- package/dist/tokenizer.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Token } from "./tokenizer.js";
|
|
2
|
+
export interface ImportStatement {
|
|
3
|
+
importedNames: string[];
|
|
4
|
+
modulePath: string;
|
|
5
|
+
isDefault: boolean;
|
|
6
|
+
isNamespace: boolean;
|
|
7
|
+
namespaceAlias?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Extract import statements from token stream.
|
|
11
|
+
* Handles:
|
|
12
|
+
* - import { X, Y } from "path"
|
|
13
|
+
* - import X from "path"
|
|
14
|
+
* - import * as X from "path"
|
|
15
|
+
* - import { X as Y } from "path" (extracts original name X)
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractImports(tokens: Token[]): ImportStatement[];
|
|
18
|
+
//# sourceMappingURL=import-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-parser.d.ts","sourceRoot":"","sources":["../src/import-parser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE,CA2HjE"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Import Parser - Extracts import statements from token stream
|
|
3
|
+
// ============================================================================
|
|
4
|
+
/**
|
|
5
|
+
* Extract import statements from token stream.
|
|
6
|
+
* Handles:
|
|
7
|
+
* - import { X, Y } from "path"
|
|
8
|
+
* - import X from "path"
|
|
9
|
+
* - import * as X from "path"
|
|
10
|
+
* - import { X as Y } from "path" (extracts original name X)
|
|
11
|
+
*/
|
|
12
|
+
export function extractImports(tokens) {
|
|
13
|
+
const imports = [];
|
|
14
|
+
let i = 0;
|
|
15
|
+
function peek(offset = 0) {
|
|
16
|
+
return tokens[i + offset];
|
|
17
|
+
}
|
|
18
|
+
function advance() {
|
|
19
|
+
return tokens[i++];
|
|
20
|
+
}
|
|
21
|
+
function expect(type, value) {
|
|
22
|
+
const token = advance();
|
|
23
|
+
if (!token || token.type !== type || (value !== undefined && token.value !== value)) {
|
|
24
|
+
throw new Error(`Expected ${type}${value ? ` "${value}"` : ""} but got ${token?.type} "${token?.value}"`);
|
|
25
|
+
}
|
|
26
|
+
return token;
|
|
27
|
+
}
|
|
28
|
+
function skipNewlines() {
|
|
29
|
+
while (peek()?.type === "newline") {
|
|
30
|
+
advance();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
while (i < tokens.length) {
|
|
34
|
+
const token = peek();
|
|
35
|
+
if (!token || token.type === "eof")
|
|
36
|
+
break;
|
|
37
|
+
// Look for import keyword
|
|
38
|
+
if (token.type === "keyword" && token.value === "import") {
|
|
39
|
+
advance(); // consume 'import'
|
|
40
|
+
skipNewlines();
|
|
41
|
+
const importedNames = [];
|
|
42
|
+
let isDefault = false;
|
|
43
|
+
let isNamespace = false;
|
|
44
|
+
let namespaceAlias;
|
|
45
|
+
let modulePath = "";
|
|
46
|
+
const next = peek();
|
|
47
|
+
// import * as X from "path"
|
|
48
|
+
if (next?.type === "punctuation" && next.value === "*") {
|
|
49
|
+
advance(); // consume '*'
|
|
50
|
+
skipNewlines();
|
|
51
|
+
expect("keyword", "as");
|
|
52
|
+
skipNewlines();
|
|
53
|
+
const alias = expect("identifier");
|
|
54
|
+
namespaceAlias = alias.value;
|
|
55
|
+
importedNames.push("*");
|
|
56
|
+
isNamespace = true;
|
|
57
|
+
}
|
|
58
|
+
// import { ... } from "path"
|
|
59
|
+
else if (next?.type === "punctuation" && next.value === "{") {
|
|
60
|
+
advance(); // consume '{'
|
|
61
|
+
skipNewlines();
|
|
62
|
+
// Read imported names until }
|
|
63
|
+
while (peek()?.type !== "punctuation" || peek()?.value !== "}") {
|
|
64
|
+
skipNewlines();
|
|
65
|
+
const name = expect("identifier");
|
|
66
|
+
importedNames.push(name.value);
|
|
67
|
+
skipNewlines();
|
|
68
|
+
// Handle: import { X as Y }
|
|
69
|
+
if (peek()?.type === "keyword" && peek()?.value === "as") {
|
|
70
|
+
advance(); // consume 'as'
|
|
71
|
+
skipNewlines();
|
|
72
|
+
expect("identifier"); // consume alias but keep original name
|
|
73
|
+
skipNewlines();
|
|
74
|
+
}
|
|
75
|
+
// Handle comma
|
|
76
|
+
if (peek()?.type === "punctuation" && peek()?.value === ",") {
|
|
77
|
+
advance();
|
|
78
|
+
skipNewlines();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
expect("punctuation", "}"); // consume '}'
|
|
82
|
+
}
|
|
83
|
+
// import X from "path" (default import)
|
|
84
|
+
else if (next?.type === "identifier") {
|
|
85
|
+
const name = expect("identifier");
|
|
86
|
+
importedNames.push(name.value);
|
|
87
|
+
isDefault = true;
|
|
88
|
+
}
|
|
89
|
+
skipNewlines();
|
|
90
|
+
// Expect 'from' keyword
|
|
91
|
+
if (peek()?.type === "keyword" && peek()?.value === "from") {
|
|
92
|
+
expect("keyword", "from");
|
|
93
|
+
skipNewlines();
|
|
94
|
+
// Read module path (string)
|
|
95
|
+
const pathToken = expect("string");
|
|
96
|
+
modulePath = pathToken.value;
|
|
97
|
+
imports.push({
|
|
98
|
+
importedNames,
|
|
99
|
+
modulePath,
|
|
100
|
+
isDefault,
|
|
101
|
+
isNamespace,
|
|
102
|
+
namespaceAlias,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// Skip to next statement (consume semicolon or newline if present)
|
|
106
|
+
skipNewlines();
|
|
107
|
+
if (peek()?.type === "punctuation" && peek()?.value === ";") {
|
|
108
|
+
advance();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
advance(); // skip non-import tokens
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return imports;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=import-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-parser.js","sourceRoot":"","sources":["../src/import-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
export { tokenize } from "./tokenizer.js";
|
|
2
|
+
export type { Token, TokenType } from "./tokenizer.js";
|
|
3
|
+
export { Parser, ParseError } from "./parser.js";
|
|
4
|
+
export { Emitter } from "./emitter.js";
|
|
5
|
+
export type { JSONSchema, EmitterOptions } from "./emitter.js";
|
|
6
|
+
export type { TypeNode, PropertyNode, Declaration, InterfaceDeclaration, TypeAliasDeclaration, EnumDeclaration, } from "./ast.js";
|
|
7
|
+
export { ModuleResolver } from "./module-resolver.js";
|
|
8
|
+
export type { ResolvedModule } from "./module-resolver.js";
|
|
9
|
+
export { extractImports } from "./import-parser.js";
|
|
10
|
+
export type { ImportStatement } from "./import-parser.js";
|
|
11
|
+
import { type JSONSchema, type EmitterOptions } from "./emitter.js";
|
|
12
|
+
/**
|
|
13
|
+
* Convert TypeScript source containing type declarations to JSON Schema.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const schema = toJsonSchema(`
|
|
18
|
+
* interface User {
|
|
19
|
+
* name: string;
|
|
20
|
+
* age?: number;
|
|
21
|
+
* role: "admin" | "user";
|
|
22
|
+
* }
|
|
23
|
+
* `, { rootType: "User" });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function toJsonSchema(source: string, options?: EmitterOptions): JSONSchema;
|
|
27
|
+
/**
|
|
28
|
+
* Generates JSON schemas for all top-level type definitions in the source.
|
|
29
|
+
*
|
|
30
|
+
* More efficient than calling toJsonSchema() multiple times when you need
|
|
31
|
+
* multiple schemas from the same source file. Each schema is standalone
|
|
32
|
+
* and includes only the types it references in its `definitions` field.
|
|
33
|
+
*
|
|
34
|
+
* @param source - TypeScript source code
|
|
35
|
+
* @param options - Schema generation options (rootType is ignored)
|
|
36
|
+
* @returns Map of type name to JSON schema
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const source = `
|
|
41
|
+
* export interface User { id: string; name: string; }
|
|
42
|
+
* export interface Post { id: string; title: string; author: User; }
|
|
43
|
+
* `;
|
|
44
|
+
*
|
|
45
|
+
* const schemas = toJsonSchemas(source);
|
|
46
|
+
* // Returns:
|
|
47
|
+
* // {
|
|
48
|
+
* // "User": { type: "object", properties: {...}, required: [...], definitions: {} },
|
|
49
|
+
* // "Post": { type: "object", properties: {...}, required: [...], definitions: { User: {...} } }
|
|
50
|
+
* // }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function toJsonSchemas(source: string, options?: Omit<EmitterOptions, 'rootType'>): Record<string, JSONSchema>;
|
|
54
|
+
/**
|
|
55
|
+
* Parse TypeScript source and return the AST declarations.
|
|
56
|
+
* Useful for inspection or custom transformations.
|
|
57
|
+
*/
|
|
58
|
+
export declare function parseDeclarations(source: string): import("./ast.js").Declaration[];
|
|
59
|
+
/**
|
|
60
|
+
* Convert TypeScript file to JSON Schema, following imports.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* const schema = toJsonSchemaFromFile('./types/user.ts', {
|
|
65
|
+
* followImports: 'local',
|
|
66
|
+
* rootType: 'User'
|
|
67
|
+
* });
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare function toJsonSchemaFromFile(entryPath: string, options?: EmitterOptions): JSONSchema;
|
|
71
|
+
/**
|
|
72
|
+
* Generates JSON schemas for all types in a TypeScript file, following imports.
|
|
73
|
+
*
|
|
74
|
+
* This is the batch version of toJsonSchemaFromFile(). It resolves imports
|
|
75
|
+
* and generates standalone schemas for all exported types in one pass.
|
|
76
|
+
*
|
|
77
|
+
* @param entryPath - Path to the TypeScript file
|
|
78
|
+
* @param options - Schema generation options (rootType is ignored)
|
|
79
|
+
* @returns Map of type name to JSON schema
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* // schemas.ts:
|
|
84
|
+
* // import TreeNode from "../../src/schemas/TreeNode";
|
|
85
|
+
* // export interface GetTree_12_ResSchema extends TreeNode {}
|
|
86
|
+
*
|
|
87
|
+
* const schemas = toJsonSchemasFromFile('./schemas.ts', {
|
|
88
|
+
* followImports: 'local'
|
|
89
|
+
* });
|
|
90
|
+
*
|
|
91
|
+
* console.log(schemas.GetTree_12_ResSchema);
|
|
92
|
+
* // {
|
|
93
|
+
* // "$ref": "#/definitions/TreeNode",
|
|
94
|
+
* // "definitions": { "TreeNode": { ... } } // ✅ Included!
|
|
95
|
+
* // }
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare function toJsonSchemasFromFile(entryPath: string, options?: Omit<EmitterOptions, 'rootType'>): Record<string, JSONSchema>;
|
|
99
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D,YAAY,EACV,QAAQ,EAAE,YAAY,EAAE,WAAW,EACnC,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,GAC5D,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D,OAAO,EAAW,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAG7E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,CAMjF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GACzC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAW5B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,oCAI/C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAeZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,GACzC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAe5B"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// ts-to-jsonschema - Zero-dependency TypeScript type → JSON Schema converter
|
|
3
|
+
// ============================================================================
|
|
4
|
+
//
|
|
5
|
+
// This is a custom mini-parser that handles a practical subset of TypeScript's
|
|
6
|
+
// type syntax and converts it to JSON Schema (2020-12 draft).
|
|
7
|
+
//
|
|
8
|
+
// It does NOT use the TypeScript compiler. It tokenizes and parses the source
|
|
9
|
+
// string directly, making it fast, portable, and dependency-free.
|
|
10
|
+
//
|
|
11
|
+
// Supported constructs:
|
|
12
|
+
// - interface declarations (with extends)
|
|
13
|
+
// - type alias declarations
|
|
14
|
+
// - enum declarations (string and numeric)
|
|
15
|
+
// - Primitives: string, number, boolean, null, undefined, any, unknown, etc.
|
|
16
|
+
// - Literal types: "foo", 42, true
|
|
17
|
+
// - Union types: A | B | C
|
|
18
|
+
// - Intersection types: A & B
|
|
19
|
+
// - Array types: T[] and Array<T>
|
|
20
|
+
// - Tuple types: [string, number] (including named and rest elements)
|
|
21
|
+
// - Inline object types: { foo: string; bar: number }
|
|
22
|
+
// - Record<K, V>
|
|
23
|
+
// - Utility types: Partial<T>, Required<T>, Pick<T, K>, Omit<T, K>, Readonly<T>
|
|
24
|
+
// - Nullable: string | null
|
|
25
|
+
// - Index signatures: [key: string]: ValueType
|
|
26
|
+
// - JSDoc comments → description + tags (@minimum, @pattern, @format, etc.)
|
|
27
|
+
// - readonly properties → readOnly in schema
|
|
28
|
+
// - Optional properties → required array handling
|
|
29
|
+
// - Set<T> → array with uniqueItems
|
|
30
|
+
// - Map<K, V> → object with additionalProperties
|
|
31
|
+
// - Promise<T> → unwrapped to T
|
|
32
|
+
//
|
|
33
|
+
// ============================================================================
|
|
34
|
+
export { tokenize } from "./tokenizer.js";
|
|
35
|
+
export { Parser, ParseError } from "./parser.js";
|
|
36
|
+
export { Emitter } from "./emitter.js";
|
|
37
|
+
export { ModuleResolver } from "./module-resolver.js";
|
|
38
|
+
export { extractImports } from "./import-parser.js";
|
|
39
|
+
import * as fs from "fs";
|
|
40
|
+
import * as path from "path";
|
|
41
|
+
import { tokenize } from "./tokenizer.js";
|
|
42
|
+
import { Parser } from "./parser.js";
|
|
43
|
+
import { Emitter } from "./emitter.js";
|
|
44
|
+
import { ModuleResolver } from "./module-resolver.js";
|
|
45
|
+
/**
|
|
46
|
+
* Convert TypeScript source containing type declarations to JSON Schema.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* const schema = toJsonSchema(`
|
|
51
|
+
* interface User {
|
|
52
|
+
* name: string;
|
|
53
|
+
* age?: number;
|
|
54
|
+
* role: "admin" | "user";
|
|
55
|
+
* }
|
|
56
|
+
* `, { rootType: "User" });
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export function toJsonSchema(source, options) {
|
|
60
|
+
const tokens = tokenize(source);
|
|
61
|
+
const parser = new Parser(tokens);
|
|
62
|
+
const declarations = parser.parse();
|
|
63
|
+
const emitter = new Emitter(declarations, options);
|
|
64
|
+
return emitter.emit();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Generates JSON schemas for all top-level type definitions in the source.
|
|
68
|
+
*
|
|
69
|
+
* More efficient than calling toJsonSchema() multiple times when you need
|
|
70
|
+
* multiple schemas from the same source file. Each schema is standalone
|
|
71
|
+
* and includes only the types it references in its `definitions` field.
|
|
72
|
+
*
|
|
73
|
+
* @param source - TypeScript source code
|
|
74
|
+
* @param options - Schema generation options (rootType is ignored)
|
|
75
|
+
* @returns Map of type name to JSON schema
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* const source = `
|
|
80
|
+
* export interface User { id: string; name: string; }
|
|
81
|
+
* export interface Post { id: string; title: string; author: User; }
|
|
82
|
+
* `;
|
|
83
|
+
*
|
|
84
|
+
* const schemas = toJsonSchemas(source);
|
|
85
|
+
* // Returns:
|
|
86
|
+
* // {
|
|
87
|
+
* // "User": { type: "object", properties: {...}, required: [...], definitions: {} },
|
|
88
|
+
* // "Post": { type: "object", properties: {...}, required: [...], definitions: { User: {...} } }
|
|
89
|
+
* // }
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export function toJsonSchemas(source, options) {
|
|
93
|
+
// Tokenize once
|
|
94
|
+
const tokens = tokenize(source);
|
|
95
|
+
// Parse once
|
|
96
|
+
const parser = new Parser(tokens);
|
|
97
|
+
const declarations = parser.parse();
|
|
98
|
+
// Emit all schemas in batch
|
|
99
|
+
const emitter = new Emitter(declarations, options || {});
|
|
100
|
+
return emitter.emitAll();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Parse TypeScript source and return the AST declarations.
|
|
104
|
+
* Useful for inspection or custom transformations.
|
|
105
|
+
*/
|
|
106
|
+
export function parseDeclarations(source) {
|
|
107
|
+
const tokens = tokenize(source);
|
|
108
|
+
const parser = new Parser(tokens);
|
|
109
|
+
return parser.parse();
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Convert TypeScript file to JSON Schema, following imports.
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* const schema = toJsonSchemaFromFile('./types/user.ts', {
|
|
117
|
+
* followImports: 'local',
|
|
118
|
+
* rootType: 'User'
|
|
119
|
+
* });
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export function toJsonSchemaFromFile(entryPath, options) {
|
|
123
|
+
const followMode = options?.followImports ?? "none";
|
|
124
|
+
const baseDir = options?.baseDir ?? path.dirname(path.resolve(entryPath));
|
|
125
|
+
if (followMode === "none") {
|
|
126
|
+
// Single-file mode (backward compatible)
|
|
127
|
+
const source = fs.readFileSync(entryPath, "utf-8");
|
|
128
|
+
return toJsonSchema(source, options);
|
|
129
|
+
}
|
|
130
|
+
// Multi-file mode
|
|
131
|
+
const resolver = new ModuleResolver({ followImports: followMode, baseDir });
|
|
132
|
+
const declarations = resolver.resolveFromEntry(entryPath);
|
|
133
|
+
const emitter = new Emitter(declarations, options);
|
|
134
|
+
return emitter.emit();
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Generates JSON schemas for all types in a TypeScript file, following imports.
|
|
138
|
+
*
|
|
139
|
+
* This is the batch version of toJsonSchemaFromFile(). It resolves imports
|
|
140
|
+
* and generates standalone schemas for all exported types in one pass.
|
|
141
|
+
*
|
|
142
|
+
* @param entryPath - Path to the TypeScript file
|
|
143
|
+
* @param options - Schema generation options (rootType is ignored)
|
|
144
|
+
* @returns Map of type name to JSON schema
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```ts
|
|
148
|
+
* // schemas.ts:
|
|
149
|
+
* // import TreeNode from "../../src/schemas/TreeNode";
|
|
150
|
+
* // export interface GetTree_12_ResSchema extends TreeNode {}
|
|
151
|
+
*
|
|
152
|
+
* const schemas = toJsonSchemasFromFile('./schemas.ts', {
|
|
153
|
+
* followImports: 'local'
|
|
154
|
+
* });
|
|
155
|
+
*
|
|
156
|
+
* console.log(schemas.GetTree_12_ResSchema);
|
|
157
|
+
* // {
|
|
158
|
+
* // "$ref": "#/definitions/TreeNode",
|
|
159
|
+
* // "definitions": { "TreeNode": { ... } } // ✅ Included!
|
|
160
|
+
* // }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export function toJsonSchemasFromFile(entryPath, options) {
|
|
164
|
+
const followMode = options?.followImports ?? "none";
|
|
165
|
+
const baseDir = options?.baseDir ?? path.dirname(path.resolve(entryPath));
|
|
166
|
+
if (followMode === "none") {
|
|
167
|
+
// Single-file mode (backward compatible)
|
|
168
|
+
const source = fs.readFileSync(entryPath, "utf-8");
|
|
169
|
+
return toJsonSchemas(source, options);
|
|
170
|
+
}
|
|
171
|
+
// Multi-file mode
|
|
172
|
+
const resolver = new ModuleResolver({ followImports: followMode, baseDir });
|
|
173
|
+
const declarations = resolver.resolveFromEntry(entryPath);
|
|
174
|
+
const emitter = new Emitter(declarations, options || {});
|
|
175
|
+
return emitter.emitAll();
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ImportStatement } from "./import-parser.js";
|
|
2
|
+
import type { Declaration } from "./ast.js";
|
|
3
|
+
export interface ResolvedModule {
|
|
4
|
+
filePath: string;
|
|
5
|
+
source: string;
|
|
6
|
+
declarations: Declaration[];
|
|
7
|
+
imports: ImportStatement[];
|
|
8
|
+
}
|
|
9
|
+
export declare class ModuleResolver {
|
|
10
|
+
private options;
|
|
11
|
+
private visited;
|
|
12
|
+
private modules;
|
|
13
|
+
constructor(options: {
|
|
14
|
+
followImports: "none" | "local" | "all";
|
|
15
|
+
baseDir: string;
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Recursively resolve and parse all modules starting from entry file.
|
|
19
|
+
* Returns merged declarations from all files.
|
|
20
|
+
*/
|
|
21
|
+
resolveFromEntry(entryPath: string): Declaration[];
|
|
22
|
+
/**
|
|
23
|
+
* Get all resolved modules (for inspection/debugging)
|
|
24
|
+
*/
|
|
25
|
+
getModules(): Map<string, ResolvedModule>;
|
|
26
|
+
private resolveModule;
|
|
27
|
+
private mergeDeclarations;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=module-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-resolver.d.ts","sourceRoot":"","sources":["../src/module-resolver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,qBAAa,cAAc;IAIb,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAqC;gBAEhC,OAAO,EAAE;QAC3B,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;QACxC,OAAO,EAAE,MAAM,CAAC;KACjB;IAED;;;OAGG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAMlD;;OAEG;IACH,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAIzC,OAAO,CAAC,aAAa;IAyDrB,OAAO,CAAC,iBAAiB;CAoB1B"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Module Resolver - Recursively resolves imports across multiple files
|
|
3
|
+
// ============================================================================
|
|
4
|
+
import * as fs from "fs";
|
|
5
|
+
import * as path from "path";
|
|
6
|
+
import { tokenize } from "./tokenizer.js";
|
|
7
|
+
import { Parser } from "./parser.js";
|
|
8
|
+
import { extractImports } from "./import-parser.js";
|
|
9
|
+
import { resolveImportPath, resolveExtensions } from "./path-utils.js";
|
|
10
|
+
export class ModuleResolver {
|
|
11
|
+
options;
|
|
12
|
+
visited = new Set(); // Normalized absolute paths
|
|
13
|
+
modules = new Map();
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Recursively resolve and parse all modules starting from entry file.
|
|
19
|
+
* Returns merged declarations from all files.
|
|
20
|
+
*/
|
|
21
|
+
resolveFromEntry(entryPath) {
|
|
22
|
+
const normalizedEntry = path.resolve(entryPath);
|
|
23
|
+
this.resolveModule(normalizedEntry);
|
|
24
|
+
return this.mergeDeclarations();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get all resolved modules (for inspection/debugging)
|
|
28
|
+
*/
|
|
29
|
+
getModules() {
|
|
30
|
+
return this.modules;
|
|
31
|
+
}
|
|
32
|
+
resolveModule(filePath) {
|
|
33
|
+
// 1. Check if already visited (circular dependency protection)
|
|
34
|
+
if (this.visited.has(filePath)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.visited.add(filePath);
|
|
38
|
+
// 2. Resolve file with extensions
|
|
39
|
+
const resolvedPath = resolveExtensions(filePath);
|
|
40
|
+
if (!resolvedPath) {
|
|
41
|
+
throw new Error(`Cannot resolve module: ${filePath}`);
|
|
42
|
+
}
|
|
43
|
+
// 3. Read and parse file
|
|
44
|
+
let source;
|
|
45
|
+
try {
|
|
46
|
+
source = fs.readFileSync(resolvedPath, "utf-8");
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
throw new Error(`Failed to read file ${resolvedPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
50
|
+
}
|
|
51
|
+
let tokens;
|
|
52
|
+
let imports;
|
|
53
|
+
let declarations;
|
|
54
|
+
try {
|
|
55
|
+
tokens = tokenize(source);
|
|
56
|
+
imports = extractImports(tokens);
|
|
57
|
+
const parser = new Parser(tokens);
|
|
58
|
+
declarations = parser.parse();
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
throw new Error(`Parse error in ${resolvedPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
62
|
+
}
|
|
63
|
+
// 4. Store module
|
|
64
|
+
this.modules.set(resolvedPath, {
|
|
65
|
+
filePath: resolvedPath,
|
|
66
|
+
source,
|
|
67
|
+
declarations,
|
|
68
|
+
imports,
|
|
69
|
+
});
|
|
70
|
+
// 5. Recursively resolve imports
|
|
71
|
+
for (const imp of imports) {
|
|
72
|
+
const resolved = resolveImportPath(imp.modulePath, resolvedPath, this.options.followImports);
|
|
73
|
+
if (resolved) {
|
|
74
|
+
this.resolveModule(resolved);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
mergeDeclarations() {
|
|
79
|
+
const allDeclarations = [];
|
|
80
|
+
const nameMap = new Map(); // name → filePath
|
|
81
|
+
for (const [filePath, module] of this.modules) {
|
|
82
|
+
for (const decl of module.declarations) {
|
|
83
|
+
// Detect name collisions
|
|
84
|
+
const existing = nameMap.get(decl.name);
|
|
85
|
+
if (existing && existing !== filePath) {
|
|
86
|
+
throw new Error(`Duplicate declaration "${decl.name}" found in:\n ${existing}\n ${filePath}`);
|
|
87
|
+
}
|
|
88
|
+
nameMap.set(decl.name, filePath);
|
|
89
|
+
allDeclarations.push(decl);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return allDeclarations;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=module-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-resolver.js","sourceRoot":"","sources":["../src/module-resolver.ts"],"names":[],"mappings":"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"}
|