ts-runtime-validation 1.6.15 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/CONTRIBUTING.md +430 -0
  3. package/README.md +444 -64
  4. package/dist/ICommandOptions.js +3 -0
  5. package/dist/ICommandOptions.js.map +1 -0
  6. package/dist/SchemaGenerator.integration.test.js +323 -0
  7. package/dist/SchemaGenerator.integration.test.js.map +1 -0
  8. package/dist/SchemaGenerator.js +120 -0
  9. package/dist/SchemaGenerator.js.map +1 -0
  10. package/dist/SchemaGenerator.test.js +132 -0
  11. package/dist/SchemaGenerator.test.js.map +1 -0
  12. package/dist/errors/index.js +95 -0
  13. package/dist/errors/index.js.map +1 -0
  14. package/dist/errors/index.test.js +232 -0
  15. package/dist/errors/index.test.js.map +1 -0
  16. package/dist/getPosixPath.js +13 -0
  17. package/dist/getPosixPath.js.map +1 -0
  18. package/dist/index.js +27 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/lib.js.map +1 -0
  21. package/dist/services/CodeGenerator.js +305 -0
  22. package/dist/services/CodeGenerator.js.map +1 -0
  23. package/dist/services/FileDiscovery.js +121 -0
  24. package/dist/services/FileDiscovery.js.map +1 -0
  25. package/dist/services/FileDiscovery.test.js +184 -0
  26. package/dist/services/FileDiscovery.test.js.map +1 -0
  27. package/dist/services/SchemaProcessor.js +182 -0
  28. package/dist/services/SchemaProcessor.js.map +1 -0
  29. package/dist/services/SchemaProcessor.test.js +395 -0
  30. package/dist/services/SchemaProcessor.test.js.map +1 -0
  31. package/dist/services/SchemaWriter.js +76 -0
  32. package/dist/services/SchemaWriter.js.map +1 -0
  33. package/dist/services/SchemaWriter.test.js +255 -0
  34. package/dist/services/SchemaWriter.test.js.map +1 -0
  35. package/dist/test/basic-scenario/types.jsonschema.js +3 -0
  36. package/dist/test/basic-scenario/types.jsonschema.js.map +1 -0
  37. package/dist/test/duplicate-symbols-different-implementation/IBaseType.js +3 -0
  38. package/dist/test/duplicate-symbols-different-implementation/IBaseType.js.map +1 -0
  39. package/dist/test/duplicate-symbols-different-implementation/IBaseTypeDefinitionReplicated.js +3 -0
  40. package/dist/test/duplicate-symbols-different-implementation/IBaseTypeDefinitionReplicated.js.map +1 -0
  41. package/dist/test/duplicate-symbols-different-implementation/IBasicTypesA.jsonschema.js +3 -0
  42. package/dist/test/duplicate-symbols-different-implementation/IBasicTypesA.jsonschema.js.map +1 -0
  43. package/dist/test/duplicate-symbols-different-implementation/IBasicTypesB.jsonschema.js +3 -0
  44. package/dist/test/duplicate-symbols-different-implementation/IBasicTypesB.jsonschema.js.map +1 -0
  45. package/dist/test/duplicate-symbols-identitcal-implementation/IBaseType.js +3 -0
  46. package/dist/test/duplicate-symbols-identitcal-implementation/IBaseType.js.map +1 -0
  47. package/dist/test/duplicate-symbols-identitcal-implementation/IBaseTypeDefinitionReplicated.js +3 -0
  48. package/dist/test/duplicate-symbols-identitcal-implementation/IBaseTypeDefinitionReplicated.js.map +1 -0
  49. package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesA.jsonschema.js +3 -0
  50. package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesA.jsonschema.js.map +1 -0
  51. package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesB.jsonschema.js +3 -0
  52. package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesB.jsonschema.js.map +1 -0
  53. package/dist/test/output/duplicate-symbols-identitcal-implementation/ValidationType.js +3 -0
  54. package/dist/test/output/duplicate-symbols-identitcal-implementation/ValidationType.js.map +1 -0
  55. package/dist/test/output/duplicate-symbols-identitcal-implementation/isValidSchema.js +49 -0
  56. package/dist/test/output/duplicate-symbols-identitcal-implementation/isValidSchema.js.map +1 -0
  57. package/dist/utils/ProgressReporter.js +67 -0
  58. package/dist/utils/ProgressReporter.js.map +1 -0
  59. package/dist/utils/ProgressReporter.test.js +267 -0
  60. package/dist/utils/ProgressReporter.test.js.map +1 -0
  61. package/dist/writeLine.js +12 -0
  62. package/dist/writeLine.js.map +1 -0
  63. package/package.json +2 -2
  64. package/src/ICommandOptions.ts +7 -0
  65. package/src/SchemaGenerator.integration.test.ts +411 -0
  66. package/src/SchemaGenerator.test.ts +7 -0
  67. package/src/SchemaGenerator.ts +112 -298
  68. package/src/errors/index.test.ts +319 -0
  69. package/src/errors/index.ts +92 -0
  70. package/src/index.ts +7 -0
  71. package/src/services/CodeGenerator.ts +352 -0
  72. package/src/services/FileDiscovery.test.ts +216 -0
  73. package/src/services/FileDiscovery.ts +137 -0
  74. package/src/services/SchemaProcessor.test.ts +464 -0
  75. package/src/services/SchemaProcessor.ts +173 -0
  76. package/src/services/SchemaWriter.test.ts +304 -0
  77. package/src/services/SchemaWriter.ts +75 -0
  78. package/src/utils/ProgressReporter.test.ts +357 -0
  79. package/src/utils/ProgressReporter.ts +76 -0
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheError = exports.ConfigurationError = exports.ValidationError = exports.CodeGenerationError = exports.DuplicateSymbolError = exports.SchemaGenerationError = exports.FileDiscoveryError = exports.BaseError = void 0;
4
+ exports.isKnownError = isKnownError;
5
+ exports.formatError = formatError;
6
+ class BaseError extends Error {
7
+ constructor(message, code) {
8
+ super(message);
9
+ this.code = code;
10
+ this.name = this.constructor.name;
11
+ Error.captureStackTrace(this, this.constructor);
12
+ }
13
+ }
14
+ exports.BaseError = BaseError;
15
+ class FileDiscoveryError extends BaseError {
16
+ constructor(message, path) {
17
+ super(message, 'FILE_DISCOVERY_ERROR');
18
+ this.path = path;
19
+ }
20
+ }
21
+ exports.FileDiscoveryError = FileDiscoveryError;
22
+ class SchemaGenerationError extends BaseError {
23
+ constructor(message, file) {
24
+ super(message, 'SCHEMA_GENERATION_ERROR');
25
+ this.file = file;
26
+ }
27
+ }
28
+ exports.SchemaGenerationError = SchemaGenerationError;
29
+ class DuplicateSymbolError extends BaseError {
30
+ constructor(message, symbol, file, existingDefinition, newDefinition) {
31
+ super(message, 'DUPLICATE_SYMBOL_ERROR');
32
+ this.symbol = symbol;
33
+ this.file = file;
34
+ this.existingDefinition = existingDefinition;
35
+ this.newDefinition = newDefinition;
36
+ }
37
+ getDetailedMessage() {
38
+ return `${this.message}
39
+ Symbol: ${this.symbol}
40
+ File: ${this.file}
41
+ Existing Definition: ${JSON.stringify(this.existingDefinition, null, 2)}
42
+ New Definition: ${JSON.stringify(this.newDefinition, null, 2)}`;
43
+ }
44
+ }
45
+ exports.DuplicateSymbolError = DuplicateSymbolError;
46
+ class CodeGenerationError extends BaseError {
47
+ constructor(message, outputFile) {
48
+ super(message, 'CODE_GENERATION_ERROR');
49
+ this.outputFile = outputFile;
50
+ }
51
+ }
52
+ exports.CodeGenerationError = CodeGenerationError;
53
+ class ValidationError extends BaseError {
54
+ constructor(message, errors) {
55
+ super(message, 'VALIDATION_ERROR');
56
+ this.errors = errors;
57
+ }
58
+ getDetailedMessage() {
59
+ const errorList = this.errors
60
+ .map(err => ` - ${err.path}: ${err.message}`)
61
+ .join('\n');
62
+ return `${this.message}\n${errorList}`;
63
+ }
64
+ }
65
+ exports.ValidationError = ValidationError;
66
+ class ConfigurationError extends BaseError {
67
+ constructor(message, field) {
68
+ super(message, 'CONFIGURATION_ERROR');
69
+ this.field = field;
70
+ }
71
+ }
72
+ exports.ConfigurationError = ConfigurationError;
73
+ class CacheError extends BaseError {
74
+ constructor(message, operation) {
75
+ super(message, 'CACHE_ERROR');
76
+ this.operation = operation;
77
+ }
78
+ }
79
+ exports.CacheError = CacheError;
80
+ function isKnownError(error) {
81
+ return error instanceof BaseError;
82
+ }
83
+ function formatError(error, verbose = false) {
84
+ if (isKnownError(error)) {
85
+ if (verbose && 'getDetailedMessage' in error) {
86
+ return error.getDetailedMessage();
87
+ }
88
+ return `[${error.code}] ${error.message}`;
89
+ }
90
+ if (error instanceof Error) {
91
+ return verbose ? error.stack || error.message : error.message;
92
+ }
93
+ return String(error);
94
+ }
95
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("./index");
4
+ describe("Error Classes", () => {
5
+ describe("BaseError", () => {
6
+ it("should create error with message and code", () => {
7
+ const error = new index_1.BaseError("Test message", "TEST_CODE");
8
+ expect(error.message).toBe("Test message");
9
+ expect(error.code).toBe("TEST_CODE");
10
+ expect(error.name).toBe("BaseError");
11
+ expect(error instanceof Error).toBe(true);
12
+ });
13
+ it("should capture stack trace", () => {
14
+ const error = new index_1.BaseError("Test", "CODE");
15
+ expect(error.stack).toBeDefined();
16
+ expect(error.stack).toContain("BaseError");
17
+ });
18
+ });
19
+ describe("FileDiscoveryError", () => {
20
+ it("should create error with path information", () => {
21
+ const error = new index_1.FileDiscoveryError("File not found", "/path/to/file");
22
+ expect(error.message).toBe("File not found");
23
+ expect(error.code).toBe("FILE_DISCOVERY_ERROR");
24
+ expect(error.path).toBe("/path/to/file");
25
+ expect(error.name).toBe("FileDiscoveryError");
26
+ });
27
+ it("should work without path", () => {
28
+ const error = new index_1.FileDiscoveryError("General error");
29
+ expect(error.message).toBe("General error");
30
+ expect(error.path).toBeUndefined();
31
+ });
32
+ });
33
+ describe("SchemaGenerationError", () => {
34
+ it("should create error with file information", () => {
35
+ const error = new index_1.SchemaGenerationError("Schema generation failed", "user.ts");
36
+ expect(error.message).toBe("Schema generation failed");
37
+ expect(error.code).toBe("SCHEMA_GENERATION_ERROR");
38
+ expect(error.file).toBe("user.ts");
39
+ });
40
+ it("should work without file", () => {
41
+ const error = new index_1.SchemaGenerationError("General schema error");
42
+ expect(error.message).toBe("General schema error");
43
+ expect(error.file).toBeUndefined();
44
+ });
45
+ });
46
+ describe("DuplicateSymbolError", () => {
47
+ it("should create error with symbol details", () => {
48
+ const existingDef = { type: "object", properties: { id: { type: "string" } } };
49
+ const newDef = { type: "object", properties: { id: { type: "number" } } };
50
+ const error = new index_1.DuplicateSymbolError("Duplicate symbol found", "IUser", "user2.ts", existingDef, newDef);
51
+ expect(error.message).toBe("Duplicate symbol found");
52
+ expect(error.code).toBe("DUPLICATE_SYMBOL_ERROR");
53
+ expect(error.symbol).toBe("IUser");
54
+ expect(error.file).toBe("user2.ts");
55
+ expect(error.existingDefinition).toBe(existingDef);
56
+ expect(error.newDefinition).toBe(newDef);
57
+ });
58
+ it("should provide detailed message", () => {
59
+ const existingDef = { type: "string" };
60
+ const newDef = { type: "number" };
61
+ const error = new index_1.DuplicateSymbolError("Conflict", "TestType", "test.ts", existingDef, newDef);
62
+ const detailed = error.getDetailedMessage();
63
+ expect(detailed).toContain("Conflict");
64
+ expect(detailed).toContain("Symbol: TestType");
65
+ expect(detailed).toContain("File: test.ts");
66
+ expect(detailed).toContain("Existing Definition:");
67
+ expect(detailed).toContain("New Definition:");
68
+ expect(detailed).toContain(JSON.stringify(existingDef, null, 2));
69
+ expect(detailed).toContain(JSON.stringify(newDef, null, 2));
70
+ });
71
+ });
72
+ describe("CodeGenerationError", () => {
73
+ it("should create error with output file information", () => {
74
+ const error = new index_1.CodeGenerationError("Generation failed", "output.ts");
75
+ expect(error.message).toBe("Generation failed");
76
+ expect(error.code).toBe("CODE_GENERATION_ERROR");
77
+ expect(error.outputFile).toBe("output.ts");
78
+ });
79
+ it("should work without output file", () => {
80
+ const error = new index_1.CodeGenerationError("General generation error");
81
+ expect(error.message).toBe("General generation error");
82
+ expect(error.outputFile).toBeUndefined();
83
+ });
84
+ });
85
+ describe("ValidationError", () => {
86
+ it("should create error with validation errors", () => {
87
+ const validationErrors = [
88
+ { path: "user.name", message: "Required field missing" },
89
+ { path: "user.age", message: "Must be a number" }
90
+ ];
91
+ const error = new index_1.ValidationError("Validation failed", validationErrors);
92
+ expect(error.message).toBe("Validation failed");
93
+ expect(error.code).toBe("VALIDATION_ERROR");
94
+ expect(error.errors).toBe(validationErrors);
95
+ });
96
+ it("should provide detailed message", () => {
97
+ const validationErrors = [
98
+ { path: "user.name", message: "Required" },
99
+ { path: "user.email", message: "Invalid format" }
100
+ ];
101
+ const error = new index_1.ValidationError("Failed", validationErrors);
102
+ const detailed = error.getDetailedMessage();
103
+ expect(detailed).toContain("Failed");
104
+ expect(detailed).toContain("user.name: Required");
105
+ expect(detailed).toContain("user.email: Invalid format");
106
+ });
107
+ it("should handle empty errors array", () => {
108
+ const error = new index_1.ValidationError("No specific errors", []);
109
+ const detailed = error.getDetailedMessage();
110
+ expect(detailed).toBe("No specific errors\n");
111
+ });
112
+ });
113
+ describe("ConfigurationError", () => {
114
+ it("should create error with field information", () => {
115
+ const error = new index_1.ConfigurationError("Invalid configuration", "rootPath");
116
+ expect(error.message).toBe("Invalid configuration");
117
+ expect(error.code).toBe("CONFIGURATION_ERROR");
118
+ expect(error.field).toBe("rootPath");
119
+ });
120
+ it("should work without field", () => {
121
+ const error = new index_1.ConfigurationError("General config error");
122
+ expect(error.message).toBe("General config error");
123
+ expect(error.field).toBeUndefined();
124
+ });
125
+ });
126
+ describe("CacheError", () => {
127
+ it("should create error with operation information", () => {
128
+ const error = new index_1.CacheError("Cache operation failed", "read");
129
+ expect(error.message).toBe("Cache operation failed");
130
+ expect(error.code).toBe("CACHE_ERROR");
131
+ expect(error.operation).toBe("read");
132
+ });
133
+ it("should work without operation", () => {
134
+ const error = new index_1.CacheError("General cache error");
135
+ expect(error.message).toBe("General cache error");
136
+ expect(error.operation).toBeUndefined();
137
+ });
138
+ });
139
+ });
140
+ describe("Error Utilities", () => {
141
+ describe("isKnownError", () => {
142
+ it("should return true for known errors", () => {
143
+ expect((0, index_1.isKnownError)(new index_1.FileDiscoveryError("test"))).toBe(true);
144
+ expect((0, index_1.isKnownError)(new index_1.SchemaGenerationError("test"))).toBe(true);
145
+ expect((0, index_1.isKnownError)(new index_1.DuplicateSymbolError("test", "sym", "file", {}, {}))).toBe(true);
146
+ expect((0, index_1.isKnownError)(new index_1.CodeGenerationError("test"))).toBe(true);
147
+ expect((0, index_1.isKnownError)(new index_1.ValidationError("test", []))).toBe(true);
148
+ expect((0, index_1.isKnownError)(new index_1.ConfigurationError("test"))).toBe(true);
149
+ expect((0, index_1.isKnownError)(new index_1.CacheError("test"))).toBe(true);
150
+ });
151
+ it("should return false for unknown errors", () => {
152
+ expect((0, index_1.isKnownError)(new Error("regular error"))).toBe(false);
153
+ expect((0, index_1.isKnownError)(new TypeError("type error"))).toBe(false);
154
+ expect((0, index_1.isKnownError)("string error")).toBe(false);
155
+ expect((0, index_1.isKnownError)(null)).toBe(false);
156
+ expect((0, index_1.isKnownError)(undefined)).toBe(false);
157
+ expect((0, index_1.isKnownError)({ message: "object error" })).toBe(false);
158
+ });
159
+ });
160
+ describe("formatError", () => {
161
+ it("should format known errors with code", () => {
162
+ const error = new index_1.FileDiscoveryError("File not found");
163
+ const formatted = (0, index_1.formatError)(error);
164
+ expect(formatted).toBe("[FILE_DISCOVERY_ERROR] File not found");
165
+ });
166
+ it("should use detailed message in verbose mode", () => {
167
+ const validationErrors = [
168
+ { path: "user.name", message: "Required" }
169
+ ];
170
+ const error = new index_1.ValidationError("Validation failed", validationErrors);
171
+ const formatted = (0, index_1.formatError)(error, true);
172
+ expect(formatted).toContain("Validation failed");
173
+ expect(formatted).toContain("user.name: Required");
174
+ });
175
+ it("should format regular errors", () => {
176
+ const error = new Error("Regular error");
177
+ expect((0, index_1.formatError)(error, false)).toBe("Regular error");
178
+ expect((0, index_1.formatError)(error, true)).toContain("Regular error");
179
+ });
180
+ it("should include stack trace in verbose mode for regular errors", () => {
181
+ const error = new Error("Test error");
182
+ const formatted = (0, index_1.formatError)(error, true);
183
+ expect(formatted).toContain("Error: Test error");
184
+ });
185
+ it("should handle errors without stack", () => {
186
+ const error = new Error("No stack");
187
+ error.stack = undefined;
188
+ const formatted = (0, index_1.formatError)(error, true);
189
+ expect(formatted).toBe("No stack");
190
+ });
191
+ it("should handle non-error objects", () => {
192
+ expect((0, index_1.formatError)("string error")).toBe("string error");
193
+ expect((0, index_1.formatError)(123)).toBe("123");
194
+ expect((0, index_1.formatError)(null)).toBe("null");
195
+ expect((0, index_1.formatError)(undefined)).toBe("undefined");
196
+ expect((0, index_1.formatError)({ message: "object" })).toBe("[object Object]");
197
+ });
198
+ it("should handle DuplicateSymbolError detailed message", () => {
199
+ const error = new index_1.DuplicateSymbolError("Duplicate found", "ITest", "test.ts", { type: "string" }, { type: "number" });
200
+ const formatted = (0, index_1.formatError)(error, true);
201
+ expect(formatted).toContain("Symbol: ITest");
202
+ expect(formatted).toContain("File: test.ts");
203
+ });
204
+ it("should not use detailed message for errors without it", () => {
205
+ const error = new index_1.FileDiscoveryError("Test error");
206
+ const formatted = (0, index_1.formatError)(error, true);
207
+ expect(formatted).toBe("[FILE_DISCOVERY_ERROR] Test error");
208
+ });
209
+ });
210
+ describe("error inheritance", () => {
211
+ it("should maintain proper instanceof relationships", () => {
212
+ const fileError = new index_1.FileDiscoveryError("test");
213
+ expect(fileError instanceof index_1.FileDiscoveryError).toBe(true);
214
+ expect(fileError instanceof index_1.BaseError).toBe(true);
215
+ expect(fileError instanceof Error).toBe(true);
216
+ });
217
+ it("should have correct constructor names", () => {
218
+ const errors = [
219
+ new index_1.FileDiscoveryError("test"),
220
+ new index_1.SchemaGenerationError("test"),
221
+ new index_1.CodeGenerationError("test"),
222
+ new index_1.ValidationError("test", []),
223
+ new index_1.ConfigurationError("test"),
224
+ new index_1.CacheError("test")
225
+ ];
226
+ errors.forEach(error => {
227
+ expect(error.constructor.name).toBe(error.name);
228
+ });
229
+ });
230
+ });
231
+ });
232
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/errors/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getPosixPath = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const getPosixPath = (rawPath) => {
9
+ const definitelyPosix = rawPath.split(path_1.default.sep).join(path_1.default.posix.sep);
10
+ return definitelyPosix;
11
+ };
12
+ exports.getPosixPath = getPosixPath;
13
+ //# sourceMappingURL=getPosixPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPosixPath.js","sourceRoot":"","sources":["../src/getPosixPath.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAEjB,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,EAAE;IAC5C,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,OAAO,eAAe,CAAC;AAC3B,CAAC,CAAC;AAHW,QAAA,YAAY,gBAGvB"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const SchemaGenerator_1 = require("./SchemaGenerator");
5
+ const commander_1 = require("commander");
6
+ const defaultGlobPattern = "*.jsonschema.{ts,tsx}";
7
+ const defaultRootPath = "./src";
8
+ const defaultOutputFolder = "./.ts-runtime-validation";
9
+ const defaultTsconfig = "";
10
+ commander_1.program.option("--glob", `Glob file path of typescript files to generate ts-interface -> json-schema validations - default: ${defaultGlobPattern}`, defaultGlobPattern);
11
+ commander_1.program.option("--rootPath <rootFolder>", `RootPath of source`, defaultRootPath);
12
+ commander_1.program.option("--output <outputFolder>", `Code generation output directory (relative to root path)`, defaultOutputFolder);
13
+ commander_1.program.option("--tsconfigPath <tsconfigPath>", `Path to customt tsconfig (relative to root path)`, defaultTsconfig);
14
+ commander_1.program.option("--generate-helpers", "Only generate JSON schema without typescript helper files", true);
15
+ commander_1.program.option("--additionalProperties", "Allow additional properties to pass validation", false);
16
+ commander_1.program.option("--verbose", "Enable verbose logging", false);
17
+ commander_1.program.option("--progress", "Show progress information", false);
18
+ commander_1.program.option("--minify", "Minify generated output", false);
19
+ commander_1.program.option("--cache", "Enable file caching for incremental builds", false);
20
+ commander_1.program.option("--no-parallel", "Disable parallel processing", false);
21
+ commander_1.program.option("--tree-shaking", "Generate tree-shaking friendly exports", false);
22
+ commander_1.program.option("--lazy-load", "Generate lazy-loaded validators", false);
23
+ commander_1.program.parse();
24
+ const options = commander_1.program.opts();
25
+ const generator = new SchemaGenerator_1.SchemaGenerator(options);
26
+ generator.Generate();
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAGA,uDAAoD;AACpD,yCAAoC;AAEpC,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AAEnD,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AACvD,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,mBAAO,CAAC,MAAM,CACV,QAAQ,EACR,qGAAqG,kBAAkB,EAAE,EACzH,kBAAkB,CACrB,CAAC;AACF,mBAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;AACjF,mBAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,0DAA0D,EAAE,mBAAmB,CAAC,CAAC;AAC3H,mBAAO,CAAC,MAAM,CAAC,+BAA+B,EAAE,kDAAkD,EAAE,eAAe,CAAC,CAAC;AACrH,mBAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,2DAA2D,EAAE,IAAI,CAAC,CAAC;AACxG,mBAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,gDAAgD,EAAE,KAAK,CAAC,CAAC;AAClG,mBAAO,CAAC,MAAM,CAAC,WAAW,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC7D,mBAAO,CAAC,MAAM,CAAC,YAAY,EAAE,2BAA2B,EAAE,KAAK,CAAC,CAAC;AACjE,mBAAO,CAAC,MAAM,CAAC,UAAU,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;AAC7D,mBAAO,CAAC,MAAM,CAAC,SAAS,EAAE,4CAA4C,EAAE,KAAK,CAAC,CAAC;AAC/E,mBAAO,CAAC,MAAM,CAAC,eAAe,EAAE,6BAA6B,EAAE,KAAK,CAAC,CAAC;AACtE,mBAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,wCAAwC,EAAE,KAAK,CAAC,CAAC;AAClF,mBAAO,CAAC,MAAM,CAAC,aAAa,EAAE,iCAAiC,EAAE,KAAK,CAAC,CAAC;AAExE,mBAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,MAAM,OAAO,GAAG,mBAAO,CAAC,IAAI,EAAmB,CAAC;AAEhD,MAAM,SAAS,GAAG,IAAI,iCAAe,CAAC,OAAO,CAAC,CAAC;AAC/C,SAAS,CAAC,QAAQ,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":";;;AAAA,qDAAoD;AAA3C,kHAAA,eAAe,OAAA"}