@qraft/plugin 1.0.0-beta.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 (78) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -0
  3. package/dist/index.d.ts +5 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/GeneratorFile.d.ts +9 -0
  8. package/dist/lib/GeneratorFile.d.ts.map +1 -0
  9. package/dist/lib/GeneratorFile.js +2 -0
  10. package/dist/lib/GeneratorFile.js.map +1 -0
  11. package/dist/lib/OutputOptions.d.ts +6 -0
  12. package/dist/lib/OutputOptions.d.ts.map +1 -0
  13. package/dist/lib/OutputOptions.js +2 -0
  14. package/dist/lib/OutputOptions.js.map +1 -0
  15. package/dist/lib/QraftCommand.d.ts +47 -0
  16. package/dist/lib/QraftCommand.d.ts.map +1 -0
  17. package/dist/lib/QraftCommand.js +187 -0
  18. package/dist/lib/QraftCommand.js.map +1 -0
  19. package/dist/lib/QraftCommandPlugin.d.ts +6 -0
  20. package/dist/lib/QraftCommandPlugin.d.ts.map +1 -0
  21. package/dist/lib/QraftCommandPlugin.js +2 -0
  22. package/dist/lib/QraftCommandPlugin.js.map +1 -0
  23. package/dist/lib/RedoclyConfigCommand.d.ts +28 -0
  24. package/dist/lib/RedoclyConfigCommand.d.ts.map +1 -0
  25. package/dist/lib/RedoclyConfigCommand.js +158 -0
  26. package/dist/lib/RedoclyConfigCommand.js.map +1 -0
  27. package/dist/lib/formatFileHeader.d.ts +2 -0
  28. package/dist/lib/formatFileHeader.d.ts.map +1 -0
  29. package/dist/lib/formatFileHeader.js +6 -0
  30. package/dist/lib/formatFileHeader.js.map +1 -0
  31. package/dist/lib/getRedocAPIsToQraft.d.ts +14 -0
  32. package/dist/lib/getRedocAPIsToQraft.d.ts.map +1 -0
  33. package/dist/lib/getRedocAPIsToQraft.js +49 -0
  34. package/dist/lib/getRedocAPIsToQraft.js.map +1 -0
  35. package/dist/lib/handleSchemaInput.d.ts +10 -0
  36. package/dist/lib/handleSchemaInput.d.ts.map +1 -0
  37. package/dist/lib/handleSchemaInput.js +40 -0
  38. package/dist/lib/handleSchemaInput.js.map +1 -0
  39. package/dist/lib/loadRedoclyConfig.d.ts +12 -0
  40. package/dist/lib/loadRedoclyConfig.d.ts.map +1 -0
  41. package/dist/lib/loadRedoclyConfig.js +17 -0
  42. package/dist/lib/loadRedoclyConfig.js.map +1 -0
  43. package/dist/lib/maybeEscapeShellArg.d.ts +2 -0
  44. package/dist/lib/maybeEscapeShellArg.d.ts.map +1 -0
  45. package/dist/lib/maybeEscapeShellArg.js +9 -0
  46. package/dist/lib/maybeEscapeShellArg.js.map +1 -0
  47. package/dist/lib/parseConfigToArgs.d.ts +7 -0
  48. package/dist/lib/parseConfigToArgs.d.ts.map +1 -0
  49. package/dist/lib/parseConfigToArgs.js +130 -0
  50. package/dist/lib/parseConfigToArgs.js.map +1 -0
  51. package/dist/lib/shouldQuoteCommandLineArg.d.ts +11 -0
  52. package/dist/lib/shouldQuoteCommandLineArg.d.ts.map +1 -0
  53. package/dist/lib/shouldQuoteCommandLineArg.js +33 -0
  54. package/dist/lib/shouldQuoteCommandLineArg.js.map +1 -0
  55. package/dist/lib/writeGeneratorFiles.d.ts +7 -0
  56. package/dist/lib/writeGeneratorFiles.d.ts.map +1 -0
  57. package/dist/lib/writeGeneratorFiles.js +51 -0
  58. package/dist/lib/writeGeneratorFiles.js.map +1 -0
  59. package/dist/packageVersion.d.ts +2 -0
  60. package/dist/packageVersion.d.ts.map +1 -0
  61. package/dist/packageVersion.js +3 -0
  62. package/dist/packageVersion.js.map +1 -0
  63. package/package.json +68 -0
  64. package/src/index.ts +12 -0
  65. package/src/lib/GeneratorFile.ts +5 -0
  66. package/src/lib/OutputOptions.ts +6 -0
  67. package/src/lib/QraftCommand.ts +381 -0
  68. package/src/lib/QraftCommandPlugin.ts +9 -0
  69. package/src/lib/RedoclyConfigCommand.ts +290 -0
  70. package/src/lib/formatFileHeader.ts +4 -0
  71. package/src/lib/getRedocAPIsToQraft.ts +92 -0
  72. package/src/lib/handleSchemaInput.ts +58 -0
  73. package/src/lib/loadRedoclyConfig.ts +47 -0
  74. package/src/lib/maybeEscapeShellArg.ts +10 -0
  75. package/src/lib/parseConfigToArgs.ts +134 -0
  76. package/src/lib/shouldQuoteCommandLineArg.ts +32 -0
  77. package/src/lib/writeGeneratorFiles.ts +82 -0
  78. package/src/packageVersion.ts +2 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,15 @@
1
+ # @qraft/plugin
2
+
3
+ ## 1.0.0-beta.0
4
+
5
+ ### Minor Changes
6
+
7
+ - a282960: Introduce unified CLI tool `@qraft/cli` that extends code generation capabilities beyond OpenAPI to support AsyncAPI
8
+ specifications. The new CLI provides three main commands:
9
+ - `qraft openapi` - Generate type-safe code from OpenAPI documents (React Query hooks and TypeScript types)
10
+ - `qraft asyncapi` - Generate TypeScript types from AsyncAPI documents
11
+ - `qraft redocly` - Generate code from Redocly configuration files supporting both OpenAPI and AsyncAPI APIs
12
+
13
+ The CLI uses a plugin-based architecture where plugins are installed as peer dependencies, allowing users to install
14
+ only the plugins they need. It maintains full backward compatibility with existing OpenAPI workflows while adding
15
+ seamless support for event-driven API specifications.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # shared
@@ -0,0 +1,5 @@
1
+ export { normalizeOutputDirPath, QraftCommand, splitOptionFlags, } from './lib/QraftCommand.js';
2
+ export { handleSchemaInput } from './lib/handleSchemaInput.js';
3
+ export type { QraftCommandActionCallback, QraftCommandActionOptions, QraftCommandOptions, } from './lib/QraftCommand.js';
4
+ export type { QraftCommandPlugin } from './lib/QraftCommandPlugin.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { normalizeOutputDirPath, QraftCommand, splitOptionFlags, } from './lib/QraftCommand.js';
2
+ export { handleSchemaInput } from './lib/handleSchemaInput.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { URL } from 'node:url';
2
+ export type GeneratorFile = {
3
+ file: URL;
4
+ code: string;
5
+ } | {
6
+ directory: URL;
7
+ clean: boolean;
8
+ };
9
+ //# sourceMappingURL=GeneratorFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeneratorFile.d.ts","sourceRoot":"","sources":["../../src/lib/GeneratorFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,SAAS,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=GeneratorFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeneratorFile.js","sourceRoot":"","sources":["../../src/lib/GeneratorFile.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { URL } from 'node:url';
2
+ export interface OutputOptions {
3
+ dir: URL;
4
+ clean: boolean;
5
+ }
6
+ //# sourceMappingURL=OutputOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutputOptions.d.ts","sourceRoot":"","sources":["../../src/lib/OutputOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,OAAO,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=OutputOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutputOptions.js","sourceRoot":"","sources":["../../src/lib/OutputOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { URL } from 'node:url';
2
+ import { Command, Option, ParseOptions } from 'commander';
3
+ import { Ora } from 'ora';
4
+ import { GeneratorFile } from './GeneratorFile.js';
5
+ import { OutputOptions } from './OutputOptions.js';
6
+ export interface QraftCommandOptions {
7
+ defaultFileHeader?: string;
8
+ }
9
+ export declare class QraftCommand<TActionOptions extends QraftCommandActionOptions = QraftCommandActionOptions> extends Command {
10
+ static spinner: Ora;
11
+ protected readonly cwd: URL;
12
+ protected registeredPluginActions: QraftCommandActionCallback<TActionOptions>[];
13
+ constructor(name?: string, options?: QraftCommandOptions);
14
+ action(callback: QraftCommandActionCallback<TActionOptions>): this;
15
+ actionCallback(...actionArgs: any[]): Promise<void>;
16
+ protected prepareActionOptions(inputs: string[], args: Record<string, any>): Promise<TActionOptions>;
17
+ protected registerPluginAction(callback: QraftCommandActionCallback<TActionOptions>): void;
18
+ option(flags: string, description?: string, defaultValue?: string | boolean | string[]): this;
19
+ option<T>(flags: string, description: string, parseArg: (value: string, previous: T) => T, defaultValue?: T): this;
20
+ /** @deprecated since v7, instead use choices or a custom function */
21
+ option(flags: string, description: string, regexp: RegExp, defaultValue?: string | boolean | string[]): this;
22
+ requiredOption(flags: string, description?: string, defaultValue?: string | boolean | string[]): this;
23
+ requiredOption<T>(flags: string, description: string, parseArg: (value: string, previous: T) => T, defaultValue?: T): this;
24
+ /** @deprecated since v7, instead use choices or a custom function */
25
+ requiredOption(flags: string, description: string, regexp: RegExp, defaultValue?: string | boolean | string[]): this;
26
+ addOption(option: Option): this;
27
+ parseAsync(argv?: readonly string[], options?: ParseOptions): Promise<this>;
28
+ parse(argv?: readonly string[], options?: ParseOptions): this;
29
+ protected logVersion(): void;
30
+ protected findSimilarOption(option: {
31
+ flags: string;
32
+ mandatory: boolean;
33
+ }): Option | undefined;
34
+ }
35
+ export declare function normalizeOutputDirPath(outputDir: string): URL;
36
+ export interface QraftCommandActionOptions {
37
+ inputs: string[];
38
+ args: Record<string, any>;
39
+ spinner: Ora;
40
+ output: OutputOptions;
41
+ }
42
+ export type QraftCommandActionCallback<TActionOptions extends QraftCommandActionOptions = QraftCommandActionOptions> = (options: TActionOptions, resolve: (files: GeneratorFile[]) => void) => Promise<void>;
43
+ export declare function splitOptionFlags(flags: string): {
44
+ shortFlag: string | undefined;
45
+ longFlag: string | undefined;
46
+ };
47
+ //# sourceMappingURL=QraftCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QraftCommand.d.ts","sourceRoot":"","sources":["../../src/lib/QraftCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ import { sep } from 'node:path';
2
+ import process from 'node:process';
3
+ import { pathToFileURL } from 'node:url';
4
+ import c from 'ansi-colors';
5
+ import { Command, Option } from 'commander';
6
+ import ora from 'ora';
7
+ import { writeGeneratorFiles } from './writeGeneratorFiles.js';
8
+ export class QraftCommand extends Command {
9
+ static spinner = ora();
10
+ cwd;
11
+ registeredPluginActions = [];
12
+ constructor(name, options) {
13
+ super(name);
14
+ this.cwd = pathToFileURL(`${process.cwd()}/`);
15
+ this.option('-o, --output-dir <path>', 'Output directory for generated files')
16
+ .addOption(new Option('-c, --clean', 'Clean output directory before generating files'))
17
+ .addOption(new Option('--file-header <string>', 'Header to be added to the generated file (eg: /* eslint-disable */)').default(options?.defaultFileHeader ?? ''));
18
+ }
19
+ action(callback) {
20
+ this.registerPluginAction(callback);
21
+ return super.action(this.actionCallback.bind(this));
22
+ }
23
+ async actionCallback(...actionArgs) {
24
+ const inputs = actionArgs.filter((arg) => typeof arg === 'string');
25
+ const args = actionArgs.find((arg) => arg && typeof arg === 'object');
26
+ if (!args)
27
+ throw new Error('Arguments object not found');
28
+ const spinner = QraftCommand.spinner;
29
+ spinner.start('Initializing process...');
30
+ const actionOptions = await this.prepareActionOptions(inputs, args);
31
+ spinner.text = 'Generating code...';
32
+ for (const pluginAction of this.registeredPluginActions) {
33
+ const fileItems = await new Promise((resolve, reject) => {
34
+ pluginAction(actionOptions, resolve).catch(reject);
35
+ });
36
+ try {
37
+ if (this.registeredPluginActions.indexOf(pluginAction) === 0) {
38
+ await writeGeneratorFiles({
39
+ fileItems: [
40
+ { directory: actionOptions.output.dir, clean: false },
41
+ ...fileItems,
42
+ ],
43
+ spinner,
44
+ });
45
+ }
46
+ else {
47
+ await writeGeneratorFiles({ fileItems, spinner });
48
+ }
49
+ }
50
+ catch (error) {
51
+ spinner.fail(c.red('An error occurred during the code generation process.'));
52
+ if (error instanceof Error) {
53
+ console.error(c.red(error.message), c.red(error.stack ?? ''));
54
+ }
55
+ throw error;
56
+ }
57
+ }
58
+ spinner.succeed(c.green('Qraft process completed successfully'));
59
+ }
60
+ async prepareActionOptions(inputs, args) {
61
+ const outputDir = normalizeOutputDirPath(args.outputDir);
62
+ return {
63
+ inputs,
64
+ args,
65
+ spinner: QraftCommand.spinner,
66
+ output: {
67
+ dir: outputDir,
68
+ clean: args.clean,
69
+ },
70
+ };
71
+ }
72
+ registerPluginAction(callback) {
73
+ this.registeredPluginActions.push(callback);
74
+ }
75
+ option(flags, description, parseArg, defaultValue) {
76
+ if (this.findSimilarOption({
77
+ flags,
78
+ mandatory: false,
79
+ })) {
80
+ return this;
81
+ }
82
+ return super.option(flags,
83
+ // @ts-expect-error - Issues with overloading
84
+ description, parseArg, defaultValue);
85
+ }
86
+ requiredOption(flags, description, regexpOrDefaultValue, defaultValue) {
87
+ if (this.findSimilarOption({
88
+ flags,
89
+ mandatory: true,
90
+ })) {
91
+ return this;
92
+ }
93
+ return super.requiredOption(flags,
94
+ // @ts-expect-error - Issues with overloading
95
+ description, regexpOrDefaultValue, defaultValue);
96
+ }
97
+ addOption(option) {
98
+ if (this.findSimilarOption({
99
+ flags: option.flags,
100
+ mandatory: option.mandatory,
101
+ })) {
102
+ return this;
103
+ }
104
+ return super.addOption(option);
105
+ }
106
+ parseAsync(argv, options) {
107
+ if (options?.from !== 'user')
108
+ this.logVersion();
109
+ return super.parseAsync(argv, options);
110
+ }
111
+ parse(argv, options) {
112
+ if (options?.from !== 'user')
113
+ this.logVersion();
114
+ return super.parse(argv, options);
115
+ }
116
+ logVersion() {
117
+ QraftCommand.spinner.info(`✨ ${c.bold('Qraft')}`);
118
+ }
119
+ findSimilarOption(option) {
120
+ try {
121
+ return findSimilarOption(option, this.options);
122
+ }
123
+ catch (error) {
124
+ console.error(c.red(error instanceof Error
125
+ ? error.message
126
+ : 'An error occurred during command option setup'));
127
+ throw error;
128
+ }
129
+ }
130
+ }
131
+ export function normalizeOutputDirPath(outputDir) {
132
+ return pathToFileURL(outputDir.endsWith(sep) ? outputDir : `${outputDir}${sep}`);
133
+ }
134
+ function findSimilarOption({ flags, mandatory, }, options) {
135
+ const newOptionParsedFlags = splitOptionFlags(flags);
136
+ const optional = flags.includes('[');
137
+ const required = flags.includes('<');
138
+ const variadic = /\w\.\.\.[>\]]$/.test(flags);
139
+ return options.find((existingOption) => {
140
+ const existingOptionParsedFlags = splitOptionFlags(existingOption.flags);
141
+ if (!((existingOptionParsedFlags.longFlag !== undefined &&
142
+ existingOptionParsedFlags.longFlag ===
143
+ newOptionParsedFlags.longFlag) ||
144
+ (existingOptionParsedFlags.shortFlag !== undefined &&
145
+ existingOptionParsedFlags.shortFlag ===
146
+ newOptionParsedFlags.shortFlag))) {
147
+ return false;
148
+ }
149
+ if (existingOptionParsedFlags.longFlag !== undefined &&
150
+ newOptionParsedFlags.longFlag !== undefined &&
151
+ existingOptionParsedFlags.longFlag !== newOptionParsedFlags.longFlag) {
152
+ throw new Error(`Long flag ${flags} already exists in the option list with flags: "${existingOption.flags}" and description: "${existingOption.description}"`);
153
+ }
154
+ if (existingOptionParsedFlags.shortFlag !== undefined &&
155
+ newOptionParsedFlags.shortFlag !== undefined &&
156
+ existingOptionParsedFlags.shortFlag !== newOptionParsedFlags.shortFlag) {
157
+ throw new Error(`Short flag ${flags} already exists in the option list with flags: "${existingOption.flags}" and description: "${existingOption.description}"`);
158
+ }
159
+ if (required !== existingOption.required) {
160
+ throw new Error(`Flag ${flags} already exists in the option list with flags: "${existingOption.flags}" and description: "${existingOption.description}" but with different required status`);
161
+ }
162
+ if (optional !== existingOption.optional) {
163
+ throw new Error(`Flag ${flags} already exists in the option list with flags: "${existingOption.flags}" and description: "${existingOption.description}" but with different optional status`);
164
+ }
165
+ if (mandatory !== existingOption.mandatory) {
166
+ throw new Error(`Flag ${flags} already exists in the option list with flags: "${existingOption.flags}" and description: "${existingOption.description}" but with different mandatory status`);
167
+ }
168
+ if (variadic !== existingOption.variadic) {
169
+ throw new Error(`Flag ${flags} already exists in the option list with flags: "${existingOption.flags}" and description: "${existingOption.description}" but with different variadic status`);
170
+ }
171
+ return existingOption;
172
+ });
173
+ }
174
+ export function splitOptionFlags(flags) {
175
+ let shortFlag;
176
+ let longFlag;
177
+ const flagParts = flags.split(/[ |,]+/);
178
+ if (flagParts.length > 1 && !/^[[<]/.test(flagParts[1]))
179
+ shortFlag = flagParts.shift();
180
+ longFlag = flagParts.shift();
181
+ if (!shortFlag && /^-[^-]$/.test(longFlag ?? '')) {
182
+ shortFlag = longFlag;
183
+ longFlag = undefined;
184
+ }
185
+ return { shortFlag, longFlag };
186
+ }
187
+ //# sourceMappingURL=QraftCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QraftCommand.js","sourceRoot":"","sources":["../../src/lib/QraftCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { QraftCommand, QraftCommandActionOptions } from './QraftCommand.js';
2
+ export interface QraftCommandPlugin<TCommand extends QraftCommand<any> = QraftCommand<QraftCommandActionOptions>> {
3
+ setupCommand(command: TCommand): void | Promise<void>;
4
+ postSetupCommand?(command: TCommand, plugins: string[]): void | Promise<void>;
5
+ }
6
+ //# sourceMappingURL=QraftCommandPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QraftCommandPlugin.d.ts","sourceRoot":"","sources":["../../src/lib/QraftCommandPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,WAAW,kBAAkB,CACjC,QAAQ,SAAS,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,yBAAyB,CAAC;IAE5E,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD,gBAAgB,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=QraftCommandPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QraftCommandPlugin.js","sourceRoot":"","sources":["../../src/lib/QraftCommandPlugin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { URL } from 'node:url';
2
+ import { Command, Option, ParseOptions } from 'commander';
3
+ import { ASYNCAPI_QRAFT_REDOC_CONFIG_KEY, OPENAPI_QRAFT_REDOC_CONFIG_KEY } from './getRedocAPIsToQraft.js';
4
+ export { ASYNCAPI_QRAFT_REDOC_CONFIG_KEY, OPENAPI_QRAFT_REDOC_CONFIG_KEY };
5
+ export declare const redoclyOption: Option;
6
+ export declare function createRedoclyOption(): Option;
7
+ export type ConfigKeyCallbacks<T> = {
8
+ [configKey: string]: CallbackFn<T>;
9
+ };
10
+ export declare class RedoclyConfigCommand extends Command {
11
+ protected readonly cwd: URL;
12
+ protected configKeys: string[];
13
+ /**
14
+ * Redocly API grouped by configKey
15
+ * { [configKey]: { [apiName]: argv[] } }
16
+ */
17
+ protected parsedAPIsByConfigKey: RedoclyQraftAPIsByConfigKey;
18
+ constructor(name?: string);
19
+ parseConfig<T>(callbacks: ConfigKeyCallbacks<T>, argv: readonly string[], options?: ParseOptions): Promise<T[] | undefined>;
20
+ static forEachRedoclyAPIEntry<T>(apisByConfigKey: RedoclyQraftAPIsByConfigKey, callbacks: ConfigKeyCallbacks<T>): Promise<T[]>;
21
+ }
22
+ type CallbackFn<T> = (processArgv: string[], processArgvParseOptions?: ParseOptions) => T | Promise<T>;
23
+ type RedoclyQraftAPIsByConfigKey = {
24
+ [configKey: string]: {
25
+ [apiName: string]: string[];
26
+ };
27
+ };
28
+ //# sourceMappingURL=RedoclyConfigCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedoclyConfigCommand.d.ts","sourceRoot":"","sources":["../../src/lib/RedoclyConfigCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,GAAG,EAAE,MAAM,UAAU,CAAC;AAG7D,OAAO,EAAE,OAAO,EAAkB,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EACL,+BAA+B,EAE/B,8BAA8B,EAC/B,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,CAAC;AAE3E,eAAO,MAAM,aAAa,QAAwB,CAAC;AAEnD,wBAAgB,mBAAmB,WAqBlC;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAClC,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,OAAO;IAC/C,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAC5B,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC;;;OAGG;IACH,SAAS,CAAC,qBAAqB,EAAE,2BAA2B,CAAM;gBAEtD,IAAI,CAAC,EAAE,MAAM;IAsHnB,WAAW,CAAC,CAAC,EACjB,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAChC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;WAiBd,sBAAsB,CAAC,CAAC,EACnC,eAAe,EAAE,2BAA2B,EAC5C,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;CAiFnC;AAED,KAAK,UAAU,CAAC,CAAC,IAAI,CACnB,WAAW,EAAE,MAAM,EAAE,EACrB,uBAAuB,CAAC,EAAE,YAAY,KACnC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpB,KAAK,2BAA2B,GAAG;IACjC,CAAC,SAAS,EAAE,MAAM,GAAG;QACnB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC7B,CAAC;CACH,CAAC"}
@@ -0,0 +1,158 @@
1
+ import { relative } from 'node:path';
2
+ import { fileURLToPath, pathToFileURL } from 'node:url';
3
+ import { CONFIG_FILE_NAMES } from '@redocly/openapi-core';
4
+ import c from 'ansi-colors';
5
+ import { Command, CommanderError, Option } from 'commander';
6
+ import { ASYNCAPI_QRAFT_REDOC_CONFIG_KEY, getRedocAPIsToQraft, OPENAPI_QRAFT_REDOC_CONFIG_KEY, } from './getRedocAPIsToQraft.js';
7
+ import { loadRedoclyConfig } from './loadRedoclyConfig.js';
8
+ import { maybeEscapeShellArg } from './maybeEscapeShellArg.js';
9
+ import { parseConfigToArgs } from './parseConfigToArgs.js';
10
+ import { QraftCommand } from './QraftCommand.js';
11
+ export { ASYNCAPI_QRAFT_REDOC_CONFIG_KEY, OPENAPI_QRAFT_REDOC_CONFIG_KEY };
12
+ export const redoclyOption = createRedoclyOption();
13
+ export function createRedoclyOption() {
14
+ const bin = c.gray.underline('bin');
15
+ const __redocly = c.yellow('--redocly');
16
+ const examples = [
17
+ `${bin} ${__redocly}`,
18
+ `${bin} ${c.green('my-api')} ${__redocly}`,
19
+ `${bin} ${c.green('my-api@v1 my-api@v2')} ${__redocly}`,
20
+ `${bin} ${__redocly} ${c.yellow.underline('./my-redocly-config.yaml')}`,
21
+ ].map((example) => `${c.italic.yellow(example)}`);
22
+ return new Option('--redocly [config]', [
23
+ c.bold(`Use the Redocly configuration to generate multiple API clients`),
24
+ `If the [config] parameter is not specified, the default Redocly configuration will be used: [${CONFIG_FILE_NAMES.join(' | ')}].`,
25
+ `For more information about this option, use the command: ${c.yellow.italic('--redocly-help')}`,
26
+ `${c.underline('Examples:')}`,
27
+ ...examples.map((example) => `${c.gray('$')} ${example}`),
28
+ ].join('\n'));
29
+ }
30
+ export class RedoclyConfigCommand extends Command {
31
+ cwd;
32
+ configKeys = [];
33
+ /**
34
+ * Redocly API grouped by configKey
35
+ * { [configKey]: { [apiName]: argv[] } }
36
+ */
37
+ parsedAPIsByConfigKey = {};
38
+ constructor(name) {
39
+ super(name);
40
+ this.cwd = pathToFileURL(`${process.cwd()}/`);
41
+ this.usage(c.green('[apis...] --redocly <config>'))
42
+ .argument('[apis...]', 'Optional list of Redocly APIs for which to generate API clients. If not specified, clients for all APIs will be generated.')
43
+ .allowUnknownOption(true)
44
+ .helpOption('--redocly-help', 'Display help for the `--redocly` option')
45
+ .addOption(redoclyOption)
46
+ .action(async (apis = [], args) => {
47
+ const redocly = args.redocly;
48
+ if (!redocly)
49
+ return;
50
+ const spinner = QraftCommand.spinner;
51
+ spinner.start('Loading Redocly configuration ⚙︎');
52
+ const redoc = await loadRedoclyConfig(redocly || true, this.cwd);
53
+ const redocConfigFile = redoc.configFile;
54
+ if (!redocConfigFile) {
55
+ spinner.fail('No "configFile" found in the Redocly configuration. Please specify the correct path to the Redocly configuration file.');
56
+ process.exit(1);
57
+ }
58
+ const allRawApisByConfigKey = {};
59
+ for (const configKey of this.configKeys) {
60
+ const apisForKey = getRedocAPIsToQraft(redoc, this.cwd, spinner, configKey);
61
+ if (Object.keys(apisForKey).length > 0) {
62
+ allRawApisByConfigKey[configKey] = apisForKey;
63
+ }
64
+ }
65
+ const allApiNames = new Set(Object.values(allRawApisByConfigKey).flatMap((apis) => Object.keys(apis)));
66
+ if (apis.length) {
67
+ const notFoundAPIs = apis.filter((inputAPIName) => !allApiNames.has(inputAPIName));
68
+ if (notFoundAPIs.length) {
69
+ spinner.fail(`The specified API${notFoundAPIs.length > 1 ? 's' : ''} ${notFoundAPIs.map(c.red).join(', ')} ${notFoundAPIs.length > 1 ? 'were' : 'was'} not found in the Redocly configuration.`);
70
+ throw new CommanderError(1, 'ERR_API_NOT_FOUND', `The specified API${notFoundAPIs.length > 1 ? 's' : ''} ${c.red(notFoundAPIs.join(', '))} ${notFoundAPIs.length > 1 ? 'were' : 'was'} not found in the Redocly configuration.`);
71
+ }
72
+ }
73
+ for (const [configKey, apisForKey] of Object.entries(allRawApisByConfigKey)) {
74
+ const filteredEntries = Object.entries(apisForKey).filter(([apiName]) => !apis.length || apis.includes(apiName));
75
+ if (filteredEntries.length === 0)
76
+ continue;
77
+ this.parsedAPIsByConfigKey[configKey] = {};
78
+ for (const [apiName, api] of filteredEntries) {
79
+ const globalQraftConfig = configKey in redoc.rawConfig
80
+ ? redoc.rawConfig[configKey]
81
+ : undefined;
82
+ const apiQraftConfigWithOutput = api[configKey];
83
+ const { ['output-dir']: outputDir, ...apiQraftConfig } = apiQraftConfigWithOutput;
84
+ const cwd = fileURLToPath(this.cwd);
85
+ this.parsedAPIsByConfigKey[configKey][apiName] = [
86
+ apiName,
87
+ ...parseConfigToArgs({
88
+ redocly: relative(cwd, redocConfigFile),
89
+ 'output-dir': relative(cwd, outputDir),
90
+ ...(globalQraftConfig && typeof globalQraftConfig === 'object'
91
+ ? globalQraftConfig
92
+ : undefined),
93
+ ...apiQraftConfig,
94
+ }),
95
+ ];
96
+ }
97
+ }
98
+ spinner.stop();
99
+ });
100
+ }
101
+ async parseConfig(callbacks, argv, options) {
102
+ this.configKeys = Object.keys(callbacks);
103
+ await this.parseAsync(argv, options);
104
+ const hasAnyAPIs = Object.values(this.parsedAPIsByConfigKey).some((apis) => Object.keys(apis).length > 0);
105
+ if (!hasAnyAPIs)
106
+ return; // todo::improve error reporting
107
+ return RedoclyConfigCommand.forEachRedoclyAPIEntry(this.parsedAPIsByConfigKey, callbacks);
108
+ }
109
+ static async forEachRedoclyAPIEntry(apisByConfigKey, callbacks) {
110
+ const spinner = QraftCommand.spinner;
111
+ spinner.info('Loading Redocly configuration...');
112
+ const allResults = [];
113
+ const allErrors = [];
114
+ for (const [configKey, apis] of Object.entries(apisByConfigKey)) {
115
+ const callback = callbacks[configKey];
116
+ if (!callback)
117
+ continue;
118
+ const apiEntries = Object.entries(apis);
119
+ const { errors, results } = await Promise.allSettled(apiEntries.map(async ([apiName, [openAPIDocument, ...apiProcessArgv]]) => {
120
+ spinner.info(`Generating API client for ${c.magenta(apiName)} with the following parameters:\n` +
121
+ c.gray.italic('bin ') +
122
+ `${c.green.italic(openAPIDocument)} ` +
123
+ apiProcessArgv
124
+ .map((arg) => arg.startsWith('--')
125
+ ? c.yellow.italic(arg)
126
+ : c.yellow.italic.underline(maybeEscapeShellArg(arg)))
127
+ .join(' '));
128
+ spinner.text = '';
129
+ spinner.start();
130
+ return await callback([openAPIDocument, ...apiProcessArgv], {
131
+ from: 'user',
132
+ });
133
+ })).then((results) => results.reduce((acc, result) => {
134
+ if (result.status === 'rejected')
135
+ acc.errors.push(result.reason);
136
+ else
137
+ acc.results.push(result.value);
138
+ return acc;
139
+ }, { errors: [], results: [] }));
140
+ allResults.push(...results);
141
+ allErrors.push(...errors);
142
+ }
143
+ if (allErrors.length) {
144
+ throw new CommanderError(1, 'ERROR', 'The following errors occurred during API client generation:\n' +
145
+ allErrors
146
+ .map((error) => error instanceof Error
147
+ ? error.message + '\n' + error.stack
148
+ : JSON.stringify(error, null, 2))
149
+ .join('\n\n'));
150
+ }
151
+ const allApiNames = Object.values(apisByConfigKey).flatMap((apis) => Object.keys(apis));
152
+ spinner.succeed(c.green(`API clients successfully generated for: `) +
153
+ allApiNames.map((apiName) => `"${c.magenta(apiName)}"`).join(', ') +
154
+ '.');
155
+ return allResults;
156
+ }
157
+ }
158
+ //# sourceMappingURL=RedoclyConfigCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedoclyConfigCommand.js","sourceRoot":"","sources":["../../src/lib/RedoclyConfigCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const formatFileHeader: (fileHeader: string | undefined) => string;
2
+ //# sourceMappingURL=formatFileHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatFileHeader.d.ts","sourceRoot":"","sources":["../../src/lib/formatFileHeader.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,eAAgB,MAAM,GAAG,SAAS,WAG9D,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const formatFileHeader = (fileHeader) => {
2
+ if (!fileHeader)
3
+ return '';
4
+ return `${fileHeader}${fileHeader.endsWith('\n') ? '' : '\n'}`;
5
+ };
6
+ //# sourceMappingURL=formatFileHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatFileHeader.js","sourceRoot":"","sources":["../../src/lib/formatFileHeader.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,UAA8B,EAAE,EAAE;IACjE,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjE,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Config } from '@redocly/openapi-core';
2
+ import { Ora } from 'ora';
3
+ export declare const OPENAPI_QRAFT_REDOC_CONFIG_KEY = "x-openapi-qraft";
4
+ export declare const ASYNCAPI_QRAFT_REDOC_CONFIG_KEY = "x-asyncapi-qraft";
5
+ export declare function getRedocAPIsToQraft(redoc: Config, cwd: URL, spinner: Ora, configKey?: string, apiName?: string): {
6
+ [k: string]: {
7
+ readonly root: import("url").URL;
8
+ readonly output?: string;
9
+ readonly theme?: import("@redocly/openapi-core/lib/config/types.js").ThemeRawConfig;
10
+ readonly styleguide: import("@redocly/openapi-core/lib/config/types.js").ResolvedStyleguideConfig;
11
+ readonly files?: string[];
12
+ };
13
+ };
14
+ //# sourceMappingURL=getRedocAPIsToQraft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRedocAPIsToQraft.d.ts","sourceRoot":"","sources":["../../src/lib/getRedocAPIsToQraft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAO,MAAM,8BAA8B,oBAAoB,CAAC;AAChE,eAAO,MAAM,+BAA+B,qBAAqB,CAAC;AAElE,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,EACZ,SAAS,GAAE,MAAuC,EAClD,OAAO,CAAC,EAAE,MAAM;;;;;;;;EA6EjB"}