@tsofist/schema-forge 5.3.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.
- package/lib/schema-generator/forge.spec.js +57 -15
- package/lib/schema-generator/generate-drafts.d.ts +1 -0
- package/lib/schema-generator/generate-drafts.d.ts.map +1 -1
- package/lib/schema-generator/generate-drafts.js +9 -1
- package/lib/schema-generator/generate-schema.d.ts.map +1 -1
- package/lib/schema-generator/generate-schema.js +2 -0
- package/lib/schema-registry/registry.d.ts.map +1 -1
- package/lib/schema-registry/registry.js +12 -0
- package/lib/schema-registry/types.d.ts +8 -0
- package/lib/schema-registry/types.d.ts.map +1 -1
- package/lib/types.d.ts +4 -0
- package/lib/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -14,6 +14,57 @@ const registry_1 = require("../schema-registry/registry");
|
|
|
14
14
|
const forge_1 = require("./forge");
|
|
15
15
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
16
16
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
17
|
+
describe('validator for a11', () => {
|
|
18
|
+
const outputSchemaFile = './a11.generated.schema.tmp.json';
|
|
19
|
+
const outputSchemaMetadataFile = './a11.generated.definitions.tmp.json';
|
|
20
|
+
let registry;
|
|
21
|
+
let loadedSchema;
|
|
22
|
+
beforeAll(async () => {
|
|
23
|
+
await (0, forge_1.forgeSchema)({
|
|
24
|
+
schemaId: 'test',
|
|
25
|
+
allowUseFallbackDescription: true,
|
|
26
|
+
tsconfigFrom: './tsconfig.build-test.json',
|
|
27
|
+
sourcesDirectoryPattern: 'test-sources/a11',
|
|
28
|
+
sourcesFilesPattern: ['service-api.ts', 'types.ts'],
|
|
29
|
+
outputSchemaFile,
|
|
30
|
+
outputSchemaMetadataFile,
|
|
31
|
+
expose: 'export',
|
|
32
|
+
explicitPublic: true,
|
|
33
|
+
extraTags: ['abstract', 'struct', 'flimsy'],
|
|
34
|
+
});
|
|
35
|
+
loadedSchema = await (0, loader_1.loadJSONSchema)([outputSchemaFile]);
|
|
36
|
+
registry = (0, registry_1.createSchemaForgeRegistry)({
|
|
37
|
+
engine: {
|
|
38
|
+
meta: true,
|
|
39
|
+
verbose: true,
|
|
40
|
+
strictSchema: true,
|
|
41
|
+
validateSchema: true,
|
|
42
|
+
strict: true,
|
|
43
|
+
strictTypes: true,
|
|
44
|
+
strictTuples: false,
|
|
45
|
+
allErrors: true,
|
|
46
|
+
allowUnionTypes: true,
|
|
47
|
+
schemas: [loadedSchema],
|
|
48
|
+
keywords: [
|
|
49
|
+
'abstract',
|
|
50
|
+
'struct',
|
|
51
|
+
{ keyword: 'flimsy', type: 'object', schemaType: 'boolean' },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
registry.warmupCacheSync();
|
|
56
|
+
});
|
|
57
|
+
afterAll(async () => {
|
|
58
|
+
if (!artefacts_policy_1.KEEP_SPEC_ARTEFACTS) {
|
|
59
|
+
await (0, promises_1.unlink)(outputSchemaFile).catch(noop_1.noop);
|
|
60
|
+
await (0, promises_1.unlink)(outputSchemaMetadataFile).catch(noop_1.noop);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
it('extra tags: basic', () => {
|
|
64
|
+
const schema = registry.getRootSchema('test');
|
|
65
|
+
expect(schema).toMatchSnapshot();
|
|
66
|
+
});
|
|
67
|
+
});
|
|
17
68
|
describe('validator for a10', () => {
|
|
18
69
|
const outputSchemaFile = './a10.generated.schema.tmp.json';
|
|
19
70
|
const outputSchemaMetadataFile = './a10.generated.definitions.tmp.json';
|
|
@@ -45,7 +96,7 @@ describe('validator for a10', () => {
|
|
|
45
96
|
});
|
|
46
97
|
it('basic', () => {
|
|
47
98
|
const schema = registry.getSchema('test#/definitions/ComplexTypeA');
|
|
48
|
-
const
|
|
99
|
+
const data = {
|
|
49
100
|
id: '123',
|
|
50
101
|
name: 'Test',
|
|
51
102
|
values: [1, 2, 3],
|
|
@@ -62,7 +113,8 @@ describe('validator for a10', () => {
|
|
|
62
113
|
checksum: 'abc123',
|
|
63
114
|
},
|
|
64
115
|
},
|
|
65
|
-
}
|
|
116
|
+
};
|
|
117
|
+
const result = registry.validateBySchema('test#/definitions/ComplexTypeA', data);
|
|
66
118
|
expect({
|
|
67
119
|
schema,
|
|
68
120
|
result,
|
|
@@ -290,6 +342,7 @@ describe('generator for a6', () => {
|
|
|
290
342
|
expect(registry.getSchema('test#/definitions/CollectionItemID3')).toStrictEqual({
|
|
291
343
|
format: 'uuid',
|
|
292
344
|
type: 'string',
|
|
345
|
+
description: ['UUID with string representation.', '', 'Version: unspecified.'].join('\n'),
|
|
293
346
|
// see: 'https://ru.wikipedia.org/wiki/UUID Wikipedia',
|
|
294
347
|
});
|
|
295
348
|
expect(registry.getSchema('test#/definitions/CollectionItemID4')).toStrictEqual({
|
|
@@ -311,6 +364,7 @@ describe('generator for a6', () => {
|
|
|
311
364
|
expect(registry.getSchema('test#/definitions/CollectionItemID5')).toStrictEqual({
|
|
312
365
|
format: 'uuid',
|
|
313
366
|
type: 'string',
|
|
367
|
+
description: ['UUID with string representation.', '', 'Version: unspecified.'].join('\n'),
|
|
314
368
|
// see: 'https://ru.wikipedia.org/wiki/UUID Wikipedia',
|
|
315
369
|
});
|
|
316
370
|
{
|
|
@@ -318,6 +372,7 @@ describe('generator for a6', () => {
|
|
|
318
372
|
expect(rec).toBeTruthy();
|
|
319
373
|
expect(rec.propertyNames).toStrictEqual({
|
|
320
374
|
format: 'uuid',
|
|
375
|
+
description: ['UUID with string representation.', '', 'Version: unspecified.'].join('\n'),
|
|
321
376
|
// see: 'https://ru.wikipedia.org/wiki/UUID Wikipedia',
|
|
322
377
|
});
|
|
323
378
|
}
|
|
@@ -665,19 +720,6 @@ describe('generator for a3', () => {
|
|
|
665
720
|
'methodY',
|
|
666
721
|
]);
|
|
667
722
|
});
|
|
668
|
-
// it('should works with extends: type w/ generics', () => {
|
|
669
|
-
// const props = forgeSchemaResult!.schema.definitions?.APIFromBase__APIInterface?.properties;
|
|
670
|
-
// expect(props).toBeTruthy();
|
|
671
|
-
// expect(keysOf(props)).toStrictEqual(['doSomethingAndReturnR', 'doSomethingElse']);
|
|
672
|
-
// });
|
|
673
|
-
//
|
|
674
|
-
// it('should works with extends: type w/o own members', () => {
|
|
675
|
-
// const props =
|
|
676
|
-
// forgeSchemaResult!.schema.definitions?.APIFromBaseExtendOnly__APIInterface?.properties;
|
|
677
|
-
// expect(props).toBeTruthy();
|
|
678
|
-
// // console.log(JSON.stringify(forgeSchemaResult!.schema, null, 2));
|
|
679
|
-
// expect(keysOf(props)).toStrictEqual(['doSomethingAndReturnR']);
|
|
680
|
-
// });
|
|
681
723
|
});
|
|
682
724
|
describe('generator for a2', () => {
|
|
683
725
|
const outputSchemaFile = './a2.generated.schema.tmp.json';
|
|
@@ -9,6 +9,7 @@ export declare function generateDraftTypeFiles(options: SFDTGOptions): Promise<{
|
|
|
9
9
|
sourcesTypesGeneratorConfig: CompletedConfig;
|
|
10
10
|
namesBySourceFile: Map<string, Set<string>>;
|
|
11
11
|
}>;
|
|
12
|
+
export declare function mergeConfigExtraTags(target: CompletedConfig, source: ForgeSchemaOptions): CompletedConfig;
|
|
12
13
|
interface SFDTGOptions extends ForgeSchemaOptions {
|
|
13
14
|
tsconfig: string;
|
|
14
15
|
sourcesPattern: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-drafts.d.ts","sourceRoot":"","sources":["../../src/schema-generator/generate-drafts.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,0CAA0C,CAAC;AAsChG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAWnD;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,YAAY;;;;;
|
|
1
|
+
{"version":3,"file":"generate-drafts.d.ts","sourceRoot":"","sources":["../../src/schema-generator/generate-drafts.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,0CAA0C,CAAC;AAsChG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAWnD;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,YAAY;;;;;GAoCjE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,kBAAkB,mBAMvF;AA8YD,UAAU,YAAa,SAAQ,kBAAkB;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC5B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateDraftTypeFiles = generateDraftTypeFiles;
|
|
4
|
+
exports.mergeConfigExtraTags = mergeConfigExtraTags;
|
|
4
5
|
const promises_1 = require("node:fs/promises");
|
|
5
6
|
const node_path_1 = require("node:path");
|
|
6
7
|
const error_1 = require("@tsofist/stem/lib/error");
|
|
@@ -25,7 +26,7 @@ async function generateDraftTypeFiles(options) {
|
|
|
25
26
|
discriminatorType: Config_1.DEFAULT_CONFIG.discriminatorType,
|
|
26
27
|
...types_1.SFG_CONFIG_MANDATORY,
|
|
27
28
|
};
|
|
28
|
-
|
|
29
|
+
mergeConfigExtraTags(sourcesTypesGeneratorConfig, options);
|
|
29
30
|
const ctx = createContext(options, sourcesTypesGeneratorConfig);
|
|
30
31
|
let definitions = ctx.definitions;
|
|
31
32
|
for (const sourceFileName of ctx.fileNames) {
|
|
@@ -44,6 +45,13 @@ async function generateDraftTypeFiles(options) {
|
|
|
44
45
|
namesBySourceFile: ctx.namesBySourceFile,
|
|
45
46
|
};
|
|
46
47
|
}
|
|
48
|
+
function mergeConfigExtraTags(target, source) {
|
|
49
|
+
if (source.extraTags?.length) {
|
|
50
|
+
const tags = new Set([...target.extraTags, ...source.extraTags]);
|
|
51
|
+
target.extraTags = Array.from(tags);
|
|
52
|
+
}
|
|
53
|
+
return target;
|
|
54
|
+
}
|
|
47
55
|
async function processSourceFile(sourceFileName, context) {
|
|
48
56
|
const source = context.program.getSourceFile(sourceFileName);
|
|
49
57
|
if (!source)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-schema.d.ts","sourceRoot":"","sources":["../../src/schema-generator/generate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,+BAA+B,CAAC;AAQvC,OAAO,EAIH,eAAe,EAqBlB,MAAM,0BAA0B,CAAC;AAelC,OAAO,EAAwB,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-schema.d.ts","sourceRoot":"","sources":["../../src/schema-generator/generate-schema.ts"],"names":[],"mappings":"AAAA,OAAO,+BAA+B,CAAC;AAQvC,OAAO,EAIH,eAAe,EAqBlB,MAAM,0BAA0B,CAAC;AAelC,OAAO,EAAwB,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AASlF;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CA0GhG;AA2MD,UAAU,eAAgB,SAAQ,kBAAkB;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,2BAA2B,EAAE,eAAe,CAAC;CAChD"}
|
|
@@ -11,6 +11,7 @@ const ajv_1 = require("ajv");
|
|
|
11
11
|
const jsonpath_plus_1 = require("jsonpath-plus");
|
|
12
12
|
const ts_json_schema_generator_1 = require("ts-json-schema-generator");
|
|
13
13
|
const typescript_1 = require("typescript");
|
|
14
|
+
const generate_drafts_1 = require("./generate-drafts");
|
|
14
15
|
const helpers_tsc_1 = require("./helpers-tsc");
|
|
15
16
|
const patch_enum_node_parser_1 = require("./patch-enum-node-parser");
|
|
16
17
|
const shrink_definition_name_1 = require("./shrink-definition-name");
|
|
@@ -31,6 +32,7 @@ async function generateSchemaByDraftTypes(options) {
|
|
|
31
32
|
discriminatorType: options.discriminatorType ?? ts_json_schema_generator_1.DEFAULT_CONFIG.discriminatorType,
|
|
32
33
|
...types_1.SFG_CONFIG_MANDATORY,
|
|
33
34
|
};
|
|
35
|
+
(0, generate_drafts_1.mergeConfigExtraTags)(generatorConfig, options);
|
|
34
36
|
const generatorProgram = (0, ts_json_schema_generator_1.createProgram)(generatorConfig);
|
|
35
37
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
36
38
|
const typeChecker = generatorProgram.getTypeChecker();
|
|
@@ -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":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EACR,wBAAwB,EACxB,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC9B,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,2CAA2C,GAAG,CACtD,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,WAAW,CAAC,qBAAqB,EAAE,OAAO,CAAC,KACpD,OAAO,CAAC;AAEb,MAAM,WAAW,mBAAmB;IAChC;;OAEG;IACH,QAAQ,CAAC,wBAAwB,EAAE,cAAc,CAAC;IAElD;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAE7B;;OAEG;IACH,KAAK,EAAE,CACH,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAClC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,WAAW,KAC9C,mBAAmB,CAAC;IAEzB;;OAEG;IACH,KAAK,EAAE,YAAY,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAE3C;;OAEG;IACH,SAAS,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,OAAO,CAAC;IAEtD;;OAEG;IACH,YAAY,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,wBAAwB,CAAC,KAAK,IAAI,CAAC;IAEhE;;OAEG;IACH,SAAS,EAAE,CAAC,GAAG,EAAE,wBAAwB,KAAK,WAAW,GAAG,SAAS,CAAC;IAEtE;;OAEG;IACH,YAAY,EAAE,CAAC,KAAK,GAAG,OAAO,EAC1B,GAAG,EAAE,wBAAwB,GAAG,WAAW,KAC1C,6BAA6B,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IAEtD;;OAEG;IACH,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAE7D;;OAEG;IACH,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAE7C;;OAEG;IACH,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAEhD;;OAEG;IACH,gBAAgB,EAAE,CACd,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,OAAO,EACb,YAAY,CAAC,EAAE,MAAM,KACpB,2BAA2B,CAAC;IAEjC;;OAEG;IACH,aAAa,EAAE,CACX,CAAC,GAAG,OAAO,EACX,GAAG,SAAS,gCAAgC,GAAG,gCAAgC,EAE/E,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,GAAG,KACZ,IAAI,IAAI,CAAC,CAAC;IAEf;;OAEG;IACH,oBAAoB,EAAE,CAClB,MAAM,EAAE,QAAQ,CAAC,2BAA2B,CAAC,EAC7C,OAAO,CAAC,EAAE,iBAAiB,KAC1B,MAAM,CAAC;IAEZ;;OAEG;IACH,eAAe,EAAE,CAAC,CAAC,SAAS,oBAAoB,EAC5C,SAAS,CAAC,EAAE,2CAA2C,GAAG,wBAAwB,KACjF,CAAC,EAAE,CAAC;IACT;;;OAGG;IACH,WAAW,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/E;;;OAGG;IACH,eAAe,EAAE,YAAY,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACvC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B"}
|
package/lib/types.d.ts
CHANGED
|
@@ -140,6 +140,10 @@ export interface ForgeSchemaOptions {
|
|
|
140
140
|
* @default false
|
|
141
141
|
*/
|
|
142
142
|
readonly suppressMultipleDefinitionsErrors?: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Extra JSDoc tags to be recognized by the generator and included in the schema definitions.
|
|
145
|
+
*/
|
|
146
|
+
readonly extraTags?: string[];
|
|
143
147
|
}
|
|
144
148
|
export type ForgedSchemaDefinitionShortName = `DSN${string}_H${string}`;
|
|
145
149
|
export interface SchemaForgeMetadata {
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,KAAK,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EACH,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAE3F,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;KACzD,CAAC;IACF;;;;;;OAMG;IACH,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChD;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAE3C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAC/C;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,6BAA6B,CAAC;IAChE;;;;;;;;;OASG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EACzB,OAAO,GACP,CAAC,CAAC,cAAc,EAAE,MAAM,KAAK,SAAS,GAAG,+BAA+B,CAAC,CAAC;IAChF;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,iCAAiC,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/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": {
|