@openapi-qraft/tanstack-query-react-plugin 2.5.0 → 2.6.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.
- package/CHANGELOG.md +29 -0
- package/dist/generateCode.d.ts +5 -0
- package/dist/generateCode.d.ts.map +1 -1
- package/dist/generateCode.js +23 -21
- package/dist/generateCode.js.map +1 -1
- package/dist/lib/parseOptionSubValues.d.ts +11 -0
- package/dist/lib/parseOptionSubValues.d.ts.map +1 -0
- package/dist/lib/parseOptionSubValues.js +30 -0
- package/dist/lib/parseOptionSubValues.js.map +1 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +68 -1
- package/dist/plugin.js.map +1 -1
- package/dist/ts-factory/getCallbackNames.d.ts +5 -0
- package/dist/ts-factory/getCallbackNames.d.ts.map +1 -0
- package/dist/ts-factory/getCallbackNames.js +35 -0
- package/dist/ts-factory/getCallbackNames.js.map +1 -0
- package/dist/ts-factory/getCreateAPIClientFactory.d.ts +11 -0
- package/dist/ts-factory/getCreateAPIClientFactory.d.ts.map +1 -0
- package/dist/ts-factory/getCreateAPIClientFactory.js +254 -0
- package/dist/ts-factory/getCreateAPIClientFactory.js.map +1 -0
- package/dist/ts-factory/getCreatePredefinedParametersRequestFnFactory.d.ts +1 -1
- package/dist/ts-factory/getIndexFactory.d.ts +7 -1
- package/dist/ts-factory/getIndexFactory.d.ts.map +1 -1
- package/dist/ts-factory/getIndexFactory.js +4 -4
- package/dist/ts-factory/getIndexFactory.js.map +1 -1
- package/dist/ts-factory/getServiceFactory.d.ts +1 -1
- package/dist/ts-factory/getServiceFactory.d.ts.map +1 -1
- package/dist/ts-factory/getServiceFactory.js +32 -84
- package/dist/ts-factory/getServiceFactory.js.map +1 -1
- package/dist/ts-factory/getServiceIndexFactory.d.ts +1 -1
- package/dist/ts-factory/serviceOperationNodes.d.ts +11 -0
- package/dist/ts-factory/serviceOperationNodes.d.ts.map +1 -0
- package/dist/ts-factory/serviceOperationNodes.js +68 -0
- package/dist/ts-factory/serviceOperationNodes.js.map +1 -0
- package/package.json +3 -3
- package/src/generateCode.ts +33 -25
- package/src/lib/parseOptionSubValues.ts +44 -0
- package/src/plugin.ts +134 -1
- package/src/ts-factory/getCallbackNames.ts +45 -0
- package/src/ts-factory/getCreateAPIClientFactory.ts +1014 -0
- package/src/ts-factory/getIndexFactory.ts +25 -11
- package/src/ts-factory/getServiceFactory.ts +126 -138
- package/src/ts-factory/serviceOperationNodes.ts +73 -0
- package/dist/ts-factory/getClientFactory.d.ts +0 -8
- package/dist/ts-factory/getClientFactory.d.ts.map +0 -1
- package/dist/ts-factory/getClientFactory.js +0 -92
- package/dist/ts-factory/getClientFactory.js.map +0 -1
- package/src/ts-factory/getClientFactory.ts +0 -344
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# @openapi-qraft/tanstack-query-react-plugin
|
|
2
2
|
|
|
3
|
+
## 2.6.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 8d6385a: Added `operationInvokeFn` as an allowed callback.
|
|
8
|
+
- 64e5860: Do not generate default `createAPIClient` when custom is provided.
|
|
9
|
+
- @openapi-qraft/plugin@2.6.1
|
|
10
|
+
|
|
11
|
+
## 2.6.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- c71e7f9: ### Multiple API Client Generation
|
|
16
|
+
|
|
17
|
+
- Added support for generating multiple custom API client functions for a single OpenAPI specification with the new `--create-api-client-fn` option
|
|
18
|
+
- Improved modularity by allowing the creation of API clients with specific sets of services and callbacks
|
|
19
|
+
- Enhanced type inference by removing generic type parameters from `qraftAPIClient` function, making it more user-friendly
|
|
20
|
+
|
|
21
|
+
#### Breaking Changes
|
|
22
|
+
|
|
23
|
+
- Removed generic type parameters from `qraftAPIClient` function - types are now automatically inferred from arguments
|
|
24
|
+
- Updated return type of `createAPIClient` which may require changes to code that references this type in contexts or variables
|
|
25
|
+
- Added a migration guide and codemod script to help users update their code to the new API
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- Updated dependencies [c71e7f9]
|
|
30
|
+
- @openapi-qraft/plugin@2.6.0
|
|
31
|
+
|
|
3
32
|
## 2.5.0
|
|
4
33
|
|
|
5
34
|
### Minor Changes
|
package/dist/generateCode.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/generateCode.js
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
|
79
|
-
spinner.start('Generating client');
|
|
80
|
-
const
|
|
76
|
+
const generateOperationClient = async (spinner, output) => {
|
|
77
|
+
spinner.start('Generating operation client');
|
|
78
|
+
const operationClientFiles = [];
|
|
81
79
|
try {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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('
|
|
96
|
-
return
|
|
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
|
-
|
|
125
|
-
explicitImportExtensions: output.explicitImportExtensions,
|
|
127
|
+
...output,
|
|
126
128
|
openapiTypesImportPath: output.exportSchemaTypes
|
|
127
129
|
? serviceImports.openapiTypesImportPath
|
|
128
130
|
: undefined,
|
package/dist/generateCode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateCode.js","sourceRoot":"","sources":["../src/generateCode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAK9E,OAAO,CAAC,MAAM,aAAa,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,
|
|
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"}
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,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,kBAiEpB,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,9 @@ 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(createApiClientFnDefault))
|
|
15
20
|
.action(async ({ spinner, output, args, services, schema }, resolve) => {
|
|
16
21
|
return void (await generateCode({
|
|
17
22
|
spinner,
|
|
@@ -29,6 +34,7 @@ export const plugin = {
|
|
|
29
34
|
operationPredefinedParameters: args.operationPredefinedParameters
|
|
30
35
|
? createPredefinedParametersGlobs(schema, parseOperationPredefinedParametersOption(...args.operationPredefinedParameters))
|
|
31
36
|
: undefined, // This value is inherited from the `--operation-predefined-parameters` option
|
|
37
|
+
createApiClientFn: normalizeCreateApiClientFn(args.createApiClientFn),
|
|
32
38
|
},
|
|
33
39
|
}).then(resolve));
|
|
34
40
|
});
|
|
@@ -37,4 +43,65 @@ export const plugin = {
|
|
|
37
43
|
function parseBooleanOption(arg) {
|
|
38
44
|
return arg?.toLowerCase() !== 'false';
|
|
39
45
|
}
|
|
46
|
+
function normalizeCreateApiClientFn(value) {
|
|
47
|
+
return value.map(([functionName, value]) => [
|
|
48
|
+
functionName,
|
|
49
|
+
{
|
|
50
|
+
services: value.services ?? ['all'],
|
|
51
|
+
callbacks: value.callbacks ?? ['all'],
|
|
52
|
+
filename: value.filename ?? [functionName],
|
|
53
|
+
},
|
|
54
|
+
]);
|
|
55
|
+
}
|
|
56
|
+
function parseCreateApiClientFn(value, previous) {
|
|
57
|
+
if (Array.isArray(previous) &&
|
|
58
|
+
JSON.stringify(previous) === JSON.stringify(createApiClientFnDefault)) {
|
|
59
|
+
previous = [];
|
|
60
|
+
}
|
|
61
|
+
const nextValue = parseOptionSubValues(value, Array.isArray(previous) ? previous : undefined);
|
|
62
|
+
const lastOptionConfig = nextValue.at(-1)?.[1];
|
|
63
|
+
if (!lastOptionConfig)
|
|
64
|
+
throw new CommanderError(1, 'ERR_INVALID_SUB_OPTION_VALUE', `Invalid sub-option value: ${value}`);
|
|
65
|
+
if ('callbacks' in lastOptionConfig &&
|
|
66
|
+
Array.isArray(lastOptionConfig.callbacks)) {
|
|
67
|
+
const availableCallbackNames = [
|
|
68
|
+
'all',
|
|
69
|
+
'none',
|
|
70
|
+
'operationInvokeFn',
|
|
71
|
+
...getAllAvailableCallbackNames(),
|
|
72
|
+
];
|
|
73
|
+
const unknownCallback = lastOptionConfig.callbacks.find((callbackName) => !availableCallbackNames.includes(callbackName));
|
|
74
|
+
if (unknownCallback) {
|
|
75
|
+
throw new CommanderError(1, 'ERR_UNKNOWN_CALLBACK', `Unknown callback '${unknownCallback}'\n` +
|
|
76
|
+
`Available callbacks: ${availableCallbackNames.join(', ')}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if ('services' in lastOptionConfig &&
|
|
80
|
+
Array.isArray(lastOptionConfig.services)) {
|
|
81
|
+
if (lastOptionConfig.services.length > 1)
|
|
82
|
+
throw new CommanderError(1, 'ERR_MULTIPLE_SERVICES', `Multiple services are not supported`);
|
|
83
|
+
const availableServiceOptions = ['all', 'none'];
|
|
84
|
+
const unknownServiceOption = lastOptionConfig.services.find((serviceOption) => !availableServiceOptions.includes(serviceOption));
|
|
85
|
+
if (unknownServiceOption) {
|
|
86
|
+
throw new CommanderError(1, 'ERR_UNKNOWN_SERVICE_OPTION', `Unknown service option '${unknownServiceOption}'\n` +
|
|
87
|
+
`Available service options: ${availableServiceOptions.join(', ')}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if ('filename' in lastOptionConfig &&
|
|
91
|
+
Array.isArray(lastOptionConfig.filename)) {
|
|
92
|
+
if (lastOptionConfig.filename.length > 1)
|
|
93
|
+
throw new CommanderError(1, 'ERR_MULTIPLE_FILENAMES', `Provide only one filename for the --create-api-client-fn option`);
|
|
94
|
+
}
|
|
95
|
+
return nextValue;
|
|
96
|
+
}
|
|
97
|
+
const createApiClientFnDefault = [
|
|
98
|
+
[
|
|
99
|
+
'createAPIClient',
|
|
100
|
+
{
|
|
101
|
+
services: ['all'],
|
|
102
|
+
callbacks: ['all'],
|
|
103
|
+
filename: ['create-api-client'],
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
];
|
|
40
107
|
//# sourceMappingURL=plugin.js.map
|
package/dist/plugin.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|