@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
@@ -0,0 +1,49 @@
1
+ import { isAbsolute } from 'node:path';
2
+ import { fileURLToPath, pathToFileURL } from 'node:url';
3
+ import { CommanderError } from 'commander';
4
+ export const OPENAPI_QRAFT_REDOC_CONFIG_KEY = 'x-openapi-qraft';
5
+ export const ASYNCAPI_QRAFT_REDOC_CONFIG_KEY = 'x-asyncapi-qraft';
6
+ export function getRedocAPIsToQraft(redoc, cwd, spinner, configKey = OPENAPI_QRAFT_REDOC_CONFIG_KEY, apiName) {
7
+ const hasRedoclyApis = Object.keys(redoc?.apis ?? {}).length > 0;
8
+ if (!hasRedoclyApis) {
9
+ throw new CommanderError(1, 'ERR_MISSING_APIS', 'No "apis" found in Redocly config. Please specify the APIs to be generated.');
10
+ }
11
+ if (!redoc.configFile) {
12
+ throw new CommanderError(1, 'ERR_MISSING_CONFIG_FILE', 'No "configFile" found in Redocly config. Please specify the path to the Redocly config file.');
13
+ }
14
+ const configRoot = isAbsolute(redoc.configFile)
15
+ ? new URL(pathToFileURL(redoc.configFile))
16
+ : new URL(redoc.configFile, cwd);
17
+ const apisToQraftEntries = Object.entries(redoc.apis)
18
+ .map(([itemApiName, api]) => {
19
+ if (apiName && apiName !== itemApiName)
20
+ return;
21
+ const qraftConfig = configKey in api
22
+ ? api[configKey]
23
+ : undefined;
24
+ if (!qraftConfig) {
25
+ return void spinner.warn(`API ${itemApiName} is missing an \`${configKey}\` key. Skipping...`);
26
+ }
27
+ if (typeof qraftConfig !== 'object') {
28
+ throw new CommanderError(1, 'ERR_MISSING_API_CONFIG', `API ${itemApiName} is missing an \`${configKey}\` key. See https://openapi-qraft.github.io/openapi-qraft/docs/codegen/CLI/redocly-config.`);
29
+ }
30
+ const { o, ['output-dir']: outputPath = o, ...qraftConfigRest } = qraftConfig;
31
+ if (!outputPath) {
32
+ throw new CommanderError(1, 'ERR_MISSING_API_OUTPUT', `API ${itemApiName} is missing an "output-dir" key. See https://openapi-qraft.github.io/openapi-qraft/docs/codegen/CLI/redocly-config.`);
33
+ }
34
+ return [
35
+ itemApiName,
36
+ {
37
+ ...api,
38
+ root: new URL(api.root, configRoot),
39
+ [configKey]: {
40
+ ...qraftConfigRest,
41
+ ['output-dir']: fileURLToPath(new URL(outputPath, configRoot)),
42
+ },
43
+ },
44
+ ];
45
+ })
46
+ .filter((api) => !!api);
47
+ return Object.fromEntries(apisToQraftEntries);
48
+ }
49
+ //# sourceMappingURL=getRedocAPIsToQraft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRedocAPIsToQraft.js","sourceRoot":"","sources":["../../src/lib/getRedocAPIsToQraft.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;AAChE,MAAM,CAAC,MAAM,+BAA+B,GAAG,kBAAkB,CAAC;AAElE,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,GAAQ,EACR,OAAY,EACZ,YAAoB,8BAA8B,EAClD,OAAgB;IAEhB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACjE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,cAAc,CACtB,CAAC,EACD,kBAAkB,EAClB,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,IAAI,cAAc,CACtB,CAAC,EACD,yBAAyB,EACzB,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;QAC7C,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAEnC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;SAClD,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE;QAC1B,IAAI,OAAO,IAAI,OAAO,KAAK,WAAW;YAAE,OAAO;QAE/C,MAAM,WAAW,GACf,SAAS,IAAI,GAAG;YACd,CAAC,CAAE,GAA+B,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,KAAK,OAAO,CAAC,IAAI,CACtB,OAAO,WAAW,oBAAoB,SAAS,qBAAqB,CACrE,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,cAAc,CACtB,CAAC,EACD,wBAAwB,EACxB,OAAO,WAAW,oBAAoB,SAAS,4FAA4F,CAC5I,CAAC;QACJ,CAAC;QAED,MAAM,EACJ,CAAC,EACD,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,CAAC,EAC9B,GAAG,eAAe,EACnB,GAAG,WAGH,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,cAAc,CACtB,CAAC,EACD,wBAAwB,EACxB,OAAO,WAAW,qHAAqH,CACxI,CAAC;QACJ,CAAC;QAED,OAAO;YACL,WAAW;YACX;gBACE,GAAG,GAAG;gBACN,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC;gBACnC,CAAC,SAAS,CAAC,EAAE;oBACX,GAAG,eAAe;oBAClB,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;iBAC/D;aACF;SACO,CAAC;IACb,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Ora } from 'ora';
2
+ import { URL } from 'node:url';
3
+ /**
4
+ * Validates Schema's `input` and return `Readable` stream or `URL`
5
+ * @throws {Error} if input is invalid
6
+ */
7
+ export declare function handleSchemaInput(input: unknown, cwd: URL, spinner: Ora, schemaName: string): URL | (NodeJS.ReadStream & {
8
+ fd: 0;
9
+ });
10
+ //# sourceMappingURL=handleSchemaInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleSchemaInput.d.ts","sourceRoot":"","sources":["../../src/lib/handleSchemaInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,MAAM;;GA6CnB"}
@@ -0,0 +1,40 @@
1
+ import process from 'node:process';
2
+ import { URL } from 'node:url';
3
+ /**
4
+ * Validates Schema's `input` and return `Readable` stream or `URL`
5
+ * @throws {Error} if input is invalid
6
+ */
7
+ export function handleSchemaInput(input, cwd, spinner, schemaName) {
8
+ if (!input) {
9
+ /**
10
+ * Handle `stdin`, if no input file is provided
11
+ * @example
12
+ * ```bash
13
+ * cat schema.json | script.js
14
+ * ```
15
+ */
16
+ if (process.stdin.isTTY) {
17
+ spinner.fail(`Input file not found or stdin is empty. Please specify \`input\` argument or pipe ${schemaName} to stdin.`);
18
+ throw new Error('Invalid input.');
19
+ }
20
+ return process.stdin;
21
+ }
22
+ /**
23
+ * Handle single file
24
+ * @example
25
+ * ```bash
26
+ * script.js schema.json
27
+ * ```
28
+ */
29
+ if (typeof input !== 'string') {
30
+ spinner.fail('Invalid input. Please specify a single file or URL.');
31
+ throw new Error('Invalid input.');
32
+ }
33
+ // throw error on glob
34
+ if (input.includes('*')) {
35
+ spinner.fail('Globbing is not supported. Please specify a single file or URL.');
36
+ throw new Error('Globbing is not supported.');
37
+ }
38
+ return new URL(input, cwd);
39
+ }
40
+ //# sourceMappingURL=handleSchemaInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleSchemaInput.js","sourceRoot":"","sources":["../../src/lib/handleSchemaInput.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAc,EACd,GAAQ,EACR,OAAY,EACZ,UAAkB;IAElB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX;;;;;;WAMG;QACH,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CACV,qFAAqF,UAAU,YAAY,CAC5G,CAAC;YAEF,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IAEH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAEpE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB;IACtB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CACV,iEAAiE,CAClE,CAAC;QAEF,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { URL } from 'node:url';
2
+ import { Config } from '@redocly/openapi-core';
3
+ /**
4
+ * Loads Redocly config from the default config file:
5
+ * 'redocly.yaml', 'redocly.yml', '.redocly.yaml', '.redocly.yml'
6
+ */
7
+ export declare function loadRedoclyConfig(configPath: null | undefined | true, cwd: URL): Promise<Config>;
8
+ /**
9
+ * Loads Redocly config from the specified path or from the default config file.
10
+ */
11
+ export declare function loadRedoclyConfig(configPath: string, cwd: URL): Promise<Config>;
12
+ //# sourceMappingURL=loadRedoclyConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadRedoclyConfig.d.ts","sourceRoot":"","sources":["../../src/lib/loadRedoclyConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EACL,MAAM,EAIP,MAAM,uBAAuB,CAAC;AAG/B;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,EACnC,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,MAAM,CAAC,CAAC;AACnB;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { fileURLToPath } from 'node:url';
2
+ import { CONFIG_FILE_NAMES, findConfig, loadConfig, } from '@redocly/openapi-core';
3
+ import { CommanderError } from 'commander';
4
+ export async function loadRedoclyConfig(configPath, cwd) {
5
+ const normalizedConfigPath = typeof configPath === 'string'
6
+ ? configPath
7
+ : findConfig(fileURLToPath(cwd));
8
+ if (!normalizedConfigPath) {
9
+ throw new CommanderError(1, 'INVALID_REDOCLY_CONFIG_PATH', typeof configPath === 'string'
10
+ ? `Could not find Redocly config file at ${configPath}`
11
+ : `Could not find Redocly config file in ${cwd}. Searched in: ${CONFIG_FILE_NAMES.join(', ')}`);
12
+ }
13
+ return await loadConfig({
14
+ configPath: normalizedConfigPath,
15
+ });
16
+ }
17
+ //# sourceMappingURL=loadRedoclyConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadRedoclyConfig.js","sourceRoot":"","sources":["../../src/lib/loadRedoclyConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAO,MAAM,UAAU,CAAC;AAC9C,OAAO,EAEL,iBAAiB,EACjB,UAAU,EACV,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAiB3C,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAA4C,EAC5C,GAAQ;IAER,MAAM,oBAAoB,GACxB,OAAO,UAAU,KAAK,QAAQ;QAC5B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAErC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,MAAM,IAAI,cAAc,CACtB,CAAC,EACD,6BAA6B,EAC7B,OAAO,UAAU,KAAK,QAAQ;YAC5B,CAAC,CAAC,yCAAyC,UAAU,EAAE;YACvD,CAAC,CAAC,yCAAyC,GAAG,kBAAkB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjG,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,UAAU,CAAC;QACtB,UAAU,EAAE,oBAAoB;KACjC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function maybeEscapeShellArg(arg: string): string;
2
+ //# sourceMappingURL=maybeEscapeShellArg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybeEscapeShellArg.d.ts","sourceRoot":"","sources":["../../src/lib/maybeEscapeShellArg.ts"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOvD"}
@@ -0,0 +1,9 @@
1
+ import { shouldQuoteCommandLineArg } from './shouldQuoteCommandLineArg.js';
2
+ export function maybeEscapeShellArg(arg) {
3
+ if (shouldQuoteCommandLineArg(arg)) {
4
+ // bash-safe single-quote escaping
5
+ return `'${arg.replace(/'/g, `'\\''`)}'`;
6
+ }
7
+ return arg;
8
+ }
9
+ //# sourceMappingURL=maybeEscapeShellArg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybeEscapeShellArg.js","sourceRoot":"","sources":["../../src/lib/maybeEscapeShellArg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,IAAI,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,kCAAkC;QAClC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;IAC3C,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Converts a parsed YAML configuration into command line arguments
3
+ * @param config The parsed YAML configuration object
4
+ * @returns Array of command line arguments
5
+ */
6
+ export declare function parseConfigToArgs(config: Record<string, unknown>): string[];
7
+ //# sourceMappingURL=parseConfigToArgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseConfigToArgs.d.ts","sourceRoot":"","sources":["../../src/lib/parseConfigToArgs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAgI3E"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Converts a parsed YAML configuration into command line arguments
3
+ * @param config The parsed YAML configuration object
4
+ * @returns Array of command line arguments
5
+ */
6
+ export function parseConfigToArgs(config) {
7
+ const args = [];
8
+ const isPrimitive = (val) => typeof val === 'string' ||
9
+ typeof val === 'number' ||
10
+ typeof val === 'boolean';
11
+ function flattenMapping(node, prefixKeys) {
12
+ const results = [];
13
+ if (isPrimitive(node)) {
14
+ if (typeof node === 'boolean') {
15
+ if (node) {
16
+ results.push(prefixKeys.join(':'));
17
+ }
18
+ }
19
+ else {
20
+ results.push(`${prefixKeys.join(':')}:${node.toString()}`);
21
+ }
22
+ return results;
23
+ }
24
+ if (Array.isArray(node)) {
25
+ if (node.every((el) => isPrimitive(el))) {
26
+ const primitives = node.filter((el) => el !== null && el !== undefined);
27
+ const joined = primitives.map((el) => el.toString()).join(',');
28
+ if (joined) {
29
+ results.push(`${prefixKeys.join(':')}:${joined}`);
30
+ }
31
+ return results;
32
+ }
33
+ for (const el of node) {
34
+ if (el == null) {
35
+ continue;
36
+ }
37
+ results.push(...flattenMapping(el, prefixKeys));
38
+ }
39
+ return results;
40
+ }
41
+ if (typeof node === 'object' && node !== null) {
42
+ for (const [key, value] of Object.entries(node)) {
43
+ results.push(...flattenMapping(value, [...prefixKeys, key]));
44
+ }
45
+ return results;
46
+ }
47
+ return results;
48
+ }
49
+ for (const [key, value] of Object.entries(config)) {
50
+ if (typeof value === 'string' || typeof value === 'number') {
51
+ args.push(`--${key}`, value.toString());
52
+ }
53
+ else if (typeof value === 'boolean') {
54
+ if (value) {
55
+ args.push(`--${key}`);
56
+ }
57
+ }
58
+ else if (value == null) {
59
+ continue;
60
+ }
61
+ else if (Array.isArray(value)) {
62
+ if (value.every((el) => isPrimitive(el))) {
63
+ const primitives = value.filter((el) => el !== null && el !== undefined);
64
+ args.push(`--${key}`, ...primitives.map((el) => el.toString()));
65
+ }
66
+ else {
67
+ for (const el of value) {
68
+ if (el == null) {
69
+ continue;
70
+ }
71
+ if (typeof el === 'object') {
72
+ const mappingPaths = flattenMapping(el, []);
73
+ if (mappingPaths.length) {
74
+ args.push(`--${key}`, ...mappingPaths);
75
+ }
76
+ }
77
+ else if (isPrimitive(el)) {
78
+ args.push(`--${key}`, el.toString());
79
+ }
80
+ }
81
+ }
82
+ }
83
+ else if (typeof value === 'object') {
84
+ for (const [childKey, childValue] of Object.entries(value)) {
85
+ if (typeof childValue === 'string' || typeof childValue === 'number') {
86
+ args.push(`--${key}`, childKey, childValue.toString());
87
+ }
88
+ else if (typeof childValue === 'boolean') {
89
+ if (childValue) {
90
+ args.push(`--${key}`, childKey);
91
+ }
92
+ }
93
+ else if (childValue == null) {
94
+ continue;
95
+ }
96
+ else if (Array.isArray(childValue)) {
97
+ if (childValue.every((el) => isPrimitive(el))) {
98
+ const primitives = childValue.filter((el) => el !== null && el !== undefined);
99
+ const joined = primitives.map((el) => el.toString()).join(',');
100
+ args.push(`--${key}`, childKey, joined);
101
+ }
102
+ else {
103
+ for (const el of childValue) {
104
+ if (el == null) {
105
+ continue;
106
+ }
107
+ if (typeof el === 'object') {
108
+ const mappingPaths = flattenMapping(el, [childKey]);
109
+ if (mappingPaths.length) {
110
+ args.push(`--${key}`, ...mappingPaths);
111
+ }
112
+ }
113
+ else if (isPrimitive(el)) {
114
+ args.push(`--${key}`, childKey, el.toString());
115
+ }
116
+ }
117
+ }
118
+ }
119
+ else if (typeof childValue === 'object') {
120
+ const mappingPaths = flattenMapping(childValue, []);
121
+ if (mappingPaths.length) {
122
+ args.push(`--${key}`, childKey, ...mappingPaths);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ return args;
129
+ }
130
+ //# sourceMappingURL=parseConfigToArgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseConfigToArgs.js","sourceRoot":"","sources":["../../src/lib/parseConfigToArgs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Checks if a command-line argument needs to be quoted when used in a command line.
3
+ *
4
+ * Arguments containing special characters like spaces, quotes, or shell metacharacters
5
+ * need to be wrapped in quotes to be properly interpreted by the shell.
6
+ *
7
+ * @param arg The command-line argument to check
8
+ * @returns True if the argument needs quotes, false otherwise
9
+ */
10
+ export declare function shouldQuoteCommandLineArg(arg: string): boolean;
11
+ //# sourceMappingURL=shouldQuoteCommandLineArg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shouldQuoteCommandLineArg.d.ts","sourceRoot":"","sources":["../../src/lib/shouldQuoteCommandLineArg.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAsB9D"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Checks if a command-line argument needs to be quoted when used in a command line.
3
+ *
4
+ * Arguments containing special characters like spaces, quotes, or shell metacharacters
5
+ * need to be wrapped in quotes to be properly interpreted by the shell.
6
+ *
7
+ * @param arg The command-line argument to check
8
+ * @returns True if the argument needs quotes, false otherwise
9
+ */
10
+ export function shouldQuoteCommandLineArg(arg) {
11
+ if (!arg)
12
+ return false;
13
+ // Check for spaces
14
+ if (arg.includes(' '))
15
+ return true;
16
+ // Check for quotes
17
+ if (arg.includes('"') || arg.includes("'"))
18
+ return true;
19
+ // Check for shell metacharacters and special characters
20
+ const shellSpecialChars = /[&|<>(){}[\]$;!*?~`\n\r\t#]/;
21
+ if (shellSpecialChars.test(arg))
22
+ return true;
23
+ // Check for control characters
24
+ // eslint-disable-next-line no-control-regex
25
+ if (/[\x00-\x1F\x7F]/.test(arg))
26
+ return true;
27
+ // Check if argument starts with a dash (to avoid confusion with options)
28
+ if (arg.startsWith('-') && !arg.startsWith('--'))
29
+ return true;
30
+ // Check for wildcards
31
+ return arg.includes('*') || arg.includes('?');
32
+ }
33
+ //# sourceMappingURL=shouldQuoteCommandLineArg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shouldQuoteCommandLineArg.js","sourceRoot":"","sources":["../../src/lib/shouldQuoteCommandLineArg.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,mBAAmB;IACnB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,mBAAmB;IACnB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAExD,wDAAwD;IACxD,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;IACxD,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,+BAA+B;IAC/B,4CAA4C;IAC5C,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,yEAAyE;IACzE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9D,sBAAsB;IACtB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Ora } from 'ora';
2
+ import { GeneratorFile } from './GeneratorFile.js';
3
+ export declare const writeGeneratorFiles: ({ spinner, fileItems, }: {
4
+ spinner: Ora;
5
+ fileItems: GeneratorFile[];
6
+ }) => Promise<void>;
7
+ //# sourceMappingURL=writeGeneratorFiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeGeneratorFiles.d.ts","sourceRoot":"","sources":["../../src/lib/writeGeneratorFiles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,eAAO,MAAM,mBAAmB,4BAG7B;IACD,OAAO,EAAE,GAAG,CAAC;IACb,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B,kBAGA,CAAC"}
@@ -0,0 +1,51 @@
1
+ import fs from 'node:fs';
2
+ import c from 'ansi-colors';
3
+ export const writeGeneratorFiles = async ({ spinner, fileItems, }) => {
4
+ await setupDirectories(spinner, fileItems);
5
+ await writeFiles(spinner, fileItems);
6
+ };
7
+ const setupDirectories = async (spinner, fileItems) => {
8
+ for (const fileItem of fileItems) {
9
+ if (!('directory' in fileItem))
10
+ continue;
11
+ if (fileItem.clean) {
12
+ spinner.text = `Cleaning ${c.magenta(fileItem.directory.pathname)}`;
13
+ try {
14
+ await fs.promises.rm(fileItem.directory, {
15
+ recursive: true,
16
+ force: true,
17
+ });
18
+ }
19
+ catch (error) {
20
+ spinner.fail(c.redBright(`Error occurred during ${c.magenta(fileItem.directory.pathname)} directory cleaning`));
21
+ throw error;
22
+ }
23
+ }
24
+ try {
25
+ spinner.text = `Creating directory ${c.magenta(fileItem.directory.pathname)}`;
26
+ await fs.promises.mkdir(fileItem.directory, { recursive: true });
27
+ }
28
+ catch (error) {
29
+ spinner.fail(c.redBright(`Error occurred during ${c.magenta(fileItem.directory.pathname)} directory creation`));
30
+ throw error;
31
+ }
32
+ }
33
+ };
34
+ const writeFiles = async (spinner, fileItems) => {
35
+ for (const fileItem of fileItems) {
36
+ if ('directory' in fileItem)
37
+ continue;
38
+ const { file, code } = fileItem;
39
+ spinner.text = `Writing ${c.magenta(file.pathname)}`;
40
+ try {
41
+ await fs.promises.writeFile(file, code, {
42
+ encoding: 'utf-8',
43
+ });
44
+ }
45
+ catch (error) {
46
+ spinner.fail(c.redBright(`Error occurred during ${c.magenta(file.pathname)} file writing`));
47
+ throw error;
48
+ }
49
+ }
50
+ };
51
+ //# sourceMappingURL=writeGeneratorFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeGeneratorFiles.js","sourceRoot":"","sources":["../../src/lib/writeGeneratorFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,CAAC,MAAM,aAAa,CAAC;AAI5B,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACxC,OAAO,EACP,SAAS,GAIV,EAAE,EAAE;IACH,MAAM,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAY,EAAE,SAA0B,EAAE,EAAE;IAC1E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,WAAW,IAAI,QAAQ,CAAC;YAAE,SAAS;QAEzC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAEpE,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE;oBACvC,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,IAAI;iBACZ,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,SAAS,CACT,yBAAyB,CAAC,CAAC,OAAO,CAChC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAC5B,qBAAqB,CACvB,CACF,CAAC;gBAEF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,GAAG,sBAAsB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAE9E,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,SAAS,CACT,yBAAyB,CAAC,CAAC,OAAO,CAChC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAC5B,qBAAqB,CACvB,CACF,CAAC;YAEF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,EAAE,OAAY,EAAE,SAA0B,EAAE,EAAE;IACpE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,WAAW,IAAI,QAAQ;YAAE,SAAS;QAEtC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAEhC,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;gBACtC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,SAAS,CACT,yBAAyB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CACjE,CACF,CAAC;YAEF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const packageVersion = "1.0.0-beta.0";
2
+ //# sourceMappingURL=packageVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageVersion.d.ts","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // This file was generated automatically
2
+ export const packageVersion = '1.0.0-beta.0';
3
+ //# sourceMappingURL=packageVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC"}
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "@qraft/plugin",
3
+ "version": "1.0.0-beta.0",
4
+ "packageManager": "yarn@4.0.2",
5
+ "type": "module",
6
+ "scripts": {
7
+ "build": "tsc --project tsconfig.build.json",
8
+ "dev": "yarn build --watch --noEmitOnError false",
9
+ "test": "vitest run --coverage",
10
+ "typecheck": "tsc --noEmit",
11
+ "lint": "eslint",
12
+ "clean": "rimraf dist/",
13
+ "write-package-version-file": "yarn exec ../../write-package-version-file.sh"
14
+ },
15
+ "module": "dist/index.js",
16
+ "types": "dist/index.d.ts",
17
+ "exports": {
18
+ "./package.json": "./package.json",
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ },
23
+ "./*": {
24
+ "types": "./dist/*.d.ts",
25
+ "import": "./dist/*.js"
26
+ }
27
+ },
28
+ "typesVersions": {
29
+ "*": {
30
+ "*": [
31
+ "dist/*"
32
+ ]
33
+ }
34
+ },
35
+ "dependencies": {
36
+ "@redocly/openapi-core": "^1.34.5",
37
+ "ansi-colors": "^4.1.3",
38
+ "commander": "^14.0.2",
39
+ "ora": "^8.2.0"
40
+ },
41
+ "devDependencies": {
42
+ "@openapi-qraft/eslint-config": "1.0.1",
43
+ "@qraft/test-utils": "1.0.0-beta.0",
44
+ "@types/node": "^20.16.5",
45
+ "@vitest/coverage-v8": "^3.2.4",
46
+ "eslint": "^9.39.1",
47
+ "rimraf": "^6.1.2",
48
+ "typescript": "^5.6.2",
49
+ "vitest": "^3.2.4"
50
+ },
51
+ "files": [
52
+ "dist",
53
+ "src",
54
+ "!dist/**/*.test.*",
55
+ "!dist/**/*.spec.*",
56
+ "!src/**/__snapshots__/**",
57
+ "!src/**/*.test.*",
58
+ "!src/**/*.spec.*"
59
+ ],
60
+ "publishConfig": {
61
+ "access": "public"
62
+ },
63
+ "repository": {
64
+ "type": "git",
65
+ "url": "git+https://github.com/OpenAPI-Qraft/openapi-qraft.git",
66
+ "directory": "packages/plugin"
67
+ }
68
+ }
package/src/index.ts ADDED
@@ -0,0 +1,12 @@
1
+ export {
2
+ normalizeOutputDirPath,
3
+ QraftCommand,
4
+ splitOptionFlags,
5
+ } from './lib/QraftCommand.js';
6
+ export { handleSchemaInput } from './lib/handleSchemaInput.js';
7
+ export type {
8
+ QraftCommandActionCallback,
9
+ QraftCommandActionOptions,
10
+ QraftCommandOptions,
11
+ } from './lib/QraftCommand.js';
12
+ export type { QraftCommandPlugin } from './lib/QraftCommandPlugin.js';
@@ -0,0 +1,5 @@
1
+ import type { URL } from 'node:url';
2
+
3
+ export type GeneratorFile =
4
+ | { file: URL; code: string }
5
+ | { directory: URL; clean: boolean };
@@ -0,0 +1,6 @@
1
+ import { URL } from 'node:url';
2
+
3
+ export interface OutputOptions {
4
+ dir: URL;
5
+ clean: boolean;
6
+ }