@openapi-qraft/cli 1.7.0 → 1.9.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 (59) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +109 -43
  3. package/bin.mjs +3 -1
  4. package/dist/bin.d.ts +13 -1
  5. package/dist/bin.d.ts.map +1 -0
  6. package/dist/bin.js +71 -59
  7. package/dist/bin.js.map +1 -1
  8. package/dist/builtInPlugins.d.ts +5 -0
  9. package/dist/builtInPlugins.d.ts.map +1 -0
  10. package/dist/builtInPlugins.js +5 -0
  11. package/dist/builtInPlugins.js.map +1 -0
  12. package/package.json +16 -12
  13. package/src/bin.ts +99 -0
  14. package/src/builtInPlugins.ts +6 -0
  15. package/dist/lib/fileHeader.d.ts +0 -1
  16. package/dist/lib/fileHeader.js +0 -5
  17. package/dist/lib/fileHeader.js.map +0 -1
  18. package/dist/lib/open-api/OpenAPISchemaType.d.ts +0 -31
  19. package/dist/lib/open-api/OpenAPISchemaType.js +0 -2
  20. package/dist/lib/open-api/OpenAPISchemaType.js.map +0 -1
  21. package/dist/lib/open-api/getContent.d.ts +0 -5
  22. package/dist/lib/open-api/getContent.js +0 -23
  23. package/dist/lib/open-api/getContent.js.map +0 -1
  24. package/dist/lib/open-api/getOperationName.d.ts +0 -6
  25. package/dist/lib/open-api/getOperationName.js +0 -20
  26. package/dist/lib/open-api/getOperationName.js.map +0 -1
  27. package/dist/lib/open-api/getServiceName.d.ts +0 -5
  28. package/dist/lib/open-api/getServiceName.js +0 -13
  29. package/dist/lib/open-api/getServiceName.js.map +0 -1
  30. package/dist/lib/open-api/getServiceNamesByOperationEndpoint.d.ts +0 -4
  31. package/dist/lib/open-api/getServiceNamesByOperationEndpoint.js +0 -30
  32. package/dist/lib/open-api/getServiceNamesByOperationEndpoint.js.map +0 -1
  33. package/dist/lib/open-api/getServiceNamesByOperationTags.d.ts +0 -1
  34. package/dist/lib/open-api/getServiceNamesByOperationTags.js +0 -11
  35. package/dist/lib/open-api/getServiceNamesByOperationTags.js.map +0 -1
  36. package/dist/lib/open-api/getServices.d.ts +0 -32
  37. package/dist/lib/open-api/getServices.js +0 -112
  38. package/dist/lib/open-api/getServices.js.map +0 -1
  39. package/dist/lib/open-api/readSchema.d.ts +0 -7
  40. package/dist/lib/open-api/readSchema.js +0 -15
  41. package/dist/lib/open-api/readSchema.js.map +0 -1
  42. package/dist/lib/ts-factory/astToString.d.ts +0 -8
  43. package/dist/lib/ts-factory/astToString.js +0 -14
  44. package/dist/lib/ts-factory/astToString.js.map +0 -1
  45. package/dist/lib/ts-factory/getClientFactory.d.ts +0 -7
  46. package/dist/lib/ts-factory/getClientFactory.js +0 -82
  47. package/dist/lib/ts-factory/getClientFactory.js.map +0 -1
  48. package/dist/lib/ts-factory/getIndexFactory.d.ts +0 -5
  49. package/dist/lib/ts-factory/getIndexFactory.js +0 -17
  50. package/dist/lib/ts-factory/getIndexFactory.js.map +0 -1
  51. package/dist/lib/ts-factory/getServiceFactory.d.ts +0 -10
  52. package/dist/lib/ts-factory/getServiceFactory.js +0 -120
  53. package/dist/lib/ts-factory/getServiceFactory.js.map +0 -1
  54. package/dist/lib/ts-factory/getServiceIndexFactory.d.ts +0 -7
  55. package/dist/lib/ts-factory/getServiceIndexFactory.js +0 -26
  56. package/dist/lib/ts-factory/getServiceIndexFactory.js.map +0 -1
  57. package/dist/writeOpenAPIServices.d.ts +0 -23
  58. package/dist/writeOpenAPIServices.js +0 -97
  59. package/dist/writeOpenAPIServices.js.map +0 -1
@@ -1,120 +0,0 @@
1
- import ts from 'typescript';
2
- const SERVICE_OPERATION_QUERY = 'ServiceOperationQuery';
3
- const SERVICE_OPERATION_MUTATION = 'ServiceOperationMutation';
4
- const factory = ts.factory;
5
- export const getServiceFactory = (service, operations, { openapiTypesImportPath, operationGenericsImportPath, }) => {
6
- return [
7
- getOpenAPISchemaImportsFactory(openapiTypesImportPath),
8
- getServiceOperationGenericsPathImportsFactory(operationGenericsImportPath, operations),
9
- getServiceInterfaceFactory(service, operations),
10
- getServiceVariableFactory(service, operations),
11
- ];
12
- };
13
- const getOpenAPISchemaImportsFactory = (schemaTypesPath) => {
14
- const factory = ts.factory;
15
- return factory.createImportDeclaration(undefined, factory.createImportClause(true, undefined, factory.createNamedImports([
16
- factory.createImportSpecifier(false, undefined, factory.createIdentifier('paths')),
17
- ])), factory.createStringLiteral(schemaTypesPath));
18
- };
19
- const getServiceOperationGenericsPathImportsFactory = (operationGenericsPath, operations) => {
20
- const factory = ts.factory;
21
- const queryMethods = ['get', 'head', 'options'];
22
- return factory.createImportDeclaration(undefined, factory.createImportClause(true, undefined, factory.createNamedImports([
23
- operations.some((operation) => queryMethods.some((method) => method === operation.method))
24
- ? factory.createImportSpecifier(false, undefined, factory.createIdentifier('ServiceOperationQuery'))
25
- : null,
26
- operations.some((operation) => !queryMethods.some((method) => method === operation.method))
27
- ? factory.createImportSpecifier(false, undefined, factory.createIdentifier('ServiceOperationMutation'))
28
- : null,
29
- ].filter((node) => Boolean(node)))), factory.createStringLiteral(operationGenericsPath));
30
- };
31
- const getServiceInterfaceFactory = ({ typeName }, operations) => {
32
- return factory.createInterfaceDeclaration([factory.createToken(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier(typeName), undefined, undefined, operations.map(getServiceInterfaceOperationFactory));
33
- };
34
- const getServiceInterfaceOperationFactory = (operation) => {
35
- const node = factory.createPropertySignature(undefined, factory.createIdentifier(operation.name), undefined, factory.createTypeReferenceNode(factory.createIdentifier(operation.method === 'get'
36
- ? SERVICE_OPERATION_QUERY
37
- : SERVICE_OPERATION_MUTATION), [
38
- getOperationSchemaFactory(operation),
39
- operation.method !== 'get' ? getOperationBodyFactory(operation) : null,
40
- getOperationResponseFactory(operation, 'success'),
41
- getOperationParametersFactory(operation),
42
- getOperationResponseFactory(operation, 'errors'),
43
- ].filter((node) => Boolean(node))));
44
- const comment = createMultilineComment([
45
- operation.deprecated ? '@deprecated' : null,
46
- operation.summary ? `@summary ${operation.summary}` : null,
47
- operation.description ? `@description ${operation.description}` : null,
48
- ].filter((comment) => Boolean(comment)));
49
- if (comment)
50
- ts.addSyntheticLeadingComment(node, ts.SyntaxKind.MultiLineCommentTrivia, comment, true);
51
- return node;
52
- };
53
- const getOperationSchemaFactory = (operation) => {
54
- return factory.createTypeLiteralNode([
55
- factory.createPropertySignature(undefined, factory.createIdentifier('method'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(operation.method))),
56
- factory.createPropertySignature(undefined, factory.createIdentifier('url'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(operation.path))),
57
- operation.mediaType
58
- ? factory.createPropertySignature(undefined, factory.createIdentifier('mediaType'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(operation.mediaType)))
59
- : null,
60
- ].filter((node) => Boolean(node)));
61
- };
62
- const getOperationResponseFactory = (operation, type) => {
63
- if (!operation[type])
64
- return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
65
- const responses = Object.entries(operation[type]);
66
- if (!responses.length)
67
- return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
68
- return factory.createUnionTypeNode(responses.map(([statusCode, mediaType]) => {
69
- if (!mediaType)
70
- return factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword);
71
- return factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier('paths'), undefined), factory.createLiteralTypeNode(factory.createStringLiteral(operation.path))), factory.createLiteralTypeNode(factory.createStringLiteral(operation.method))), factory.createLiteralTypeNode(factory.createStringLiteral('responses'))), factory.createLiteralTypeNode(factory.createStringLiteral(statusCode))), factory.createLiteralTypeNode(factory.createStringLiteral('content'))), factory.createLiteralTypeNode(factory.createStringLiteral(mediaType)));
72
- }));
73
- };
74
- const getOperationBodyFactory = (operation) => {
75
- if (!operation.mediaType)
76
- return factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
77
- return factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier('NonNullable'), [
78
- factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier('paths'), undefined), factory.createLiteralTypeNode(factory.createStringLiteral(operation.path))), factory.createLiteralTypeNode(factory.createStringLiteral(operation.method))), factory.createLiteralTypeNode(factory.createStringLiteral('requestBody'))),
79
- ]),
80
- // todo::Add optional NonNullable inference, see `POST /entities/{entity_id}/documents`
81
- factory.createLiteralTypeNode(factory.createStringLiteral('content'))), factory.createLiteralTypeNode(factory.createStringLiteral(operation.mediaType)));
82
- };
83
- const getOperationParametersFactory = (operation) => {
84
- if (!operation.parameters)
85
- return factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword);
86
- return factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier('paths'), undefined), factory.createLiteralTypeNode(factory.createStringLiteral(operation.path))), factory.createLiteralTypeNode(factory.createStringLiteral(operation.method))), factory.createLiteralTypeNode(factory.createStringLiteral('parameters')));
87
- };
88
- const getServiceVariableFactory = ({ typeName, variableName }, operations) => {
89
- return factory.createVariableStatement([factory.createToken(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([
90
- factory.createVariableDeclaration(factory.createIdentifier(variableName), undefined, getServiceVariableTypeFactory({ typeName }), factory.createAsExpression(factory.createObjectLiteralExpression(operations.map(getServiceVariablePropertyFactory), true), factory.createTypeReferenceNode(factory.createIdentifier('const'), undefined))),
91
- ], ts.NodeFlags.Const));
92
- };
93
- const getServiceVariableTypeFactory = ({ typeName }) => {
94
- return factory.createMappedTypeNode(undefined, factory.createTypeParameterDeclaration(undefined, factory.createIdentifier('key'), factory.createTypeOperatorNode(ts.SyntaxKind.KeyOfKeyword, factory.createTypeReferenceNode(factory.createIdentifier(typeName), undefined)), undefined), undefined, undefined, factory.createTypeReferenceNode(factory.createIdentifier('Pick'), [
95
- factory.createIndexedAccessTypeNode(factory.createTypeReferenceNode(factory.createIdentifier(typeName), undefined), factory.createTypeReferenceNode(factory.createIdentifier('key'), undefined)),
96
- factory.createLiteralTypeNode(factory.createStringLiteral('schema')),
97
- ]), undefined);
98
- };
99
- const getServiceVariablePropertyFactory = (operation) => {
100
- return factory.createPropertyAssignment(factory.createIdentifier(operation.name), factory.createObjectLiteralExpression([
101
- factory.createPropertyAssignment(factory.createIdentifier('schema'), factory.createObjectLiteralExpression([
102
- factory.createPropertyAssignment(factory.createIdentifier('method'), factory.createStringLiteral(operation.method)),
103
- factory.createPropertyAssignment(factory.createIdentifier('url'), factory.createStringLiteral(operation.path)),
104
- operation.mediaType
105
- ? factory.createPropertyAssignment(factory.createIdentifier('mediaType'), factory.createStringLiteral(operation.mediaType))
106
- : null,
107
- ].filter((node) => Boolean(node)), true)),
108
- ], true));
109
- };
110
- const createMultilineComment = (comment) => {
111
- const output = comment.flatMap((line) => line.includes('\n') ? line.split('\n') : line);
112
- if (output.length) {
113
- const text = output.length === 1
114
- ? `* ${output.join('\n')} `
115
- : `*\n * ${output.join('\n * ')}\n `;
116
- return text.replace(/\*\//g, '*\\/'); // prevent inner comments from leaking
117
- }
118
- return '';
119
- };
120
- //# sourceMappingURL=getServiceFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getServiceFactory.js","sourceRoot":"","sources":["../../../src/lib/ts-factory/getServiceFactory.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import ts from 'typescript';
2
- import { Service } from '../open-api/getServices.js';
3
- type Options = {
4
- explicitImportExtensions: boolean;
5
- };
6
- export declare const getServiceIndexFactory: (services: Service[], options: Options) => (ts.ImportDeclaration | ts.VariableStatement | ts.TypeAliasDeclaration)[];
7
- export {};
@@ -1,26 +0,0 @@
1
- import ts from 'typescript';
2
- export const getServiceIndexFactory = (services, options) => {
3
- return [
4
- ...getServicesImportsFactory(services, options),
5
- getServiceIndexInterfaceFactory(services),
6
- getServiceIndexVariableFactory(services),
7
- ];
8
- };
9
- const getServiceIndexInterfaceFactory = (services) => {
10
- const factory = ts.factory;
11
- return factory.createTypeAliasDeclaration([factory.createToken(ts.SyntaxKind.ExportKeyword)], factory.createIdentifier('Services'), undefined, factory.createTypeLiteralNode(services.map(({ name, typeName }) => factory.createPropertySignature(undefined, factory.createIdentifier(name), undefined, factory.createTypeReferenceNode(factory.createIdentifier(typeName), undefined)))));
12
- };
13
- const getServiceIndexVariableFactory = (services) => {
14
- const factory = ts.factory;
15
- return factory.createVariableStatement([factory.createToken(ts.SyntaxKind.ExportKeyword)], factory.createVariableDeclarationList([
16
- factory.createVariableDeclaration(factory.createIdentifier('services'), undefined, undefined, factory.createAsExpression(factory.createObjectLiteralExpression(services.map(({ name, variableName }) => factory.createPropertyAssignment(factory.createIdentifier(name), factory.createIdentifier(variableName))), true), factory.createTypeReferenceNode(factory.createIdentifier('const'), undefined))),
17
- ], ts.NodeFlags.Const));
18
- };
19
- const getServicesImportsFactory = (services, { explicitImportExtensions }) => {
20
- const factory = ts.factory;
21
- return services.map(({ variableName, typeName, fileBaseName }) => factory.createImportDeclaration(undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
22
- factory.createImportSpecifier(false, undefined, factory.createIdentifier(typeName)),
23
- factory.createImportSpecifier(false, undefined, factory.createIdentifier(variableName)),
24
- ])), factory.createStringLiteral(`./${fileBaseName}${explicitImportExtensions ? '.js' : ''}`)));
25
- };
26
- //# sourceMappingURL=getServiceIndexFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getServiceIndexFactory.js","sourceRoot":"","sources":["../../../src/lib/ts-factory/getServiceIndexFactory.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- /// <reference types="node" resolution-mode="require"/>
4
- import { Readable } from 'node:stream';
5
- import { OpenAPI3 } from 'openapi-typescript';
6
- import { ServiceBaseName } from './lib/open-api/getServices.js';
7
- import { ServiceImportsFactoryOptions } from './lib/ts-factory/getServiceFactory.js';
8
- type OutputOptions = {
9
- fileHeader?: string;
10
- dir: string;
11
- clean: boolean;
12
- postfixServices?: string;
13
- explicitImportExtensions?: boolean;
14
- servicesDirName: string;
15
- serviceNameBase?: ServiceBaseName;
16
- };
17
- export declare const writeOpenAPIServices: ({ source, servicesGlob, serviceImports, output, }: {
18
- source: string | URL | OpenAPI3 | Readable | Buffer;
19
- servicesGlob: string[] | undefined;
20
- serviceImports: ServiceImportsFactoryOptions;
21
- output: OutputOptions;
22
- }) => Promise<void>;
23
- export {};
@@ -1,97 +0,0 @@
1
- import c from 'ansi-colors';
2
- import fs from 'node:fs';
3
- import { resolve } from 'node:path';
4
- import ora from 'ora';
5
- import { getServices, } from './lib/open-api/getServices.js';
6
- import { readSchema } from './lib/open-api/readSchema.js';
7
- import { astToString } from './lib/ts-factory/astToString.js';
8
- import { getClientFactory } from './lib/ts-factory/getClientFactory.js';
9
- import { getIndexFactory } from './lib/ts-factory/getIndexFactory.js';
10
- import { getServiceFactory, } from './lib/ts-factory/getServiceFactory.js';
11
- import { getServiceIndexFactory } from './lib/ts-factory/getServiceIndexFactory.js';
12
- export const writeOpenAPIServices = async ({ source, servicesGlob, serviceImports, output, }) => {
13
- const schema = await readSchema(source);
14
- const services = getServices(schema, output, servicesGlob);
15
- await writeServices(services, serviceImports, output);
16
- await writeServiceIndex(services, output);
17
- await writeClient(output);
18
- await writeIndex(output);
19
- };
20
- const writeServices = async (services, serviceImports, output) => {
21
- const servicesDir = resolve(output.dir, output.servicesDirName);
22
- if (output.clean)
23
- await fs.promises.rm(servicesDir, {
24
- recursive: true,
25
- force: true,
26
- });
27
- await fs.promises.mkdir(servicesDir, { recursive: true });
28
- const spinner = ora(`Generating services`).start();
29
- for (const service of services) {
30
- const { operations, name, typeName, variableName, fileBaseName } = service;
31
- spinner.text = `Generating ${c.magenta(name)} service`;
32
- try {
33
- const code = getFileHeader(output) +
34
- astToString(getServiceFactory({
35
- typeName,
36
- variableName,
37
- }, operations, serviceImports));
38
- await fs.promises.writeFile(resolve(servicesDir, `${fileBaseName}.ts`), code);
39
- }
40
- catch (error) {
41
- spinner.fail(c.redBright(`Error occurred during ${c.magenta(name)} service generation`));
42
- throw error;
43
- }
44
- }
45
- spinner.succeed(c.green('Services has been generated'));
46
- };
47
- const writeServiceIndex = async (services, output) => {
48
- const spinner = ora('Generating services index').start();
49
- try {
50
- const code = getFileHeader(output) +
51
- astToString(getServiceIndexFactory(services, {
52
- explicitImportExtensions: Boolean(output.explicitImportExtensions),
53
- }));
54
- await fs.promises.writeFile(resolve(output.dir, output.servicesDirName, 'index.ts'), code);
55
- }
56
- catch (error) {
57
- spinner.fail(c.redBright('Error occurred during services index generation'));
58
- throw error;
59
- }
60
- spinner.succeed(c.green('Services index has been generated'));
61
- };
62
- const writeClient = async (output) => {
63
- const spinner = ora('Generating client').start();
64
- try {
65
- const code = getFileHeader(output) +
66
- astToString(getClientFactory({
67
- servicesDirName: output.servicesDirName,
68
- explicitImportExtensions: Boolean(output.explicitImportExtensions),
69
- }));
70
- await fs.promises.writeFile(resolve(output.dir, 'create-api-client.ts'), code);
71
- }
72
- catch (error) {
73
- spinner.fail(c.redBright('Error occurred during client generation'));
74
- throw error;
75
- }
76
- spinner.succeed(c.green('Client has been generated'));
77
- };
78
- const writeIndex = async (output) => {
79
- const spinner = ora('Generating index').start();
80
- try {
81
- const code = getFileHeader(output) +
82
- astToString(getIndexFactory({
83
- servicesDirName: output.servicesDirName,
84
- explicitImportExtensions: Boolean(output.explicitImportExtensions),
85
- }));
86
- await fs.promises.writeFile(resolve(output.dir, 'index.ts'), code);
87
- }
88
- catch (error) {
89
- spinner.fail(c.redBright('Error occurred during index generation'));
90
- throw error;
91
- }
92
- spinner.succeed(c.green('Index has been generated'));
93
- };
94
- const getFileHeader = ({ fileHeader }) => {
95
- return fileHeader && `${fileHeader}\n`;
96
- };
97
- //# sourceMappingURL=writeOpenAPIServices.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"writeOpenAPIServices.js","sourceRoot":"","sources":["../src/writeOpenAPIServices.ts"],"names":[],"mappings":"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"}