fastify-flux-cli 2.31.2 → 3.0.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.
Files changed (56) hide show
  1. package/dist/commands/build.d.ts.map +1 -1
  2. package/dist/commands/build.js +4 -7
  3. package/dist/commands/build.js.map +1 -1
  4. package/dist/commands/sdk.js +2 -2
  5. package/dist/commands/sdk.js.map +1 -1
  6. package/dist/commands/start.d.ts.map +1 -1
  7. package/dist/commands/start.js +8 -9
  8. package/dist/commands/start.js.map +1 -1
  9. package/dist/helper/generateMeta.d.ts.map +1 -1
  10. package/dist/helper/generateMeta.js +20 -2
  11. package/dist/helper/generateMeta.js.map +1 -1
  12. package/dist/helper/getControllerFunctions.d.ts +3 -2
  13. package/dist/helper/getControllerFunctions.d.ts.map +1 -1
  14. package/dist/helper/getControllerFunctions.js +7 -3
  15. package/dist/helper/getControllerFunctions.js.map +1 -1
  16. package/dist/helper/index.d.ts +1 -1
  17. package/dist/helper/index.d.ts.map +1 -1
  18. package/dist/helper/index.js +10 -9
  19. package/dist/helper/index.js.map +1 -1
  20. package/dist/schema/ts2Json.d.ts +4 -0
  21. package/dist/schema/ts2Json.d.ts.map +1 -0
  22. package/dist/schema/ts2Json.js +172 -0
  23. package/dist/schema/ts2Json.js.map +1 -0
  24. package/package.json +4 -7
  25. package/dist/piscina/index.d.ts +0 -9
  26. package/dist/piscina/index.d.ts.map +0 -1
  27. package/dist/piscina/index.js +0 -24
  28. package/dist/piscina/index.js.map +0 -1
  29. package/dist/piscina/worker.d.ts +0 -8
  30. package/dist/piscina/worker.d.ts.map +0 -1
  31. package/dist/piscina/worker.js +0 -35
  32. package/dist/piscina/worker.js.map +0 -1
  33. package/dist/schema/__tests__/emptObject.test.d.ts +0 -2
  34. package/dist/schema/__tests__/emptObject.test.d.ts.map +0 -1
  35. package/dist/schema/__tests__/emptObject.test.js +0 -27
  36. package/dist/schema/__tests__/emptObject.test.js.map +0 -1
  37. package/dist/schema/__tests__/nullableSchema.test.d.ts +0 -2
  38. package/dist/schema/__tests__/nullableSchema.test.d.ts.map +0 -1
  39. package/dist/schema/__tests__/nullableSchema.test.js +0 -141
  40. package/dist/schema/__tests__/nullableSchema.test.js.map +0 -1
  41. package/dist/schema/generateSchema.d.ts +0 -13
  42. package/dist/schema/generateSchema.d.ts.map +0 -1
  43. package/dist/schema/generateSchema.js +0 -66
  44. package/dist/schema/generateSchema.js.map +0 -1
  45. package/dist/schema/helper/add-properties.d.ts +0 -2
  46. package/dist/schema/helper/add-properties.d.ts.map +0 -1
  47. package/dist/schema/helper/add-properties.js +0 -11
  48. package/dist/schema/helper/add-properties.js.map +0 -1
  49. package/dist/schema/helper/convertEmptyObject.d.ts +0 -2
  50. package/dist/schema/helper/convertEmptyObject.d.ts.map +0 -1
  51. package/dist/schema/helper/convertEmptyObject.js +0 -9
  52. package/dist/schema/helper/convertEmptyObject.js.map +0 -1
  53. package/dist/schema/helper/convertNullToNullable.d.ts +0 -2
  54. package/dist/schema/helper/convertNullToNullable.d.ts.map +0 -1
  55. package/dist/schema/helper/convertNullToNullable.js +0 -33
  56. package/dist/schema/helper/convertNullToNullable.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAK/C"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAK/C"}
@@ -1,13 +1,10 @@
1
- import { runWorkerControllerGeneration, runWorkerEsbuild, runWorkerSchemaGeneration, runWorkerTypecheck, } from '../piscina/index.js';
1
+ import { writeControllerJson, esbuildHelper, runTypecheck } from '../helper/index.js';
2
2
  async function handler(options) {
3
3
  if (options.typecheck) {
4
- await runWorkerTypecheck();
4
+ await runTypecheck();
5
5
  }
6
- await Promise.all([
7
- runWorkerEsbuild(),
8
- runWorkerControllerGeneration(),
9
- runWorkerSchemaGeneration(),
10
- ]);
6
+ await esbuildHelper();
7
+ await writeControllerJson();
11
8
  }
12
9
  export function addBuildCommand(program) {
13
10
  program
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,KAAK,UAAU,OAAO,CAAC,OAA4B;IACjD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,gBAAgB,EAAE;QAClB,6BAA6B,EAAE;QAC/B,yBAAyB,EAAE;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,aAAa,EAAE,4CAA4C,CAAC;SACnE,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEtF,KAAK,UAAU,OAAO,CAAC,OAA4B;IACjD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,YAAY,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,aAAa,EAAE,CAAA;IACrB,MAAM,mBAAmB,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,aAAa,EAAE,4CAA4C,CAAC;SACnE,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import pMap from 'p-map';
2
2
  import { getConfig } from '../helper/config.js';
3
- import { runWorkerSdkGeneration } from '../piscina/index.js';
3
+ import { generateSdk } from '../helper/generateSdk.js';
4
4
  async function handler() {
5
5
  const config = await getConfig();
6
6
  await pMap(config.tasks, async (project) => {
7
7
  if (!project.sdk) {
8
8
  return;
9
9
  }
10
- await runWorkerSdkGeneration(project.sdk);
10
+ await generateSdk(project.sdk);
11
11
  });
12
12
  }
13
13
  export function addSdkCommand(program) {
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/commands/sdk.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,KAAK,UAAU,OAAO;IACpB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/commands/sdk.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,KAAK,UAAU,OAAO;IACpB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAGD,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiKpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAQ/C"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyJpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,QAQ/C"}
@@ -2,11 +2,13 @@ import { execa } from 'execa';
2
2
  import chokidar from 'chokidar';
3
3
  import pMap from 'p-map';
4
4
  import _ from 'lodash';
5
- import { runWorkerControllerGeneration, runWorkerEsbuild, runWorkerSchemaGeneration, runWorkerSdkGeneration, runWorkerTypecheck, } from '../piscina/index.js';
6
5
  import { log } from '../log.js';
7
6
  import { getConfig } from '../helper/config.js';
8
7
  import { killProcess } from '../helper/killProcess.js';
9
8
  import { existsSync, mkdirSync } from 'fs';
9
+ import { esbuildHelper } from '../helper/esbuild.js';
10
+ import { runTypecheck, writeControllerJson } from '../helper/index.js';
11
+ import { generateSdk } from '../helper/generateSdk.js';
10
12
  function startProcess(command, projectIndex) {
11
13
  const [file, ...args] = command;
12
14
  const subprocess = execa(file, args, {
@@ -70,22 +72,19 @@ class WatchHandler {
70
72
  }
71
73
  async build() {
72
74
  this.excecHandler.cancelAll();
73
- const esbuildSuccess = await runWorkerEsbuild();
75
+ const esbuildSuccess = await esbuildHelper();
74
76
  if (!esbuildSuccess) {
75
77
  log({ component: 'cli', warning: 'Skipping restart... esbuild failed.' });
76
78
  return;
77
79
  }
78
- await Promise.all([
79
- runWorkerControllerGeneration(),
80
- runWorkerSchemaGeneration(),
81
- ]);
82
- this.excecHandler.restartAll();
80
+ await writeControllerJson(),
81
+ this.excecHandler.restartAll();
83
82
  }
84
83
  async handle(change) {
85
84
  log({ component: 'cli', success: 'App reload', details: change });
86
85
  await this.build();
87
86
  if (this.options.typecheck) {
88
- runWorkerTypecheck();
87
+ runTypecheck();
89
88
  }
90
89
  }
91
90
  }
@@ -96,7 +95,7 @@ async function startSdkWatch() {
96
95
  return;
97
96
  }
98
97
  const { sdk } = project;
99
- const handler = async () => await runWorkerSdkGeneration(sdk);
98
+ const handler = async () => await generateSdk(sdk);
100
99
  chokidar
101
100
  .watch(sdk.input, {
102
101
  disableGlobbing: true,
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateMeta.d.ts","sourceRoot":"","sources":["../../src/helper/generateMeta.ts"],"names":[],"mappings":"AAMA,wBAAsB,YAAY,oBA8BjC"}
1
+ {"version":3,"file":"generateMeta.d.ts","sourceRoot":"","sources":["../../src/helper/generateMeta.ts"],"names":[],"mappings":"AAoBA,wBAAsB,YAAY,oBAqCjC"}
@@ -3,15 +3,32 @@ import { join } from 'node:path';
3
3
  import pMap from 'p-map';
4
4
  import { getConfig } from './config.js';
5
5
  import { getControllerFunctions } from './getControllerFunctions.js';
6
+ import { Project, } from 'ts-morph';
7
+ function getProject() {
8
+ const tsConfigFilePath = join(process.cwd(), 'tsconfig.json');
9
+ const project = new Project({ tsConfigFilePath });
10
+ const config = project.getCompilerOptions();
11
+ if (!config.strict && !config.strictNullChecks) {
12
+ throw new Error('tsconfig.json must have strict or strictNullChecks enabled.');
13
+ }
14
+ return project;
15
+ }
6
16
  export async function generateMeta() {
17
+ const project = getProject();
7
18
  const config = await getConfig();
8
19
  const controllers = await fg(join(config.entry, '/**/*[cC]ontroller.ts'), {
9
20
  absolute: true,
10
21
  markDirectories: true,
11
22
  });
12
23
  const results = await pMap(controllers, async (file) => {
13
- const definitions = await getControllerFunctions(file);
14
- return definitions;
24
+ try {
25
+ const definitions = await getControllerFunctions(file, project);
26
+ return definitions;
27
+ }
28
+ catch (err) {
29
+ err.message = `Error in file ${file}: ${err.message}`;
30
+ throw err;
31
+ }
15
32
  }, { concurrency: 2 });
16
33
  const functions = [];
17
34
  results.forEach((x) => {
@@ -20,6 +37,7 @@ export async function generateMeta() {
20
37
  functionName: method,
21
38
  params: x.functions[method].params,
22
39
  returnType: x.functions[method].returnType,
40
+ returnSchema: x.functions[method].returnSchema,
23
41
  }));
24
42
  });
25
43
  return JSON.stringify(functions, null, 2);
@@ -1 +1 @@
1
- {"version":3,"file":"generateMeta.js","sourceRoot":"","sources":["../../src/helper/generateMeta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,uBAAuB,CAAC,EAAE;QACxE,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CACxB,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAEvD,OAAO,WAAW,CAAC;IACrB,CAAC,EACD,EAAE,WAAW,EAAE,CAAC,EAAE,CACnB,CAAC;IAEF,MAAM,SAAS,GAAG,EAAS,CAAC;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1C,SAAS,CAAC,IAAI,CAAC;YACb,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,YAAY,EAAE,MAAM;YACpB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM;YAClC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,UAAU;SAC3C,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"generateMeta.js","sourceRoot":"","sources":["../../src/helper/generateMeta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,OAAO,GAAG,MAAM,UAAU,CAAC;AAIpC,SAAS,UAAU;IACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,uBAAuB,CAAC,EAAE;QACxE,QAAQ,EAAE,IAAI;QACd,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CACxB,WAAW,EACX,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEhE,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,OAAO,GAAG,iBAAiB,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAA;YACrD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,EACD,EAAE,WAAW,EAAE,CAAC,EAAE,CACnB,CAAC;IAEF,MAAM,SAAS,GAAG,EAAS,CAAC;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1C,SAAS,CAAC,IAAI,CAAC;YACb,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,YAAY,EAAE,MAAM;YACpB,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM;YAClC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,UAAU;YAC1C,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,YAAY;SAC/C,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,7 +1,8 @@
1
+ import { Project } from 'ts-morph';
1
2
  export declare function cleanInterfaceName(name: string | undefined): string;
2
- export declare function getControllerFunctions(file: string): {
3
+ export declare function getControllerFunctions(file: string, project: Project): Promise<{
3
4
  className: string | undefined;
4
5
  file: string;
5
6
  functions: any;
6
- };
7
+ }>;
7
8
  //# sourceMappingURL=getControllerFunctions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getControllerFunctions.d.ts","sourceRoot":"","sources":["../../src/helper/getControllerFunctions.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,UAW1D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM;;;;EAwDlD"}
1
+ {"version":3,"file":"getControllerFunctions.d.ts","sourceRoot":"","sources":["../../src/helper/getControllerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,UAAU,CAAC;AAKhD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,UAY1D;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;;;;GA6D1E"}
@@ -1,5 +1,6 @@
1
- import { Project, SyntaxKind } from 'ts-morph';
1
+ import { SyntaxKind, } from 'ts-morph';
2
2
  import { log } from '../log.js';
3
+ import { ts2Json } from '../schema/ts2Json.js';
3
4
  export function cleanInterfaceName(name) {
4
5
  if (!name) {
5
6
  return '';
@@ -8,11 +9,11 @@ export function cleanInterfaceName(name) {
8
9
  .replace('Promise<', '')
9
10
  .replace('>', '')
10
11
  .replace('void', '')
12
+ .replace('[]', '')
11
13
  .split('.')
12
14
  .slice(-1)[0];
13
15
  }
14
- export function getControllerFunctions(file) {
15
- const project = new Project();
16
+ export async function getControllerFunctions(file, project) {
16
17
  project.addSourceFileAtPath(file);
17
18
  const parsed = project.getSourceFile(file);
18
19
  if (!parsed) {
@@ -47,13 +48,16 @@ export function getControllerFunctions(file) {
47
48
  return {
48
49
  name: x.getNameNode().getText(),
49
50
  type: cleanInterfaceName(x.getTypeNode()?.getText()),
51
+ schema: ['query', 'body'].includes(x.getNameNode().getText()) ? ts2Json(x.getTypeNodeOrThrow()) : undefined,
50
52
  };
51
53
  });
52
54
  const name = y.getNameNode().getText();
53
55
  const returnType = cleanInterfaceName(y.getReturnTypeNode()?.getText());
56
+ const returnSchema = ts2Json(y.getReturnTypeNodeOrThrow());
54
57
  acc[name] = {
55
58
  params,
56
59
  returnType,
60
+ returnSchema
57
61
  };
58
62
  return acc;
59
63
  }, {});
@@ -1 +1 @@
1
- {"version":3,"file":"getControllerFunctions.js","sourceRoot":"","sources":["../../src/helper/getControllerFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,MAAM,UAAU,kBAAkB,CAAC,IAAwB;IACzD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI;SACR,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;SAChB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,KAAK,CAAC,GAAG,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC;YACF,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,0BAA0B;YACjC,OAAO,EAAE,GAAG,IAAI,EAAE;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACzE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,GAAG,CAAC;YACF,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,sDAAsD;YAC7D,OAAO,EAAE,GAAG,IAAI,EAAE;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC;YACF,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,oDAAoD;YAC3D,OAAO,EAAE,GAAG,IAAI,EAAE;SACnB,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAEvC,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAErD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAM,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE;gBAC/B,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC;aACrD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAExE,GAAG,CAAC,IAAI,CAAC,GAAG;YACV,MAAM;YACN,UAAU;SACX,CAAC;QAEF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"getControllerFunctions.js","sourceRoot":"","sources":["../../src/helper/getControllerFunctions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export declare function writeControllerJson(): Promise<void>;
2
- export declare function writeSchemaJson(): Promise<void>;
3
2
  export declare function getRootDir(): string;
3
+ export declare function runTypecheck(): Promise<void>;
4
4
  export * from './esbuild.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helper/index.ts"],"names":[],"mappings":"AAOA,wBAAsB,mBAAmB,kBAKxC;AAED,wBAAsB,eAAe,kBAQpC;AAED,wBAAgB,UAAU,WAEzB;AAED,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helper/index.ts"],"names":[],"mappings":"AAUA,wBAAsB,mBAAmB,kBAKxC;AAED,wBAAgB,UAAU,WAEzB;AAED,wBAAsB,YAAY,kBAMjC;AAED,cAAc,cAAc,CAAC"}
@@ -1,24 +1,25 @@
1
1
  import { dirname, join } from 'node:path';
2
2
  import { fileURLToPath } from 'node:url';
3
+ import { execa } from 'execa';
4
+ import { log } from '../log.js';
3
5
  import { getConfig } from './config.js';
4
6
  import { generateMeta } from './generateMeta.js';
5
- import { generateSchema } from '../schema/generateSchema.js';
6
7
  import { writeFile } from './writeFile.js';
7
8
  export async function writeControllerJson() {
8
9
  const config = await getConfig();
9
10
  const meta = await generateMeta();
10
11
  writeFile(join(config.outdir, 'flux-controller.json'), meta);
11
12
  }
12
- export async function writeSchemaJson() {
13
- const config = await getConfig();
14
- let schema = await generateSchema(config.entry, { removeDateTime: false });
15
- if (!schema) {
16
- schema = '{}';
17
- }
18
- writeFile(join(config.outdir, 'flux-schema.json'), schema);
19
- }
20
13
  export function getRootDir() {
21
14
  return join(dirname(fileURLToPath(import.meta.url)), '../../');
22
15
  }
16
+ export async function runTypecheck() {
17
+ try {
18
+ await execa('tsc', ['--noEmit']);
19
+ }
20
+ catch (err) {
21
+ log({ component: 'cli', error: 'Typecheck failed', details: err.message });
22
+ }
23
+ }
23
24
  export * from './esbuild.js';
24
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAElC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helper/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAElC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,cAAc,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Node } from "ts-morph";
2
+ export declare function ts2Json(node: Node, nested?: boolean): any;
3
+ export declare function ts2JsonTest(file: string, functionIndex?: number, paramterIndex?: number): any;
4
+ //# sourceMappingURL=ts2Json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts2Json.d.ts","sourceRoot":"","sources":["../../src/schema/ts2Json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,IAAI,EAAiC,MAAM,UAAU,CAAC;AAgIpF,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,UAAQ,GAAG,GAAG,CA6DvD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,SAAI,EAAE,aAAa,SAAI,OAwB7E"}
@@ -0,0 +1,172 @@
1
+ import { Project, SyntaxKind } from "ts-morph";
2
+ const primitives = ['^void$',
3
+ '^number$',
4
+ '^string$',
5
+ '^any$',
6
+ '^boolean$',
7
+ '^true$',
8
+ '^Date$',
9
+ '^null$',
10
+ 'Prisma\.JsonValue$'
11
+ ];
12
+ function isObject(str) {
13
+ const objects = [
14
+ '^Record<.+,.+>$', // Record<any,any>
15
+ '^{\\s?\\[.+:\\s?.+\\]\\s?:.+}$', // { [key: any]: any}
16
+ ];
17
+ return objects.some(x => new RegExp(x).test(str));
18
+ }
19
+ function isPrimitive(str) {
20
+ return isObject(str) || primitives.some(x => new RegExp(x).test(str));
21
+ }
22
+ function primitive2Json(type) {
23
+ if (type === 'true') { // getUntionTypes returns [true, false]
24
+ return { type: 'boolean' };
25
+ }
26
+ else if (type === 'Date') {
27
+ return { type: 'string', format: 'date-time' };
28
+ }
29
+ else if (isObject(type)) {
30
+ return { type: 'object', additionalProperties: true };
31
+ }
32
+ else if (type === 'any' || type.endsWith('Prisma.JsonValue')) {
33
+ return {};
34
+ }
35
+ ;
36
+ return { type };
37
+ }
38
+ function unwrapPromise(node) {
39
+ const identifier = node.getFirstChildByKind(SyntaxKind.Identifier);
40
+ if (!identifier) {
41
+ return node;
42
+ }
43
+ if (identifier.getText() === 'Promise') {
44
+ const found = node.forEachChildAsArray().find(x => x.getText() !== 'Promise');
45
+ if (!found) {
46
+ throw new Error('unwrapPromise: did not find type inside Promise');
47
+ }
48
+ return found;
49
+ }
50
+ return node;
51
+ }
52
+ function checkResolvable(type) {
53
+ if (type.getText() === 'any') {
54
+ return;
55
+ }
56
+ if (type.getFlags() === 1) {
57
+ throw new Error(`${type.getText()} can't be resolved. Please check for a typo or why it is not defined.`);
58
+ }
59
+ }
60
+ function handleArray(type) {
61
+ const arrayType = type.getTypeArguments()[0];
62
+ checkResolvable(arrayType);
63
+ if (isPrimitive(arrayType.getText())) {
64
+ return { type: 'array', items: primitive2Json(arrayType.getText()) };
65
+ }
66
+ const symbol = arrayType.getSymbol();
67
+ if (!symbol) {
68
+ throw new Error('Array type must have a symbol');
69
+ }
70
+ return { type: 'array', items: ts2Json(symbol.getDeclarations()[0], true) };
71
+ }
72
+ function handleUnion(type) {
73
+ const enums = type.getUnionTypes().filter(x => x.isStringLiteral());
74
+ if (enums.length) {
75
+ return { type: 'string', enum: enums.map(x => x.getText().replace(/[\'\"]/gi, '').trim()) };
76
+ }
77
+ const types = type.getUnionTypes().filter(x => !['false', 'undefined'].includes(x.getText()));
78
+ const formatted = types.map(x => {
79
+ if (isPrimitive(x.getText())) {
80
+ return primitive2Json(x.getText());
81
+ }
82
+ if (x.isArray()) {
83
+ return handleArray(x);
84
+ }
85
+ const symbol = x.getSymbol();
86
+ if (symbol) {
87
+ const node = symbol.getDeclarations()[0];
88
+ return ts2Json(node, true);
89
+ }
90
+ const err = `handleDeclarations: unhandled case ${x.getText()}`;
91
+ throw new Error(err);
92
+ });
93
+ if (formatted.length === 2 && formatted.find((x) => x.type === 'null')) {
94
+ const found = formatted.find((x) => x.type !== 'null');
95
+ found.nullable = true;
96
+ return found;
97
+ }
98
+ if (formatted.length > 1) {
99
+ return { anyOf: formatted };
100
+ }
101
+ return formatted[0];
102
+ }
103
+ export function ts2Json(node, nested = false) {
104
+ node = unwrapPromise(node);
105
+ const $id = nested ? undefined : node.getText().replace('[]', '');
106
+ if (isPrimitive(node.getType().getText())) {
107
+ return primitive2Json(node.getType().getText());
108
+ }
109
+ if (node.getType().isArray()) {
110
+ return { $id, additionalProperties: false, ...handleArray(node.getType()) };
111
+ }
112
+ if (node.getType().isInterface() || node.getType().isObject()) {
113
+ const required = [];
114
+ const properties = node.getType().getProperties().
115
+ reduce((acc, x) => {
116
+ const type = x.getTypeAtLocation(node);
117
+ if (!x.isOptional()) {
118
+ required.push(x.getName());
119
+ }
120
+ if (isPrimitive(type.getText())) {
121
+ acc[x.getName()] = primitive2Json(type.getText());
122
+ return acc;
123
+ }
124
+ if (type.isArray()) {
125
+ acc[x.getName()] = handleArray(type);
126
+ return acc;
127
+ }
128
+ if (type.isUnion()) {
129
+ acc[x.getName()] = handleUnion(type);
130
+ return acc;
131
+ }
132
+ if (type.isObject() || type.isInterface()) {
133
+ acc[x.getName()] = ts2Json(type.getSymbolOrThrow().getDeclarations()[0], true);
134
+ return acc;
135
+ }
136
+ const symbol = type.getSymbol();
137
+ if (symbol) {
138
+ const node = symbol.getDeclarations()[0];
139
+ return ts2Json(node, true);
140
+ }
141
+ throw new Error('not implemented in properties ' + type.getText() + x.getDeclarations().map(x => x.getText()));
142
+ }, {});
143
+ return {
144
+ $id,
145
+ type: 'object', additionalProperties: false, properties, required
146
+ };
147
+ }
148
+ checkResolvable(node.getType());
149
+ throw new Error('not implemented ' + node.getKindName());
150
+ }
151
+ export function ts2JsonTest(file, functionIndex = 0, paramterIndex = 0) {
152
+ const project = new Project({
153
+ compilerOptions: {
154
+ strictNullChecks: true,
155
+ }
156
+ });
157
+ project.addSourceFileAtPath(file);
158
+ const parsed = project.getSourceFile(file);
159
+ if (!parsed) {
160
+ throw new Error('parsing did not work');
161
+ }
162
+ const classes = parsed.getDescendantsOfKind(SyntaxKind.ClassDeclaration);
163
+ if (!classes) {
164
+ throw new Error('did not found a class');
165
+ }
166
+ const methods = classes[0].getInstanceMethods();
167
+ if (paramterIndex === -1) {
168
+ return ts2Json(methods[functionIndex].getReturnTypeNodeOrThrow());
169
+ }
170
+ return ts2Json(methods[functionIndex].getParameters()[paramterIndex].getTypeNodeOrThrow());
171
+ }
172
+ //# sourceMappingURL=ts2Json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts2Json.js","sourceRoot":"","sources":["../../src/schema/ts2Json.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -9,7 +9,6 @@
9
9
  "author": "",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
- "@apidevtools/json-schema-ref-parser": "11.1.0",
13
12
  "@types/lodash": "4.14.202",
14
13
  "chalk": "5.3.0",
15
14
  "chokidar": "3.5.3",
@@ -17,24 +16,22 @@
17
16
  "execa": "8.0.1",
18
17
  "fast-glob": "3.3.2",
19
18
  "lodash": "4.17.21",
20
- "p-map": "7.0.0",
19
+ "p-map": "7.0.1",
21
20
  "pidtree": "0.6.0",
22
- "piscina": "4.2.1",
23
21
  "source-map-support": "0.5.21",
24
22
  "swagger-typescript-api": "13.0.3",
25
- "ts-json-schema-generator": "1.5.0",
26
23
  "ts-morph": "21.0.1",
27
24
  "typescript": "5.3.3"
28
25
  },
29
26
  "devDependencies": {
30
27
  "@types/fs-extra": "11.0.4",
31
28
  "@types/jest": "29.5.11",
32
- "@types/node": "20.10.5",
29
+ "@types/node": "20.11.0",
33
30
  "jest": "29.7.0",
34
31
  "ts-jest": "29.1.1"
35
32
  },
36
33
  "peerDependencies": {
37
- "esbuild": "0.19.10"
34
+ "esbuild": "0.19.11"
38
35
  },
39
36
  "files": [
40
37
  "cli.js",
@@ -42,7 +39,7 @@
42
39
  "sdk-templates/"
43
40
  ],
44
41
  "type": "module",
45
- "version": "2.31.2",
42
+ "version": "3.0.0",
46
43
  "scripts": {
47
44
  "clean": "rm -rf dist/",
48
45
  "test": "jest",
@@ -1,9 +0,0 @@
1
- import Piscina from 'piscina';
2
- import { GenerateApiParams } from 'swagger-typescript-api';
3
- export declare const piscina: Piscina;
4
- export declare function runWorkerEsbuild(): Promise<boolean>;
5
- export declare function runWorkerSchemaGeneration(): Promise<any>;
6
- export declare function runWorkerControllerGeneration(): Promise<any>;
7
- export declare function runWorkerSdkGeneration(sdk: GenerateApiParams): Promise<any>;
8
- export declare function runWorkerTypecheck(): Promise<any>;
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/piscina/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,eAAO,MAAM,OAAO,SAGlB,CAAC;AAEH,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEnD;AAED,wBAAgB,yBAAyB,iBAExC;AAED,wBAAgB,6BAA6B,iBAE5C;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,gBAE5D;AAED,wBAAgB,kBAAkB,iBAEjC"}
@@ -1,24 +0,0 @@
1
- import Piscina from 'piscina';
2
- import { dirname, resolve } from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
- const __dirname = dirname(fileURLToPath(import.meta.url));
5
- export const piscina = new Piscina({
6
- filename: resolve(__dirname, 'worker.js'),
7
- maxThreads: 4,
8
- });
9
- export function runWorkerEsbuild() {
10
- return piscina.run({}, { name: 'runEsbuild' });
11
- }
12
- export function runWorkerSchemaGeneration() {
13
- return piscina.run({}, { name: 'runSchemaGeneration' });
14
- }
15
- export function runWorkerControllerGeneration() {
16
- return piscina.run({}, { name: 'runControllerGeneration' });
17
- }
18
- export function runWorkerSdkGeneration(sdk) {
19
- return piscina.run(sdk, { name: 'runSdkGeneration' });
20
- }
21
- export function runWorkerTypecheck() {
22
- return piscina.run({}, { name: 'runTypecheck' });
23
- }
24
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/piscina/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC;IACzC,UAAU,EAAE,CAAC;CACd,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAsB;IAC3D,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AACnD,CAAC"}
@@ -1,8 +0,0 @@
1
- import { GenerateApiParams } from 'swagger-typescript-api';
2
- export default function handler(): void;
3
- export declare function runControllerGeneration(): Promise<void>;
4
- export declare function runSchemaGeneration(): Promise<void>;
5
- export declare function runEsbuild(): Promise<boolean>;
6
- export declare function runTypecheck(): Promise<void>;
7
- export declare function runSdkGeneration(sdk: GenerateApiParams): Promise<void>;
8
- //# sourceMappingURL=worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/piscina/worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAU3D,MAAM,CAAC,OAAO,UAAU,OAAO,SAE9B;AAED,wBAAsB,uBAAuB,kBAQ5C;AAED,wBAAsB,mBAAmB,kBAExC;AAED,wBAAsB,UAAU,qBAE/B;AAED,wBAAsB,YAAY,kBAMjC;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,iBAE5D"}
@@ -1,35 +0,0 @@
1
- import { execa } from 'execa';
2
- import { generateSdk } from '../helper/generateSdk.js';
3
- import { esbuildHelper, writeControllerJson, writeSchemaJson, } from '../helper/index.js';
4
- import { log } from '../log.js';
5
- export default function handler() {
6
- console.log('runing handler');
7
- }
8
- export async function runControllerGeneration() {
9
- try {
10
- await writeControllerJson();
11
- }
12
- catch (err) {
13
- if (err.message !== '') {
14
- throw err;
15
- }
16
- }
17
- }
18
- export async function runSchemaGeneration() {
19
- await writeSchemaJson();
20
- }
21
- export async function runEsbuild() {
22
- return await esbuildHelper();
23
- }
24
- export async function runTypecheck() {
25
- try {
26
- await execa('tsc', ['--noEmit']);
27
- }
28
- catch (err) {
29
- log({ component: 'cli', error: 'Typecheck failed', details: err.message });
30
- }
31
- }
32
- export async function runSdkGeneration(sdk) {
33
- await generateSdk(sdk);
34
- }
35
- //# sourceMappingURL=worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/piscina/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,UAAU,OAAO;IAC7B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI,CAAC;QACH,MAAM,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,eAAe,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,OAAO,MAAM,aAAa,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAsB;IAC3D,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=emptObject.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emptObject.test.d.ts","sourceRoot":"","sources":["../../../src/schema/__tests__/emptObject.test.ts"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- import { convertEmptyObject } from '../helper/convertEmptyObject';
2
- const input = {
3
- UpdateTodo: {
4
- type: 'object',
5
- properties: {
6
- anyObject: {
7
- type: 'object',
8
- },
9
- },
10
- },
11
- };
12
- test('convert anyOf to nullable', () => {
13
- expect(convertEmptyObject(input)).toMatchInlineSnapshot(`
14
- {
15
- "UpdateTodo": {
16
- "properties": {
17
- "anyObject": {
18
- "additionalProperties": true,
19
- "type": "object",
20
- },
21
- },
22
- "type": "object",
23
- },
24
- }
25
- `);
26
- });
27
- //# sourceMappingURL=emptObject.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emptObject.test.js","sourceRoot":"","sources":["../../../src/schema/__tests__/emptObject.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;aACf;SACF;KACF;CACF,CAAC;AAEF,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACrC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;GAYvD,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=nullableSchema.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nullableSchema.test.d.ts","sourceRoot":"","sources":["../../../src/schema/__tests__/nullableSchema.test.ts"],"names":[],"mappings":""}
@@ -1,141 +0,0 @@
1
- import { convertNullToNullable } from '../helper/convertNullToNullable';
2
- const input = {
3
- UpdateTodo: {
4
- type: 'object',
5
- properties: {
6
- text: {
7
- type: 'string',
8
- },
9
- foo: {
10
- anyOf: [
11
- {
12
- type: 'null',
13
- },
14
- {
15
- type: 'string',
16
- },
17
- {
18
- type: 'number',
19
- },
20
- ],
21
- },
22
- user: {
23
- anyOf: [
24
- {
25
- type: 'null',
26
- },
27
- {
28
- type: 'object',
29
- properties: {
30
- id: {
31
- type: 'number',
32
- },
33
- anyOf: [
34
- {
35
- type: 'null',
36
- },
37
- {
38
- type: 'object',
39
- properties: {
40
- id: {
41
- type: 'number',
42
- },
43
- },
44
- },
45
- ],
46
- },
47
- },
48
- ],
49
- },
50
- },
51
- },
52
- };
53
- test('convert anyOf to nullable', () => {
54
- expect(convertNullToNullable(input)).toMatchInlineSnapshot(`
55
- {
56
- "UpdateTodo": {
57
- "properties": {
58
- "foo": {
59
- "anyOf": [
60
- {
61
- "type": "null",
62
- },
63
- {
64
- "type": "string",
65
- },
66
- {
67
- "type": "number",
68
- },
69
- ],
70
- },
71
- "text": {
72
- "type": "string",
73
- },
74
- "user": {
75
- "nullable": true,
76
- "properties": {
77
- "nullable": true,
78
- "properties": {
79
- "id": {
80
- "type": "number",
81
- },
82
- },
83
- "type": "object",
84
- },
85
- "type": "object",
86
- },
87
- },
88
- "type": "object",
89
- },
90
- }
91
- `);
92
- });
93
- const input2 = {
94
- AnyResponse: {
95
- type: 'object',
96
- properties: {
97
- multiNull: {
98
- type: ['null', 'number', 'string'],
99
- },
100
- multiNull2: {
101
- type: ['number', 'string'],
102
- },
103
- multiNull3: {
104
- type: ['null', 'string'],
105
- },
106
- },
107
- additionalProperties: false,
108
- $id: 'AnyResponse',
109
- },
110
- };
111
- test('convert anyOf to nullable', () => {
112
- expect(convertNullToNullable(input2)).toMatchInlineSnapshot(`
113
- {
114
- "AnyResponse": {
115
- "$id": "AnyResponse",
116
- "additionalProperties": false,
117
- "properties": {
118
- "multiNull": {
119
- "nullable": true,
120
- "type": [
121
- "number",
122
- "string",
123
- ],
124
- },
125
- "multiNull2": {
126
- "type": [
127
- "number",
128
- "string",
129
- ],
130
- },
131
- "multiNull3": {
132
- "nullable": true,
133
- "type": "string",
134
- },
135
- },
136
- "type": "object",
137
- },
138
- }
139
- `);
140
- });
141
- //# sourceMappingURL=nullableSchema.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nullableSchema.test.js","sourceRoot":"","sources":["../../../src/schema/__tests__/nullableSchema.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,KAAK,GAAG;IACZ,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;aACf;YACD,GAAG,EAAE;gBACH,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,IAAI,EAAE,QAAQ;qBACf;oBACD;wBACE,IAAI,EAAE,QAAQ;qBACf;iBACF;aACF;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,MAAM;qBACb;oBACD;wBACE,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;6BACf;4BACD,KAAK,EAAE;gCACL;oCACE,IAAI,EAAE,MAAM;iCACb;gCACD;oCACE,IAAI,EAAE,QAAQ;oCACd,UAAU,EAAE;wCACV,EAAE,EAAE;4CACF,IAAI,EAAE,QAAQ;yCACf;qCACF;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF;KACF;CACF,CAAC;AAEF,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACrC,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqC1D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG;IACb,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;aACnC;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;aAC3B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;aACzB;SACF;QACD,oBAAoB,EAAE,KAAK;QAC3B,GAAG,EAAE,aAAa;KACnB;CACF,CAAC;AAEF,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACrC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2B3D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- interface GenerateSchemaOptions {
2
- removeDateTime: boolean;
3
- }
4
- export declare class GenerateGlobalSchema {
5
- private base;
6
- private params;
7
- constructor(base: string, params: GenerateSchemaOptions);
8
- getSchema(): Promise<string>;
9
- handle(): Promise<string>;
10
- }
11
- export declare function generateSchema(path: string, options: GenerateSchemaOptions): Promise<string>;
12
- export {};
13
- //# sourceMappingURL=generateSchema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateSchema.d.ts","sourceRoot":"","sources":["../../src/schema/generateSchema.ts"],"names":[],"mappings":"AAQA,UAAU,qBAAqB;IAC7B,cAAc,EAAE,OAAO,CAAC;CACzB;AAUD,qBAAa,oBAAoB;IACnB,OAAO,CAAC,IAAI;IAAU,OAAO,CAAC,MAAM;gBAA5B,IAAI,EAAE,MAAM,EAAU,MAAM,EAAE,qBAAqB;IAEjE,SAAS;IAwCT,MAAM;CAcb;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,qBAAqB,mBAK/B"}
@@ -1,66 +0,0 @@
1
- import $RefParser from '@apidevtools/json-schema-ref-parser';
2
- import * as ts from 'ts-json-schema-generator';
3
- import { log } from '../log.js';
4
- import { addProperties } from './helper/add-properties.js';
5
- import { convertEmptyObject } from './helper/convertEmptyObject.js';
6
- import { convertNullToNullable } from './helper/convertNullToNullable.js';
7
- function addId(schema) {
8
- return Object.fromEntries(Object.entries(schema).map(([key, value]) => {
9
- return [key, { ...value, $id: `${key}` }];
10
- }));
11
- }
12
- export class GenerateGlobalSchema {
13
- constructor(base, params) {
14
- this.base = base;
15
- this.params = params;
16
- }
17
- async getSchema() {
18
- const config = {
19
- path: `${this.base}/**/*schema.ts`,
20
- tsconfig: './tsconfig.json',
21
- };
22
- try {
23
- let schema = ts.createGenerator(config).createSchema();
24
- schema = await $RefParser.dereference(schema);
25
- schema = addId(schema.definitions);
26
- schema = convertNullToNullable(schema);
27
- schema = convertEmptyObject(schema);
28
- schema = addProperties(schema);
29
- return JSON.stringify(schema, null, 2);
30
- }
31
- catch (e) {
32
- if (e.message.includes('NoRootNamesError')) {
33
- console.warn(`\nMissing interfaces for path: ${this.base}/controllers/*/interfaces.ts\n`);
34
- return '';
35
- }
36
- if (e.diagnostics) {
37
- e.diagnostics.forEach((element) => {
38
- log({
39
- component: 'cli',
40
- warning: element.messageText,
41
- details: element?.file?.fileName,
42
- });
43
- });
44
- return '';
45
- }
46
- throw e;
47
- }
48
- }
49
- async handle() {
50
- let schema = await this.getSchema();
51
- /*
52
- schema = schema.replace(/, format: 'date-time'/g, '');
53
-
54
- if (schema.includes('date-time')) {
55
- console.warn(
56
- `\ndate-time is used in schema. This causes issues with fastify serialization. Use string instead.\n`,
57
- );
58
- }*/
59
- return schema;
60
- }
61
- }
62
- export async function generateSchema(path, options) {
63
- const instance = new GenerateGlobalSchema(path, options);
64
- return instance.handle();
65
- }
66
- //# sourceMappingURL=generateSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateSchema.js","sourceRoot":"","sources":["../../src/schema/generateSchema.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAE/C,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAM1E,SAAS,KAAK,CAAC,MAA8B;IAC3C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC1C,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,oBAAoB;IAC/B,YAAoB,IAAY,EAAU,MAA6B;QAAnD,SAAI,GAAJ,IAAI,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAuB;IAAG,CAAC;IAE3E,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAW;YACrB,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,gBAAgB;YAClC,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,YAAY,EAAS,CAAC;YAC9D,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACnC,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAE/B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CACV,kCAAkC,IAAI,CAAC,IAAI,gCAAgC,CAC5E,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAClB,CAAC,CAAC,WAAW,CAAC,OAAO,CACnB,CAAC,OAA6D,EAAE,EAAE;oBAChE,GAAG,CAAC;wBACF,SAAS,EAAE,KAAK;wBAChB,OAAO,EAAE,OAAO,CAAC,WAAW;wBAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ;qBACjC,CAAC,CAAC;gBACL,CAAC,CACF,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,KAAK,CAAC,MAAM;QACV,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAEpC;;;;;;;WAOG;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,OAA8B;IAE9B,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEzD,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3B,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function addProperties(definitions: Record<string, any>): Record<string, any>;
2
- //# sourceMappingURL=add-properties.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-properties.d.ts","sourceRoot":"","sources":["../../../src/schema/helper/add-properties.ts"],"names":[],"mappings":"AACA,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,uBAS7D"}
@@ -1,11 +0,0 @@
1
- // schemas without properties cause fastify-swagger to fail
2
- export function addProperties(definitions) {
3
- Object.keys(definitions).forEach((key) => {
4
- const definition = definitions[key];
5
- if (definition.type === 'object' && !definition.properties) {
6
- definition.properties = {};
7
- }
8
- });
9
- return definitions;
10
- }
11
- //# sourceMappingURL=add-properties.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"add-properties.js","sourceRoot":"","sources":["../../../src/schema/helper/add-properties.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,UAAU,aAAa,CAAC,WAAgC;IAC5D,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC3D,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function convertEmptyObject(object: any): any;
2
- //# sourceMappingURL=convertEmptyObject.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertEmptyObject.d.ts","sourceRoot":"","sources":["../../../src/schema/helper/convertEmptyObject.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAMnD"}
@@ -1,9 +0,0 @@
1
- import _ from 'lodash';
2
- export function convertEmptyObject(object) {
3
- return _.cloneDeepWith(object, (value) => {
4
- if (_.isEqual(value, { type: 'object' })) {
5
- return { ...value, additionalProperties: true };
6
- }
7
- });
8
- }
9
- //# sourceMappingURL=convertEmptyObject.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertEmptyObject.js","sourceRoot":"","sources":["../../../src/schema/helper/convertEmptyObject.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,MAAM,UAAU,kBAAkB,CAAC,MAAW;IAC5C,OAAO,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,GAAG,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function convertNullToNullable(object: any): any;
2
- //# sourceMappingURL=convertNullToNullable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertNullToNullable.d.ts","sourceRoot":"","sources":["../../../src/schema/helper/convertNullToNullable.ts"],"names":[],"mappings":"AAaA,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAuBtD"}
@@ -1,33 +0,0 @@
1
- import _ from 'lodash';
2
- function handleAnyOf(anyOf) {
3
- const hasTypeNull = anyOf.find((x) => x.type === 'null');
4
- if (!hasTypeNull || anyOf.length !== 2) {
5
- return;
6
- }
7
- const noneNull = anyOf.find((x) => x.type !== 'null');
8
- return { nullable: true, ...noneNull };
9
- }
10
- export function convertNullToNullable(object) {
11
- return _.cloneDeepWith(object, (value) => {
12
- if (value['anyOf']) {
13
- const result = handleAnyOf(value['anyOf']);
14
- if (result) {
15
- return convertNullToNullable(result);
16
- }
17
- }
18
- if (value.type && _.isArray(value.type) && value.type.includes('null')) {
19
- if (value.type.includes('null')) {
20
- value.nullable = true;
21
- }
22
- const notNullTypes = value.type.filter((x) => x !== 'null');
23
- if (notNullTypes.length === 1) {
24
- value.type = notNullTypes[0];
25
- }
26
- else {
27
- value.type = notNullTypes;
28
- }
29
- return convertNullToNullable(value);
30
- }
31
- });
32
- }
33
- //# sourceMappingURL=convertNullToNullable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertNullToNullable.js","sourceRoot":"","sources":["../../../src/schema/helper/convertNullToNullable.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,SAAS,WAAW,CAAC,KAA2B;IAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAE3D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAW;IAC/C,OAAO,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;YACpE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;YAC5B,CAAC;YAED,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}