ts-runtime-validation 1.1.3 → 1.1.4
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/dist/SchemaGenerator.js +29 -10
- package/dist/SchemaGenerator.js.map +1 -1
- package/package.json +1 -1
- package/src/SchemaGenerator.ts +32 -10
package/dist/SchemaGenerator.js
CHANGED
|
@@ -71,10 +71,10 @@ class SchemaGenerator {
|
|
|
71
71
|
console.log(`Aborting - no files found with glob: ${glob}`);
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
|
-
const fileSchemas = yield this.
|
|
75
|
-
console.log(`Generating
|
|
74
|
+
const fileSchemas = yield this.getJsonSchemasForFiles(fileList);
|
|
75
|
+
console.log(`Generating validation schema(s)`);
|
|
76
76
|
if (fileSchemas.size === 0) {
|
|
77
|
-
console.log(`Aborting - no
|
|
77
|
+
console.log(`Aborting - no types found: ${glob}`);
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
80
|
this.writeSchemaMapToValidationSchema(fileSchemas);
|
|
@@ -98,7 +98,7 @@ class SchemaGenerator {
|
|
|
98
98
|
});
|
|
99
99
|
return api.withPromise();
|
|
100
100
|
});
|
|
101
|
-
this.
|
|
101
|
+
this.getJsonSchemasForFiles = (filesList) => __awaiter(this, void 0, void 0, function* () {
|
|
102
102
|
const { additionalProperties } = this.options;
|
|
103
103
|
const schemaMap = new Map();
|
|
104
104
|
filesList.forEach((file) => {
|
|
@@ -107,8 +107,7 @@ class SchemaGenerator {
|
|
|
107
107
|
type: "*",
|
|
108
108
|
additionalProperties,
|
|
109
109
|
encodeRefs: false,
|
|
110
|
-
|
|
111
|
-
expose: "export",
|
|
110
|
+
sortProps: true,
|
|
112
111
|
};
|
|
113
112
|
const schemaGenerator = tsj.createGenerator(config);
|
|
114
113
|
const fileSchemas = schemaGenerator.createSchema(config.type);
|
|
@@ -116,6 +115,19 @@ class SchemaGenerator {
|
|
|
116
115
|
});
|
|
117
116
|
return schemaMap;
|
|
118
117
|
});
|
|
118
|
+
// private getFileSymbols = (fileList: Array<string>) => {
|
|
119
|
+
// const symbolMap = new Map<string, Array<string>>();
|
|
120
|
+
// const project = new Project(defaultTsMorphProjectSettings);
|
|
121
|
+
// fileList.forEach((file) => {
|
|
122
|
+
// console.log(file);
|
|
123
|
+
// const sourceFile = project.addSourceFileAtPath(file);
|
|
124
|
+
// const aliases = sourceFile.getTypeAliases();
|
|
125
|
+
// aliases.forEach((alias) => {
|
|
126
|
+
// console.log(alias.getName());
|
|
127
|
+
// });
|
|
128
|
+
// });
|
|
129
|
+
// return symbolMap;
|
|
130
|
+
// };
|
|
119
131
|
this.getSchemaVersion = (schemaMap) => {
|
|
120
132
|
var _a;
|
|
121
133
|
const firstEntry = schemaMap.values().next().value;
|
|
@@ -148,6 +160,7 @@ class SchemaGenerator {
|
|
|
148
160
|
};
|
|
149
161
|
this.writeSchemaMapToValidationTypes = (schemaMap) => __awaiter(this, void 0, void 0, function* () {
|
|
150
162
|
const project = new ts_morph_1.Project(defaultTsMorphProjectSettings);
|
|
163
|
+
const readerProject = new ts_morph_1.Project(defaultTsMorphProjectSettings);
|
|
151
164
|
const symbols = [];
|
|
152
165
|
const importMap = new Map();
|
|
153
166
|
schemaMap.forEach((schema, filePath) => {
|
|
@@ -157,12 +170,18 @@ class SchemaGenerator {
|
|
|
157
170
|
const relativeFilePath = path_1.default.relative(this.outputPath, dir);
|
|
158
171
|
const importPath = `${relativeFilePath}/${fileWithoutExtension}`;
|
|
159
172
|
const defs = (_a = schema.definitions) !== null && _a !== void 0 ? _a : {};
|
|
173
|
+
const readerSourceFile = readerProject.addSourceFileAtPath(filePath);
|
|
160
174
|
Object.keys(defs).forEach((symbol) => {
|
|
161
175
|
var _a;
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
176
|
+
const typeAlias = readerSourceFile.getTypeAlias(symbol);
|
|
177
|
+
const typeInterface = readerSourceFile.getInterface(symbol);
|
|
178
|
+
const hasTypeOrInterface = (typeAlias !== null && typeAlias !== void 0 ? typeAlias : typeInterface) !== undefined;
|
|
179
|
+
if (hasTypeOrInterface) {
|
|
180
|
+
const namedImports = (_a = importMap.get(importPath)) !== null && _a !== void 0 ? _a : [];
|
|
181
|
+
namedImports.push(symbol);
|
|
182
|
+
importMap.set(importPath, namedImports);
|
|
183
|
+
symbols.push(symbol);
|
|
184
|
+
}
|
|
166
185
|
});
|
|
167
186
|
});
|
|
168
187
|
const sourceFile = project.createSourceFile(this.tsSchemaDefinitionOutputFile, {}, defaultCreateFileOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../src/SchemaGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA4B;AAE5B,4CAAoB;AACpB,0DAAkC;AAClC,gDAAwB;AACxB,uCAUkB;AAClB,8DAAgD;AAGhD,MAAM,6BAA6B,GAAmB;IAClD,oBAAoB,EAAE;QAClB,eAAe,EAAE,0BAAe,CAAC,UAAU;QAC3C,WAAW,EAAE,sBAAW,CAAC,QAAQ;QACjC,SAAS,EAAE,oBAAS,CAAC,MAAM;QAC3B,+BAA+B,EAAE,KAAK;QACtC,iBAAiB,EAAE,IAAI;KAC1B;CACJ,CAAC;AAEF,MAAM,wBAAwB,GAA4B;IACtD,SAAS,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,wBAAwB,GAAG,wBAAwB,CAAC;AAC1D,MAAM,wBAAwB,GAAG,qBAAqB,CAAC;AAEvD,MAAa,eAAe;IAMxB,YAA2B,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;QAL3C,eAAU,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,yBAAoB,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;QACvG,iCAA4B,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;QAC/G,4BAAuB,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAIrG,aAAQ,GAAG,GAAS,EAAE;YACzB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE/C,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,iBAAiB,CAAC,CAAC;YACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;gBAC5D,OAAO;aACV;YACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"SchemaGenerator.js","sourceRoot":"","sources":["../src/SchemaGenerator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/SchemaGenerator.ts
CHANGED
|
@@ -51,10 +51,11 @@ export class SchemaGenerator {
|
|
|
51
51
|
console.log(`Aborting - no files found with glob: ${glob}`);
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
|
-
const fileSchemas = await this.
|
|
55
|
-
|
|
54
|
+
const fileSchemas = await this.getJsonSchemasForFiles(fileList);
|
|
55
|
+
|
|
56
|
+
console.log(`Generating validation schema(s)`);
|
|
56
57
|
if (fileSchemas.size === 0) {
|
|
57
|
-
console.log(`Aborting - no
|
|
58
|
+
console.log(`Aborting - no types found: ${glob}`);
|
|
58
59
|
return;
|
|
59
60
|
}
|
|
60
61
|
this.writeSchemaMapToValidationSchema(fileSchemas);
|
|
@@ -80,7 +81,7 @@ export class SchemaGenerator {
|
|
|
80
81
|
return api.withPromise() as Promise<Array<string>>;
|
|
81
82
|
};
|
|
82
83
|
|
|
83
|
-
private
|
|
84
|
+
private getJsonSchemasForFiles = async (filesList: Array<string>) => {
|
|
84
85
|
const { additionalProperties } = this.options;
|
|
85
86
|
const schemaMap = new Map<string, Schema>();
|
|
86
87
|
filesList.forEach((file) => {
|
|
@@ -89,8 +90,7 @@ export class SchemaGenerator {
|
|
|
89
90
|
type: "*",
|
|
90
91
|
additionalProperties,
|
|
91
92
|
encodeRefs: false,
|
|
92
|
-
|
|
93
|
-
expose: "export",
|
|
93
|
+
sortProps: true,
|
|
94
94
|
};
|
|
95
95
|
|
|
96
96
|
const schemaGenerator = tsj.createGenerator(config);
|
|
@@ -100,6 +100,20 @@ export class SchemaGenerator {
|
|
|
100
100
|
return schemaMap;
|
|
101
101
|
};
|
|
102
102
|
|
|
103
|
+
// private getFileSymbols = (fileList: Array<string>) => {
|
|
104
|
+
// const symbolMap = new Map<string, Array<string>>();
|
|
105
|
+
// const project = new Project(defaultTsMorphProjectSettings);
|
|
106
|
+
// fileList.forEach((file) => {
|
|
107
|
+
// console.log(file);
|
|
108
|
+
// const sourceFile = project.addSourceFileAtPath(file);
|
|
109
|
+
// const aliases = sourceFile.getTypeAliases();
|
|
110
|
+
// aliases.forEach((alias) => {
|
|
111
|
+
// console.log(alias.getName());
|
|
112
|
+
// });
|
|
113
|
+
// });
|
|
114
|
+
// return symbolMap;
|
|
115
|
+
// };
|
|
116
|
+
|
|
103
117
|
private getSchemaVersion = (schemaMap: Map<string, Schema>) => {
|
|
104
118
|
const firstEntry = schemaMap.values().next().value;
|
|
105
119
|
return firstEntry["$schema"] ?? "";
|
|
@@ -135,6 +149,7 @@ export class SchemaGenerator {
|
|
|
135
149
|
|
|
136
150
|
private writeSchemaMapToValidationTypes = async (schemaMap: Map<string, Schema>) => {
|
|
137
151
|
const project = new Project(defaultTsMorphProjectSettings);
|
|
152
|
+
const readerProject = new Project(defaultTsMorphProjectSettings);
|
|
138
153
|
|
|
139
154
|
const symbols: Array<string> = [];
|
|
140
155
|
|
|
@@ -146,11 +161,18 @@ export class SchemaGenerator {
|
|
|
146
161
|
const importPath = `${relativeFilePath}/${fileWithoutExtension}`;
|
|
147
162
|
const defs = schema.definitions ?? {};
|
|
148
163
|
|
|
164
|
+
const readerSourceFile = readerProject.addSourceFileAtPath(filePath);
|
|
165
|
+
|
|
149
166
|
Object.keys(defs).forEach((symbol) => {
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
167
|
+
const typeAlias = readerSourceFile.getTypeAlias(symbol);
|
|
168
|
+
const typeInterface = readerSourceFile.getInterface(symbol);
|
|
169
|
+
const hasTypeOrInterface = (typeAlias ?? typeInterface) !== undefined;
|
|
170
|
+
if (hasTypeOrInterface) {
|
|
171
|
+
const namedImports = importMap.get(importPath) ?? [];
|
|
172
|
+
namedImports.push(symbol);
|
|
173
|
+
importMap.set(importPath, namedImports);
|
|
174
|
+
symbols.push(symbol);
|
|
175
|
+
}
|
|
154
176
|
});
|
|
155
177
|
});
|
|
156
178
|
|