@sdk-it/command 0.45.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -6,8 +6,8 @@ import { forEachOperation as forEachOperation2, loadSpec, toIR } from "@sdk-it/s
6
6
  // packages/command/src/lib/build-op-command.ts
7
7
  import { Command, Option as Option2 } from "commander";
8
8
  import { ZodError } from "zod";
9
- import { buildInput as buildInput2, operationSchema as operationSchema2 } from "@sdk-it/typescript";
10
9
  import { schemaToZod } from "@sdk-it/rpc";
10
+ import { buildInput as buildInput2, operationSchema as operationSchema2 } from "@sdk-it/typescript";
11
11
 
12
12
  // packages/command/src/lib/flags.ts
13
13
  import { InvalidArgumentError, Option } from "commander";
@@ -307,10 +307,7 @@ function buildOpCommand({
307
307
  )
308
308
  );
309
309
  cmd.addOption(
310
- new Option2(
311
- "--describe",
312
- "Print this operation's schema as JSON and exit"
313
- )
310
+ new Option2("--describe", "Print this operation's schema as JSON and exit")
314
311
  );
315
312
  if (flagMap.skipped.length) {
316
313
  const hints = flagMap.skipped.map((s) => ` --${s.name}: ${s.reason}`).join("\n");
@@ -370,7 +367,10 @@ function coerceSpec(spec) {
370
367
  }
371
368
  async function command(spec, options) {
372
369
  const raw = await coerceSpec(spec);
373
- const ir = toIR({ spec: raw, responses: { flattenErrorResponses: true } });
370
+ const ir = await toIR({
371
+ spec: raw,
372
+ responses: { flattenErrorResponses: true }
373
+ });
374
374
  const envPrefix = options.name.replace(/[^a-zA-Z0-9]/g, "_").toUpperCase();
375
375
  const tokenEnv = options.tokenEnv ?? `${envPrefix}_TOKEN`;
376
376
  const baseUrlEnv = options.baseUrlEnv ?? `${envPrefix}_BASE_URL`;
@@ -392,22 +392,13 @@ async function command(spec, options) {
392
392
  if (options.description) program.description(options.description);
393
393
  if (options.version) program.version(options.version);
394
394
  program.addOption(
395
- new Option3(
396
- "--token <token>",
397
- `API bearer token (or set $${tokenEnv})`
398
- )
395
+ new Option3("--token <token>", `API bearer token (or set $${tokenEnv})`)
399
396
  );
400
397
  program.addOption(
401
- new Option3(
402
- "--base-url <url>",
403
- `API base URL (or set $${baseUrlEnv})`
404
- )
398
+ new Option3("--base-url <url>", `API base URL (or set $${baseUrlEnv})`)
405
399
  );
406
400
  program.addOption(
407
- new Option3("--output <mode>", "Output format").choices([
408
- "json",
409
- "raw"
410
- ]).default("json")
401
+ new Option3("--output <mode>", "Output format").choices(["json", "raw"]).default("json")
411
402
  );
412
403
  program.hook("preAction", (thisCommand) => {
413
404
  const opts = thisCommand.opts();
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/lib/command.ts", "../src/lib/build-op-command.ts", "../src/lib/flags.ts", "../src/lib/input.ts", "../src/lib/introspect.ts", "../src/lib/output.ts"],
4
- "sourcesContent": ["import { Command, Option } from 'commander';\nimport type { OpenAPIObject } from 'openapi3-ts/oas31';\n\nimport { type ClientOptions, createRpc } from '@sdk-it/rpc';\nimport { forEachOperation, loadSpec, toIR } from '@sdk-it/spec';\n\nimport { buildOpCommand } from './build-op-command.ts';\nimport { describeAllOperations } from './introspect.ts';\n\nexport interface CommandOptions extends Partial<ClientOptions> {\n name: string;\n description?: string;\n version?: string;\n tokenEnv?: string;\n baseUrlEnv?: string;\n}\n\nfunction coerceSpec(\n spec: string | OpenAPIObject,\n): Promise<OpenAPIObject> {\n if (typeof spec === 'string') return loadSpec(spec);\n return Promise.resolve(spec);\n}\n\nexport async function command(\n spec: string | OpenAPIObject,\n options: CommandOptions,\n): Promise<Command> {\n const raw = await coerceSpec(spec);\n const ir = toIR({ spec: raw, responses: { flattenErrorResponses: true } });\n\n const envPrefix = options.name.replace(/[^a-zA-Z0-9]/g, '_').toUpperCase();\n const tokenEnv = options.tokenEnv ?? `${envPrefix}_TOKEN`;\n const baseUrlEnv = options.baseUrlEnv ?? `${envPrefix}_BASE_URL`;\n\n const envToken = process.env[tokenEnv];\n const envBaseUrl = process.env[baseUrlEnv];\n const resolvedBaseUrl =\n options.baseUrl ?? envBaseUrl ?? ir.servers?.[0]?.url;\n\n if (!resolvedBaseUrl) {\n throw new Error(\n `No base URL available. Pass options.baseUrl, set $${baseUrlEnv}, or add a servers entry to the OpenAPI spec.`,\n );\n }\n\n const client = createRpc(ir, {\n token: options.token ?? envToken,\n baseUrl: resolvedBaseUrl,\n fetch: options.fetch,\n headers: options.headers,\n });\n\n const program = new Command(options.name);\n if (options.description) program.description(options.description);\n if (options.version) program.version(options.version);\n\n program.addOption(\n new Option(\n '--token <token>',\n `API bearer token (or set $${tokenEnv})`,\n ),\n );\n program.addOption(\n new Option(\n '--base-url <url>',\n `API base URL (or set $${baseUrlEnv})`,\n ),\n );\n program.addOption(\n new Option('--output <mode>', 'Output format').choices([\n 'json',\n 'raw',\n ]).default('json'),\n );\n\n program.hook('preAction', (thisCommand) => {\n const opts = thisCommand.opts() as Record<string, unknown>;\n const override: Partial<ClientOptions> = {};\n if (typeof opts.token === 'string') override.token = opts.token;\n if (typeof opts.baseUrl === 'string') override.baseUrl = opts.baseUrl;\n if (Object.keys(override).length) {\n client.setOptions(override);\n }\n });\n\n forEachOperation(ir, (entry, operation) => {\n program.addCommand(\n buildOpCommand({\n ir,\n operation,\n method: entry.method,\n path: entry.path,\n client,\n }),\n );\n });\n\n program.addCommand(\n new Command('schema')\n .description('Print all operation schemas as JSON')\n .action(() => {\n const all = describeAllOperations(ir);\n process.stdout.write(JSON.stringify(all, null, 2) + '\\n');\n }),\n );\n\n return program;\n}\n", "import { Command, Option } from 'commander';\nimport { ZodError } from 'zod';\n\nimport type { Client } from '@sdk-it/rpc';\nimport type { IR, TunedOperationObject } from '@sdk-it/spec';\nimport { buildInput, operationSchema } from '@sdk-it/typescript';\nimport { schemaToZod } from '@sdk-it/rpc';\n\nimport { addFlagsFromSchema } from './flags.ts';\nimport { resolveInput } from './input.ts';\nimport { describeOperation } from './introspect.ts';\nimport {\n type OutputMode,\n writeError,\n writeOutput,\n} from './output.ts';\n\ninterface BuildOpCommandArgs {\n ir: IR;\n operation: TunedOperationObject;\n method: string;\n path: string;\n client: Client;\n}\n\nexport function buildOpCommand({\n ir,\n operation,\n method,\n path,\n client,\n}: BuildOpCommandArgs): Command {\n const name = operation['x-fn-name'] ?? operation.operationId;\n const summary = operation.summary ?? operation.description ?? '';\n\n const cmd = new Command(name).description(summary);\n\n const details = buildInput(ir, operation);\n const inputJsonSchema = operationSchema(ir, operation, details.ct);\n const inputZodSchema = schemaToZod(inputJsonSchema, ir, { required: true });\n const flagMap = addFlagsFromSchema(cmd, inputJsonSchema, ir);\n\n cmd.addOption(\n new Option(\n '--input-file <path>',\n 'Read input JSON from file (merged with flags and stdin)',\n ),\n );\n cmd.addOption(\n new Option(\n '--describe',\n 'Print this operation\\'s schema as JSON and exit',\n ),\n );\n\n if (flagMap.skipped.length) {\n const hints = flagMap.skipped\n .map((s) => ` --${s.name}: ${s.reason}`)\n .join('\\n');\n cmd.addHelpText(\n 'after',\n `\\nFields supplied via --input-file or stdin only:\\n${hints}`,\n );\n }\n\n const endpoint = `${method.toUpperCase()} ${path}`;\n\n cmd.action(async (_: unknown, thisCommand: Command) => {\n const opts = thisCommand.optsWithGlobals() as Record<string, unknown>;\n\n if (opts.describe) {\n const desc = describeOperation(ir, operation, method, path);\n process.stdout.write(JSON.stringify(desc, null, 2) + '\\n');\n return;\n }\n\n const outputMode = (opts.output as OutputMode) ?? 'json';\n const inputFile = opts.inputFile as string | undefined;\n\n const flagValues: Record<string, unknown> = {};\n for (const n of flagMap.names) {\n if (opts[n] !== undefined) flagValues[n] = opts[n];\n }\n\n let input: unknown;\n try {\n input = await resolveInput({\n flags: flagValues,\n inputFile,\n schema: inputZodSchema,\n flagNames: flagMap.names,\n });\n } catch (err) {\n if (err instanceof ZodError) {\n writeError({ message: 'Invalid input', issues: err.issues });\n } else {\n writeError(err);\n }\n process.exitCode = 2;\n return;\n }\n\n try {\n const response = await client.request(endpoint, input as never);\n writeOutput(response, outputMode);\n } catch (err) {\n writeError(err);\n process.exitCode = 1;\n }\n });\n\n return cmd;\n}\n", "import { type Command, InvalidArgumentError, Option } from 'commander';\nimport type { ReferenceObject, SchemaObject } from 'openapi3-ts/oas31';\n\nimport { followRef, isRef } from '@sdk-it/core';\nimport type { IR } from '@sdk-it/spec';\n\nfunction resolve(\n ir: IR,\n schema: SchemaObject | ReferenceObject,\n): SchemaObject {\n return isRef(schema) ? (followRef(ir, schema.$ref) as SchemaObject) : schema;\n}\n\nfunction isPrimitiveType(type: unknown): boolean {\n return (\n type === 'string' ||\n type === 'number' ||\n type === 'integer' ||\n type === 'boolean' ||\n type === 'null'\n );\n}\n\nfunction canBeFlag(ir: IR, schema: SchemaObject): boolean {\n if (schema.oneOf || schema.anyOf || schema.allOf) return false;\n if (schema.enum) return true;\n const type = schema.type;\n if (Array.isArray(type)) {\n return type.every((t) => isPrimitiveType(t));\n }\n if (isPrimitiveType(type)) return true;\n if (type === 'array' && schema.items) {\n const items = Array.isArray(schema.items)\n ? schema.items[0]\n : schema.items;\n if (!items) return false;\n const resolved = resolve(ir, items);\n const itemType = resolved.type;\n return (\n !resolved.oneOf &&\n !resolved.anyOf &&\n !resolved.allOf &&\n (isPrimitiveType(itemType) || !!resolved.enum)\n );\n }\n return false;\n}\n\nfunction coerceNumber(value: string, integer: boolean): number {\n const n = Number(value);\n if (Number.isNaN(n)) {\n throw new InvalidArgumentError(`\"${value}\" is not a valid number`);\n }\n return integer ? Math.trunc(n) : n;\n}\n\nfunction coerceBoolean(value: string): boolean {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on') {\n return true;\n }\n if (\n lower === 'false' ||\n lower === '0' ||\n lower === 'no' ||\n lower === 'off'\n ) {\n return false;\n }\n throw new InvalidArgumentError(`\"${value}\" is not a valid boolean`);\n}\n\nfunction describe(schema: SchemaObject, required: boolean): string {\n const base = schema.description ?? '';\n const pieces: string[] = [];\n if (schema.type) pieces.push(String(schema.type));\n if (schema.format) pieces.push(`format: ${schema.format}`);\n if (required) pieces.push('required');\n if (schema.default !== undefined) {\n pieces.push(`default: ${JSON.stringify(schema.default)}`);\n }\n const tag = pieces.length ? ` (${pieces.join(', ')})` : '';\n return base + tag;\n}\n\nexport interface FlagMap {\n names: Set<string>;\n skipped: Array<{ name: string; reason: string }>;\n}\n\nexport function addFlagsFromSchema(\n command: Command,\n schema: SchemaObject,\n ir: IR,\n): FlagMap {\n const names = new Set<string>();\n const skipped: FlagMap['skipped'] = [];\n const properties = schema.properties ?? {};\n const required = new Set(schema.required ?? []);\n\n for (const [name, propOrRef] of Object.entries(properties)) {\n const prop = resolve(ir, propOrRef as SchemaObject | ReferenceObject);\n if (!canBeFlag(ir, prop)) {\n skipped.push({\n name,\n reason: 'complex schema \u2014 supply via --input-file or stdin',\n });\n continue;\n }\n\n const isRequired = required.has(name);\n const desc = describe(prop, isRequired);\n\n if (prop.enum && Array.isArray(prop.enum)) {\n const opt = new Option(`--${name} <value>`, desc).choices(\n prop.enum.map((v) => String(v)),\n );\n command.addOption(opt);\n names.add(name);\n continue;\n }\n\n const primaryType = Array.isArray(prop.type) ? prop.type[0] : prop.type;\n\n if (primaryType === 'boolean') {\n command.addOption(new Option(`--${name}`, desc));\n command.addOption(new Option(`--no-${name}`, `Disable --${name}`));\n names.add(name);\n continue;\n }\n\n if (primaryType === 'array') {\n const items = Array.isArray(prop.items) ? prop.items[0] : prop.items;\n const itemSchema = items\n ? resolve(ir, items as SchemaObject | ReferenceObject)\n : ({} as SchemaObject);\n const itemType = Array.isArray(itemSchema.type)\n ? itemSchema.type[0]\n : itemSchema.type;\n const opt = new Option(\n `--${name} <value>`,\n `${desc} (repeatable)`,\n ).argParser((value, previous: unknown[] | undefined) => {\n const acc = previous ?? [];\n if (itemType === 'number' || itemType === 'integer') {\n return [...acc, coerceNumber(value, itemType === 'integer')];\n }\n if (itemType === 'boolean') {\n return [...acc, coerceBoolean(value)];\n }\n return [...acc, value];\n });\n command.addOption(opt);\n names.add(name);\n continue;\n }\n\n if (primaryType === 'number' || primaryType === 'integer') {\n const opt = new Option(`--${name} <value>`, desc).argParser((v) =>\n coerceNumber(v, primaryType === 'integer'),\n );\n command.addOption(opt);\n names.add(name);\n continue;\n }\n\n command.addOption(new Option(`--${name} <value>`, desc));\n names.add(name);\n }\n\n return { names, skipped };\n}\n", "import { readFile } from 'node:fs/promises';\nimport type { ZodType } from 'zod';\n\nasync function readStdinIfPiped(): Promise<unknown> {\n if (process.stdin.isTTY) return undefined;\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n if (chunks.length === 0) return undefined;\n const raw = Buffer.concat(chunks).toString('utf8').trim();\n if (!raw) return undefined;\n try {\n return JSON.parse(raw);\n } catch (err) {\n throw new Error(\n `Failed to parse JSON from stdin: ${(err as Error).message}`,\n );\n }\n}\n\nasync function readJsonFile(path: string): Promise<unknown> {\n try {\n const raw = await readFile(path, 'utf8');\n return JSON.parse(raw);\n } catch (err) {\n throw new Error(\n `Failed to read JSON from ${path}: ${(err as Error).message}`,\n );\n }\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction mergeSources(\n file: unknown,\n stdin: unknown,\n flags: Record<string, unknown>,\n): Record<string, unknown> {\n const fileObj = isPlainObject(file) ? file : {};\n const stdinObj = isPlainObject(stdin) ? stdin : {};\n return { ...fileObj, ...stdinObj, ...flags };\n}\n\nexport interface ResolveInputOptions {\n flags: Record<string, unknown>;\n inputFile?: string;\n schema: ZodType;\n flagNames: Set<string>;\n}\n\nexport async function resolveInput({\n flags,\n inputFile,\n schema,\n flagNames,\n}: ResolveInputOptions): Promise<unknown> {\n const onlySchemaFlags: Record<string, unknown> = {};\n for (const name of flagNames) {\n if (flags[name] !== undefined) {\n onlySchemaFlags[name] = flags[name];\n }\n }\n\n const file = inputFile ? await readJsonFile(inputFile) : undefined;\n const stdin = await readStdinIfPiped();\n const merged = mergeSources(file, stdin, onlySchemaFlags);\n\n const parsed = await schema.parseAsync(merged);\n return parsed;\n}\n", "import type { SchemaObject } from 'openapi3-ts/oas31';\n\nimport {\n type IR,\n type TunedOperationObject,\n forEachOperation,\n} from '@sdk-it/spec';\nimport { buildInput, operationSchema } from '@sdk-it/typescript';\n\nexport interface OperationDescriptor {\n operationId: string;\n name: string;\n method: string;\n path: string;\n tag?: string;\n summary?: string;\n description?: string;\n input: SchemaObject;\n responses: Record<string, SchemaObject | undefined>;\n}\n\nconst CONTENT_TYPE_PRIORITY = [\n 'application/json',\n 'application/problem+json',\n 'text/plain',\n 'application/xml',\n 'application/x-www-form-urlencoded',\n 'multipart/form-data',\n];\n\nfunction pickContentSchema(\n content: Record<string, { schema?: SchemaObject }>,\n): SchemaObject | undefined {\n for (const ct of CONTENT_TYPE_PRIORITY) {\n if (content[ct]?.schema) return content[ct].schema;\n }\n const sorted = Object.keys(content).sort();\n for (const key of sorted) {\n if (content[key]?.schema) return content[key].schema;\n }\n return undefined;\n}\n\nfunction responseSchemas(\n operation: TunedOperationObject,\n): Record<string, SchemaObject | undefined> {\n const out: Record<string, SchemaObject | undefined> = {};\n for (const [status, response] of Object.entries(operation.responses ?? {})) {\n const content = (response as { content?: Record<string, { schema?: SchemaObject }> }).content;\n out[status] = content ? pickContentSchema(content) : undefined;\n }\n return out;\n}\n\nexport function describeOperation(\n ir: IR,\n op: TunedOperationObject,\n method: string,\n path: string,\n): OperationDescriptor {\n const details = buildInput(ir, op);\n const input = operationSchema(ir, op, details.ct) as SchemaObject;\n return {\n operationId: op.operationId,\n name: op['x-fn-name'],\n method: method.toUpperCase(),\n path,\n tag: op.tags?.[0],\n summary: op.summary,\n description: op.description,\n input,\n responses: responseSchemas(op),\n };\n}\n\nexport function describeAllOperations(\n ir: IR,\n): Record<string, OperationDescriptor> {\n const descriptors: Record<string, OperationDescriptor> = {};\n forEachOperation(ir, (entry, op) => {\n descriptors[op['x-fn-name']] = describeOperation(\n ir,\n op,\n entry.method,\n entry.path,\n );\n });\n return descriptors;\n}\n", "export type OutputMode = 'json' | 'raw';\n\nfunction hasData(value: unknown): value is { data: unknown } {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'data' in (value as Record<string, unknown>)\n );\n}\n\nfunction stringifyJson(value: unknown): string {\n const pretty = process.stdout.isTTY;\n return pretty ? JSON.stringify(value, null, 2) : JSON.stringify(value);\n}\n\nexport function formatOutput(value: unknown, mode: OutputMode): string {\n const payload = hasData(value) ? value.data : value;\n\n if (payload === null || payload === undefined) return '';\n\n if (mode === 'raw') {\n if (typeof payload === 'string') return payload;\n return stringifyJson(payload);\n }\n\n return stringifyJson(payload);\n}\n\nexport function writeOutput(value: unknown, mode: OutputMode): void {\n const formatted = formatOutput(value, mode);\n if (formatted.length === 0) return;\n process.stdout.write(formatted + '\\n');\n}\n\nexport function writeError(error: unknown): void {\n const payload: Record<string, unknown> = { error: true };\n if (error && typeof error === 'object') {\n const err = error as Record<string, unknown>;\n if ('status' in err) payload.status = err.status;\n const hasData = 'data' in err;\n if (hasData) payload.data = err.data;\n if ('message' in err && !hasData) payload.message = err.message;\n if (err instanceof Error) {\n payload.message = err.message;\n payload.name = err.name;\n }\n } else {\n payload.message = String(error);\n }\n process.stderr.write(JSON.stringify(payload, null, 2) + '\\n');\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Command, Option } from 'commander';\nimport type { OpenAPIObject } from 'openapi3-ts/oas31';\n\nimport { type ClientOptions, createRpc } from '@sdk-it/rpc';\nimport { forEachOperation, loadSpec, toIR } from '@sdk-it/spec';\n\nimport { buildOpCommand } from './build-op-command.ts';\nimport { describeAllOperations } from './introspect.ts';\n\nexport interface CommandOptions extends Partial<ClientOptions> {\n name: string;\n description?: string;\n version?: string;\n tokenEnv?: string;\n baseUrlEnv?: string;\n}\n\nfunction coerceSpec(spec: string | OpenAPIObject): Promise<OpenAPIObject> {\n if (typeof spec === 'string') return loadSpec(spec);\n return Promise.resolve(spec);\n}\n\nexport async function command(\n spec: string | OpenAPIObject,\n options: CommandOptions,\n): Promise<Command> {\n const raw = await coerceSpec(spec);\n const ir = await toIR({\n spec: raw,\n responses: { flattenErrorResponses: true },\n });\n\n const envPrefix = options.name.replace(/[^a-zA-Z0-9]/g, '_').toUpperCase();\n const tokenEnv = options.tokenEnv ?? `${envPrefix}_TOKEN`;\n const baseUrlEnv = options.baseUrlEnv ?? `${envPrefix}_BASE_URL`;\n\n const envToken = process.env[tokenEnv];\n const envBaseUrl = process.env[baseUrlEnv];\n const resolvedBaseUrl = options.baseUrl ?? envBaseUrl ?? ir.servers?.[0]?.url;\n\n if (!resolvedBaseUrl) {\n throw new Error(\n `No base URL available. Pass options.baseUrl, set $${baseUrlEnv}, or add a servers entry to the OpenAPI spec.`,\n );\n }\n\n const client = createRpc(ir, {\n token: options.token ?? envToken,\n baseUrl: resolvedBaseUrl,\n fetch: options.fetch,\n headers: options.headers,\n });\n\n const program = new Command(options.name);\n if (options.description) program.description(options.description);\n if (options.version) program.version(options.version);\n\n program.addOption(\n new Option('--token <token>', `API bearer token (or set $${tokenEnv})`),\n );\n program.addOption(\n new Option('--base-url <url>', `API base URL (or set $${baseUrlEnv})`),\n );\n program.addOption(\n new Option('--output <mode>', 'Output format')\n .choices(['json', 'raw'])\n .default('json'),\n );\n\n program.hook('preAction', (thisCommand) => {\n const opts = thisCommand.opts() as Record<string, unknown>;\n const override: Partial<ClientOptions> = {};\n if (typeof opts.token === 'string') override.token = opts.token;\n if (typeof opts.baseUrl === 'string') override.baseUrl = opts.baseUrl;\n if (Object.keys(override).length) {\n client.setOptions(override);\n }\n });\n\n forEachOperation(ir, (entry, operation) => {\n program.addCommand(\n buildOpCommand({\n ir,\n operation,\n method: entry.method,\n path: entry.path,\n client,\n }),\n );\n });\n\n program.addCommand(\n new Command('schema')\n .description('Print all operation schemas as JSON')\n .action(() => {\n const all = describeAllOperations(ir);\n process.stdout.write(JSON.stringify(all, null, 2) + '\\n');\n }),\n );\n\n return program;\n}\n", "import { Command, Option } from 'commander';\nimport { ZodError } from 'zod';\n\nimport type { Client } from '@sdk-it/rpc';\nimport { schemaToZod } from '@sdk-it/rpc';\nimport type { IR, TunedOperationObject } from '@sdk-it/spec';\nimport { buildInput, operationSchema } from '@sdk-it/typescript';\n\nimport { addFlagsFromSchema } from './flags.ts';\nimport { resolveInput } from './input.ts';\nimport { describeOperation } from './introspect.ts';\nimport { type OutputMode, writeError, writeOutput } from './output.ts';\n\ninterface BuildOpCommandArgs {\n ir: IR;\n operation: TunedOperationObject;\n method: string;\n path: string;\n client: Client;\n}\n\nexport function buildOpCommand({\n ir,\n operation,\n method,\n path,\n client,\n}: BuildOpCommandArgs): Command {\n const name = operation['x-fn-name'] ?? operation.operationId;\n const summary = operation.summary ?? operation.description ?? '';\n\n const cmd = new Command(name).description(summary);\n\n const details = buildInput(ir, operation);\n const inputJsonSchema = operationSchema(ir, operation, details.ct);\n const inputZodSchema = schemaToZod(inputJsonSchema, ir, { required: true });\n const flagMap = addFlagsFromSchema(cmd, inputJsonSchema, ir);\n\n cmd.addOption(\n new Option(\n '--input-file <path>',\n 'Read input JSON from file (merged with flags and stdin)',\n ),\n );\n cmd.addOption(\n new Option('--describe', \"Print this operation's schema as JSON and exit\"),\n );\n\n if (flagMap.skipped.length) {\n const hints = flagMap.skipped\n .map((s) => ` --${s.name}: ${s.reason}`)\n .join('\\n');\n cmd.addHelpText(\n 'after',\n `\\nFields supplied via --input-file or stdin only:\\n${hints}`,\n );\n }\n\n const endpoint = `${method.toUpperCase()} ${path}`;\n\n cmd.action(async (_: unknown, thisCommand: Command) => {\n const opts = thisCommand.optsWithGlobals() as Record<string, unknown>;\n\n if (opts.describe) {\n const desc = describeOperation(ir, operation, method, path);\n process.stdout.write(JSON.stringify(desc, null, 2) + '\\n');\n return;\n }\n\n const outputMode = (opts.output as OutputMode) ?? 'json';\n const inputFile = opts.inputFile as string | undefined;\n\n const flagValues: Record<string, unknown> = {};\n for (const n of flagMap.names) {\n if (opts[n] !== undefined) flagValues[n] = opts[n];\n }\n\n let input: unknown;\n try {\n input = await resolveInput({\n flags: flagValues,\n inputFile,\n schema: inputZodSchema,\n flagNames: flagMap.names,\n });\n } catch (err) {\n if (err instanceof ZodError) {\n writeError({ message: 'Invalid input', issues: err.issues });\n } else {\n writeError(err);\n }\n process.exitCode = 2;\n return;\n }\n\n try {\n const response = await client.request(endpoint, input as never);\n writeOutput(response, outputMode);\n } catch (err) {\n writeError(err);\n process.exitCode = 1;\n }\n });\n\n return cmd;\n}\n", "import { type Command, InvalidArgumentError, Option } from 'commander';\nimport type { ReferenceObject, SchemaObject } from 'openapi3-ts/oas31';\n\nimport { followRef, isRef } from '@sdk-it/core';\nimport type { IR } from '@sdk-it/spec';\n\nfunction resolve(ir: IR, schema: SchemaObject | ReferenceObject): SchemaObject {\n return isRef(schema) ? (followRef(ir, schema.$ref) as SchemaObject) : schema;\n}\n\nfunction isPrimitiveType(type: unknown): boolean {\n return (\n type === 'string' ||\n type === 'number' ||\n type === 'integer' ||\n type === 'boolean' ||\n type === 'null'\n );\n}\n\nfunction canBeFlag(ir: IR, schema: SchemaObject): boolean {\n if (schema.oneOf || schema.anyOf || schema.allOf) return false;\n if (schema.enum) return true;\n const type = schema.type;\n if (Array.isArray(type)) {\n return type.every((t) => isPrimitiveType(t));\n }\n if (isPrimitiveType(type)) return true;\n if (type === 'array' && schema.items) {\n const items = Array.isArray(schema.items) ? schema.items[0] : schema.items;\n if (!items) return false;\n const resolved = resolve(ir, items);\n const itemType = resolved.type;\n return (\n !resolved.oneOf &&\n !resolved.anyOf &&\n !resolved.allOf &&\n (isPrimitiveType(itemType) || !!resolved.enum)\n );\n }\n return false;\n}\n\nfunction coerceNumber(value: string, integer: boolean): number {\n const n = Number(value);\n if (Number.isNaN(n)) {\n throw new InvalidArgumentError(`\"${value}\" is not a valid number`);\n }\n return integer ? Math.trunc(n) : n;\n}\n\nfunction coerceBoolean(value: string): boolean {\n const lower = value.toLowerCase();\n if (lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on') {\n return true;\n }\n if (lower === 'false' || lower === '0' || lower === 'no' || lower === 'off') {\n return false;\n }\n throw new InvalidArgumentError(`\"${value}\" is not a valid boolean`);\n}\n\nfunction describe(schema: SchemaObject, required: boolean): string {\n const base = schema.description ?? '';\n const pieces: string[] = [];\n if (schema.type) pieces.push(String(schema.type));\n if (schema.format) pieces.push(`format: ${schema.format}`);\n if (required) pieces.push('required');\n if (schema.default !== undefined) {\n pieces.push(`default: ${JSON.stringify(schema.default)}`);\n }\n const tag = pieces.length ? ` (${pieces.join(', ')})` : '';\n return base + tag;\n}\n\nexport interface FlagMap {\n names: Set<string>;\n skipped: Array<{ name: string; reason: string }>;\n}\n\nexport function addFlagsFromSchema(\n command: Command,\n schema: SchemaObject,\n ir: IR,\n): FlagMap {\n const names = new Set<string>();\n const skipped: FlagMap['skipped'] = [];\n const properties = schema.properties ?? {};\n const required = new Set(schema.required ?? []);\n\n for (const [name, propOrRef] of Object.entries(properties)) {\n const prop = resolve(ir, propOrRef as SchemaObject | ReferenceObject);\n if (!canBeFlag(ir, prop)) {\n skipped.push({\n name,\n reason: 'complex schema \u2014 supply via --input-file or stdin',\n });\n continue;\n }\n\n const isRequired = required.has(name);\n const desc = describe(prop, isRequired);\n\n if (prop.enum && Array.isArray(prop.enum)) {\n const opt = new Option(`--${name} <value>`, desc).choices(\n prop.enum.map((v) => String(v)),\n );\n command.addOption(opt);\n names.add(name);\n continue;\n }\n\n const primaryType = Array.isArray(prop.type) ? prop.type[0] : prop.type;\n\n if (primaryType === 'boolean') {\n command.addOption(new Option(`--${name}`, desc));\n command.addOption(new Option(`--no-${name}`, `Disable --${name}`));\n names.add(name);\n continue;\n }\n\n if (primaryType === 'array') {\n const items = Array.isArray(prop.items) ? prop.items[0] : prop.items;\n const itemSchema = items\n ? resolve(ir, items as SchemaObject | ReferenceObject)\n : ({} as SchemaObject);\n const itemType = Array.isArray(itemSchema.type)\n ? itemSchema.type[0]\n : itemSchema.type;\n const opt = new Option(\n `--${name} <value>`,\n `${desc} (repeatable)`,\n ).argParser((value, previous: unknown[] | undefined) => {\n const acc = previous ?? [];\n if (itemType === 'number' || itemType === 'integer') {\n return [...acc, coerceNumber(value, itemType === 'integer')];\n }\n if (itemType === 'boolean') {\n return [...acc, coerceBoolean(value)];\n }\n return [...acc, value];\n });\n command.addOption(opt);\n names.add(name);\n continue;\n }\n\n if (primaryType === 'number' || primaryType === 'integer') {\n const opt = new Option(`--${name} <value>`, desc).argParser((v) =>\n coerceNumber(v, primaryType === 'integer'),\n );\n command.addOption(opt);\n names.add(name);\n continue;\n }\n\n command.addOption(new Option(`--${name} <value>`, desc));\n names.add(name);\n }\n\n return { names, skipped };\n}\n", "import { readFile } from 'node:fs/promises';\nimport type { ZodType } from 'zod';\n\nasync function readStdinIfPiped(): Promise<unknown> {\n if (process.stdin.isTTY) return undefined;\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n if (chunks.length === 0) return undefined;\n const raw = Buffer.concat(chunks).toString('utf8').trim();\n if (!raw) return undefined;\n try {\n return JSON.parse(raw);\n } catch (err) {\n throw new Error(\n `Failed to parse JSON from stdin: ${(err as Error).message}`,\n );\n }\n}\n\nasync function readJsonFile(path: string): Promise<unknown> {\n try {\n const raw = await readFile(path, 'utf8');\n return JSON.parse(raw);\n } catch (err) {\n throw new Error(\n `Failed to read JSON from ${path}: ${(err as Error).message}`,\n );\n }\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction mergeSources(\n file: unknown,\n stdin: unknown,\n flags: Record<string, unknown>,\n): Record<string, unknown> {\n const fileObj = isPlainObject(file) ? file : {};\n const stdinObj = isPlainObject(stdin) ? stdin : {};\n return { ...fileObj, ...stdinObj, ...flags };\n}\n\nexport interface ResolveInputOptions {\n flags: Record<string, unknown>;\n inputFile?: string;\n schema: ZodType;\n flagNames: Set<string>;\n}\n\nexport async function resolveInput({\n flags,\n inputFile,\n schema,\n flagNames,\n}: ResolveInputOptions): Promise<unknown> {\n const onlySchemaFlags: Record<string, unknown> = {};\n for (const name of flagNames) {\n if (flags[name] !== undefined) {\n onlySchemaFlags[name] = flags[name];\n }\n }\n\n const file = inputFile ? await readJsonFile(inputFile) : undefined;\n const stdin = await readStdinIfPiped();\n const merged = mergeSources(file, stdin, onlySchemaFlags);\n\n const parsed = await schema.parseAsync(merged);\n return parsed;\n}\n", "import type { SchemaObject } from 'openapi3-ts/oas31';\n\nimport {\n type IR,\n type TunedOperationObject,\n forEachOperation,\n} from '@sdk-it/spec';\nimport { buildInput, operationSchema } from '@sdk-it/typescript';\n\nexport interface OperationDescriptor {\n operationId: string;\n name: string;\n method: string;\n path: string;\n tag?: string;\n summary?: string;\n description?: string;\n input: SchemaObject;\n responses: Record<string, SchemaObject | undefined>;\n}\n\nconst CONTENT_TYPE_PRIORITY = [\n 'application/json',\n 'application/problem+json',\n 'text/plain',\n 'application/xml',\n 'application/x-www-form-urlencoded',\n 'multipart/form-data',\n];\n\nfunction pickContentSchema(\n content: Record<string, { schema?: SchemaObject }>,\n): SchemaObject | undefined {\n for (const ct of CONTENT_TYPE_PRIORITY) {\n if (content[ct]?.schema) return content[ct].schema;\n }\n const sorted = Object.keys(content).sort();\n for (const key of sorted) {\n if (content[key]?.schema) return content[key].schema;\n }\n return undefined;\n}\n\nfunction responseSchemas(\n operation: TunedOperationObject,\n): Record<string, SchemaObject | undefined> {\n const out: Record<string, SchemaObject | undefined> = {};\n for (const [status, response] of Object.entries(operation.responses ?? {})) {\n const content = (\n response as { content?: Record<string, { schema?: SchemaObject }> }\n ).content;\n out[status] = content ? pickContentSchema(content) : undefined;\n }\n return out;\n}\n\nexport function describeOperation(\n ir: IR,\n op: TunedOperationObject,\n method: string,\n path: string,\n): OperationDescriptor {\n const details = buildInput(ir, op);\n const input = operationSchema(ir, op, details.ct) as SchemaObject;\n return {\n operationId: op.operationId,\n name: op['x-fn-name'],\n method: method.toUpperCase(),\n path,\n tag: op.tags?.[0],\n summary: op.summary,\n description: op.description,\n input,\n responses: responseSchemas(op),\n };\n}\n\nexport function describeAllOperations(\n ir: IR,\n): Record<string, OperationDescriptor> {\n const descriptors: Record<string, OperationDescriptor> = {};\n forEachOperation(ir, (entry, op) => {\n descriptors[op['x-fn-name']] = describeOperation(\n ir,\n op,\n entry.method,\n entry.path,\n );\n });\n return descriptors;\n}\n", "export type OutputMode = 'json' | 'raw';\n\nfunction hasData(value: unknown): value is { data: unknown } {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'data' in (value as Record<string, unknown>)\n );\n}\n\nfunction stringifyJson(value: unknown): string {\n const pretty = process.stdout.isTTY;\n return pretty ? JSON.stringify(value, null, 2) : JSON.stringify(value);\n}\n\nexport function formatOutput(value: unknown, mode: OutputMode): string {\n const payload = hasData(value) ? value.data : value;\n\n if (payload === null || payload === undefined) return '';\n\n if (mode === 'raw') {\n if (typeof payload === 'string') return payload;\n return stringifyJson(payload);\n }\n\n return stringifyJson(payload);\n}\n\nexport function writeOutput(value: unknown, mode: OutputMode): void {\n const formatted = formatOutput(value, mode);\n if (formatted.length === 0) return;\n process.stdout.write(formatted + '\\n');\n}\n\nexport function writeError(error: unknown): void {\n const payload: Record<string, unknown> = { error: true };\n if (error && typeof error === 'object') {\n const err = error as Record<string, unknown>;\n if ('status' in err) payload.status = err.status;\n const hasData = 'data' in err;\n if (hasData) payload.data = err.data;\n if ('message' in err && !hasData) payload.message = err.message;\n if (err instanceof Error) {\n payload.message = err.message;\n payload.name = err.name;\n }\n } else {\n payload.message = String(error);\n }\n process.stderr.write(JSON.stringify(payload, null, 2) + '\\n');\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["Command", "Option", "forEachOperation", "Option", "buildInput", "operationSchema", "command", "hasData", "buildInput", "operationSchema", "Option", "Command", "Option", "forEachOperation"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build-op-command.d.ts","sourceRoot":"","sources":["../../src/lib/build-op-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,EAAE,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAa7D,UAAU,kBAAkB;IAC1B,EAAE,EAAE,EAAE,CAAC;IACP,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,cAAc,CAAC,EAC7B,EAAE,EACF,SAAS,EACT,MAAM,EACN,IAAI,EACJ,MAAM,GACP,EAAE,kBAAkB,GAAG,OAAO,CAiF9B"}
1
+ {"version":3,"file":"build-op-command.d.ts","sourceRoot":"","sources":["../../src/lib/build-op-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,EAAE,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAQ7D,UAAU,kBAAkB;IAC1B,EAAE,EAAE,EAAE,CAAC;IACP,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,cAAc,CAAC,EAC7B,EAAE,EACF,SAAS,EACT,MAAM,EACN,IAAI,EACJ,MAAM,GACP,EAAE,kBAAkB,GAAG,OAAO,CA8E9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/lib/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,KAAK,aAAa,EAAa,MAAM,aAAa,CAAC;AAM5D,MAAM,WAAW,cAAe,SAAQ,OAAO,CAAC,aAAa,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AASD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,GAAG,aAAa,EAC5B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,OAAO,CAAC,CAiFlB"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/lib/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,KAAK,aAAa,EAAa,MAAM,aAAa,CAAC;AAM5D,MAAM,WAAW,cAAe,SAAQ,OAAO,CAAC,aAAa,CAAC;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,GAAG,aAAa,EAC5B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,OAAO,CAAC,CA4ElB"}
@@ -1 +1 @@
1
- {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/lib/flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAgC,MAAM,WAAW,CAAC;AACvE,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAiFvC,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,EAAE,GACL,OAAO,CA6ET"}
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/lib/flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAgC,MAAM,WAAW,CAAC;AACvE,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAuEvC,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,EAAE,GACL,OAAO,CA6ET"}
@@ -1 +1 @@
1
- {"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../../src/lib/introspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,KAAK,EAAE,EACP,KAAK,oBAAoB,EAE1B,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;CACrD;AAmCD,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,mBAAmB,CAcrB;AAED,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,EAAE,GACL,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAWrC"}
1
+ {"version":3,"file":"introspect.d.ts","sourceRoot":"","sources":["../../src/lib/introspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,KAAK,EAAE,EACP,KAAK,oBAAoB,EAE1B,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;CACrD;AAqCD,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,mBAAmB,CAcrB;AAED,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,EAAE,GACL,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAWrC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdk-it/command",
3
- "version": "0.45.0",
3
+ "version": "0.46.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -22,10 +22,10 @@
22
22
  "!**/*.test.*"
23
23
  ],
24
24
  "dependencies": {
25
- "@sdk-it/core": "0.45.0",
26
- "@sdk-it/rpc": "0.45.0",
27
- "@sdk-it/spec": "0.45.0",
28
- "@sdk-it/typescript": "0.45.0",
25
+ "@sdk-it/core": "0.46.0",
26
+ "@sdk-it/rpc": "0.46.0",
27
+ "@sdk-it/spec": "0.46.0",
28
+ "@sdk-it/typescript": "0.46.0",
29
29
  "commander": "^13.0.0",
30
30
  "openapi3-ts": "4.5.0",
31
31
  "zod": "^4.3.0"