ts-runtime-validation 1.6.16 → 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.
- package/.claude/settings.local.json +9 -0
- package/CONTRIBUTING.md +430 -0
- package/README.md +444 -64
- package/dist/ICommandOptions.js +3 -0
- package/dist/ICommandOptions.js.map +1 -0
- package/dist/SchemaGenerator.integration.test.js +323 -0
- package/dist/SchemaGenerator.integration.test.js.map +1 -0
- package/dist/SchemaGenerator.js +120 -0
- package/dist/SchemaGenerator.js.map +1 -0
- package/dist/SchemaGenerator.test.js +132 -0
- package/dist/SchemaGenerator.test.js.map +1 -0
- package/dist/errors/index.js +95 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/index.test.js +232 -0
- package/dist/errors/index.test.js.map +1 -0
- package/dist/getPosixPath.js +13 -0
- package/dist/getPosixPath.js.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/lib.js.map +1 -0
- package/dist/services/CodeGenerator.js +305 -0
- package/dist/services/CodeGenerator.js.map +1 -0
- package/dist/services/FileDiscovery.js +121 -0
- package/dist/services/FileDiscovery.js.map +1 -0
- package/dist/services/FileDiscovery.test.js +184 -0
- package/dist/services/FileDiscovery.test.js.map +1 -0
- package/dist/services/SchemaProcessor.js +182 -0
- package/dist/services/SchemaProcessor.js.map +1 -0
- package/dist/services/SchemaProcessor.test.js +395 -0
- package/dist/services/SchemaProcessor.test.js.map +1 -0
- package/dist/services/SchemaWriter.js +76 -0
- package/dist/services/SchemaWriter.js.map +1 -0
- package/dist/services/SchemaWriter.test.js +255 -0
- package/dist/services/SchemaWriter.test.js.map +1 -0
- package/dist/test/basic-scenario/types.jsonschema.js +3 -0
- package/dist/test/basic-scenario/types.jsonschema.js.map +1 -0
- package/dist/test/duplicate-symbols-different-implementation/IBaseType.js +3 -0
- package/dist/test/duplicate-symbols-different-implementation/IBaseType.js.map +1 -0
- package/dist/test/duplicate-symbols-different-implementation/IBaseTypeDefinitionReplicated.js +3 -0
- package/dist/test/duplicate-symbols-different-implementation/IBaseTypeDefinitionReplicated.js.map +1 -0
- package/dist/test/duplicate-symbols-different-implementation/IBasicTypesA.jsonschema.js +3 -0
- package/dist/test/duplicate-symbols-different-implementation/IBasicTypesA.jsonschema.js.map +1 -0
- package/dist/test/duplicate-symbols-different-implementation/IBasicTypesB.jsonschema.js +3 -0
- package/dist/test/duplicate-symbols-different-implementation/IBasicTypesB.jsonschema.js.map +1 -0
- package/dist/test/duplicate-symbols-identitcal-implementation/IBaseType.js +3 -0
- package/dist/test/duplicate-symbols-identitcal-implementation/IBaseType.js.map +1 -0
- package/dist/test/duplicate-symbols-identitcal-implementation/IBaseTypeDefinitionReplicated.js +3 -0
- package/dist/test/duplicate-symbols-identitcal-implementation/IBaseTypeDefinitionReplicated.js.map +1 -0
- package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesA.jsonschema.js +3 -0
- package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesA.jsonschema.js.map +1 -0
- package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesB.jsonschema.js +3 -0
- package/dist/test/duplicate-symbols-identitcal-implementation/IBasicTypesB.jsonschema.js.map +1 -0
- package/dist/test/output/duplicate-symbols-identitcal-implementation/ValidationType.js +3 -0
- package/dist/test/output/duplicate-symbols-identitcal-implementation/ValidationType.js.map +1 -0
- package/dist/test/output/duplicate-symbols-identitcal-implementation/isValidSchema.js +49 -0
- package/dist/test/output/duplicate-symbols-identitcal-implementation/isValidSchema.js.map +1 -0
- package/dist/utils/ProgressReporter.js +67 -0
- package/dist/utils/ProgressReporter.js.map +1 -0
- package/dist/utils/ProgressReporter.test.js +267 -0
- package/dist/utils/ProgressReporter.test.js.map +1 -0
- package/dist/writeLine.js +12 -0
- package/dist/writeLine.js.map +1 -0
- package/package.json +2 -2
- package/src/ICommandOptions.ts +7 -0
- package/src/SchemaGenerator.integration.test.ts +411 -0
- package/src/SchemaGenerator.test.ts +7 -0
- package/src/SchemaGenerator.ts +112 -298
- package/src/errors/index.test.ts +319 -0
- package/src/errors/index.ts +92 -0
- package/src/index.ts +7 -0
- package/src/services/CodeGenerator.ts +352 -0
- package/src/services/FileDiscovery.test.ts +216 -0
- package/src/services/FileDiscovery.ts +137 -0
- package/src/services/SchemaProcessor.test.ts +464 -0
- package/src/services/SchemaProcessor.ts +173 -0
- package/src/services/SchemaWriter.test.ts +304 -0
- package/src/services/SchemaWriter.ts +75 -0
- package/src/utils/ProgressReporter.test.ts +357 -0
- package/src/utils/ProgressReporter.ts +76 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ProgressReporter_1 = require("./ProgressReporter");
|
|
4
|
+
// Mock process.stdout for testing
|
|
5
|
+
const mockStdout = {
|
|
6
|
+
isTTY: true,
|
|
7
|
+
clearLine: jest.fn(),
|
|
8
|
+
cursorTo: jest.fn(),
|
|
9
|
+
write: jest.fn()
|
|
10
|
+
};
|
|
11
|
+
const originalStdout = process.stdout;
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
// Reset mock functions
|
|
14
|
+
mockStdout.clearLine = jest.fn();
|
|
15
|
+
mockStdout.cursorTo = jest.fn();
|
|
16
|
+
mockStdout.write = jest.fn();
|
|
17
|
+
mockStdout.isTTY = true;
|
|
18
|
+
// Replace process.stdout with mock
|
|
19
|
+
Object.defineProperty(process, 'stdout', {
|
|
20
|
+
value: mockStdout,
|
|
21
|
+
configurable: true
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
afterAll(() => {
|
|
25
|
+
// Restore original stdout
|
|
26
|
+
Object.defineProperty(process, 'stdout', {
|
|
27
|
+
value: originalStdout,
|
|
28
|
+
configurable: true
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe("ProgressReporter", () => {
|
|
32
|
+
describe("disabled reporter", () => {
|
|
33
|
+
it("should not output anything when disabled", () => {
|
|
34
|
+
const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
|
|
35
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
36
|
+
enabled: false,
|
|
37
|
+
total: 100,
|
|
38
|
+
showBar: true
|
|
39
|
+
});
|
|
40
|
+
reporter.start("Starting task");
|
|
41
|
+
reporter.update(50, "Half done");
|
|
42
|
+
reporter.increment("Almost there");
|
|
43
|
+
reporter.complete("Task completed");
|
|
44
|
+
expect(consoleSpy).not.toHaveBeenCalled();
|
|
45
|
+
expect(mockStdout.write).not.toHaveBeenCalled();
|
|
46
|
+
consoleSpy.mockRestore();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe("enabled reporter without progress bar", () => {
|
|
50
|
+
it("should show start and complete messages", () => {
|
|
51
|
+
const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
|
|
52
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
53
|
+
enabled: true,
|
|
54
|
+
showBar: false
|
|
55
|
+
});
|
|
56
|
+
reporter.start("Starting task");
|
|
57
|
+
reporter.complete("Task completed");
|
|
58
|
+
expect(consoleSpy).toHaveBeenCalledWith("Starting task");
|
|
59
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("Task completed"));
|
|
60
|
+
consoleSpy.mockRestore();
|
|
61
|
+
});
|
|
62
|
+
it("should show custom update messages", () => {
|
|
63
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
64
|
+
enabled: true,
|
|
65
|
+
showBar: false
|
|
66
|
+
});
|
|
67
|
+
reporter.start("Starting");
|
|
68
|
+
reporter.update(25, "Processing file 1");
|
|
69
|
+
reporter.update(50, "Processing file 2");
|
|
70
|
+
expect(mockStdout.write).toHaveBeenCalledWith("Processing file 1");
|
|
71
|
+
expect(mockStdout.write).toHaveBeenCalledWith("Processing file 2");
|
|
72
|
+
});
|
|
73
|
+
it("should handle increment without message", () => {
|
|
74
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
75
|
+
enabled: true,
|
|
76
|
+
showBar: false
|
|
77
|
+
});
|
|
78
|
+
reporter.start("Starting");
|
|
79
|
+
reporter.increment();
|
|
80
|
+
// Should not crash when incrementing without message
|
|
81
|
+
expect(() => reporter.increment()).not.toThrow();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe("enabled reporter with progress bar", () => {
|
|
85
|
+
it("should draw progress bar", () => {
|
|
86
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
87
|
+
enabled: true,
|
|
88
|
+
total: 100,
|
|
89
|
+
showBar: true
|
|
90
|
+
});
|
|
91
|
+
reporter.start("Processing files");
|
|
92
|
+
reporter.update(25);
|
|
93
|
+
expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("Progress: ["));
|
|
94
|
+
expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("25%"));
|
|
95
|
+
expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(25/100)"));
|
|
96
|
+
});
|
|
97
|
+
it("should show 100% when complete", () => {
|
|
98
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
99
|
+
enabled: true,
|
|
100
|
+
total: 50,
|
|
101
|
+
showBar: true
|
|
102
|
+
});
|
|
103
|
+
reporter.start("Processing");
|
|
104
|
+
reporter.update(50);
|
|
105
|
+
expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("100%"));
|
|
106
|
+
expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(50/50)"));
|
|
107
|
+
});
|
|
108
|
+
it("should handle progress beyond total", () => {
|
|
109
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
110
|
+
enabled: true,
|
|
111
|
+
total: 10,
|
|
112
|
+
showBar: true
|
|
113
|
+
});
|
|
114
|
+
reporter.start("Processing");
|
|
115
|
+
reporter.update(15); // More than total
|
|
116
|
+
// Should cap at 100% but show actual numbers
|
|
117
|
+
expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(15/10)"));
|
|
118
|
+
});
|
|
119
|
+
it("should use increment correctly", () => {
|
|
120
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
121
|
+
enabled: true,
|
|
122
|
+
total: 3,
|
|
123
|
+
showBar: true
|
|
124
|
+
});
|
|
125
|
+
reporter.start("Processing");
|
|
126
|
+
reporter.increment(); // 1
|
|
127
|
+
reporter.increment(); // 2
|
|
128
|
+
reporter.increment(); // 3
|
|
129
|
+
expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(3/3)"));
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
describe("time formatting", () => {
|
|
133
|
+
it("should format completion time in different units", () => {
|
|
134
|
+
const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
|
|
135
|
+
// Mock Date.now to control timing
|
|
136
|
+
const originalNow = Date.now;
|
|
137
|
+
let currentTime = 1000;
|
|
138
|
+
Date.now = jest.fn(() => currentTime);
|
|
139
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
140
|
+
enabled: true
|
|
141
|
+
});
|
|
142
|
+
reporter.start("Processing");
|
|
143
|
+
// Simulate 500ms elapsed
|
|
144
|
+
currentTime = 1500;
|
|
145
|
+
reporter.complete("Done");
|
|
146
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("500ms"));
|
|
147
|
+
consoleSpy.mockClear();
|
|
148
|
+
// Test seconds
|
|
149
|
+
currentTime = 1000; // Reset time
|
|
150
|
+
reporter.start("Processing");
|
|
151
|
+
currentTime = 3500; // 2.5 seconds elapsed
|
|
152
|
+
reporter.complete("Done");
|
|
153
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("2.5s"));
|
|
154
|
+
consoleSpy.mockClear();
|
|
155
|
+
// Test minutes
|
|
156
|
+
currentTime = 1000; // Reset time
|
|
157
|
+
reporter.start("Processing");
|
|
158
|
+
currentTime = 126000; // 125 seconds = 2m 5s elapsed
|
|
159
|
+
reporter.complete("Done");
|
|
160
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("2m 5s"));
|
|
161
|
+
// Restore Date.now
|
|
162
|
+
Date.now = originalNow;
|
|
163
|
+
consoleSpy.mockRestore();
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
describe("TTY handling", () => {
|
|
167
|
+
it("should handle non-TTY environments", () => {
|
|
168
|
+
mockStdout.isTTY = false;
|
|
169
|
+
mockStdout.clearLine = undefined;
|
|
170
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
171
|
+
enabled: true,
|
|
172
|
+
total: 10,
|
|
173
|
+
showBar: true
|
|
174
|
+
});
|
|
175
|
+
reporter.start("Processing");
|
|
176
|
+
reporter.update(5);
|
|
177
|
+
// Should not crash when clearLine is not available
|
|
178
|
+
expect(mockStdout.write).toHaveBeenCalled();
|
|
179
|
+
});
|
|
180
|
+
it("should handle missing cursorTo", () => {
|
|
181
|
+
mockStdout.isTTY = true;
|
|
182
|
+
mockStdout.clearLine = jest.fn();
|
|
183
|
+
mockStdout.cursorTo = undefined;
|
|
184
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
185
|
+
enabled: true,
|
|
186
|
+
total: 10,
|
|
187
|
+
showBar: true
|
|
188
|
+
});
|
|
189
|
+
reporter.start("Processing");
|
|
190
|
+
reporter.update(5);
|
|
191
|
+
// Should not crash when cursorTo is not available
|
|
192
|
+
expect(mockStdout.write).toHaveBeenCalled();
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
describe("edge cases", () => {
|
|
196
|
+
it("should handle zero total", () => {
|
|
197
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
198
|
+
enabled: true,
|
|
199
|
+
total: 0,
|
|
200
|
+
showBar: true
|
|
201
|
+
});
|
|
202
|
+
// Should not crash with zero total
|
|
203
|
+
expect(() => {
|
|
204
|
+
reporter.start("Processing");
|
|
205
|
+
reporter.update(1);
|
|
206
|
+
}).not.toThrow();
|
|
207
|
+
});
|
|
208
|
+
it("should handle negative progress", () => {
|
|
209
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
210
|
+
enabled: true,
|
|
211
|
+
total: 10,
|
|
212
|
+
showBar: true
|
|
213
|
+
});
|
|
214
|
+
reporter.start("Processing");
|
|
215
|
+
reporter.update(-5);
|
|
216
|
+
// Should handle gracefully
|
|
217
|
+
expect(mockStdout.write).toHaveBeenCalled();
|
|
218
|
+
});
|
|
219
|
+
it("should handle undefined total with progress bar", () => {
|
|
220
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
221
|
+
enabled: true,
|
|
222
|
+
total: undefined,
|
|
223
|
+
showBar: true
|
|
224
|
+
});
|
|
225
|
+
// Should not crash with undefined total
|
|
226
|
+
expect(() => {
|
|
227
|
+
reporter.start("Processing");
|
|
228
|
+
reporter.update(5);
|
|
229
|
+
}).not.toThrow();
|
|
230
|
+
});
|
|
231
|
+
it("should handle very large numbers", () => {
|
|
232
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
233
|
+
enabled: true,
|
|
234
|
+
total: 1000000,
|
|
235
|
+
showBar: true
|
|
236
|
+
});
|
|
237
|
+
reporter.start("Processing");
|
|
238
|
+
reporter.update(500000);
|
|
239
|
+
expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("50%"));
|
|
240
|
+
expect(mockStdout.write).toHaveBeenCalledWith(expect.stringContaining("(500000/1000000)"));
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
describe("visual progress bar", () => {
|
|
244
|
+
it("should show correct bar fill at different percentages", () => {
|
|
245
|
+
const reporter = new ProgressReporter_1.ProgressReporter({
|
|
246
|
+
enabled: true,
|
|
247
|
+
total: 100,
|
|
248
|
+
showBar: true
|
|
249
|
+
});
|
|
250
|
+
reporter.start("Test");
|
|
251
|
+
// 0%
|
|
252
|
+
reporter.update(0);
|
|
253
|
+
let lastCall = mockStdout.write.mock.calls[mockStdout.write.mock.calls.length - 1][0];
|
|
254
|
+
expect(lastCall).toContain("░".repeat(30)); // All empty
|
|
255
|
+
// 50%
|
|
256
|
+
reporter.update(50);
|
|
257
|
+
lastCall = mockStdout.write.mock.calls[mockStdout.write.mock.calls.length - 1][0];
|
|
258
|
+
expect(lastCall).toContain("█".repeat(15)); // Half filled
|
|
259
|
+
expect(lastCall).toContain("░".repeat(15)); // Half empty
|
|
260
|
+
// 100%
|
|
261
|
+
reporter.update(100);
|
|
262
|
+
lastCall = mockStdout.write.mock.calls[mockStdout.write.mock.calls.length - 1][0];
|
|
263
|
+
expect(lastCall).toContain("█".repeat(30)); // All filled
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
//# sourceMappingURL=ProgressReporter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressReporter.test.js","sourceRoot":"","sources":["../../src/utils/ProgressReporter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.writeLine = void 0;
|
|
4
|
+
const writeLine = (msg) => {
|
|
5
|
+
if (process.stdout.isTTY && process.stdout.clearLine) {
|
|
6
|
+
process.stdout.clearLine(0);
|
|
7
|
+
process.stdout.cursorTo(0);
|
|
8
|
+
}
|
|
9
|
+
process.stdout.write(msg);
|
|
10
|
+
};
|
|
11
|
+
exports.writeLine = writeLine;
|
|
12
|
+
//# sourceMappingURL=writeLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeLine.js","sourceRoot":"","sources":["../src/writeLine.ts"],"names":[],"mappings":";;;AAAO,MAAM,SAAS,GAAG,CAAC,GAAU,EAAE,EAAE;IACpC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAA;AANY,QAAA,SAAS,aAMrB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-runtime-validation",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"author": "Matthew Duong <thegalah@gmail.com>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"dependencies": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"ts-node": "^10.9.1",
|
|
29
29
|
"typescript": "^5.1.6"
|
|
30
30
|
},
|
|
31
|
-
"description": "
|
|
31
|
+
"description": "High-performance TypeScript runtime validation with intelligent caching, parallel processing, and zero-effort JSON Schema generation from your existing interfaces",
|
|
32
32
|
"main": "dist/lib.js",
|
|
33
33
|
"repository": {
|
|
34
34
|
"type": "git",
|
package/src/ICommandOptions.ts
CHANGED
|
@@ -5,4 +5,11 @@ export interface ICommandOptions {
|
|
|
5
5
|
readonly helpers: boolean;
|
|
6
6
|
readonly additionalProperties: boolean;
|
|
7
7
|
readonly tsconfigPath: string;
|
|
8
|
+
readonly verbose?: boolean;
|
|
9
|
+
readonly progress?: boolean;
|
|
10
|
+
readonly minify?: boolean;
|
|
11
|
+
readonly cache?: boolean;
|
|
12
|
+
readonly parallel?: boolean;
|
|
13
|
+
readonly treeShaking?: boolean;
|
|
14
|
+
readonly lazyLoad?: boolean;
|
|
8
15
|
}
|