@tsofist/schema-forge 5.4.0 → 5.5.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.
|
@@ -96,7 +96,7 @@ describe('validator for a10', () => {
|
|
|
96
96
|
});
|
|
97
97
|
it('basic', () => {
|
|
98
98
|
const schema = registry.getSchema('test#/definitions/ComplexTypeA');
|
|
99
|
-
const
|
|
99
|
+
const data = {
|
|
100
100
|
id: '123',
|
|
101
101
|
name: 'Test',
|
|
102
102
|
values: [1, 2, 3],
|
|
@@ -113,7 +113,8 @@ describe('validator for a10', () => {
|
|
|
113
113
|
checksum: 'abc123',
|
|
114
114
|
},
|
|
115
115
|
},
|
|
116
|
-
}
|
|
116
|
+
};
|
|
117
|
+
const result = registry.validateBySchema('test#/definitions/ComplexTypeA', data);
|
|
117
118
|
expect({
|
|
118
119
|
schema,
|
|
119
120
|
result,
|
|
@@ -341,6 +342,7 @@ describe('generator for a6', () => {
|
|
|
341
342
|
expect(registry.getSchema('test#/definitions/CollectionItemID3')).toStrictEqual({
|
|
342
343
|
format: 'uuid',
|
|
343
344
|
type: 'string',
|
|
345
|
+
description: ['UUID with string representation.', '', 'Version: unspecified.'].join('\n'),
|
|
344
346
|
// see: 'https://ru.wikipedia.org/wiki/UUID Wikipedia',
|
|
345
347
|
});
|
|
346
348
|
expect(registry.getSchema('test#/definitions/CollectionItemID4')).toStrictEqual({
|
|
@@ -362,6 +364,7 @@ describe('generator for a6', () => {
|
|
|
362
364
|
expect(registry.getSchema('test#/definitions/CollectionItemID5')).toStrictEqual({
|
|
363
365
|
format: 'uuid',
|
|
364
366
|
type: 'string',
|
|
367
|
+
description: ['UUID with string representation.', '', 'Version: unspecified.'].join('\n'),
|
|
365
368
|
// see: 'https://ru.wikipedia.org/wiki/UUID Wikipedia',
|
|
366
369
|
});
|
|
367
370
|
{
|
|
@@ -369,6 +372,7 @@ describe('generator for a6', () => {
|
|
|
369
372
|
expect(rec).toBeTruthy();
|
|
370
373
|
expect(rec.propertyNames).toStrictEqual({
|
|
371
374
|
format: 'uuid',
|
|
375
|
+
description: ['UUID with string representation.', '', 'Version: unspecified.'].join('\n'),
|
|
372
376
|
// see: 'https://ru.wikipedia.org/wiki/UUID Wikipedia',
|
|
373
377
|
});
|
|
374
378
|
}
|
|
@@ -716,19 +720,6 @@ describe('generator for a3', () => {
|
|
|
716
720
|
'methodY',
|
|
717
721
|
]);
|
|
718
722
|
});
|
|
719
|
-
// it('should works with extends: type w/ generics', () => {
|
|
720
|
-
// const props = forgeSchemaResult!.schema.definitions?.APIFromBase__APIInterface?.properties;
|
|
721
|
-
// expect(props).toBeTruthy();
|
|
722
|
-
// expect(keysOf(props)).toStrictEqual(['doSomethingAndReturnR', 'doSomethingElse']);
|
|
723
|
-
// });
|
|
724
|
-
//
|
|
725
|
-
// it('should works with extends: type w/o own members', () => {
|
|
726
|
-
// const props =
|
|
727
|
-
// forgeSchemaResult!.schema.definitions?.APIFromBaseExtendOnly__APIInterface?.properties;
|
|
728
|
-
// expect(props).toBeTruthy();
|
|
729
|
-
// // console.log(JSON.stringify(forgeSchemaResult!.schema, null, 2));
|
|
730
|
-
// expect(keysOf(props)).toStrictEqual(['doSomethingAndReturnR']);
|
|
731
|
-
// });
|
|
732
723
|
});
|
|
733
724
|
describe('generator for a2', () => {
|
|
734
725
|
const outputSchemaFile = './a2.generated.schema.tmp.json';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/schema-registry/registry.ts"],"names":[],"mappings":"AA8BA,OAAO,EACH,mBAAmB,EAEnB,0BAA0B,EAC7B,MAAM,SAAS,CAAC;AAuBjB;;;;GAIG;AACH,wBAAgB,yBAAyB,CACrC,OAAO,CAAC,EAAE,0BAA0B,GACrC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/schema-registry/registry.ts"],"names":[],"mappings":"AA8BA,OAAO,EACH,mBAAmB,EAEnB,0BAA0B,EAC7B,MAAM,SAAS,CAAC;AAuBjB;;;;GAIG;AACH,wBAAgB,yBAAyB,CACrC,OAAO,CAAC,EAAE,0BAA0B,GACrC,mBAAmB,CA6PrB"}
|
|
@@ -183,6 +183,16 @@ function createSchemaForgeRegistry(options) {
|
|
|
183
183
|
function getRootSchema(schemaId) {
|
|
184
184
|
return engine.schemas[schemaId]?.schema;
|
|
185
185
|
}
|
|
186
|
+
function hasRootSchema(schemaId) {
|
|
187
|
+
return engine.schemas[schemaId]?.schema != null;
|
|
188
|
+
}
|
|
189
|
+
function removeRootSchema(schemaId) {
|
|
190
|
+
const exists = hasRootSchema(schemaId);
|
|
191
|
+
engine.removeSchema(schemaId);
|
|
192
|
+
if (exists)
|
|
193
|
+
rev++;
|
|
194
|
+
return exists;
|
|
195
|
+
}
|
|
186
196
|
function warmupCacheSync() {
|
|
187
197
|
mapDefinitions((name, schemaId) => {
|
|
188
198
|
const ref = (0, ref_1.buildSchemaDefinitionRef)(name, schemaId);
|
|
@@ -211,6 +221,8 @@ function createSchemaForgeRegistry(options) {
|
|
|
211
221
|
clear,
|
|
212
222
|
clone,
|
|
213
223
|
getRootSchema,
|
|
224
|
+
hasRootSchema,
|
|
225
|
+
removeRootSchema,
|
|
214
226
|
addSchema,
|
|
215
227
|
getSchema,
|
|
216
228
|
hasSchema,
|
|
@@ -49,6 +49,14 @@ export interface SchemaForgeRegistry {
|
|
|
49
49
|
* Get root schema object
|
|
50
50
|
*/
|
|
51
51
|
getRootSchema: (schemaId: string) => JSONSchema7 | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Check if root schema is already registered
|
|
54
|
+
*/
|
|
55
|
+
hasRootSchema: (schemaId: string) => boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Remove root schema from registry
|
|
58
|
+
*/
|
|
59
|
+
removeRootSchema: (schemaId: string) => boolean;
|
|
52
60
|
/**
|
|
53
61
|
* Validate data by schema definition reference
|
|
54
62
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema-registry/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schema-registry/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsofist/schema-forge",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.5.0",
|
|
4
4
|
"description": "Generate JSON schema from TypeScript types",
|
|
5
5
|
"author": "Andrew Berdnikov <tsofistgudmen@gmail.com>",
|
|
6
6
|
"license": "LGPL-3.0",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@dbml/core": "~3.14.1",
|
|
24
24
|
"@faker-js/faker": "^9.9.0",
|
|
25
|
-
"@tsofist/stem": "^5.
|
|
25
|
+
"@tsofist/stem": "^5.23.1",
|
|
26
26
|
"@ungap/structured-clone": "^1.3.0",
|
|
27
27
|
"ajv": "^8.17.1",
|
|
28
28
|
"ajv-formats": "^3.0.1",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"@types/supertest": "^6.0.3",
|
|
40
40
|
"@types/ungap__structured-clone": "^1.2.0",
|
|
41
41
|
"jest": "~30.2.0",
|
|
42
|
-
"rimraf": "^6.
|
|
43
|
-
"supertest": "^7.
|
|
44
|
-
"ts-jest": "~29.4.
|
|
42
|
+
"rimraf": "^6.1.2",
|
|
43
|
+
"supertest": "^7.2.2",
|
|
44
|
+
"ts-jest": "~29.4.6",
|
|
45
45
|
"typescript": "~5.9.3"
|
|
46
46
|
},
|
|
47
47
|
"publishConfig": {
|