@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 result = registry.validateBySchema('test#/definitions/ComplexTypeA', {
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,CA+OrB"}
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.4.0",
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.11.0",
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.0.1",
43
- "supertest": "^7.1.4",
44
- "ts-jest": "~29.4.5",
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": {