better-cf 0.2.2 → 2.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/README.md +153 -77
- package/dist/cli/index.js +2883 -1014
- package/dist/cli/index.js.map +1 -1
- package/dist/durable-object/index.d.ts +7 -0
- package/dist/durable-object/index.js +244 -0
- package/dist/durable-object/index.js.map +1 -0
- package/dist/durable-object/internal.d.ts +96 -0
- package/dist/durable-object/internal.js +427 -0
- package/dist/durable-object/internal.js.map +1 -0
- 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 +21 -1
- package/dist/testing/index.js +342 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/types-C1mNTuC-.d.ts +239 -0
- package/dist/{types-D44i92Zf.d.ts → types-CcW1NyB-.d.ts} +96 -29
- package/package.json +24 -4
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/banner.ts","../../src/cli/logger.ts","../../src/cli/commands/init.ts","../../src/cli/errors.ts","../../src/cli/process.ts","../../src/cli/commands/create.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/modern-codegen.ts","../../src/cli/modern-env-types.ts","../../src/cli/discovery/modern-scanner.ts","../../src/cli/wrangler/duration.ts","../../src/cli/wrangler/jsonc.ts","../../src/cli/wrangler/toml.ts","../../src/cli/wrangler/index.ts","../../src/cli/wrangler/modern.ts","../../src/cli/commands/generate.ts","../../src/cli/commands/deploy.ts","../../src/cli/watcher.ts","../../src/cli/commands/dev.ts","../../src/cli/registry/schema.ts","../../src/cli/registry/cache.ts","../../src/cli/registry/default-registry.ts","../../src/cli/registry/client.ts","../../src/cli/registry/installer.ts","../../src/cli/commands/registry.ts","../../src/cli/commands/tree.ts","../../src/cli/index.ts"],"names":["path","fs","parseSync","collectVariableInitializers","getBindingName","getModuleExportName","resolveWorkerEntry","renderEntryFile","renderTypesFile","toImportPath","text","WRANGLER_ENV_INTERFACE","RESERVED_KEYS","collectSourceFiles","toErrorMessage","resolveCallExpressionFromExpression","readStringProperty","readNumberProperty","collectVariableDeclarationInitializers","unwrapExpression","readConsumerConfig","getObjectLiteralProperty","readNumberOrStringProperty","getPropertyName","getPropertyInitializer","readRawStringLiteral","START_MARKER","END_MARKER","detectWranglerConfig","ensureTomlExists","ensureMainEntry","MagicString","applyEdits","modify","toTomlString","ensureJsoncExists","parse","hasErrors","generated","wranglerConfigPath","envTypeResult"],"mappings":"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","file":"index.js","sourcesContent":["const BANNER_LINES = [\n '██████╗ ███████╗████████╗████████╗███████╗██████╗ ██████╗███████╗',\n '██╔══██╗██╔════╝╚══██╔══╝╚══██╔══╝██╔════╝██╔══██╗ ██╔════╝██╔════╝',\n '██████╔╝█████╗ ██║ ██║ █████╗ ██████╔╝ ██║ █████╗ ',\n '██╔══██╗██╔══╝ ██║ ██║ ██╔══╝ ██╔══██╗ ██║ ██╔══╝ ',\n '██████╔╝███████╗ ██║ ██║ ███████╗██║ ██║ ╚██████╗██║ ',\n '╚═════╝ ╚══════╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚═╝ '\n] as const;\n\nconst BANNER_COMMANDS = new Set(['create', 'init', 'generate', 'dev', 'deploy', 'tree']);\n\nexport function renderBanner(): void {\n process.stdout.write(`${BANNER_LINES.join('\\n')}\\n\\n`);\n}\n\nexport function shouldRenderBanner(argv: string[]): boolean {\n if (argv.length === 0) {\n return true;\n }\n\n const [firstArg, secondArg] = argv;\n if (!firstArg) {\n return true;\n }\n\n if (firstArg === '--help' || firstArg === '-h' || firstArg === '--version' || firstArg === '-V') {\n return true;\n }\n\n if (BANNER_COMMANDS.has(firstArg)) {\n return true;\n }\n\n if (firstArg === 'registry' && !secondArg) {\n return true;\n }\n\n return false;\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 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 // registry: {\n // url: 'https://example.com/better-cf-registry.json',\n // cacheTtlHours: 24,\n // cacheDir: '.better-cf/cache',\n // },\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 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 type { StdioOptions } from 'node:child_process';\nimport { x } from 'tinyexec';\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 Promise.resolve(\n x(command, args, {\n throwOnError: false,\n nodeOptions: {\n cwd,\n stdio: toStdioOption(stdio),\n env: process.env\n }\n })\n ).then((result) => result.exitCode ?? 0);\n}\n\nexport function runCommandCapture(command: string, args: string[], cwd: string): Promise<CommandOutput> {\n return Promise.resolve(\n x(command, args, {\n throwOnError: false,\n nodeOptions: {\n cwd,\n stdio: 'pipe',\n env: process.env\n }\n })\n ).then((result) => ({\n code: result.exitCode ?? 0,\n stdout: result.stdout,\n stderr: result.stderr\n }));\n}\n\nexport function spawnCommand(command: string, args: string[], cwd: string) {\n return x(command, args, {\n throwOnError: false,\n persist: true,\n nodeOptions: {\n cwd,\n stdio: 'inherit',\n env: process.env\n }\n });\n}\n\nfunction toStdioOption(mode: 'inherit' | 'pipe'): StdioOptions {\n return mode;\n}\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport {\n confirm,\n intro,\n isCancel,\n outro,\n select,\n spinner,\n text\n} from '@clack/prompts';\nimport { resolveCommand } from 'package-manager-detector/commands';\nimport { detectSync, getUserAgent } from 'package-manager-detector/detect';\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 RUNTIME_DEPENDENCIES = ['better-cf', 'zod'];\nconst DEV_DEPENDENCIES = ['wrangler', '@cloudflare/workers-types', 'typescript'];\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(process.stdin.isTTY && process.stdout.isTTY && !isYes);\n\n if (isInteractive) {\n intro('Create a better-cf project');\n }\n\n const projectDirectory = await resolveProjectDirectory(projectDirectoryArg, isYes, isInteractive);\n const targetDir = path.resolve(rootDir, projectDirectory);\n\n await ensureTargetDirectory(targetDir, options.force ?? false);\n await initCommand(targetDir);\n\n const detectedPackageManager = detectPackageManager(rootDir);\n const packageManager =\n options.packageManager ??\n (isInteractive ? await promptPackageManager(detectedPackageManager) : detectedPackageManager);\n\n const shouldInstall =\n shouldInstallByDefault && (isInteractive ? await promptInstallConfirmation(true) : true);\n\n if (shouldInstall) {\n await installDependencies(packageManager, targetDir, isInteractive);\n }\n\n const relativePath = path.relative(rootDir, targetDir) || '.';\n const plan = getInstallPlan(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\n if (isInteractive) {\n outro('Project scaffold complete.');\n }\n}\n\nexport function detectPackageManager(rootDir = process.cwd()): PackageManager {\n try {\n const detected = detectSync({ cwd: rootDir });\n if (detected && isSupportedPackageManager(detected.name)) {\n return detected.name;\n }\n } catch {\n // Fallback to user agent or npm below.\n }\n\n const userAgent = getUserAgent();\n if (userAgent && isSupportedPackageManager(userAgent)) {\n return userAgent;\n }\n\n return 'npm';\n}\n\nasync function resolveProjectDirectory(\n projectDirectoryArg: string | undefined,\n isYes: boolean,\n isInteractive: boolean\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 (!isInteractive) {\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 const value = await text({\n message: 'Project directory',\n defaultValue: DEFAULT_PROJECT_DIR,\n placeholder: DEFAULT_PROJECT_DIR,\n validate(input) {\n if (input.trim().length === 0) {\n return 'Project directory cannot be empty.';\n }\n return undefined;\n }\n });\n\n if (isCancel(value)) {\n throw cancellationError();\n }\n\n return value.trim() || DEFAULT_PROJECT_DIR;\n}\n\nasync function promptPackageManager(defaultValue: PackageManager): Promise<PackageManager> {\n const response = await select<PackageManager>({\n message: 'Select a package manager',\n initialValue: defaultValue,\n options: PACKAGE_MANAGERS.map((manager) => ({\n value: manager,\n label: manager,\n hint: manager === defaultValue ? 'detected' : undefined\n }))\n });\n\n if (isCancel(response)) {\n throw cancellationError();\n }\n\n return response;\n}\n\nasync function promptInstallConfirmation(defaultValue: boolean): Promise<boolean> {\n const response = await confirm({\n message: 'Install dependencies now?',\n initialValue: defaultValue\n });\n\n if (isCancel(response)) {\n throw cancellationError();\n }\n\n return response;\n}\n\nasync function ensureTargetDirectory(targetDir: string, force: boolean): Promise<void> {\n try {\n const stats = await fs.stat(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 = (await fs.readdir(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 } catch (error) {\n if (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n (error as { code?: string }).code === 'ENOENT'\n ) {\n await fs.mkdir(targetDir, { recursive: true });\n return;\n }\n\n if (error instanceof CliError) {\n throw error;\n }\n\n throw new CliError({\n code: 'CREATE_TARGET_INVALID',\n summary: `Failed to prepare target directory: ${targetDir}.`,\n details: error instanceof Error ? error.message : String(error)\n });\n }\n}\n\nasync function installDependencies(\n packageManager: PackageManager,\n targetDir: string,\n isInteractive: boolean\n): Promise<void> {\n const plan = getInstallPlan(packageManager);\n logger.section(`Installing dependencies with ${plan.command}`);\n\n const installSpinner = isInteractive ? spinner() : undefined;\n\n installSpinner?.start('Installing runtime dependencies');\n await runInstallCommand(plan.command, plan.runtimeArgs, targetDir);\n installSpinner?.stop('Installed runtime dependencies');\n\n installSpinner?.start('Installing dev dependencies');\n await runInstallCommand(plan.command, plan.devArgs, targetDir);\n installSpinner?.stop('Installed dev dependencies');\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 getInstallPlan(packageManager: PackageManager): InstallPlan {\n const addCommand = resolveCommand(packageManager, 'add', []);\n const runCommandPlan = resolveCommand(packageManager, 'run', ['dev']);\n\n if (!addCommand || !runCommandPlan) {\n throw new CliError({\n code: 'PACKAGE_MANAGER_UNSUPPORTED',\n summary: `Package manager is not supported: ${packageManager}.`,\n hint: 'Use one of npm, pnpm, yarn, or bun.'\n });\n }\n\n const devFlag = packageManager === 'bun' ? '-d' : '-D';\n\n return {\n command: packageManager,\n runtimeArgs: [...addCommand.args, ...RUNTIME_DEPENDENCIES],\n devArgs: [...addCommand.args, devFlag, ...DEV_DEPENDENCIES],\n devRunCommand: `${runCommandPlan.command} ${runCommandPlan.args.join(' ')}`\n };\n}\n\nfunction isSupportedPackageManager(value: string): value is PackageManager {\n return value === 'npm' || value === 'pnpm' || value === 'yarn' || value === 'bun';\n}\n\nfunction cancellationError(): CliError {\n return new CliError({\n code: 'USER_CANCELLED',\n summary: 'Create command was cancelled by user.',\n hint: 'Re-run `better-cf create` to start again.'\n });\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport type {\n BindingPattern,\n ExportNamedDeclaration,\n Expression,\n ObjectExpression,\n ObjectProperty,\n Program,\n VariableDeclaration\n} from '@oxc-project/types';\nimport { parseSync } from 'oxc-parser';\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 registry: {\n url: undefined,\n cacheTtlHours: 24,\n cacheDir: '.better-cf/cache'\n }\n };\n\n const configPath = path.join(rootDir, 'better-cf.config.ts');\n if (!fs.existsSync(configPath)) {\n return defaults;\n }\n\n const sourceText = fs.readFileSync(configPath, 'utf8');\n const parsed = parseSync(configPath, sourceText, {\n lang: 'ts',\n sourceType: 'module'\n });\n\n if (parsed.errors.length > 0) {\n return defaults;\n }\n\n const configObject = findBetterCfConfigObject(parsed.program);\n if (!configObject) {\n return defaults;\n }\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 const registry = readRegistryConfig(configObject);\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 registry: {\n url: registry.url,\n cacheTtlHours: registry.cacheTtlHours ?? defaults.registry?.cacheTtlHours,\n cacheDir: registry.cacheDir ?? defaults.registry?.cacheDir\n }\n };\n}\n\nfunction findBetterCfConfigObject(program: Program): ObjectExpression | undefined {\n const variableMap = new Map<string, Expression>();\n\n for (const statement of program.body) {\n if (statement.type === 'VariableDeclaration') {\n collectVariableInitializers(statement, variableMap);\n continue;\n }\n\n if (statement.type === 'ExportNamedDeclaration' && statement.declaration?.type === 'VariableDeclaration') {\n collectVariableInitializers(statement.declaration, variableMap);\n const candidate = findInVariableDeclaration(statement.declaration, 'betterCfConfig');\n if (candidate) {\n return candidate;\n }\n }\n }\n\n for (const statement of program.body) {\n if (statement.type !== 'ExportNamedDeclaration') {\n continue;\n }\n\n const fromSpecifier = resolveExportSpecifierObject(statement, variableMap);\n if (fromSpecifier) {\n return fromSpecifier;\n }\n }\n\n return undefined;\n}\n\nfunction resolveExportSpecifierObject(\n declaration: ExportNamedDeclaration,\n variableMap: Map<string, Expression>\n): ObjectExpression | undefined {\n if (declaration.declaration) {\n return undefined;\n }\n\n for (const specifier of declaration.specifiers) {\n const localName = getModuleExportName(specifier.local);\n const exportedName = getModuleExportName(specifier.exported);\n if (!localName || !exportedName) {\n continue;\n }\n if (localName !== 'betterCfConfig' && exportedName !== 'betterCfConfig') {\n continue;\n }\n\n const expression = variableMap.get(localName);\n if (expression?.type === 'ObjectExpression') {\n return expression;\n }\n }\n\n return undefined;\n}\n\nfunction getModuleExportName(node: { type: string; name?: string; value?: unknown }): string | undefined {\n if (node.type === 'Identifier') {\n return node.name;\n }\n\n if (node.type === 'Literal' && typeof node.value === 'string') {\n return node.value;\n }\n\n return undefined;\n}\n\nfunction collectVariableInitializers(\n declaration: VariableDeclaration,\n target: Map<string, Expression>\n): void {\n for (const variable of declaration.declarations) {\n const name = getBindingName(variable.id);\n if (!name || !variable.init) {\n continue;\n }\n\n target.set(name, variable.init);\n }\n}\n\nfunction findInVariableDeclaration(\n declaration: VariableDeclaration,\n variableName: string\n): ObjectExpression | undefined {\n for (const variable of declaration.declarations) {\n const name = getBindingName(variable.id);\n if (name !== variableName) {\n continue;\n }\n\n if (variable.init?.type === 'ObjectExpression') {\n return variable.init;\n }\n }\n\n return undefined;\n}\n\nfunction getBindingName(binding: BindingPattern): string | undefined {\n if (binding.type === 'Identifier') {\n return binding.name;\n }\n return undefined;\n}\n\nfunction readString(node: ObjectExpression, key: string): string | undefined {\n const value = readPropertyValue(node, key);\n if (value?.type === 'Literal' && typeof value.value === 'string') {\n return value.value;\n }\n return undefined;\n}\n\nfunction readBoolean(node: ObjectExpression, key: string): boolean | undefined {\n const value = readPropertyValue(node, key);\n if (value?.type === 'Literal' && typeof value.value === 'boolean') {\n return value.value;\n }\n return undefined;\n}\n\nfunction readNumber(node: ObjectExpression, key: string): number | undefined {\n const value = readPropertyValue(node, key);\n if (value?.type === 'Literal' && typeof value.value === 'number') {\n return value.value;\n }\n return undefined;\n}\n\nfunction readStringArray(node: ObjectExpression, key: string): string[] | undefined {\n const value = readPropertyValue(node, key);\n if (!value || value.type !== 'ArrayExpression') {\n return undefined;\n }\n\n const values = value.elements\n .map((element) => {\n if (!element || element.type !== 'Literal' || typeof element.value !== 'string') {\n return undefined;\n }\n return element.value;\n })\n .filter((entry): entry is string => entry !== undefined);\n\n return values.length > 0 ? values : undefined;\n}\n\nfunction readRegistryConfig(node: ObjectExpression): {\n url?: string;\n cacheTtlHours?: number;\n cacheDir?: string;\n} {\n const value = readPropertyValue(node, 'registry');\n if (!value || value.type !== 'ObjectExpression') {\n return {};\n }\n\n return {\n url: readString(value, 'url'),\n cacheTtlHours: readNumber(value, 'cacheTtlHours'),\n cacheDir: readString(value, 'cacheDir')\n };\n}\n\nfunction readPropertyValue(node: ObjectExpression, key: string): Expression | undefined {\n for (const property of node.properties) {\n if (!isNamedProperty(property, key)) {\n continue;\n }\n return property.value;\n }\n\n return undefined;\n}\n\nfunction isNamedProperty(property: unknown, key: string): property is ObjectProperty {\n if (!property || typeof property !== 'object') {\n return false;\n }\n\n const node = property as Partial<ObjectProperty>;\n if (node.type !== 'Property' || node.kind !== 'init' || node.computed) {\n return false;\n }\n\n if (!node.key || typeof node.key !== 'object') {\n return false;\n }\n\n if (node.key.type === 'Identifier') {\n return node.key.name === key;\n }\n\n if (node.key.type === 'Literal' && typeof node.key.value === 'string') {\n return node.key.value === key;\n }\n\n return false;\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 type {\n BindingPattern,\n CallExpression,\n Expression,\n ExportDefaultDeclaration,\n ExportNamedDeclaration,\n ObjectExpression,\n ObjectProperty,\n Program,\n VariableDeclaration\n} from '@oxc-project/types';\nimport { parseSync } from 'oxc-parser';\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 const queues: DiscoveredQueue[] = [];\n\n for (const absolutePath of candidates) {\n try {\n const source = fs.readFileSync(absolutePath, 'utf8');\n const parsed = parseSync(absolutePath, source, {\n lang: absolutePath.endsWith('.tsx') ? 'tsx' : 'ts',\n sourceType: 'module'\n });\n\n if (parsed.errors.length > 0) {\n diagnostics.push({\n level: 'error',\n code: 'SCANNER_FILE_ERROR',\n message: `Failed to parse ${absolutePath}: ${parsed.errors[0]?.message ?? 'unknown parser error'}`,\n filePath: path.relative(config.rootDir, absolutePath)\n });\n continue;\n }\n\n const program = parsed.program;\n const localDefineQueueNames = getDefineQueueLocalNames(program);\n if (localDefineQueueNames.size === 0) {\n continue;\n }\n\n const variableInitMap = collectVariableInitializers(program);\n\n for (const statement of program.body) {\n if (statement.type !== 'ExportNamedDeclaration') {\n continue;\n }\n\n discoverNamedExportsFromStatement(\n statement,\n localDefineQueueNames,\n variableInitMap,\n absolutePath,\n config.rootDir,\n queues,\n diagnostics\n );\n }\n\n for (const statement of program.body) {\n if (statement.type !== 'ExportDefaultDeclaration') {\n continue;\n }\n\n discoverDefaultExportFromStatement(\n statement,\n localDefineQueueNames,\n variableInitMap,\n absolutePath,\n config.rootDir,\n queues,\n diagnostics\n );\n }\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 discoverNamedExportsFromStatement(\n statement: ExportNamedDeclaration,\n localDefineQueueNames: Set<string>,\n variableInitMap: Map<string, Expression>,\n absolutePath: string,\n rootDir: string,\n queues: DiscoveredQueue[],\n diagnostics: DiscoveryDiagnostic[]\n): void {\n if (!statement.declaration || statement.declaration.type !== 'VariableDeclaration') {\n return;\n }\n\n for (const declaration of statement.declaration.declarations) {\n const exportName = getBindingName(declaration.id);\n if (!exportName || !declaration.init) {\n continue;\n }\n\n const call = resolveCallExpressionFromExpression(declaration.init, variableInitMap);\n if (!call || !isDefineQueueCall(call, localDefineQueueNames)) {\n continue;\n }\n\n const queueName = deriveQueueName(exportName);\n const extracted = extractQueueConfig(call, absolutePath, diagnostics, rootDir);\n\n queues.push({\n exportName,\n queueName,\n bindingName: deriveBindingName(queueName),\n filePath: path.relative(rootDir, absolutePath),\n absoluteFilePath: absolutePath,\n isDefaultExport: false,\n importName: makeImportName(queueName, false, exportName),\n config: extracted\n });\n }\n}\n\nfunction discoverDefaultExportFromStatement(\n statement: ExportDefaultDeclaration,\n localDefineQueueNames: Set<string>,\n variableInitMap: Map<string, Expression>,\n absolutePath: string,\n rootDir: string,\n queues: DiscoveredQueue[],\n diagnostics: DiscoveryDiagnostic[]\n): void {\n const declaration = statement.declaration;\n if (\n declaration.type !== 'Identifier' &&\n declaration.type !== 'CallExpression' &&\n declaration.type !== 'ParenthesizedExpression'\n ) {\n return;\n }\n\n const call = resolveCallExpressionFromExpression(declaration, variableInitMap);\n if (!call || !isDefineQueueCall(call, localDefineQueueNames)) {\n return;\n }\n\n const basename = path.basename(absolutePath, path.extname(absolutePath));\n const queueName = deriveQueueName(basename);\n const extracted = extractQueueConfig(call, absolutePath, diagnostics, rootDir);\n\n queues.push({\n exportName: 'default',\n queueName,\n bindingName: deriveBindingName(queueName),\n filePath: path.relative(rootDir, absolutePath),\n absoluteFilePath: absolutePath,\n isDefaultExport: true,\n importName: makeImportName(queueName, true, 'default'),\n config: extracted\n });\n}\n\nfunction collectVariableInitializers(program: Program): Map<string, Expression> {\n const map = new Map<string, Expression>();\n\n for (const statement of program.body) {\n if (statement.type === 'VariableDeclaration') {\n collectVariableDeclarationInitializers(statement, map);\n continue;\n }\n\n if (statement.type === 'ExportNamedDeclaration' && statement.declaration?.type === 'VariableDeclaration') {\n collectVariableDeclarationInitializers(statement.declaration, map);\n }\n }\n\n return map;\n}\n\nfunction collectVariableDeclarationInitializers(\n declaration: VariableDeclaration,\n target: Map<string, Expression>\n): void {\n for (const variable of declaration.declarations) {\n const name = getBindingName(variable.id);\n if (!name || !variable.init) {\n continue;\n }\n\n target.set(name, variable.init);\n }\n}\n\nfunction resolveCallExpressionFromExpression(\n expression: Expression,\n variableInitMap: Map<string, Expression>,\n visited = new Set<string>()\n): CallExpression | undefined {\n const unwrapped = unwrapExpression(expression);\n\n if (unwrapped.type === 'CallExpression') {\n return unwrapped;\n }\n\n if (unwrapped.type !== 'Identifier') {\n return undefined;\n }\n\n if (visited.has(unwrapped.name)) {\n return undefined;\n }\n\n const initializer = variableInitMap.get(unwrapped.name);\n if (!initializer) {\n return undefined;\n }\n\n visited.add(unwrapped.name);\n return resolveCallExpressionFromExpression(initializer, variableInitMap, visited);\n}\n\nfunction unwrapExpression(expression: Expression): Expression {\n if (expression.type === 'ParenthesizedExpression') {\n return unwrapExpression(expression.expression);\n }\n\n return expression;\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 continue;\n }\n\n const content = fs.readFileSync(absolutePath, 'utf8');\n if (content.includes('defineQueue') || content.includes('defineQueues')) {\n files.push(absolutePath);\n }\n }\n }\n\n walk(rootDir);\n return files;\n}\n\nfunction getDefineQueueLocalNames(program: Program): Set<string> {\n const names = new Set<string>();\n\n for (const statement of program.body) {\n if (statement.type !== 'ImportDeclaration') {\n continue;\n }\n\n if (!statement.source.value.includes('better-cf.config')) {\n continue;\n }\n\n for (const specifier of statement.specifiers) {\n if (specifier.type !== 'ImportSpecifier') {\n continue;\n }\n\n const importedName = getModuleExportName(specifier.imported);\n if (!importedName || !DEFINE_QUEUE_HELPERS.has(importedName)) {\n continue;\n }\n\n names.add(specifier.local.name);\n }\n }\n\n return names;\n}\n\nfunction getModuleExportName(node: { type: string; name?: string; value?: unknown }): string | undefined {\n if (node.type === 'Identifier') {\n return node.name;\n }\n\n if (node.type === 'Literal' && typeof node.value === 'string') {\n return node.value;\n }\n\n return undefined;\n}\n\nfunction isDefineQueueCall(call: CallExpression, localNames: Set<string>): boolean {\n const callee = unwrapExpression(call.callee);\n if (callee.type !== 'Identifier') {\n return false;\n }\n\n return localNames.has(callee.name);\n}\n\nfunction getBindingName(binding: BindingPattern): string | undefined {\n if (binding.type === 'Identifier') {\n return binding.name;\n }\n return undefined;\n}\n\nfunction extractQueueConfig(\n call: CallExpression,\n absolutePath: string,\n diagnostics: DiscoveryDiagnostic[],\n rootDir: string\n): ExtractedQueueConfig {\n const firstArg = call.arguments[0];\n if (!firstArg || firstArg.type !== 'ObjectExpression') {\n return {\n hasHandler: false,\n hasBatchHandler: false,\n isMultiJob: false\n };\n }\n\n const objectLiteral = firstArg;\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.properties) {\n if (property.type !== 'Property') {\n continue;\n }\n\n const propertyName = getPropertyName(property);\n if (!propertyName || RESERVED_KEYS.has(propertyName)) {\n continue;\n }\n\n const initializer = unwrapExpression(property.value);\n if (initializer.type !== 'ObjectExpression') {\n continue;\n }\n\n if (hasProperty(initializer, 'args') && hasProperty(initializer, '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: ObjectExpression, name: string): boolean {\n return objectLiteral.properties.some((property) => {\n return property.type === 'Property' && getPropertyName(property) === name;\n });\n}\n\nfunction getObjectLiteralProperty(\n objectLiteral: ObjectExpression,\n name: string\n): ObjectExpression | undefined {\n for (const property of objectLiteral.properties) {\n if (property.type !== 'Property' || getPropertyName(property) !== name) {\n continue;\n }\n\n const initializer = unwrapExpression(property.value);\n if (initializer.type === 'ObjectExpression') {\n return initializer;\n }\n }\n\n return undefined;\n}\n\nfunction readNumberProperty(\n objectLiteral: ObjectExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): number | undefined {\n const initializer = getPropertyInitializer(objectLiteral, name);\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.type !== 'Literal' || typeof initializer.value !== 'number') {\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 initializer.value;\n}\n\nfunction readStringProperty(\n objectLiteral: ObjectExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): string | undefined {\n const initializer = getPropertyInitializer(objectLiteral, name);\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.type !== 'Literal' || typeof initializer.value !== 'string') {\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 readRawStringLiteral(initializer.raw, initializer.value);\n}\n\nfunction readNumberOrStringProperty(\n objectLiteral: ObjectExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): number | string | undefined {\n const initializer = getPropertyInitializer(objectLiteral, name);\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.type === 'Literal' && typeof initializer.value === 'number') {\n return initializer.value;\n }\n\n if (initializer.type === 'Literal' && typeof initializer.value === 'string') {\n return readRawStringLiteral(initializer.raw, initializer.value);\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: ObjectExpression,\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 getPropertyInitializer(objectLiteral: ObjectExpression, name: string): Expression | undefined {\n for (const property of objectLiteral.properties) {\n if (property.type !== 'Property' || getPropertyName(property) !== name) {\n continue;\n }\n\n return unwrapExpression(property.value);\n }\n\n return undefined;\n}\n\nfunction getPropertyName(property: ObjectProperty): string | undefined {\n if (property.computed) {\n return undefined;\n }\n\n if (property.key.type === 'Identifier') {\n return property.key.name;\n }\n\n if (property.key.type === 'Literal' && typeof property.key.value === 'string') {\n return property.key.value;\n }\n\n return undefined;\n}\n\nfunction readRawStringLiteral(raw: string | null, fallback: string): string {\n if (!raw || raw.length < 2) {\n return fallback;\n }\n\n const quote = raw[0];\n if ((quote !== '\\'' && quote !== '\"' && quote !== '`') || raw[raw.length - 1] !== quote) {\n return fallback;\n }\n\n return raw.slice(1, -1);\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 fs from 'node:fs';\nimport path from 'node:path';\nimport type { CliConfig } from './types.js';\nimport type {\n ModernDiscoveredDurableObject,\n ModernDiscoveredDurableRegistration,\n ModernDiscoveredQueue,\n ModernDiscoveredQueueConsumer,\n ModernDiscoveryResult\n} from './modern-types.js';\n\nexport interface ModernCodegenResult {\n entryPath: string;\n typesPath: string;\n}\n\nexport function generateModernCode(discovery: ModernDiscoveryResult, config: CliConfig): ModernCodegenResult {\n const outputDir = path.join(config.rootDir, '.better-cf');\n fs.mkdirSync(outputDir, { recursive: true });\n\n const workerEntryAbsolute = resolveWorkerEntry(config);\n const entryPath = path.join(outputDir, 'entry.ts');\n const typesPath = path.join(outputDir, 'types.d.ts');\n\n fs.writeFileSync(entryPath, renderEntryFile(discovery, workerEntryAbsolute, outputDir), 'utf8');\n fs.writeFileSync(typesPath, renderTypesFile(discovery, outputDir), 'utf8');\n\n return {\n entryPath,\n typesPath\n };\n}\n\nfunction resolveWorkerEntry(config: CliConfig): string {\n if (config.workerEntry) {\n return path.resolve(config.rootDir, config.workerEntry);\n }\n\n const candidates = ['worker.ts', 'src/worker.ts', 'src/index.ts'].map((candidate) =>\n path.resolve(config.rootDir, candidate)\n );\n\n const found = candidates.find((candidate) => fs.existsSync(candidate));\n if (!found) {\n throw new Error('Could not resolve worker entry for better-cf durable-object generation.');\n }\n return found;\n}\n\nfunction renderEntryFile(\n discovery: ModernDiscoveryResult,\n workerEntryAbsolute: string,\n outDir: string\n): string {\n const imports: string[] = [];\n const bindingSetup: string[] = [];\n const queueConsumerMapLines: string[] = [];\n const queueApiLines: string[] = [];\n const durableApiLines: string[] = [];\n const internalApiLines: string[] = [];\n const durableClassLines: string[] = [];\n const queueAliasMap = new Map<string, string>();\n const durableAliasMap = new Map<string, string>();\n const registrationAliasMap = new Map<string, string>();\n\n imports.push(`import workerDefault, * as workerModule from ${JSON.stringify(toImportPath(outDir, workerEntryAbsolute))};`);\n imports.push(\n `import { createGeneratedQueueApi, createGeneratedQueueBatchApi, consumeQueueRegistration, getDurableObjectInternals, getQueueDefinitionInternals, invokeDurableAlarm, invokeDurableFetch, invokeDurableFunction, invokeDurableInit, invokeDurableWebSocketClose, invokeDurableWebSocketConnect, invokeDurableWebSocketError, invokeDurableWebSocketMessage, resolveWorkerHandlers, setGeneratedApiFactory } from 'better-cf/durable-object/internal';`\n );\n\n discovery.queues.forEach((queue, index) => {\n const alias = `__queue_${index}`;\n queueAliasMap.set(queue.id, alias);\n imports.push(`import { ${queue.exportName} as ${alias} } from ${JSON.stringify(toImportPath(outDir, queue.absoluteFilePath))};`);\n bindingSetup.push(`getQueueDefinitionInternals(${alias}).setBinding('${queue.bindingName}');`);\n });\n\n discovery.durableObjects.forEach((durableObject, index) => {\n const alias = `__durable_${index}`;\n durableAliasMap.set(durableObject.id, alias);\n imports.push(\n `import { ${durableObject.exportName} as ${alias} } from ${JSON.stringify(toImportPath(outDir, durableObject.absoluteFilePath))};`\n );\n });\n\n discovery.queueConsumers.forEach((consumer, index) => {\n const alias = `__queue_consumer_${index}`;\n registrationAliasMap.set(consumer.id, alias);\n imports.push(\n `import { ${consumer.exportName} as ${alias} } from ${JSON.stringify(toImportPath(outDir, consumer.absoluteFilePath))};`\n );\n });\n\n discovery.durableRegistrations.forEach((registration, index) => {\n const alias = `__durable_registration_${index}`;\n registrationAliasMap.set(registration.id, alias);\n imports.push(\n `import { ${registration.exportName} as ${alias} } from ${JSON.stringify(toImportPath(outDir, registration.absoluteFilePath))};`\n );\n });\n\n for (const queue of discovery.queues) {\n const consumer = discovery.queueConsumers.find(\n (candidate) => candidate.ownerId === queue.id && candidate.kind !== 'job-message'\n );\n\n const jobConsumers = discovery.queueConsumers.filter(\n (candidate) => candidate.ownerId === queue.id && candidate.kind === 'job-message'\n );\n\n const queueAlias = queueAliasMap.get(queue.id)!;\n if (consumer) {\n queueConsumerMapLines.push(` '${queue.queueName}': { queue: ${queueAlias}, consumer: ${registrationAliasMap.get(consumer.id)} }`);\n } else if (jobConsumers.length > 0) {\n const consumerMap = jobConsumers\n .map((jobConsumer) => `'${jobConsumer.jobName}': ${registrationAliasMap.get(jobConsumer.id)}`)\n .join(', ');\n queueConsumerMapLines.push(` '${queue.queueName}': { queue: ${queueAlias}, consumers: { ${consumerMap} } }`);\n }\n\n if (queue.kind === 'single') {\n queueApiLines.push(renderSingleQueueApi(queue));\n } else {\n queueApiLines.push(renderMultiQueueApi(queue));\n }\n }\n\n for (const durableObject of discovery.durableObjects) {\n const registrations = discovery.durableRegistrations.filter((candidate) => candidate.ownerId === durableObject.id);\n const publicMethods = registrations.filter((candidate) => candidate.kind === 'fn');\n const internalMethods = registrations.filter((candidate) => candidate.kind === 'internal');\n const fetchRegistration = registrations.find((candidate) => candidate.kind === 'fetch');\n const alarmRegistration = registrations.find((candidate) => candidate.kind === 'alarm');\n const initRegistration = registrations.find((candidate) => candidate.kind === 'init');\n const websocketRegistration = registrations.find((candidate) => candidate.kind === 'websocket');\n\n durableApiLines.push(renderDurableApi(durableObject, publicMethods, durableAliasMap.get(durableObject.id)!));\n\n if (internalMethods.length > 0) {\n internalApiLines.push(renderInternalDurableApi(durableObject, internalMethods, durableAliasMap.get(durableObject.id)!));\n }\n\n durableClassLines.push(\n renderDurableClass(\n durableObject,\n durableAliasMap.get(durableObject.id)!,\n publicMethods,\n internalMethods,\n fetchRegistration ? registrationAliasMap.get(fetchRegistration.id)! : undefined,\n alarmRegistration ? registrationAliasMap.get(alarmRegistration.id)! : undefined,\n initRegistration ? registrationAliasMap.get(initRegistration.id)! : undefined,\n websocketRegistration ? registrationAliasMap.get(websocketRegistration.id)! : undefined,\n registrationAliasMap\n )\n );\n }\n\n const internalBlock =\n internalApiLines.length > 0\n ? `,\\n $internal: {\\n${internalApiLines.join(',\\n')}\\n }`\n : '';\n\n return `// Auto-generated by better-cf. Do not edit.\n${imports.join('\\n')}\n\n${bindingSetup.join('\\n')}\n\nsetGeneratedApiFactory((env, executionCtx) => ({\n${queueApiLines.join(',\\n')}\n${queueApiLines.length > 0 && durableApiLines.length > 0 ? ',' : ''}${durableApiLines.join(',\\n')}\n${internalBlock}\n}));\n\nconst __queueConsumers = {\n${queueConsumerMapLines.join(',\\n')}\n};\n\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 = __queueConsumers[batch.queue as keyof typeof __queueConsumers];\n if (!consumer) {\n batch.ackAll();\n return;\n }\n\n if ('consumer' in consumer) {\n await consumeQueueRegistration(consumer.queue, consumer.consumer, batch, env, ctx);\n return;\n }\n\n for (const message of batch.messages) {\n const envelope = message.body as { _job?: string };\n const jobConsumer = envelope?._job ? consumer.consumers[envelope._job as keyof typeof consumer.consumers] : undefined;\n if (!jobConsumer) {\n message.ack();\n continue;\n }\n\n await consumeQueueRegistration(consumer.queue, jobConsumer, {\n ...batch,\n messages: [message]\n }, env, ctx);\n }\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${durableClassLines.join('\\n\\n')}\n`;\n}\n\nfunction renderSingleQueueApi(queue: ModernDiscoveredQueue): string {\n return ` ${queue.exportName}: {\n async send(args, options) {\n return createGeneratedQueueApi((env as Record<string, unknown>)['${queue.bindingName}'], args, options);\n },\n async sendBatch(messages) {\n return createGeneratedQueueBatchApi((env as Record<string, unknown>)['${queue.bindingName}'], messages);\n }\n }`;\n}\n\nfunction renderMultiQueueApi(queue: ModernDiscoveredQueue): string {\n const jobs = queue.jobNames\n .map(\n (jobName) => ` ${jobName}: {\n async send(args, options) {\n return createGeneratedQueueApi((env as Record<string, unknown>)['${queue.bindingName}'], { _job: '${jobName}', data: args }, options);\n },\n async sendBatch(messages) {\n return createGeneratedQueueBatchApi(\n (env as Record<string, unknown>)['${queue.bindingName}'],\n messages.map((message) => ({\n ...message,\n data: { _job: '${jobName}', data: message.data }\n }))\n );\n }\n }`\n )\n .join(',\\n');\n\n return ` ${queue.exportName}: {\\n${jobs}\\n }`;\n}\n\nfunction renderDurableApi(\n durableObject: ModernDiscoveredDurableObject,\n publicMethods: ModernDiscoveredDurableRegistration[],\n durableAlias: string\n): string {\n const methodLines = publicMethods\n .map(\n (method) => ` async ${method.exportName}(key, args) {\n const namespace = (env as Record<string, unknown>)['${durableObject.bindingName}'];\n const name = getDurableObjectInternals(${durableAlias}).serializeKey(key);\n const stub = (namespace as DurableObjectNamespace).getByName(name);\n return stub.${method.exportName}(args);\n }`\n )\n .join(',\\n');\n\n return ` ${durableObject.exportName}: {\n${methodLines}${methodLines ? ',\\n' : ''} $raw: {\n namespace() {\n return (env as Record<string, unknown>)['${durableObject.bindingName}'] as DurableObjectNamespace;\n },\n idFromName(key) {\n return ((env as Record<string, unknown>)['${durableObject.bindingName}'] as DurableObjectNamespace).idFromName(\n getDurableObjectInternals(${durableAlias}).serializeKey(key)\n );\n },\n idFromString(id) {\n return ((env as Record<string, unknown>)['${durableObject.bindingName}'] as DurableObjectNamespace).idFromString(id);\n },\n newUniqueId(options) {\n return ((env as Record<string, unknown>)['${durableObject.bindingName}'] as DurableObjectNamespace).newUniqueId(options);\n },\n getByName(key) {\n return ((env as Record<string, unknown>)['${durableObject.bindingName}'] as DurableObjectNamespace).getByName(\n getDurableObjectInternals(${durableAlias}).serializeKey(key)\n );\n },\n get(id, options) {\n return ((env as Record<string, unknown>)['${durableObject.bindingName}'] as DurableObjectNamespace).get(id, options);\n }\n }\n }`;\n}\n\nfunction renderInternalDurableApi(\n durableObject: ModernDiscoveredDurableObject,\n internalMethods: ModernDiscoveredDurableRegistration[],\n durableAlias: string\n): string {\n const methodLines = internalMethods\n .map(\n (method) => ` async ${method.exportName}(key, args) {\n const namespace = (env as Record<string, unknown>)['${durableObject.bindingName}'];\n const name = getDurableObjectInternals(${durableAlias}).serializeKey(key);\n const stub = (namespace as DurableObjectNamespace).getByName(name);\n return stub.${method.exportName}(args);\n }`\n )\n .join(',\\n');\n\n return ` ${durableObject.exportName}: {\\n${methodLines}\\n }`;\n}\n\nfunction renderDurableClass(\n durableObject: ModernDiscoveredDurableObject,\n durableAlias: string,\n publicMethods: ModernDiscoveredDurableRegistration[],\n internalMethods: ModernDiscoveredDurableRegistration[],\n fetchAlias: string | undefined,\n alarmAlias: string | undefined,\n initAlias: string | undefined,\n websocketAlias: string | undefined,\n registrationAliasMap: Map<string, string>\n): string {\n const methods = [...publicMethods, ...internalMethods]\n .map((method) => {\n const alias = registrationAliasMap.get(method.id)!;\n return ` async ${method.exportName}(args: unknown): Promise<unknown> {\n await this.__betterCfReady;\n return invokeDurableFunction(this.__betterCfEnv, this.ctx, this.__betterCfExecutionCtx, ${alias}, args);\n }`;\n })\n .join('\\n\\n');\n\n const fetchBody = websocketAlias\n ? ` if (request.headers.get('upgrade')?.toLowerCase() === 'websocket') {\n return invokeDurableWebSocketConnect(this.__betterCfEnv, this.ctx, this.__betterCfExecutionCtx, ${websocketAlias}, request);\n }\n${fetchAlias ? ` return invokeDurableFetch(this.__betterCfEnv, this.ctx, this.__betterCfExecutionCtx, ${fetchAlias}, request);` : ` return new Response('Not found', { status: 404 });`}`\n : fetchAlias\n ? ` return invokeDurableFetch(this.__betterCfEnv, this.ctx, this.__betterCfExecutionCtx, ${fetchAlias}, request);`\n : ` return new Response('Not found', { status: 404 });`;\n\n const initBlock = initAlias\n ? ` this.__betterCfReady = this.ctx.blockConcurrencyWhile(async () => {\n await invokeDurableInit(this.__betterCfEnv, this.ctx, this.__betterCfExecutionCtx, ${initAlias});\n });`\n : ` this.__betterCfReady = Promise.resolve();`;\n\n return `export class ${durableObject.className} {\n readonly ctx: DurableObjectState;\n readonly __betterCfEnv: unknown;\n readonly __betterCfExecutionCtx: ExecutionContext;\n readonly __betterCfReady: Promise<void>;\n\n constructor(ctx: DurableObjectState, env: unknown) {\n this.ctx = ctx;\n this.__betterCfEnv = env;\n this.__betterCfExecutionCtx = ctx as unknown as ExecutionContext;\n${initBlock}\n }\n\n${methods ? `${methods}\\n\\n` : ''} async fetch(request: Request): Promise<Response> {\n await this.__betterCfReady;\n${fetchBody}\n }\n\n async alarm(alarmInfo: AlarmInvocationInfo): Promise<void> {\n await this.__betterCfReady;\n${alarmAlias ? ` await invokeDurableAlarm(this.__betterCfEnv, this.ctx, this.__betterCfExecutionCtx, ${alarmAlias}, alarmInfo);` : ' return;'}\n }\n\n async webSocketMessage(socket: WebSocket, message: string | ArrayBuffer): Promise<void> {\n await this.__betterCfReady;\n${websocketAlias ? ` await invokeDurableWebSocketMessage(this.__betterCfEnv, this.ctx, this.__betterCfExecutionCtx, ${websocketAlias}, socket, message);` : ' return;'}\n }\n\n async webSocketClose(socket: WebSocket, code: number, reason: string, wasClean: boolean): Promise<void> {\n await this.__betterCfReady;\n${websocketAlias ? ` await invokeDurableWebSocketClose(this.__betterCfEnv, this.ctx, this.__betterCfExecutionCtx, ${websocketAlias}, socket, code, reason, wasClean);` : ' return;'}\n }\n\n async webSocketError(socket: WebSocket, error: unknown): Promise<void> {\n await this.__betterCfReady;\n${websocketAlias ? ` await invokeDurableWebSocketError(this.__betterCfEnv, this.ctx, this.__betterCfExecutionCtx, ${websocketAlias}, socket, error);` : ' return;'}\n }\n}`;\n}\n\nfunction renderTypesFile(discovery: ModernDiscoveryResult, outDir: string): string {\n const imports: string[] = [\n `import type { DurableFnArgs, DurableFnKey, DurableFnReturn, DurableObjectKey, QueuePayload, QueueJobPayload, SendBatchEntry, SendOptions } from 'better-cf/durable-object';`\n ];\n\n const bindingLines: string[] = [];\n const apiLines: string[] = [];\n const internalLines: string[] = [];\n\n discovery.queues.forEach((queue, index) => {\n const alias = `__queue_type_${index}`;\n imports.push(`import type { ${queue.exportName} as ${alias} } from ${JSON.stringify(toImportPath(outDir, queue.absoluteFilePath))};`);\n bindingLines.push(` ${queue.bindingName}: Queue;`);\n\n if (queue.kind === 'single') {\n apiLines.push(` ${queue.exportName}: {\n ${renderDoc(queue.description, `Send one message to queue \"${queue.queueName}\".`)}send(args: QueuePayload<typeof ${alias}>, options?: SendOptions): Promise<void>;\n ${renderDoc(queue.description, `Send many messages to queue \"${queue.queueName}\".`)}sendBatch(messages: SendBatchEntry<QueuePayload<typeof ${alias}>>[]): Promise<void>;\n };`);\n } else {\n const jobs = queue.jobNames\n .map(\n (jobName) => ` ${jobName}: {\n ${renderDoc(queue.description, `Send one ${jobName} job to queue \"${queue.queueName}\".`)}send(args: QueueJobPayload<typeof ${alias}.${jobName}>, options?: SendOptions): Promise<void>;\n ${renderDoc(queue.description, `Send many ${jobName} jobs to queue \"${queue.queueName}\".`)}sendBatch(messages: SendBatchEntry<QueueJobPayload<typeof ${alias}.${jobName}>>[]): Promise<void>;\n };`\n )\n .join('\\n');\n apiLines.push(` ${queue.exportName}: {\\n${jobs}\\n };`);\n }\n });\n\n discovery.durableObjects.forEach((durableObject, index) => {\n const objectAlias = `__durable_type_${index}`;\n imports.push(\n `import type { ${durableObject.exportName} as ${objectAlias} } from ${JSON.stringify(toImportPath(outDir, durableObject.absoluteFilePath))};`\n );\n bindingLines.push(` ${durableObject.bindingName}: DurableObjectNamespace;`);\n\n const registrations = discovery.durableRegistrations.filter((candidate) => candidate.ownerId === durableObject.id);\n const publicMethods = registrations.filter((candidate) => candidate.kind === 'fn');\n const internalMethods = registrations.filter((candidate) => candidate.kind === 'internal');\n\n publicMethods.forEach((method, methodIndex) => {\n const alias = `__durable_method_${index}_${methodIndex}`;\n imports.push(\n `import type { ${method.exportName} as ${alias} } from ${JSON.stringify(toImportPath(outDir, method.absoluteFilePath))};`\n );\n });\n internalMethods.forEach((method, methodIndex) => {\n const alias = `__durable_internal_${index}_${methodIndex}`;\n imports.push(\n `import type { ${method.exportName} as ${alias} } from ${JSON.stringify(toImportPath(outDir, method.absoluteFilePath))};`\n );\n });\n\n const publicMethodLines = publicMethods\n .map((method, methodIndex) => {\n const alias = `__durable_method_${index}_${methodIndex}`;\n return ` ${renderDoc(method.description, `Invoke durable method \"${method.exportName}\" on ${durableObject.objectName}.`)}${method.exportName}(key: DurableFnKey<typeof ${alias}>, args: DurableFnArgs<typeof ${alias}>): Promise<DurableFnReturn<typeof ${alias}>>;`;\n })\n .join('\\n');\n\n apiLines.push(` ${durableObject.exportName}: {\n${publicMethodLines}\n ${renderDoc(durableObject.description, `Access raw Cloudflare Durable Object primitives for ${durableObject.objectName}.`)}$raw: {\n namespace(): DurableObjectNamespace;\n idFromName(key: DurableObjectKey<typeof ${objectAlias}>): ReturnType<DurableObjectNamespace['idFromName']>;\n idFromString(id: string): ReturnType<DurableObjectNamespace['idFromString']>;\n newUniqueId(options?: Parameters<DurableObjectNamespace['newUniqueId']>[0]): ReturnType<DurableObjectNamespace['newUniqueId']>;\n getByName(key: DurableObjectKey<typeof ${objectAlias}>): ReturnType<DurableObjectNamespace['getByName']>;\n get(\n id: Parameters<DurableObjectNamespace['get']>[0],\n options?: Parameters<DurableObjectNamespace['get']>[1]\n ): ReturnType<DurableObjectNamespace['get']>;\n };\n };`);\n\n if (internalMethods.length > 0) {\n const internalMethodLines = internalMethods\n .map((method, methodIndex) => {\n const alias = `__durable_internal_${index}_${methodIndex}`;\n return ` ${renderDoc(method.description, `Invoke internal durable method \"${method.exportName}\" on ${durableObject.objectName}.`)}${method.exportName}(key: DurableFnKey<typeof ${alias}>, args: DurableFnArgs<typeof ${alias}>): Promise<DurableFnReturn<typeof ${alias}>>;`;\n })\n .join('\\n');\n internalLines.push(` ${durableObject.exportName}: {\\n${internalMethodLines}\\n };`);\n }\n });\n\n const internalBlock = internalLines.length > 0 ? `\\n interface BetterCfGeneratedApi {\\n${apiLines.join('\\n')}\\n $internal: {\\n${internalLines.join('\\n')}\\n };\\n }\\n` : `\\n interface BetterCfGeneratedApi {\\n${apiLines.join('\\n')}\\n }\\n`;\n\n return `// Auto-generated by better-cf. Do not edit.\n/// <reference path=\"./wrangler-env.d.ts\" />\n${imports.join('\\n')}\n\ndeclare module 'better-cf/durable-object' {\n interface BetterCfGeneratedBindings {\n${bindingLines.join('\\n')}\n }\n${internalBlock}\n interface BetterCfAutoEnv extends BetterCfGeneratedBindings, BetterCfWranglerEnv {}\n}\n\nexport {};\n`;\n}\n\nfunction renderDoc(description: string | undefined, fallback: string): string {\n const text = description ?? fallback;\n return `/** ${text.replace(/\\*\\//g, '*\\\\/')} */\\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","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 ModernEnvTypeResult {\n wranglerEnvPath: string;\n autoEnvPath: string;\n}\n\nexport async function generateModernEnvTypes(config: CliConfig): Promise<ModernEnvTypeResult> {\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 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=\"./types.d.ts\" />\\n\\nexport {};\\n`,\n 'utf8'\n );\n\n return {\n wranglerEnvPath,\n autoEnvPath\n };\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport type {\n BindingPattern,\n CallExpression,\n ExportNamedDeclaration,\n Expression,\n ImportDeclaration,\n ObjectExpression,\n ObjectProperty,\n Program,\n VariableDeclaration\n} from '@oxc-project/types';\nimport { parseSync } from 'oxc-parser';\nimport { deriveBindingName, deriveQueueName } from './naming.js';\nimport type { ModernDiscoveredDurableObject, ModernDiscoveredDurableRegistration, ModernDiscoveredQueue, ModernDiscoveredQueueConsumer, ModernDiscoveryResult } from '../modern-types.js';\nimport type { CliConfig, DiscoveryDiagnostic, ExtractedQueueConfig } from '../types.js';\n\ninterface ParsedFile {\n absolutePath: string;\n relativePath: string;\n program: Program;\n variableInitMap: Map<string, Expression>;\n sdkVariables: Set<string>;\n imports: Map<string, { absoluteFilePath: string; exportName: string }>;\n}\n\ntype DeclarationRef =\n | { kind: 'durable'; value: ModernDiscoveredDurableObject }\n | { kind: 'queue'; value: ModernDiscoveredQueue };\n\nconst SDK_IMPORT = 'better-cf/durable-object';\nconst RESERVED_KEYS = new Set([\n 'retry',\n 'retryDelay',\n 'deadLetter',\n 'deliveryDelay',\n 'visibilityTimeout',\n 'batch',\n 'consumer',\n 'args',\n 'description'\n]);\n\nexport async function scanModernProject(config: CliConfig): Promise<ModernDiscoveryResult> {\n const diagnostics: DiscoveryDiagnostic[] = [];\n const files = collectSourceFiles(config.rootDir, config.ignore);\n const parsedFiles: ParsedFile[] = [];\n const durableObjects: ModernDiscoveredDurableObject[] = [];\n const queues: ModernDiscoveredQueue[] = [];\n const declarations = new Map<string, DeclarationRef>();\n\n for (const absolutePath of files) {\n const source = fs.readFileSync(absolutePath, 'utf8');\n const hasModernMarker =\n source.includes(SDK_IMPORT) ||\n source.includes('.defineDurableObject(') ||\n source.includes('.defineQueue(') ||\n source.includes('.defineQueues(') ||\n source.includes('.fn(') ||\n source.includes('.message(') ||\n source.includes('.batch(') ||\n source.includes('.websocket(');\n\n if (!hasModernMarker) {\n continue;\n }\n\n try {\n const parsed = parseSync(absolutePath, source, {\n lang: absolutePath.endsWith('.tsx') ? 'tsx' : 'ts',\n sourceType: 'module'\n });\n\n if (parsed.errors.length > 0) {\n diagnostics.push({\n level: 'error',\n code: 'SCANNER_FILE_ERROR',\n message: `Failed to parse ${absolutePath}: ${parsed.errors[0]?.message ?? 'unknown parser error'}`,\n filePath: path.relative(config.rootDir, absolutePath)\n });\n continue;\n }\n\n const program = parsed.program;\n const variableInitMap = collectVariableInitializers(program);\n const parsedFile: ParsedFile = {\n absolutePath,\n relativePath: path.relative(config.rootDir, absolutePath),\n program,\n variableInitMap,\n sdkVariables: getSdkVariableNames(program, variableInitMap),\n imports: collectImports(program, absolutePath)\n };\n parsedFiles.push(parsedFile);\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 const sdkExportRefs = collectExportedSdkRefs(parsedFiles);\n\n for (const parsedFile of parsedFiles) {\n discoverDefinitions(parsedFile, config.rootDir, durableObjects, queues, declarations, diagnostics, sdkExportRefs);\n }\n\n const durableRegistrations: ModernDiscoveredDurableRegistration[] = [];\n const queueConsumers: ModernDiscoveredQueueConsumer[] = [];\n\n for (const parsedFile of parsedFiles) {\n discoverRegistrations(parsedFile, config.rootDir, declarations, durableRegistrations, queueConsumers, diagnostics);\n }\n\n addModernConflicts(durableObjects, durableRegistrations, queues, queueConsumers, diagnostics);\n\n return {\n hasModernSurface:\n durableObjects.length > 0 ||\n durableRegistrations.length > 0 ||\n queues.length > 0 ||\n queueConsumers.length > 0,\n durableObjects,\n durableRegistrations,\n queues,\n queueConsumers,\n diagnostics\n };\n}\n\nfunction discoverDefinitions(\n parsedFile: ParsedFile,\n rootDir: string,\n durableObjects: ModernDiscoveredDurableObject[],\n queues: ModernDiscoveredQueue[],\n declarations: Map<string, DeclarationRef>,\n diagnostics: DiscoveryDiagnostic[],\n sdkExportRefs: Set<string>\n): void {\n for (const statement of parsedFile.program.body) {\n if (statement.type !== 'ExportNamedDeclaration' || !statement.declaration || statement.declaration.type !== 'VariableDeclaration') {\n continue;\n }\n\n for (const declaration of statement.declaration.declarations) {\n const exportName = getBindingName(declaration.id);\n if (!exportName || !declaration.init) {\n continue;\n }\n\n const call = resolveCallExpressionFromExpression(declaration.init, parsedFile.variableInitMap);\n if (!call) {\n continue;\n }\n\n const chain = getMemberChain(call.callee);\n if (!chain || chain.length !== 2 || !isSdkVariableReference(parsedFile, chain[0], sdkExportRefs)) {\n continue;\n }\n\n if (chain[1] === 'defineDurableObject') {\n const firstArg = call.arguments[0];\n if (!firstArg || firstArg.type !== 'ObjectExpression') {\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Durable object declaration ${exportName} must use a literal object config.`,\n filePath: parsedFile.relativePath\n });\n continue;\n }\n\n const objectName = readStringProperty(firstArg, 'name', diagnostics, parsedFile.absolutePath, rootDir) ?? exportName;\n const description = readStringProperty(firstArg, 'description', diagnostics, parsedFile.absolutePath, rootDir);\n const version = readNumberProperty(firstArg, 'version', diagnostics, parsedFile.absolutePath, rootDir);\n const discovered: ModernDiscoveredDurableObject = {\n id: `${parsedFile.absolutePath}#${exportName}`,\n exportName,\n filePath: parsedFile.relativePath,\n absoluteFilePath: parsedFile.absolutePath,\n description,\n objectName,\n bindingName: deriveDurableBindingName(objectName),\n className: objectName,\n version\n };\n durableObjects.push(discovered);\n declarations.set(discovered.id, { kind: 'durable', value: discovered });\n continue;\n }\n\n if (chain[1] === 'defineQueue' || chain[1] === 'defineQueues') {\n const firstArg = call.arguments[0];\n if (!firstArg || firstArg.type !== 'ObjectExpression') {\n diagnostics.push({\n level: 'warning',\n code: 'NON_STATIC_CONFIG',\n message: `Queue declaration ${exportName} must use a literal object config.`,\n filePath: parsedFile.relativePath\n });\n continue;\n }\n\n const queueName = deriveQueueName(exportName);\n const discovered: ModernDiscoveredQueue = {\n id: `${parsedFile.absolutePath}#${exportName}`,\n exportName,\n filePath: parsedFile.relativePath,\n absoluteFilePath: parsedFile.absolutePath,\n description: readStringProperty(firstArg, 'description', diagnostics, parsedFile.absolutePath, rootDir),\n kind: chain[1] === 'defineQueues' ? 'multi' : 'single',\n queueName,\n bindingName: deriveBindingName(queueName),\n config: extractModernQueueConfig(firstArg, chain[1] === 'defineQueues', diagnostics, parsedFile.absolutePath, rootDir),\n jobNames: chain[1] === 'defineQueues' ? readQueueJobNames(firstArg) : []\n };\n queues.push(discovered);\n declarations.set(discovered.id, { kind: 'queue', value: discovered });\n }\n }\n }\n}\n\nfunction collectExportedSdkRefs(parsedFiles: ParsedFile[]): Set<string> {\n const refs = new Set<string>();\n\n for (const parsedFile of parsedFiles) {\n for (const statement of parsedFile.program.body) {\n if (statement.type === 'ExportNamedDeclaration') {\n if (statement.declaration?.type === 'VariableDeclaration') {\n for (const declaration of statement.declaration.declarations) {\n const name = getBindingName(declaration.id);\n if (name && parsedFile.sdkVariables.has(name)) {\n refs.add(`${parsedFile.absolutePath}#${name}`);\n }\n }\n }\n\n for (const specifier of statement.specifiers) {\n if (specifier.type !== 'ExportSpecifier' || specifier.local.type !== 'Identifier') {\n continue;\n }\n\n if (!parsedFile.sdkVariables.has(specifier.local.name)) {\n continue;\n }\n\n const exportName = getModuleExportName(specifier.exported) ?? specifier.local.name;\n refs.add(`${parsedFile.absolutePath}#${exportName}`);\n }\n }\n }\n }\n\n return refs;\n}\n\nfunction isSdkVariableReference(parsedFile: ParsedFile, localName: string, sdkExportRefs: Set<string>): boolean {\n if (parsedFile.sdkVariables.has(localName)) {\n return true;\n }\n\n const imported = parsedFile.imports.get(localName);\n if (!imported) {\n return false;\n }\n\n return sdkExportRefs.has(`${imported.absoluteFilePath}#${imported.exportName}`);\n}\n\nfunction discoverRegistrations(\n parsedFile: ParsedFile,\n rootDir: string,\n declarations: Map<string, DeclarationRef>,\n durableRegistrations: ModernDiscoveredDurableRegistration[],\n queueConsumers: ModernDiscoveredQueueConsumer[],\n diagnostics: DiscoveryDiagnostic[]\n): void {\n const localDeclarations = buildLocalDeclarationLookup(parsedFile, declarations);\n\n for (const statement of parsedFile.program.body) {\n if (statement.type !== 'ExportNamedDeclaration' || !statement.declaration || statement.declaration.type !== 'VariableDeclaration') {\n continue;\n }\n\n for (const declaration of statement.declaration.declarations) {\n const exportName = getBindingName(declaration.id);\n if (!exportName || !declaration.init) {\n continue;\n }\n\n const call = resolveCallExpressionFromExpression(declaration.init, parsedFile.variableInitMap);\n if (!call) {\n continue;\n }\n\n const chain = getMemberChain(call.callee);\n if (!chain || chain.length < 2) {\n continue;\n }\n\n const owner = localDeclarations.get(chain[0]);\n if (!owner) {\n continue;\n }\n\n if (owner.kind === 'durable') {\n const hook = chain[1];\n if (!['fn', 'internal', 'fetch', 'alarm', 'init', 'websocket'].includes(hook)) {\n continue;\n }\n\n durableRegistrations.push({\n id: `${parsedFile.absolutePath}#${exportName}`,\n exportName,\n filePath: parsedFile.relativePath,\n absoluteFilePath: parsedFile.absolutePath,\n description: readRegistrationDescription(getFirstExpressionArgument(call), diagnostics, parsedFile.absolutePath, rootDir),\n ownerId: owner.value.id,\n ownerExportName: owner.value.exportName,\n kind: hook as ModernDiscoveredDurableRegistration['kind']\n });\n continue;\n }\n\n if (owner.kind !== 'queue') {\n continue;\n }\n\n if (chain.length === 2 && (chain[1] === 'message' || chain[1] === 'batch')) {\n queueConsumers.push({\n id: `${parsedFile.absolutePath}#${exportName}`,\n exportName,\n filePath: parsedFile.relativePath,\n absoluteFilePath: parsedFile.absolutePath,\n description: readRegistrationDescription(getFirstExpressionArgument(call), diagnostics, parsedFile.absolutePath, rootDir),\n ownerId: owner.value.id,\n ownerExportName: owner.value.exportName,\n kind: chain[1]\n });\n continue;\n }\n\n if (chain.length === 3 && owner.value.kind === 'multi' && chain[2] === 'message') {\n queueConsumers.push({\n id: `${parsedFile.absolutePath}#${exportName}`,\n exportName,\n filePath: parsedFile.relativePath,\n absoluteFilePath: parsedFile.absolutePath,\n description: readRegistrationDescription(getFirstExpressionArgument(call), diagnostics, parsedFile.absolutePath, rootDir),\n ownerId: owner.value.id,\n ownerExportName: owner.value.exportName,\n kind: 'job-message',\n jobName: chain[1]\n });\n }\n }\n }\n}\n\nfunction buildLocalDeclarationLookup(parsedFile: ParsedFile, declarations: Map<string, DeclarationRef>) {\n const map = new Map<string, DeclarationRef>();\n\n for (const declaration of declarations.values()) {\n if (declaration.value.absoluteFilePath === parsedFile.absolutePath) {\n map.set(declaration.value.exportName, declaration);\n }\n }\n\n for (const [localName, imported] of parsedFile.imports.entries()) {\n const ref = declarations.get(`${imported.absoluteFilePath}#${imported.exportName}`);\n if (ref) {\n map.set(localName, ref);\n }\n }\n\n return map;\n}\n\nfunction addModernConflicts(\n durableObjects: ModernDiscoveredDurableObject[],\n durableRegistrations: ModernDiscoveredDurableRegistration[],\n queues: ModernDiscoveredQueue[],\n queueConsumers: ModernDiscoveredQueueConsumer[],\n diagnostics: DiscoveryDiagnostic[]\n): void {\n const objectNameMap = new Map<string, string[]>();\n const objectBindingMap = new Map<string, string[]>();\n\n for (const durableObject of durableObjects) {\n objectNameMap.set(durableObject.objectName, [...(objectNameMap.get(durableObject.objectName) ?? []), durableObject.filePath]);\n objectBindingMap.set(\n durableObject.bindingName,\n [...(objectBindingMap.get(durableObject.bindingName) ?? []), durableObject.filePath]\n );\n }\n\n for (const [name, files] of objectNameMap.entries()) {\n if (files.length > 1) {\n diagnostics.push({\n level: 'error',\n code: 'DURABLE_OBJECT_NAME_CONFLICT',\n message: `Durable object name conflict for ${name}: ${files.join(', ')}`\n });\n }\n }\n\n for (const [name, files] of objectBindingMap.entries()) {\n if (files.length > 1) {\n diagnostics.push({\n level: 'error',\n code: 'DURABLE_OBJECT_BINDING_CONFLICT',\n message: `Durable object binding conflict for ${name}: ${files.join(', ')}`\n });\n }\n }\n\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(queue.bindingName, [...(bindingNameMap.get(queue.bindingName) ?? []), queue.filePath]);\n }\n\n for (const [queueName, files] of queueNameMap.entries()) {\n if (files.length > 1) {\n diagnostics.push({\n level: 'error',\n code: 'QUEUE_NAME_CONFLICT',\n message: `Queue name conflict for ${queueName}: ${files.join(', ')}`\n });\n }\n }\n\n for (const [bindingName, files] of bindingNameMap.entries()) {\n if (files.length > 1) {\n diagnostics.push({\n level: 'error',\n code: 'BINDING_NAME_CONFLICT',\n message: `Binding name conflict for ${bindingName}: ${files.join(', ')}`\n });\n }\n }\n\n const durableHookCounts = new Map<string, number>();\n for (const registration of durableRegistrations) {\n if (registration.kind === 'fn' || registration.kind === 'internal') {\n continue;\n }\n const key = `${registration.ownerId}:${registration.kind}`;\n const next = (durableHookCounts.get(key) ?? 0) + 1;\n durableHookCounts.set(key, next);\n if (next > 1) {\n diagnostics.push({\n level: 'error',\n code: 'DURABLE_OBJECT_HOOK_CONFLICT',\n message: `Durable object ${registration.ownerExportName} has multiple ${registration.kind} registrations.`\n });\n }\n }\n\n const queueConsumerCounts = new Map<string, number>();\n for (const consumer of queueConsumers) {\n const key = consumer.kind === 'job-message' ? `${consumer.ownerId}:${consumer.jobName}` : consumer.ownerId;\n const next = (queueConsumerCounts.get(key) ?? 0) + 1;\n queueConsumerCounts.set(key, next);\n if (next > 1) {\n diagnostics.push({\n level: 'error',\n code: 'QUEUE_CONSUMER_CONFLICT',\n message:\n consumer.kind === 'job-message'\n ? `Queue job ${consumer.ownerExportName}.${consumer.jobName} has multiple consumer registrations.`\n : `Queue ${consumer.ownerExportName} has multiple consumer registrations.`\n });\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 for (const entry of fs.readdirSync(currentPath, { withFileTypes: true })) {\n if (entry.name.startsWith('.git') || 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 files.push(absolutePath);\n }\n }\n }\n\n walk(rootDir);\n return files;\n}\n\nfunction collectVariableInitializers(program: Program): Map<string, Expression> {\n const map = new Map<string, Expression>();\n\n for (const statement of program.body) {\n if (statement.type === 'VariableDeclaration') {\n collectVariableDeclarationInitializers(statement, map);\n continue;\n }\n\n if (statement.type === 'ExportNamedDeclaration' && statement.declaration?.type === 'VariableDeclaration') {\n collectVariableDeclarationInitializers(statement.declaration, map);\n }\n }\n\n return map;\n}\n\nfunction collectVariableDeclarationInitializers(\n declaration: VariableDeclaration,\n target: Map<string, Expression>\n): void {\n for (const variable of declaration.declarations) {\n const name = getBindingName(variable.id);\n if (!name || !variable.init) {\n continue;\n }\n\n target.set(name, variable.init);\n }\n}\n\nfunction getSdkVariableNames(program: Program, variableInitMap: Map<string, Expression>): Set<string> {\n const createSdkNames = new Set<string>();\n const sdkVariables = new Set<string>();\n\n for (const statement of program.body) {\n if (statement.type !== 'ImportDeclaration' || statement.source.value !== SDK_IMPORT) {\n continue;\n }\n\n for (const specifier of statement.specifiers) {\n if (specifier.type !== 'ImportSpecifier') {\n continue;\n }\n if (getModuleExportName(specifier.imported) === 'createSDK') {\n createSdkNames.add(specifier.local.name);\n }\n }\n }\n\n for (const [name, initializer] of variableInitMap.entries()) {\n const call = resolveCallExpressionFromExpression(initializer, variableInitMap);\n if (!call) {\n continue;\n }\n\n const callee = unwrapExpression(call.callee);\n if (callee.type === 'Identifier' && createSdkNames.has(callee.name)) {\n sdkVariables.add(name);\n }\n }\n\n return sdkVariables;\n}\n\nfunction collectImports(program: Program, absolutePath: string) {\n const imports = new Map<string, { absoluteFilePath: string; exportName: string }>();\n\n for (const statement of program.body) {\n if (statement.type !== 'ImportDeclaration') {\n continue;\n }\n collectImportDeclaration(imports, statement, absolutePath);\n }\n\n return imports;\n}\n\nfunction collectImportDeclaration(\n imports: Map<string, { absoluteFilePath: string; exportName: string }>,\n statement: ImportDeclaration,\n absolutePath: string\n) {\n if (!statement.source.value.startsWith('.')) {\n return;\n }\n\n const resolved = resolveImportPath(absolutePath, statement.source.value);\n if (!resolved) {\n return;\n }\n\n for (const specifier of statement.specifiers) {\n if (specifier.type !== 'ImportSpecifier') {\n continue;\n }\n\n const exportName = getModuleExportName(specifier.imported);\n if (!exportName) {\n continue;\n }\n\n imports.set(specifier.local.name, {\n absoluteFilePath: resolved,\n exportName\n });\n }\n}\n\nfunction resolveImportPath(fromFile: string, importPath: string): string | undefined {\n const basePath = path.resolve(path.dirname(fromFile), importPath);\n const candidates = [\n basePath,\n `${basePath}.ts`,\n `${basePath}.tsx`,\n path.join(basePath, 'index.ts'),\n path.join(basePath, 'index.tsx')\n ];\n\n return candidates.find((candidate) => fs.existsSync(candidate));\n}\n\nfunction resolveCallExpressionFromExpression(\n expression: Expression,\n variableInitMap: Map<string, Expression>,\n visited = new Set<string>()\n): CallExpression | undefined {\n const unwrapped = unwrapExpression(expression);\n\n if (unwrapped.type === 'CallExpression') {\n return unwrapped;\n }\n\n if (unwrapped.type !== 'Identifier') {\n return undefined;\n }\n\n if (visited.has(unwrapped.name)) {\n return undefined;\n }\n\n const initializer = variableInitMap.get(unwrapped.name);\n if (!initializer) {\n return undefined;\n }\n\n visited.add(unwrapped.name);\n return resolveCallExpressionFromExpression(initializer, variableInitMap, visited);\n}\n\nfunction unwrapExpression(expression: Expression): Expression {\n if (expression.type === 'ParenthesizedExpression') {\n return unwrapExpression(expression.expression);\n }\n return expression;\n}\n\nfunction getMemberChain(expression: Expression): string[] | undefined {\n const unwrapped = unwrapExpression(expression);\n if (unwrapped.type === 'Identifier') {\n return [unwrapped.name];\n }\n\n if (unwrapped.type !== 'MemberExpression' || unwrapped.computed) {\n return undefined;\n }\n\n const objectChain = getMemberChain(unwrapped.object);\n if (!objectChain || unwrapped.property.type !== 'Identifier') {\n return undefined;\n }\n\n return [...objectChain, unwrapped.property.name];\n}\n\nfunction getBindingName(binding: BindingPattern): string | undefined {\n return binding.type === 'Identifier' ? binding.name : undefined;\n}\n\nfunction getModuleExportName(node: { type: string; name?: string; value?: unknown }): string | undefined {\n if (node.type === 'Identifier') {\n return node.name;\n }\n if (node.type === 'Literal' && typeof node.value === 'string') {\n return node.value;\n }\n return undefined;\n}\n\nfunction extractModernQueueConfig(\n objectLiteral: ObjectExpression,\n isMultiJob: boolean,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): ExtractedQueueConfig {\n const consumer = readConsumerConfig(objectLiteral, diagnostics, absolutePath, rootDir);\n const batchObject = getObjectLiteralProperty(objectLiteral, 'batch');\n\n return {\n retry: readNumberProperty(objectLiteral, 'retry', diagnostics, absolutePath, rootDir),\n retryDelay: readNumberOrStringProperty(objectLiteral, 'retryDelay', diagnostics, absolutePath, rootDir),\n deadLetter: readStringProperty(objectLiteral, 'deadLetter', diagnostics, absolutePath, rootDir),\n deliveryDelay: readNumberOrStringProperty(objectLiteral, 'deliveryDelay', diagnostics, absolutePath, rootDir),\n batchMaxSize: batchObject\n ? readNumberProperty(batchObject, 'maxSize', diagnostics, absolutePath, rootDir)\n : undefined,\n batchTimeout: batchObject\n ? readNumberOrStringProperty(batchObject, 'timeout', diagnostics, absolutePath, rootDir)\n : undefined,\n maxConcurrency: batchObject\n ? readNumberProperty(batchObject, 'maxConcurrency', diagnostics, absolutePath, rootDir)\n : undefined,\n visibilityTimeout:\n consumer?.visibilityTimeout ??\n readNumberOrStringProperty(objectLiteral, 'visibilityTimeout', diagnostics, absolutePath, rootDir),\n consumerType: consumer?.type,\n hasHandler: false,\n hasBatchHandler: false,\n isMultiJob\n };\n}\n\nfunction readQueueJobNames(objectLiteral: ObjectExpression): string[] {\n const names: string[] = [];\n for (const property of objectLiteral.properties) {\n if (property.type !== 'Property') {\n continue;\n }\n const propertyName = getPropertyName(property);\n if (!propertyName || RESERVED_KEYS.has(propertyName)) {\n continue;\n }\n names.push(propertyName);\n }\n return names;\n}\n\nfunction readRegistrationDescription(\n firstArg: Expression | undefined,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): string | undefined {\n if (!firstArg || firstArg.type !== 'ObjectExpression') {\n return undefined;\n }\n\n return readStringProperty(firstArg, 'description', diagnostics, absolutePath, rootDir);\n}\n\nfunction getFirstExpressionArgument(call: CallExpression): Expression | undefined {\n const value = call.arguments[0];\n return value && value.type !== 'SpreadElement' ? value : undefined;\n}\n\nfunction readConsumerConfig(\n objectLiteral: ObjectExpression,\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 return undefined;\n }\n\n return {\n type: typeValue,\n visibilityTimeout: readNumberOrStringProperty(consumerObject, 'visibilityTimeout', diagnostics, absolutePath, rootDir)\n };\n}\n\nfunction getObjectLiteralProperty(objectLiteral: ObjectExpression, name: string): ObjectExpression | undefined {\n const initializer = getPropertyInitializer(objectLiteral, name);\n if (!initializer || initializer.type !== 'ObjectExpression') {\n return undefined;\n }\n return initializer;\n}\n\nfunction getPropertyInitializer(objectLiteral: ObjectExpression, name: string): Expression | undefined {\n for (const property of objectLiteral.properties) {\n if (property.type === 'Property' && getPropertyName(property) === name) {\n return unwrapExpression(property.value);\n }\n }\n return undefined;\n}\n\nfunction getPropertyName(property: ObjectProperty): string | undefined {\n if (property.computed) {\n return undefined;\n }\n\n if (property.key.type === 'Identifier') {\n return property.key.name;\n }\n\n if (property.key.type === 'Literal' && typeof property.key.value === 'string') {\n return property.key.value;\n }\n\n return undefined;\n}\n\nfunction readStringProperty(\n objectLiteral: ObjectExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): string | undefined {\n const initializer = getPropertyInitializer(objectLiteral, name);\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.type !== 'Literal' || typeof initializer.value !== 'string') {\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 readRawStringLiteral(initializer.raw, initializer.value);\n}\n\nfunction readNumberProperty(\n objectLiteral: ObjectExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): number | undefined {\n const initializer = getPropertyInitializer(objectLiteral, name);\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.type !== 'Literal' || typeof initializer.value !== 'number') {\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 initializer.value;\n}\n\nfunction readNumberOrStringProperty(\n objectLiteral: ObjectExpression,\n name: string,\n diagnostics: DiscoveryDiagnostic[],\n absolutePath: string,\n rootDir: string\n): number | string | undefined {\n const initializer = getPropertyInitializer(objectLiteral, name);\n if (!initializer) {\n return undefined;\n }\n\n if (initializer.type === 'Literal' && typeof initializer.value === 'number') {\n return initializer.value;\n }\n\n if (initializer.type === 'Literal' && typeof initializer.value === 'string') {\n return readRawStringLiteral(initializer.raw, initializer.value);\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 readRawStringLiteral(raw: string | null, fallback: string): string {\n if (!raw || raw.length < 2) {\n return fallback;\n }\n\n const quote = raw[0];\n if ((quote !== '\\'' && quote !== '\"' && quote !== '`') || raw[raw.length - 1] !== quote) {\n return fallback;\n }\n\n return raw.slice(1, -1);\n}\n\nfunction deriveDurableBindingName(objectName: string): string {\n return `DO_${objectName.replace(/[^a-zA-Z0-9]/g, '_').replace(/_+/g, '_').toUpperCase()}`;\n}\n\nfunction toErrorMessage(value: unknown): string {\n return value instanceof Error ? value.message : String(value);\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 MagicString from 'magic-string';\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 magic = new MagicString(content);\n magic.overwrite(\n startIndex + START_MARKER.length,\n endIndex,\n `\\n${generatedSection}\\n`\n );\n content = magic.toString();\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 fs from 'node:fs';\nimport path from 'node:path';\nimport MagicString from 'magic-string';\nimport { applyEdits, modify, parse } from 'jsonc-parser';\nimport type { ModernDiscoveryResult } from '../modern-types.js';\nimport type { CliConfig } from '../types.js';\nimport { parseDurationMsStrict, parseDurationSecondsStrict } from './duration.js';\n\nconst START_MARKER = '# --- better-cf:start ---';\nconst END_MARKER = '# --- better-cf:end ---';\n\ninterface ManagedMigrationState {\n version: number;\n knownClasses: string[];\n migrations: Array<{ tag: string; newSqliteClasses: string[] }>;\n}\n\nexport function patchModernWranglerConfig(config: CliConfig, discovery: ModernDiscoveryResult): string {\n const existing = detectWranglerConfig(config.rootDir);\n const migrations = updateManagedMigrationState(config.rootDir, discovery);\n\n if (existing && (existing.endsWith('.jsonc') || existing.endsWith('.json'))) {\n patchModernJsoncConfig(existing, discovery, migrations);\n return existing;\n }\n\n const target = existing && existing.endsWith('.toml') ? existing : ensureTomlExists(config.rootDir);\n patchModernTomlConfig(target, discovery, migrations);\n return target;\n}\n\nfunction patchModernTomlConfig(\n filePath: string,\n discovery: ModernDiscoveryResult,\n migrations: Array<{ tag: string; newSqliteClasses: string[] }>\n): void {\n let content = fs.readFileSync(filePath, 'utf8');\n content = ensureMainEntry(content);\n\n const generatedSection = renderModernTomlSection(discovery, migrations);\n const startIndex = content.indexOf(START_MARKER);\n const endIndex = content.indexOf(END_MARKER);\n\n if (startIndex >= 0 && endIndex > startIndex) {\n const magic = new MagicString(content);\n magic.overwrite(startIndex + START_MARKER.length, endIndex, `\\n${generatedSection}\\n`);\n content = magic.toString();\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\nfunction patchModernJsoncConfig(\n filePath: string,\n discovery: ModernDiscoveryResult,\n migrations: Array<{ tag: string; newSqliteClasses: string[] }>\n): 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 queues = buildJsoncQueues(discovery);\n const durableObjects = {\n bindings: discovery.durableObjects.map((durableObject) => ({\n name: durableObject.bindingName,\n class_name: durableObject.className\n }))\n };\n\n text = applyEdits(\n text,\n modify(text, ['queues'], queues, {\n formattingOptions: { insertSpaces: true, tabSize: 2 }\n })\n );\n\n text = applyEdits(\n text,\n modify(text, ['durable_objects'], durableObjects, {\n formattingOptions: { insertSpaces: true, tabSize: 2 }\n })\n );\n\n text = applyEdits(\n text,\n modify(text, ['migrations'], migrations.map((migration) => ({\n tag: migration.tag,\n new_sqlite_classes: migration.newSqliteClasses\n })), {\n formattingOptions: { insertSpaces: true, tabSize: 2 }\n })\n );\n\n fs.writeFileSync(filePath, text, 'utf8');\n}\n\nfunction renderModernTomlSection(\n discovery: ModernDiscoveryResult,\n migrations: Array<{ tag: string; newSqliteClasses: string[] }>\n): string {\n const lines: string[] = [];\n const queueConsumers = new Set(\n discovery.queueConsumers\n .filter((consumer) => consumer.kind !== 'job-message')\n .map((consumer) => consumer.ownerId)\n );\n const multiQueueConsumers = new Set(\n discovery.queueConsumers.filter((consumer) => consumer.kind === 'job-message').map((consumer) => consumer.ownerId)\n );\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 if (queue.config.deliveryDelay !== undefined) {\n lines.push(\n `delivery_delay = ${parseDurationSecondsStrict(queue.config.deliveryDelay, `${queue.queueName}.deliveryDelay`)}`\n );\n }\n lines.push('');\n\n if (\n queue.config.consumerType === 'http_pull' ||\n queueConsumers.has(queue.id) ||\n multiQueueConsumers.has(queue.id)\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 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 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 if (queue.config.deadLetter !== undefined) {\n lines.push(`dead_letter_queue = ${toTomlString(queue.config.deadLetter)}`);\n }\n if (queue.config.retryDelay !== undefined) {\n lines.push(\n `retry_delay = ${parseDurationSecondsStrict(queue.config.retryDelay, `${queue.queueName}.retryDelay`)}`\n );\n }\n lines.push('');\n }\n }\n\n for (const durableObject of discovery.durableObjects) {\n lines.push('[[durable_objects.bindings]]');\n lines.push(`name = ${toTomlString(durableObject.bindingName)}`);\n lines.push(`class_name = ${toTomlString(durableObject.className)}`);\n lines.push('');\n }\n\n for (const migration of migrations) {\n lines.push('[[migrations]]');\n lines.push(`tag = ${toTomlString(migration.tag)}`);\n lines.push(`new_sqlite_classes = [${migration.newSqliteClasses.map(toTomlString).join(', ')}]`);\n lines.push('');\n }\n\n return lines.join('\\n').trimEnd();\n}\n\nfunction buildJsoncQueues(discovery: ModernDiscoveryResult) {\n const queueConsumers = new Set(\n discovery.queueConsumers\n .filter((consumer) => consumer.kind !== 'job-message')\n .map((consumer) => consumer.ownerId)\n );\n const multiQueueConsumers = new Set(\n discovery.queueConsumers.filter((consumer) => consumer.kind === 'job-message').map((consumer) => consumer.ownerId)\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\n .filter(\n (queue) =>\n queue.config.consumerType === 'http_pull' || queueConsumers.has(queue.id) || multiQueueConsumers.has(queue.id)\n )\n .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 ? { max_concurrency: queue.config.maxConcurrency } : {})\n };\n });\n\n return {\n producers,\n consumers,\n better_cf_managed: true\n };\n}\n\nfunction updateManagedMigrationState(\n rootDir: string,\n discovery: ModernDiscoveryResult\n): Array<{ tag: string; newSqliteClasses: string[] }> {\n const outDir = path.join(rootDir, '.better-cf');\n fs.mkdirSync(outDir, { recursive: true });\n const statePath = path.join(outDir, 'durable-migrations.json');\n const classNames = discovery.durableObjects.map((durableObject) => durableObject.className);\n\n let state: ManagedMigrationState = {\n version: 0,\n knownClasses: [],\n migrations: []\n };\n\n if (fs.existsSync(statePath)) {\n try {\n state = JSON.parse(fs.readFileSync(statePath, 'utf8')) as ManagedMigrationState;\n } catch {\n state = {\n version: 0,\n knownClasses: [],\n migrations: []\n };\n }\n }\n\n state.migrations ??=\n state.version > 0 && state.knownClasses.length > 0\n ? [\n {\n tag: 'better-cf-v1',\n newSqliteClasses: state.knownClasses\n }\n ]\n : [];\n\n const newClasses = classNames.filter((className) => !state.knownClasses.includes(className));\n\n if (state.version === 0 && classNames.length > 0) {\n const migration = {\n tag: 'better-cf-v1',\n newSqliteClasses: classNames\n };\n state = {\n version: 1,\n knownClasses: classNames,\n migrations: [migration]\n };\n } else if (newClasses.length > 0) {\n const migration = {\n tag: `better-cf-v${state.version + 1}`,\n newSqliteClasses: newClasses\n };\n state = {\n version: state.version + 1,\n knownClasses: [...state.knownClasses, ...newClasses],\n migrations: [...state.migrations, migration]\n };\n }\n\n fs.writeFileSync(statePath, JSON.stringify(state, null, 2), 'utf8');\n return state.migrations;\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\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 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 fs.writeFileSync(\n filePath,\n `name = \"my-worker\"\\nmain = \".better-cf/entry.ts\"\\ncompatibility_date = \"${date}\"\\n\\n${START_MARKER}\\n${END_MARKER}\\n`,\n 'utf8'\n );\n }\n return filePath;\n}\n\nfunction 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 fs.writeFileSync(\n filePath,\n `{\\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 \"durable_objects\": {\\n \"bindings\": []\\n },\\n \"migrations\": []\\n}\\n`,\n 'utf8'\n );\n } else {\n const parsed = parse(fs.readFileSync(filePath, 'utf8')) as Record<string, unknown>;\n if (!parsed.queues) {\n patchModernJsoncConfig(\n filePath,\n {\n hasModernSurface: true,\n durableObjects: [],\n durableRegistrations: [],\n queues: [],\n queueConsumers: [],\n diagnostics: []\n },\n []\n );\n }\n }\n return filePath;\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 { generateCode } from '../codegen.js';\nimport { loadCliConfig } from '../config.js';\nimport { scanQueues } from '../discovery/scanner.js';\nimport { generateEnvTypes } from '../env-types.js';\nimport { generateModernCode } from '../modern-codegen.js';\nimport { generateModernEnvTypes } from '../modern-env-types.js';\nimport { scanModernProject } from '../discovery/modern-scanner.js';\nimport { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { patchWranglerConfig } from '../wrangler/index.js';\nimport { patchModernWranglerConfig } from '../wrangler/modern.js';\nimport type { GenerateResult } from '../types.js';\n\nexport async function runGenerate(rootDir = process.cwd()): Promise<GenerateResult> {\n const config = loadCliConfig(rootDir);\n const modernDiscovery = await scanModernProject(config);\n\n if (modernDiscovery.hasModernSurface) {\n for (const diagnostic of modernDiscovery.diagnostics) {\n logger.diagnostic(diagnostic);\n }\n\n const hasErrors = modernDiscovery.diagnostics.some((diag) => diag.level === 'error');\n if (hasErrors) {\n throw new CliError({\n code: 'QUEUE_DISCOVERY_FAILED',\n summary: 'Modern better-cf discovery failed due to configuration errors.',\n hint: 'Fix the diagnostics above and re-run `better-cf generate`.'\n });\n }\n\n const generated = generateModernCode(modernDiscovery, config);\n const wranglerConfigPath = patchModernWranglerConfig(config, modernDiscovery);\n const envTypeResult = await generateModernEnvTypes(config);\n\n return {\n discovery: {\n queues: [],\n diagnostics: modernDiscovery.diagnostics\n },\n modernDiscovery,\n generatedEntryPath: generated.entryPath,\n generatedTypesPath: generated.typesPath,\n wranglerConfigPath,\n autoEnvPath: envTypeResult.autoEnvPath\n };\n }\n\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 if (result.modernDiscovery) {\n logger.success(\n `Generated ${result.modernDiscovery.queues.length} queue(s) and ${result.modernDiscovery.durableObjects.length} durable object(s)`\n );\n } else {\n logger.success(`Generated ${result.discovery.queues.length} queue(s)`);\n }\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 { 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: ReturnType<typeof spawnCommand> | 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 void wranglerProcess.then((output) => {\n if (output.exitCode !== 0 && output.exitCode !== undefined) {\n logger.error(`wrangler dev exited with code ${output.exitCode}`);\n }\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 { z } from 'zod';\n\nexport const registryFileSchema = z.object({\n path: z.string().min(1),\n content: z.string(),\n executable: z.boolean().optional()\n});\n\nexport const registryItemSchema = z.object({\n id: z.string().min(1),\n description: z.string().min(1),\n files: z.array(registryFileSchema).min(1),\n dependencies: z.array(z.string().min(1)).optional(),\n devDependencies: z.array(z.string().min(1)).optional()\n});\n\nexport const registryManifestSchema = z.object({\n items: z.array(registryItemSchema)\n});\n\nexport const registryCacheRecordSchema = z.object({\n url: z.string().min(1),\n fetchedAt: z.number().int().nonnegative(),\n items: z.array(registryItemSchema)\n});\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { CliError } from '../errors.js';\nimport { registryCacheRecordSchema } from './schema.js';\nimport type { RegistryCacheRecord } from './types.js';\n\ninterface CacheAdapter<T> {\n read(): Promise<T | undefined>;\n write(value: T): Promise<void>;\n clear(): Promise<void>;\n}\n\ninterface CacheOptions<T> {\n cachePath: string;\n parse: (value: unknown) => T;\n}\n\nexport function createCache<T>(options: CacheOptions<T>): CacheAdapter<T> {\n return {\n async read(): Promise<T | undefined> {\n try {\n const raw = await fs.readFile(options.cachePath, 'utf8');\n return options.parse(JSON.parse(raw));\n } catch (error) {\n if (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n (error as { code?: string }).code === 'ENOENT'\n ) {\n return undefined;\n }\n\n throw new CliError({\n code: 'REGISTRY_CACHE_READ_FAILED',\n summary: 'Failed to read registry cache.',\n details: error instanceof Error ? error.message : String(error),\n file: options.cachePath\n });\n }\n },\n\n async write(value: T): Promise<void> {\n try {\n await fs.mkdir(path.dirname(options.cachePath), { recursive: true });\n await fs.writeFile(options.cachePath, `${JSON.stringify(value, null, 2)}\\n`, 'utf8');\n } catch (error) {\n throw new CliError({\n code: 'REGISTRY_CACHE_WRITE_FAILED',\n summary: 'Failed to write registry cache.',\n details: error instanceof Error ? error.message : String(error),\n file: options.cachePath\n });\n }\n },\n\n async clear(): Promise<void> {\n try {\n await fs.rm(options.cachePath, { force: true });\n } catch (error) {\n throw new CliError({\n code: 'REGISTRY_CACHE_CLEAR_FAILED',\n summary: 'Failed to clear registry cache.',\n details: error instanceof Error ? error.message : String(error),\n file: options.cachePath\n });\n }\n }\n };\n}\n\nexport function createRegistryCache(cachePath: string): CacheAdapter<RegistryCacheRecord> {\n return createCache({\n cachePath,\n parse: (value) => registryCacheRecordSchema.parse(value)\n });\n}\n","import type { RegistryManifest } from './types.js';\n\nexport const DEFAULT_REGISTRY: RegistryManifest = {\n items: [\n {\n id: 'queue/basic',\n description: 'Add a basic queue declaration under src/queues/signup.ts.',\n files: [\n {\n path: 'src/queues/signup.ts',\n content: `import { z } from 'zod';\nimport { defineQueue } from '../../better-cf.config';\n\nexport const signupQueue = defineQueue({\n args: z.object({ email: z.string().email() }),\n handler: async () => {}\n});\n`\n }\n ],\n dependencies: ['zod']\n },\n {\n id: 'worker/http-health',\n description: 'Add a fetch health endpoint for module worker projects.',\n files: [\n {\n path: 'worker.ts',\n content: `import { defineWorker } from './better-cf.config';\n\nexport default defineWorker({\n async fetch() {\n return new Response(JSON.stringify({ ok: true }), {\n headers: { 'content-type': 'application/json' }\n });\n }\n});\n`\n }\n ]\n }\n ]\n};\n","import path from 'node:path';\nimport { CliError } from '../errors.js';\nimport type { CliConfig } from '../types.js';\nimport { createRegistryCache } from './cache.js';\nimport { DEFAULT_REGISTRY } from './default-registry.js';\nimport { registryManifestSchema } from './schema.js';\nimport type { RegistryItem, ResolvedRegistry } from './types.js';\n\ninterface RegistryLoadOptions {\n refresh?: boolean;\n}\n\nexport async function loadRegistry(\n config: CliConfig,\n options: RegistryLoadOptions = {}\n): Promise<ResolvedRegistry> {\n const localItems = DEFAULT_REGISTRY.items;\n const registryConfig = config.registry;\n const url = registryConfig?.url;\n\n if (!url) {\n return {\n items: localItems,\n source: 'local'\n };\n }\n\n const cachePath = resolveRegistryCachePath(config);\n const cache = createRegistryCache(cachePath);\n const ttlMs = resolveRegistryTtlMs(config);\n const now = Date.now();\n\n const cached = await cache.read();\n if (!options.refresh && cached && cached.url === url && now - cached.fetchedAt < ttlMs) {\n return {\n items: mergeRegistryItems(localItems, cached.items),\n source: 'cache'\n };\n }\n\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n\n const data = registryManifestSchema.parse(await response.json());\n await cache.write({\n url,\n fetchedAt: now,\n items: data.items\n });\n\n return {\n items: mergeRegistryItems(localItems, data.items),\n source: 'remote'\n };\n } catch (error) {\n if (cached && cached.url === url) {\n return {\n items: mergeRegistryItems(localItems, cached.items),\n source: 'cache'\n };\n }\n\n throw new CliError({\n code: 'REGISTRY_FETCH_FAILED',\n summary: `Failed to fetch remote registry from ${url}.`,\n details: error instanceof Error ? error.message : String(error),\n hint: 'Set betterCfConfig.registry.url to a valid JSON endpoint or remove it to use local registry only.'\n });\n }\n}\n\nexport async function clearRegistryCache(config: CliConfig): Promise<string> {\n const cachePath = resolveRegistryCachePath(config);\n const cache = createRegistryCache(cachePath);\n await cache.clear();\n return cachePath;\n}\n\nfunction resolveRegistryCachePath(config: CliConfig): string {\n const registryConfig = config.registry;\n const basePath = registryConfig?.cacheDir ?? '.better-cf/cache';\n return path.isAbsolute(basePath) ? path.join(basePath, 'registry.json') : path.join(config.rootDir, basePath, 'registry.json');\n}\n\nfunction resolveRegistryTtlMs(config: CliConfig): number {\n const ttlHours = config.registry?.cacheTtlHours ?? 24;\n return Math.max(1, ttlHours) * 60 * 60 * 1000;\n}\n\nfunction mergeRegistryItems(localItems: RegistryItem[], remoteItems: RegistryItem[]): RegistryItem[] {\n const merged = new Map<string, RegistryItem>();\n for (const item of localItems) {\n merged.set(item.id, item);\n }\n for (const item of remoteItems) {\n merged.set(item.id, item);\n }\n return [...merged.values()];\n}\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { CliError } from '../errors.js';\nimport type { RegistryItem } from './types.js';\n\nexport interface InstallRegistryItemResult {\n itemId: string;\n targetDir: string;\n files: string[];\n}\n\nexport async function installRegistryItem(\n item: RegistryItem,\n targetDir: string\n): Promise<InstallRegistryItemResult> {\n const written: string[] = [];\n\n for (const file of item.files) {\n const outputPath = path.resolve(targetDir, file.path);\n assertWithinTarget(targetDir, outputPath);\n\n await ensurePathDoesNotExist(outputPath);\n await fs.mkdir(path.dirname(outputPath), { recursive: true });\n await fs.writeFile(outputPath, file.content, 'utf8');\n\n if (file.executable) {\n await fs.chmod(outputPath, 0o755);\n }\n\n written.push(outputPath);\n }\n\n return {\n itemId: item.id,\n targetDir,\n files: written\n };\n}\n\nfunction assertWithinTarget(targetDir: string, outputPath: string): void {\n const normalizedTarget = path.resolve(targetDir);\n if (outputPath === normalizedTarget) {\n return;\n }\n\n if (!outputPath.startsWith(`${normalizedTarget}${path.sep}`)) {\n throw new CliError({\n code: 'REGISTRY_INVALID_TEMPLATE_PATH',\n summary: `Registry entry writes outside target directory: ${outputPath}.`,\n hint: 'Update the registry entry file paths to stay inside the target directory.'\n });\n }\n}\n\nasync function ensurePathDoesNotExist(filePath: string): Promise<void> {\n try {\n await fs.access(filePath);\n throw new CliError({\n code: 'REGISTRY_TARGET_EXISTS',\n summary: `Registry install would overwrite existing file: ${filePath}.`,\n hint: 'Move or remove the file before running registry add.'\n });\n } catch (error) {\n if (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n (error as { code?: string }).code === 'ENOENT'\n ) {\n return;\n }\n\n if (error instanceof CliError) {\n throw error;\n }\n\n throw new CliError({\n code: 'REGISTRY_TARGET_ACCESS_FAILED',\n summary: `Failed to access target file path: ${filePath}.`,\n details: error instanceof Error ? error.message : String(error)\n });\n }\n}\n","import path from 'node:path';\nimport { loadCliConfig } from '../config.js';\nimport { CliError } from '../errors.js';\nimport { logger } from '../logger.js';\nimport { loadRegistry, clearRegistryCache } from '../registry/client.js';\nimport { installRegistryItem } from '../registry/installer.js';\n\ninterface RegistryCommandOptions {\n refresh?: boolean;\n}\n\nexport async function registryListCommand(\n options: RegistryCommandOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n const config = loadCliConfig(rootDir);\n const registry = await loadRegistry(config, options);\n\n logger.section(`Registry entries (${registry.source})`);\n for (const item of registry.items) {\n logger.item(item.id, item.description);\n }\n}\n\nexport async function registryInfoCommand(\n id: string,\n options: RegistryCommandOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n const config = loadCliConfig(rootDir);\n const registry = await loadRegistry(config, options);\n const item = registry.items.find((entry) => entry.id === id);\n\n if (!item) {\n throw new CliError({\n code: 'REGISTRY_ENTRY_NOT_FOUND',\n summary: `Registry entry \"${id}\" was not found.`,\n hint: 'Run `better-cf registry list` to inspect available entry IDs.'\n });\n }\n\n logger.section(`Registry entry: ${item.id}`);\n logger.item('description', item.description);\n logger.item('files', String(item.files.length));\n if (item.dependencies?.length) {\n logger.item('dependencies', item.dependencies.join(', '));\n }\n if (item.devDependencies?.length) {\n logger.item('devDependencies', item.devDependencies.join(', '));\n }\n}\n\nexport async function registryAddCommand(\n id: string,\n maybeTarget: string | undefined,\n options: RegistryCommandOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n const config = loadCliConfig(rootDir);\n const registry = await loadRegistry(config, options);\n const item = registry.items.find((entry) => entry.id === id);\n\n if (!item) {\n throw new CliError({\n code: 'REGISTRY_ENTRY_NOT_FOUND',\n summary: `Registry entry \"${id}\" was not found.`,\n hint: 'Run `better-cf registry list` to inspect available entry IDs.'\n });\n }\n\n const targetDir = path.resolve(rootDir, maybeTarget ?? '.');\n const result = await installRegistryItem(item, targetDir);\n\n logger.success(`Installed registry entry ${result.itemId}`);\n logger.item('target', result.targetDir);\n for (const file of result.files) {\n logger.item('file', file);\n }\n\n if (item.dependencies?.length) {\n logger.item('deps', `Install runtime deps: ${item.dependencies.join(', ')}`);\n }\n if (item.devDependencies?.length) {\n logger.item('dev-deps', `Install dev deps: ${item.devDependencies.join(', ')}`);\n }\n}\n\nexport async function registryCacheClearCommand(rootDir = process.cwd()): Promise<void> {\n const config = loadCliConfig(rootDir);\n const cachePath = await clearRegistryCache(config);\n logger.success(`Cleared registry cache at ${cachePath}`);\n}\n","import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { CliError } from '../errors.js';\nimport { runCommandCapture } from '../process.js';\n\nexport interface TreeCommandOptions {\n depth?: number;\n ignore?: string[];\n json?: boolean;\n}\n\ninterface TreeNode {\n name: string;\n absolutePath: string;\n kind: 'file' | 'directory';\n children: TreeNode[];\n}\n\nexport async function treeCommand(\n maybePath: string | undefined,\n options: TreeCommandOptions = {},\n rootDir = process.cwd()\n): Promise<void> {\n const targetPath = path.resolve(rootDir, maybePath ?? '.');\n await assertTargetExists(targetPath);\n\n const usedSystemTree = await renderWithSystemTree(targetPath, options, rootDir);\n if (usedSystemTree) {\n return;\n }\n\n const node = await buildTree(targetPath, {\n depth: options.depth,\n ignore: new Set(options.ignore ?? [])\n });\n\n if (options.json) {\n process.stdout.write(`${JSON.stringify(node, null, 2)}\\n`);\n return;\n }\n\n const lines = renderTree(node);\n process.stdout.write(`${lines.join('\\n')}\\n`);\n}\n\nasync function renderWithSystemTree(\n targetPath: string,\n options: TreeCommandOptions,\n rootDir: string\n): Promise<boolean> {\n const args: string[] = [];\n\n if (options.json) {\n args.push('-J');\n }\n if (options.depth !== undefined) {\n args.push('-L', String(options.depth));\n }\n const ignorePatterns = options.ignore?.filter((entry) => entry.length > 0) ?? [];\n if (ignorePatterns.length > 0) {\n args.push('-I', ignorePatterns.join('|'));\n }\n args.push(targetPath);\n\n try {\n const result = await runCommandCapture('tree', args, rootDir);\n if (result.code !== 0) {\n return false;\n }\n\n const output = result.stdout.trimEnd();\n process.stdout.write(output.length > 0 ? `${output}\\n` : '\\n');\n return true;\n } catch {\n return false;\n }\n}\n\nasync function assertTargetExists(targetPath: string): Promise<void> {\n try {\n await fs.access(targetPath);\n } catch {\n throw new CliError({\n code: 'TREE_TARGET_NOT_FOUND',\n summary: `Tree target path does not exist: ${targetPath}.`,\n hint: 'Pass a valid file or directory path.'\n });\n }\n}\n\nasync function buildTree(\n absolutePath: string,\n options: {\n depth?: number;\n ignore: Set<string>;\n },\n currentDepth = 0\n): Promise<TreeNode> {\n const stats = await fs.lstat(absolutePath);\n const node: TreeNode = {\n name: path.basename(absolutePath) || absolutePath,\n absolutePath,\n kind: stats.isDirectory() ? 'directory' : 'file',\n children: []\n };\n\n if (!stats.isDirectory()) {\n return node;\n }\n\n if (options.depth !== undefined && currentDepth >= options.depth) {\n return node;\n }\n\n const entries = await fs.readdir(absolutePath, { withFileTypes: true });\n const filtered = entries\n .filter((entry) => !options.ignore.has(entry.name))\n .sort((a, b) => {\n if (a.isDirectory() && !b.isDirectory()) {\n return -1;\n }\n if (!a.isDirectory() && b.isDirectory()) {\n return 1;\n }\n return a.name.localeCompare(b.name);\n });\n\n for (const entry of filtered) {\n const childPath = path.join(absolutePath, entry.name);\n node.children.push(await buildTree(childPath, options, currentDepth + 1));\n }\n\n return node;\n}\n\nfunction renderTree(root: TreeNode): string[] {\n const lines = [root.name];\n walkChildren(root.children, '', lines);\n return lines;\n}\n\nfunction walkChildren(children: TreeNode[], prefix: string, lines: string[]): void {\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n const isLast = index === children.length - 1;\n lines.push(`${prefix}${isLast ? '\\\\-- ' : '+-- '}${child.name}`);\n if (child.children.length > 0) {\n walkChildren(child.children, `${prefix}${isLast ? ' ' : '| '}`, lines);\n }\n }\n}\n","import { Command } from 'commander';\nimport { renderBanner, shouldRenderBanner } from './banner.js';\nimport { createCommand, type PackageManager } from './commands/create.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 {\n registryAddCommand,\n registryCacheClearCommand,\n registryInfoCommand,\n registryListCommand\n} from './commands/registry.js';\nimport { treeCommand } from './commands/tree.js';\nimport { CliError, toCliError } from './errors.js';\nimport { logger } from './logger.js';\n\nexport async function run(argv = process.argv.slice(2)): Promise<void> {\n if (shouldRenderBanner(argv)) {\n renderBanner();\n }\n\n const program = new Command();\n\n program.name('better-cf').description('better-cf queue SDK CLI').version('0.2.2');\n program.exitOverride();\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(\n '--package-manager <manager>',\n 'Select package manager (npm, pnpm, yarn, bun)',\n parsePackageManagerOption\n )\n .action(\n async (\n projectDirectory: string | undefined,\n options: {\n yes: boolean;\n install: boolean;\n force: boolean;\n packageManager?: PackageManager;\n }\n ) => {\n await createCommand(projectDirectory, {\n yes: options.yes,\n install: options.install,\n force: options.force,\n packageManager: options.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 const registryCommand = program.command('registry').description('Manage better-cf template registry entries');\n\n registryCommand\n .command('list')\n .description('List available registry entries')\n .option('--refresh', 'Bypass cache and refresh from remote registry')\n .action(async (options: { refresh?: boolean }) => {\n await registryListCommand({ refresh: options.refresh });\n });\n\n registryCommand\n .command('info <id>')\n .description('Show details for a registry entry')\n .option('--refresh', 'Bypass cache and refresh from remote registry')\n .action(async (id: string, options: { refresh?: boolean }) => {\n await registryInfoCommand(id, { refresh: options.refresh });\n });\n\n registryCommand\n .command('add <id> [target]')\n .description('Install registry entry files into target directory')\n .option('--refresh', 'Bypass cache and refresh from remote registry')\n .action(async (id: string, target: string | undefined, options: { refresh?: boolean }) => {\n await registryAddCommand(id, target, { refresh: options.refresh });\n });\n\n registryCommand\n .command('cache')\n .description('Manage local registry cache')\n .command('clear')\n .description('Clear local registry cache data')\n .action(async () => {\n await registryCacheClearCommand();\n });\n\n program\n .command('tree [path]')\n .description('Print a file tree using system tree with fallback rendering')\n .option('-d, --depth <depth>', 'Maximum tree depth', parseNumberOption)\n .option('-i, --ignore <patterns>', 'Comma-separated ignore names (for example node_modules,.git)')\n .option('--json', 'Output as JSON')\n .action(\n async (\n maybePath: string | undefined,\n options: {\n depth?: number;\n ignore?: string;\n json?: boolean;\n }\n ) => {\n await treeCommand(maybePath, {\n depth: options.depth,\n ignore: parseIgnoreOption(options.ignore),\n json: options.json ?? false\n });\n }\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 parsePackageManagerOption(value: string): PackageManager {\n const normalized = value.trim().toLowerCase();\n if (normalized === 'npm' || normalized === 'pnpm' || normalized === 'yarn' || normalized === 'bun') {\n return normalized;\n }\n\n throw new CliError({\n code: 'INVALID_CLI_OPTION',\n summary: `Invalid package manager option: ${value}.`,\n details: 'Expected one of npm, pnpm, yarn, or bun.',\n hint: 'Use --package-manager pnpm (or npm/yarn/bun).'\n });\n}\n\nfunction parseIgnoreOption(value: string | undefined): string[] {\n if (!value) {\n return [];\n }\n\n return value\n .split(',')\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n}\n"]}
|