@openapi-qraft/cli 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @openapi-qraft/cli
2
2
 
3
+ ## 1.7.0
4
+
5
+ ## 1.6.0
6
+
7
+ ### Minor Changes
8
+
9
+ - 7a67dec: Added `--service-name-base <endpoint | tags>` option support
10
+ - 41e0c40: Added support for `--service-name-base <endpoint[<index>]>` option
11
+
3
12
  ## 1.5.0
4
13
 
5
14
  ### Minor Changes
package/README.md CHANGED
@@ -33,6 +33,7 @@ Options:
33
33
  --file-header <string> Header to be added to the generated file (eg: /* eslint-disable */)
34
34
  --postfix-services <string> Postfix to be added to the generated service name (eg: Service)
35
35
  --explicit-import-extensions All import statements will include explicit `.js` extensions. Ideal for projects using ECMAScript modules.
36
+ --service-name-base <endpoint | tags> Use OpenAPI Operation `endpoint` or `tags` as service names (default: "endpoint")
36
37
  -h, --help display help for command
37
38
  ```
38
39
 
@@ -78,6 +79,14 @@ the `schema.json` file.
78
79
  - Example: `--file-header '/* eslint-disable */'`
79
80
  - **`--postfix-services <string>`:** Customize the generated service names with a specific postfix _(optional, default: `Service`)_.
80
81
  - Example: `--postfix-services Endpoint` will generate `services/UserEndpoint.ts` instead of `services/UserService.ts`.
82
+ - **`--service-name-base <endpoint[<index>] | tags>`:** Use OpenAPI Operation `endpoint[<index>]` path part (e.g.: `/0/1/2`) or `tags` as the base name of the service. _(optional, default: `endpoint[0]`)_.
83
+ - Examples:
84
+ - `--service-name-base endpoint[0]` generates `services/FooService.ts`. from endpoint `/foo/bar/baz`
85
+ - `--service-name-base endpoint[1]` generates `services/BarService.ts`. from endpoint `/foo/bar/baz`
86
+ - `--service-name-base endpoint[2]` generates `services/BarService.ts`. from endpoint `/foo/bar` _(if the endpoint is shorter than the index, the last part is used)_
87
+ - `--service-name-base tags` will generate services based on the OpenAPI Operation tags instead of the endpoint.
88
+ - If multiple tags are present for the operation, similar services will be created for each tag. Operation with `tags: [Foo, Bar]` will generate `services/FooService.ts` and `services/BarService.ts`.
89
+ - If there are no tags for the operation, the services will be created under the `default` tag. Operation with empty `tags: []` will generate `services/DefaultService.ts`.
81
90
  - **`--explicit-import-extensions`:** Include explicit `.js` extensions in all import statements. Ideal for projects
82
91
  using ECMAScript modules when TypeScript's _--moduleResolution_ is `node16` or `nodenext` _(optional)_.
83
92
  - **`-h, --help`:** Display help for the command (optional).
package/dist/bin.js CHANGED
@@ -16,6 +16,7 @@ program
16
16
  .option('--file-header <string>', 'Header to be added to the generated file (eg: /* eslint-disable */)')
17
17
  .option('--postfix-services <string>', 'Postfix to be added to the generated service name (eg: Service)')
18
18
  .option('--explicit-import-extensions', 'All import statements will include explicit `.js` extensions. Ideal for projects using ECMAScript modules.')
19
+ .option('--service-name-base <endpoint[<index>] | tags>', 'Use OpenAPI Operation `endpoint[<index>]` path part (e.g.: "/0/1/2") or `tags` as the base name of the service.', 'endpoint[0]')
19
20
  .action(async (input, args) => {
20
21
  const { version: packageVersion, name: packageName } = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
21
22
  if (args.version) {
@@ -49,6 +50,7 @@ program
49
50
  postfixServices: args.postfixServices,
50
51
  explicitImportExtensions: args.explicitImportExtensions,
51
52
  servicesDirName: 'services',
53
+ serviceNameBase: args.serviceNameBase,
52
54
  },
53
55
  }).catch((error) => {
54
56
  if (error instanceof Error)
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,CAAC,MAAM,aAAa,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO;KACJ,WAAW,CACV,qFAAqF,CACtF;KACA,QAAQ,CAAC,SAAS,EAAE,iDAAiD,EAAE,IAAI,CAAC;KAC5E,cAAc,CACb,yBAAyB,EACzB,yCAAyC,CAC1C;KACA,cAAc,CACb,oCAAoC,EAAE,oEAAoE;AAC1G,0DAA0D,CAC3D;KACA,MAAM,CAAC,cAAc,EAAE,mDAAmD,CAAC;KAC3E,MAAM,CACL,kCAAkC,EAClC,0HAA0H,CAC3H;KACA,MAAM,CACL,yCAAyC,EACzC,iCAAiC,EACjC,sBAAsB,CACvB;KACA,MAAM,CACL,wBAAwB,EACxB,qEAAqE,CACtE;KACA,MAAM,CACL,6BAA6B,EAC7B,iEAAiE,CAClE;KACA,MAAM,CACL,8BAA8B,EAC9B,4GAA4G,CAC7G;KACA,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAC5B,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAC/D,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACrE,CAAC;IAEF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,WAAW,IAAI,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,KAAK;QAClB,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAElB,IAAI,MAAM,KAAK,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CACX,CAAC,CAAC,GAAG,CACH,0GAA0G,CAC3G,CACF,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc;QACtC,CAAC,CAAC,IAAI,CAAC,cAAc;aAChB,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACvE,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,oBAAoB,CAAC;QACzB,MAAM;QACN,cAAc,EAAE;YACd,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;YAC7D,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACpD;QACD,YAAY;QACZ,MAAM,EAAE;YACN,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU;YACzC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,eAAe,EAAE,UAAU;SAC5B;KACF,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,IAAI,KAAK,YAAY,KAAK;YACxB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,16 @@ export type OpenAPISchemaType = {
2
2
  paths: {
3
3
  [path: string]: {
4
4
  [method: string]: {
5
+ tags?: string[];
5
6
  description?: string;
6
7
  summary?: string;
7
8
  operationId?: string;
8
- parameters?: Record<string, never>;
9
+ parameters?: Record<string, any>;
9
10
  deprecated?: boolean;
10
11
  requestBody?: {
11
12
  content: {
12
13
  [contentType: string]: {
13
- schema: never;
14
+ schema: any;
14
15
  };
15
16
  };
16
17
  };
@@ -19,7 +20,7 @@ export type OpenAPISchemaType = {
19
20
  description: string;
20
21
  content: {
21
22
  [contentType: string]: {
22
- schema: never;
23
+ schema: any;
23
24
  };
24
25
  };
25
26
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Convert the input value to a correct service name. This converts
2
+ * Convert the input value to the correct service name. This converts
3
3
  * the input string to PascalCase.
4
4
  */
5
5
  export declare const getServiceName: (value: string) => string;
@@ -1,6 +1,6 @@
1
1
  import camelCase from 'camelcase';
2
2
  /**
3
- * Convert the input value to a correct service name. This converts
3
+ * Convert the input value to the correct service name. This converts
4
4
  * the input string to PascalCase.
5
5
  */
6
6
  export const getServiceName = (value) => {
@@ -1 +1 @@
1
- {"version":3,"file":"getServiceName.js","sourceRoot":"","sources":["../../../src/lib/open-api/getServiceName.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE;IACpD,MAAM,KAAK,GAAG,KAAK;SACd,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,IAAI,EAAE,CAAC;IACZ,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC,CAAC"}
1
+ {"version":3,"file":"getServiceName.js","sourceRoot":"","sources":["../../../src/lib/open-api/getServiceName.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE;IACtD,MAAM,KAAK,GAAG,KAAK;SAChB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,IAAI,EAAE,CAAC;IAEV,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type ServiceBaseNameByEndpointOption = `endpoint[${number}]`;
2
+ export declare const getServiceNamesByOperationEndpoint: (endpoint: string, format: ServiceBaseNameByEndpointOption, fallbackBaseName: string) => [string];
3
+ export declare const getServiceBaseNameByOperationEndpoint: (endpoint: string, format: ServiceBaseNameByEndpointOption) => string | undefined;
4
+ export declare const getEndpointPartIndex: (endpointOption: ServiceBaseNameByEndpointOption) => number;
@@ -0,0 +1,30 @@
1
+ import { getServiceName } from './getServiceName.js';
2
+ export const getServiceNamesByOperationEndpoint = (endpoint, format, fallbackBaseName) => {
3
+ return [
4
+ getServiceName(getServiceBaseNameByOperationEndpoint(endpoint, format) ??
5
+ fallbackBaseName),
6
+ ];
7
+ };
8
+ export const getServiceBaseNameByOperationEndpoint = (endpoint, format) => {
9
+ const endpointParts = endpoint.split('/').filter(Boolean);
10
+ for (let endpointIndex = getEndpointPartIndex(format); endpointIndex >= 0; endpointIndex--) {
11
+ const endpointPart = endpointParts[endpointIndex];
12
+ if (endpointPart)
13
+ return endpointPart;
14
+ }
15
+ };
16
+ export const getEndpointPartIndex = (endpointOption) => {
17
+ const startBracketString = 'endpoint[';
18
+ const endpointIndexStart = endpointOption.indexOf(startBracketString);
19
+ if (endpointIndexStart === -1)
20
+ throw new Error(`Expected endpoint to start with '${startBracketString}' but got: '${endpointOption}'`);
21
+ const endBracketString = ']';
22
+ const endpointIndexEnd = endpointOption.indexOf(endBracketString, endpointIndexStart);
23
+ if (endpointIndexEnd === -1)
24
+ throw new Error(`Expected endpoint to end with '${endBracketString}' but got: '${endpointOption}'`);
25
+ const endpointIndex = parseInt(endpointOption.slice(endpointIndexStart + startBracketString.length, endpointIndexEnd));
26
+ if (!isFinite(endpointIndex))
27
+ throw new Error(`Expected endpoint index to be a number but got: '${endpointOption}'`);
28
+ return endpointIndex;
29
+ };
30
+ //# sourceMappingURL=getServiceNamesByOperationEndpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getServiceNamesByOperationEndpoint.js","sourceRoot":"","sources":["../../../src/lib/open-api/getServiceNamesByOperationEndpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,QAAgB,EAChB,MAAuC,EACvC,gBAAwB,EACd,EAAE;IACZ,OAAO;QACL,cAAc,CACZ,qCAAqC,CAAC,QAAQ,EAAE,MAAM,CAAC;YACrD,gBAAgB,CACnB;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAG,CACnD,QAAgB,EAChB,MAAuC,EACnB,EAAE;IACtB,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE1D,KACE,IAAI,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,EAChD,aAAa,IAAI,CAAC,EAClB,aAAa,EAAE,EACf,CAAC;QACD,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,YAAY;YAAE,OAAO,YAAY,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,cAA+C,EAC/C,EAAE;IACF,MAAM,kBAAkB,GAAG,WAAW,CAAC;IAEvC,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEtE,IAAI,kBAAkB,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,oCAAoC,kBAAkB,eAAe,cAAc,GAAG,CACvF,CAAC;IAEJ,MAAM,gBAAgB,GAAG,GAAG,CAAC;IAC7B,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAC7C,gBAAgB,EAChB,kBAAkB,CACnB,CAAC;IAEF,IAAI,gBAAgB,KAAK,CAAC,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,kCAAkC,gBAAgB,eAAe,cAAc,GAAG,CACnF,CAAC;IAEJ,MAAM,aAAa,GAAG,QAAQ,CAC5B,cAAc,CAAC,KAAK,CAClB,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,EAC9C,gBAAgB,CACjB,CACF,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,oDAAoD,cAAc,GAAG,CACtE,CAAC;IAEJ,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const getServiceNamesByOperationTags: (tags: (string | number | null | undefined)[] | undefined, fallbackBaseName: string) => string[];
@@ -0,0 +1,11 @@
1
+ import { getServiceName } from './getServiceName.js';
2
+ export const getServiceNamesByOperationTags = (tags, fallbackBaseName) => {
3
+ const filteredTags = tags
4
+ ?.filter((tag) => typeof tag === 'string')
5
+ .map(getServiceName)
6
+ .filter(Boolean);
7
+ return filteredTags?.length
8
+ ? filteredTags
9
+ : [getServiceName(fallbackBaseName)];
10
+ };
11
+ //# sourceMappingURL=getServiceNamesByOperationTags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getServiceNamesByOperationTags.js","sourceRoot":"","sources":["../../../src/lib/open-api/getServiceNamesByOperationTags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,IAAwD,EACxD,gBAAwB,EACd,EAAE;IACZ,MAAM,YAAY,GAAG,IAAI;QACvB,EAAE,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;SACxD,GAAG,CAAC,cAAc,CAAC;SACnB,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,OAAO,YAAY,EAAE,MAAM;QACzB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC"}
@@ -1,4 +1,6 @@
1
- import type { OpenAPISchemaType } from './OpenAPISchemaType.ts';
1
+ import { ServiceBaseNameByEndpointOption } from './getServiceNamesByOperationEndpoint.js';
2
+ import type { OpenAPISchemaType } from './OpenAPISchemaType.js';
3
+ export type ServiceBaseName = ServiceBaseNameByEndpointOption | 'tags';
2
4
  export type Service = {
3
5
  name: string;
4
6
  variableName: string;
@@ -16,10 +18,11 @@ export type ServiceOperation = {
16
18
  mediaType: string | undefined;
17
19
  errors: Record<string, string | undefined>;
18
20
  success: Record<string, string | undefined>;
19
- parameters: Record<string, never> | undefined;
21
+ parameters: Record<string, any> | undefined;
20
22
  };
21
- export declare const getServices: (openApiJson: OpenAPISchemaType, { postfixServices }?: {
23
+ export declare const getServices: (openApiJson: OpenAPISchemaType, { postfixServices, serviceNameBase, }?: {
22
24
  postfixServices?: string | undefined;
25
+ serviceNameBase?: ServiceBaseName | undefined;
23
26
  }, servicesGlob?: string[]) => Service[];
24
27
  /**
25
28
  * Create a function to match service paths
@@ -3,8 +3,9 @@ import * as console from 'console';
3
3
  import micromatch from 'micromatch';
4
4
  import { getContentMediaType } from './getContent.js';
5
5
  import { getOperationName } from './getOperationName.js';
6
- import { getServiceName } from './getServiceName.js';
7
- export const getServices = (openApiJson, { postfixServices = 'Service' } = {}, servicesGlob = ['**']) => {
6
+ import { getServiceNamesByOperationEndpoint, } from './getServiceNamesByOperationEndpoint.js';
7
+ import { getServiceNamesByOperationTags } from './getServiceNamesByOperationTags.js';
8
+ export const getServices = (openApiJson, { postfixServices = 'Service', serviceNameBase = 'endpoint[0]', } = {}, servicesGlob = ['**']) => {
8
9
  const paths = openApiJson.paths;
9
10
  const services = new Map();
10
11
  const isPathMatch = createServicePathMatch(servicesGlob);
@@ -21,10 +22,10 @@ export const getServices = (openApiJson, { postfixServices = 'Service' } = {}, s
21
22
  continue;
22
23
  }
23
24
  const methodOperation = paths[path][method];
24
- const serviceName = getServiceName(path.split('/')[1]);
25
25
  const { success, errors } = Object.entries(methodOperation.responses).reduce((acc, [statusCode, response]) => {
26
- if (!response.content || typeof response.content !== 'object')
26
+ if (!response.content || typeof response.content !== 'object') {
27
27
  return acc;
28
+ }
28
29
  const statusType = statusCode !== 'default' && // See "default" response https://swagger.io/docs/specification/describing-responses/#default
29
30
  Number(statusCode) < 400
30
31
  ? 'success'
@@ -37,34 +38,42 @@ export const getServices = (openApiJson, { postfixServices = 'Service' } = {}, s
37
38
  },
38
39
  };
39
40
  }, {});
40
- if (!services.has(serviceName)) {
41
- services.set(serviceName, {
42
- name: camelCase(serviceName),
43
- variableName: `${camelCase(serviceName, {
44
- preserveConsecutiveUppercase: false,
45
- })}${postfixServices}`,
46
- typeName: `${serviceName}${postfixServices}`,
47
- fileBaseName: `${serviceName}${postfixServices}`,
48
- operations: [],
41
+ const serviceFallbackBaseName = 'Default';
42
+ const serviceNames = serviceNameBase === 'tags'
43
+ ? getServiceNamesByOperationTags(paths[path][method]?.tags, serviceFallbackBaseName)
44
+ : getServiceNamesByOperationEndpoint(path, serviceNameBase, serviceFallbackBaseName);
45
+ for (const name of serviceNames) {
46
+ if (!services.has(name)) {
47
+ services.set(name, {
48
+ name: camelCase(name),
49
+ variableName: `${camelCase(name, {
50
+ preserveConsecutiveUppercase: false,
51
+ })}${postfixServices}`,
52
+ typeName: `${name}${postfixServices}`,
53
+ fileBaseName: `${name}${postfixServices}`,
54
+ operations: [],
55
+ });
56
+ }
57
+ }
58
+ for (const name of serviceNames) {
59
+ services.get(name).operations.push({
60
+ method,
61
+ path,
62
+ errors,
63
+ name: getOperationName(path, method, methodOperation.operationId),
64
+ description: methodOperation.description,
65
+ summary: methodOperation.summary,
66
+ deprecated: methodOperation.deprecated,
67
+ parameters: Array.isArray(methodOperation.parameters) &&
68
+ !methodOperation.parameters.length
69
+ ? undefined
70
+ : methodOperation.parameters,
71
+ mediaType: methodOperation.requestBody?.content
72
+ ? getContentMediaType(methodOperation.requestBody.content)
73
+ : undefined,
74
+ success: success,
49
75
  });
50
76
  }
51
- services.get(serviceName).operations.push({
52
- method,
53
- path,
54
- errors,
55
- name: getOperationName(path, method, methodOperation.operationId),
56
- description: methodOperation.description,
57
- summary: methodOperation.summary,
58
- deprecated: methodOperation.deprecated,
59
- parameters: Array.isArray(methodOperation.parameters) &&
60
- !methodOperation.parameters.length
61
- ? undefined
62
- : methodOperation.parameters,
63
- mediaType: methodOperation.requestBody?.content
64
- ? getContentMediaType(methodOperation.requestBody.content)
65
- : undefined,
66
- success: success,
67
- });
68
77
  }
69
78
  }
70
79
  return Array.from(services.values());
@@ -1 +1 @@
1
- {"version":3,"file":"getServices.js","sourceRoot":"","sources":["../../../src/lib/open-api/getServices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getServices.js","sourceRoot":"","sources":["../../../src/lib/open-api/getServices.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  /// <reference types="node" resolution-mode="require"/>
4
4
  import { Readable } from 'node:stream';
5
5
  import { OpenAPI3 } from 'openapi-typescript';
6
+ import { ServiceBaseName } from './lib/open-api/getServices.js';
6
7
  import { ServiceImportsFactoryOptions } from './lib/ts-factory/getServiceFactory.js';
7
8
  type OutputOptions = {
8
9
  fileHeader?: string;
@@ -11,6 +12,7 @@ type OutputOptions = {
11
12
  postfixServices?: string;
12
13
  explicitImportExtensions?: boolean;
13
14
  servicesDirName: string;
15
+ serviceNameBase?: ServiceBaseName;
14
16
  };
15
17
  export declare const writeOpenAPIServices: ({ source, servicesGlob, serviceImports, output, }: {
16
18
  source: string | URL | OpenAPI3 | Readable | Buffer;
@@ -2,7 +2,7 @@ import c from 'ansi-colors';
2
2
  import fs from 'node:fs';
3
3
  import { resolve } from 'node:path';
4
4
  import ora from 'ora';
5
- import { getServices } from './lib/open-api/getServices.js';
5
+ import { getServices, } from './lib/open-api/getServices.js';
6
6
  import { readSchema } from './lib/open-api/readSchema.js';
7
7
  import { astToString } from './lib/ts-factory/astToString.js';
8
8
  import { getClientFactory } from './lib/ts-factory/getClientFactory.js';
@@ -1 +1 @@
1
- {"version":3,"file":"writeOpenAPIServices.js","sourceRoot":"","sources":["../src/writeOpenAPIServices.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,aAAa,CAAC;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAW,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EACL,iBAAiB,GAElB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAWpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,MAAM,EACN,YAAY,EACZ,cAAc,EACd,MAAM,GAMP,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAE3D,MAAM,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EACzB,QAAmB,EACnB,cAA4C,EAC5C,MAAqB,EACrB,EAAE;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAEhE,IAAI,MAAM,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE;YAChC,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IAEL,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAE3E,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,IAAI,GACR,aAAa,CAAC,MAAM,CAAC;gBACrB,WAAW,CACT,iBAAiB,CACf;oBACE,QAAQ;oBACR,YAAY;iBACb,EACD,UAAU,EACV,cAAc,CACf,CACF,CAAC;YAEJ,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,OAAO,CAAC,WAAW,EAAE,GAAG,YAAY,KAAK,CAAC,EAC1C,IAAI,CACL,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,SAAS,CACT,yBAAyB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAC9D,CACF,CAAC;YAEF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAC7B,QAAmB,EACnB,MAAqB,EACrB,EAAE;IACF,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,IAAI,GACR,aAAa,CAAC,MAAM,CAAC;YACrB,WAAW,CACT,sBAAsB,CAAC,QAAQ,EAAE;gBAC/B,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;aACnE,CAAC,CACH,CAAC;QAEJ,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,EACvD,IAAI,CACL,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,SAAS,CAAC,iDAAiD,CAAC,CAC/D,CAAC;QAEF,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAqB,EAAE,EAAE;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,IAAI,GACR,aAAa,CAAC,MAAM,CAAC;YACrB,WAAW,CACT,gBAAgB,CAAC;gBACf,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;aACnE,CAAC,CACH,CAAC;QAEJ,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,sBAAsB,CAAC,EAC3C,IAAI,CACL,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAErE,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,EAAE,MAAqB,EAAE,EAAE;IACjD,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,IAAI,GACR,aAAa,CAAC,MAAM,CAAC;YACrB,WAAW,CACT,eAAe,CAAC;gBACd,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;aACnE,CAAC,CACH,CAAC;QAEJ,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAEpE,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,EAAE,UAAU,EAAqC,EAAE,EAAE;IAC1E,OAAO,UAAU,IAAI,GAAG,UAAU,IAAI,CAAC;AACzC,CAAC,CAAC"}
1
+ {"version":3,"file":"writeOpenAPIServices.js","sourceRoot":"","sources":["../src/writeOpenAPIServices.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,aAAa,CAAC;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EACL,WAAW,GAGZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EACL,iBAAiB,GAElB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAYpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,EACzC,MAAM,EACN,YAAY,EACZ,cAAc,EACd,MAAM,GAMP,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAE3D,MAAM,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EACzB,QAAmB,EACnB,cAA4C,EAC5C,MAAqB,EACrB,EAAE;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;IAEhE,IAAI,MAAM,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE;YAChC,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IAEL,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAE3E,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAEvD,IAAI,CAAC;YACH,MAAM,IAAI,GACR,aAAa,CAAC,MAAM,CAAC;gBACrB,WAAW,CACT,iBAAiB,CACf;oBACE,QAAQ;oBACR,YAAY;iBACb,EACD,UAAU,EACV,cAAc,CACf,CACF,CAAC;YAEJ,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,OAAO,CAAC,WAAW,EAAE,GAAG,YAAY,KAAK,CAAC,EAC1C,IAAI,CACL,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,SAAS,CACT,yBAAyB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAC9D,CACF,CAAC;YAEF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAC7B,QAAmB,EACnB,MAAqB,EACrB,EAAE;IACF,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,IAAI,GACR,aAAa,CAAC,MAAM,CAAC;YACrB,WAAW,CACT,sBAAsB,CAAC,QAAQ,EAAE;gBAC/B,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;aACnE,CAAC,CACH,CAAC;QAEJ,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,EACvD,IAAI,CACL,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,SAAS,CAAC,iDAAiD,CAAC,CAC/D,CAAC;QAEF,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,EAAE,MAAqB,EAAE,EAAE;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,IAAI,GACR,aAAa,CAAC,MAAM,CAAC;YACrB,WAAW,CACT,gBAAgB,CAAC;gBACf,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;aACnE,CAAC,CACH,CAAC;QAEJ,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CACzB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,sBAAsB,CAAC,EAC3C,IAAI,CACL,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAErE,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,EAAE,MAAqB,EAAE,EAAE;IACjD,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,IAAI,GACR,aAAa,CAAC,MAAM,CAAC;YACrB,WAAW,CACT,eAAe,CAAC;gBACd,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;aACnE,CAAC,CACH,CAAC;QAEJ,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC,CAAC;QAEpE,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,EAAE,UAAU,EAAqC,EAAE,EAAE;IAC1E,OAAO,UAAU,IAAI,GAAG,UAAU,IAAI,CAAC;AACzC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@openapi-qraft/cli",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "description": "CLI for generating typed Tanstack Query React Hooks and services from OpenAPI Schemas, improving type safety in React apps",
5
5
  "scripts": {
6
6
  "build": "rimraf dist/ && tsc --project tsconfig.build.json",
7
7
  "dev": "yarn build --watch",
8
- "test": "vitest run"
8
+ "test": "vitest run",
9
+ "typecheck": "tsc --noEmit"
9
10
  },
10
11
  "type": "module",
11
12
  "bin": {