@bymbly/api-tools 1.0.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.
@@ -0,0 +1,155 @@
1
+ import { Command } from "@commander-js/extra-typings";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { getGlobals, parsePassthrough, resolveStdio, } from "./runtime.js";
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = path.dirname(__filename);
8
+ export function handleRawPassthrough(_option, cmd, passthroughFn) {
9
+ const [, passthrough] = parsePassthrough(process.argv, undefined);
10
+ if (passthrough.length === 0) {
11
+ cmd.help();
12
+ }
13
+ const globals = getGlobals(cmd);
14
+ const stdio = resolveStdio(globals);
15
+ const code = passthroughFn(passthrough, stdio);
16
+ process.exitCode = code;
17
+ }
18
+ export function runSingleInputCommand(run) {
19
+ const ctx = getSingleInputRunContext(run);
20
+ // fallback to default input if ctx.input is undefined
21
+ // this happens if commander treated first passthrough token as [input]
22
+ let one = ctx.input ?? run.input;
23
+ if (!one && run.defaultInput) {
24
+ try {
25
+ if (fs.existsSync(run.defaultInput)) {
26
+ one = run.defaultInput;
27
+ }
28
+ }
29
+ catch {
30
+ // ignore, will fall through to error below
31
+ }
32
+ }
33
+ if (!one) {
34
+ console.error(`
35
+ ❌ Error: no input document specified
36
+
37
+ Provide an input path or run with --help for usage.
38
+ `.trim());
39
+ process.exitCode = 1;
40
+ return;
41
+ }
42
+ processSingleInputs(run, ctx, [one]);
43
+ }
44
+ export function runBatchInputCommand(run) {
45
+ const ctx = getSingleInputRunContext(run);
46
+ const resolved = run.resolveDocuments(ctx.input, run.options);
47
+ if (resolved.inputs.length === 0) {
48
+ const checkedList = resolved.checked.map((p) => ` ${p}`).join("\n");
49
+ const scope = resolved.requested.length > 0 && resolved.requested[0] !== "explicit"
50
+ ? resolved.requested.join(", ")
51
+ : "specification";
52
+ console.error(`
53
+ ❌ Error: no input documents found
54
+
55
+ No input was provided, and no default ${scope} files were found in the current directory:
56
+
57
+ ${checkedList}
58
+
59
+ Provide an input path or create one of the above files and try again.
60
+ `.trim());
61
+ process.exitCode = 1;
62
+ return;
63
+ }
64
+ processSingleInputs(run, ctx, resolved.inputs);
65
+ }
66
+ export function runMultiInputCommand(run) {
67
+ const ctx = getMultiInputRunContext(run);
68
+ if (ctx.inputs.length < run.minInputs) {
69
+ console.error(`
70
+ ❌ Error: requires at least ${String(run.minInputs)} input documents
71
+
72
+ Provide input paths or run with --help for usage.
73
+ `.trim());
74
+ process.exitCode = 1;
75
+ return;
76
+ }
77
+ if (run.maxInputs && ctx.inputs.length > run.maxInputs) {
78
+ console.error(`
79
+ ❌ Error: maximum ${String(run.maxInputs)} inputs allowed
80
+
81
+ Run with --help for usage.
82
+ `.trim());
83
+ process.exitCode = 1;
84
+ return;
85
+ }
86
+ process.exitCode = run.execute({
87
+ inputs: ctx.inputs,
88
+ options: run.options,
89
+ globals: ctx.globals,
90
+ passthrough: ctx.passthrough,
91
+ });
92
+ }
93
+ function getSingleInputRunContext(run) {
94
+ const globals = getGlobals(run.cmd);
95
+ const [input, passthrough] = parsePassthrough(process.argv, run.input);
96
+ return { globals, input, passthrough };
97
+ }
98
+ function getMultiInputRunContext(run) {
99
+ const globals = getGlobals(run.cmd);
100
+ const inputs = run.inputs;
101
+ // for multi-input, we don't need to track individual inputs
102
+ // commander handles the positional args, we just need the passthrough args
103
+ const [, passthrough] = parsePassthrough(process.argv, undefined);
104
+ return { globals, inputs, passthrough };
105
+ }
106
+ function processSingleInputs(run, ctx, inputs) {
107
+ const results = inputs.map((docInput) => ({
108
+ input: docInput,
109
+ exitCode: run.execute({
110
+ input: docInput,
111
+ options: run.options,
112
+ globals: ctx.globals,
113
+ passthrough: ctx.passthrough,
114
+ }),
115
+ }));
116
+ process.exitCode = results.some((r) => r.exitCode !== 0) ? 1 : 0;
117
+ }
118
+ export function createInitCommand(configFilename) {
119
+ return new Command("init")
120
+ .description(`Create a ${configFilename} in the current directory`)
121
+ .option("-f, --force", "Overwrite existing file", false)
122
+ .action((options) => {
123
+ initConfig(configFilename, options.force);
124
+ });
125
+ }
126
+ function initConfig(configFilename, force) {
127
+ const bundledPath = path.join(__dirname, "../../defaults/", configFilename);
128
+ const targetPath = path.join(process.cwd(), configFilename);
129
+ if (fs.existsSync(targetPath) && !force) {
130
+ console.error(`
131
+ ❌ Error: ${configFilename} already exists
132
+
133
+ Use --force to overwrite the existing file.
134
+ `.trim());
135
+ process.exitCode = 1;
136
+ return;
137
+ }
138
+ try {
139
+ fs.copyFileSync(bundledPath, targetPath);
140
+ console.log(`✅ Created ${configFilename}`);
141
+ }
142
+ catch (error) {
143
+ const message = errorMessage(error);
144
+ console.error(`
145
+ ❌ Error: failed to create ${configFilename}
146
+
147
+ ${message}
148
+ `.trim());
149
+ process.exitCode = 1;
150
+ }
151
+ }
152
+ export function errorMessage(error) {
153
+ return error instanceof Error ? error.message : String(error);
154
+ }
155
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/cli/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { Command } from "@commander-js/extra-typings";
2
+ import { redoclyCommand } from "../redocly/command.js";
3
+ import { spectralCommand } from "../spectral/command.js";
4
+ export function buildProgram() {
5
+ return new Command()
6
+ .name("api-tools")
7
+ .description("Unified API tooling")
8
+ .configureHelp({
9
+ sortSubcommands: true,
10
+ sortOptions: true,
11
+ })
12
+ .option("--quiet", "Disable wrapper logging (still shows underlying CLI output)", false)
13
+ .option("--silent", "Disable wrapper logging and underlying CLI output", false)
14
+ .option("--cwd <path>", "Run as if started in this directory")
15
+ .hook("preAction", (thisCommand) => {
16
+ const opts = thisCommand.opts();
17
+ if (opts.cwd)
18
+ process.chdir(opts.cwd);
19
+ })
20
+ .addCommand(spectralCommand)
21
+ .addCommand(redoclyCommand);
22
+ }
23
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/lib/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,OAAO,EAAE;SACjB,IAAI,CAAC,WAAW,CAAC;SACjB,WAAW,CAAC,qBAAqB,CAAC;SAClC,aAAa,CAAC;QACb,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;KAClB,CAAC;SACD,MAAM,CACL,SAAS,EACT,6DAA6D,EAC7D,KAAK,CACN;SACA,MAAM,CACL,UAAU,EACV,mDAAmD,EACnD,KAAK,CACN;SACA,MAAM,CAAC,cAAc,EAAE,qCAAqC,CAAC;SAE7D,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC,CAAC;SACD,UAAU,CAAC,eAAe,CAAC;SAC3B,UAAU,CAAC,cAAc,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,88 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import path from "node:path";
5
+ const nodeRequire = createRequire(import.meta.url);
6
+ export function resolveStdio(globals) {
7
+ return globals.silent ? "ignore" : "inherit";
8
+ }
9
+ export function isQuiet(globals) {
10
+ return globals.quiet === true || globals.silent === true;
11
+ }
12
+ export function runCli(binPath, args, stdio) {
13
+ const bin = nodeRequire.resolve(binPath);
14
+ const res = spawnSync(process.execPath, [bin, ...args], { stdio });
15
+ if (res.error)
16
+ throw res.error;
17
+ return res.status ?? 0;
18
+ }
19
+ export function parsePassthrough(argv, input) {
20
+ const i = argv.indexOf("--");
21
+ if (i < 0)
22
+ return [input, []];
23
+ const passthrough = argv.slice(i + 1);
24
+ // if commander treated first passthrough token as [input], put it back
25
+ if (input !== undefined &&
26
+ passthrough.length > 0 &&
27
+ input === passthrough[0]) {
28
+ return [undefined, passthrough];
29
+ }
30
+ return [input, passthrough];
31
+ }
32
+ export function getGlobals(cmd) {
33
+ return cmd.optsWithGlobals();
34
+ }
35
+ export const SPEC_TYPES = [
36
+ { flag: "openapi", defaultPath: "openapi/openapi.yaml", name: "OpenAPI" },
37
+ {
38
+ flag: "asyncapi",
39
+ defaultPath: "asyncapi/asyncapi.yaml",
40
+ name: "AsyncAPI",
41
+ },
42
+ { flag: "arazzo", defaultPath: "arazzo/arazzo.yaml", name: "Arazzo" },
43
+ ];
44
+ export function resolveDocuments(input, options) {
45
+ // if explicit input provided, only use that
46
+ if (input) {
47
+ return { inputs: [input], checked: [input], requested: ["explicit"] };
48
+ }
49
+ const requestedTypes = SPEC_TYPES.filter((type) => options[type.flag]);
50
+ const typesToCheck = requestedTypes.length > 0 ? requestedTypes : SPEC_TYPES;
51
+ const checked = typesToCheck.map((t) => t.defaultPath);
52
+ const requested = typesToCheck.map((t) => t.name);
53
+ const inputs = typesToCheck
54
+ .filter((type) => {
55
+ try {
56
+ return fs.existsSync(type.defaultPath);
57
+ }
58
+ catch {
59
+ return false;
60
+ }
61
+ })
62
+ .map((type) => type.defaultPath);
63
+ return { inputs, checked, requested };
64
+ }
65
+ export function hasLocalConfig(pattern) {
66
+ try {
67
+ return fs
68
+ .readdirSync(process.cwd(), { withFileTypes: true })
69
+ .some((f) => f.isFile() && pattern.test(f.name));
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ export function resolveConfigRuntime(cliConfig, localPattern, defaultPath) {
76
+ if (cliConfig)
77
+ return { path: cliConfig, source: "cli" };
78
+ if (hasLocalConfig(localPattern))
79
+ return { path: undefined, source: "local" };
80
+ return { path: defaultPath, source: "bundled" };
81
+ }
82
+ export function ensureDirectoryExists(filePath) {
83
+ const dir = path.dirname(filePath);
84
+ if (!fs.existsSync(dir)) {
85
+ fs.mkdirSync(dir, { recursive: true });
86
+ }
87
+ }
88
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/lib/cli/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Command } from "@commander-js/extra-typings";
2
+ import { runSingleInputCommand, } from "../cli/helpers.js";
3
+ import { isQuiet, resolveStdio } from "../cli/runtime.js";
4
+ import { resolveConfig, run } from "./cli.js";
5
+ export const buildDocsCommand = new Command("build-docs")
6
+ .description("Build HTML documentation from OpenAPI documents using Redocly")
7
+ .argument("[input]", "OpenAPI document path (default: openapi/openapi.yaml)")
8
+ .option("--output <file>", "Output HTML file path", "dist/docs/openapi.html")
9
+ .option("--config <file>", "Config file path (overrides auto/bundled)")
10
+ .allowExcessArguments(true)
11
+ .action(runBuildDocs);
12
+ function runBuildDocs(input, options, cmd) {
13
+ runSingleInputCommand({
14
+ input,
15
+ options,
16
+ cmd,
17
+ defaultInput: "openapi/openapi.yaml",
18
+ execute: buildDocs,
19
+ });
20
+ }
21
+ export function buildDocs(params) {
22
+ const { input, options, globals } = params;
23
+ const config = resolveConfig(options.config);
24
+ const args = buildArgs(params, config);
25
+ const stdio = resolveStdio(globals);
26
+ const quiet = isQuiet(globals);
27
+ if (!quiet) {
28
+ console.log(`📚 Redocly build-docs...`);
29
+ console.log(` Input: ${input}`);
30
+ console.log(` Output: ${options.output}`);
31
+ console.log(` Config: ${config.path ?? "auto"} (${config.source})`);
32
+ }
33
+ return run(args, stdio);
34
+ }
35
+ function buildArgs(params, config) {
36
+ const { input, options, passthrough } = params;
37
+ const args = ["build-docs", input, "--output", options.output];
38
+ // only pass --config if we resolved an explicit path (cli or bundled)
39
+ if (config.path)
40
+ args.push("--config", config.path);
41
+ // forward any passthrough args to redocly
42
+ if (passthrough.length > 0) {
43
+ args.push(...passthrough);
44
+ }
45
+ return args;
46
+ }
47
+ //# sourceMappingURL=build-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-docs.js","sourceRoot":"","sources":["../../../src/lib/redocly/build-docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsB,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EACL,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAkB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAO9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;KACtD,WAAW,CAAC,+DAA+D,CAAC;KAC5E,QAAQ,CAAC,SAAS,EAAE,uDAAuD,CAAC;KAE5E,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,wBAAwB,CAAC;KAC5E,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;KACtE,oBAAoB,CAAC,IAAI,CAAC;KAC1B,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,SAAS,YAAY,CACnB,KAAyB,EACzB,OAAgB,EAChB,GAAuB;IAEvB,qBAAqB,CAAC;QACpB,KAAK;QACL,OAAO;QACP,GAAG;QACH,YAAY,EAAE,sBAAsB;QACpC,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAyC;IACjE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE3C,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,SAAS,CAChB,MAAyC,EACzC,MAAsB;IAEtB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE/C,MAAM,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/D,sEAAsE;IACtE,IAAI,MAAM,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAEpD,0CAA0C;IAC1C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { Command, Option, } from "@commander-js/extra-typings";
2
+ import { runSingleInputCommand, } from "../cli/helpers.js";
3
+ import { isQuiet, resolveStdio } from "../cli/runtime.js";
4
+ import { resolveConfig, run } from "./cli.js";
5
+ const VALID_EXTENSIONS = ["json", "yaml", "yml"];
6
+ export const bundleCommand = new Command("bundle")
7
+ .description("Bundle API descriptions into a single file using Redocly")
8
+ .argument("[input]", "Document path (default: openapi/openapi.yaml)")
9
+ .option("--output <file>", "Output file or directory path (default: dist/bundle/openapi.yaml)", "dist/bundle/openapi.yaml")
10
+ .addOption(new Option("--ext <extension>", "Output file extension (overrides extension in --output)").choices([...VALID_EXTENSIONS]))
11
+ .option("--config <file>", "Config file path (overrides auto/bundled)")
12
+ .option("--dereferenced", "Generate fully dereferenced bundle (no $ref)", false)
13
+ .allowExcessArguments(true)
14
+ .action(runBundle);
15
+ function runBundle(input, options, cmd) {
16
+ runSingleInputCommand({
17
+ input,
18
+ options,
19
+ cmd,
20
+ defaultInput: "openapi/openapi.yaml",
21
+ execute: bundle,
22
+ });
23
+ }
24
+ export function bundle(params) {
25
+ const { input, options, globals } = params;
26
+ const config = resolveConfig(options.config);
27
+ const args = buildArgs(params, config);
28
+ const stdio = resolveStdio(globals);
29
+ const quiet = isQuiet(globals);
30
+ if (!quiet) {
31
+ console.log(`📦 Redocly bundle...`);
32
+ console.log(` Input: ${input}`);
33
+ console.log(` Output: ${options.output}`);
34
+ if (options.ext) {
35
+ console.log(` Extension: ${options.ext}`);
36
+ }
37
+ console.log(` Config: ${config.path ?? "auto"} (${config.source})`);
38
+ }
39
+ return run(args, stdio);
40
+ }
41
+ function buildArgs(params, config) {
42
+ const { input, options, passthrough } = params;
43
+ const args = ["bundle", input, "--output", options.output];
44
+ // only pass --config if we resolved an explicit path (cli or bundled)
45
+ if (config.path)
46
+ args.push("--config", config.path);
47
+ if (options.ext) {
48
+ args.push("--ext", options.ext);
49
+ }
50
+ if (options.dereferenced) {
51
+ args.push("--dereferenced");
52
+ }
53
+ // forward any passthrough args to redocly
54
+ if (passthrough.length > 0) {
55
+ args.push(...passthrough);
56
+ }
57
+ return args;
58
+ }
59
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/lib/redocly/bundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import { resolveConfigRuntime, runCli, } from "../cli/runtime.js";
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = path.dirname(__filename);
6
+ export const BIN_PATH = "@redocly/cli/bin/cli.js";
7
+ const CONFIG_REGEX = /^\.?redocly\.ya?ml$/;
8
+ const DEFAULT_CONFIG_PATH = path.join(__dirname, "../../defaults/redocly.yaml");
9
+ export function resolveConfig(cliConfig) {
10
+ return resolveConfigRuntime(cliConfig, CONFIG_REGEX, DEFAULT_CONFIG_PATH);
11
+ }
12
+ export function run(args, stdio) {
13
+ return runCli(BIN_PATH, args, stdio);
14
+ }
15
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/lib/redocly/cli.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,oBAAoB,EAEpB,MAAM,GAEP,MAAM,mBAAmB,CAAC;AAE3B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,CAAC,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAElD,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAC3C,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;AAEhF,MAAM,UAAU,aAAa,CAAC,SAA6B;IACzD,OAAO,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAc,EAAE,KAAgB;IAClD,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Command } from "@commander-js/extra-typings";
2
+ import { createInitCommand, handleRawPassthrough } from "../cli/helpers.js";
3
+ import { buildDocsCommand } from "./build-docs.js";
4
+ import { bundleCommand } from "./bundle.js";
5
+ import { run } from "./cli.js";
6
+ import { generateArazzoCommand } from "./generate-arazzo.js";
7
+ import { joinCommand } from "./join.js";
8
+ import { lintCommand } from "./lint.js";
9
+ import { respectCommand } from "./respect.js";
10
+ export const redoclyCommand = new Command("redocly")
11
+ .description("Redocly-related commands")
12
+ .allowExcessArguments(true)
13
+ .configureHelp({
14
+ sortSubcommands: true,
15
+ sortOptions: true,
16
+ })
17
+ .action((opts, cmd) => {
18
+ handleRawPassthrough(opts, cmd, run);
19
+ })
20
+ .addCommand(createInitCommand("redocly.yaml"))
21
+ .addCommand(lintCommand)
22
+ .addCommand(buildDocsCommand)
23
+ .addCommand(bundleCommand)
24
+ .addCommand(generateArazzoCommand)
25
+ .addCommand(respectCommand)
26
+ .addCommand(joinCommand);
27
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/lib/redocly/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,0BAA0B,CAAC;KACvC,oBAAoB,CAAC,IAAI,CAAC;KAC1B,aAAa,CAAC;IACb,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,IAAI;CAClB,CAAC;KACD,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACpB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC;KACD,UAAU,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;KAC7C,UAAU,CAAC,WAAW,CAAC;KACvB,UAAU,CAAC,gBAAgB,CAAC;KAC5B,UAAU,CAAC,aAAa,CAAC;KACzB,UAAU,CAAC,qBAAqB,CAAC;KACjC,UAAU,CAAC,cAAc,CAAC;KAC1B,UAAU,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { Command } from "@commander-js/extra-typings";
2
+ import { runSingleInputCommand, } from "../cli/helpers.js";
3
+ import { ensureDirectoryExists, isQuiet, resolveStdio, } from "../cli/runtime.js";
4
+ import { run } from "./cli.js";
5
+ export const generateArazzoCommand = new Command("generate-arazzo")
6
+ .description("Generate Arazzo workflow description from an OpenAPI document using Redocly (requires manual editing to be functional)")
7
+ .argument("[input]", "OpenAPI document path (default: openapi/openapi.yaml)")
8
+ .option("--output <file>", "Output file path", "arazzo/auto-generated.arazzo.yaml")
9
+ .allowExcessArguments(true)
10
+ .action(runGenerateArazzo);
11
+ function runGenerateArazzo(input, options, cmd) {
12
+ runSingleInputCommand({
13
+ input,
14
+ options,
15
+ cmd,
16
+ defaultInput: "openapi/openapi.yaml",
17
+ execute: generateArazzo,
18
+ });
19
+ }
20
+ export function generateArazzo(params) {
21
+ const { input, options, globals } = params;
22
+ ensureDirectoryExists(options.output);
23
+ const args = buildArgs(params);
24
+ const stdio = resolveStdio(globals);
25
+ const quiet = isQuiet(globals);
26
+ if (!quiet) {
27
+ console.log(`🔄 Redocly generate-arazzo...`);
28
+ console.log(` Input: ${input}`);
29
+ console.log(` Output: ${options.output}`);
30
+ }
31
+ return run(args, stdio);
32
+ }
33
+ function buildArgs(params) {
34
+ const { input, options, passthrough } = params;
35
+ const args = ["generate-arazzo", input, "--output-file", options.output];
36
+ // forward any passthrough args to redocly
37
+ if (passthrough.length > 0) {
38
+ args.push(...passthrough);
39
+ }
40
+ return args;
41
+ }
42
+ //# sourceMappingURL=generate-arazzo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-arazzo.js","sourceRoot":"","sources":["../../../src/lib/redocly/generate-arazzo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsB,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAEL,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,OAAO,EACP,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAM/B,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC;KAChE,WAAW,CACV,wHAAwH,CACzH;KACA,QAAQ,CAAC,SAAS,EAAE,uDAAuD,CAAC;KAE5E,MAAM,CACL,iBAAiB,EACjB,kBAAkB,EAClB,mCAAmC,CACpC;KACA,oBAAoB,CAAC,IAAI,CAAC;KAC1B,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,SAAS,iBAAiB,CACxB,KAAyB,EACzB,OAAgB,EAChB,GAAuB;IAEvB,qBAAqB,CAAC;QACpB,KAAK;QACL,OAAO;QACP,GAAG;QACH,YAAY,EAAE,sBAAsB;QACpC,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAAyC;IAEzC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE3C,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,SAAS,CAAC,MAAyC;IAC1D,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE/C,MAAM,IAAI,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzE,0CAA0C;IAC1C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { Command, Option, } from "@commander-js/extra-typings";
2
+ import { runMultiInputCommand, } from "../cli/helpers.js";
3
+ import { isQuiet, resolveStdio } from "../cli/runtime.js";
4
+ import { resolveConfig, run } from "./cli.js";
5
+ export const joinCommand = new Command("join")
6
+ .description("Join multiple OpenAPI 3.x documents into a single file")
7
+ .argument("<inputs...>", "Documents to join (at least 2 required)")
8
+ .option("--output <file>", "Output file path (default: dist/join/openapi.yaml)", "dist/join/openapi.yaml")
9
+ .option("--prefix-components-with-info-prop <property>", "Prefix component names with info property to resolve conflicts (e.g., version, title)")
10
+ .addOption(new Option("--prefix-tags-with-info-prop <property>", "Prefix tag names with info property (e.g., title, version)").conflicts(["prefixTagsWithFilename", "withoutXTagGroups"]))
11
+ .addOption(new Option("--prefix-tags-with-filename", "Prefix tag names with filename to resolve conflicts")
12
+ .default(false)
13
+ .conflicts(["prefixTagsWithInfoProp", "withoutXTagGroups"]))
14
+ .addOption(new Option("--without-x-tag-groups", "Skip automated x-tagGroups creation (avoids tag duplication)")
15
+ .default(false)
16
+ .conflicts(["prefixTagsWithInfoProp", "prefixTagsWithFilename"]))
17
+ .option("--config <file>", "Config file path (overrides auto/bundled)")
18
+ .allowExcessArguments(true)
19
+ .action(runJoin);
20
+ function runJoin(apis, options, cmd) {
21
+ runMultiInputCommand({
22
+ inputs: apis,
23
+ options,
24
+ cmd,
25
+ minInputs: 2,
26
+ execute: join,
27
+ });
28
+ }
29
+ export function join(params) {
30
+ const { inputs, options, globals } = params;
31
+ const config = resolveConfig(options.config);
32
+ const args = buildArgs(params, config);
33
+ const stdio = resolveStdio(globals);
34
+ const quiet = isQuiet(globals);
35
+ if (!quiet) {
36
+ console.log(`🔗 Redocly join...`);
37
+ console.log(` Inputs: ${inputs.join(", ")}`);
38
+ console.log(` Output: ${options.output}`);
39
+ if (options.prefixComponentsWithInfoProp) {
40
+ console.log(` Prefix Components With Info Prop: ${options.prefixComponentsWithInfoProp}`);
41
+ }
42
+ if (options.prefixTagsWithInfoProp) {
43
+ console.log(` Prefix Tags With Info Prop: ${options.prefixTagsWithInfoProp}`);
44
+ }
45
+ if (options.prefixTagsWithFilename) {
46
+ console.log(` Prefix Tags With Filename: true`);
47
+ }
48
+ if (options.withoutXTagGroups) {
49
+ console.log(` Without x-tagGroups: true`);
50
+ }
51
+ console.log(` Config: ${config.path ?? "auto"} (${config.source})`);
52
+ }
53
+ return run(args, stdio);
54
+ }
55
+ function buildArgs(params, config) {
56
+ const { inputs, options, passthrough } = params;
57
+ const args = ["join", ...inputs, "--output", options.output];
58
+ // only pass --config if we resolved an explicit path (cli or bundled)
59
+ if (config.path)
60
+ args.push("--config", config.path);
61
+ if (options.prefixComponentsWithInfoProp) {
62
+ args.push("--prefix-components-with-info-prop", options.prefixComponentsWithInfoProp);
63
+ }
64
+ if (options.prefixTagsWithInfoProp) {
65
+ args.push("--prefix-tags-with-info-prop", options.prefixTagsWithInfoProp);
66
+ }
67
+ if (options.prefixTagsWithFilename) {
68
+ args.push("--prefix-tags-with-filename");
69
+ }
70
+ if (options.withoutXTagGroups) {
71
+ args.push("--without-x-tag-groups");
72
+ }
73
+ // forward any passthrough args to redocly
74
+ if (passthrough.length > 0) {
75
+ args.push(...passthrough);
76
+ }
77
+ return args;
78
+ }
79
+ //# sourceMappingURL=join.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/lib/redocly/join.ts"],"names":[],"mappings":"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"}