@openapi-qraft/tanstack-query-react-plugin 2.5.0-beta.3 → 2.6.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 (48) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/generateCode.d.ts +5 -0
  3. package/dist/generateCode.d.ts.map +1 -1
  4. package/dist/generateCode.js +23 -21
  5. package/dist/generateCode.js.map +1 -1
  6. package/dist/lib/parseOptionSubValues.d.ts +11 -0
  7. package/dist/lib/parseOptionSubValues.d.ts.map +1 -0
  8. package/dist/lib/parseOptionSubValues.js +30 -0
  9. package/dist/lib/parseOptionSubValues.js.map +1 -0
  10. package/dist/plugin.d.ts.map +1 -1
  11. package/dist/plugin.js +62 -1
  12. package/dist/plugin.js.map +1 -1
  13. package/dist/ts-factory/getCallbackNames.d.ts +5 -0
  14. package/dist/ts-factory/getCallbackNames.d.ts.map +1 -0
  15. package/dist/ts-factory/getCallbackNames.js +35 -0
  16. package/dist/ts-factory/getCallbackNames.js.map +1 -0
  17. package/dist/ts-factory/getCreateAPIClientFactory.d.ts +11 -0
  18. package/dist/ts-factory/getCreateAPIClientFactory.d.ts.map +1 -0
  19. package/dist/ts-factory/getCreateAPIClientFactory.js +254 -0
  20. package/dist/ts-factory/getCreateAPIClientFactory.js.map +1 -0
  21. package/dist/ts-factory/getCreatePredefinedParametersRequestFnFactory.d.ts +1 -1
  22. package/dist/ts-factory/getIndexFactory.d.ts +7 -1
  23. package/dist/ts-factory/getIndexFactory.d.ts.map +1 -1
  24. package/dist/ts-factory/getIndexFactory.js +4 -4
  25. package/dist/ts-factory/getIndexFactory.js.map +1 -1
  26. package/dist/ts-factory/getServiceFactory.d.ts +1 -1
  27. package/dist/ts-factory/getServiceFactory.d.ts.map +1 -1
  28. package/dist/ts-factory/getServiceFactory.js +32 -84
  29. package/dist/ts-factory/getServiceFactory.js.map +1 -1
  30. package/dist/ts-factory/getServiceIndexFactory.d.ts +1 -1
  31. package/dist/ts-factory/serviceOperationNodes.d.ts +11 -0
  32. package/dist/ts-factory/serviceOperationNodes.d.ts.map +1 -0
  33. package/dist/ts-factory/serviceOperationNodes.js +68 -0
  34. package/dist/ts-factory/serviceOperationNodes.js.map +1 -0
  35. package/package.json +4 -4
  36. package/src/generateCode.ts +33 -25
  37. package/src/lib/parseOptionSubValues.ts +44 -0
  38. package/src/plugin.ts +124 -1
  39. package/src/ts-factory/getCallbackNames.ts +45 -0
  40. package/src/ts-factory/getCreateAPIClientFactory.ts +1014 -0
  41. package/src/ts-factory/getIndexFactory.ts +25 -11
  42. package/src/ts-factory/getServiceFactory.ts +126 -138
  43. package/src/ts-factory/serviceOperationNodes.ts +73 -0
  44. package/dist/ts-factory/getClientFactory.d.ts +0 -8
  45. package/dist/ts-factory/getClientFactory.d.ts.map +0 -1
  46. package/dist/ts-factory/getClientFactory.js +0 -92
  47. package/dist/ts-factory/getClientFactory.js.map +0 -1
  48. package/src/ts-factory/getClientFactory.ts +0 -344
package/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # @openapi-qraft/tanstack-query-react-plugin
2
2
 
3
+ ## 2.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - c71e7f9: ### Multiple API Client Generation
8
+
9
+ - Added support for generating multiple custom API client functions for a single OpenAPI specification with the new `--create-api-client-fn` option
10
+ - Improved modularity by allowing the creation of API clients with specific sets of services and callbacks
11
+ - Enhanced type inference by removing generic type parameters from `qraftAPIClient` function, making it more user-friendly
12
+
13
+ #### Breaking Changes
14
+
15
+ - Removed generic type parameters from `qraftAPIClient` function - types are now automatically inferred from arguments
16
+ - Updated return type of `createAPIClient` which may require changes to code that references this type in contexts or variables
17
+ - Added a migration guide and codemod script to help users update their code to the new API
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [c71e7f9]
22
+ - @openapi-qraft/plugin@2.6.0
23
+
24
+ ## 2.5.0
25
+
26
+ ### Minor Changes
27
+
28
+ - 8b7e980: Added support for generating query hooks for writable HTTP methods via `--queryable-write-operations` option.
29
+ - c9afb3b: Generate `null` type and return `null` data for the empty (204) responses instead of an empty object `{}`.
30
+
31
+ ### Patch Changes
32
+
33
+ - @openapi-qraft/plugin@2.5.0
34
+
3
35
  ## 2.5.0-beta.3
4
36
 
5
37
  ### Minor Changes
@@ -3,6 +3,7 @@ import { OpenAPIService } from '@openapi-qraft/plugin/lib/open-api/OpenAPIServic
3
3
  import { OutputOptions as OutputOptionsBase } from '@openapi-qraft/plugin/lib/OutputOptions';
4
4
  import { PredefinedParametersGlob } from '@openapi-qraft/plugin/lib/predefineSchemaParameters';
5
5
  import { Ora } from 'ora';
6
+ import { CreateAPIClientFnOptions } from './ts-factory/getIndexFactory.js';
6
7
  import { ServiceFactoryOptions } from './ts-factory/getServiceFactory.js';
7
8
  interface OutputOptions extends OutputOptionsBase {
8
9
  fileHeader: string | undefined;
@@ -10,6 +11,10 @@ interface OutputOptions extends OutputOptionsBase {
10
11
  explicitImportExtensions: '.js' | '.ts' | undefined;
11
12
  exportSchemaTypes: boolean | undefined;
12
13
  operationPredefinedParameters: Array<PredefinedParametersGlob> | undefined;
14
+ createApiClientFn: Array<[
15
+ functionName: string,
16
+ value: CreateAPIClientFnOptions
17
+ ]>;
13
18
  }
14
19
  export declare const generateCode: ({ spinner, services, serviceImports, output, }: {
15
20
  spinner: Ora;
@@ -1 +1 @@
1
- {"version":3,"file":"generateCode.d.ts","sourceRoot":"","sources":["../src/generateCode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AAE/F,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAK1B,OAAO,EAEL,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAG3C,UAAU,aAAc,SAAQ,iBAAiB;IAC/C,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IACpD,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,6BAA6B,EAAE,KAAK,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;CAC5E;AAED,eAAO,MAAM,YAAY,mDAKtB;IACD,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,cAAc,EAAE,qBAAqB,CAAC;IACtC,MAAM,EAAE,aAAa,CAAC;CACvB,6BAcA,CAAC"}
1
+ {"version":3,"file":"generateCode.d.ts","sourceRoot":"","sources":["../src/generateCode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AAE/F,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI1B,OAAO,EACL,wBAAwB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAG3C,UAAU,aAAc,SAAQ,iBAAiB;IAC/C,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IACpD,iBAAiB,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,6BAA6B,EAAE,KAAK,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;IAC3E,iBAAiB,EAAE,KAAK,CACtB;QAAC,YAAY,EAAE,MAAM;QAAE,KAAK,EAAE,wBAAwB;KAAC,CACxD,CAAC;CACH;AAED,eAAO,MAAM,YAAY,mDAKtB;IACD,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,cAAc,EAAE,qBAAqB,CAAC;IACtC,MAAM,EAAE,aAAa,CAAC;CACvB,6BAcA,CAAC"}
@@ -2,16 +2,16 @@ import { URL } from 'node:url';
2
2
  import { formatFileHeader } from '@openapi-qraft/plugin/lib/formatFileHeader';
3
3
  import c from 'ansi-colors';
4
4
  import { astToString } from './ts-factory/astToString.js';
5
- import { getClientFactory } from './ts-factory/getClientFactory.js';
5
+ import { getCreateAPIClientFactory } from './ts-factory/getCreateAPIClientFactory.js';
6
6
  import { getCreatePredefinedParametersRequestFnFactory } from './ts-factory/getCreatePredefinedParametersRequestFnFactory.js';
7
- import { getIndexFactory } from './ts-factory/getIndexFactory.js';
7
+ import { getIndexFactory, } from './ts-factory/getIndexFactory.js';
8
8
  import { getServiceFactory, } from './ts-factory/getServiceFactory.js';
9
9
  import { getServiceIndexFactory } from './ts-factory/getServiceIndexFactory.js';
10
10
  export const generateCode = async ({ spinner, services, serviceImports, output, }) => {
11
11
  return [
12
12
  ...(await generateServices(spinner, services, serviceImports, output)),
13
13
  ...(await generateServiceIndex(spinner, services, output)),
14
- ...(await generateClient(spinner, output)),
14
+ ...(await generateOperationClient(spinner, output)),
15
15
  ...(output.operationPredefinedParameters
16
16
  ? await generateCreatePredefinedParametersRequestFn(spinner, serviceImports, output)
17
17
  : []),
@@ -60,9 +60,7 @@ const generateServiceIndex = async (spinner, services, output) => {
60
60
  },
61
61
  ];
62
62
  try {
63
- const code = astToString(getServiceIndexFactory(services, {
64
- explicitImportExtensions: output.explicitImportExtensions,
65
- }));
63
+ const code = astToString(getServiceIndexFactory(services, output));
66
64
  serviceIndexFiles.push({
67
65
  file: new URL('index.ts', composeServicesDirPath(output)),
68
66
  code: formatFileHeader(output.fileHeader) + code,
@@ -75,25 +73,30 @@ const generateServiceIndex = async (spinner, services, output) => {
75
73
  spinner.succeed(c.green('Services index has been generated'));
76
74
  return serviceIndexFiles;
77
75
  };
78
- const generateClient = async (spinner, output) => {
79
- spinner.start('Generating client');
80
- const clientFiles = [];
76
+ const generateOperationClient = async (spinner, output) => {
77
+ spinner.start('Generating operation client');
78
+ const operationClientFiles = [];
81
79
  try {
82
- const code = astToString(getClientFactory({
83
- servicesDirName: output.servicesDirName,
84
- explicitImportExtensions: output.explicitImportExtensions,
85
- }));
86
- clientFiles.push({
87
- file: new URL('create-api-client.ts', output.dir),
88
- code: formatFileHeader(output.fileHeader) + code,
80
+ output.createApiClientFn.map(([functionName, value]) => {
81
+ const code = astToString(getCreateAPIClientFactory({
82
+ defaultClientCallbacks: value.callbacks,
83
+ defaultClientServices: value.services,
84
+ createAPIClientFnName: functionName,
85
+ servicesDirName: output.servicesDirName,
86
+ explicitImportExtensions: output.explicitImportExtensions,
87
+ }));
88
+ operationClientFiles.push({
89
+ file: new URL(`${value.filename?.[0] ?? functionName}.ts`, output.dir),
90
+ code: formatFileHeader(output.fileHeader) + code,
91
+ });
89
92
  });
90
93
  }
91
94
  catch (error) {
92
- spinner.fail(c.redBright('Error occurred during client generation'));
95
+ spinner.fail(c.redBright('Error occurred during operation client generation'));
93
96
  throw error;
94
97
  }
95
- spinner.succeed(c.green('Client has been generated'));
96
- return clientFiles;
98
+ spinner.succeed(c.green('Operation client has been generated'));
99
+ return operationClientFiles;
97
100
  };
98
101
  const generateCreatePredefinedParametersRequestFn = async (spinner, serviceImports, output) => {
99
102
  spinner.start('Generating "createPredefinedParametersRequestFn"');
@@ -121,8 +124,7 @@ const generateIndex = async (spinner, serviceImports, output) => {
121
124
  const indexFiles = [];
122
125
  try {
123
126
  const code = astToString(getIndexFactory({
124
- servicesDirName: output.servicesDirName,
125
- explicitImportExtensions: output.explicitImportExtensions,
127
+ ...output,
126
128
  openapiTypesImportPath: output.exportSchemaTypes
127
129
  ? serviceImports.openapiTypesImportPath
128
130
  : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"generateCode.js","sourceRoot":"","sources":["../src/generateCode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateCode.js","sourceRoot":"","sources":["../src/generateCode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ type OptionSubValue = [key: string, value: Record<string, string[]>];
2
+ /**
3
+ * Parse the following options syntax:
4
+ * ```
5
+ * --create-api-client-fn createAPIClient filename:create-api-client services:all callbacks:all
6
+ * --create-api-client-fn createUsersAPIClient services:users,profile callbacks:setQueryData,getQueryData,fetchQuery
7
+ * ```
8
+ */
9
+ export declare function parseOptionSubValues<T extends Array<OptionSubValue>>(value: string, previous: undefined | NoInfer<T>): T;
10
+ export {};
11
+ //# sourceMappingURL=parseOptionSubValues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseOptionSubValues.d.ts","sourceRoot":"","sources":["../../src/lib/parseOptionSubValues.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAErE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,KAAK,CAAC,cAAc,CAAC,EAClE,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,GAC/B,CAAC,CA6BH"}
@@ -0,0 +1,30 @@
1
+ import { CommanderError } from 'commander';
2
+ /**
3
+ * Parse the following options syntax:
4
+ * ```
5
+ * --create-api-client-fn createAPIClient filename:create-api-client services:all callbacks:all
6
+ * --create-api-client-fn createUsersAPIClient services:users,profile callbacks:setQueryData,getQueryData,fetchQuery
7
+ * ```
8
+ */
9
+ export function parseOptionSubValues(value, previous) {
10
+ const [subOptionName, subOptionValue] = value.split(':');
11
+ if (typeof subOptionValue !== 'undefined') {
12
+ const subOptionParsedValue = {
13
+ [subOptionName]: subOptionValue
14
+ .split(',')
15
+ .map((item) => item.trim())
16
+ .filter(Boolean),
17
+ };
18
+ const lastSubOptionItem = previous?.at(-1);
19
+ if (lastSubOptionItem) {
20
+ Object.assign(lastSubOptionItem[1], subOptionParsedValue);
21
+ return previous;
22
+ }
23
+ else {
24
+ throw new CommanderError(1, 'ERR_INVALID_SUB_OPTION_VALUE', `Invalid sub-option value: ${value}`);
25
+ }
26
+ }
27
+ const entry = [subOptionName, {}];
28
+ return (previous ? [...previous, entry] : [entry]);
29
+ }
30
+ //# sourceMappingURL=parseOptionSubValues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseOptionSubValues.js","sourceRoot":"","sources":["../../src/lib/parseOptionSubValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAI3C;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,QAAgC;IAEhC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEzD,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;QAC1C,MAAM,oBAAoB,GAAG;YAC3B,CAAC,aAAa,CAAC,EAAE,cAAc;iBAC5B,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1B,MAAM,CAAC,OAAO,CAAC;SACnB,CAAC;QAEF,MAAM,iBAAiB,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3C,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;YAE1D,OAAO,QAAa,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,cAAc,CACtB,CAAC,EACD,8BAA8B,EAC9B,6BAA6B,KAAK,EAAE,CACrC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,EAAE,CAAc,CAAC;IAE/C,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAM,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAIlF,eAAO,MAAM,MAAM,EAAE,kBAsDpB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAOlF,eAAO,MAAM,MAAM,EAAE,kBA0EpB,CAAC"}
package/dist/plugin.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { fileHeader } from '@openapi-qraft/plugin/lib/fileHeader';
2
2
  import { createPredefinedParametersGlobs, parseOperationPredefinedParametersOption, } from '@openapi-qraft/plugin/lib/predefineSchemaParameters';
3
- import { Option } from 'commander';
3
+ import { CommanderError, Option } from 'commander';
4
4
  import { generateCode } from './generateCode.js';
5
+ import { parseOptionSubValues } from './lib/parseOptionSubValues.js';
6
+ import { getAllAvailableCallbackNames } from './ts-factory/getCallbackNames.js';
5
7
  export const plugin = {
6
8
  setupCommand(command) {
7
9
  command
@@ -12,6 +14,18 @@ export const plugin = {
12
14
  .choices(['.js', '.ts']))
13
15
  .option('--export-openapi-types [bool]', "Add an export statement of the generated OpenAPI document types from the `./index.ts' file. Useful for sharing types within your project.", parseBooleanOption)
14
16
  .option('--queryable-write-operations [bool]', 'Enable generation of query hooks (useQuery, useSuspenseQuery, etc.) for writable HTTP methods like POST, PUT, PATCH. By default, only mutation hooks are generated for writable operations.', parseBooleanOption)
17
+ .addOption(new Option('--create-api-client-fn [name...]', 'Name, default callbacks and services of the generated `createAPIClient` function')
18
+ .argParser(parseCreateApiClientFn)
19
+ .default([
20
+ [
21
+ 'createAPIClient',
22
+ {
23
+ services: ['all'],
24
+ callbacks: ['all'],
25
+ filename: ['create-api-client'],
26
+ },
27
+ ],
28
+ ]))
15
29
  .action(async ({ spinner, output, args, services, schema }, resolve) => {
16
30
  return void (await generateCode({
17
31
  spinner,
@@ -29,6 +43,7 @@ export const plugin = {
29
43
  operationPredefinedParameters: args.operationPredefinedParameters
30
44
  ? createPredefinedParametersGlobs(schema, parseOperationPredefinedParametersOption(...args.operationPredefinedParameters))
31
45
  : undefined, // This value is inherited from the `--operation-predefined-parameters` option
46
+ createApiClientFn: normalizeCreateApiClientFn(args.createApiClientFn),
32
47
  },
33
48
  }).then(resolve));
34
49
  });
@@ -37,4 +52,50 @@ export const plugin = {
37
52
  function parseBooleanOption(arg) {
38
53
  return arg?.toLowerCase() !== 'false';
39
54
  }
55
+ function normalizeCreateApiClientFn(value) {
56
+ return value.map(([functionName, value]) => [
57
+ functionName,
58
+ {
59
+ services: value.services ?? ['all'],
60
+ callbacks: value.callbacks ?? ['all'],
61
+ filename: value.filename ?? [functionName],
62
+ },
63
+ ]);
64
+ }
65
+ function parseCreateApiClientFn(value, previous) {
66
+ const nextValue = parseOptionSubValues(value, Array.isArray(previous) ? previous : undefined);
67
+ const lastOptionConfig = nextValue.at(-1)?.[1];
68
+ if (!lastOptionConfig)
69
+ throw new CommanderError(1, 'ERR_INVALID_SUB_OPTION_VALUE', `Invalid sub-option value: ${value}`);
70
+ if ('callbacks' in lastOptionConfig &&
71
+ Array.isArray(lastOptionConfig.callbacks)) {
72
+ const availableCallbackNames = [
73
+ 'all',
74
+ 'none',
75
+ ...getAllAvailableCallbackNames(),
76
+ ];
77
+ const unknownCallback = lastOptionConfig.callbacks.find((callbackName) => !availableCallbackNames.includes(callbackName));
78
+ if (unknownCallback) {
79
+ throw new CommanderError(1, 'ERR_UNKNOWN_CALLBACK', `Unknown callback '${unknownCallback}'\n` +
80
+ `Available callbacks: ${availableCallbackNames.join(', ')}`);
81
+ }
82
+ }
83
+ if ('services' in lastOptionConfig &&
84
+ Array.isArray(lastOptionConfig.services)) {
85
+ if (lastOptionConfig.services.length > 1)
86
+ throw new CommanderError(1, 'ERR_MULTIPLE_SERVICES', `Multiple services are not supported`);
87
+ const availableServiceOptions = ['all', 'none'];
88
+ const unknownServiceOption = lastOptionConfig.services.find((serviceOption) => !availableServiceOptions.includes(serviceOption));
89
+ if (unknownServiceOption) {
90
+ throw new CommanderError(1, 'ERR_UNKNOWN_SERVICE_OPTION', `Unknown service option '${unknownServiceOption}'\n` +
91
+ `Available service options: ${availableServiceOptions.join(', ')}`);
92
+ }
93
+ }
94
+ if ('filename' in lastOptionConfig &&
95
+ Array.isArray(lastOptionConfig.filename)) {
96
+ if (lastOptionConfig.filename.length > 1)
97
+ throw new CommanderError(1, 'ERR_MULTIPLE_FILENAMES', `Provide only one filename for the --create-api-client-fn option`);
98
+ }
99
+ return nextValue;
100
+ }
40
101
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAClE,OAAO,EACL,+BAA+B,EAC/B,wCAAwC,GACzC,MAAM,qDAAqD,CAAC;AAG7D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,MAAM,GAAuB;IACxC,YAAY,CAAC,OAAqB;QAChC,OAAO;aACJ,WAAW,CACV,8DAA8D,CAC/D;aACA,cAAc,CACb,oCAAoC,EACpC,2DAA2D,CAC5D;aACA,SAAS,CACR,IAAI,MAAM,CACR,0CAA0C,EAC1C,6GAA6G,CAC9G;aACE,MAAM,CAAC,KAAK,CAAC;aACb,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAC3B;aACA,MAAM,CACL,+BAA+B,EAC/B,2IAA2I,EAC3I,kBAAkB,CACnB;aACA,MAAM,CACL,qCAAqC,EACrC,6LAA6L,EAC7L,kBAAkB,CACnB;aACA,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE;YACrE,OAAO,KAAK,CAAC,MAAM,YAAY,CAAC;gBAC9B,OAAO;gBACP,QAAQ;gBACR,cAAc,EAAE;oBACd,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;iBACxD;gBACD,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU;oBACzC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;oBACvD,eAAe,EAAE,UAAU;oBAC3B,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;oBAC1C,6BAA6B,EAAE,IAAI,CAAC,6BAA6B;wBAC/D,CAAC,CAAC,+BAA+B,CAC7B,MAAM,EACN,wCAAwC,CACtC,GAAG,IAAI,CAAC,6BAA6B,CACtC,CACF;wBACH,CAAC,CAAC,SAAS,EAAE,8EAA8E;iBAC9F;aACF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAC;AAEF,SAAS,kBAAkB,CAAC,GAAW;IACrC,OAAO,GAAG,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns a list of all available callback function names
3
+ */
4
+ export declare function getAllAvailableCallbackNames(): string[];
5
+ //# sourceMappingURL=getCallbackNames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCallbackNames.d.ts","sourceRoot":"","sources":["../../src/ts-factory/getCallbackNames.ts"],"names":[],"mappings":"AA+BA;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAUvD"}
@@ -0,0 +1,35 @@
1
+ import ts from 'typescript';
2
+ import { createServicesMutationOperationNodes, createServicesQueryOperationNodes, } from './serviceOperationNodes.js';
3
+ /**
4
+ * Extracts method names from interfaces in AST nodes
5
+ */
6
+ function extractMethodNamesFromInterfaces(nodes) {
7
+ const methodNames = [];
8
+ // Recursive traversal to find interfaces
9
+ function visitNode(node) {
10
+ if (ts.isInterfaceDeclaration(node)) {
11
+ // Extract method names from interface members
12
+ node.members.forEach((member) => {
13
+ if (ts.isMethodSignature(member) && ts.isIdentifier(member.name)) {
14
+ methodNames.push(member.name.text);
15
+ }
16
+ });
17
+ }
18
+ ts.forEachChild(node, visitNode);
19
+ }
20
+ nodes.forEach(visitNode);
21
+ return [...new Set(methodNames)]; // Remove duplicates
22
+ }
23
+ /**
24
+ * Returns a list of all available callback function names
25
+ */
26
+ export function getAllAvailableCallbackNames() {
27
+ const queryNodes = createServicesQueryOperationNodes({
28
+ omitOperationQueryFnNodes: true,
29
+ });
30
+ const mutationNodes = createServicesMutationOperationNodes();
31
+ const queryMethodNames = extractMethodNamesFromInterfaces(queryNodes);
32
+ const mutationMethodNames = extractMethodNamesFromInterfaces(mutationNodes);
33
+ return [...new Set([...queryMethodNames, ...mutationMethodNames])].sort();
34
+ }
35
+ //# sourceMappingURL=getCallbackNames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCallbackNames.js","sourceRoot":"","sources":["../../src/ts-factory/getCallbackNames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EACL,oCAAoC,EACpC,iCAAiC,GAClC,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,SAAS,gCAAgC,CAAC,KAAgB;IACxD,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,yCAAyC;IACzC,SAAS,SAAS,CAAC,IAAa;QAC9B,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,8CAA8C;YAC9C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9B,IAAI,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,oBAAoB;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,MAAM,UAAU,GAAG,iCAAiC,CAAC;QACnD,yBAAyB,EAAE,IAAI;KAChC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,oCAAoC,EAAE,CAAC;IAE7D,MAAM,gBAAgB,GAAG,gCAAgC,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,mBAAmB,GAAG,gCAAgC,CAAC,aAAa,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,11 @@
1
+ import ts from 'typescript';
2
+ type Options = {
3
+ servicesDirName: string;
4
+ explicitImportExtensions: '.js' | '.ts' | undefined;
5
+ defaultClientCallbacks: string[] | ['all'] | ['none'] | undefined;
6
+ defaultClientServices: string[] | ['all'] | ['none'] | undefined;
7
+ createAPIClientFnName: string;
8
+ };
9
+ export declare const getCreateAPIClientFactory: (options: Options) => ts.Statement[];
10
+ export {};
11
+ //# sourceMappingURL=getCreateAPIClientFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCreateAPIClientFactory.d.ts","sourceRoot":"","sources":["../../src/ts-factory/getCreateAPIClientFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,KAAK,OAAO,GAAG;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IACpD,sBAAsB,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAClE,qBAAqB,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IACjE,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,yBAAyB,YAAa,OAAO,mBAKzD,CAAC"}