@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":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
|
package/dist/ast.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// AST Node Types - The intermediate representation between parsing and emission
|
|
3
|
+
// ============================================================================
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=ast.js.map
|
package/dist/ast.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI entry point for ts-source-to-json-schema
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* ts-source-to-json-schema <file.ts> [options]
|
|
7
|
+
* npx ts-source-to-json-schema src/types.ts --rootType User
|
|
8
|
+
*
|
|
9
|
+
* Reads a TypeScript file and outputs JSON Schema to stdout.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI entry point for ts-source-to-json-schema
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* ts-source-to-json-schema <file.ts> [options]
|
|
7
|
+
* npx ts-source-to-json-schema src/types.ts --rootType User
|
|
8
|
+
*
|
|
9
|
+
* Reads a TypeScript file and outputs JSON Schema to stdout.
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import { toJsonSchema, toJsonSchemaFromFile } from './index.js';
|
|
14
|
+
const version = '0.1.0'; // TODO: Read from package.json
|
|
15
|
+
function showHelp() {
|
|
16
|
+
console.log(`
|
|
17
|
+
ts-source-to-json-schema v${version}
|
|
18
|
+
|
|
19
|
+
USAGE:
|
|
20
|
+
ts-source-to-json-schema <file.ts> [options]
|
|
21
|
+
|
|
22
|
+
DESCRIPTION:
|
|
23
|
+
Convert TypeScript type definitions to JSON Schema (2020-12 draft).
|
|
24
|
+
|
|
25
|
+
OPTIONS:
|
|
26
|
+
-h, --help Show this help message
|
|
27
|
+
-v, --version Show version number
|
|
28
|
+
--doctor Output diagnostic information for debugging
|
|
29
|
+
|
|
30
|
+
-r, --rootType <name> Emit this type as root (others in $defs)
|
|
31
|
+
-s, --includeSchema <bool> Include $schema property (default: true)
|
|
32
|
+
--schemaVersion <url> Custom $schema URL
|
|
33
|
+
--strictObjects Set additionalProperties: false globally
|
|
34
|
+
--additionalProperties Set additionalProperties default (true/false)
|
|
35
|
+
--includeJSDoc <bool> Include JSDoc comments (default: true)
|
|
36
|
+
|
|
37
|
+
--followImports <mode> Follow imports: none, local, all (default: local)
|
|
38
|
+
--baseDir <path> Base directory for resolving imports
|
|
39
|
+
|
|
40
|
+
EXAMPLES:
|
|
41
|
+
# Convert all types in a file
|
|
42
|
+
ts-source-to-json-schema src/types.ts
|
|
43
|
+
|
|
44
|
+
# Convert a specific root type
|
|
45
|
+
ts-source-to-json-schema src/api.ts --rootType ApiResponse
|
|
46
|
+
|
|
47
|
+
# Follow local imports (default)
|
|
48
|
+
ts-source-to-json-schema src/api.ts --followImports local
|
|
49
|
+
|
|
50
|
+
# Single file, no imports
|
|
51
|
+
ts-source-to-json-schema src/types.ts --followImports none
|
|
52
|
+
|
|
53
|
+
# Strict object mode (no additional properties)
|
|
54
|
+
ts-source-to-json-schema src/config.ts --strictObjects
|
|
55
|
+
|
|
56
|
+
# Disable JSDoc processing
|
|
57
|
+
ts-source-to-json-schema src/types.ts --includeJSDoc false
|
|
58
|
+
|
|
59
|
+
# Combine options
|
|
60
|
+
ts-source-to-json-schema src/user.ts -r User --strictObjects --followImports local
|
|
61
|
+
`);
|
|
62
|
+
}
|
|
63
|
+
function parseArgs(args) {
|
|
64
|
+
const options = {};
|
|
65
|
+
let filePath = null;
|
|
66
|
+
for (let i = 0; i < args.length; i++) {
|
|
67
|
+
const arg = args[i];
|
|
68
|
+
if (arg === '-h' || arg === '--help') {
|
|
69
|
+
options.help = true;
|
|
70
|
+
}
|
|
71
|
+
else if (arg === '-v' || arg === '--version') {
|
|
72
|
+
options.version = true;
|
|
73
|
+
}
|
|
74
|
+
else if (arg === '--doctor') {
|
|
75
|
+
options.doctor = true;
|
|
76
|
+
}
|
|
77
|
+
else if (arg === '-r' || arg === '--rootType') {
|
|
78
|
+
options.rootType = args[++i];
|
|
79
|
+
}
|
|
80
|
+
else if (arg === '-s' || arg === '--includeSchema') {
|
|
81
|
+
options.includeSchema = parseBoolean(args[++i]);
|
|
82
|
+
}
|
|
83
|
+
else if (arg === '--schemaVersion') {
|
|
84
|
+
options.schemaVersion = args[++i];
|
|
85
|
+
}
|
|
86
|
+
else if (arg === '--strictObjects') {
|
|
87
|
+
options.strictObjects = true;
|
|
88
|
+
}
|
|
89
|
+
else if (arg === '--additionalProperties') {
|
|
90
|
+
options.additionalProperties = parseBoolean(args[++i]);
|
|
91
|
+
}
|
|
92
|
+
else if (arg === '--includeJSDoc') {
|
|
93
|
+
options.includeJSDoc = parseBoolean(args[++i]);
|
|
94
|
+
}
|
|
95
|
+
else if (arg === '--followImports') {
|
|
96
|
+
const mode = args[++i];
|
|
97
|
+
if (!['none', 'local', 'all'].includes(mode)) {
|
|
98
|
+
console.error(`Invalid followImports mode: ${mode}`);
|
|
99
|
+
console.error('Valid options: none, local, all');
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
options.followImports = mode;
|
|
103
|
+
}
|
|
104
|
+
else if (arg === '--baseDir') {
|
|
105
|
+
options.baseDir = args[++i];
|
|
106
|
+
}
|
|
107
|
+
else if (arg.startsWith('-')) {
|
|
108
|
+
console.error(`Unknown option: ${arg}`);
|
|
109
|
+
console.error('Run with --help to see available options');
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// First non-flag argument is the file path
|
|
114
|
+
if (!filePath) {
|
|
115
|
+
filePath = arg;
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
console.error(`Unexpected argument: ${arg}`);
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return { filePath, options };
|
|
124
|
+
}
|
|
125
|
+
function parseBoolean(value) {
|
|
126
|
+
const lower = value.toLowerCase();
|
|
127
|
+
if (lower === 'true' || lower === '1' || lower === 'yes') {
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
if (lower === 'false' || lower === '0' || lower === 'no') {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
console.error(`Invalid boolean value: ${value}`);
|
|
134
|
+
console.error('Use: true/false, yes/no, or 1/0');
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
function main() {
|
|
138
|
+
const args = process.argv.slice(2);
|
|
139
|
+
// Handle no arguments
|
|
140
|
+
if (args.length === 0) {
|
|
141
|
+
showHelp();
|
|
142
|
+
process.exit(0);
|
|
143
|
+
}
|
|
144
|
+
const { filePath, options } = parseArgs(args);
|
|
145
|
+
// Handle special flags
|
|
146
|
+
if (options.help) {
|
|
147
|
+
showHelp();
|
|
148
|
+
process.exit(0);
|
|
149
|
+
}
|
|
150
|
+
if (options.version) {
|
|
151
|
+
console.log(version);
|
|
152
|
+
process.exit(0);
|
|
153
|
+
}
|
|
154
|
+
// Validate file path
|
|
155
|
+
if (!filePath) {
|
|
156
|
+
console.error('Error: No input file specified');
|
|
157
|
+
console.error('Usage: ts-source-to-json-schema <file.ts> [options]');
|
|
158
|
+
console.error('Run with --help for more information');
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
// Resolve file path
|
|
162
|
+
const absolutePath = path.resolve(process.cwd(), filePath);
|
|
163
|
+
// Check if file exists (skip in doctor mode to provide diagnostics)
|
|
164
|
+
if (!fs.existsSync(absolutePath) && !options.doctor) {
|
|
165
|
+
console.error(`Error: File not found: ${filePath}`);
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
// Read TypeScript source
|
|
169
|
+
let source;
|
|
170
|
+
let readError = null;
|
|
171
|
+
try {
|
|
172
|
+
source = fs.readFileSync(absolutePath, 'utf-8');
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
readError = error instanceof Error ? error : new Error(String(error));
|
|
176
|
+
if (!options.doctor) {
|
|
177
|
+
console.error(`Error reading file: ${readError.message}`);
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
source = ''; // For doctor mode
|
|
181
|
+
}
|
|
182
|
+
// Doctor mode: output comprehensive diagnostics
|
|
183
|
+
if (options.doctor) {
|
|
184
|
+
const { help, version, doctor, ...emitterOptions } = options;
|
|
185
|
+
const inputInfo = {
|
|
186
|
+
filePath: filePath,
|
|
187
|
+
absolutePath: absolutePath,
|
|
188
|
+
fileExists: fs.existsSync(absolutePath),
|
|
189
|
+
};
|
|
190
|
+
// Add file stats if file exists
|
|
191
|
+
if (fs.existsSync(absolutePath)) {
|
|
192
|
+
try {
|
|
193
|
+
const stats = fs.statSync(absolutePath);
|
|
194
|
+
inputInfo.fileSize = stats.size;
|
|
195
|
+
inputInfo.modified = stats.mtime.toISOString();
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
// Ignore stat errors
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const diagnostics = {
|
|
202
|
+
timestamp: new Date().toISOString(),
|
|
203
|
+
version: version,
|
|
204
|
+
environment: {
|
|
205
|
+
nodeVersion: process.version,
|
|
206
|
+
platform: process.platform,
|
|
207
|
+
arch: process.arch,
|
|
208
|
+
cwd: process.cwd(),
|
|
209
|
+
},
|
|
210
|
+
input: inputInfo,
|
|
211
|
+
options: emitterOptions,
|
|
212
|
+
};
|
|
213
|
+
// Add read error if present
|
|
214
|
+
if (readError) {
|
|
215
|
+
diagnostics.readError = {
|
|
216
|
+
message: readError.message,
|
|
217
|
+
stack: readError.stack,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// Add source content and length
|
|
222
|
+
inputInfo.sourceLength = source.length;
|
|
223
|
+
inputInfo.sourceLines = source.split('\n').length;
|
|
224
|
+
inputInfo.source = source;
|
|
225
|
+
// Try to convert and capture result or error
|
|
226
|
+
try {
|
|
227
|
+
const schema = toJsonSchema(source, emitterOptions);
|
|
228
|
+
diagnostics.conversionResult = {
|
|
229
|
+
success: true,
|
|
230
|
+
schema: schema,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
const conversionError = error instanceof Error ? error : new Error(String(error));
|
|
235
|
+
diagnostics.conversionResult = {
|
|
236
|
+
success: false,
|
|
237
|
+
error: {
|
|
238
|
+
message: conversionError.message,
|
|
239
|
+
stack: conversionError.stack,
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
console.log(JSON.stringify(diagnostics, null, 2));
|
|
245
|
+
process.exit(0);
|
|
246
|
+
}
|
|
247
|
+
// Convert to JSON Schema
|
|
248
|
+
let schema;
|
|
249
|
+
try {
|
|
250
|
+
// Remove help, version, doctor from emitter options
|
|
251
|
+
const { help, version, doctor, ...emitterOptions } = options;
|
|
252
|
+
// Determine followImports mode (default to 'local' in CLI)
|
|
253
|
+
const followMode = emitterOptions.followImports ?? 'local';
|
|
254
|
+
if (followMode !== 'none') {
|
|
255
|
+
// Use file-based API with import resolution
|
|
256
|
+
const baseDir = emitterOptions.baseDir ?? path.dirname(absolutePath);
|
|
257
|
+
schema = toJsonSchemaFromFile(absolutePath, {
|
|
258
|
+
...emitterOptions,
|
|
259
|
+
baseDir,
|
|
260
|
+
followImports: followMode,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
// Use string-based API (single file, no imports)
|
|
265
|
+
schema = toJsonSchema(source, emitterOptions);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
console.error(`Error converting to JSON Schema: ${error instanceof Error ? error.message : String(error)}`);
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
// Output JSON Schema to stdout
|
|
273
|
+
console.log(JSON.stringify(schema, null, 2));
|
|
274
|
+
}
|
|
275
|
+
main();
|
|
276
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { Declaration } from "./ast.js";
|
|
2
|
+
export interface JSONSchema {
|
|
3
|
+
$schema?: string;
|
|
4
|
+
$ref?: string;
|
|
5
|
+
$defs?: Record<string, JSONSchema>;
|
|
6
|
+
type?: string | string[];
|
|
7
|
+
properties?: Record<string, JSONSchema>;
|
|
8
|
+
required?: string[];
|
|
9
|
+
additionalProperties?: boolean | JSONSchema;
|
|
10
|
+
items?: JSONSchema;
|
|
11
|
+
prefixItems?: JSONSchema[];
|
|
12
|
+
minItems?: number;
|
|
13
|
+
maxItems?: number;
|
|
14
|
+
anyOf?: JSONSchema[];
|
|
15
|
+
allOf?: JSONSchema[];
|
|
16
|
+
oneOf?: JSONSchema[];
|
|
17
|
+
const?: unknown;
|
|
18
|
+
enum?: unknown[];
|
|
19
|
+
description?: string;
|
|
20
|
+
default?: unknown;
|
|
21
|
+
minimum?: number;
|
|
22
|
+
maximum?: number;
|
|
23
|
+
minLength?: number;
|
|
24
|
+
maxLength?: number;
|
|
25
|
+
pattern?: string;
|
|
26
|
+
format?: string;
|
|
27
|
+
deprecated?: boolean;
|
|
28
|
+
readOnly?: boolean;
|
|
29
|
+
examples?: unknown[];
|
|
30
|
+
title?: string;
|
|
31
|
+
[key: string]: unknown;
|
|
32
|
+
}
|
|
33
|
+
export interface EmitterOptions {
|
|
34
|
+
/** Include $schema in the root. Default: true */
|
|
35
|
+
includeSchema?: boolean;
|
|
36
|
+
/** JSON Schema draft. Default: "https://json-schema.org/draft/2020-12/schema" */
|
|
37
|
+
schemaVersion?: string;
|
|
38
|
+
/** Set additionalProperties: false on all objects. Default: false */
|
|
39
|
+
strictObjects?: boolean;
|
|
40
|
+
/** Name of the root type to emit. If not set, emits all types under $defs */
|
|
41
|
+
rootType?: string;
|
|
42
|
+
/** Include JSDoc descriptions and tags in the schema. Default: true */
|
|
43
|
+
includeJSDoc?: boolean;
|
|
44
|
+
/** Default value for additionalProperties if not specified via JSDoc or index signature */
|
|
45
|
+
additionalProperties?: boolean;
|
|
46
|
+
/** Follow import statements: "none" (default in API), "local" (default in CLI), "all" */
|
|
47
|
+
followImports?: "none" | "local" | "all";
|
|
48
|
+
/** Base directory for resolving imports. Default: dirname(entryPath) or cwd */
|
|
49
|
+
baseDir?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare class Emitter {
|
|
52
|
+
private declarations;
|
|
53
|
+
private options;
|
|
54
|
+
constructor(declarations: Declaration[], options?: EmitterOptions);
|
|
55
|
+
emit(): JSONSchema;
|
|
56
|
+
/**
|
|
57
|
+
* Emits schemas for all declarations at once.
|
|
58
|
+
* More efficient than calling emit() multiple times.
|
|
59
|
+
* Each schema is standalone with only its transitively referenced types in definitions.
|
|
60
|
+
*/
|
|
61
|
+
emitAll(): Record<string, JSONSchema>;
|
|
62
|
+
/**
|
|
63
|
+
* Emits a declaration as a standalone schema with minimal definitions.
|
|
64
|
+
* Only includes types that are transitively referenced.
|
|
65
|
+
* Uses "definitions" (draft-07 style) instead of "$defs" for compatibility.
|
|
66
|
+
*/
|
|
67
|
+
private emitDeclarationStandalone;
|
|
68
|
+
/**
|
|
69
|
+
* Recursively collects all type names that are transitively referenced by a given type.
|
|
70
|
+
*/
|
|
71
|
+
private collectTransitiveReferences;
|
|
72
|
+
/**
|
|
73
|
+
* Finds all direct type references in a declaration.
|
|
74
|
+
*/
|
|
75
|
+
private findDirectReferences;
|
|
76
|
+
/**
|
|
77
|
+
* Checks if a type name refers to a built-in type that shouldn't be in definitions.
|
|
78
|
+
*/
|
|
79
|
+
private isBuiltInType;
|
|
80
|
+
/**
|
|
81
|
+
* Recursively converts $ref paths from #/$defs/ to #/definitions/ in a schema.
|
|
82
|
+
*/
|
|
83
|
+
private convertRefsToDefinitions;
|
|
84
|
+
/**
|
|
85
|
+
* Checks if a schema contains a reference to a specific type name.
|
|
86
|
+
* Used to detect self-referential types.
|
|
87
|
+
*/
|
|
88
|
+
private containsReference;
|
|
89
|
+
/**
|
|
90
|
+
* Checks if a type is transitively self-referential.
|
|
91
|
+
* This includes both direct recursion (A → A) and mutual recursion (A → B → A).
|
|
92
|
+
*/
|
|
93
|
+
private isTransitivelySelfReferential;
|
|
94
|
+
/**
|
|
95
|
+
* Extracts all type names referenced in a schema.
|
|
96
|
+
*/
|
|
97
|
+
private getReferencedTypes;
|
|
98
|
+
private emitDeclaration;
|
|
99
|
+
private emitInterface;
|
|
100
|
+
private emitTypeAlias;
|
|
101
|
+
private emitEnum;
|
|
102
|
+
private emitType;
|
|
103
|
+
private emitPrimitive;
|
|
104
|
+
private emitObjectType;
|
|
105
|
+
private emitTuple;
|
|
106
|
+
private emitUnion;
|
|
107
|
+
private flattenUnion;
|
|
108
|
+
private emitIntersection;
|
|
109
|
+
private emitReference;
|
|
110
|
+
private emitRecord;
|
|
111
|
+
private resolveUtilityType;
|
|
112
|
+
private resolvePartial;
|
|
113
|
+
private resolveRequired;
|
|
114
|
+
private resolvePick;
|
|
115
|
+
private resolveOmit;
|
|
116
|
+
private extractKeyNames;
|
|
117
|
+
private getProperties;
|
|
118
|
+
private applyJSDocTags;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,WAAW,EAEZ,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC5C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2FAA2F;IAC3F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACzC,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,OAAO,CAA2B;gBAE9B,YAAY,EAAE,WAAW,EAAE,EAAE,OAAO,GAAE,cAAmB;IAiBrE,IAAI,IAAI,UAAU;IAiDlB;;;;OAIG;IACH,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAUrC;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IAuDjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAqBnC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiE5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IA+CrC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgC1B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,aAAa;IAoCrB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,QAAQ;IA0ChB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,cAAc;IAiDtB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,SAAS;IA4CjB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,cAAc;CAuCvB"}
|