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.
- 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,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SchemaWriter = void 0;
|
|
16
|
+
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const errors_1 = require("../errors");
|
|
19
|
+
class SchemaWriter {
|
|
20
|
+
constructor(options) {
|
|
21
|
+
this.options = options;
|
|
22
|
+
}
|
|
23
|
+
writeJsonSchema(schema, outputFile) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
try {
|
|
26
|
+
yield this.ensureOutputPath();
|
|
27
|
+
const content = this.options.minify
|
|
28
|
+
? JSON.stringify(schema)
|
|
29
|
+
: JSON.stringify(schema, null, 4);
|
|
30
|
+
yield fs_1.default.promises.writeFile(outputFile, content, 'utf-8');
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
throw new errors_1.CodeGenerationError(`Failed to write JSON schema: ${error instanceof Error ? error.message : String(error)}`, outputFile);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
writeTypeScriptFile(content, outputFile) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
try {
|
|
40
|
+
yield this.ensureOutputPath();
|
|
41
|
+
yield fs_1.default.promises.writeFile(outputFile, content, 'utf-8');
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
throw new errors_1.CodeGenerationError(`Failed to write TypeScript file: ${error instanceof Error ? error.message : String(error)}`, outputFile);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
ensureOutputPath() {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
if (!fs_1.default.existsSync(this.options.outputPath)) {
|
|
51
|
+
yield fs_1.default.promises.mkdir(this.options.outputPath, { recursive: true });
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
cleanOutputDirectory() {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
try {
|
|
58
|
+
if (fs_1.default.existsSync(this.options.outputPath)) {
|
|
59
|
+
const files = yield fs_1.default.promises.readdir(this.options.outputPath);
|
|
60
|
+
for (const file of files) {
|
|
61
|
+
const filePath = path_1.default.join(this.options.outputPath, file);
|
|
62
|
+
const stat = yield fs_1.default.promises.stat(filePath);
|
|
63
|
+
if (stat.isFile() && (file.endsWith('.ts') || file.endsWith('.json'))) {
|
|
64
|
+
yield fs_1.default.promises.unlink(filePath);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
throw new errors_1.CodeGenerationError(`Failed to clean output directory: ${error instanceof Error ? error.message : String(error)}`);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.SchemaWriter = SchemaWriter;
|
|
76
|
+
//# sourceMappingURL=SchemaWriter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaWriter.js","sourceRoot":"","sources":["../../src/services/SchemaWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const fs_1 = __importDefault(require("fs"));
|
|
16
|
+
const path_1 = __importDefault(require("path"));
|
|
17
|
+
const SchemaWriter_1 = require("./SchemaWriter");
|
|
18
|
+
const errors_1 = require("../errors");
|
|
19
|
+
const testDir = path_1.default.resolve(__dirname, "../test-tmp/schema-writer");
|
|
20
|
+
const cleanup = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
if (fs_1.default.existsSync(testDir)) {
|
|
22
|
+
yield fs_1.default.promises.rm(testDir, { recursive: true, force: true });
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
beforeEach(cleanup);
|
|
26
|
+
afterAll(cleanup);
|
|
27
|
+
describe("SchemaWriter", () => {
|
|
28
|
+
describe("writeJsonSchema", () => {
|
|
29
|
+
it("should write JSON schema with pretty formatting", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
31
|
+
outputPath: testDir,
|
|
32
|
+
minify: false
|
|
33
|
+
});
|
|
34
|
+
const schema = {
|
|
35
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
36
|
+
definitions: {
|
|
37
|
+
IUser: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
id: { type: "string" },
|
|
41
|
+
name: { type: "string" }
|
|
42
|
+
},
|
|
43
|
+
required: ["id", "name"],
|
|
44
|
+
additionalProperties: false
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const outputFile = path_1.default.join(testDir, "schema.json");
|
|
49
|
+
yield writer.writeJsonSchema(schema, outputFile);
|
|
50
|
+
expect(fs_1.default.existsSync(outputFile)).toBe(true);
|
|
51
|
+
const content = yield fs_1.default.promises.readFile(outputFile, 'utf-8');
|
|
52
|
+
const parsed = JSON.parse(content);
|
|
53
|
+
expect(parsed).toEqual(schema);
|
|
54
|
+
// Pretty formatted should have indentation
|
|
55
|
+
expect(content).toMatch(/\n /);
|
|
56
|
+
}));
|
|
57
|
+
it("should write minified JSON schema", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
59
|
+
outputPath: testDir,
|
|
60
|
+
minify: true
|
|
61
|
+
});
|
|
62
|
+
const schema = {
|
|
63
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
64
|
+
definitions: {
|
|
65
|
+
IUser: {
|
|
66
|
+
type: "object",
|
|
67
|
+
properties: {
|
|
68
|
+
id: { type: "string" }
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const outputFile = path_1.default.join(testDir, "schema.json");
|
|
74
|
+
yield writer.writeJsonSchema(schema, outputFile);
|
|
75
|
+
expect(fs_1.default.existsSync(outputFile)).toBe(true);
|
|
76
|
+
const content = yield fs_1.default.promises.readFile(outputFile, 'utf-8');
|
|
77
|
+
const parsed = JSON.parse(content);
|
|
78
|
+
expect(parsed).toEqual(schema);
|
|
79
|
+
// Minified should not have extra whitespace
|
|
80
|
+
expect(content).not.toMatch(/\n /);
|
|
81
|
+
}));
|
|
82
|
+
it("should create output directory if it doesn't exist", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
83
|
+
const nestedPath = path_1.default.join(testDir, "nested", "deep", "path");
|
|
84
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
85
|
+
outputPath: nestedPath,
|
|
86
|
+
minify: false
|
|
87
|
+
});
|
|
88
|
+
const schema = { $schema: "test" };
|
|
89
|
+
const outputFile = path_1.default.join(nestedPath, "schema.json");
|
|
90
|
+
yield writer.writeJsonSchema(schema, outputFile);
|
|
91
|
+
expect(fs_1.default.existsSync(outputFile)).toBe(true);
|
|
92
|
+
}));
|
|
93
|
+
it("should throw CodeGenerationError on write failure", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
94
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
95
|
+
outputPath: testDir,
|
|
96
|
+
minify: false
|
|
97
|
+
});
|
|
98
|
+
const schema = { $schema: "test" };
|
|
99
|
+
// Try to write to an invalid path (file as directory)
|
|
100
|
+
const invalidPath = path_1.default.join(testDir, "file.json", "invalid");
|
|
101
|
+
// Create file first to make path invalid
|
|
102
|
+
yield fs_1.default.promises.mkdir(testDir, { recursive: true });
|
|
103
|
+
yield fs_1.default.promises.writeFile(path_1.default.join(testDir, "file.json"), "test");
|
|
104
|
+
yield expect(writer.writeJsonSchema(schema, invalidPath))
|
|
105
|
+
.rejects.toThrow(errors_1.CodeGenerationError);
|
|
106
|
+
}));
|
|
107
|
+
});
|
|
108
|
+
describe("writeTypeScriptFile", () => {
|
|
109
|
+
it("should write TypeScript file correctly", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
110
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
111
|
+
outputPath: testDir,
|
|
112
|
+
minify: false
|
|
113
|
+
});
|
|
114
|
+
const content = `export interface IUser {
|
|
115
|
+
id: string;
|
|
116
|
+
name: string;
|
|
117
|
+
}`;
|
|
118
|
+
const outputFile = path_1.default.join(testDir, "types.ts");
|
|
119
|
+
yield writer.writeTypeScriptFile(content, outputFile);
|
|
120
|
+
expect(fs_1.default.existsSync(outputFile)).toBe(true);
|
|
121
|
+
const fileContent = yield fs_1.default.promises.readFile(outputFile, 'utf-8');
|
|
122
|
+
expect(fileContent).toBe(content);
|
|
123
|
+
}));
|
|
124
|
+
it("should create directories for TypeScript files", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
125
|
+
const nestedPath = path_1.default.join(testDir, "src", "types");
|
|
126
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
127
|
+
outputPath: nestedPath,
|
|
128
|
+
minify: false
|
|
129
|
+
});
|
|
130
|
+
const content = "export const test = 'value';";
|
|
131
|
+
const outputFile = path_1.default.join(nestedPath, "test.ts");
|
|
132
|
+
yield writer.writeTypeScriptFile(content, outputFile);
|
|
133
|
+
expect(fs_1.default.existsSync(outputFile)).toBe(true);
|
|
134
|
+
}));
|
|
135
|
+
it("should handle empty content", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
136
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
137
|
+
outputPath: testDir,
|
|
138
|
+
minify: false
|
|
139
|
+
});
|
|
140
|
+
const outputFile = path_1.default.join(testDir, "empty.ts");
|
|
141
|
+
yield writer.writeTypeScriptFile("", outputFile);
|
|
142
|
+
expect(fs_1.default.existsSync(outputFile)).toBe(true);
|
|
143
|
+
const content = yield fs_1.default.promises.readFile(outputFile, 'utf-8');
|
|
144
|
+
expect(content).toBe("");
|
|
145
|
+
}));
|
|
146
|
+
});
|
|
147
|
+
describe("cleanOutputDirectory", () => {
|
|
148
|
+
it("should remove TypeScript and JSON files", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
149
|
+
yield fs_1.default.promises.mkdir(testDir, { recursive: true });
|
|
150
|
+
// Create various files
|
|
151
|
+
yield fs_1.default.promises.writeFile(path_1.default.join(testDir, "schema.json"), "{}");
|
|
152
|
+
yield fs_1.default.promises.writeFile(path_1.default.join(testDir, "types.ts"), "export interface Test {}");
|
|
153
|
+
yield fs_1.default.promises.writeFile(path_1.default.join(testDir, "readme.md"), "# Test");
|
|
154
|
+
yield fs_1.default.promises.writeFile(path_1.default.join(testDir, "config.yaml"), "test: value");
|
|
155
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
156
|
+
outputPath: testDir,
|
|
157
|
+
minify: false
|
|
158
|
+
});
|
|
159
|
+
yield writer.cleanOutputDirectory();
|
|
160
|
+
// Should remove .ts and .json files
|
|
161
|
+
expect(fs_1.default.existsSync(path_1.default.join(testDir, "schema.json"))).toBe(false);
|
|
162
|
+
expect(fs_1.default.existsSync(path_1.default.join(testDir, "types.ts"))).toBe(false);
|
|
163
|
+
// Should keep other files
|
|
164
|
+
expect(fs_1.default.existsSync(path_1.default.join(testDir, "readme.md"))).toBe(true);
|
|
165
|
+
expect(fs_1.default.existsSync(path_1.default.join(testDir, "config.yaml"))).toBe(true);
|
|
166
|
+
}));
|
|
167
|
+
it("should handle non-existent directory", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
168
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
169
|
+
outputPath: path_1.default.join(testDir, "nonexistent"),
|
|
170
|
+
minify: false
|
|
171
|
+
});
|
|
172
|
+
// Should not throw
|
|
173
|
+
yield expect(writer.cleanOutputDirectory()).resolves.not.toThrow();
|
|
174
|
+
}));
|
|
175
|
+
it("should not remove subdirectories", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
176
|
+
yield fs_1.default.promises.mkdir(path_1.default.join(testDir, "subdir"), { recursive: true });
|
|
177
|
+
yield fs_1.default.promises.writeFile(path_1.default.join(testDir, "subdir", "file.ts"), "test");
|
|
178
|
+
yield fs_1.default.promises.writeFile(path_1.default.join(testDir, "main.ts"), "test");
|
|
179
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
180
|
+
outputPath: testDir,
|
|
181
|
+
minify: false
|
|
182
|
+
});
|
|
183
|
+
yield writer.cleanOutputDirectory();
|
|
184
|
+
// Should remove file in root
|
|
185
|
+
expect(fs_1.default.existsSync(path_1.default.join(testDir, "main.ts"))).toBe(false);
|
|
186
|
+
// Should keep subdirectory and its contents
|
|
187
|
+
expect(fs_1.default.existsSync(path_1.default.join(testDir, "subdir"))).toBe(true);
|
|
188
|
+
expect(fs_1.default.existsSync(path_1.default.join(testDir, "subdir", "file.ts"))).toBe(true);
|
|
189
|
+
}));
|
|
190
|
+
it("should handle permission errors gracefully", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
191
|
+
// Skip this test as it's environment dependent
|
|
192
|
+
// Real permission errors would be caught by the try-catch in SchemaWriter
|
|
193
|
+
}));
|
|
194
|
+
});
|
|
195
|
+
describe("edge cases", () => {
|
|
196
|
+
it("should handle large files", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
197
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
198
|
+
outputPath: testDir,
|
|
199
|
+
minify: false
|
|
200
|
+
});
|
|
201
|
+
// Create a large schema
|
|
202
|
+
const largeSchema = {
|
|
203
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
204
|
+
definitions: {}
|
|
205
|
+
};
|
|
206
|
+
// Add many definitions
|
|
207
|
+
for (let i = 0; i < 1000; i++) {
|
|
208
|
+
largeSchema.definitions[`Interface${i}`] = {
|
|
209
|
+
type: "object",
|
|
210
|
+
properties: {
|
|
211
|
+
id: { type: "string" },
|
|
212
|
+
name: { type: "string" },
|
|
213
|
+
value: { type: "number" }
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
const outputFile = path_1.default.join(testDir, "large-schema.json");
|
|
218
|
+
yield writer.writeJsonSchema(largeSchema, outputFile);
|
|
219
|
+
expect(fs_1.default.existsSync(outputFile)).toBe(true);
|
|
220
|
+
const stats = yield fs_1.default.promises.stat(outputFile);
|
|
221
|
+
expect(stats.size).toBeGreaterThan(1000); // Should be reasonably large
|
|
222
|
+
}));
|
|
223
|
+
it("should handle unicode content", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
224
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
225
|
+
outputPath: testDir,
|
|
226
|
+
minify: false
|
|
227
|
+
});
|
|
228
|
+
const unicodeContent = `export interface IUser {
|
|
229
|
+
// Unicode: café, naïve, résumé
|
|
230
|
+
name: string; // 中文注释
|
|
231
|
+
emoji: "👨💻" | "🚀" | "💡";
|
|
232
|
+
}`;
|
|
233
|
+
const outputFile = path_1.default.join(testDir, "unicode.ts");
|
|
234
|
+
yield writer.writeTypeScriptFile(unicodeContent, outputFile);
|
|
235
|
+
const content = yield fs_1.default.promises.readFile(outputFile, 'utf-8');
|
|
236
|
+
expect(content).toBe(unicodeContent);
|
|
237
|
+
}));
|
|
238
|
+
it("should overwrite existing files", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
239
|
+
const writer = new SchemaWriter_1.SchemaWriter({
|
|
240
|
+
outputPath: testDir,
|
|
241
|
+
minify: false
|
|
242
|
+
});
|
|
243
|
+
const outputFile = path_1.default.join(testDir, "overwrite.ts");
|
|
244
|
+
// Write first content
|
|
245
|
+
yield writer.writeTypeScriptFile("const first = 1;", outputFile);
|
|
246
|
+
const firstContent = yield fs_1.default.promises.readFile(outputFile, 'utf-8');
|
|
247
|
+
expect(firstContent).toBe("const first = 1;");
|
|
248
|
+
// Overwrite with second content
|
|
249
|
+
yield writer.writeTypeScriptFile("const second = 2;", outputFile);
|
|
250
|
+
const secondContent = yield fs_1.default.promises.readFile(outputFile, 'utf-8');
|
|
251
|
+
expect(secondContent).toBe("const second = 2;");
|
|
252
|
+
}));
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
//# sourceMappingURL=SchemaWriter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaWriter.test.js","sourceRoot":"","sources":["../../src/services/SchemaWriter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.jsonschema.js","sourceRoot":"","sources":["../../../src/test/basic-scenario/types.jsonschema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBaseType.js","sourceRoot":"","sources":["../../../src/test/duplicate-symbols-different-implementation/IBaseType.ts"],"names":[],"mappings":""}
|
package/dist/test/duplicate-symbols-different-implementation/IBaseTypeDefinitionReplicated.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBaseTypeDefinitionReplicated.js","sourceRoot":"","sources":["../../../src/test/duplicate-symbols-different-implementation/IBaseTypeDefinitionReplicated.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBasicTypesA.jsonschema.js","sourceRoot":"","sources":["../../../src/test/duplicate-symbols-different-implementation/IBasicTypesA.jsonschema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBasicTypesB.jsonschema.js","sourceRoot":"","sources":["../../../src/test/duplicate-symbols-different-implementation/IBasicTypesB.jsonschema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBaseType.js","sourceRoot":"","sources":["../../../src/test/duplicate-symbols-identitcal-implementation/IBaseType.ts"],"names":[],"mappings":""}
|
package/dist/test/duplicate-symbols-identitcal-implementation/IBaseTypeDefinitionReplicated.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBaseTypeDefinitionReplicated.js","sourceRoot":"","sources":["../../../src/test/duplicate-symbols-identitcal-implementation/IBaseTypeDefinitionReplicated.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBasicTypesA.jsonschema.js","sourceRoot":"","sources":["../../../src/test/duplicate-symbols-identitcal-implementation/IBasicTypesA.jsonschema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IBasicTypesB.jsonschema.js","sourceRoot":"","sources":["../../../src/test/duplicate-symbols-identitcal-implementation/IBasicTypesB.jsonschema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationType.js","sourceRoot":"","sources":["../../../../src/test/output/duplicate-symbols-identitcal-implementation/ValidationType.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.isValidSchema = exports.validator = void 0;
|
|
40
|
+
const schema = __importStar(require("./validation.schema.json"));
|
|
41
|
+
const ajv_1 = __importDefault(require("ajv"));
|
|
42
|
+
exports.validator = new ajv_1.default({ allErrors: true });
|
|
43
|
+
exports.validator.compile(schema);
|
|
44
|
+
const isValidSchema = (data, schemaKeyRef) => {
|
|
45
|
+
exports.validator.validate(schemaKeyRef, data);
|
|
46
|
+
return Boolean(exports.validator.errors) === false;
|
|
47
|
+
};
|
|
48
|
+
exports.isValidSchema = isValidSchema;
|
|
49
|
+
//# sourceMappingURL=isValidSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isValidSchema.js","sourceRoot":"","sources":["../../../../src/test/output/duplicate-symbols-identitcal-implementation/isValidSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,8CAAsB;AAGT,QAAA,SAAS,GAAG,IAAI,aAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,iBAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAC5B;AAEM,MAAM,aAAa,GAAG,CAAiC,IAAa,EAAE,YAAe,EAAsB,EAAE;IAChH,iBAAS,CAAC,QAAQ,CAAC,YAAsB,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,iBAAS,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;AAC3C,CAAC,CACJ;AAJY,QAAA,aAAa,iBAIzB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProgressReporter = void 0;
|
|
4
|
+
class ProgressReporter {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.options = options;
|
|
7
|
+
this.current = 0;
|
|
8
|
+
this.startTime = Date.now();
|
|
9
|
+
}
|
|
10
|
+
start(message) {
|
|
11
|
+
if (!this.options.enabled)
|
|
12
|
+
return;
|
|
13
|
+
this.startTime = Date.now();
|
|
14
|
+
this.current = 0;
|
|
15
|
+
console.log(message);
|
|
16
|
+
if (this.options.showBar && this.options.total) {
|
|
17
|
+
this.drawProgressBar();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
update(current, message) {
|
|
21
|
+
if (!this.options.enabled)
|
|
22
|
+
return;
|
|
23
|
+
this.current = current;
|
|
24
|
+
if (message) {
|
|
25
|
+
this.clearLine();
|
|
26
|
+
process.stdout.write(message);
|
|
27
|
+
}
|
|
28
|
+
else if (this.options.showBar && this.options.total) {
|
|
29
|
+
this.drawProgressBar();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
increment(message) {
|
|
33
|
+
this.update(this.current + 1, message);
|
|
34
|
+
}
|
|
35
|
+
complete(message) {
|
|
36
|
+
if (!this.options.enabled)
|
|
37
|
+
return;
|
|
38
|
+
const elapsed = Date.now() - this.startTime;
|
|
39
|
+
this.clearLine();
|
|
40
|
+
console.log(`${message} (${this.formatTime(elapsed)})`);
|
|
41
|
+
}
|
|
42
|
+
drawProgressBar() {
|
|
43
|
+
if (!this.options.total)
|
|
44
|
+
return;
|
|
45
|
+
const percentage = Math.min(100, Math.floor((this.current / this.options.total) * 100));
|
|
46
|
+
const barLength = 30;
|
|
47
|
+
const filled = Math.max(0, Math.min(barLength, Math.floor((this.current / this.options.total) * barLength)));
|
|
48
|
+
const bar = '█'.repeat(filled) + '░'.repeat(barLength - filled);
|
|
49
|
+
this.clearLine();
|
|
50
|
+
process.stdout.write(`Progress: [${bar}] ${percentage}% (${this.current}/${this.options.total})`);
|
|
51
|
+
}
|
|
52
|
+
clearLine() {
|
|
53
|
+
if (process.stdout.isTTY && process.stdout.clearLine && process.stdout.cursorTo) {
|
|
54
|
+
process.stdout.clearLine(0);
|
|
55
|
+
process.stdout.cursorTo(0);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
formatTime(ms) {
|
|
59
|
+
if (ms < 1000)
|
|
60
|
+
return `${ms}ms`;
|
|
61
|
+
if (ms < 60000)
|
|
62
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
63
|
+
return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.ProgressReporter = ProgressReporter;
|
|
67
|
+
//# sourceMappingURL=ProgressReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressReporter.js","sourceRoot":"","sources":["../../src/utils/ProgressReporter.ts"],"names":[],"mappings":"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"}
|