better-cf 0.2.2 → 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.
- package/dist/cli/index.js +22 -18
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +194 -129
- package/dist/index.js.map +1 -1
- package/dist/queue/index.d.ts +3 -3
- package/dist/queue/index.js +194 -129
- package/dist/queue/index.js.map +1 -1
- package/dist/queue/internal.d.ts +1 -1
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/{types-D44i92Zf.d.ts → types-CcW1NyB-.d.ts} +96 -29
- package/package.json +1 -1
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/errors.ts","../../src/cli/logger.ts","../../src/cli/process.ts","../../src/cli/commands/admin.ts","../../src/cli/config.ts","../../src/cli/codegen.ts","../../src/cli/discovery/naming.ts","../../src/cli/discovery/scanner.ts","../../src/cli/env-types.ts","../../src/cli/wrangler/duration.ts","../../src/cli/wrangler/jsonc.ts","../../src/cli/wrangler/toml.ts","../../src/cli/wrangler/index.ts","../../src/cli/commands/generate.ts","../../src/cli/commands/deploy.ts","../../src/cli/watcher.ts","../../src/cli/commands/dev.ts","../../src/cli/commands/init.ts","../../src/cli/commands/create.ts","../../src/cli/index.ts"],"names":["path","fs","input","SyntaxKind","Project","Node","output"],"mappings":"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","file":"index.js","sourcesContent":["import type { CliErrorOptions } from './types.js';\n\nexport class CliError extends Error {\n readonly code: string;\n readonly summary: string;\n readonly file?: string;\n readonly details?: string;\n readonly hint?: string;\n readonly docsUrl?: string;\n\n constructor(options: CliErrorOptions) {\n super(options.summary);\n this.name = 'CliError';\n this.code = options.code;\n this.summary = options.summary;\n this.file = options.file;\n this.details = options.details;\n this.hint = options.hint;\n this.docsUrl = options.docsUrl;\n\n if (options.cause !== undefined) {\n (this as Error & { cause?: unknown }).cause = options.cause;\n }\n }\n}\n\nexport function toCliError(error: unknown): CliError {\n if (error instanceof CliError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new CliError({\n code: 'UNEXPECTED_ERROR',\n summary: error.message,\n details: error.stack\n });\n }\n\n return new CliError({\n code: 'UNEXPECTED_ERROR',\n summary: String(error)\n });\n}\n","import pc from 'picocolors';\nimport type { DiscoveryDiagnostic } from './types.js';\n\nfunction printLine(message: string): void {\n process.stdout.write(`${message}\\n`);\n}\n\nfunction printErrLine(message: string): void {\n process.stderr.write(`${message}\\n`);\n}\n\nexport const logger = {\n header(title: string): void {\n printLine(pc.bold(pc.cyan(`== ${title} ==`)));\n },\n info(message: string): void {\n printLine(`${pc.blue('[*]')} ${message}`);\n },\n success(message: string): void {\n printLine(`${pc.green('[+]')} ${message}`);\n },\n warn(message: string): void {\n printLine(`${pc.yellow('[!]')} ${message}`);\n },\n error(message: string): void {\n printErrLine(`${pc.red('[x]')} ${message}`);\n },\n section(message: string): void {\n printLine('');\n printLine(pc.bold(pc.white(`-- ${message} --`)));\n },\n item(label: string, value?: string): void {\n printLine(` -> ${pc.bold(label)}${value ? `: ${value}` : ''}`);\n },\n diagnostic(diag: DiscoveryDiagnostic): void {\n const levelBadge = diag.level === 'error' ? pc.red('[error]') : pc.yellow('[warn]');\n printLine(`${levelBadge} ${pc.bold(diag.code)} ${diag.message}`);\n if (diag.filePath) {\n printLine(` file: ${diag.filePath}`);\n }\n if (diag.hint) {\n printLine(` hint: ${diag.hint}`);\n }\n },\n cliError(payload: {\n code: string;\n summary: string;\n file?: string;\n details?: string;\n hint?: string;\n docsUrl?: string;\n }): void {\n printErrLine(pc.red(pc.bold(`\\nERROR ${payload.code}`)));\n printErrLine(pc.red(payload.summary));\n if (payload.file) {\n printErrLine(` file: ${payload.file}`);\n }\n if (payload.details) {\n printErrLine(` details: ${payload.details}`);\n }\n if (payload.hint) {\n printErrLine(` hint: ${payload.hint}`);\n }\n if (payload.docsUrl) {\n printErrLine(` docs: ${payload.docsUrl}`);\n }\n }\n};\n","import { spawn } from 'node:child_process';\n\nexport interface CommandOutput {\n code: number;\n stdout: string;\n stderr: string;\n}\n\nexport function runCommand(\n command: string,\n args: string[],\n cwd: string,\n stdio: 'inherit' | 'pipe' = 'inherit'\n): Promise<number> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio,\n env: process.env\n });\n\n child.once('error', (error) => reject(error));\n child.once('close', (code) => resolve(code ?? 0));\n });\n}\n\nexport function runCommandCapture(command: string, args: string[], cwd: string): Promise<CommandOutput> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: 'pipe',\n env: process.env\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout?.on('data', (chunk) => {\n stdout += chunk.toString();\n });\n\n child.stderr?.on('data', (chunk) => {\n stderr += chunk.toString();\n });\n\n child.once('error', (error) => reject(error));\n child.once('close', (code) => {\n resolve({\n code: code ?? 0,\n stdout,\n stderr\n });\n });\n });\n}\n\nexport function spawnCommand(command: string, args: string[], cwd: string) {\n return spawn(command, args, {\n cwd,\n stdio: 'inherit',\n env: process.env\n });\n}\n","import { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { runCommand } from '../process.js';\n\ninterface QueueConfigOptions {\n deliveryDelaySecs?: number;\n messageRetentionPeriodSecs?: number;\n}\n\ninterface WorkerConsumerOptions {\n batchSize?: number;\n batchTimeout?: number;\n messageRetries?: number;\n deadLetterQueue?: string;\n maxConcurrency?: number;\n retryDelaySecs?: number;\n}\n\ninterface HttpConsumerOptions {\n batchSize?: number;\n messageRetries?: number;\n deadLetterQueue?: string;\n visibilityTimeoutSecs?: number;\n retryDelaySecs?: number;\n}\n\ninterface SubscriptionCreateOptions {\n source: string;\n events: string;\n name?: string;\n enabled?: boolean;\n modelName?: string;\n workerName?: string;\n workflowName?: string;\n}\n\ninterface SubscriptionListOptions {\n page?: number;\n perPage?: number;\n json?: boolean;\n}\n\ninterface SubscriptionGetOptions {\n json?: boolean;\n}\n\ninterface SubscriptionUpdateOptions {\n name?: string;\n events?: string;\n enabled?: boolean;\n json?: boolean;\n}\n\ninterface SubscriptionDeleteOptions {\n force?: boolean;\n}\n\nasync function runWranglerQueueSubcommand(\n args: string[],\n rootDir = process.cwd(),\n summary = 'Wrangler queue command failed.'\n): Promise<void> {\n logger.section(`wrangler ${args.join(' ')}`);\n const code = await runCommand('npx', ['wrangler', ...args], rootDir, 'inherit');\n if (code !== 0) {\n throw new CliError({\n code: 'WRANGLER_QUEUE_COMMAND_FAILED',\n summary,\n details: `Command \"wrangler ${args.join(' ')}\" exited with code ${code}.`,\n hint: 'Verify wrangler auth/project configuration and command arguments.',\n docsUrl: 'https://developers.cloudflare.com/queues/reference/wrangler-commands/'\n });\n }\n}\n\nexport async function queueListCommand(rootDir = process.cwd()): Promise<void> {\n await runWranglerQueueSubcommand(['queues', 'list'], rootDir, 'Failed to list queues.');\n}\n\nexport async function queueCreateCommand(\n name: string,\n options: QueueConfigOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', name);\n const args = ['queues', 'create', name];\n pushNumberOption(args, '--delivery-delay-secs', options.deliveryDelaySecs);\n pushNumberOption(args, '--message-retention-period-secs', options.messageRetentionPeriodSecs);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to create queue \"${name}\".`\n );\n}\n\nexport async function queueUpdateCommand(\n name: string,\n options: QueueConfigOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', name);\n const args = ['queues', 'update', name];\n pushNumberOption(args, '--delivery-delay-secs', options.deliveryDelaySecs);\n pushNumberOption(args, '--message-retention-period-secs', options.messageRetentionPeriodSecs);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to update queue \"${name}\".`\n );\n}\n\nexport async function queueDeleteCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(\n ['queues', 'delete', name],\n rootDir,\n `Failed to delete queue \"${name}\".`\n );\n}\n\nexport async function queueInfoCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(['queues', 'info', name], rootDir, `Failed to get queue \"${name}\".`);\n}\n\nexport async function queuePauseCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(\n ['queues', 'pause-delivery', name],\n rootDir,\n `Failed to pause queue \"${name}\".`\n );\n}\n\nexport async function queueResumeCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(\n ['queues', 'resume-delivery', name],\n rootDir,\n `Failed to resume queue \"${name}\".`\n );\n}\n\nexport async function queuePurgeCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(\n ['queues', 'purge', name],\n rootDir,\n `Failed to purge queue \"${name}\".`\n );\n}\n\nexport async function queueConsumerHttpAddCommand(\n queue: string,\n options: HttpConsumerOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n const args = ['queues', 'consumer', 'http', 'add', queue];\n pushNumberOption(args, '--batch-size', options.batchSize);\n pushNumberOption(args, '--message-retries', options.messageRetries);\n pushStringOption(args, '--dead-letter-queue', options.deadLetterQueue);\n pushNumberOption(args, '--visibility-timeout-secs', options.visibilityTimeoutSecs);\n pushNumberOption(args, '--retry-delay-secs', options.retryDelaySecs);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to add HTTP consumer for queue \"${queue}\".`\n );\n}\n\nexport async function queueConsumerHttpRemoveCommand(\n queue: string,\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n await runWranglerQueueSubcommand(\n ['queues', 'consumer', 'http', 'remove', queue],\n rootDir,\n `Failed to remove HTTP consumer for queue \"${queue}\".`\n );\n}\n\nexport async function queueConsumerWorkerAddCommand(\n queue: string,\n script: string,\n options: WorkerConsumerOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('worker script name', script);\n const args = ['queues', 'consumer', 'worker', 'add', queue, script];\n pushNumberOption(args, '--batch-size', options.batchSize);\n pushNumberOption(args, '--batch-timeout', options.batchTimeout);\n pushNumberOption(args, '--message-retries', options.messageRetries);\n pushStringOption(args, '--dead-letter-queue', options.deadLetterQueue);\n pushNumberOption(args, '--max-concurrency', options.maxConcurrency);\n pushNumberOption(args, '--retry-delay-secs', options.retryDelaySecs);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to add worker consumer for queue \"${queue}\".`\n );\n}\n\nexport async function queueConsumerWorkerRemoveCommand(\n queue: string,\n script: string,\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('worker script name', script);\n await runWranglerQueueSubcommand(\n ['queues', 'consumer', 'worker', 'remove', queue, script],\n rootDir,\n `Failed to remove worker consumer for queue \"${queue}\".`\n );\n}\n\nexport async function subscriptionListCommand(\n queue: string,\n options: SubscriptionListOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n const args = ['queues', 'subscription', 'list', queue];\n pushNumberOption(args, '--page', options.page);\n pushNumberOption(args, '--per-page', options.perPage);\n pushBooleanFlag(args, '--json', options.json);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n 'Failed to list queue subscriptions.'\n );\n}\n\nexport async function subscriptionCreateCommand(\n queue: string,\n options: SubscriptionCreateOptions,\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('subscription source', options.source);\n const args = ['queues', 'subscription', 'create', queue, '--source', options.source, '--events', options.events];\n pushStringOption(args, '--name', options.name);\n pushBooleanOption(args, '--enabled', options.enabled);\n pushStringOption(args, '--model-name', options.modelName);\n pushStringOption(args, '--worker-name', options.workerName);\n pushStringOption(args, '--workflow-name', options.workflowName);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n 'Failed to create queue subscription.'\n );\n}\n\nexport async function subscriptionGetCommand(\n queue: string,\n id: string,\n options: SubscriptionGetOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('subscription id', id);\n const args = ['queues', 'subscription', 'get', queue, '--id', id];\n pushBooleanFlag(args, '--json', options.json);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to get queue subscription \"${id}\" from \"${queue}\".`\n );\n}\n\nexport async function subscriptionUpdateCommand(\n queue: string,\n id: string,\n options: SubscriptionUpdateOptions,\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('subscription id', id);\n const args = ['queues', 'subscription', 'update', queue, '--id', id];\n pushStringOption(args, '--name', options.name);\n pushStringOption(args, '--events', options.events);\n pushBooleanOption(args, '--enabled', options.enabled);\n pushBooleanFlag(args, '--json', options.json);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to update queue subscription \"${id}\" on \"${queue}\".`\n );\n}\n\nexport async function subscriptionDeleteCommand(\n queue: string,\n id: string,\n options: SubscriptionDeleteOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('subscription id', id);\n const args = ['queues', 'subscription', 'delete', queue, '--id', id];\n pushBooleanFlag(args, '--force', options.force);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to delete queue subscription \"${id}\" from \"${queue}\".`\n );\n}\n\nfunction pushStringOption(target: string[], flag: string, value: string | undefined): void {\n if (value && value.length > 0) {\n target.push(flag, value);\n }\n}\n\nfunction pushNumberOption(target: string[], flag: string, value: number | undefined): void {\n if (value !== undefined) {\n target.push(flag, String(value));\n }\n}\n\nfunction pushBooleanOption(target: string[], flag: string, value: boolean | undefined): void {\n if (value !== undefined) {\n target.push(flag, String(value));\n }\n}\n\nfunction pushBooleanFlag(target: string[], flag: string, value: boolean | undefined): void {\n if (value) {\n target.push(flag);\n }\n}\n\nfunction assertWranglerToken(label: string, value: string): void {\n if (!value || value.trim().length === 0) {\n throw new CliError({\n code: 'INVALID_WRANGLER_ARGUMENT',\n summary: `Invalid ${label}.`,\n details: 'Value cannot be empty.',\n hint: `Provide a non-empty ${label}.`\n });\n }\n\n if (value.startsWith('-')) {\n throw new CliError({\n code: 'INVALID_WRANGLER_ARGUMENT',\n summary: `Invalid ${label}.`,\n details: `Value \"${value}\" starts with \"-\" and may be interpreted as a CLI flag.`,\n hint: `Use a ${label} that does not start with \"-\".`\n });\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { Node, Project, SyntaxKind, type ObjectLiteralExpression } from 'ts-morph';\nimport type { CliConfig } from './types.js';\n\nconst DEFAULT_IGNORE = ['node_modules', '.better-cf', 'dist', '.wrangler'];\n\nexport function loadCliConfig(rootDir = process.cwd()): CliConfig {\n const defaults: CliConfig = {\n rootDir,\n ignore: [...DEFAULT_IGNORE],\n workerEntry: undefined,\n legacyServiceWorker: false,\n inferEnvTypes: true\n };\n\n const configPath = path.join(rootDir, 'better-cf.config.ts');\n if (!fs.existsSync(configPath)) {\n return defaults;\n }\n\n const project = new Project({\n compilerOptions: {\n target: 99,\n module: 99,\n moduleResolution: 99\n }\n });\n\n const sourceFile = project.addSourceFileAtPath(configPath);\n const variable = sourceFile\n .getVariableDeclarations()\n .find((decl) => decl.getName() === 'betterCfConfig' && decl.getVariableStatement()?.isExported());\n\n if (!variable) {\n return defaults;\n }\n\n const initializer = variable.getInitializer();\n if (!initializer || initializer.getKind() !== SyntaxKind.ObjectLiteralExpression) {\n return defaults;\n }\n\n const configObject = initializer as ObjectLiteralExpression;\n\n const workerEntry = readString(configObject, 'workerEntry');\n const legacyServiceWorker = readBoolean(configObject, 'legacyServiceWorker');\n const inferEnvTypes = readBoolean(configObject, 'inferEnvTypes');\n const ignore = readStringArray(configObject, 'ignore');\n\n return {\n rootDir,\n workerEntry,\n legacyServiceWorker: legacyServiceWorker ?? defaults.legacyServiceWorker,\n inferEnvTypes: inferEnvTypes ?? defaults.inferEnvTypes,\n ignore: ignore ? [...new Set([...defaults.ignore, ...ignore])] : defaults.ignore\n };\n}\n\nfunction readString(node: ObjectLiteralExpression, key: string): string | undefined {\n const property = node.getProperties().find((prop) => {\n return Node.isPropertyAssignment(prop) && prop.getName() === key;\n });\n\n if (!property || !Node.isPropertyAssignment(property)) {\n return undefined;\n }\n\n const initializer = property.getInitializer();\n if (!initializer || !Node.isStringLiteral(initializer)) {\n return undefined;\n }\n\n return initializer.getLiteralText();\n}\n\nfunction readBoolean(node: ObjectLiteralExpression, key: string): boolean | undefined {\n const property = node.getProperties().find((prop) => {\n return Node.isPropertyAssignment(prop) && prop.getName() === key;\n });\n\n if (!property || !Node.isPropertyAssignment(property)) {\n return undefined;\n }\n\n const initializer = property.getInitializer();\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n\n if (initializer.getKind() === SyntaxKind.FalseKeyword) {\n return false;\n }\n\n return undefined;\n}\n\nfunction readStringArray(node: ObjectLiteralExpression, key: string): string[] | undefined {\n const property = node.getProperties().find((prop) => {\n return Node.isPropertyAssignment(prop) && prop.getName() === key;\n });\n\n if (!property || !Node.isPropertyAssignment(property)) {\n return undefined;\n }\n\n const initializer = property.getInitializer();\n if (!initializer || !Node.isArrayLiteralExpression(initializer)) {\n return undefined;\n }\n\n const values = initializer\n .getElements()\n .filter((element): element is import('ts-morph').StringLiteral => Node.isStringLiteral(element))\n .map((element) => element.getLiteralText());\n\n return values.length > 0 ? values : undefined;\n}\n\nexport function resolveWorkerEntry(config: CliConfig): string {\n const candidates = [\n config.workerEntry,\n 'worker.ts',\n 'src/worker.ts',\n 'index.ts',\n 'src/index.ts'\n ].filter((value): value is string => Boolean(value));\n\n for (const candidate of candidates) {\n const absolutePath = path.isAbsolute(candidate)\n ? candidate\n : path.join(config.rootDir, candidate);\n\n if (fs.existsSync(absolutePath)) {\n return absolutePath;\n }\n }\n\n throw new Error(\n 'Could not find worker entry. Provide betterCfConfig.workerEntry in better-cf.config.ts or create worker.ts.'\n );\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { resolveWorkerEntry } from './config.js';\nimport type { CliConfig, DiscoveryResult } from './types.js';\n\nexport interface CodegenResult {\n entryPath: string;\n typesPath: string;\n}\n\nexport function generateCode(discovery: DiscoveryResult, config: CliConfig): CodegenResult {\n const outputDir = path.join(config.rootDir, '.better-cf');\n fs.mkdirSync(outputDir, { recursive: true });\n\n const workerEntryAbsolute = resolveWorkerEntry(config);\n\n const entryContents = renderEntryFile(discovery, workerEntryAbsolute, outputDir, config);\n const typesContents = renderTypesFile(discovery);\n\n const entryPath = path.join(outputDir, 'entry.ts');\n const typesPath = path.join(outputDir, 'types.d.ts');\n\n fs.writeFileSync(entryPath, entryContents, 'utf8');\n fs.writeFileSync(typesPath, typesContents, 'utf8');\n\n return {\n entryPath,\n typesPath\n };\n}\n\nfunction renderEntryFile(\n discovery: DiscoveryResult,\n workerEntryAbsolute: string,\n outDir: string,\n config: CliConfig\n): string {\n const imports: string[] = [];\n const bindings: string[] = [];\n const queueMap: string[] = [];\n\n imports.push(\n `import workerDefault, * as workerModule from ${JSON.stringify(toImportPath(outDir, workerEntryAbsolute))};`\n );\n imports.push(`import { getQueueInternals, resolveWorkerHandlers } from 'better-cf/queue/internal';`);\n\n for (const queue of discovery.queues) {\n const queueImportPath = toImportPath(outDir, queue.absoluteFilePath);\n if (queue.isDefaultExport) {\n imports.push(`import ${queue.importName} from ${JSON.stringify(queueImportPath)};`);\n } else {\n imports.push(\n `import { ${queue.exportName} as ${queue.importName} } from ${JSON.stringify(queueImportPath)};`\n );\n }\n\n bindings.push(`getQueueInternals(${queue.importName}).setBinding('${queue.bindingName}');`);\n queueMap.push(` '${queue.queueName}': ${queue.importName}`);\n }\n\n const scheduledBlock = `\nconst __workerHandlers = resolveWorkerHandlers({ default: workerDefault, ...workerModule });\n\nexport default {\n async fetch(request: Request, env: unknown, ctx: ExecutionContext): Promise<Response> {\n return __workerHandlers.fetch(request, env, ctx);\n },\n\n async queue(batch: MessageBatch<unknown>, env: unknown, ctx: ExecutionContext): Promise<void> {\n const consumer = __queues[batch.queue];\n if (!consumer) {\n console.error(\\`[better-cf] No queue consumer for \"\\${batch.queue}\". Acking batch to avoid infinite retries.\\`);\n batch.ackAll();\n return;\n }\n\n await getQueueInternals(consumer).consume(batch, env, ctx);\n },\n\n ...(__workerHandlers.scheduled\n ? {\n async scheduled(event: ScheduledEvent, env: unknown, ctx: ExecutionContext): Promise<void> {\n await __workerHandlers.scheduled?.(event, env, ctx);\n }\n }\n : {})\n};`;\n\n const legacyWarning = config.legacyServiceWorker\n ? \"console.warn('[better-cf] legacyServiceWorker mode is compatibility-only. Consider migrating to module workers.');\"\n : '';\n\n return `// Auto-generated by better-cf. Do not edit.\n${imports.join('\\n')}\n\n${bindings.join('\\n')}\n\nconst __queues: Record<string, unknown> = {\n${queueMap.join(',\\n')}\n};\n\n${legacyWarning}\n${scheduledBlock}\n`;\n}\n\nfunction renderTypesFile(discovery: DiscoveryResult): string {\n const lines = discovery.queues.map((queue) => {\n return ` ${queue.bindingName}: Queue;`;\n });\n\n return `// Auto-generated by better-cf. Do not edit.\nimport type { Queue } from '@cloudflare/workers-types';\n\ndeclare module 'better-cf/queue' {\n interface BetterCfGeneratedBindings {\n${lines.join('\\n')}\n }\n\n interface BetterCfAutoEnv extends BetterCfGeneratedBindings {}\n}\n\nexport {};\n`;\n}\n\nfunction toImportPath(fromDir: string, targetFile: string): string {\n const relative = path.relative(fromDir, targetFile).replace(/\\\\/g, '/');\n if (relative.startsWith('.')) {\n return relative.replace(/\\.tsx?$/, '');\n }\n return `./${relative.replace(/\\.tsx?$/, '')}`;\n}\n","export function deriveQueueName(input: string): string {\n const withoutSuffix = input.replace(/Queue$/, '');\n const kebab = withoutSuffix\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/[_\\s]+/g, '-')\n .replace(/[^a-zA-Z0-9-]/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '')\n .toLowerCase();\n\n return kebab || input.toLowerCase();\n}\n\nexport function deriveBindingName(queueName: string): string {\n return `QUEUE_${queueName.replace(/[^a-zA-Z0-9]/g, '_').replace(/_+/g, '_').toUpperCase()}`;\n}\n\nexport function makeImportName(queueName: string, isDefaultExport: boolean, exportName: string): string {\n if (!isDefaultExport) {\n return exportName;\n }\n return `__queue_${queueName.replace(/-/g, '_')}`;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { Node, Project, SyntaxKind, type CallExpression, type ObjectLiteralExpression } from 'ts-morph';\nimport { deriveBindingName, deriveQueueName, makeImportName } from './naming.js';\nimport type {\n CliConfig,\n DiscoveryDiagnostic,\n DiscoveryResult,\n DiscoveredQueue,\n ExtractedQueueConfig\n} from '../types.js';\n\nconst RESERVED_KEYS = new Set([\n 'retry',\n 'retryDelay',\n 'deadLetter',\n 'deliveryDelay',\n 'visibilityTimeout',\n 'batch',\n 'consumer',\n 'message',\n 'process',\n 'processBatch',\n 'onFailure'\n]);\n\nexport async function scanQueues(config: CliConfig): Promise<DiscoveryResult> {\n const diagnostics: DiscoveryDiagnostic[] = [];\n const candidates = collectSourceFiles(config.rootDir, config.ignore);\n\n const project = createProject(config.rootDir);\n const queues: DiscoveredQueue[] = [];\n\n for (const absolutePath of candidates) {\n try {\n const sourceFile = project.addSourceFileAtPath(absolutePath);\n const localDefineQueueNames = getDefineQueueLocalNames(sourceFile);\n if (localDefineQueueNames.size === 0) {\n project.removeSourceFile(sourceFile);\n continue;\n }\n\n for (const declaration of sourceFile.getVariableDeclarations()) {\n const variableStatement = declaration.getVariableStatement();\n if (!variableStatement || !variableStatement.isExported()) {\n continue;\n }\n\n const call = declaration.getInitializerIfKind(SyntaxKind.CallExpression);\n if (!call || !isDefineQueueCall(call, localDefineQueueNames)) {\n continue;\n }\n\n const exportName = declaration.getName();\n const queueName = deriveQueueName(exportName);\n const extracted = extractQueueConfig(call, absolutePath, diagnostics, config.rootDir);\n\n queues.push({\n exportName,\n queueName,\n bindingName: deriveBindingName(queueName),\n filePath: path.relative(config.rootDir, absolutePath),\n absoluteFilePath: absolutePath,\n isDefaultExport: false,\n importName: makeImportName(queueName, false, exportName),\n config: extracted\n });\n }\n\n for (const exportAssignment of sourceFile.getExportAssignments()) {\n if (exportAssignment.isExportEquals()) {\n continue;\n }\n\n const call = resolveCallExpressionFromExportAssignment(exportAssignment.getExpression());\n if (!call || !isDefineQueueCall(call, localDefineQueueNames)) {\n continue;\n }\n\n const basename = path.basename(absolutePath, path.extname(absolutePath));\n const queueName = deriveQueueName(basename);\n const extracted = extractQueueConfig(call, absolutePath, diagnostics, config.rootDir);\n\n queues.push({\n exportName: 'default',\n queueName,\n bindingName: deriveBindingName(queueName),\n filePath: path.relative(config.rootDir, absolutePath),\n absoluteFilePath: absolutePath,\n isDefaultExport: true,\n importName: makeImportName(queueName, true, 'default'),\n config: extracted\n });\n }\n\n project.removeSourceFile(sourceFile);\n } catch (error) {\n diagnostics.push({\n level: 'error',\n code: 'SCANNER_FILE_ERROR',\n message: `Failed to parse ${absolutePath}: ${toErrorMessage(error)}`,\n filePath: path.relative(config.rootDir, absolutePath)\n });\n }\n }\n\n addConflictDiagnostics(queues, diagnostics);\n\n if (queues.length === 0) {\n diagnostics.push({\n level: 'warning',\n code: 'NO_QUEUES_FOUND',\n message: 'No defineQueue exports found in this project.'\n });\n }\n\n return {\n queues,\n diagnostics\n };\n}\n\nfunction createProject(rootDir: string): Project {\n const tsConfigPath = path.join(rootDir, 'tsconfig.json');\n if (fs.existsSync(tsConfigPath)) {\n return new Project({\n tsConfigFilePath: tsConfigPath,\n skipAddingFilesFromTsConfig: true\n });\n }\n\n return new Project({\n compilerOptions: {\n target: 99,\n module: 99,\n moduleResolution: 99,\n allowJs: false\n }\n });\n}\n\nfunction collectSourceFiles(rootDir: string, ignore: string[]): string[] {\n const files: string[] = [];\n const ignoreSet = new Set(ignore);\n\n function walk(currentPath: string): void {\n const entries = fs.readdirSync(currentPath, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.name.startsWith('.git')) {\n continue;\n }\n\n if (ignoreSet.has(entry.name)) {\n continue;\n }\n\n const absolutePath = path.join(currentPath, entry.name);\n if (entry.isDirectory()) {\n walk(absolutePath);\n continue;\n }\n\n if (entry.name.endsWith('.ts') || entry.name.endsWith('.tsx')) {\n const content = fs.readFileSync(absolutePath, 'utf8');\n if (content.includes('defineQueue')) {\n files.push(absolutePath);\n }\n }\n }\n }\n\n walk(rootDir);\n return files;\n}\n\nfunction getDefineQueueLocalNames(sourceFile: import('ts-morph').SourceFile): Set<string> {\n const names = new Set<string>();\n\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const specifier = importDecl.getModuleSpecifierValue();\n if (!specifier.includes('better-cf.config')) {\n continue;\n }\n\n for (const namedImport of importDecl.getNamedImports()) {\n if (namedImport.getName() !== 'defineQueue') {\n continue;\n }\n names.add(namedImport.getAliasNode()?.getText() ?? namedImport.getName());\n }\n }\n\n return names;\n}\n\nfunction isDefineQueueCall(call: CallExpression, localNames: Set<string>): boolean {\n const expression = call.getExpression();\n if (expression.getKind() !== SyntaxKind.Identifier) {\n return false;\n }\n\n return localNames.has(expression.getText());\n}\n\nfunction resolveCallExpressionFromExportAssignment(\n expression: import('ts-morph').Expression\n): CallExpression | undefined {\n if (expression.getKind() === SyntaxKind.CallExpression) {\n return expression as CallExpression;\n }\n\n if (expression.getKind() !== SyntaxKind.Identifier) {\n return undefined;\n }\n\n const symbol = expression.getSymbol();\n const declaration = symbol?.getValueDeclaration();\n if (!declaration || !Node.isVariableDeclaration(declaration)) {\n return undefined;\n }\n\n return declaration.getInitializerIfKind(SyntaxKind.CallExpression) ?? undefined;\n}\n\nfunction extractQueueConfig(\n call: CallExpression,\n absolutePath: string,\n diagnostics: DiscoveryDiagnostic[],\n rootDir: string\n): ExtractedQueueConfig {\n const firstArg = call.getArguments()[0];\n if (!firstArg || firstArg.getKind() !== SyntaxKind.ObjectLiteralExpression) {\n return {\n hasProcess: false,\n hasProcessBatch: false,\n isMultiJob: false\n };\n }\n\n const objectLiteral = firstArg as ObjectLiteralExpression;\n const hasProcess = hasProperty(objectLiteral, 'process');\n const hasProcessBatch = hasProperty(objectLiteral, 'processBatch');\n\n if (hasProcess && hasProcessBatch) {\n diagnostics.push({\n level: 'error',\n code: 'INVALID_PROCESS_MODE',\n message: 'Queue config cannot include both process and processBatch.',\n filePath: path.relative(rootDir, absolutePath),\n hint: 'Pick exactly one processing mode for worker consumers.'\n });\n }\n\n const retry = readNumberProperty(objectLiteral, 'retry', diagnostics, absolutePath, rootDir);\n const retryDelay = readNumberOrStringProperty(\n objectLiteral,\n 'retryDelay',\n diagnostics,\n absolutePath,\n rootDir\n );\n const deadLetter = readStringProperty(objectLiteral, 'deadLetter', diagnostics, absolutePath, rootDir);\n const deliveryDelay = readNumberOrStringProperty(\n objectLiteral,\n 'deliveryDelay',\n diagnostics,\n absolutePath,\n rootDir\n );\n const topLevelVisibilityTimeout = readNumberOrStringProperty(\n objectLiteral,\n 'visibilityTimeout',\n diagnostics,\n absolutePath,\n rootDir\n );\n\n const consumer = readConsumerConfig(objectLiteral, diagnostics, absolutePath, rootDir);\n const consumerType = consumer?.type;\n const visibilityTimeout = consumer?.visibilityTimeout ?? topLevelVisibilityTimeout;\n\n const batchObject = getObjectLiteralProperty(objectLiteral, 'batch');\n const batchMaxSize = batchObject\n ? readNumberProperty(batchObject, 'maxSize', diagnostics, absolutePath, rootDir)\n : undefined;\n const batchTimeout = batchObject\n ? readNumberOrStringProperty(batchObject, 'timeout', diagnostics, absolutePath, rootDir)\n : undefined;\n const maxConcurrency = batchObject\n ? readNumberProperty(batchObject, 'maxConcurrency', diagnostics, absolutePath, rootDir)\n : undefined;\n\n let isMultiJob = false;\n if (!hasProcess && !hasProcessBatch) {\n for (const property of objectLiteral.getProperties()) {\n if (!Node.isPropertyAssignment(property)) {\n continue;\n }\n\n const propertyName = property.getName();\n if (RESERVED_KEYS.has(propertyName)) {\n continue;\n }\n\n const initializer = property.getInitializer();\n if (!initializer || initializer.getKind() !== SyntaxKind.ObjectLiteralExpression) {\n continue;\n }\n\n const jobObject = initializer as ObjectLiteralExpression;\n if (hasProperty(jobObject, 'message') && hasProperty(jobObject, 'process')) {\n isMultiJob = true;\n break;\n }\n }\n }\n\n const relativeFile = path.relative(rootDir, absolutePath);\n\n if (consumerType === 'http_pull' && (hasProcess || hasProcessBatch)) {\n diagnostics.push({\n level: 'error',\n code: 'INVALID_PULL_MODE_HANDLER',\n message: 'Queue with consumer.type=\"http_pull\" cannot include process/processBatch.',\n filePath: relativeFile,\n hint: 'Remove process handlers for pull consumers and consume via HTTP pull APIs.'\n });\n }\n\n if (consumerType === 'http_pull' && isMultiJob) {\n diagnostics.push({\n level: 'error',\n code: 'UNSUPPORTED_PULL_MULTIJOB',\n message: 'Multi-job queue mode is not supported when consumer.type=\"http_pull\".',\n filePath: relativeFile,\n hint: 'Split jobs into separate queues when using http_pull.'\n });\n }\n\n return {\n retry,\n retryDelay,\n deadLetter,\n deliveryDelay,\n batchMaxSize,\n batchTimeout,\n maxConcurrency,\n visibilityTimeout,\n consumerType,\n hasProcess,\n hasProcessBatch,\n isMultiJob\n };\n}\n\nfunction hasProperty(objectLiteral: ObjectLiteralExpression, name: string): boolean {\n return objectLiteral.getProperties().some((property) => {\n return Node.isPropertyAssignment(property) && property.getName() === name;\n });\n}\n\nfunction getObjectLiteralProperty(\n objectLiteral: ObjectLiteralExpression,\n name: string\n): ObjectLiteralExpression | undefined {\n for (const property of objectLiteral.getProperties()) {\n if (!Node.isPropertyAssignment(property) || property.getName() !== name) {\n continue;\n }\n\n const initializer = property.getInitializer();\n if (initializer && initializer.getKind() === SyntaxKind.ObjectLiteralExpression) {\n return initializer as ObjectLiteralExpression;\n }\n }\n\n return undefined;\n}\n\nfunction readNumberProperty(\n objectLiteral: ObjectLiteralExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): number | undefined {\n const prop = objectLiteral.getProperties().find((property) => {\n return Node.isPropertyAssignment(property) && property.getName() === name;\n });\n if (!prop || !Node.isPropertyAssignment(prop)) {\n return undefined;\n }\n\n const initializer = prop.getInitializer();\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.getKind() !== SyntaxKind.NumericLiteral) {\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Config key ${name} in ${path.relative(rootDir, absolutePath)} is not a static number literal.`,\n filePath: path.relative(rootDir, absolutePath)\n });\n return undefined;\n }\n\n return Number(initializer.getText());\n}\n\nfunction readStringProperty(\n objectLiteral: ObjectLiteralExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): string | undefined {\n const prop = objectLiteral.getProperties().find((property) => {\n return Node.isPropertyAssignment(property) && property.getName() === name;\n });\n if (!prop || !Node.isPropertyAssignment(prop)) {\n return undefined;\n }\n\n const initializer = prop.getInitializer();\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.getKind() !== SyntaxKind.StringLiteral) {\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Config key ${name} in ${path.relative(rootDir, absolutePath)} is not a static string literal.`,\n filePath: path.relative(rootDir, absolutePath)\n });\n return undefined;\n }\n\n return initializer.getText().slice(1, -1);\n}\n\nfunction readNumberOrStringProperty(\n objectLiteral: ObjectLiteralExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): number | string | undefined {\n const prop = objectLiteral.getProperties().find((property) => {\n return Node.isPropertyAssignment(property) && property.getName() === name;\n });\n if (!prop || !Node.isPropertyAssignment(prop)) {\n return undefined;\n }\n\n const initializer = prop.getInitializer();\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.getKind() === SyntaxKind.NumericLiteral) {\n return Number(initializer.getText());\n }\n\n if (initializer.getKind() === SyntaxKind.StringLiteral) {\n return initializer.getText().slice(1, -1);\n }\n\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Config key ${name} in ${path.relative(rootDir, absolutePath)} is not static.`,\n filePath: path.relative(rootDir, absolutePath)\n });\n\n return undefined;\n}\n\nfunction readConsumerConfig(\n objectLiteral: ObjectLiteralExpression,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): { type: 'worker' | 'http_pull'; visibilityTimeout?: string | number } | undefined {\n const consumerObject = getObjectLiteralProperty(objectLiteral, 'consumer');\n if (!consumerObject) {\n return undefined;\n }\n\n const typeValue = readStringProperty(consumerObject, 'type', diagnostics, absolutePath, rootDir);\n if (!typeValue) {\n return undefined;\n }\n\n if (typeValue !== 'worker' && typeValue !== 'http_pull') {\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Unknown consumer.type \"${typeValue}\" in ${path.relative(rootDir, absolutePath)}.`,\n filePath: path.relative(rootDir, absolutePath)\n });\n return undefined;\n }\n\n const visibilityTimeout = readNumberOrStringProperty(\n consumerObject,\n 'visibilityTimeout',\n diagnostics,\n absolutePath,\n rootDir\n );\n\n return {\n type: typeValue,\n visibilityTimeout\n };\n}\n\nfunction addConflictDiagnostics(queues: DiscoveredQueue[], diagnostics: DiscoveryDiagnostic[]): void {\n const queueNameMap = new Map<string, string[]>();\n const bindingNameMap = new Map<string, string[]>();\n\n for (const queue of queues) {\n queueNameMap.set(queue.queueName, [...(queueNameMap.get(queue.queueName) ?? []), queue.filePath]);\n bindingNameMap.set(\n queue.bindingName,\n [...(bindingNameMap.get(queue.bindingName) ?? []), queue.filePath]\n );\n }\n\n for (const [queueName, files] of queueNameMap.entries()) {\n if (files.length < 2) {\n continue;\n }\n\n diagnostics.push({\n level: 'error',\n code: 'QUEUE_NAME_CONFLICT',\n message: `Queue name conflict for ${queueName}: ${files.join(', ')}`\n });\n }\n\n for (const [bindingName, files] of bindingNameMap.entries()) {\n if (files.length < 2) {\n continue;\n }\n\n diagnostics.push({\n level: 'error',\n code: 'BINDING_NAME_CONFLICT',\n message: `Binding name conflict for ${bindingName}: ${files.join(', ')}`\n });\n }\n}\n\nfunction toErrorMessage(value: unknown): string {\n if (value instanceof Error) {\n return value.message;\n }\n\n return String(value);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { CliError } from './errors.js';\nimport { runCommandCapture } from './process.js';\nimport type { CliConfig } from './types.js';\n\nconst WRANGLER_ENV_INTERFACE = 'BetterCfWranglerEnv';\n\nexport interface EnvTypeResult {\n wranglerEnvPath: string;\n autoEnvPath: string;\n}\n\nexport async function generateEnvTypes(config: CliConfig): Promise<EnvTypeResult> {\n const outDir = path.join(config.rootDir, '.better-cf');\n fs.mkdirSync(outDir, { recursive: true });\n\n const wranglerEnvPath = path.join(outDir, 'wrangler-env.d.ts');\n const autoEnvPath = path.join(outDir, 'auto-env.d.ts');\n\n const skipWrangler = process.env.BETTER_CF_SKIP_WRANGLER_TYPES === '1' || config.inferEnvTypes === false;\n\n if (skipWrangler) {\n fs.writeFileSync(\n wranglerEnvPath,\n `// Auto-generated fallback when wrangler types is skipped.\\ninterface ${WRANGLER_ENV_INTERFACE} {\\n [key: string]: unknown;\\n}\\n`,\n 'utf8'\n );\n } else {\n const command = await runCommandCapture(\n 'npx',\n ['wrangler', 'types', '--path', wranglerEnvPath, '--env-interface', WRANGLER_ENV_INTERFACE],\n config.rootDir\n );\n\n if (command.code !== 0) {\n throw new CliError({\n code: 'WRANGLER_TYPES_FAILED',\n summary: 'Failed to infer env types with wrangler.',\n details: command.stderr || command.stdout || `Exit code ${command.code}`,\n hint: 'Install wrangler >=3.91 and verify wrangler config is valid.',\n docsUrl: 'https://developers.cloudflare.com/workers/wrangler/commands/#types'\n });\n }\n\n if (!fs.existsSync(wranglerEnvPath)) {\n throw new CliError({\n code: 'WRANGLER_TYPES_OUTPUT_MISSING',\n summary: 'Wrangler types command succeeded but output file was not created.',\n file: wranglerEnvPath,\n hint: 'Check wrangler CLI version and project permissions.'\n });\n }\n }\n\n fs.writeFileSync(\n autoEnvPath,\n `// Auto-generated by better-cf. Do not edit.\\n/// <reference path=\\\"./wrangler-env.d.ts\\\" />\\n\\ndeclare module 'better-cf/queue' {\\n interface BetterCfAutoEnv extends BetterCfGeneratedBindings, ${WRANGLER_ENV_INTERFACE} {}\\n}\\n\\nexport {};\\n`,\n 'utf8'\n );\n\n return {\n wranglerEnvPath,\n autoEnvPath\n };\n}\n","import { CliError } from '../errors.js';\n\nexport function parseDurationSecondsStrict(value: string | number, context: string): number {\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new CliError({\n code: 'INVALID_DURATION',\n summary: `Invalid duration for ${context}.`,\n details: `Expected non-negative finite number, received ${String(value)}.`,\n hint: 'Use values like 30 or \"30s\", \"5m\", \"1h\".'\n });\n }\n return value;\n }\n\n const match = value.match(/^(\\d+)(s|m|h)$/);\n if (!match) {\n throw new CliError({\n code: 'INVALID_DURATION',\n summary: `Invalid duration string for ${context}.`,\n details: `Received \"${value}\".`,\n hint: 'Use formats like \"30s\", \"5m\", \"1h\".'\n });\n }\n\n const amount = Number.parseInt(match[1], 10);\n const unit = match[2];\n if (unit === 's') {\n return amount;\n }\n\n if (unit === 'm') {\n return amount * 60;\n }\n\n return amount * 3600;\n}\n\nexport function parseDurationMsStrict(value: string | number, context: string): number {\n return parseDurationSecondsStrict(value, context) * 1000;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { applyEdits, modify, parse } from 'jsonc-parser';\nimport type { DiscoveryResult } from '../types.js';\nimport { parseDurationMsStrict, parseDurationSecondsStrict } from './duration.js';\n\nexport function patchJsoncConfig(filePath: string, discovery: DiscoveryResult): void {\n let text = fs.readFileSync(filePath, 'utf8');\n\n text = applyEdits(\n text,\n modify(text, ['main'], '.better-cf/entry.ts', {\n formattingOptions: { insertSpaces: true, tabSize: 2 }\n })\n );\n\n const producers = discovery.queues.map((queue) => ({\n queue: queue.queueName,\n binding: queue.bindingName,\n ...(queue.config.deliveryDelay !== undefined\n ? { delivery_delay: parseDurationSecondsStrict(queue.config.deliveryDelay, `${queue.queueName}.deliveryDelay`) }\n : {})\n }));\n\n const consumers = discovery.queues.map((queue) => {\n const base = {\n queue: queue.queueName,\n ...(queue.config.retry !== undefined ? { max_retries: queue.config.retry } : {}),\n ...(queue.config.deadLetter !== undefined ? { dead_letter_queue: queue.config.deadLetter } : {}),\n ...(queue.config.retryDelay !== undefined\n ? { retry_delay: parseDurationSecondsStrict(queue.config.retryDelay, `${queue.queueName}.retryDelay`) }\n : {})\n };\n\n if (queue.config.consumerType === 'http_pull') {\n return {\n ...base,\n type: 'http_pull',\n ...(queue.config.visibilityTimeout !== undefined\n ? {\n visibility_timeout_ms: parseDurationMsStrict(\n queue.config.visibilityTimeout,\n `${queue.queueName}.visibilityTimeout`\n )\n }\n : {})\n };\n }\n\n return {\n ...base,\n ...(queue.config.batchMaxSize !== undefined ? { max_batch_size: queue.config.batchMaxSize } : {}),\n ...(queue.config.batchTimeout !== undefined\n ? { max_batch_timeout: parseDurationSecondsStrict(queue.config.batchTimeout, `${queue.queueName}.batch.timeout`) }\n : {}),\n ...(queue.config.maxConcurrency !== undefined\n ? { max_concurrency: queue.config.maxConcurrency }\n : {})\n };\n });\n\n text = applyEdits(\n text,\n modify(text, ['queues'], { producers, consumers, better_cf_managed: true }, {\n formattingOptions: { insertSpaces: true, tabSize: 2 }\n })\n );\n\n fs.writeFileSync(filePath, text, 'utf8');\n}\n\nexport function ensureJsoncExists(rootDir: string): string {\n const filePath = path.join(rootDir, 'wrangler.jsonc');\n if (!fs.existsSync(filePath)) {\n const date = new Date().toISOString().split('T')[0];\n const content = `{\n \"$schema\": \"node_modules/wrangler/config-schema.json\",\n \"name\": \"my-worker\",\n \"main\": \".better-cf/entry.ts\",\n \"compatibility_date\": \"${date}\",\n \"queues\": {\n \"producers\": [],\n \"consumers\": []\n }\n}\\n`;\n fs.writeFileSync(filePath, content, 'utf8');\n } else {\n const parsed = parse(fs.readFileSync(filePath, 'utf8')) as Record<string, unknown>;\n if (!parsed.queues) {\n patchJsoncConfig(filePath, { queues: [], diagnostics: [] });\n }\n }\n return filePath;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport type { DiscoveryResult } from '../types.js';\nimport { parseDurationMsStrict, parseDurationSecondsStrict } from './duration.js';\n\nconst START_MARKER = '# --- better-cf:start ---';\nconst END_MARKER = '# --- better-cf:end ---';\n\nexport function patchTomlConfig(filePath: string, discovery: DiscoveryResult): void {\n let content = fs.readFileSync(filePath, 'utf8');\n\n content = ensureMainEntry(content);\n\n const generatedSection = renderQueueSection(discovery);\n\n const startIndex = content.indexOf(START_MARKER);\n const endIndex = content.indexOf(END_MARKER);\n\n if (startIndex >= 0 && endIndex > startIndex) {\n const head = content.slice(0, startIndex + START_MARKER.length);\n const tail = content.slice(endIndex);\n content = `${head}\\n${generatedSection}\\n${tail}`;\n } else {\n content = `${content.trimEnd()}\\n\\n${START_MARKER}\\n${generatedSection}\\n${END_MARKER}\\n`;\n }\n\n fs.writeFileSync(filePath, content, 'utf8');\n}\n\nexport function ensureTomlExists(rootDir: string): string {\n const filePath = path.join(rootDir, 'wrangler.toml');\n if (!fs.existsSync(filePath)) {\n const date = new Date().toISOString().split('T')[0];\n const initial = `name = \"my-worker\"\\nmain = \".better-cf/entry.ts\"\\ncompatibility_date = \"${date}\"\\n\\n${START_MARKER}\\n${END_MARKER}\\n`;\n fs.writeFileSync(filePath, initial, 'utf8');\n }\n return filePath;\n}\n\nfunction ensureMainEntry(content: string): string {\n if (/^main\\s*=\\s*\".*\"/m.test(content)) {\n return content.replace(/^main\\s*=\\s*\".*\"/m, 'main = \".better-cf/entry.ts\"');\n }\n\n return `main = \".better-cf/entry.ts\"\\n${content}`;\n}\n\nfunction renderQueueSection(discovery: DiscoveryResult): string {\n const lines: string[] = [];\n\n for (const queue of discovery.queues) {\n lines.push('[[queues.producers]]');\n lines.push(`queue = ${toTomlString(queue.queueName)}`);\n lines.push(`binding = ${toTomlString(queue.bindingName)}`);\n\n if (queue.config.deliveryDelay !== undefined) {\n lines.push(\n `delivery_delay = ${parseDurationSecondsStrict(\n queue.config.deliveryDelay,\n `${queue.queueName}.deliveryDelay`\n )}`\n );\n }\n\n lines.push('');\n\n lines.push('[[queues.consumers]]');\n lines.push(`queue = ${toTomlString(queue.queueName)}`);\n\n if (queue.config.consumerType === 'http_pull') {\n lines.push(`type = ${toTomlString('http_pull')}`);\n if (queue.config.visibilityTimeout !== undefined) {\n lines.push(\n `visibility_timeout_ms = ${parseDurationMsStrict(\n queue.config.visibilityTimeout,\n `${queue.queueName}.visibilityTimeout`\n )}`\n );\n }\n } else {\n if (queue.config.batchMaxSize !== undefined) {\n lines.push(`max_batch_size = ${queue.config.batchMaxSize}`);\n }\n\n if (queue.config.batchTimeout !== undefined) {\n lines.push(\n `max_batch_timeout = ${parseDurationSecondsStrict(\n queue.config.batchTimeout,\n `${queue.queueName}.batch.timeout`\n )}`\n );\n }\n\n if (queue.config.maxConcurrency !== undefined) {\n lines.push(`max_concurrency = ${queue.config.maxConcurrency}`);\n }\n }\n\n if (queue.config.retry !== undefined) {\n lines.push(`max_retries = ${queue.config.retry}`);\n }\n\n if (queue.config.deadLetter !== undefined) {\n lines.push(`dead_letter_queue = ${toTomlString(queue.config.deadLetter)}`);\n }\n\n if (queue.config.retryDelay !== undefined) {\n lines.push(\n `retry_delay = ${parseDurationSecondsStrict(queue.config.retryDelay, `${queue.queueName}.retryDelay`)}`\n );\n }\n\n lines.push('');\n }\n\n return lines.join('\\n').trimEnd();\n}\n\nfunction toTomlString(value: string): string {\n return `\"${value\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\t/g, '\\\\t')}\"`;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { ensureJsoncExists, patchJsoncConfig } from './jsonc.js';\nimport { ensureTomlExists, patchTomlConfig } from './toml.js';\nimport type { CliConfig, DiscoveryResult } from '../types.js';\n\nexport function patchWranglerConfig(config: CliConfig, discovery: DiscoveryResult): string {\n const existing = detectWranglerConfig(config.rootDir);\n\n if (existing && (existing.endsWith('.jsonc') || existing.endsWith('.json'))) {\n patchJsoncConfig(existing, discovery);\n return existing;\n }\n\n if (existing && existing.endsWith('.toml')) {\n patchTomlConfig(existing, discovery);\n return existing;\n }\n\n const created = ensureTomlExists(config.rootDir);\n patchTomlConfig(created, discovery);\n return created;\n}\n\nfunction detectWranglerConfig(rootDir: string): string | undefined {\n const preferred = ['wrangler.jsonc', 'wrangler.json', 'wrangler.toml'];\n for (const fileName of preferred) {\n const absolutePath = path.join(rootDir, fileName);\n if (fs.existsSync(absolutePath)) {\n return absolutePath;\n }\n }\n\n if (fs.existsSync(path.join(rootDir, 'package.json')) && fs.existsSync(path.join(rootDir, 'src'))) {\n return ensureJsoncExists(rootDir);\n }\n\n return undefined;\n}\n","import { generateCode } from '../codegen.js';\nimport { loadCliConfig } from '../config.js';\nimport { scanQueues } from '../discovery/scanner.js';\nimport { generateEnvTypes } from '../env-types.js';\nimport { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { patchWranglerConfig } from '../wrangler/index.js';\nimport type { GenerateResult } from '../types.js';\n\nexport async function runGenerate(rootDir = process.cwd()): Promise<GenerateResult> {\n const config = loadCliConfig(rootDir);\n const discovery = await scanQueues(config);\n\n for (const diagnostic of discovery.diagnostics) {\n logger.diagnostic(diagnostic);\n }\n\n const hasErrors = discovery.diagnostics.some((diag) => diag.level === 'error');\n if (hasErrors) {\n throw new CliError({\n code: 'QUEUE_DISCOVERY_FAILED',\n summary: 'Queue discovery failed due to configuration errors.',\n hint: 'Fix the diagnostics above and re-run `better-cf generate`.',\n docsUrl: 'https://github.com/better-cf/better-cf#errors'\n });\n }\n\n const generated = generateCode(discovery, config);\n const wranglerConfigPath = patchWranglerConfig(config, discovery);\n const envTypeResult = await generateEnvTypes(config);\n\n return {\n discovery,\n generatedEntryPath: generated.entryPath,\n generatedTypesPath: generated.typesPath,\n wranglerConfigPath,\n autoEnvPath: envTypeResult.autoEnvPath\n };\n}\n\nexport async function generateCommand(rootDir = process.cwd()): Promise<void> {\n const result = await runGenerate(rootDir);\n logger.success(`Generated ${result.discovery.queues.length} queue(s)`);\n logger.item('entry', result.generatedEntryPath);\n logger.item('types', result.generatedTypesPath);\n logger.item('auto-env', result.autoEnvPath);\n logger.item('wrangler', result.wranglerConfigPath);\n}\n","import { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { runCommand } from '../process.js';\nimport { runGenerate } from './generate.js';\n\nexport async function deployCommand(rootDir = process.cwd()): Promise<void> {\n const result = await runGenerate(rootDir);\n\n logger.section('Deploying with wrangler');\n const code = await runCommand('npx', ['wrangler', 'deploy'], rootDir, 'inherit');\n if (code !== 0) {\n throw new CliError({\n code: 'WRANGLER_DEPLOY_FAILED',\n summary: 'wrangler deploy failed.',\n details: `wrangler exited with code ${code}`,\n hint: 'Run wrangler deploy manually to inspect environment-specific failures.'\n });\n }\n\n logger.success('Deployment complete');\n logger.section('Active queue bindings');\n for (const queue of result.discovery.queues) {\n logger.item(queue.queueName, queue.bindingName);\n }\n}\n","import chokidar, { type FSWatcher } from 'chokidar';\n\nexport interface WatcherOptions {\n ignored: string[];\n onRelevantChange: (filePath: string) => Promise<void>;\n}\n\nconst WATCH_GLOBS = [\n '**/*.ts',\n '**/*.tsx',\n 'better-cf.config.ts',\n 'wrangler.toml',\n 'wrangler.json',\n 'wrangler.jsonc',\n 'tsconfig.json'\n];\n\nexport function createProjectWatcher(rootDir: string, options: WatcherOptions): FSWatcher {\n const watcher = chokidar.watch(WATCH_GLOBS, {\n cwd: rootDir,\n ignored: options.ignored.map((entry) => `${entry}/**`),\n ignoreInitial: true,\n usePolling: true,\n interval: 100,\n awaitWriteFinish: {\n stabilityThreshold: 150,\n pollInterval: 25\n }\n });\n\n const handler = async (filePath: string): Promise<void> => {\n await options.onRelevantChange(filePath);\n };\n\n watcher.on('add', handler);\n watcher.on('change', handler);\n watcher.on('unlink', handler);\n watcher.on('ready', () => {\n void options.onRelevantChange('__watcher_ready__');\n });\n\n return watcher;\n}\n","import type { ChildProcess } from 'node:child_process';\nimport { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { spawnCommand } from '../process.js';\nimport { createProjectWatcher } from '../watcher.js';\nimport { runGenerate } from './generate.js';\n\nexport interface DevOptions {\n port: string;\n watch: boolean;\n remote: boolean;\n}\n\nexport async function devCommand(options: DevOptions, rootDir = process.cwd()): Promise<void> {\n if (options.remote) {\n throw new CliError({\n code: 'REMOTE_QUEUE_DEV_UNSUPPORTED',\n summary: 'Cloudflare Queues do not support wrangler dev --remote.',\n hint: 'Run better-cf dev without --remote for queue consumer development.',\n docsUrl: 'https://developers.cloudflare.com/queues/configuration/local-development/'\n });\n }\n\n let wranglerProcess: ChildProcess | null = null;\n let isRebuilding = false;\n\n const buildAndRestart = async (reason: string): Promise<void> => {\n if (isRebuilding) {\n return;\n }\n\n isRebuilding = true;\n try {\n const result = await runGenerate(rootDir);\n logger.success(`Regenerated project (${reason}) with ${result.discovery.queues.length} queue(s)`);\n\n if (wranglerProcess) {\n wranglerProcess.kill();\n }\n\n wranglerProcess = spawnCommand('npx', ['wrangler', 'dev', '--port', options.port], rootDir);\n wranglerProcess.once('error', (error) => {\n logger.error(`Failed to start wrangler dev: ${error.message}`);\n });\n } finally {\n isRebuilding = false;\n }\n };\n\n await buildAndRestart('initial build');\n\n if (options.watch) {\n const watcher = createProjectWatcher(rootDir, {\n // Ignore Wrangler's local build output to avoid self-triggered rebuild loops.\n ignored: ['node_modules', '.better-cf', '.wrangler', 'dist'],\n onRelevantChange: async (filePath) => {\n await buildAndRestart(`file changed: ${filePath}`);\n }\n });\n\n process.on('SIGINT', async () => {\n await watcher.close();\n wranglerProcess?.kill();\n process.exit(0);\n });\n } else {\n process.on('SIGINT', () => {\n wranglerProcess?.kill();\n process.exit(0);\n });\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { logger } from '../logger.js';\n\nexport async function initCommand(rootDir = process.cwd()): Promise<void> {\n const configPath = path.join(rootDir, 'better-cf.config.ts');\n if (!fs.existsSync(configPath)) {\n fs.writeFileSync(configPath, defaultConfigTemplate(), 'utf8');\n logger.success('Created better-cf.config.ts');\n }\n\n const workerPath = path.join(rootDir, 'worker.ts');\n const srcWorkerPath = path.join(rootDir, 'src', 'worker.ts');\n if (!fs.existsSync(workerPath) && !fs.existsSync(srcWorkerPath)) {\n fs.writeFileSync(workerPath, defaultWorkerTemplate(), 'utf8');\n logger.success('Created worker.ts');\n }\n\n const outputDir = path.join(rootDir, '.better-cf');\n fs.mkdirSync(outputDir, { recursive: true });\n\n const gitignorePath = path.join(rootDir, '.gitignore');\n if (!fs.existsSync(gitignorePath)) {\n fs.writeFileSync(gitignorePath, '.better-cf/\\nnode_modules/\\n', 'utf8');\n logger.success('Created .gitignore');\n } else {\n const existing = fs.readFileSync(gitignorePath, 'utf8');\n if (!existing.includes('.better-cf/')) {\n fs.appendFileSync(gitignorePath, '\\n.better-cf/\\n', 'utf8');\n logger.success('Updated .gitignore');\n }\n }\n\n const packageJsonPath = path.join(rootDir, 'package.json');\n const packageJsonExists = fs.existsSync(packageJsonPath);\n const packageJson = packageJsonExists\n ? (JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as {\n scripts?: Record<string, string>;\n })\n : ({\n name: derivePackageName(rootDir),\n version: '0.0.0',\n private: true,\n scripts: {}\n } as {\n scripts?: Record<string, string>;\n });\n\n if (!packageJsonExists) {\n logger.success('Created package.json');\n }\n\n packageJson.scripts = packageJson.scripts ?? {};\n packageJson.scripts.dev = packageJson.scripts.dev ?? 'better-cf dev';\n packageJson.scripts.deploy = packageJson.scripts.deploy ?? 'better-cf deploy';\n packageJson.scripts.generate = 'better-cf generate';\n\n fs.writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf8');\n logger.success('Updated package.json scripts');\n\n const wranglerTomlPath = path.join(rootDir, 'wrangler.toml');\n const wranglerJsoncPath = path.join(rootDir, 'wrangler.jsonc');\n const wranglerJsonPath = path.join(rootDir, 'wrangler.json');\n if (!fs.existsSync(wranglerTomlPath) && !fs.existsSync(wranglerJsoncPath) && !fs.existsSync(wranglerJsonPath)) {\n const date = new Date().toISOString().split('T')[0];\n fs.writeFileSync(\n wranglerTomlPath,\n `name = \"my-worker\"\\nmain = \".better-cf/entry.ts\"\\ncompatibility_date = \"${date}\"\\n\\n# --- better-cf:start ---\\n# --- better-cf:end ---\\n`,\n 'utf8'\n );\n logger.success('Created wrangler.toml');\n }\n\n logger.info('Next steps: create a queue export and run `better-cf dev`.');\n}\n\nfunction derivePackageName(rootDir: string): string {\n const raw = path.basename(path.resolve(rootDir)).toLowerCase().trim();\n const normalized = raw\n .replace(/[^a-z0-9._-]+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n\n return normalized || 'better-cf-app';\n}\n\nfunction defaultConfigTemplate(): string {\n return `import { createSDK } from 'better-cf/queue';\n\n// Auto-inferred env types are generated under .better-cf/*.d.ts\n// You can still switch to createSDK<Env>() when you need explicit overrides.\nexport const { defineQueue, defineWorker } = createSDK();\n\nexport const betterCfConfig = {\n // workerEntry: 'worker.ts',\n // ignore: ['coverage'],\n legacyServiceWorker: false,\n inferEnvTypes: true,\n};\n`;\n}\n\nfunction defaultWorkerTemplate(): string {\n return `import { defineWorker } from './better-cf.config';\n\nexport default defineWorker({\n async fetch() {\n return new Response('better-cf ready');\n },\n});\n`;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { createInterface } from 'node:readline/promises';\nimport { stdin as input, stdout as output } from 'node:process';\nimport { initCommand } from './init.js';\nimport { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { runCommand } from '../process.js';\n\nexport type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\n\nexport interface CreateOptions {\n yes?: boolean;\n install?: boolean;\n force?: boolean;\n packageManager?: PackageManager;\n}\n\ninterface InstallPlan {\n command: PackageManager;\n runtimeArgs: string[];\n devArgs: string[];\n devRunCommand: string;\n}\n\nconst DEFAULT_PROJECT_DIR = 'better-cf-app';\nconst PACKAGE_MANAGERS: PackageManager[] = ['npm', 'pnpm', 'yarn', 'bun'];\nconst INSTALL_PLANS: Record<PackageManager, InstallPlan> = {\n npm: {\n command: 'npm',\n runtimeArgs: ['install', 'better-cf', 'zod'],\n devArgs: ['install', '-D', 'wrangler', '@cloudflare/workers-types', 'typescript'],\n devRunCommand: 'npm run dev'\n },\n pnpm: {\n command: 'pnpm',\n runtimeArgs: ['add', 'better-cf', 'zod'],\n devArgs: ['add', '-D', 'wrangler', '@cloudflare/workers-types', 'typescript'],\n devRunCommand: 'pnpm dev'\n },\n yarn: {\n command: 'yarn',\n runtimeArgs: ['add', 'better-cf', 'zod'],\n devArgs: ['add', '-D', 'wrangler', '@cloudflare/workers-types', 'typescript'],\n devRunCommand: 'yarn dev'\n },\n bun: {\n command: 'bun',\n runtimeArgs: ['add', 'better-cf', 'zod'],\n devArgs: ['add', '-d', 'wrangler', '@cloudflare/workers-types', 'typescript'],\n devRunCommand: 'bun run dev'\n }\n};\n\nexport async function createCommand(\n projectDirectoryArg: string | undefined,\n options: CreateOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n const isYes = options.yes ?? false;\n const shouldInstallByDefault = options.install ?? true;\n const isInteractive = Boolean(input.isTTY && output.isTTY && !isYes);\n\n const prompts = isInteractive ? createPrompts() : undefined;\n try {\n const projectDirectory = await resolveProjectDirectory(projectDirectoryArg, isYes, prompts);\n const targetDir = path.resolve(rootDir, projectDirectory);\n\n ensureTargetDirectory(targetDir, options.force ?? false);\n await initCommand(targetDir);\n\n const detectedPackageManager = detectPackageManager(rootDir);\n const packageManager =\n options.packageManager ??\n (prompts ? await prompts.selectPackageManager(detectedPackageManager) : detectedPackageManager);\n\n const shouldInstall =\n shouldInstallByDefault && (prompts ? await prompts.confirmInstall(true) : true);\n\n if (shouldInstall) {\n await installDependencies(packageManager, targetDir);\n }\n\n const relativePath = path.relative(rootDir, targetDir) || '.';\n const plan = INSTALL_PLANS[packageManager];\n\n logger.section('Project ready');\n logger.item('path', targetDir);\n if (relativePath !== '.') {\n logger.item('cd', `cd ${relativePath}`);\n }\n if (!shouldInstall) {\n logger.item('install', `${plan.command} ${plan.runtimeArgs.join(' ')}`);\n logger.item('install (dev)', `${plan.command} ${plan.devArgs.join(' ')}`);\n }\n logger.item('dev', plan.devRunCommand);\n } finally {\n prompts?.close();\n }\n}\n\nexport function detectPackageManager(rootDir = process.cwd()): PackageManager {\n if (fs.existsSync(path.join(rootDir, 'pnpm-lock.yaml'))) {\n return 'pnpm';\n }\n if (fs.existsSync(path.join(rootDir, 'yarn.lock'))) {\n return 'yarn';\n }\n if (fs.existsSync(path.join(rootDir, 'bun.lock')) || fs.existsSync(path.join(rootDir, 'bun.lockb'))) {\n return 'bun';\n }\n\n const userAgent = process.env.npm_config_user_agent?.toLowerCase() ?? '';\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n if (userAgent.startsWith('bun')) {\n return 'bun';\n }\n if (userAgent.startsWith('npm')) {\n return 'npm';\n }\n\n return 'npm';\n}\n\nfunction ensureTargetDirectory(targetDir: string, force: boolean): void {\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n return;\n }\n\n const stats = fs.statSync(targetDir);\n if (!stats.isDirectory()) {\n throw new CliError({\n code: 'CREATE_TARGET_INVALID',\n summary: `Target path exists and is not a directory: ${targetDir}.`,\n hint: 'Choose a different project directory.'\n });\n }\n\n const contents = fs.readdirSync(targetDir).filter((entry) => entry !== '.DS_Store');\n if (contents.length > 0 && !force) {\n throw new CliError({\n code: 'CREATE_TARGET_NOT_EMPTY',\n summary: `Target directory is not empty: ${targetDir}.`,\n hint: 'Use --force to scaffold in a non-empty directory.'\n });\n }\n}\n\nasync function resolveProjectDirectory(\n projectDirectoryArg: string | undefined,\n isYes: boolean,\n prompts: ReturnType<typeof createPrompts> | undefined\n): Promise<string> {\n if (projectDirectoryArg && projectDirectoryArg.trim().length > 0) {\n return projectDirectoryArg.trim();\n }\n\n if (isYes) {\n return DEFAULT_PROJECT_DIR;\n }\n\n if (!prompts) {\n throw new CliError({\n code: 'CREATE_TARGET_REQUIRED',\n summary: 'Project directory is required in non-interactive mode.',\n hint: 'Pass a directory name, for example: `better-cf create my-worker`.'\n });\n }\n\n return prompts.askProjectDirectory(DEFAULT_PROJECT_DIR);\n}\n\nasync function installDependencies(packageManager: PackageManager, targetDir: string): Promise<void> {\n const plan = INSTALL_PLANS[packageManager];\n logger.section(`Installing dependencies with ${plan.command}`);\n\n await runInstallCommand(plan.command, plan.runtimeArgs, targetDir);\n await runInstallCommand(plan.command, plan.devArgs, targetDir);\n}\n\nasync function runInstallCommand(\n command: PackageManager,\n args: string[],\n cwd: string\n): Promise<void> {\n try {\n const code = await runCommand(command, args, cwd, 'inherit');\n if (code !== 0) {\n throw new CliError({\n code: 'DEPENDENCY_INSTALL_FAILED',\n summary: `Dependency install failed: ${command} ${args.join(' ')}`,\n details: `Command exited with code ${code}.`,\n hint: `Run this command manually in ${cwd}.`\n });\n }\n } catch (error) {\n if (error instanceof CliError) {\n throw error;\n }\n\n throw new CliError({\n code: 'DEPENDENCY_INSTALL_FAILED',\n summary: `Dependency install failed: ${command} ${args.join(' ')}`,\n details: error instanceof Error ? error.message : String(error),\n hint: `Install dependencies manually in ${cwd}.`\n });\n }\n}\n\nfunction createPrompts() {\n const rl = createInterface({ input, output });\n\n return {\n async askProjectDirectory(defaultValue: string): Promise<string> {\n while (true) {\n const raw = await rl.question(`Project directory (${defaultValue}): `);\n const value = raw.trim() || defaultValue;\n if (value.length > 0) {\n return value;\n }\n }\n },\n\n async selectPackageManager(defaultValue: PackageManager): Promise<PackageManager> {\n const defaultIndex = PACKAGE_MANAGERS.indexOf(defaultValue);\n while (true) {\n output.write('\\nSelect a package manager:\\n');\n PACKAGE_MANAGERS.forEach((manager, index) => {\n output.write(` ${index + 1}) ${manager}${manager === defaultValue ? ' (default)' : ''}\\n`);\n });\n\n const raw = await rl.question(`Package manager [${defaultIndex + 1}]: `);\n const normalized = raw.trim().toLowerCase();\n if (!normalized) {\n return defaultValue;\n }\n\n if (PACKAGE_MANAGERS.includes(normalized as PackageManager)) {\n return normalized as PackageManager;\n }\n\n const asNumber = Number(normalized);\n if (Number.isInteger(asNumber) && asNumber >= 1 && asNumber <= PACKAGE_MANAGERS.length) {\n return PACKAGE_MANAGERS[asNumber - 1];\n }\n\n logger.warn(`Unsupported package manager input: ${raw}`);\n }\n },\n\n async confirmInstall(defaultValue: boolean): Promise<boolean> {\n const hint = defaultValue ? 'Y/n' : 'y/N';\n while (true) {\n const raw = await rl.question(`Install dependencies now? (${hint}): `);\n const normalized = raw.trim().toLowerCase();\n\n if (!normalized) {\n return defaultValue;\n }\n if (normalized === 'y' || normalized === 'yes') {\n return true;\n }\n if (normalized === 'n' || normalized === 'no') {\n return false;\n }\n\n logger.warn(`Unsupported confirmation input: ${raw}`);\n }\n },\n\n close(): void {\n rl.close();\n }\n };\n}\n","import { Command } from 'commander';\nimport {\n queueConsumerHttpAddCommand,\n queueConsumerHttpRemoveCommand,\n queueConsumerWorkerAddCommand,\n queueConsumerWorkerRemoveCommand,\n queueCreateCommand,\n queueDeleteCommand,\n queueInfoCommand,\n queueListCommand,\n queuePauseCommand,\n queuePurgeCommand,\n queueResumeCommand,\n queueUpdateCommand,\n subscriptionCreateCommand,\n subscriptionDeleteCommand,\n subscriptionGetCommand,\n subscriptionListCommand,\n subscriptionUpdateCommand\n} from './commands/admin.js';\nimport { deployCommand } from './commands/deploy.js';\nimport { devCommand } from './commands/dev.js';\nimport { generateCommand } from './commands/generate.js';\nimport { initCommand } from './commands/init.js';\nimport { createCommand, type PackageManager } from './commands/create.js';\nimport { CliError } from './errors.js';\nimport { toCliError } from './errors.js';\nimport { logger } from './logger.js';\n\nexport async function run(argv = process.argv.slice(2)): Promise<void> {\n const program = new Command();\n\n program.name('better-cf').description('better-cf queue SDK CLI').version('0.2.1');\n\n program\n .command('create [project-directory]')\n .description('Create a new better-cf project')\n .option('-y, --yes', 'Use defaults and skip prompts')\n .option('--no-install', 'Skip dependency installation')\n .option('--force', 'Allow creating in a non-empty directory')\n .option('--use-npm', 'Use npm to install dependencies')\n .option('--use-pnpm', 'Use pnpm to install dependencies')\n .option('--use-yarn', 'Use yarn to install dependencies')\n .option('--use-bun', 'Use bun to install dependencies')\n .action(\n async (\n projectDirectory: string | undefined,\n options: {\n yes: boolean;\n install: boolean;\n force: boolean;\n useNpm?: boolean;\n usePnpm?: boolean;\n useYarn?: boolean;\n useBun?: boolean;\n }\n ) => {\n const packageManager = resolveCreatePackageManager(options);\n await createCommand(projectDirectory, {\n yes: options.yes,\n install: options.install,\n force: options.force,\n packageManager\n });\n }\n );\n\n program.command('init').description('Initialize better-cf in the current project').action(async () => {\n await initCommand();\n });\n\n program.command('generate').description('Scan queues and regenerate .better-cf files').action(async () => {\n await generateCommand();\n });\n\n program\n .command('dev')\n .description('Run local development with queue codegen and wrangler dev')\n .option('-p, --port <port>', 'Port to pass to wrangler dev', '8787')\n .option('--no-watch', 'Disable file watcher')\n .option('--remote', 'Pass through remote mode (blocked for queues)')\n .action(async (options: { port: string; watch: boolean; remote: boolean }) => {\n await devCommand(options);\n });\n\n program.command('deploy').description('Generate and deploy via wrangler deploy').action(async () => {\n await deployCommand();\n });\n\n program.command('queue:list').description('List queues').action(async () => {\n await queueListCommand();\n });\n\n program\n .command('queue:create')\n .description('Create a queue')\n .requiredOption('--name <name>', 'Queue name')\n .option('--delivery-delay-secs <seconds>', 'Default delivery delay in seconds', parseNumberOption)\n .option(\n '--message-retention-period-secs <seconds>',\n 'Message retention period in seconds',\n parseNumberOption\n )\n .action(\n async (options: {\n name: string;\n deliveryDelaySecs?: number;\n messageRetentionPeriodSecs?: number;\n }) => {\n await queueCreateCommand(options.name, {\n deliveryDelaySecs: options.deliveryDelaySecs,\n messageRetentionPeriodSecs: options.messageRetentionPeriodSecs\n });\n }\n );\n program\n .command('queue:update')\n .description('Update a queue')\n .requiredOption('--name <name>', 'Queue name')\n .option('--delivery-delay-secs <seconds>', 'Default delivery delay in seconds', parseNumberOption)\n .option(\n '--message-retention-period-secs <seconds>',\n 'Message retention period in seconds',\n parseNumberOption\n )\n .action(\n async (options: {\n name: string;\n deliveryDelaySecs?: number;\n messageRetentionPeriodSecs?: number;\n }) => {\n await queueUpdateCommand(options.name, {\n deliveryDelaySecs: options.deliveryDelaySecs,\n messageRetentionPeriodSecs: options.messageRetentionPeriodSecs\n });\n }\n );\n\n program\n .command('queue:delete')\n .description('Delete a queue')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queueDeleteCommand(options.name);\n });\n\n program\n .command('queue:info')\n .description('Describe a queue')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queueInfoCommand(options.name);\n });\n\n program\n .command('queue:pause')\n .description('Pause queue delivery')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queuePauseCommand(options.name);\n });\n\n program\n .command('queue:resume')\n .description('Resume queue delivery')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queueResumeCommand(options.name);\n });\n\n program\n .command('queue:purge')\n .description('Purge queue messages')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queuePurgeCommand(options.name);\n });\n\n program\n .command('queue:consumer:http:add')\n .description('Add HTTP pull consumer for a queue')\n .requiredOption('--queue <queue>', 'Queue name')\n .option('--batch-size <size>', 'Batch size', parseNumberOption)\n .option('--message-retries <retries>', 'Message retries', parseNumberOption)\n .option('--dead-letter-queue <queue>', 'Dead letter queue name')\n .option('--visibility-timeout-secs <seconds>', 'Visibility timeout for pull consumer', parseNumberOption)\n .option('--retry-delay-secs <seconds>', 'Retry delay in seconds', parseNumberOption)\n .action(\n async (options: {\n queue: string;\n batchSize?: number;\n messageRetries?: number;\n deadLetterQueue?: string;\n visibilityTimeoutSecs?: number;\n retryDelaySecs?: number;\n }) => {\n await queueConsumerHttpAddCommand(options.queue, {\n batchSize: options.batchSize,\n messageRetries: options.messageRetries,\n deadLetterQueue: options.deadLetterQueue,\n visibilityTimeoutSecs: options.visibilityTimeoutSecs,\n retryDelaySecs: options.retryDelaySecs\n });\n }\n );\n program\n .command('queue:consumer:http:remove')\n .description('Remove HTTP pull consumer for a queue')\n .requiredOption('--queue <queue>', 'Queue name')\n .action(async (options: { queue: string }) => {\n await queueConsumerHttpRemoveCommand(options.queue);\n });\n\n program\n .command('queue:consumer:worker:add')\n .description('Add worker consumer for a queue')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--script <script>', 'Worker script name')\n .option('--batch-size <size>', 'Batch size', parseNumberOption)\n .option('--batch-timeout <seconds>', 'Batch timeout in seconds', parseNumberOption)\n .option('--message-retries <retries>', 'Message retries', parseNumberOption)\n .option('--dead-letter-queue <queue>', 'Dead letter queue name')\n .option('--max-concurrency <count>', 'Max consumer concurrency', parseNumberOption)\n .option('--retry-delay-secs <seconds>', 'Retry delay in seconds', parseNumberOption)\n .action(\n async (options: {\n queue: string;\n script: string;\n batchSize?: number;\n batchTimeout?: number;\n messageRetries?: number;\n deadLetterQueue?: string;\n maxConcurrency?: number;\n retryDelaySecs?: number;\n }) => {\n await queueConsumerWorkerAddCommand(\n options.queue,\n options.script,\n {\n batchSize: options.batchSize,\n batchTimeout: options.batchTimeout,\n messageRetries: options.messageRetries,\n deadLetterQueue: options.deadLetterQueue,\n maxConcurrency: options.maxConcurrency,\n retryDelaySecs: options.retryDelaySecs\n }\n );\n }\n );\n program\n .command('queue:consumer:worker:remove')\n .description('Remove worker consumer for a queue')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--script <script>', 'Worker script name')\n .action(async (options: { queue: string; script: string }) => {\n await queueConsumerWorkerRemoveCommand(options.queue, options.script);\n });\n program\n .command('subscription:list')\n .description('List queue subscriptions')\n .requiredOption('--queue <queue>', 'Queue name')\n .option('--page <page>', 'Page number', parseNumberOption)\n .option('--per-page <count>', 'Results per page', parseNumberOption)\n .option('--json', 'JSON output')\n .action(async (options: { queue: string; page?: number; perPage?: number; json?: boolean }) => {\n await subscriptionListCommand(\n options.queue,\n { page: options.page, perPage: options.perPage, json: options.json }\n );\n });\n\n program\n .command('subscription:create')\n .description('Create queue subscription')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--source <source>', 'Source id (same as queue name in most setups)')\n .requiredOption('--events <events>', 'Event list (for example \"message.acked\")')\n .option('--name <name>', 'Subscription name')\n .option('--enabled <enabled>', 'Subscription enabled state (true/false)', parseBooleanOption)\n .option('--model-name <modelName>', 'AI model name (for AI gateway subscriptions)')\n .option('--worker-name <workerName>', 'Worker destination name')\n .option('--workflow-name <workflowName>', 'Workflow destination name')\n .action(\n async (options: {\n queue: string;\n source: string;\n events: string;\n name?: string;\n enabled?: boolean;\n modelName?: string;\n workerName?: string;\n workflowName?: string;\n }) => {\n await subscriptionCreateCommand(options.queue, {\n source: options.source,\n events: options.events,\n name: options.name,\n enabled: options.enabled,\n modelName: options.modelName,\n workerName: options.workerName,\n workflowName: options.workflowName\n });\n }\n );\n program\n .command('subscription:get')\n .description('Get queue subscription')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--id <id>', 'Subscription ID')\n .option('--json', 'JSON output')\n .action(async (options: { queue: string; id: string; json?: boolean }) => {\n await subscriptionGetCommand(options.queue, options.id, { json: options.json });\n });\n\n program\n .command('subscription:update')\n .description('Update queue subscription destination')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--id <id>', 'Subscription ID')\n .option('--name <name>', 'Subscription name')\n .option('--events <events>', 'Event list')\n .option('--enabled <enabled>', 'Subscription enabled state (true/false)', parseBooleanOption)\n .option('--json', 'JSON output')\n .action(\n async (options: {\n queue: string;\n id: string;\n name?: string;\n events?: string;\n enabled?: boolean;\n json?: boolean;\n }) => {\n await subscriptionUpdateCommand(options.queue, options.id, {\n name: options.name,\n events: options.events,\n enabled: options.enabled,\n json: options.json\n });\n }\n );\n program\n .command('subscription:delete')\n .description('Delete queue subscription')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--id <id>', 'Subscription ID')\n .option('--force', 'Skip confirmation where supported')\n .action(async (options: { queue: string; id: string; force?: boolean }) => {\n await subscriptionDeleteCommand(options.queue, options.id, { force: options.force });\n });\n\n try {\n await program.parseAsync(argv, { from: 'user' });\n } catch (error) {\n const cliError = toCliError(error);\n logger.cliError({\n code: cliError.code,\n summary: cliError.summary,\n file: cliError.file,\n details: cliError.details,\n hint: cliError.hint,\n docsUrl: cliError.docsUrl\n });\n process.exitCode = 1;\n }\n}\n\nfunction parseNumberOption(value: string): number {\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new CliError({\n code: 'INVALID_CLI_OPTION',\n summary: `Invalid numeric option: ${value}.`,\n details: 'Expected a non-negative integer.',\n hint: 'Use values like 0, 1, 30, 120.'\n });\n }\n return parsed;\n}\n\nfunction parseBooleanOption(value: string): boolean {\n const normalized = value.toLowerCase();\n if (normalized === 'true') {\n return true;\n }\n if (normalized === 'false') {\n return false;\n }\n throw new CliError({\n code: 'INVALID_CLI_OPTION',\n summary: `Invalid boolean option: ${value}.`,\n details: 'Expected true or false.',\n hint: 'Use --enabled true or --enabled false.'\n });\n}\n\nfunction resolveCreatePackageManager(options: {\n useNpm?: boolean;\n usePnpm?: boolean;\n useYarn?: boolean;\n useBun?: boolean;\n}): PackageManager | undefined {\n const selected: PackageManager[] = [];\n\n if (options.useNpm) {\n selected.push('npm');\n }\n if (options.usePnpm) {\n selected.push('pnpm');\n }\n if (options.useYarn) {\n selected.push('yarn');\n }\n if (options.useBun) {\n selected.push('bun');\n }\n\n if (selected.length > 1) {\n throw new CliError({\n code: 'INVALID_CLI_OPTION',\n summary: 'Conflicting package manager flags.',\n details: 'Use only one of --use-npm, --use-pnpm, --use-yarn, or --use-bun.'\n });\n }\n\n return selected[0];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/errors.ts","../../src/cli/logger.ts","../../src/cli/process.ts","../../src/cli/commands/admin.ts","../../src/cli/config.ts","../../src/cli/codegen.ts","../../src/cli/discovery/naming.ts","../../src/cli/discovery/scanner.ts","../../src/cli/env-types.ts","../../src/cli/wrangler/duration.ts","../../src/cli/wrangler/jsonc.ts","../../src/cli/wrangler/toml.ts","../../src/cli/wrangler/index.ts","../../src/cli/commands/generate.ts","../../src/cli/commands/deploy.ts","../../src/cli/watcher.ts","../../src/cli/commands/dev.ts","../../src/cli/commands/init.ts","../../src/cli/commands/create.ts","../../src/cli/index.ts"],"names":["path","fs","input","SyntaxKind","Project","Node","output"],"mappings":"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","file":"index.js","sourcesContent":["import type { CliErrorOptions } from './types.js';\n\nexport class CliError extends Error {\n readonly code: string;\n readonly summary: string;\n readonly file?: string;\n readonly details?: string;\n readonly hint?: string;\n readonly docsUrl?: string;\n\n constructor(options: CliErrorOptions) {\n super(options.summary);\n this.name = 'CliError';\n this.code = options.code;\n this.summary = options.summary;\n this.file = options.file;\n this.details = options.details;\n this.hint = options.hint;\n this.docsUrl = options.docsUrl;\n\n if (options.cause !== undefined) {\n (this as Error & { cause?: unknown }).cause = options.cause;\n }\n }\n}\n\nexport function toCliError(error: unknown): CliError {\n if (error instanceof CliError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new CliError({\n code: 'UNEXPECTED_ERROR',\n summary: error.message,\n details: error.stack\n });\n }\n\n return new CliError({\n code: 'UNEXPECTED_ERROR',\n summary: String(error)\n });\n}\n","import pc from 'picocolors';\nimport type { DiscoveryDiagnostic } from './types.js';\n\nfunction printLine(message: string): void {\n process.stdout.write(`${message}\\n`);\n}\n\nfunction printErrLine(message: string): void {\n process.stderr.write(`${message}\\n`);\n}\n\nexport const logger = {\n header(title: string): void {\n printLine(pc.bold(pc.cyan(`== ${title} ==`)));\n },\n info(message: string): void {\n printLine(`${pc.blue('[*]')} ${message}`);\n },\n success(message: string): void {\n printLine(`${pc.green('[+]')} ${message}`);\n },\n warn(message: string): void {\n printLine(`${pc.yellow('[!]')} ${message}`);\n },\n error(message: string): void {\n printErrLine(`${pc.red('[x]')} ${message}`);\n },\n section(message: string): void {\n printLine('');\n printLine(pc.bold(pc.white(`-- ${message} --`)));\n },\n item(label: string, value?: string): void {\n printLine(` -> ${pc.bold(label)}${value ? `: ${value}` : ''}`);\n },\n diagnostic(diag: DiscoveryDiagnostic): void {\n const levelBadge = diag.level === 'error' ? pc.red('[error]') : pc.yellow('[warn]');\n printLine(`${levelBadge} ${pc.bold(diag.code)} ${diag.message}`);\n if (diag.filePath) {\n printLine(` file: ${diag.filePath}`);\n }\n if (diag.hint) {\n printLine(` hint: ${diag.hint}`);\n }\n },\n cliError(payload: {\n code: string;\n summary: string;\n file?: string;\n details?: string;\n hint?: string;\n docsUrl?: string;\n }): void {\n printErrLine(pc.red(pc.bold(`\\nERROR ${payload.code}`)));\n printErrLine(pc.red(payload.summary));\n if (payload.file) {\n printErrLine(` file: ${payload.file}`);\n }\n if (payload.details) {\n printErrLine(` details: ${payload.details}`);\n }\n if (payload.hint) {\n printErrLine(` hint: ${payload.hint}`);\n }\n if (payload.docsUrl) {\n printErrLine(` docs: ${payload.docsUrl}`);\n }\n }\n};\n","import { spawn } from 'node:child_process';\n\nexport interface CommandOutput {\n code: number;\n stdout: string;\n stderr: string;\n}\n\nexport function runCommand(\n command: string,\n args: string[],\n cwd: string,\n stdio: 'inherit' | 'pipe' = 'inherit'\n): Promise<number> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio,\n env: process.env\n });\n\n child.once('error', (error) => reject(error));\n child.once('close', (code) => resolve(code ?? 0));\n });\n}\n\nexport function runCommandCapture(command: string, args: string[], cwd: string): Promise<CommandOutput> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: 'pipe',\n env: process.env\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout?.on('data', (chunk) => {\n stdout += chunk.toString();\n });\n\n child.stderr?.on('data', (chunk) => {\n stderr += chunk.toString();\n });\n\n child.once('error', (error) => reject(error));\n child.once('close', (code) => {\n resolve({\n code: code ?? 0,\n stdout,\n stderr\n });\n });\n });\n}\n\nexport function spawnCommand(command: string, args: string[], cwd: string) {\n return spawn(command, args, {\n cwd,\n stdio: 'inherit',\n env: process.env\n });\n}\n","import { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { runCommand } from '../process.js';\n\ninterface QueueConfigOptions {\n deliveryDelaySecs?: number;\n messageRetentionPeriodSecs?: number;\n}\n\ninterface WorkerConsumerOptions {\n batchSize?: number;\n batchTimeout?: number;\n messageRetries?: number;\n deadLetterQueue?: string;\n maxConcurrency?: number;\n retryDelaySecs?: number;\n}\n\ninterface HttpConsumerOptions {\n batchSize?: number;\n messageRetries?: number;\n deadLetterQueue?: string;\n visibilityTimeoutSecs?: number;\n retryDelaySecs?: number;\n}\n\ninterface SubscriptionCreateOptions {\n source: string;\n events: string;\n name?: string;\n enabled?: boolean;\n modelName?: string;\n workerName?: string;\n workflowName?: string;\n}\n\ninterface SubscriptionListOptions {\n page?: number;\n perPage?: number;\n json?: boolean;\n}\n\ninterface SubscriptionGetOptions {\n json?: boolean;\n}\n\ninterface SubscriptionUpdateOptions {\n name?: string;\n events?: string;\n enabled?: boolean;\n json?: boolean;\n}\n\ninterface SubscriptionDeleteOptions {\n force?: boolean;\n}\n\nasync function runWranglerQueueSubcommand(\n args: string[],\n rootDir = process.cwd(),\n summary = 'Wrangler queue command failed.'\n): Promise<void> {\n logger.section(`wrangler ${args.join(' ')}`);\n const code = await runCommand('npx', ['wrangler', ...args], rootDir, 'inherit');\n if (code !== 0) {\n throw new CliError({\n code: 'WRANGLER_QUEUE_COMMAND_FAILED',\n summary,\n details: `Command \"wrangler ${args.join(' ')}\" exited with code ${code}.`,\n hint: 'Verify wrangler auth/project configuration and command arguments.',\n docsUrl: 'https://developers.cloudflare.com/queues/reference/wrangler-commands/'\n });\n }\n}\n\nexport async function queueListCommand(rootDir = process.cwd()): Promise<void> {\n await runWranglerQueueSubcommand(['queues', 'list'], rootDir, 'Failed to list queues.');\n}\n\nexport async function queueCreateCommand(\n name: string,\n options: QueueConfigOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', name);\n const args = ['queues', 'create', name];\n pushNumberOption(args, '--delivery-delay-secs', options.deliveryDelaySecs);\n pushNumberOption(args, '--message-retention-period-secs', options.messageRetentionPeriodSecs);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to create queue \"${name}\".`\n );\n}\n\nexport async function queueUpdateCommand(\n name: string,\n options: QueueConfigOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', name);\n const args = ['queues', 'update', name];\n pushNumberOption(args, '--delivery-delay-secs', options.deliveryDelaySecs);\n pushNumberOption(args, '--message-retention-period-secs', options.messageRetentionPeriodSecs);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to update queue \"${name}\".`\n );\n}\n\nexport async function queueDeleteCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(\n ['queues', 'delete', name],\n rootDir,\n `Failed to delete queue \"${name}\".`\n );\n}\n\nexport async function queueInfoCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(['queues', 'info', name], rootDir, `Failed to get queue \"${name}\".`);\n}\n\nexport async function queuePauseCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(\n ['queues', 'pause-delivery', name],\n rootDir,\n `Failed to pause queue \"${name}\".`\n );\n}\n\nexport async function queueResumeCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(\n ['queues', 'resume-delivery', name],\n rootDir,\n `Failed to resume queue \"${name}\".`\n );\n}\n\nexport async function queuePurgeCommand(name: string, rootDir = process.cwd()): Promise<void> {\n assertWranglerToken('queue name', name);\n await runWranglerQueueSubcommand(\n ['queues', 'purge', name],\n rootDir,\n `Failed to purge queue \"${name}\".`\n );\n}\n\nexport async function queueConsumerHttpAddCommand(\n queue: string,\n options: HttpConsumerOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n const args = ['queues', 'consumer', 'http', 'add', queue];\n pushNumberOption(args, '--batch-size', options.batchSize);\n pushNumberOption(args, '--message-retries', options.messageRetries);\n pushStringOption(args, '--dead-letter-queue', options.deadLetterQueue);\n pushNumberOption(args, '--visibility-timeout-secs', options.visibilityTimeoutSecs);\n pushNumberOption(args, '--retry-delay-secs', options.retryDelaySecs);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to add HTTP consumer for queue \"${queue}\".`\n );\n}\n\nexport async function queueConsumerHttpRemoveCommand(\n queue: string,\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n await runWranglerQueueSubcommand(\n ['queues', 'consumer', 'http', 'remove', queue],\n rootDir,\n `Failed to remove HTTP consumer for queue \"${queue}\".`\n );\n}\n\nexport async function queueConsumerWorkerAddCommand(\n queue: string,\n script: string,\n options: WorkerConsumerOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('worker script name', script);\n const args = ['queues', 'consumer', 'worker', 'add', queue, script];\n pushNumberOption(args, '--batch-size', options.batchSize);\n pushNumberOption(args, '--batch-timeout', options.batchTimeout);\n pushNumberOption(args, '--message-retries', options.messageRetries);\n pushStringOption(args, '--dead-letter-queue', options.deadLetterQueue);\n pushNumberOption(args, '--max-concurrency', options.maxConcurrency);\n pushNumberOption(args, '--retry-delay-secs', options.retryDelaySecs);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to add worker consumer for queue \"${queue}\".`\n );\n}\n\nexport async function queueConsumerWorkerRemoveCommand(\n queue: string,\n script: string,\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('worker script name', script);\n await runWranglerQueueSubcommand(\n ['queues', 'consumer', 'worker', 'remove', queue, script],\n rootDir,\n `Failed to remove worker consumer for queue \"${queue}\".`\n );\n}\n\nexport async function subscriptionListCommand(\n queue: string,\n options: SubscriptionListOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n const args = ['queues', 'subscription', 'list', queue];\n pushNumberOption(args, '--page', options.page);\n pushNumberOption(args, '--per-page', options.perPage);\n pushBooleanFlag(args, '--json', options.json);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n 'Failed to list queue subscriptions.'\n );\n}\n\nexport async function subscriptionCreateCommand(\n queue: string,\n options: SubscriptionCreateOptions,\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('subscription source', options.source);\n const args = ['queues', 'subscription', 'create', queue, '--source', options.source, '--events', options.events];\n pushStringOption(args, '--name', options.name);\n pushBooleanOption(args, '--enabled', options.enabled);\n pushStringOption(args, '--model-name', options.modelName);\n pushStringOption(args, '--worker-name', options.workerName);\n pushStringOption(args, '--workflow-name', options.workflowName);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n 'Failed to create queue subscription.'\n );\n}\n\nexport async function subscriptionGetCommand(\n queue: string,\n id: string,\n options: SubscriptionGetOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('subscription id', id);\n const args = ['queues', 'subscription', 'get', queue, '--id', id];\n pushBooleanFlag(args, '--json', options.json);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to get queue subscription \"${id}\" from \"${queue}\".`\n );\n}\n\nexport async function subscriptionUpdateCommand(\n queue: string,\n id: string,\n options: SubscriptionUpdateOptions,\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('subscription id', id);\n const args = ['queues', 'subscription', 'update', queue, '--id', id];\n pushStringOption(args, '--name', options.name);\n pushStringOption(args, '--events', options.events);\n pushBooleanOption(args, '--enabled', options.enabled);\n pushBooleanFlag(args, '--json', options.json);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to update queue subscription \"${id}\" on \"${queue}\".`\n );\n}\n\nexport async function subscriptionDeleteCommand(\n queue: string,\n id: string,\n options: SubscriptionDeleteOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n assertWranglerToken('queue name', queue);\n assertWranglerToken('subscription id', id);\n const args = ['queues', 'subscription', 'delete', queue, '--id', id];\n pushBooleanFlag(args, '--force', options.force);\n\n await runWranglerQueueSubcommand(\n args,\n rootDir,\n `Failed to delete queue subscription \"${id}\" from \"${queue}\".`\n );\n}\n\nfunction pushStringOption(target: string[], flag: string, value: string | undefined): void {\n if (value && value.length > 0) {\n target.push(flag, value);\n }\n}\n\nfunction pushNumberOption(target: string[], flag: string, value: number | undefined): void {\n if (value !== undefined) {\n target.push(flag, String(value));\n }\n}\n\nfunction pushBooleanOption(target: string[], flag: string, value: boolean | undefined): void {\n if (value !== undefined) {\n target.push(flag, String(value));\n }\n}\n\nfunction pushBooleanFlag(target: string[], flag: string, value: boolean | undefined): void {\n if (value) {\n target.push(flag);\n }\n}\n\nfunction assertWranglerToken(label: string, value: string): void {\n if (!value || value.trim().length === 0) {\n throw new CliError({\n code: 'INVALID_WRANGLER_ARGUMENT',\n summary: `Invalid ${label}.`,\n details: 'Value cannot be empty.',\n hint: `Provide a non-empty ${label}.`\n });\n }\n\n if (value.startsWith('-')) {\n throw new CliError({\n code: 'INVALID_WRANGLER_ARGUMENT',\n summary: `Invalid ${label}.`,\n details: `Value \"${value}\" starts with \"-\" and may be interpreted as a CLI flag.`,\n hint: `Use a ${label} that does not start with \"-\".`\n });\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { Node, Project, SyntaxKind, type ObjectLiteralExpression } from 'ts-morph';\nimport type { CliConfig } from './types.js';\n\nconst DEFAULT_IGNORE = ['node_modules', '.better-cf', 'dist', '.wrangler'];\n\nexport function loadCliConfig(rootDir = process.cwd()): CliConfig {\n const defaults: CliConfig = {\n rootDir,\n ignore: [...DEFAULT_IGNORE],\n workerEntry: undefined,\n legacyServiceWorker: false,\n inferEnvTypes: true\n };\n\n const configPath = path.join(rootDir, 'better-cf.config.ts');\n if (!fs.existsSync(configPath)) {\n return defaults;\n }\n\n const project = new Project({\n compilerOptions: {\n target: 99,\n module: 99,\n moduleResolution: 99\n }\n });\n\n const sourceFile = project.addSourceFileAtPath(configPath);\n const variable = sourceFile\n .getVariableDeclarations()\n .find((decl) => decl.getName() === 'betterCfConfig' && decl.getVariableStatement()?.isExported());\n\n if (!variable) {\n return defaults;\n }\n\n const initializer = variable.getInitializer();\n if (!initializer || initializer.getKind() !== SyntaxKind.ObjectLiteralExpression) {\n return defaults;\n }\n\n const configObject = initializer as ObjectLiteralExpression;\n\n const workerEntry = readString(configObject, 'workerEntry');\n const legacyServiceWorker = readBoolean(configObject, 'legacyServiceWorker');\n const inferEnvTypes = readBoolean(configObject, 'inferEnvTypes');\n const ignore = readStringArray(configObject, 'ignore');\n\n return {\n rootDir,\n workerEntry,\n legacyServiceWorker: legacyServiceWorker ?? defaults.legacyServiceWorker,\n inferEnvTypes: inferEnvTypes ?? defaults.inferEnvTypes,\n ignore: ignore ? [...new Set([...defaults.ignore, ...ignore])] : defaults.ignore\n };\n}\n\nfunction readString(node: ObjectLiteralExpression, key: string): string | undefined {\n const property = node.getProperties().find((prop) => {\n return Node.isPropertyAssignment(prop) && prop.getName() === key;\n });\n\n if (!property || !Node.isPropertyAssignment(property)) {\n return undefined;\n }\n\n const initializer = property.getInitializer();\n if (!initializer || !Node.isStringLiteral(initializer)) {\n return undefined;\n }\n\n return initializer.getLiteralText();\n}\n\nfunction readBoolean(node: ObjectLiteralExpression, key: string): boolean | undefined {\n const property = node.getProperties().find((prop) => {\n return Node.isPropertyAssignment(prop) && prop.getName() === key;\n });\n\n if (!property || !Node.isPropertyAssignment(property)) {\n return undefined;\n }\n\n const initializer = property.getInitializer();\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.getKind() === SyntaxKind.TrueKeyword) {\n return true;\n }\n\n if (initializer.getKind() === SyntaxKind.FalseKeyword) {\n return false;\n }\n\n return undefined;\n}\n\nfunction readStringArray(node: ObjectLiteralExpression, key: string): string[] | undefined {\n const property = node.getProperties().find((prop) => {\n return Node.isPropertyAssignment(prop) && prop.getName() === key;\n });\n\n if (!property || !Node.isPropertyAssignment(property)) {\n return undefined;\n }\n\n const initializer = property.getInitializer();\n if (!initializer || !Node.isArrayLiteralExpression(initializer)) {\n return undefined;\n }\n\n const values = initializer\n .getElements()\n .filter((element): element is import('ts-morph').StringLiteral => Node.isStringLiteral(element))\n .map((element) => element.getLiteralText());\n\n return values.length > 0 ? values : undefined;\n}\n\nexport function resolveWorkerEntry(config: CliConfig): string {\n const candidates = [\n config.workerEntry,\n 'worker.ts',\n 'src/worker.ts',\n 'index.ts',\n 'src/index.ts'\n ].filter((value): value is string => Boolean(value));\n\n for (const candidate of candidates) {\n const absolutePath = path.isAbsolute(candidate)\n ? candidate\n : path.join(config.rootDir, candidate);\n\n if (fs.existsSync(absolutePath)) {\n return absolutePath;\n }\n }\n\n throw new Error(\n 'Could not find worker entry. Provide betterCfConfig.workerEntry in better-cf.config.ts or create worker.ts.'\n );\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { resolveWorkerEntry } from './config.js';\nimport type { CliConfig, DiscoveryResult } from './types.js';\n\nexport interface CodegenResult {\n entryPath: string;\n typesPath: string;\n}\n\nexport function generateCode(discovery: DiscoveryResult, config: CliConfig): CodegenResult {\n const outputDir = path.join(config.rootDir, '.better-cf');\n fs.mkdirSync(outputDir, { recursive: true });\n\n const workerEntryAbsolute = resolveWorkerEntry(config);\n\n const entryContents = renderEntryFile(discovery, workerEntryAbsolute, outputDir, config);\n const typesContents = renderTypesFile(discovery);\n\n const entryPath = path.join(outputDir, 'entry.ts');\n const typesPath = path.join(outputDir, 'types.d.ts');\n\n fs.writeFileSync(entryPath, entryContents, 'utf8');\n fs.writeFileSync(typesPath, typesContents, 'utf8');\n\n return {\n entryPath,\n typesPath\n };\n}\n\nfunction renderEntryFile(\n discovery: DiscoveryResult,\n workerEntryAbsolute: string,\n outDir: string,\n config: CliConfig\n): string {\n const imports: string[] = [];\n const bindings: string[] = [];\n const queueMap: string[] = [];\n\n imports.push(\n `import workerDefault, * as workerModule from ${JSON.stringify(toImportPath(outDir, workerEntryAbsolute))};`\n );\n imports.push(`import { getQueueInternals, resolveWorkerHandlers } from 'better-cf/queue/internal';`);\n\n for (const queue of discovery.queues) {\n const queueImportPath = toImportPath(outDir, queue.absoluteFilePath);\n if (queue.isDefaultExport) {\n imports.push(`import ${queue.importName} from ${JSON.stringify(queueImportPath)};`);\n } else {\n imports.push(\n `import { ${queue.exportName} as ${queue.importName} } from ${JSON.stringify(queueImportPath)};`\n );\n }\n\n bindings.push(`getQueueInternals(${queue.importName}).setBinding('${queue.bindingName}');`);\n queueMap.push(` '${queue.queueName}': ${queue.importName}`);\n }\n\n const scheduledBlock = `\nconst __workerHandlers = resolveWorkerHandlers({ default: workerDefault, ...workerModule });\n\nexport default {\n async fetch(request: Request, env: unknown, ctx: ExecutionContext): Promise<Response> {\n return __workerHandlers.fetch(request, env, ctx);\n },\n\n async queue(batch: MessageBatch<unknown>, env: unknown, ctx: ExecutionContext): Promise<void> {\n const consumer = __queues[batch.queue];\n if (!consumer) {\n console.error(\\`[better-cf] No queue consumer for \"\\${batch.queue}\". Acking batch to avoid infinite retries.\\`);\n batch.ackAll();\n return;\n }\n\n await getQueueInternals(consumer).consume(batch, env, ctx);\n },\n\n ...(__workerHandlers.scheduled\n ? {\n async scheduled(event: ScheduledEvent, env: unknown, ctx: ExecutionContext): Promise<void> {\n await __workerHandlers.scheduled?.(event, env, ctx);\n }\n }\n : {})\n};`;\n\n const legacyWarning = config.legacyServiceWorker\n ? \"console.warn('[better-cf] legacyServiceWorker mode is compatibility-only. Consider migrating to module workers.');\"\n : '';\n\n return `// Auto-generated by better-cf. Do not edit.\n${imports.join('\\n')}\n\n${bindings.join('\\n')}\n\nconst __queues: Record<string, unknown> = {\n${queueMap.join(',\\n')}\n};\n\n${legacyWarning}\n${scheduledBlock}\n`;\n}\n\nfunction renderTypesFile(discovery: DiscoveryResult): string {\n const lines = discovery.queues.map((queue) => {\n return ` ${queue.bindingName}: Queue;`;\n });\n\n return `// Auto-generated by better-cf. Do not edit.\nimport type { Queue } from '@cloudflare/workers-types';\n\ndeclare module 'better-cf/queue' {\n interface BetterCfGeneratedBindings {\n${lines.join('\\n')}\n }\n\n interface BetterCfAutoEnv extends BetterCfGeneratedBindings {}\n}\n\nexport {};\n`;\n}\n\nfunction toImportPath(fromDir: string, targetFile: string): string {\n const relative = path.relative(fromDir, targetFile).replace(/\\\\/g, '/');\n if (relative.startsWith('.')) {\n return relative.replace(/\\.tsx?$/, '');\n }\n return `./${relative.replace(/\\.tsx?$/, '')}`;\n}\n","export function deriveQueueName(input: string): string {\n const withoutSuffix = input.replace(/Queue$/, '');\n const kebab = withoutSuffix\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/[_\\s]+/g, '-')\n .replace(/[^a-zA-Z0-9-]/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '')\n .toLowerCase();\n\n return kebab || input.toLowerCase();\n}\n\nexport function deriveBindingName(queueName: string): string {\n return `QUEUE_${queueName.replace(/[^a-zA-Z0-9]/g, '_').replace(/_+/g, '_').toUpperCase()}`;\n}\n\nexport function makeImportName(queueName: string, isDefaultExport: boolean, exportName: string): string {\n if (!isDefaultExport) {\n return exportName;\n }\n return `__queue_${queueName.replace(/-/g, '_')}`;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { Node, Project, SyntaxKind, type CallExpression, type ObjectLiteralExpression } from 'ts-morph';\nimport { deriveBindingName, deriveQueueName, makeImportName } from './naming.js';\nimport type {\n CliConfig,\n DiscoveryDiagnostic,\n DiscoveryResult,\n DiscoveredQueue,\n ExtractedQueueConfig\n} from '../types.js';\n\nconst RESERVED_KEYS = new Set([\n 'retry',\n 'retryDelay',\n 'deadLetter',\n 'deliveryDelay',\n 'visibilityTimeout',\n 'batch',\n 'consumer',\n 'args',\n 'handler',\n 'batchHandler',\n 'message',\n 'process',\n 'processBatch',\n 'onFailure'\n]);\n\nconst DEFINE_QUEUE_HELPERS = new Set(['defineQueue', 'defineQueues']);\n\nexport async function scanQueues(config: CliConfig): Promise<DiscoveryResult> {\n const diagnostics: DiscoveryDiagnostic[] = [];\n const candidates = collectSourceFiles(config.rootDir, config.ignore);\n\n const project = createProject(config.rootDir);\n const queues: DiscoveredQueue[] = [];\n\n for (const absolutePath of candidates) {\n try {\n const sourceFile = project.addSourceFileAtPath(absolutePath);\n const localDefineQueueNames = getDefineQueueLocalNames(sourceFile);\n if (localDefineQueueNames.size === 0) {\n project.removeSourceFile(sourceFile);\n continue;\n }\n\n for (const declaration of sourceFile.getVariableDeclarations()) {\n const variableStatement = declaration.getVariableStatement();\n if (!variableStatement || !variableStatement.isExported()) {\n continue;\n }\n\n const call = declaration.getInitializerIfKind(SyntaxKind.CallExpression);\n if (!call || !isDefineQueueCall(call, localDefineQueueNames)) {\n continue;\n }\n\n const exportName = declaration.getName();\n const queueName = deriveQueueName(exportName);\n const extracted = extractQueueConfig(call, absolutePath, diagnostics, config.rootDir);\n\n queues.push({\n exportName,\n queueName,\n bindingName: deriveBindingName(queueName),\n filePath: path.relative(config.rootDir, absolutePath),\n absoluteFilePath: absolutePath,\n isDefaultExport: false,\n importName: makeImportName(queueName, false, exportName),\n config: extracted\n });\n }\n\n for (const exportAssignment of sourceFile.getExportAssignments()) {\n if (exportAssignment.isExportEquals()) {\n continue;\n }\n\n const call = resolveCallExpressionFromExportAssignment(exportAssignment.getExpression());\n if (!call || !isDefineQueueCall(call, localDefineQueueNames)) {\n continue;\n }\n\n const basename = path.basename(absolutePath, path.extname(absolutePath));\n const queueName = deriveQueueName(basename);\n const extracted = extractQueueConfig(call, absolutePath, diagnostics, config.rootDir);\n\n queues.push({\n exportName: 'default',\n queueName,\n bindingName: deriveBindingName(queueName),\n filePath: path.relative(config.rootDir, absolutePath),\n absoluteFilePath: absolutePath,\n isDefaultExport: true,\n importName: makeImportName(queueName, true, 'default'),\n config: extracted\n });\n }\n\n project.removeSourceFile(sourceFile);\n } catch (error) {\n diagnostics.push({\n level: 'error',\n code: 'SCANNER_FILE_ERROR',\n message: `Failed to parse ${absolutePath}: ${toErrorMessage(error)}`,\n filePath: path.relative(config.rootDir, absolutePath)\n });\n }\n }\n\n addConflictDiagnostics(queues, diagnostics);\n\n if (queues.length === 0) {\n diagnostics.push({\n level: 'warning',\n code: 'NO_QUEUES_FOUND',\n message: 'No defineQueue/defineQueues exports found in this project.'\n });\n }\n\n return {\n queues,\n diagnostics\n };\n}\n\nfunction createProject(rootDir: string): Project {\n const tsConfigPath = path.join(rootDir, 'tsconfig.json');\n if (fs.existsSync(tsConfigPath)) {\n return new Project({\n tsConfigFilePath: tsConfigPath,\n skipAddingFilesFromTsConfig: true\n });\n }\n\n return new Project({\n compilerOptions: {\n target: 99,\n module: 99,\n moduleResolution: 99,\n allowJs: false\n }\n });\n}\n\nfunction collectSourceFiles(rootDir: string, ignore: string[]): string[] {\n const files: string[] = [];\n const ignoreSet = new Set(ignore);\n\n function walk(currentPath: string): void {\n const entries = fs.readdirSync(currentPath, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.name.startsWith('.git')) {\n continue;\n }\n\n if (ignoreSet.has(entry.name)) {\n continue;\n }\n\n const absolutePath = path.join(currentPath, entry.name);\n if (entry.isDirectory()) {\n walk(absolutePath);\n continue;\n }\n\n if (entry.name.endsWith('.ts') || entry.name.endsWith('.tsx')) {\n const content = fs.readFileSync(absolutePath, 'utf8');\n if (content.includes('defineQueue') || content.includes('defineQueues')) {\n files.push(absolutePath);\n }\n }\n }\n }\n\n walk(rootDir);\n return files;\n}\n\nfunction getDefineQueueLocalNames(sourceFile: import('ts-morph').SourceFile): Set<string> {\n const names = new Set<string>();\n\n for (const importDecl of sourceFile.getImportDeclarations()) {\n const specifier = importDecl.getModuleSpecifierValue();\n if (!specifier.includes('better-cf.config')) {\n continue;\n }\n\n for (const namedImport of importDecl.getNamedImports()) {\n if (!DEFINE_QUEUE_HELPERS.has(namedImport.getName())) {\n continue;\n }\n names.add(namedImport.getAliasNode()?.getText() ?? namedImport.getName());\n }\n }\n\n return names;\n}\n\nfunction isDefineQueueCall(call: CallExpression, localNames: Set<string>): boolean {\n const expression = call.getExpression();\n if (expression.getKind() !== SyntaxKind.Identifier) {\n return false;\n }\n\n return localNames.has(expression.getText());\n}\n\nfunction resolveCallExpressionFromExportAssignment(\n expression: import('ts-morph').Expression\n): CallExpression | undefined {\n if (expression.getKind() === SyntaxKind.CallExpression) {\n return expression as CallExpression;\n }\n\n if (expression.getKind() !== SyntaxKind.Identifier) {\n return undefined;\n }\n\n const symbol = expression.getSymbol();\n const declaration = symbol?.getValueDeclaration();\n if (!declaration || !Node.isVariableDeclaration(declaration)) {\n return undefined;\n }\n\n return declaration.getInitializerIfKind(SyntaxKind.CallExpression) ?? undefined;\n}\n\nfunction extractQueueConfig(\n call: CallExpression,\n absolutePath: string,\n diagnostics: DiscoveryDiagnostic[],\n rootDir: string\n): ExtractedQueueConfig {\n const firstArg = call.getArguments()[0];\n if (!firstArg || firstArg.getKind() !== SyntaxKind.ObjectLiteralExpression) {\n return {\n hasHandler: false,\n hasBatchHandler: false,\n isMultiJob: false\n };\n }\n\n const objectLiteral = firstArg as ObjectLiteralExpression;\n const hasHandler = hasProperty(objectLiteral, 'handler');\n const hasBatchHandler = hasProperty(objectLiteral, 'batchHandler');\n\n if (hasHandler && hasBatchHandler) {\n diagnostics.push({\n level: 'error',\n code: 'INVALID_HANDLER_MODE',\n message: 'Queue config cannot include both handler and batchHandler.',\n filePath: path.relative(rootDir, absolutePath),\n hint: 'Pick exactly one processing mode for worker consumers.'\n });\n }\n\n const retry = readNumberProperty(objectLiteral, 'retry', diagnostics, absolutePath, rootDir);\n const retryDelay = readNumberOrStringProperty(\n objectLiteral,\n 'retryDelay',\n diagnostics,\n absolutePath,\n rootDir\n );\n const deadLetter = readStringProperty(objectLiteral, 'deadLetter', diagnostics, absolutePath, rootDir);\n const deliveryDelay = readNumberOrStringProperty(\n objectLiteral,\n 'deliveryDelay',\n diagnostics,\n absolutePath,\n rootDir\n );\n const topLevelVisibilityTimeout = readNumberOrStringProperty(\n objectLiteral,\n 'visibilityTimeout',\n diagnostics,\n absolutePath,\n rootDir\n );\n\n const consumer = readConsumerConfig(objectLiteral, diagnostics, absolutePath, rootDir);\n const consumerType = consumer?.type;\n const visibilityTimeout = consumer?.visibilityTimeout ?? topLevelVisibilityTimeout;\n\n const batchObject = getObjectLiteralProperty(objectLiteral, 'batch');\n const batchMaxSize = batchObject\n ? readNumberProperty(batchObject, 'maxSize', diagnostics, absolutePath, rootDir)\n : undefined;\n const batchTimeout = batchObject\n ? readNumberOrStringProperty(batchObject, 'timeout', diagnostics, absolutePath, rootDir)\n : undefined;\n const maxConcurrency = batchObject\n ? readNumberProperty(batchObject, 'maxConcurrency', diagnostics, absolutePath, rootDir)\n : undefined;\n\n let isMultiJob = false;\n if (!hasHandler && !hasBatchHandler) {\n for (const property of objectLiteral.getProperties()) {\n if (!Node.isPropertyAssignment(property)) {\n continue;\n }\n\n const propertyName = property.getName();\n if (RESERVED_KEYS.has(propertyName)) {\n continue;\n }\n\n const initializer = property.getInitializer();\n if (!initializer || initializer.getKind() !== SyntaxKind.ObjectLiteralExpression) {\n continue;\n }\n\n const jobObject = initializer as ObjectLiteralExpression;\n if (hasProperty(jobObject, 'args') && hasProperty(jobObject, 'handler')) {\n isMultiJob = true;\n break;\n }\n }\n }\n\n const relativeFile = path.relative(rootDir, absolutePath);\n\n if (consumerType === 'http_pull' && (hasHandler || hasBatchHandler)) {\n diagnostics.push({\n level: 'error',\n code: 'INVALID_PULL_MODE_HANDLER',\n message: 'Queue with consumer.type=\"http_pull\" cannot include handler/batchHandler.',\n filePath: relativeFile,\n hint: 'Remove handlers for pull consumers and consume via HTTP pull APIs.'\n });\n }\n\n if (consumerType === 'http_pull' && isMultiJob) {\n diagnostics.push({\n level: 'error',\n code: 'UNSUPPORTED_PULL_MULTIJOB',\n message: 'Multi-job queue mode is not supported when consumer.type=\"http_pull\".',\n filePath: relativeFile,\n hint: 'Split jobs into separate queues when using http_pull.'\n });\n }\n\n return {\n retry,\n retryDelay,\n deadLetter,\n deliveryDelay,\n batchMaxSize,\n batchTimeout,\n maxConcurrency,\n visibilityTimeout,\n consumerType,\n hasHandler,\n hasBatchHandler,\n isMultiJob\n };\n}\n\nfunction hasProperty(objectLiteral: ObjectLiteralExpression, name: string): boolean {\n return objectLiteral.getProperties().some((property) => {\n return Node.isPropertyAssignment(property) && property.getName() === name;\n });\n}\n\nfunction getObjectLiteralProperty(\n objectLiteral: ObjectLiteralExpression,\n name: string\n): ObjectLiteralExpression | undefined {\n for (const property of objectLiteral.getProperties()) {\n if (!Node.isPropertyAssignment(property) || property.getName() !== name) {\n continue;\n }\n\n const initializer = property.getInitializer();\n if (initializer && initializer.getKind() === SyntaxKind.ObjectLiteralExpression) {\n return initializer as ObjectLiteralExpression;\n }\n }\n\n return undefined;\n}\n\nfunction readNumberProperty(\n objectLiteral: ObjectLiteralExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): number | undefined {\n const prop = objectLiteral.getProperties().find((property) => {\n return Node.isPropertyAssignment(property) && property.getName() === name;\n });\n if (!prop || !Node.isPropertyAssignment(prop)) {\n return undefined;\n }\n\n const initializer = prop.getInitializer();\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.getKind() !== SyntaxKind.NumericLiteral) {\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Config key ${name} in ${path.relative(rootDir, absolutePath)} is not a static number literal.`,\n filePath: path.relative(rootDir, absolutePath)\n });\n return undefined;\n }\n\n return Number(initializer.getText());\n}\n\nfunction readStringProperty(\n objectLiteral: ObjectLiteralExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): string | undefined {\n const prop = objectLiteral.getProperties().find((property) => {\n return Node.isPropertyAssignment(property) && property.getName() === name;\n });\n if (!prop || !Node.isPropertyAssignment(prop)) {\n return undefined;\n }\n\n const initializer = prop.getInitializer();\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.getKind() !== SyntaxKind.StringLiteral) {\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Config key ${name} in ${path.relative(rootDir, absolutePath)} is not a static string literal.`,\n filePath: path.relative(rootDir, absolutePath)\n });\n return undefined;\n }\n\n return initializer.getText().slice(1, -1);\n}\n\nfunction readNumberOrStringProperty(\n objectLiteral: ObjectLiteralExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): number | string | undefined {\n const prop = objectLiteral.getProperties().find((property) => {\n return Node.isPropertyAssignment(property) && property.getName() === name;\n });\n if (!prop || !Node.isPropertyAssignment(prop)) {\n return undefined;\n }\n\n const initializer = prop.getInitializer();\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.getKind() === SyntaxKind.NumericLiteral) {\n return Number(initializer.getText());\n }\n\n if (initializer.getKind() === SyntaxKind.StringLiteral) {\n return initializer.getText().slice(1, -1);\n }\n\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Config key ${name} in ${path.relative(rootDir, absolutePath)} is not static.`,\n filePath: path.relative(rootDir, absolutePath)\n });\n\n return undefined;\n}\n\nfunction readConsumerConfig(\n objectLiteral: ObjectLiteralExpression,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): { type: 'worker' | 'http_pull'; visibilityTimeout?: string | number } | undefined {\n const consumerObject = getObjectLiteralProperty(objectLiteral, 'consumer');\n if (!consumerObject) {\n return undefined;\n }\n\n const typeValue = readStringProperty(consumerObject, 'type', diagnostics, absolutePath, rootDir);\n if (!typeValue) {\n return undefined;\n }\n\n if (typeValue !== 'worker' && typeValue !== 'http_pull') {\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Unknown consumer.type \"${typeValue}\" in ${path.relative(rootDir, absolutePath)}.`,\n filePath: path.relative(rootDir, absolutePath)\n });\n return undefined;\n }\n\n const visibilityTimeout = readNumberOrStringProperty(\n consumerObject,\n 'visibilityTimeout',\n diagnostics,\n absolutePath,\n rootDir\n );\n\n return {\n type: typeValue,\n visibilityTimeout\n };\n}\n\nfunction addConflictDiagnostics(queues: DiscoveredQueue[], diagnostics: DiscoveryDiagnostic[]): void {\n const queueNameMap = new Map<string, string[]>();\n const bindingNameMap = new Map<string, string[]>();\n\n for (const queue of queues) {\n queueNameMap.set(queue.queueName, [...(queueNameMap.get(queue.queueName) ?? []), queue.filePath]);\n bindingNameMap.set(\n queue.bindingName,\n [...(bindingNameMap.get(queue.bindingName) ?? []), queue.filePath]\n );\n }\n\n for (const [queueName, files] of queueNameMap.entries()) {\n if (files.length < 2) {\n continue;\n }\n\n diagnostics.push({\n level: 'error',\n code: 'QUEUE_NAME_CONFLICT',\n message: `Queue name conflict for ${queueName}: ${files.join(', ')}`\n });\n }\n\n for (const [bindingName, files] of bindingNameMap.entries()) {\n if (files.length < 2) {\n continue;\n }\n\n diagnostics.push({\n level: 'error',\n code: 'BINDING_NAME_CONFLICT',\n message: `Binding name conflict for ${bindingName}: ${files.join(', ')}`\n });\n }\n}\n\nfunction toErrorMessage(value: unknown): string {\n if (value instanceof Error) {\n return value.message;\n }\n\n return String(value);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { CliError } from './errors.js';\nimport { runCommandCapture } from './process.js';\nimport type { CliConfig } from './types.js';\n\nconst WRANGLER_ENV_INTERFACE = 'BetterCfWranglerEnv';\n\nexport interface EnvTypeResult {\n wranglerEnvPath: string;\n autoEnvPath: string;\n}\n\nexport async function generateEnvTypes(config: CliConfig): Promise<EnvTypeResult> {\n const outDir = path.join(config.rootDir, '.better-cf');\n fs.mkdirSync(outDir, { recursive: true });\n\n const wranglerEnvPath = path.join(outDir, 'wrangler-env.d.ts');\n const autoEnvPath = path.join(outDir, 'auto-env.d.ts');\n\n const skipWrangler = process.env.BETTER_CF_SKIP_WRANGLER_TYPES === '1' || config.inferEnvTypes === false;\n\n if (skipWrangler) {\n fs.writeFileSync(\n wranglerEnvPath,\n `// Auto-generated fallback when wrangler types is skipped.\\ninterface ${WRANGLER_ENV_INTERFACE} {\\n [key: string]: unknown;\\n}\\n`,\n 'utf8'\n );\n } else {\n const command = await runCommandCapture(\n 'npx',\n ['wrangler', 'types', '--path', wranglerEnvPath, '--env-interface', WRANGLER_ENV_INTERFACE],\n config.rootDir\n );\n\n if (command.code !== 0) {\n throw new CliError({\n code: 'WRANGLER_TYPES_FAILED',\n summary: 'Failed to infer env types with wrangler.',\n details: command.stderr || command.stdout || `Exit code ${command.code}`,\n hint: 'Install wrangler >=3.91 and verify wrangler config is valid.',\n docsUrl: 'https://developers.cloudflare.com/workers/wrangler/commands/#types'\n });\n }\n\n if (!fs.existsSync(wranglerEnvPath)) {\n throw new CliError({\n code: 'WRANGLER_TYPES_OUTPUT_MISSING',\n summary: 'Wrangler types command succeeded but output file was not created.',\n file: wranglerEnvPath,\n hint: 'Check wrangler CLI version and project permissions.'\n });\n }\n }\n\n fs.writeFileSync(\n autoEnvPath,\n `// Auto-generated by better-cf. Do not edit.\\n/// <reference path=\\\"./wrangler-env.d.ts\\\" />\\n\\ndeclare module 'better-cf/queue' {\\n interface BetterCfAutoEnv extends BetterCfGeneratedBindings, ${WRANGLER_ENV_INTERFACE} {}\\n}\\n\\nexport {};\\n`,\n 'utf8'\n );\n\n return {\n wranglerEnvPath,\n autoEnvPath\n };\n}\n","import { CliError } from '../errors.js';\n\nexport function parseDurationSecondsStrict(value: string | number, context: string): number {\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new CliError({\n code: 'INVALID_DURATION',\n summary: `Invalid duration for ${context}.`,\n details: `Expected non-negative finite number, received ${String(value)}.`,\n hint: 'Use values like 30 or \"30s\", \"5m\", \"1h\".'\n });\n }\n return value;\n }\n\n const match = value.match(/^(\\d+)(s|m|h)$/);\n if (!match) {\n throw new CliError({\n code: 'INVALID_DURATION',\n summary: `Invalid duration string for ${context}.`,\n details: `Received \"${value}\".`,\n hint: 'Use formats like \"30s\", \"5m\", \"1h\".'\n });\n }\n\n const amount = Number.parseInt(match[1], 10);\n const unit = match[2];\n if (unit === 's') {\n return amount;\n }\n\n if (unit === 'm') {\n return amount * 60;\n }\n\n return amount * 3600;\n}\n\nexport function parseDurationMsStrict(value: string | number, context: string): number {\n return parseDurationSecondsStrict(value, context) * 1000;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { applyEdits, modify, parse } from 'jsonc-parser';\nimport type { DiscoveryResult } from '../types.js';\nimport { parseDurationMsStrict, parseDurationSecondsStrict } from './duration.js';\n\nexport function patchJsoncConfig(filePath: string, discovery: DiscoveryResult): void {\n let text = fs.readFileSync(filePath, 'utf8');\n\n text = applyEdits(\n text,\n modify(text, ['main'], '.better-cf/entry.ts', {\n formattingOptions: { insertSpaces: true, tabSize: 2 }\n })\n );\n\n const producers = discovery.queues.map((queue) => ({\n queue: queue.queueName,\n binding: queue.bindingName,\n ...(queue.config.deliveryDelay !== undefined\n ? { delivery_delay: parseDurationSecondsStrict(queue.config.deliveryDelay, `${queue.queueName}.deliveryDelay`) }\n : {})\n }));\n\n const consumers = discovery.queues.map((queue) => {\n const base = {\n queue: queue.queueName,\n ...(queue.config.retry !== undefined ? { max_retries: queue.config.retry } : {}),\n ...(queue.config.deadLetter !== undefined ? { dead_letter_queue: queue.config.deadLetter } : {}),\n ...(queue.config.retryDelay !== undefined\n ? { retry_delay: parseDurationSecondsStrict(queue.config.retryDelay, `${queue.queueName}.retryDelay`) }\n : {})\n };\n\n if (queue.config.consumerType === 'http_pull') {\n return {\n ...base,\n type: 'http_pull',\n ...(queue.config.visibilityTimeout !== undefined\n ? {\n visibility_timeout_ms: parseDurationMsStrict(\n queue.config.visibilityTimeout,\n `${queue.queueName}.visibilityTimeout`\n )\n }\n : {})\n };\n }\n\n return {\n ...base,\n ...(queue.config.batchMaxSize !== undefined ? { max_batch_size: queue.config.batchMaxSize } : {}),\n ...(queue.config.batchTimeout !== undefined\n ? { max_batch_timeout: parseDurationSecondsStrict(queue.config.batchTimeout, `${queue.queueName}.batch.timeout`) }\n : {}),\n ...(queue.config.maxConcurrency !== undefined\n ? { max_concurrency: queue.config.maxConcurrency }\n : {})\n };\n });\n\n text = applyEdits(\n text,\n modify(text, ['queues'], { producers, consumers, better_cf_managed: true }, {\n formattingOptions: { insertSpaces: true, tabSize: 2 }\n })\n );\n\n fs.writeFileSync(filePath, text, 'utf8');\n}\n\nexport function ensureJsoncExists(rootDir: string): string {\n const filePath = path.join(rootDir, 'wrangler.jsonc');\n if (!fs.existsSync(filePath)) {\n const date = new Date().toISOString().split('T')[0];\n const content = `{\n \"$schema\": \"node_modules/wrangler/config-schema.json\",\n \"name\": \"my-worker\",\n \"main\": \".better-cf/entry.ts\",\n \"compatibility_date\": \"${date}\",\n \"queues\": {\n \"producers\": [],\n \"consumers\": []\n }\n}\\n`;\n fs.writeFileSync(filePath, content, 'utf8');\n } else {\n const parsed = parse(fs.readFileSync(filePath, 'utf8')) as Record<string, unknown>;\n if (!parsed.queues) {\n patchJsoncConfig(filePath, { queues: [], diagnostics: [] });\n }\n }\n return filePath;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport type { DiscoveryResult } from '../types.js';\nimport { parseDurationMsStrict, parseDurationSecondsStrict } from './duration.js';\n\nconst START_MARKER = '# --- better-cf:start ---';\nconst END_MARKER = '# --- better-cf:end ---';\n\nexport function patchTomlConfig(filePath: string, discovery: DiscoveryResult): void {\n let content = fs.readFileSync(filePath, 'utf8');\n\n content = ensureMainEntry(content);\n\n const generatedSection = renderQueueSection(discovery);\n\n const startIndex = content.indexOf(START_MARKER);\n const endIndex = content.indexOf(END_MARKER);\n\n if (startIndex >= 0 && endIndex > startIndex) {\n const head = content.slice(0, startIndex + START_MARKER.length);\n const tail = content.slice(endIndex);\n content = `${head}\\n${generatedSection}\\n${tail}`;\n } else {\n content = `${content.trimEnd()}\\n\\n${START_MARKER}\\n${generatedSection}\\n${END_MARKER}\\n`;\n }\n\n fs.writeFileSync(filePath, content, 'utf8');\n}\n\nexport function ensureTomlExists(rootDir: string): string {\n const filePath = path.join(rootDir, 'wrangler.toml');\n if (!fs.existsSync(filePath)) {\n const date = new Date().toISOString().split('T')[0];\n const initial = `name = \"my-worker\"\\nmain = \".better-cf/entry.ts\"\\ncompatibility_date = \"${date}\"\\n\\n${START_MARKER}\\n${END_MARKER}\\n`;\n fs.writeFileSync(filePath, initial, 'utf8');\n }\n return filePath;\n}\n\nfunction ensureMainEntry(content: string): string {\n if (/^main\\s*=\\s*\".*\"/m.test(content)) {\n return content.replace(/^main\\s*=\\s*\".*\"/m, 'main = \".better-cf/entry.ts\"');\n }\n\n return `main = \".better-cf/entry.ts\"\\n${content}`;\n}\n\nfunction renderQueueSection(discovery: DiscoveryResult): string {\n const lines: string[] = [];\n\n for (const queue of discovery.queues) {\n lines.push('[[queues.producers]]');\n lines.push(`queue = ${toTomlString(queue.queueName)}`);\n lines.push(`binding = ${toTomlString(queue.bindingName)}`);\n\n if (queue.config.deliveryDelay !== undefined) {\n lines.push(\n `delivery_delay = ${parseDurationSecondsStrict(\n queue.config.deliveryDelay,\n `${queue.queueName}.deliveryDelay`\n )}`\n );\n }\n\n lines.push('');\n\n lines.push('[[queues.consumers]]');\n lines.push(`queue = ${toTomlString(queue.queueName)}`);\n\n if (queue.config.consumerType === 'http_pull') {\n lines.push(`type = ${toTomlString('http_pull')}`);\n if (queue.config.visibilityTimeout !== undefined) {\n lines.push(\n `visibility_timeout_ms = ${parseDurationMsStrict(\n queue.config.visibilityTimeout,\n `${queue.queueName}.visibilityTimeout`\n )}`\n );\n }\n } else {\n if (queue.config.batchMaxSize !== undefined) {\n lines.push(`max_batch_size = ${queue.config.batchMaxSize}`);\n }\n\n if (queue.config.batchTimeout !== undefined) {\n lines.push(\n `max_batch_timeout = ${parseDurationSecondsStrict(\n queue.config.batchTimeout,\n `${queue.queueName}.batch.timeout`\n )}`\n );\n }\n\n if (queue.config.maxConcurrency !== undefined) {\n lines.push(`max_concurrency = ${queue.config.maxConcurrency}`);\n }\n }\n\n if (queue.config.retry !== undefined) {\n lines.push(`max_retries = ${queue.config.retry}`);\n }\n\n if (queue.config.deadLetter !== undefined) {\n lines.push(`dead_letter_queue = ${toTomlString(queue.config.deadLetter)}`);\n }\n\n if (queue.config.retryDelay !== undefined) {\n lines.push(\n `retry_delay = ${parseDurationSecondsStrict(queue.config.retryDelay, `${queue.queueName}.retryDelay`)}`\n );\n }\n\n lines.push('');\n }\n\n return lines.join('\\n').trimEnd();\n}\n\nfunction toTomlString(value: string): string {\n return `\"${value\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\t/g, '\\\\t')}\"`;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { ensureJsoncExists, patchJsoncConfig } from './jsonc.js';\nimport { ensureTomlExists, patchTomlConfig } from './toml.js';\nimport type { CliConfig, DiscoveryResult } from '../types.js';\n\nexport function patchWranglerConfig(config: CliConfig, discovery: DiscoveryResult): string {\n const existing = detectWranglerConfig(config.rootDir);\n\n if (existing && (existing.endsWith('.jsonc') || existing.endsWith('.json'))) {\n patchJsoncConfig(existing, discovery);\n return existing;\n }\n\n if (existing && existing.endsWith('.toml')) {\n patchTomlConfig(existing, discovery);\n return existing;\n }\n\n const created = ensureTomlExists(config.rootDir);\n patchTomlConfig(created, discovery);\n return created;\n}\n\nfunction detectWranglerConfig(rootDir: string): string | undefined {\n const preferred = ['wrangler.jsonc', 'wrangler.json', 'wrangler.toml'];\n for (const fileName of preferred) {\n const absolutePath = path.join(rootDir, fileName);\n if (fs.existsSync(absolutePath)) {\n return absolutePath;\n }\n }\n\n if (fs.existsSync(path.join(rootDir, 'package.json')) && fs.existsSync(path.join(rootDir, 'src'))) {\n return ensureJsoncExists(rootDir);\n }\n\n return undefined;\n}\n","import { generateCode } from '../codegen.js';\nimport { loadCliConfig } from '../config.js';\nimport { scanQueues } from '../discovery/scanner.js';\nimport { generateEnvTypes } from '../env-types.js';\nimport { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { patchWranglerConfig } from '../wrangler/index.js';\nimport type { GenerateResult } from '../types.js';\n\nexport async function runGenerate(rootDir = process.cwd()): Promise<GenerateResult> {\n const config = loadCliConfig(rootDir);\n const discovery = await scanQueues(config);\n\n for (const diagnostic of discovery.diagnostics) {\n logger.diagnostic(diagnostic);\n }\n\n const hasErrors = discovery.diagnostics.some((diag) => diag.level === 'error');\n if (hasErrors) {\n throw new CliError({\n code: 'QUEUE_DISCOVERY_FAILED',\n summary: 'Queue discovery failed due to configuration errors.',\n hint: 'Fix the diagnostics above and re-run `better-cf generate`.',\n docsUrl: 'https://github.com/better-cf/better-cf#errors'\n });\n }\n\n const generated = generateCode(discovery, config);\n const wranglerConfigPath = patchWranglerConfig(config, discovery);\n const envTypeResult = await generateEnvTypes(config);\n\n return {\n discovery,\n generatedEntryPath: generated.entryPath,\n generatedTypesPath: generated.typesPath,\n wranglerConfigPath,\n autoEnvPath: envTypeResult.autoEnvPath\n };\n}\n\nexport async function generateCommand(rootDir = process.cwd()): Promise<void> {\n const result = await runGenerate(rootDir);\n logger.success(`Generated ${result.discovery.queues.length} queue(s)`);\n logger.item('entry', result.generatedEntryPath);\n logger.item('types', result.generatedTypesPath);\n logger.item('auto-env', result.autoEnvPath);\n logger.item('wrangler', result.wranglerConfigPath);\n}\n","import { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { runCommand } from '../process.js';\nimport { runGenerate } from './generate.js';\n\nexport async function deployCommand(rootDir = process.cwd()): Promise<void> {\n const result = await runGenerate(rootDir);\n\n logger.section('Deploying with wrangler');\n const code = await runCommand('npx', ['wrangler', 'deploy'], rootDir, 'inherit');\n if (code !== 0) {\n throw new CliError({\n code: 'WRANGLER_DEPLOY_FAILED',\n summary: 'wrangler deploy failed.',\n details: `wrangler exited with code ${code}`,\n hint: 'Run wrangler deploy manually to inspect environment-specific failures.'\n });\n }\n\n logger.success('Deployment complete');\n logger.section('Active queue bindings');\n for (const queue of result.discovery.queues) {\n logger.item(queue.queueName, queue.bindingName);\n }\n}\n","import chokidar, { type FSWatcher } from 'chokidar';\n\nexport interface WatcherOptions {\n ignored: string[];\n onRelevantChange: (filePath: string) => Promise<void>;\n}\n\nconst WATCH_GLOBS = [\n '**/*.ts',\n '**/*.tsx',\n 'better-cf.config.ts',\n 'wrangler.toml',\n 'wrangler.json',\n 'wrangler.jsonc',\n 'tsconfig.json'\n];\n\nexport function createProjectWatcher(rootDir: string, options: WatcherOptions): FSWatcher {\n const watcher = chokidar.watch(WATCH_GLOBS, {\n cwd: rootDir,\n ignored: options.ignored.map((entry) => `${entry}/**`),\n ignoreInitial: true,\n usePolling: true,\n interval: 100,\n awaitWriteFinish: {\n stabilityThreshold: 150,\n pollInterval: 25\n }\n });\n\n const handler = async (filePath: string): Promise<void> => {\n await options.onRelevantChange(filePath);\n };\n\n watcher.on('add', handler);\n watcher.on('change', handler);\n watcher.on('unlink', handler);\n watcher.on('ready', () => {\n void options.onRelevantChange('__watcher_ready__');\n });\n\n return watcher;\n}\n","import type { ChildProcess } from 'node:child_process';\nimport { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { spawnCommand } from '../process.js';\nimport { createProjectWatcher } from '../watcher.js';\nimport { runGenerate } from './generate.js';\n\nexport interface DevOptions {\n port: string;\n watch: boolean;\n remote: boolean;\n}\n\nexport async function devCommand(options: DevOptions, rootDir = process.cwd()): Promise<void> {\n if (options.remote) {\n throw new CliError({\n code: 'REMOTE_QUEUE_DEV_UNSUPPORTED',\n summary: 'Cloudflare Queues do not support wrangler dev --remote.',\n hint: 'Run better-cf dev without --remote for queue consumer development.',\n docsUrl: 'https://developers.cloudflare.com/queues/configuration/local-development/'\n });\n }\n\n let wranglerProcess: ChildProcess | null = null;\n let isRebuilding = false;\n\n const buildAndRestart = async (reason: string): Promise<void> => {\n if (isRebuilding) {\n return;\n }\n\n isRebuilding = true;\n try {\n const result = await runGenerate(rootDir);\n logger.success(`Regenerated project (${reason}) with ${result.discovery.queues.length} queue(s)`);\n\n if (wranglerProcess) {\n wranglerProcess.kill();\n }\n\n wranglerProcess = spawnCommand('npx', ['wrangler', 'dev', '--port', options.port], rootDir);\n wranglerProcess.once('error', (error) => {\n logger.error(`Failed to start wrangler dev: ${error.message}`);\n });\n } finally {\n isRebuilding = false;\n }\n };\n\n await buildAndRestart('initial build');\n\n if (options.watch) {\n const watcher = createProjectWatcher(rootDir, {\n // Ignore Wrangler's local build output to avoid self-triggered rebuild loops.\n ignored: ['node_modules', '.better-cf', '.wrangler', 'dist'],\n onRelevantChange: async (filePath) => {\n await buildAndRestart(`file changed: ${filePath}`);\n }\n });\n\n process.on('SIGINT', async () => {\n await watcher.close();\n wranglerProcess?.kill();\n process.exit(0);\n });\n } else {\n process.on('SIGINT', () => {\n wranglerProcess?.kill();\n process.exit(0);\n });\n }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { logger } from '../logger.js';\n\nexport async function initCommand(rootDir = process.cwd()): Promise<void> {\n const configPath = path.join(rootDir, 'better-cf.config.ts');\n if (!fs.existsSync(configPath)) {\n fs.writeFileSync(configPath, defaultConfigTemplate(), 'utf8');\n logger.success('Created better-cf.config.ts');\n }\n\n const workerPath = path.join(rootDir, 'worker.ts');\n const srcWorkerPath = path.join(rootDir, 'src', 'worker.ts');\n if (!fs.existsSync(workerPath) && !fs.existsSync(srcWorkerPath)) {\n fs.writeFileSync(workerPath, defaultWorkerTemplate(), 'utf8');\n logger.success('Created worker.ts');\n }\n\n const outputDir = path.join(rootDir, '.better-cf');\n fs.mkdirSync(outputDir, { recursive: true });\n\n const gitignorePath = path.join(rootDir, '.gitignore');\n if (!fs.existsSync(gitignorePath)) {\n fs.writeFileSync(gitignorePath, '.better-cf/\\nnode_modules/\\n', 'utf8');\n logger.success('Created .gitignore');\n } else {\n const existing = fs.readFileSync(gitignorePath, 'utf8');\n if (!existing.includes('.better-cf/')) {\n fs.appendFileSync(gitignorePath, '\\n.better-cf/\\n', 'utf8');\n logger.success('Updated .gitignore');\n }\n }\n\n const packageJsonPath = path.join(rootDir, 'package.json');\n const packageJsonExists = fs.existsSync(packageJsonPath);\n const packageJson = packageJsonExists\n ? (JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as {\n scripts?: Record<string, string>;\n })\n : ({\n name: derivePackageName(rootDir),\n version: '0.0.0',\n private: true,\n scripts: {}\n } as {\n scripts?: Record<string, string>;\n });\n\n if (!packageJsonExists) {\n logger.success('Created package.json');\n }\n\n packageJson.scripts = packageJson.scripts ?? {};\n packageJson.scripts.dev = packageJson.scripts.dev ?? 'better-cf dev';\n packageJson.scripts.deploy = packageJson.scripts.deploy ?? 'better-cf deploy';\n packageJson.scripts.generate = 'better-cf generate';\n\n fs.writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf8');\n logger.success('Updated package.json scripts');\n\n const wranglerTomlPath = path.join(rootDir, 'wrangler.toml');\n const wranglerJsoncPath = path.join(rootDir, 'wrangler.jsonc');\n const wranglerJsonPath = path.join(rootDir, 'wrangler.json');\n if (!fs.existsSync(wranglerTomlPath) && !fs.existsSync(wranglerJsoncPath) && !fs.existsSync(wranglerJsonPath)) {\n const date = new Date().toISOString().split('T')[0];\n fs.writeFileSync(\n wranglerTomlPath,\n `name = \"my-worker\"\\nmain = \".better-cf/entry.ts\"\\ncompatibility_date = \"${date}\"\\n\\n# --- better-cf:start ---\\n# --- better-cf:end ---\\n`,\n 'utf8'\n );\n logger.success('Created wrangler.toml');\n }\n\n logger.info('Next steps: create a queue export and run `better-cf dev`.');\n}\n\nfunction derivePackageName(rootDir: string): string {\n const raw = path.basename(path.resolve(rootDir)).toLowerCase().trim();\n const normalized = raw\n .replace(/[^a-z0-9._-]+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n\n return normalized || 'better-cf-app';\n}\n\nfunction defaultConfigTemplate(): string {\n return `import { createSDK } from 'better-cf/queue';\n\n// Auto-inferred env types are generated under .better-cf/*.d.ts\n// You can still switch to createSDK<Env>() when you need explicit overrides.\nexport const { defineQueue, defineQueues, defineWorker } = createSDK();\n\nexport const betterCfConfig = {\n // workerEntry: 'worker.ts',\n // ignore: ['coverage'],\n legacyServiceWorker: false,\n inferEnvTypes: true,\n};\n`;\n}\n\nfunction defaultWorkerTemplate(): string {\n return `import { defineWorker } from './better-cf.config';\n\nexport default defineWorker({\n async fetch() {\n return new Response('better-cf ready');\n },\n});\n`;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { createInterface } from 'node:readline/promises';\nimport { stdin as input, stdout as output } from 'node:process';\nimport { initCommand } from './init.js';\nimport { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { runCommand } from '../process.js';\n\nexport type PackageManager = 'npm' | 'pnpm' | 'yarn' | 'bun';\n\nexport interface CreateOptions {\n yes?: boolean;\n install?: boolean;\n force?: boolean;\n packageManager?: PackageManager;\n}\n\ninterface InstallPlan {\n command: PackageManager;\n runtimeArgs: string[];\n devArgs: string[];\n devRunCommand: string;\n}\n\nconst DEFAULT_PROJECT_DIR = 'better-cf-app';\nconst PACKAGE_MANAGERS: PackageManager[] = ['npm', 'pnpm', 'yarn', 'bun'];\nconst INSTALL_PLANS: Record<PackageManager, InstallPlan> = {\n npm: {\n command: 'npm',\n runtimeArgs: ['install', 'better-cf', 'zod'],\n devArgs: ['install', '-D', 'wrangler', '@cloudflare/workers-types', 'typescript'],\n devRunCommand: 'npm run dev'\n },\n pnpm: {\n command: 'pnpm',\n runtimeArgs: ['add', 'better-cf', 'zod'],\n devArgs: ['add', '-D', 'wrangler', '@cloudflare/workers-types', 'typescript'],\n devRunCommand: 'pnpm dev'\n },\n yarn: {\n command: 'yarn',\n runtimeArgs: ['add', 'better-cf', 'zod'],\n devArgs: ['add', '-D', 'wrangler', '@cloudflare/workers-types', 'typescript'],\n devRunCommand: 'yarn dev'\n },\n bun: {\n command: 'bun',\n runtimeArgs: ['add', 'better-cf', 'zod'],\n devArgs: ['add', '-d', 'wrangler', '@cloudflare/workers-types', 'typescript'],\n devRunCommand: 'bun run dev'\n }\n};\n\nexport async function createCommand(\n projectDirectoryArg: string | undefined,\n options: CreateOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n const isYes = options.yes ?? false;\n const shouldInstallByDefault = options.install ?? true;\n const isInteractive = Boolean(input.isTTY && output.isTTY && !isYes);\n\n const prompts = isInteractive ? createPrompts() : undefined;\n try {\n const projectDirectory = await resolveProjectDirectory(projectDirectoryArg, isYes, prompts);\n const targetDir = path.resolve(rootDir, projectDirectory);\n\n ensureTargetDirectory(targetDir, options.force ?? false);\n await initCommand(targetDir);\n\n const detectedPackageManager = detectPackageManager(rootDir);\n const packageManager =\n options.packageManager ??\n (prompts ? await prompts.selectPackageManager(detectedPackageManager) : detectedPackageManager);\n\n const shouldInstall =\n shouldInstallByDefault && (prompts ? await prompts.confirmInstall(true) : true);\n\n if (shouldInstall) {\n await installDependencies(packageManager, targetDir);\n }\n\n const relativePath = path.relative(rootDir, targetDir) || '.';\n const plan = INSTALL_PLANS[packageManager];\n\n logger.section('Project ready');\n logger.item('path', targetDir);\n if (relativePath !== '.') {\n logger.item('cd', `cd ${relativePath}`);\n }\n if (!shouldInstall) {\n logger.item('install', `${plan.command} ${plan.runtimeArgs.join(' ')}`);\n logger.item('install (dev)', `${plan.command} ${plan.devArgs.join(' ')}`);\n }\n logger.item('dev', plan.devRunCommand);\n } finally {\n prompts?.close();\n }\n}\n\nexport function detectPackageManager(rootDir = process.cwd()): PackageManager {\n if (fs.existsSync(path.join(rootDir, 'pnpm-lock.yaml'))) {\n return 'pnpm';\n }\n if (fs.existsSync(path.join(rootDir, 'yarn.lock'))) {\n return 'yarn';\n }\n if (fs.existsSync(path.join(rootDir, 'bun.lock')) || fs.existsSync(path.join(rootDir, 'bun.lockb'))) {\n return 'bun';\n }\n\n const userAgent = process.env.npm_config_user_agent?.toLowerCase() ?? '';\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n if (userAgent.startsWith('bun')) {\n return 'bun';\n }\n if (userAgent.startsWith('npm')) {\n return 'npm';\n }\n\n return 'npm';\n}\n\nfunction ensureTargetDirectory(targetDir: string, force: boolean): void {\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n return;\n }\n\n const stats = fs.statSync(targetDir);\n if (!stats.isDirectory()) {\n throw new CliError({\n code: 'CREATE_TARGET_INVALID',\n summary: `Target path exists and is not a directory: ${targetDir}.`,\n hint: 'Choose a different project directory.'\n });\n }\n\n const contents = fs.readdirSync(targetDir).filter((entry) => entry !== '.DS_Store');\n if (contents.length > 0 && !force) {\n throw new CliError({\n code: 'CREATE_TARGET_NOT_EMPTY',\n summary: `Target directory is not empty: ${targetDir}.`,\n hint: 'Use --force to scaffold in a non-empty directory.'\n });\n }\n}\n\nasync function resolveProjectDirectory(\n projectDirectoryArg: string | undefined,\n isYes: boolean,\n prompts: ReturnType<typeof createPrompts> | undefined\n): Promise<string> {\n if (projectDirectoryArg && projectDirectoryArg.trim().length > 0) {\n return projectDirectoryArg.trim();\n }\n\n if (isYes) {\n return DEFAULT_PROJECT_DIR;\n }\n\n if (!prompts) {\n throw new CliError({\n code: 'CREATE_TARGET_REQUIRED',\n summary: 'Project directory is required in non-interactive mode.',\n hint: 'Pass a directory name, for example: `better-cf create my-worker`.'\n });\n }\n\n return prompts.askProjectDirectory(DEFAULT_PROJECT_DIR);\n}\n\nasync function installDependencies(packageManager: PackageManager, targetDir: string): Promise<void> {\n const plan = INSTALL_PLANS[packageManager];\n logger.section(`Installing dependencies with ${plan.command}`);\n\n await runInstallCommand(plan.command, plan.runtimeArgs, targetDir);\n await runInstallCommand(plan.command, plan.devArgs, targetDir);\n}\n\nasync function runInstallCommand(\n command: PackageManager,\n args: string[],\n cwd: string\n): Promise<void> {\n try {\n const code = await runCommand(command, args, cwd, 'inherit');\n if (code !== 0) {\n throw new CliError({\n code: 'DEPENDENCY_INSTALL_FAILED',\n summary: `Dependency install failed: ${command} ${args.join(' ')}`,\n details: `Command exited with code ${code}.`,\n hint: `Run this command manually in ${cwd}.`\n });\n }\n } catch (error) {\n if (error instanceof CliError) {\n throw error;\n }\n\n throw new CliError({\n code: 'DEPENDENCY_INSTALL_FAILED',\n summary: `Dependency install failed: ${command} ${args.join(' ')}`,\n details: error instanceof Error ? error.message : String(error),\n hint: `Install dependencies manually in ${cwd}.`\n });\n }\n}\n\nfunction createPrompts() {\n const rl = createInterface({ input, output });\n\n return {\n async askProjectDirectory(defaultValue: string): Promise<string> {\n while (true) {\n const raw = await rl.question(`Project directory (${defaultValue}): `);\n const value = raw.trim() || defaultValue;\n if (value.length > 0) {\n return value;\n }\n }\n },\n\n async selectPackageManager(defaultValue: PackageManager): Promise<PackageManager> {\n const defaultIndex = PACKAGE_MANAGERS.indexOf(defaultValue);\n while (true) {\n output.write('\\nSelect a package manager:\\n');\n PACKAGE_MANAGERS.forEach((manager, index) => {\n output.write(` ${index + 1}) ${manager}${manager === defaultValue ? ' (default)' : ''}\\n`);\n });\n\n const raw = await rl.question(`Package manager [${defaultIndex + 1}]: `);\n const normalized = raw.trim().toLowerCase();\n if (!normalized) {\n return defaultValue;\n }\n\n if (PACKAGE_MANAGERS.includes(normalized as PackageManager)) {\n return normalized as PackageManager;\n }\n\n const asNumber = Number(normalized);\n if (Number.isInteger(asNumber) && asNumber >= 1 && asNumber <= PACKAGE_MANAGERS.length) {\n return PACKAGE_MANAGERS[asNumber - 1];\n }\n\n logger.warn(`Unsupported package manager input: ${raw}`);\n }\n },\n\n async confirmInstall(defaultValue: boolean): Promise<boolean> {\n const hint = defaultValue ? 'Y/n' : 'y/N';\n while (true) {\n const raw = await rl.question(`Install dependencies now? (${hint}): `);\n const normalized = raw.trim().toLowerCase();\n\n if (!normalized) {\n return defaultValue;\n }\n if (normalized === 'y' || normalized === 'yes') {\n return true;\n }\n if (normalized === 'n' || normalized === 'no') {\n return false;\n }\n\n logger.warn(`Unsupported confirmation input: ${raw}`);\n }\n },\n\n close(): void {\n rl.close();\n }\n };\n}\n","import { Command } from 'commander';\nimport {\n queueConsumerHttpAddCommand,\n queueConsumerHttpRemoveCommand,\n queueConsumerWorkerAddCommand,\n queueConsumerWorkerRemoveCommand,\n queueCreateCommand,\n queueDeleteCommand,\n queueInfoCommand,\n queueListCommand,\n queuePauseCommand,\n queuePurgeCommand,\n queueResumeCommand,\n queueUpdateCommand,\n subscriptionCreateCommand,\n subscriptionDeleteCommand,\n subscriptionGetCommand,\n subscriptionListCommand,\n subscriptionUpdateCommand\n} from './commands/admin.js';\nimport { deployCommand } from './commands/deploy.js';\nimport { devCommand } from './commands/dev.js';\nimport { generateCommand } from './commands/generate.js';\nimport { initCommand } from './commands/init.js';\nimport { createCommand, type PackageManager } from './commands/create.js';\nimport { CliError } from './errors.js';\nimport { toCliError } from './errors.js';\nimport { logger } from './logger.js';\n\nexport async function run(argv = process.argv.slice(2)): Promise<void> {\n const program = new Command();\n\n program.name('better-cf').description('better-cf queue SDK CLI').version('0.2.1');\n\n program\n .command('create [project-directory]')\n .description('Create a new better-cf project')\n .option('-y, --yes', 'Use defaults and skip prompts')\n .option('--no-install', 'Skip dependency installation')\n .option('--force', 'Allow creating in a non-empty directory')\n .option('--use-npm', 'Use npm to install dependencies')\n .option('--use-pnpm', 'Use pnpm to install dependencies')\n .option('--use-yarn', 'Use yarn to install dependencies')\n .option('--use-bun', 'Use bun to install dependencies')\n .action(\n async (\n projectDirectory: string | undefined,\n options: {\n yes: boolean;\n install: boolean;\n force: boolean;\n useNpm?: boolean;\n usePnpm?: boolean;\n useYarn?: boolean;\n useBun?: boolean;\n }\n ) => {\n const packageManager = resolveCreatePackageManager(options);\n await createCommand(projectDirectory, {\n yes: options.yes,\n install: options.install,\n force: options.force,\n packageManager\n });\n }\n );\n\n program.command('init').description('Initialize better-cf in the current project').action(async () => {\n await initCommand();\n });\n\n program.command('generate').description('Scan queues and regenerate .better-cf files').action(async () => {\n await generateCommand();\n });\n\n program\n .command('dev')\n .description('Run local development with queue codegen and wrangler dev')\n .option('-p, --port <port>', 'Port to pass to wrangler dev', '8787')\n .option('--no-watch', 'Disable file watcher')\n .option('--remote', 'Pass through remote mode (blocked for queues)')\n .action(async (options: { port: string; watch: boolean; remote: boolean }) => {\n await devCommand(options);\n });\n\n program.command('deploy').description('Generate and deploy via wrangler deploy').action(async () => {\n await deployCommand();\n });\n\n program.command('queue:list').description('List queues').action(async () => {\n await queueListCommand();\n });\n\n program\n .command('queue:create')\n .description('Create a queue')\n .requiredOption('--name <name>', 'Queue name')\n .option('--delivery-delay-secs <seconds>', 'Default delivery delay in seconds', parseNumberOption)\n .option(\n '--message-retention-period-secs <seconds>',\n 'Message retention period in seconds',\n parseNumberOption\n )\n .action(\n async (options: {\n name: string;\n deliveryDelaySecs?: number;\n messageRetentionPeriodSecs?: number;\n }) => {\n await queueCreateCommand(options.name, {\n deliveryDelaySecs: options.deliveryDelaySecs,\n messageRetentionPeriodSecs: options.messageRetentionPeriodSecs\n });\n }\n );\n program\n .command('queue:update')\n .description('Update a queue')\n .requiredOption('--name <name>', 'Queue name')\n .option('--delivery-delay-secs <seconds>', 'Default delivery delay in seconds', parseNumberOption)\n .option(\n '--message-retention-period-secs <seconds>',\n 'Message retention period in seconds',\n parseNumberOption\n )\n .action(\n async (options: {\n name: string;\n deliveryDelaySecs?: number;\n messageRetentionPeriodSecs?: number;\n }) => {\n await queueUpdateCommand(options.name, {\n deliveryDelaySecs: options.deliveryDelaySecs,\n messageRetentionPeriodSecs: options.messageRetentionPeriodSecs\n });\n }\n );\n\n program\n .command('queue:delete')\n .description('Delete a queue')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queueDeleteCommand(options.name);\n });\n\n program\n .command('queue:info')\n .description('Describe a queue')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queueInfoCommand(options.name);\n });\n\n program\n .command('queue:pause')\n .description('Pause queue delivery')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queuePauseCommand(options.name);\n });\n\n program\n .command('queue:resume')\n .description('Resume queue delivery')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queueResumeCommand(options.name);\n });\n\n program\n .command('queue:purge')\n .description('Purge queue messages')\n .requiredOption('--name <name>', 'Queue name')\n .action(async (options: { name: string }) => {\n await queuePurgeCommand(options.name);\n });\n\n program\n .command('queue:consumer:http:add')\n .description('Add HTTP pull consumer for a queue')\n .requiredOption('--queue <queue>', 'Queue name')\n .option('--batch-size <size>', 'Batch size', parseNumberOption)\n .option('--message-retries <retries>', 'Message retries', parseNumberOption)\n .option('--dead-letter-queue <queue>', 'Dead letter queue name')\n .option('--visibility-timeout-secs <seconds>', 'Visibility timeout for pull consumer', parseNumberOption)\n .option('--retry-delay-secs <seconds>', 'Retry delay in seconds', parseNumberOption)\n .action(\n async (options: {\n queue: string;\n batchSize?: number;\n messageRetries?: number;\n deadLetterQueue?: string;\n visibilityTimeoutSecs?: number;\n retryDelaySecs?: number;\n }) => {\n await queueConsumerHttpAddCommand(options.queue, {\n batchSize: options.batchSize,\n messageRetries: options.messageRetries,\n deadLetterQueue: options.deadLetterQueue,\n visibilityTimeoutSecs: options.visibilityTimeoutSecs,\n retryDelaySecs: options.retryDelaySecs\n });\n }\n );\n program\n .command('queue:consumer:http:remove')\n .description('Remove HTTP pull consumer for a queue')\n .requiredOption('--queue <queue>', 'Queue name')\n .action(async (options: { queue: string }) => {\n await queueConsumerHttpRemoveCommand(options.queue);\n });\n\n program\n .command('queue:consumer:worker:add')\n .description('Add worker consumer for a queue')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--script <script>', 'Worker script name')\n .option('--batch-size <size>', 'Batch size', parseNumberOption)\n .option('--batch-timeout <seconds>', 'Batch timeout in seconds', parseNumberOption)\n .option('--message-retries <retries>', 'Message retries', parseNumberOption)\n .option('--dead-letter-queue <queue>', 'Dead letter queue name')\n .option('--max-concurrency <count>', 'Max consumer concurrency', parseNumberOption)\n .option('--retry-delay-secs <seconds>', 'Retry delay in seconds', parseNumberOption)\n .action(\n async (options: {\n queue: string;\n script: string;\n batchSize?: number;\n batchTimeout?: number;\n messageRetries?: number;\n deadLetterQueue?: string;\n maxConcurrency?: number;\n retryDelaySecs?: number;\n }) => {\n await queueConsumerWorkerAddCommand(\n options.queue,\n options.script,\n {\n batchSize: options.batchSize,\n batchTimeout: options.batchTimeout,\n messageRetries: options.messageRetries,\n deadLetterQueue: options.deadLetterQueue,\n maxConcurrency: options.maxConcurrency,\n retryDelaySecs: options.retryDelaySecs\n }\n );\n }\n );\n program\n .command('queue:consumer:worker:remove')\n .description('Remove worker consumer for a queue')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--script <script>', 'Worker script name')\n .action(async (options: { queue: string; script: string }) => {\n await queueConsumerWorkerRemoveCommand(options.queue, options.script);\n });\n program\n .command('subscription:list')\n .description('List queue subscriptions')\n .requiredOption('--queue <queue>', 'Queue name')\n .option('--page <page>', 'Page number', parseNumberOption)\n .option('--per-page <count>', 'Results per page', parseNumberOption)\n .option('--json', 'JSON output')\n .action(async (options: { queue: string; page?: number; perPage?: number; json?: boolean }) => {\n await subscriptionListCommand(\n options.queue,\n { page: options.page, perPage: options.perPage, json: options.json }\n );\n });\n\n program\n .command('subscription:create')\n .description('Create queue subscription')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--source <source>', 'Source id (same as queue name in most setups)')\n .requiredOption('--events <events>', 'Event list (for example \"message.acked\")')\n .option('--name <name>', 'Subscription name')\n .option('--enabled <enabled>', 'Subscription enabled state (true/false)', parseBooleanOption)\n .option('--model-name <modelName>', 'AI model name (for AI gateway subscriptions)')\n .option('--worker-name <workerName>', 'Worker destination name')\n .option('--workflow-name <workflowName>', 'Workflow destination name')\n .action(\n async (options: {\n queue: string;\n source: string;\n events: string;\n name?: string;\n enabled?: boolean;\n modelName?: string;\n workerName?: string;\n workflowName?: string;\n }) => {\n await subscriptionCreateCommand(options.queue, {\n source: options.source,\n events: options.events,\n name: options.name,\n enabled: options.enabled,\n modelName: options.modelName,\n workerName: options.workerName,\n workflowName: options.workflowName\n });\n }\n );\n program\n .command('subscription:get')\n .description('Get queue subscription')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--id <id>', 'Subscription ID')\n .option('--json', 'JSON output')\n .action(async (options: { queue: string; id: string; json?: boolean }) => {\n await subscriptionGetCommand(options.queue, options.id, { json: options.json });\n });\n\n program\n .command('subscription:update')\n .description('Update queue subscription destination')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--id <id>', 'Subscription ID')\n .option('--name <name>', 'Subscription name')\n .option('--events <events>', 'Event list')\n .option('--enabled <enabled>', 'Subscription enabled state (true/false)', parseBooleanOption)\n .option('--json', 'JSON output')\n .action(\n async (options: {\n queue: string;\n id: string;\n name?: string;\n events?: string;\n enabled?: boolean;\n json?: boolean;\n }) => {\n await subscriptionUpdateCommand(options.queue, options.id, {\n name: options.name,\n events: options.events,\n enabled: options.enabled,\n json: options.json\n });\n }\n );\n program\n .command('subscription:delete')\n .description('Delete queue subscription')\n .requiredOption('--queue <queue>', 'Queue name')\n .requiredOption('--id <id>', 'Subscription ID')\n .option('--force', 'Skip confirmation where supported')\n .action(async (options: { queue: string; id: string; force?: boolean }) => {\n await subscriptionDeleteCommand(options.queue, options.id, { force: options.force });\n });\n\n try {\n await program.parseAsync(argv, { from: 'user' });\n } catch (error) {\n const cliError = toCliError(error);\n logger.cliError({\n code: cliError.code,\n summary: cliError.summary,\n file: cliError.file,\n details: cliError.details,\n hint: cliError.hint,\n docsUrl: cliError.docsUrl\n });\n process.exitCode = 1;\n }\n}\n\nfunction parseNumberOption(value: string): number {\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new CliError({\n code: 'INVALID_CLI_OPTION',\n summary: `Invalid numeric option: ${value}.`,\n details: 'Expected a non-negative integer.',\n hint: 'Use values like 0, 1, 30, 120.'\n });\n }\n return parsed;\n}\n\nfunction parseBooleanOption(value: string): boolean {\n const normalized = value.toLowerCase();\n if (normalized === 'true') {\n return true;\n }\n if (normalized === 'false') {\n return false;\n }\n throw new CliError({\n code: 'INVALID_CLI_OPTION',\n summary: `Invalid boolean option: ${value}.`,\n details: 'Expected true or false.',\n hint: 'Use --enabled true or --enabled false.'\n });\n}\n\nfunction resolveCreatePackageManager(options: {\n useNpm?: boolean;\n usePnpm?: boolean;\n useYarn?: boolean;\n useBun?: boolean;\n}): PackageManager | undefined {\n const selected: PackageManager[] = [];\n\n if (options.useNpm) {\n selected.push('npm');\n }\n if (options.usePnpm) {\n selected.push('pnpm');\n }\n if (options.useYarn) {\n selected.push('yarn');\n }\n if (options.useBun) {\n selected.push('bun');\n }\n\n if (selected.length > 1) {\n throw new CliError({\n code: 'INVALID_CLI_OPTION',\n summary: 'Conflicting package manager flags.',\n details: 'Use only one of --use-npm, --use-pnpm, --use-yarn, or --use-bun.'\n });\n }\n\n return selected[0];\n}\n"]}
|