@tsofist/schema-forge 2.9.0 → 2.10.0-next.1

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.
Files changed (114) hide show
  1. package/lib/artefacts-policy.d.ts +3 -0
  2. package/lib/artefacts-policy.d.ts.map +1 -0
  3. package/lib/artefacts-policy.js +7 -0
  4. package/lib/dbml-generator/converter.d.ts +5 -0
  5. package/lib/dbml-generator/converter.d.ts.map +1 -0
  6. package/lib/dbml-generator/converter.js +15 -0
  7. package/lib/dbml-generator/generator.d.ts +4 -0
  8. package/lib/dbml-generator/generator.d.ts.map +1 -0
  9. package/lib/dbml-generator/generator.js +423 -0
  10. package/lib/dbml-generator/generator.spec.d.ts +2 -0
  11. package/lib/dbml-generator/generator.spec.d.ts.map +1 -0
  12. package/lib/dbml-generator/generator.spec.js +94 -0
  13. package/lib/dbml-generator/types.d.ts +144 -0
  14. package/lib/dbml-generator/types.d.ts.map +1 -0
  15. package/lib/dbml-generator/types.js +53 -0
  16. package/lib/definition-info/api-signature.d.ts +18 -0
  17. package/lib/definition-info/api-signature.d.ts.map +1 -0
  18. package/lib/definition-info/api-signature.js +31 -0
  19. package/lib/definition-info/parser.d.ts +3 -0
  20. package/lib/definition-info/parser.d.ts.map +1 -0
  21. package/lib/definition-info/parser.js +44 -0
  22. package/lib/definition-info/ref.d.ts +3 -0
  23. package/lib/definition-info/ref.d.ts.map +1 -0
  24. package/lib/definition-info/ref.js +6 -0
  25. package/lib/definition-info/types.d.ts +48 -0
  26. package/lib/definition-info/types.d.ts.map +1 -0
  27. package/lib/definition-info/types.js +20 -0
  28. package/lib/efc.d.ts +27 -0
  29. package/lib/efc.d.ts.map +1 -0
  30. package/lib/efc.js +9 -0
  31. package/lib/fake-generator/generator-host.d.ts +4 -0
  32. package/lib/fake-generator/generator-host.d.ts.map +1 -0
  33. package/lib/fake-generator/generator-host.js +57 -0
  34. package/lib/fake-generator/generator.d.ts +6 -0
  35. package/lib/fake-generator/generator.d.ts.map +1 -0
  36. package/lib/fake-generator/generator.js +64 -0
  37. package/lib/fake-generator/generator.spec.d.ts +2 -0
  38. package/lib/fake-generator/generator.spec.d.ts.map +1 -0
  39. package/lib/{fake-generator.spec.js → fake-generator/generator.spec.js} +21 -19
  40. package/lib/fake-generator/modules.d.ts +3 -0
  41. package/lib/fake-generator/modules.d.ts.map +1 -0
  42. package/lib/fake-generator/modules.js +44 -0
  43. package/lib/fake-generator/types.d.ts +18 -0
  44. package/lib/fake-generator/types.d.ts.map +1 -0
  45. package/lib/fake-generator/types.js +2 -0
  46. package/lib/schema-generator/extended-annotations-reader.d.ts +2 -0
  47. package/lib/schema-generator/extended-annotations-reader.d.ts.map +1 -0
  48. package/lib/{util/patch.extended-annotations-reader.js → schema-generator/extended-annotations-reader.js} +2 -2
  49. package/lib/schema-generator/forge.d.ts +3 -0
  50. package/lib/schema-generator/forge.d.ts.map +1 -0
  51. package/lib/{generator.js → schema-generator/forge.js} +13 -33
  52. package/lib/schema-generator/forge.spec.d.ts +2 -0
  53. package/lib/schema-generator/forge.spec.d.ts.map +1 -0
  54. package/lib/{generator.spec.js → schema-generator/forge.spec.js} +157 -103
  55. package/lib/schema-generator/format-error.d.ts +2 -0
  56. package/lib/schema-generator/format-error.d.ts.map +1 -0
  57. package/lib/{util/format.error.js → schema-generator/format-error.js} +3 -2
  58. package/lib/schema-generator/generate-drafts.d.ts +17 -0
  59. package/lib/schema-generator/generate-drafts.d.ts.map +1 -0
  60. package/lib/{generator/types-generator.js → schema-generator/generate-drafts.js} +140 -120
  61. package/lib/schema-generator/generate-schema.d.ts +15 -0
  62. package/lib/schema-generator/generate-schema.d.ts.map +1 -0
  63. package/lib/{generator/schema-generator.js → schema-generator/generate-schema.js} +46 -19
  64. package/lib/{util/tsc.d.ts → schema-generator/helpers-tsc.d.ts} +2 -1
  65. package/lib/schema-generator/helpers-tsc.d.ts.map +1 -0
  66. package/lib/schema-generator/shrink-definition-name.d.ts +7 -0
  67. package/lib/schema-generator/shrink-definition-name.d.ts.map +1 -0
  68. package/lib/schema-generator/shrink-definition-name.js +21 -0
  69. package/lib/schema-generator/sort-properties.d.ts +3 -0
  70. package/lib/schema-generator/sort-properties.d.ts.map +1 -0
  71. package/lib/{util → schema-generator}/sort-properties.js +2 -2
  72. package/lib/schema-generator/types.d.ts +18 -0
  73. package/lib/schema-generator/types.d.ts.map +1 -0
  74. package/lib/{generator → schema-generator}/types.js +20 -8
  75. package/lib/schema-registry/kw-api.d.ts +3 -0
  76. package/lib/schema-registry/kw-api.d.ts.map +1 -0
  77. package/lib/schema-registry/kw-api.js +25 -0
  78. package/lib/schema-registry/kw-common.d.ts +3 -0
  79. package/lib/schema-registry/kw-common.d.ts.map +1 -0
  80. package/lib/schema-registry/kw-common.js +47 -0
  81. package/lib/schema-registry/kw-dbml.d.ts +3 -0
  82. package/lib/schema-registry/kw-dbml.d.ts.map +1 -0
  83. package/lib/schema-registry/kw-dbml.js +79 -0
  84. package/lib/schema-registry/loader.d.ts +10 -0
  85. package/lib/schema-registry/loader.d.ts.map +1 -0
  86. package/lib/schema-registry/loader.js +24 -0
  87. package/lib/schema-registry/registry.d.ts +25 -0
  88. package/lib/schema-registry/registry.d.ts.map +1 -0
  89. package/lib/schema-registry/registry.js +230 -0
  90. package/lib/schema-registry/types.d.ts +78 -0
  91. package/lib/schema-registry/types.d.ts.map +1 -0
  92. package/lib/schema-registry/types.js +2 -0
  93. package/lib/types.d.ts +53 -79
  94. package/lib/types.d.ts.map +1 -0
  95. package/lib/types.js +0 -15
  96. package/package.json +9 -6
  97. package/lib/fake-generator.d.ts +0 -21
  98. package/lib/fake-generator.js +0 -158
  99. package/lib/fake-generator.spec.d.ts +0 -1
  100. package/lib/generator/schema-generator.d.ts +0 -20
  101. package/lib/generator/types-generator.d.ts +0 -13
  102. package/lib/generator/types.d.ts +0 -40
  103. package/lib/generator.d.ts +0 -5
  104. package/lib/generator.spec.d.ts +0 -1
  105. package/lib/index.d.ts +0 -7
  106. package/lib/index.js +0 -64
  107. package/lib/types/db.types.d.ts +0 -96
  108. package/lib/types/db.types.js +0 -17
  109. package/lib/util/format.error.d.ts +0 -1
  110. package/lib/util/patch.extended-annotations-reader.d.ts +0 -1
  111. package/lib/util/sort-properties.d.ts +0 -2
  112. package/lib/validator.d.ts +0 -47
  113. package/lib/validator.js +0 -396
  114. /package/lib/{util/tsc.js → schema-generator/helpers-tsc.js} +0 -0
@@ -6,8 +6,8 @@ const enum_1 = require("@tsofist/stem/lib/enum");
6
6
  const guards_2 = require("@tsofist/stem/lib/number/integer/guards");
7
7
  const entries_1 = require("@tsofist/stem/lib/object/entries");
8
8
  const camel_1 = require("@tsofist/stem/lib/string/case/camel");
9
- const fake_generator_1 = require("./fake-generator");
10
- const validator_1 = require("./validator");
9
+ const registry_1 = require("../schema-registry/registry");
10
+ const generator_1 = require("./generator");
11
11
  /* eslint-disable @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument */
12
12
  describe('generateFakeData', () => {
13
13
  const testSchema1 = {
@@ -180,58 +180,60 @@ describe('generateFakeData', () => {
180
180
  };
181
181
  }
182
182
  }
183
- let validator;
183
+ let registry;
184
184
  beforeEach(() => {
185
- validator = (0, validator_1.createSchemaForgeValidator)({ schemas: [testSchema1, testSchema2, testSchema3, testSchema4] }, true);
185
+ registry = (0, registry_1.createSchemaForgeRegistry)({
186
+ engine: { schemas: [testSchema1, testSchema2, testSchema3, testSchema4] },
187
+ });
186
188
  });
187
189
  it('default behavior', async () => {
188
190
  {
189
- const data = await (0, fake_generator_1.generateFakeData)(validator, 'test-1#/definitions/Int');
191
+ const data = await (0, generator_1.generateFakeData)(registry, 'test-1#/definitions/Int');
190
192
  expect(data).toBeDefined();
191
193
  expect(data).toBeGreaterThanOrEqual(0);
192
194
  expect((0, guards_2.isInt)(data)).toStrictEqual(true);
193
195
  }
194
196
  {
195
- const data = await (0, fake_generator_1.generateFakeData)(validator, 'test-2#/definitions/Url');
197
+ const data = await (0, generator_1.generateFakeData)(registry, 'test-2#/definitions/Url');
196
198
  expect(data).toBeDefined();
197
199
  expect(data).toMatch(/^https?:\/\/(.*)/);
198
200
  }
199
201
  });
200
202
  it('cross-schema references should be handled correctly', async () => {
201
203
  const source = 'test-2#/definitions/ForeignInt';
202
- const data = await (0, fake_generator_1.generateFakeData)(validator, source);
204
+ const data = await (0, generator_1.generateFakeData)(registry, source);
203
205
  expect(data).toBeDefined();
204
206
  expect(data).toBeGreaterThanOrEqual(0);
205
207
  expect((0, guards_2.isInt)(data)).toStrictEqual(true);
206
- expect(validator.validateBySchema(source, data).valid).toStrictEqual(true);
208
+ expect(registry.validateBySchema(source, data).valid).toStrictEqual(true);
207
209
  });
208
210
  it('complex, nested data should be handled correctly', async () => {
209
211
  {
210
212
  const source = 'test-2#/definitions/JSFQuirks';
211
- const data = await (0, fake_generator_1.generateFakeData)(validator, source, {});
213
+ const data = await (0, generator_1.generateFakeData)(registry, source, {});
212
214
  expect(data).toBeDefined();
213
- expect(validator.validateBySchema(source, data).valid).toStrictEqual(true);
215
+ expect(registry.validateBySchema(source, data).valid).toStrictEqual(true);
214
216
  }
215
217
  {
216
218
  const source = 'test-2#/definitions/List';
217
- const data = await (0, fake_generator_1.generateFakeData)(validator, source);
219
+ const data = await (0, generator_1.generateFakeData)(registry, source);
218
220
  expect(data).toBeDefined();
219
- expect(validator.validateBySchema(source, data).valid).toStrictEqual(true);
221
+ expect(registry.validateBySchema(source, data).valid).toStrictEqual(true);
220
222
  }
221
223
  {
222
224
  const source = 'test-2#/definitions/ListOfNames';
223
225
  const len = 15;
224
- const data = await (0, fake_generator_1.generateFakeData)(validator, source, { minItems: len, locale: 'ru' });
226
+ const data = await (0, generator_1.generateFakeData)(registry, source, { minItems: len, locale: 'ru' });
225
227
  expect(data).toBeDefined();
226
- expect(validator.validateBySchema(source, data).valid).toStrictEqual(true);
228
+ expect(registry.validateBySchema(source, data).valid).toStrictEqual(true);
227
229
  expect(Array.isArray(data)).toStrictEqual(true);
228
230
  expect(data.length).toBeGreaterThanOrEqual(len);
229
231
  expect(data.join(' ')).toMatch(/[=^+U+0400–U+04FF\s\S@/_-]+/);
230
232
  }
231
233
  {
232
234
  const source = 'test-2#/definitions/Entity';
233
- const data = await (0, fake_generator_1.generateFakeData)(validator, source, { locale: 'ru' });
234
- expect(validator.validateBySchema(source, data).valid).toStrictEqual(true);
235
+ const data = await (0, generator_1.generateFakeData)(registry, source, { locale: 'ru' });
236
+ expect(registry.validateBySchema(source, data).valid).toStrictEqual(true);
235
237
  expect(typeof data.datetime).toStrictEqual('string');
236
238
  expect(data.datetime).toMatch(/.*Z$/);
237
239
  expect(new Date(data.datetime)).not.toStrictEqual('Invalid Date');
@@ -243,7 +245,7 @@ describe('generateFakeData', () => {
243
245
  const source = 'test-3#/definitions/RecursiveObject';
244
246
  const count = 10;
245
247
  for (let i = 0; i < count; i++) {
246
- const data = await (0, fake_generator_1.generateFakeData)(validator, source, {
248
+ const data = await (0, generator_1.generateFakeData)(registry, source, {
247
249
  reuseProperties: false,
248
250
  failOnInvalidFormat: true,
249
251
  failOnInvalidTypes: true,
@@ -255,11 +257,11 @@ describe('generateFakeData', () => {
255
257
  refDepthMax: 20,
256
258
  });
257
259
  expect(data).toBeDefined();
258
- expect(validator.validateBySchema(source, data).valid).toStrictEqual(true);
260
+ expect(registry.validateBySchema(source, data).valid).toStrictEqual(true);
259
261
  }
260
262
  });
261
263
  it('should handle CLDR formats', async () => {
262
- const data = await (0, fake_generator_1.generateFakeData)(validator, 'test-4#/definitions/CLDR');
264
+ const data = await (0, generator_1.generateFakeData)(registry, 'test-4#/definitions/CLDR');
263
265
  const guards = {
264
266
  [types_1.ISODateTimeType.LocalDate]: guards_1.isLocalISODateString,
265
267
  [types_1.ISODateTimeType.LocalTime]: guards_1.isLocalISOTimeString,
@@ -0,0 +1,3 @@
1
+ import type { SetupFakerModules } from './types';
2
+ export declare const EmbeddedFakerModules: SetupFakerModules[];
3
+ //# sourceMappingURL=modules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../src/fake-generator/modules.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EA0CnD,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmbeddedFakerModules = void 0;
4
+ const native_date_1 = require("@tsofist/stem/lib/cldr/date-time/native-date");
5
+ const types_1 = require("@tsofist/stem/lib/cldr/date-time/types");
6
+ exports.EmbeddedFakerModules = [
7
+ (faker) => ({
8
+ sf: {
9
+ /** FakerModule: sf.url */
10
+ url(origin = 'https://example.com', paths = { min: 1, max: 5 }, pathWords = { min: 1, max: 3 }) {
11
+ const pathParts = new Array(faker.helpers.rangeToNumber(paths))
12
+ .fill('')
13
+ .map(() => faker.lorem.slug(pathWords));
14
+ return `${origin}/${pathParts.join('/')}`;
15
+ },
16
+ },
17
+ cldr: {
18
+ /** FakerModule: cldr.localDateTime */
19
+ localDateTime() {
20
+ return (0, native_date_1.dateToTypedString)(new Date(), types_1.ISODateTimeType.LocalDateTime, true);
21
+ },
22
+ /** FakerModule: cldr.localDate */
23
+ localDate() {
24
+ return (0, native_date_1.dateToTypedString)(new Date(), types_1.ISODateTimeType.LocalDate);
25
+ },
26
+ /** FakerModule: cldr.localTime */
27
+ localTime() {
28
+ return (0, native_date_1.dateToTypedString)(new Date(), types_1.ISODateTimeType.LocalTime, true);
29
+ },
30
+ /** FakerModule: cldr.zuluDateTime */
31
+ zuluDateTime() {
32
+ return (0, native_date_1.dateToTypedString)(new Date(), types_1.ISODateTimeType.ZuluDateTime);
33
+ },
34
+ /** FakerModule: cldr.zuluDate */
35
+ zuluDate() {
36
+ return (0, native_date_1.dateToTypedString)(new Date(), types_1.ISODateTimeType.ZuluDate);
37
+ },
38
+ /** FakerModule: cldr.zuluTime */
39
+ zuluTime() {
40
+ return (0, native_date_1.dateToTypedString)(new Date(), types_1.ISODateTimeType.ZuluTime);
41
+ },
42
+ },
43
+ }),
44
+ ];
@@ -0,0 +1,18 @@
1
+ import * as fakerModule from '@faker-js/faker';
2
+ import type { ArrayMay } from '@tsofist/stem';
3
+ import { JSONSchemaFaker, type JSONSchemaFakerOptions } from 'json-schema-faker';
4
+ import type { SchemaForgeRegistry } from '../schema-registry/types';
5
+ export type SetupFakerModules = (faker: fakerModule.Faker) => object;
6
+ export type FakerRangeNum = Parameters<fakerModule.HelpersModule['rangeToNumber']>[0];
7
+ export type FakeGeneratorLocaleName = keyof typeof fakerModule.allLocales;
8
+ export interface FakeGeneratorOptions extends JSONSchemaFakerOptions {
9
+ locale?: ArrayMay<FakeGeneratorLocaleName>;
10
+ setupFakerModules?: SetupFakerModules[];
11
+ }
12
+ export interface FakeGeneratorHost {
13
+ readonly schemaRegistry: SchemaForgeRegistry;
14
+ readonly faker: fakerModule.Faker;
15
+ readonly generator: typeof JSONSchemaFaker;
16
+ readonly rebuild: () => this;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fake-generator/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,KAAK,MAAM,CAAC;AACrE,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtF,MAAM,MAAM,uBAAuB,GAAG,MAAM,OAAO,WAAW,CAAC,UAAU,CAAC;AAC1E,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAChE,MAAM,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAC3C,iBAAiB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,eAAe,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAChC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=extended-annotations-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extended-annotations-reader.d.ts","sourceRoot":"","sources":["../../src/schema-generator/extended-annotations-reader.ts"],"names":[],"mappings":""}
@@ -4,13 +4,13 @@ const error_1 = require("@tsofist/stem/lib/error");
4
4
  const is_empty_1 = require("@tsofist/stem/lib/object/is-empty");
5
5
  const ts_json_schema_generator_1 = require("ts-json-schema-generator");
6
6
  const typescript_1 = require("typescript");
7
- const tsc_1 = require("./tsc");
7
+ const helpers_tsc_1 = require("./helpers-tsc");
8
8
  {
9
9
  // Support for @inheritDoc tag to enforce inheritance of annotations
10
10
  // eslint-disable-next-line @typescript-eslint/unbound-method
11
11
  const getAnnotations = ts_json_schema_generator_1.ExtendedAnnotationsReader.prototype.getAnnotations;
12
12
  ts_json_schema_generator_1.ExtendedAnnotationsReader.prototype.getAnnotations = function getAnnotationsWithInheritance(node) {
13
- if (!(0, tsc_1.hasJSDocTag)(node, 'inheritDoc'))
13
+ if (!(0, helpers_tsc_1.hasJSDocTag)(node, 'inheritDoc'))
14
14
  return getAnnotations.call(this, node);
15
15
  // @ts-expect-error access to private property
16
16
  const checker = this.typeChecker || (0, error_1.raise)('TypeChecker is not available');
@@ -0,0 +1,3 @@
1
+ import type { ForgeSchemaResult, ForgeSchemaOptions } from '../types';
2
+ export declare function forgeSchema(options: ForgeSchemaOptions): Promise<ForgeSchemaResult>;
3
+ //# sourceMappingURL=forge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge.d.ts","sourceRoot":"","sources":["../../src/schema-generator/forge.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAuB,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAI3F,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsHzF"}
@@ -1,58 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.forgeSchema = forgeSchema;
4
- exports.loadJSONSchema = loadJSONSchema;
5
- exports.loadJSONSchemaSync = loadJSONSchemaSync;
6
4
  const node_crypto_1 = require("node:crypto");
7
- const node_fs_1 = require("node:fs");
8
5
  const promises_1 = require("node:fs/promises");
9
6
  const as_array_1 = require("@tsofist/stem/lib/as-array");
10
7
  const error_1 = require("@tsofist/stem/lib/error");
11
8
  const noop_1 = require("@tsofist/stem/lib/noop");
12
9
  const random_1 = require("@tsofist/stem/lib/string/random");
13
- const schema_generator_1 = require("./generator/schema-generator");
14
- const types_generator_1 = require("./generator/types-generator");
15
- const index_1 = require("./index");
16
- const KEEP_ARTEFACTS = false;
10
+ const artefacts_policy_1 = require("../artefacts-policy");
11
+ const ref_1 = require("../definition-info/ref");
12
+ const generate_drafts_1 = require("./generate-drafts");
13
+ const generate_schema_1 = require("./generate-schema");
17
14
  async function forgeSchema(options) {
18
- const { schemaId, sourcesDirectoryPattern, outputSchemaFile } = options;
19
- const sourcesPattern = (0, as_array_1.asArray)(options.sourcesFilesPattern).map((filesPattern) => `${sourcesDirectoryPattern}/${filesPattern}`);
15
+ const sourcesPattern = (0, as_array_1.asArray)(options.sourcesFilesPattern).map((filesPattern) => `${options.sourcesDirectoryPattern}/${filesPattern}`);
20
16
  let tsconfig = options.tsconfig;
21
17
  let tsconfigGenerated = false;
22
18
  try {
23
19
  if (options.tsconfigFrom) {
24
- tsconfigGenerated = true;
25
20
  const source = await (0, promises_1.readFile)(options.tsconfigFrom, { encoding: 'utf8' });
26
21
  const config = JSON.parse(source);
27
22
  config.include = sourcesPattern;
28
23
  config.compilerOptions.noUnusedLocals = false;
29
24
  tsconfig = `./tsconfig.schema-forge-generated.${(0, random_1.randomString)(5)}.tmp.json`;
30
25
  await (0, promises_1.writeFile)(tsconfig, JSON.stringify(config, null, 2), { encoding: 'utf8' });
26
+ tsconfigGenerated = true;
31
27
  }
32
28
  if (!tsconfig)
33
29
  (0, error_1.raise)('tsconfig is not specified');
34
- const { sourcesTypesGeneratorConfig, files, definitions, namesBySourceFile } = await (0, types_generator_1.generateDraftTypeFiles)({
30
+ const { sourcesTypesGeneratorConfig, files, definitions, namesBySourceFile } = await (0, generate_drafts_1.generateDraftTypeFiles)({
35
31
  ...options,
36
32
  tsconfig,
37
33
  sourcesPattern,
38
34
  });
39
- const refs = definitions.map((item) => (0, index_1.buildSchemaDefinitionRef)(item, options.schemaId));
35
+ const refs = definitions.map((item) => (0, ref_1.buildSchemaDefinitionRef)(item, options.schemaId));
40
36
  let schema;
41
37
  try {
42
38
  {
43
39
  schema = {
44
- ...(await (0, schema_generator_1.generateSchemaByDraftTypes)({
45
- schemaId,
40
+ ...(await (0, generate_schema_1.generateSchemaByDraftTypes)({
46
41
  tsconfig,
47
42
  definitions,
48
- sourcesDirectoryPattern,
49
- outputSchemaFile,
50
43
  sourcesTypesGeneratorConfig,
51
- expose: options.expose,
52
- openapiCompatible: options.openapiCompatible,
53
- sortObjectProperties: options.sortObjectProperties,
54
- allowUseFallbackDescription: options.allowUseFallbackDescription,
55
- shrinkDefinitionNames: options.shrinkDefinitionNames,
44
+ ...options,
56
45
  })),
57
46
  ...(options.schemaMetadata || {}),
58
47
  };
@@ -88,13 +77,13 @@ async function forgeSchema(options) {
88
77
  };
89
78
  const defs = new Set(Object.keys((schema.definitions || {})));
90
79
  for (const name of definitions) {
91
- const ref = (0, index_1.buildSchemaDefinitionRef)(name, schemaId);
80
+ const ref = (0, ref_1.buildSchemaDefinitionRef)(name, options.schemaId);
92
81
  map.names[name] = ref;
93
82
  map.refs[ref] = name;
94
83
  defs.delete(name);
95
84
  }
96
85
  for (const name of defs) {
97
- const ref = (0, index_1.buildSchemaDefinitionRef)(name, options.schemaId);
86
+ const ref = (0, ref_1.buildSchemaDefinitionRef)(name, options.schemaId);
98
87
  map.serviceNames[name] = ref;
99
88
  map.serviceRefs[ref] = name;
100
89
  }
@@ -105,7 +94,7 @@ async function forgeSchema(options) {
105
94
  }
106
95
  }
107
96
  finally {
108
- if (!KEEP_ARTEFACTS) {
97
+ if (!artefacts_policy_1.KEEP_GEN_ARTEFACTS) {
109
98
  await Promise.all(files.map((fileName) => (0, promises_1.unlink)(fileName).catch(noop_1.noop)));
110
99
  }
111
100
  }
@@ -122,12 +111,3 @@ async function forgeSchema(options) {
122
111
  }
123
112
  }
124
113
  }
125
- async function loadJSONSchema(files) {
126
- return Promise.all(files.map((fn) => (0, promises_1.readFile)(fn, { encoding: 'utf8' }).then(JSON.parse)));
127
- }
128
- function loadJSONSchemaSync(files) {
129
- return files.map((fn) => {
130
- const content = (0, node_fs_1.readFileSync)(fn, { encoding: 'utf8' });
131
- return JSON.parse(content);
132
- });
133
- }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=forge.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge.spec.d.ts","sourceRoot":"","sources":["../../src/schema-generator/forge.spec.ts"],"names":[],"mappings":""}