create-rakta-app 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +86 -65
- package/dist/index.js.map +5 -5
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n",
|
|
6
6
|
"let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n",
|
|
7
|
-
"#!/usr/bin/env bun\n\nimport { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport * as clack from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { printBanner } from \"./ascii\";\nimport { writeProjectFiles } from \"./fileSystem\";\nimport { generateProjectFiles } from \"./generator\";\nimport { promptProjectName, runPrompts } from \"./prompts\";\nimport type { ProjectConfig } from \"./types\";\nimport {\n\tBACKEND_DISPLAY,\n\tCSS_DISPLAY,\n\tDATABASE_DISPLAY,\n\tPROJECT_MODE_DISPLAY,\n\tRENDER_MODE_DISPLAY,\n} from \"./types\";\n\nfunction getProjectNameFromArgs(\n\tcliArgs: ReadonlyArray<string>,\n): string | undefined {\n\tconst nameArg = cliArgs.find((arg) => !arg.startsWith(\"--\"));\n\n\tif (nameArg !== undefined && nameArg.trim().length > 0) {\n\t\treturn nameArg.trim();\n\t}\n\n\treturn undefined;\n}\n\nfunction formatFullstackCommands(): string {\n\treturn [\n\t\
|
|
7
|
+
"#!/usr/bin/env bun\n\nimport { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport * as clack from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { printBanner } from \"./ascii\";\nimport { writeProjectFiles } from \"./fileSystem\";\nimport { generateProjectFiles } from \"./generator\";\nimport { promptProjectName, runPrompts } from \"./prompts\";\nimport type { ProjectConfig } from \"./types\";\nimport {\n\tBACKEND_DISPLAY,\n\tCSS_DISPLAY,\n\tDATABASE_DISPLAY,\n\tPROJECT_MODE_DISPLAY,\n\tRENDER_MODE_DISPLAY,\n} from \"./types\";\n\nfunction getProjectNameFromArgs(\n\tcliArgs: ReadonlyArray<string>,\n): string | undefined {\n\tconst nameArg = cliArgs.find((arg) => !arg.startsWith(\"--\"));\n\n\tif (nameArg !== undefined && nameArg.trim().length > 0) {\n\t\treturn nameArg.trim();\n\t}\n\n\treturn undefined;\n}\n\nfunction formatFullstackCommands(): string {\n\treturn [\n\t\tpc.dim(\"# Terminal 1\"),\n\t\tpc.cyan(\"cd frontend\"),\n\t\tpc.cyan(\"bun install\"),\n\t\tpc.cyan(\"bun run dev\"),\n\t\t\"\",\n\t\tpc.dim(\"# Terminal 2\"),\n\t\tpc.cyan(\"cd backend\"),\n\t\tpc.cyan(\"bun install\"),\n\t\tpc.cyan(\"bun run dev\"),\n\t]\n\t\t.map((line) => (line.length === 0 ? \"\" : ` ${line}`))\n\t\t.join(\"\\n\");\n}\n\nfunction formatFrontendOnlyCommands(projectName: string): string {\n\treturn [`cd ${projectName}`, \"bun install\", \"bun run dev\"]\n\t\t.map((command) => ` ${pc.cyan(command)}`)\n\t\t.join(\"\\n\");\n}\n\nfunction printSuccessMessage(projectConfig: ProjectConfig): void {\n\tconst modeLabel = PROJECT_MODE_DISPLAY[projectConfig.projectMode];\n\tconst cssLabel = CSS_DISPLAY[projectConfig.cssFramework];\n\tconst renderLabel = RENDER_MODE_DISPLAY[projectConfig.renderMode];\n\tconst isFullstack = projectConfig.projectMode === \"fullstack\";\n\n\tconst backendLine = isFullstack\n\t\t? `${pc.dim(\"Backend:\")} ${BACKEND_DISPLAY[projectConfig.backendFramework]}`\n\t\t: \"\";\n\n\tconst databaseLine = isFullstack\n\t\t? `${pc.dim(\"DB:\")} ${DATABASE_DISPLAY[projectConfig.database]}`\n\t\t: \"\";\n\n\tconst nextSteps = isFullstack\n\t\t? formatFullstackCommands()\n\t\t: formatFrontendOnlyCommands(projectConfig.projectName);\n\n\tconsole.log(`\n ${pc.bold(pc.green(\"Project created!\"))}\n\n ${pc.dim(\"Mode:\")} ${modeLabel}\n ${pc.dim(\"CSS:\")} ${cssLabel}\n ${pc.dim(\"Render:\")} ${renderLabel}\n ${backendLine}\n ${databaseLine}\n\n ${pc.bold(\"Next steps:\")}\n\n${nextSteps}\n\n ${pc.bold(\"Frontend:\")} ${pc.cyan(\"http://localhost:3000\")}\n ${\n\t\t\t\tisFullstack\n\t\t\t\t\t? `${pc.bold(\"Backend:\")} ${pc.cyan(\"http://localhost:4000\")}`\n\t\t\t\t\t: \"\"\n\t\t\t}\n `);\n}\n\nasync function main(): Promise<void> {\n\tconst rawArgs = process.argv.slice(2);\n\n\tprintBanner();\n\n\tconst projectNameFromArgs = getProjectNameFromArgs(rawArgs);\n\tconst projectName =\n\t\tprojectNameFromArgs ?? (await promptProjectName(\"my-rakta-app\"));\n\n\tconst targetPath = resolve(process.cwd(), projectName);\n\n\tif (existsSync(targetPath)) {\n\t\tclack.cancel(\n\t\t\t`Directory ${pc.bold(pc.yellow(projectName))} already exists. Choose a different name.`,\n\t\t);\n\t\tprocess.exit(1);\n\t}\n\n\tconst projectConfig = await runPrompts(projectName);\n\n\tconst loadingSpinner = clack.spinner();\n\tloadingSpinner.start(\"Generating project files...\");\n\n\tconst generatedFiles = generateProjectFiles(projectConfig);\n\n\ttry {\n\t\twriteProjectFiles(targetPath, generatedFiles);\n\t\tloadingSpinner.stop(pc.green(\"Project files generated.\"));\n\t} catch (caughtError) {\n\t\tloadingSpinner.stop(pc.red(\"File generation failed.\"));\n\n\t\tif (caughtError instanceof Error) {\n\t\t\tconsole.error(pc.red(caughtError.message));\n\t\t}\n\n\t\tprocess.exit(1);\n\t}\n\n\tprintSuccessMessage(projectConfig);\n}\n\nmain().catch((caughtError: unknown) => {\n\tconst errorMessage =\n\t\tcaughtError instanceof Error ? caughtError.message : String(caughtError);\n\n\tconsole.error(pc.red(`\\nError: ${errorMessage}\\n`));\n\tprocess.exit(1);\n});\n",
|
|
8
8
|
"import { styleText } from 'node:util';\nimport { stdout, stdin } from 'node:process';\nimport * as l from 'node:readline';\nimport l__default from 'node:readline';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport { cursor, erase } from 'sisteransi';\nimport { ReadStream } from 'node:tty';\n\nfunction findCursor(s, o, l) {\n if (!l.some((r) => !r.disabled))\n return s;\n const t = s + o, n = Math.max(l.length - 1, 0), e = t < 0 ? n : t > n ? 0 : t;\n return l[e].disabled ? findCursor(e, o < 0 ? -1 : 1, l) : e;\n}\nfunction findTextCursor(s, o, l, i) {\n const t = i.split(`\n`);\n let n = 0, e = s;\n for (const r of t) {\n if (e <= r.length)\n break;\n e -= r.length + 1, n++;\n }\n for (n = Math.max(0, Math.min(t.length - 1, n + l)), e = Math.min(e, t[n].length) + o; e < 0 && n > 0; )\n n--, e += t[n].length + 1;\n for (; e > t[n].length && n < t.length - 1; )\n e -= t[n].length + 1, n++;\n e = Math.max(0, Math.min(t[n].length, e));\n let h = 0;\n for (let r = 0; r < n; r++)\n h += t[r].length + 1;\n return h + e;\n}\n\nconst a$2 = [\"up\", \"down\", \"left\", \"right\", \"space\", \"enter\", \"cancel\"], t = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\nconst settings = {\n actions: new Set(a$2),\n aliases: /* @__PURE__ */ new Map([\n // vim support\n [\"k\", \"up\"],\n [\"j\", \"down\"],\n [\"h\", \"left\"],\n [\"l\", \"right\"],\n [\"\u0003\", \"cancel\"],\n // opinionated defaults!\n [\"escape\", \"cancel\"]\n ]),\n messages: {\n cancel: \"Canceled\",\n error: \"Something went wrong\"\n },\n withGuide: true,\n date: {\n monthNames: [...t],\n messages: {\n required: \"Please enter a valid date\",\n invalidMonth: \"There are only 12 months in a year\",\n invalidDay: (n, e) => `There are only ${n} days in ${e}`,\n afterMin: (n) => `Date must be on or after ${n.toISOString().slice(0, 10)}`,\n beforeMax: (n) => `Date must be on or before ${n.toISOString().slice(0, 10)}`\n }\n }\n};\nfunction updateSettings(n) {\n if (n.aliases !== void 0) {\n const e = n.aliases;\n for (const s in e) {\n if (!Object.hasOwn(e, s)) continue;\n const i = e[s];\n settings.actions.has(i) && (settings.aliases.has(s) || settings.aliases.set(s, i));\n }\n }\n if (n.messages !== void 0) {\n const e = n.messages;\n e.cancel !== void 0 && (settings.messages.cancel = e.cancel), e.error !== void 0 && (settings.messages.error = e.error);\n }\n if (n.withGuide !== void 0 && (settings.withGuide = n.withGuide !== false), n.date !== void 0) {\n const e = n.date;\n e.monthNames !== void 0 && (settings.date.monthNames = [...e.monthNames]), e.messages !== void 0 && (e.messages.required !== void 0 && (settings.date.messages.required = e.messages.required), e.messages.invalidMonth !== void 0 && (settings.date.messages.invalidMonth = e.messages.invalidMonth), e.messages.invalidDay !== void 0 && (settings.date.messages.invalidDay = e.messages.invalidDay), e.messages.afterMin !== void 0 && (settings.date.messages.afterMin = e.messages.afterMin), e.messages.beforeMax !== void 0 && (settings.date.messages.beforeMax = e.messages.beforeMax));\n }\n}\nfunction isActionKey(n, e) {\n if (typeof n == \"string\")\n return settings.aliases.get(n) === e;\n for (const s of n)\n if (s !== void 0 && isActionKey(s, e))\n return true;\n return false;\n}\n\nfunction diffLines(i, s) {\n if (i === s) return;\n const e = i.split(`\n`), t = s.split(`\n`), r = Math.max(e.length, t.length), f = [];\n for (let n = 0; n < r; n++)\n e[n] !== t[n] && f.push(n);\n return {\n lines: f,\n numLinesBefore: e.length,\n numLinesAfter: t.length,\n numLines: r\n };\n}\n\nconst R = globalThis.process.platform.startsWith(\"win\");\nconst CANCEL_SYMBOL = Symbol(\"clack:cancel\");\nfunction isCancel(e) {\n return e === CANCEL_SYMBOL;\n}\nfunction setRawMode(e, r) {\n const o = e;\n o.isTTY && o.setRawMode(r);\n}\nfunction block({\n input: e = stdin,\n output: r = stdout,\n overwrite: o = true,\n hideCursor: t = true\n} = {}) {\n const s = l.createInterface({\n input: e,\n output: r,\n prompt: \"\",\n tabSize: 1\n });\n l.emitKeypressEvents(e, s), e instanceof ReadStream && e.isTTY && e.setRawMode(true);\n const n = (f, { name: a, sequence: p }) => {\n const c = String(f);\n if (isActionKey([c, a, p], \"cancel\")) {\n t && r.write(cursor.show), process.exit(0);\n return;\n }\n if (!o) return;\n const i = a === \"return\" ? 0 : -1, m = a === \"return\" ? -1 : 0;\n l.moveCursor(r, i, m, () => {\n l.clearLine(r, 1, () => {\n e.once(\"keypress\", n);\n });\n });\n };\n return t && r.write(cursor.hide), e.once(\"keypress\", n), () => {\n e.off(\"keypress\", n), t && r.write(cursor.show), e instanceof ReadStream && e.isTTY && !R && e.setRawMode(false), s.terminal = false, s.close();\n };\n}\nconst getColumns = (e) => \"columns\" in e && typeof e.columns == \"number\" ? e.columns : 80, getRows = (e) => \"rows\" in e && typeof e.rows == \"number\" ? e.rows : 20;\nfunction wrapTextWithPrefix(e, r, o, t = o, s = o, n) {\n const f = getColumns(e ?? stdout);\n return wrapAnsi(r, f - o.length, {\n hard: true,\n trim: false\n }).split(`\n`).map((c, i, m) => {\n const d = n ? n(c, i) : c;\n return i === 0 ? `${t}${d}` : i === m.length - 1 ? `${s}${d}` : `${o}${d}`;\n }).join(`\n`);\n}\n\nfunction runValidation(e, n) {\n if (\"~standard\" in e) {\n const a = e[\"~standard\"].validate(n);\n if (a instanceof Promise)\n throw new TypeError(\n \"Schema validation must be synchronous. Update `validate()` and remove any asynchronous logic.\"\n );\n return a.issues?.at(0)?.message;\n }\n return e(n);\n}\n\nclass V {\n input;\n output;\n _abortSignal;\n rl;\n opts;\n _render;\n _track = false;\n _prevFrame = \"\";\n _subscribers = /* @__PURE__ */ new Map();\n _cursor = 0;\n state = \"initial\";\n error = \"\";\n value;\n userInput = \"\";\n constructor(t, e = true) {\n const { input: i = stdin, output: n = stdout, render: s, signal: r, ...o } = t;\n this.opts = o, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = s.bind(this), this._track = e, this._abortSignal = r, this.input = i, this.output = n;\n }\n /**\n * Unsubscribe all listeners\n */\n unsubscribe() {\n this._subscribers.clear();\n }\n /**\n * Set a subscriber with opts\n * @param event - The event name\n */\n setSubscriber(t, e) {\n const i = this._subscribers.get(t) ?? [];\n i.push(e), this._subscribers.set(t, i);\n }\n /**\n * Subscribe to an event\n * @param event - The event name\n * @param cb - The callback\n */\n on(t, e) {\n this.setSubscriber(t, { cb: e });\n }\n /**\n * Subscribe to an event once\n * @param event - The event name\n * @param cb - The callback\n */\n once(t, e) {\n this.setSubscriber(t, { cb: e, once: true });\n }\n /**\n * Emit an event with data\n * @param event - The event name\n * @param data - The data to pass to the callback\n */\n emit(t, ...e) {\n const i = this._subscribers.get(t) ?? [], n = [];\n for (const s of i)\n s.cb(...e), s.once && n.push(() => i.splice(i.indexOf(s), 1));\n for (const s of n)\n s();\n }\n prompt() {\n return new Promise((t) => {\n if (this._abortSignal) {\n if (this._abortSignal.aborted)\n return this.state = \"cancel\", this.close(), t(CANCEL_SYMBOL);\n this._abortSignal.addEventListener(\n \"abort\",\n () => {\n this.state = \"cancel\", this.close();\n },\n { once: true }\n );\n }\n this.rl = l__default.createInterface({\n input: this.input,\n tabSize: 2,\n prompt: \"\",\n escapeCodeTimeout: 50,\n terminal: true\n }), this.rl.prompt(), this.opts.initialUserInput !== void 0 && this._setUserInput(this.opts.initialUserInput, true), this.input.on(\"keypress\", this.onKeypress), setRawMode(this.input, true), this.output.on(\"resize\", this.render), this.render(), this.once(\"submit\", () => {\n this.output.write(cursor.show), this.output.off(\"resize\", this.render), setRawMode(this.input, false), t(this.value);\n }), this.once(\"cancel\", () => {\n this.output.write(cursor.show), this.output.off(\"resize\", this.render), setRawMode(this.input, false), t(CANCEL_SYMBOL);\n });\n });\n }\n _isActionKey(t, e) {\n return t === \"\t\";\n }\n _shouldSubmit(t, e) {\n return true;\n }\n _setValue(t) {\n this.value = t, this.emit(\"value\", this.value);\n }\n _setUserInput(t, e) {\n this.userInput = t ?? \"\", this.emit(\"userInput\", this.userInput), e && this._track && this.rl && (this.rl.write(this.userInput), this._cursor = this.rl.cursor);\n }\n _clearUserInput() {\n this.rl?.write(null, { ctrl: true, name: \"u\" }), this._setUserInput(\"\");\n }\n onKeypress(t, e) {\n if (this._track && e.name !== \"return\" && (e.name && this._isActionKey(t, e) && this.rl?.write(null, { ctrl: true, name: \"h\" }), this._cursor = this.rl?.cursor ?? 0, this._setUserInput(this.rl?.line)), this.state === \"error\" && (this.state = \"active\"), e?.name && (!this._track && settings.aliases.has(e.name) && this.emit(\"cursor\", settings.aliases.get(e.name)), settings.actions.has(e.name) && this.emit(\"cursor\", e.name)), t && (t.toLowerCase() === \"y\" || t.toLowerCase() === \"n\") && this.emit(\"confirm\", t.toLowerCase() === \"y\"), this.emit(\"key\", t, e), e?.name === \"return\" && this._shouldSubmit(t, e)) {\n if (this.opts.validate) {\n const i = runValidation(this.opts.validate, this.value);\n i && (this.error = i instanceof Error ? i.message : i, this.state = \"error\", this.rl?.write(this.userInput));\n }\n this.state !== \"error\" && (this.state = \"submit\");\n }\n isActionKey([t, e?.name, e?.sequence], \"cancel\") && (this.state = \"cancel\"), (this.state === \"submit\" || this.state === \"cancel\") && this.emit(\"finalize\"), this.render(), (this.state === \"submit\" || this.state === \"cancel\") && this.close();\n }\n close() {\n this.input.unpipe(), this.input.removeListener(\"keypress\", this.onKeypress), this.output.write(`\n`), setRawMode(this.input, false), this.rl?.close(), this.rl = void 0, this.emit(`${this.state}`, this.value), this.unsubscribe();\n }\n restoreCursor() {\n const t = wrapAnsi(this._prevFrame, process.stdout.columns, { hard: true, trim: false }).split(`\n`).length - 1;\n this.output.write(cursor.move(-999, t * -1));\n }\n render() {\n const t = wrapAnsi(this._render(this) ?? \"\", process.stdout.columns, {\n hard: true,\n trim: false\n });\n if (t !== this._prevFrame) {\n if (this.state === \"initial\")\n this.output.write(cursor.hide);\n else {\n const e = diffLines(this._prevFrame, t), i = getRows(this.output);\n if (this.restoreCursor(), e) {\n const n = Math.max(0, e.numLinesAfter - i), s = Math.max(0, e.numLinesBefore - i);\n let r = e.lines.find((o) => o >= n);\n if (r === void 0) {\n this._prevFrame = t;\n return;\n }\n if (e.lines.length === 1) {\n this.output.write(cursor.move(0, r - s)), this.output.write(erase.lines(1));\n const o = t.split(`\n`);\n this.output.write(o[r]), this._prevFrame = t, this.output.write(cursor.move(0, o.length - r - 1));\n return;\n } else if (e.lines.length > 1) {\n if (n < s)\n r = n;\n else {\n const h = r - s;\n h > 0 && this.output.write(cursor.move(0, h));\n }\n this.output.write(erase.down());\n const f = t.split(`\n`).slice(r);\n this.output.write(f.join(`\n`)), this._prevFrame = t;\n return;\n }\n }\n this.output.write(erase.down());\n }\n this.output.write(t), this.state === \"initial\" && (this.state = \"active\"), this._prevFrame = t;\n }\n }\n}\n\nfunction p$1(l, e) {\n if (l === void 0 || e.length === 0)\n return 0;\n const i = e.findIndex((s) => s.value === l);\n return i !== -1 ? i : 0;\n}\nfunction g(l, e) {\n return (e.label ?? String(e.value)).toLowerCase().includes(l.toLowerCase());\n}\nfunction m(l, e) {\n if (e)\n return l ? e : e[0];\n}\nlet T$1 = class T extends V {\n filteredOptions;\n multiple;\n isNavigating = false;\n selectedValues = [];\n focusedValue;\n #e = 0;\n #s = \"\";\n #t;\n #i;\n #n;\n get cursor() {\n return this.#e;\n }\n get userInputWithCursor() {\n if (!this.userInput)\n return styleText([\"inverse\", \"hidden\"], \"_\");\n if (this._cursor >= this.userInput.length)\n return `${this.userInput}\\u2588`;\n const e = this.userInput.slice(0, this._cursor), [t, ...i] = this.userInput.slice(this._cursor);\n return `${e}${styleText(\"inverse\", t)}${i.join(\"\")}`;\n }\n get options() {\n return typeof this.#i == \"function\" ? this.#i() : this.#i;\n }\n constructor(e) {\n super(e), this.#i = e.options, this.#n = e.placeholder;\n const t = this.options;\n this.filteredOptions = [...t], this.multiple = e.multiple === true, this.#t = typeof e.options == \"function\" ? e.filter : e.filter ?? g;\n let i;\n if (e.initialValue && Array.isArray(e.initialValue) ? this.multiple ? i = e.initialValue : i = e.initialValue.slice(0, 1) : !this.multiple && this.options.length > 0 && (i = [this.options[0].value]), i)\n for (const s of i) {\n const n = t.findIndex((o) => o.value === s);\n n !== -1 && (this.toggleSelected(s), this.#e = n);\n }\n this.focusedValue = this.options[this.#e]?.value, this.on(\"key\", (s, n) => this.#l(s, n)), this.on(\"userInput\", (s) => this.#u(s));\n }\n _isActionKey(e, t) {\n return e === \"\t\" || this.multiple && this.isNavigating && t.name === \"space\" && e !== void 0 && e !== \"\";\n }\n #l(e, t) {\n const i = t.name === \"up\", s = t.name === \"down\", n = t.name === \"return\", o = this.userInput === \"\" || this.userInput === \"\t\", u = this.#n, h = this.options, f = u !== void 0 && u !== \"\" && h.some(\n (r) => !r.disabled && (this.#t ? this.#t(u, r) : true)\n );\n if (t.name === \"tab\" && o && f) {\n this.userInput === \"\t\" && this._clearUserInput(), this._setUserInput(u, true), this.isNavigating = false;\n return;\n }\n i || s ? (this.#e = findCursor(this.#e, i ? -1 : 1, this.filteredOptions), this.focusedValue = this.filteredOptions[this.#e]?.value, this.multiple || (this.selectedValues = [this.focusedValue]), this.isNavigating = true) : n ? this.value = m(this.multiple, this.selectedValues) : this.multiple ? this.focusedValue !== void 0 && (t.name === \"tab\" || this.isNavigating && t.name === \"space\") ? this.toggleSelected(this.focusedValue) : this.isNavigating = false : (this.focusedValue && (this.selectedValues = [this.focusedValue]), this.isNavigating = false);\n }\n deselectAll() {\n this.selectedValues = [];\n }\n toggleSelected(e) {\n this.filteredOptions.length !== 0 && (this.multiple ? this.selectedValues.includes(e) ? this.selectedValues = this.selectedValues.filter((t) => t !== e) : this.selectedValues = [...this.selectedValues, e] : this.selectedValues = [e]);\n }\n #u(e) {\n if (e !== this.#s) {\n this.#s = e;\n const t = this.options;\n e && this.#t ? this.filteredOptions = t.filter((n) => this.#t?.(e, n)) : this.filteredOptions = [...t];\n const i = p$1(this.focusedValue, this.filteredOptions);\n this.#e = findCursor(i, 0, this.filteredOptions);\n const s = this.filteredOptions[this.#e];\n s && !s.disabled ? this.focusedValue = s.value : this.focusedValue = void 0, this.multiple || (this.focusedValue !== void 0 ? this.toggleSelected(this.focusedValue) : this.deselectAll());\n }\n }\n};\n\nclass r extends V {\n get cursor() {\n return this.value ? 0 : 1;\n }\n get _value() {\n return this.cursor === 0;\n }\n constructor(t) {\n super(t, false), this.value = !!t.initialValue, this.on(\"userInput\", () => {\n this.value = this._value;\n }), this.on(\"confirm\", (i) => {\n this.output.write(cursor.move(0, -1)), this.value = i, this.state = \"submit\", this.close();\n }), this.on(\"cursor\", () => {\n this.value = !this.value;\n });\n }\n}\n\nconst _ = {\n Y: { type: \"year\", len: 4 },\n M: { type: \"month\", len: 2 },\n D: { type: \"day\", len: 2 }\n};\nfunction M(r) {\n return [...r].map((t) => _[t]);\n}\nfunction P(r) {\n const i = new Intl.DateTimeFormat(r, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\"\n }).formatToParts(new Date(2e3, 0, 15)), s = [];\n let n = \"/\";\n for (const e of i)\n e.type === \"literal\" ? n = e.value.trim() || e.value : (e.type === \"year\" || e.type === \"month\" || e.type === \"day\") && s.push({ type: e.type, len: e.type === \"year\" ? 4 : 2 });\n return { segments: s, separator: n };\n}\nfunction p(r) {\n return Number.parseInt((r || \"0\").replace(/_/g, \"0\"), 10) || 0;\n}\nfunction f(r) {\n return {\n year: p(r.year),\n month: p(r.month),\n day: p(r.day)\n };\n}\nfunction c(r, t) {\n return new Date(r || 2001, t || 1, 0).getDate();\n}\nfunction b(r) {\n const { year: t, month: i, day: s } = f(r);\n if (!t || t < 0 || t > 9999 || !i || i < 1 || i > 12 || !s || s < 1) return;\n const n = new Date(Date.UTC(t, i - 1, s));\n if (!(n.getUTCFullYear() !== t || n.getUTCMonth() !== i - 1 || n.getUTCDate() !== s))\n return { year: t, month: i, day: s };\n}\nfunction C(r) {\n const t = b(r);\n return t ? new Date(Date.UTC(t.year, t.month - 1, t.day)) : void 0;\n}\nfunction T(r, t, i, s) {\n const n = i ? {\n year: i.getUTCFullYear(),\n month: i.getUTCMonth() + 1,\n day: i.getUTCDate()\n } : null, e = s ? {\n year: s.getUTCFullYear(),\n month: s.getUTCMonth() + 1,\n day: s.getUTCDate()\n } : null;\n return r === \"year\" ? { min: n?.year ?? 1, max: e?.year ?? 9999 } : r === \"month\" ? {\n min: n && t.year === n.year ? n.month : 1,\n max: e && t.year === e.year ? e.month : 12\n } : {\n min: n && t.year === n.year && t.month === n.month ? n.day : 1,\n max: e && t.year === e.year && t.month === e.month ? e.day : c(t.year, t.month)\n };\n}\nclass U extends V {\n #i;\n #o;\n #t;\n #h;\n #u;\n #e = { segmentIndex: 0, positionInSegment: 0 };\n #n = true;\n #s = null;\n inlineError = \"\";\n get segmentCursor() {\n return { ...this.#e };\n }\n get segmentValues() {\n return { ...this.#t };\n }\n get segments() {\n return this.#i;\n }\n get separator() {\n return this.#o;\n }\n get formattedValue() {\n return this.#l(this.#t);\n }\n #l(t) {\n return this.#i.map((i) => t[i.type]).join(this.#o);\n }\n #r() {\n this._setUserInput(this.#l(this.#t)), this._setValue(C(this.#t) ?? void 0);\n }\n constructor(t) {\n const i = t.format ? { segments: M(t.format), separator: t.separator ?? \"/\" } : P(t.locale), s = t.separator ?? i.separator, n = t.format ? M(t.format) : i.segments, e = t.initialValue ?? t.defaultValue, m = e ? {\n year: String(e.getUTCFullYear()).padStart(4, \"0\"),\n month: String(e.getUTCMonth() + 1).padStart(2, \"0\"),\n day: String(e.getUTCDate()).padStart(2, \"0\")\n } : { year: \"____\", month: \"__\", day: \"__\" }, o = n.map((a) => m[a.type]).join(s);\n super({ ...t, initialUserInput: o }, false), this.#i = n, this.#o = s, this.#t = m, this.#h = t.minDate, this.#u = t.maxDate, this.#r(), this.on(\"cursor\", (a) => this.#f(a)), this.on(\"key\", (a, u) => this.#y(a, u)), this.on(\"finalize\", () => this.#p(t));\n }\n #a() {\n const t = Math.max(0, Math.min(this.#e.segmentIndex, this.#i.length - 1)), i = this.#i[t];\n if (i)\n return this.#e.positionInSegment = Math.max(\n 0,\n Math.min(this.#e.positionInSegment, i.len - 1)\n ), { segment: i, index: t };\n }\n #m(t) {\n this.inlineError = \"\", this.#s = null;\n const i = this.#a();\n i && (this.#e.segmentIndex = Math.max(\n 0,\n Math.min(this.#i.length - 1, i.index + t)\n ), this.#e.positionInSegment = 0, this.#n = true);\n }\n #d(t) {\n const i = this.#a();\n if (!i) return;\n const { segment: s } = i, n = this.#t[s.type], e = !n || n.replace(/_/g, \"\") === \"\", m = Number.parseInt((n || \"0\").replace(/_/g, \"0\"), 10) || 0, o = T(\n s.type,\n f(this.#t),\n this.#h,\n this.#u\n );\n let a;\n e ? a = t === 1 ? o.min : o.max : a = Math.max(Math.min(o.max, m + t), o.min), this.#t = {\n ...this.#t,\n [s.type]: a.toString().padStart(s.len, \"0\")\n }, this.#n = true, this.#s = null, this.#r();\n }\n #f(t) {\n if (t)\n switch (t) {\n case \"right\":\n return this.#m(1);\n case \"left\":\n return this.#m(-1);\n case \"up\":\n return this.#d(1);\n case \"down\":\n return this.#d(-1);\n }\n }\n #y(t, i) {\n if (i?.name === \"backspace\" || i?.sequence === \"\\x7F\" || i?.sequence === \"\\b\" || t === \"\\x7F\" || t === \"\\b\") {\n this.inlineError = \"\";\n const n = this.#a();\n if (!n) return;\n if (!this.#t[n.segment.type].replace(/_/g, \"\")) {\n this.#m(-1);\n return;\n }\n this.#t[n.segment.type] = \"_\".repeat(n.segment.len), this.#n = true, this.#e.positionInSegment = 0, this.#r();\n return;\n }\n if (i?.name === \"tab\") {\n this.inlineError = \"\";\n const n = this.#a();\n if (!n) return;\n const e = i.shift ? -1 : 1, m = n.index + e;\n m >= 0 && m < this.#i.length && (this.#e.segmentIndex = m, this.#e.positionInSegment = 0, this.#n = true);\n return;\n }\n if (t && /^[0-9]$/.test(t)) {\n const n = this.#a();\n if (!n) return;\n const { segment: e } = n, m = !this.#t[e.type].replace(/_/g, \"\");\n if (this.#n && this.#s !== null && !m) {\n const h = this.#s + t, d = { ...this.#t, [e.type]: h }, g = this.#g(d, e);\n if (g) {\n this.inlineError = g, this.#s = null, this.#n = false;\n return;\n }\n this.inlineError = \"\", this.#t[e.type] = h, this.#s = null, this.#n = false, this.#r(), n.index < this.#i.length - 1 && (this.#e.segmentIndex = n.index + 1, this.#e.positionInSegment = 0, this.#n = true);\n return;\n }\n this.#n && !m && (this.#t[e.type] = \"_\".repeat(e.len), this.#e.positionInSegment = 0), this.#n = false, this.#s = null;\n const o = this.#t[e.type], a = o.indexOf(\"_\"), u = a >= 0 ? a : Math.min(this.#e.positionInSegment, e.len - 1);\n if (u < 0 || u >= e.len) return;\n let l = o.slice(0, u) + t + o.slice(u + 1), D = false;\n if (u === 0 && o === \"__\" && (e.type === \"month\" || e.type === \"day\")) {\n const h = Number.parseInt(t, 10);\n l = `0${t}`, D = h <= (e.type === \"month\" ? 1 : 2);\n }\n if (e.type === \"year\" && (l = (o.replace(/_/g, \"\") + t).padStart(e.len, \"_\")), !l.includes(\"_\")) {\n const h = { ...this.#t, [e.type]: l }, d = this.#g(h, e);\n if (d) {\n this.inlineError = d;\n return;\n }\n }\n this.inlineError = \"\", this.#t[e.type] = l;\n const y = l.includes(\"_\") ? void 0 : b(this.#t);\n if (y) {\n const { year: h, month: d } = y, g = c(h, d);\n this.#t = {\n year: String(Math.max(0, Math.min(9999, h))).padStart(4, \"0\"),\n month: String(Math.max(1, Math.min(12, d))).padStart(2, \"0\"),\n day: String(Math.max(1, Math.min(g, y.day))).padStart(2, \"0\")\n };\n }\n this.#r();\n const S = l.indexOf(\"_\");\n D ? (this.#n = true, this.#s = t) : S >= 0 ? this.#e.positionInSegment = S : a >= 0 && n.index < this.#i.length - 1 ? (this.#e.segmentIndex = n.index + 1, this.#e.positionInSegment = 0, this.#n = true) : this.#e.positionInSegment = Math.min(u + 1, e.len - 1);\n }\n }\n #g(t, i) {\n const { month: s, day: n } = f(t);\n if (i.type === \"month\" && (s < 0 || s > 12))\n return settings.date.messages.invalidMonth;\n if (i.type === \"day\" && (n < 0 || n > 31))\n return settings.date.messages.invalidDay(31, \"any month\");\n }\n #p(t) {\n const { year: i, month: s, day: n } = f(this.#t);\n if (i && s && n) {\n const e = c(i, s);\n this.#t = {\n ...this.#t,\n day: String(Math.min(n, e)).padStart(2, \"0\")\n };\n }\n this.value = C(this.#t) ?? t.defaultValue ?? void 0;\n }\n}\n\nlet u$1 = class u extends V {\n options;\n cursor = 0;\n #t;\n getGroupItems(t) {\n return this.options.filter((r) => r.group === t);\n }\n isGroupSelected(t) {\n const r = this.getGroupItems(t), e = this.value;\n return e === void 0 ? false : r.every((s) => e.includes(s.value));\n }\n toggleValue() {\n const t = this.options[this.cursor];\n if (this.value === void 0 && (this.value = []), t.group === true) {\n const r = t.value, e = this.getGroupItems(r);\n this.isGroupSelected(r) ? this.value = this.value.filter(\n (s) => e.findIndex((i) => i.value === s) === -1\n ) : this.value = [...this.value, ...e.map((s) => s.value)], this.value = Array.from(new Set(this.value));\n } else {\n const r = this.value.includes(t.value);\n this.value = r ? this.value.filter((e) => e !== t.value) : [...this.value, t.value];\n }\n }\n constructor(t) {\n super(t, false);\n const { options: r } = t;\n this.#t = t.selectableGroups !== false, this.options = Object.entries(r).flatMap(([e, s]) => [\n { value: e, group: true, label: e },\n ...s.map((i) => ({ ...i, group: e }))\n ]), this.value = [...t.initialValues ?? []], this.cursor = Math.max(\n this.options.findIndex(({ value: e }) => e === t.cursorAt),\n this.#t ? 0 : 1\n ), this.on(\"cursor\", (e) => {\n switch (e) {\n case \"left\":\n case \"up\": {\n this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n const s = this.options[this.cursor]?.group === true;\n !this.#t && s && (this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1);\n break;\n }\n case \"down\":\n case \"right\": {\n this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n const s = this.options[this.cursor]?.group === true;\n !this.#t && s && (this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1);\n break;\n }\n case \"space\":\n this.toggleValue();\n break;\n }\n });\n }\n};\n\nconst o$1 = /* @__PURE__ */ new Set([\"up\", \"down\", \"left\", \"right\"]);\nclass h extends V {\n #t = false;\n #s;\n focused = \"editor\";\n get userInputWithCursor() {\n if (this.state === \"submit\")\n return this.userInput;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${t}\\u2588`;\n const s = t.slice(0, this.cursor), r = t[this.cursor], i = t.slice(this.cursor + 1);\n return r === `\n` ? `${s}\\u2588\n${i}` : `${s}${styleText(\"inverse\", r)}${i}`;\n }\n get cursor() {\n return this._cursor;\n }\n #r(t) {\n if (this.userInput.length === 0) {\n this._setUserInput(t);\n return;\n }\n this._setUserInput(\n this.userInput.slice(0, this.cursor) + t + this.userInput.slice(this.cursor)\n );\n }\n #i(t) {\n const s = this.value ?? \"\";\n switch (t) {\n case \"up\":\n this._cursor = findTextCursor(this._cursor, 0, -1, s);\n return;\n case \"down\":\n this._cursor = findTextCursor(this._cursor, 0, 1, s);\n return;\n case \"left\":\n this._cursor = findTextCursor(this._cursor, -1, 0, s);\n return;\n case \"right\":\n this._cursor = findTextCursor(this._cursor, 1, 0, s);\n return;\n }\n }\n _shouldSubmit(t, s) {\n if (this.#s)\n return this.focused === \"submit\" ? true : (this.#r(`\n`), this._cursor++, false);\n const r = this.#t;\n return this.#t = true, r && this.cursor === this.userInput.length ? (this.userInput[this.cursor - 1] === `\n` && (this._setUserInput(\n this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor)\n ), this._cursor--), true) : (this.#r(`\n`), this._cursor++, false);\n }\n constructor(t) {\n const s = t.initialUserInput ?? t.initialValue;\n super(\n {\n ...t,\n initialUserInput: s\n },\n false\n ), s !== void 0 && (this._cursor = s.length), this.#s = t.showSubmit ?? false, this.on(\"key\", (r, i) => {\n if (i?.name && o$1.has(i.name)) {\n this.#t = false, this.#i(i.name);\n return;\n }\n if (r === \"\t\" && this.#s) {\n this.focused = this.focused === \"editor\" ? \"submit\" : \"editor\";\n return;\n }\n if (i?.name !== \"return\") {\n if (this.#t = false, i?.name === \"backspace\" && this.cursor > 0) {\n this._setUserInput(\n this.userInput.slice(0, this.cursor - 1) + this.userInput.slice(this.cursor)\n ), this._cursor--;\n return;\n }\n if (i?.name === \"delete\" && this.cursor < this.userInput.length) {\n this._setUserInput(\n this.userInput.slice(0, this.cursor) + this.userInput.slice(this.cursor + 1)\n );\n return;\n }\n r && (this.#s && this.focused === \"submit\" && (this.focused = \"editor\"), this.#r(r ?? \"\"), this._cursor++);\n }\n }), this.on(\"userInput\", (r) => {\n this._setValue(r);\n }), this.on(\"finalize\", () => {\n this.value || (this.value = t.defaultValue), this.value === void 0 && (this.value = \"\");\n });\n }\n}\n\nlet a$1 = class a extends V {\n options;\n cursor = 0;\n get _value() {\n return this.options[this.cursor].value;\n }\n get _enabledOptions() {\n return this.options.filter((e) => e.disabled !== true);\n }\n toggleAll() {\n const e = this._enabledOptions, i = this.value !== void 0 && this.value.length === e.length;\n this.value = i ? [] : e.map((t) => t.value);\n }\n toggleInvert() {\n const e = this.value;\n if (!e)\n return;\n const i = this._enabledOptions.filter((t) => !e.includes(t.value));\n this.value = i.map((t) => t.value);\n }\n toggleValue() {\n this.value === void 0 && (this.value = []);\n const e = this.value.includes(this._value);\n this.value = e ? this.value.filter((i) => i !== this._value) : [...this.value, this._value];\n }\n constructor(e) {\n super(e, false), this.options = e.options, this.value = [...e.initialValues ?? []];\n const i = Math.max(\n this.options.findIndex(({ value: t }) => t === e.cursorAt),\n 0\n );\n this.cursor = this.options[i].disabled ? findCursor(i, 1, this.options) : i, this.on(\"key\", (t, l) => {\n l.name === \"a\" && this.toggleAll(), l.name === \"i\" && this.toggleInvert();\n }), this.on(\"cursor\", (t) => {\n switch (t) {\n case \"left\":\n case \"up\":\n this.cursor = findCursor(this.cursor, -1, this.options);\n break;\n case \"down\":\n case \"right\":\n this.cursor = findCursor(this.cursor, 1, this.options);\n break;\n case \"space\":\n this.toggleValue();\n break;\n }\n });\n }\n};\n\nclass o extends V {\n _mask = \"\\u2022\";\n get cursor() {\n return this._cursor;\n }\n get masked() {\n return this.userInput.replaceAll(/./g, this._mask);\n }\n get userInputWithCursor() {\n if (this.state === \"submit\" || this.state === \"cancel\")\n return this.masked;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${this.masked}${styleText([\"inverse\", \"hidden\"], \"_\")}`;\n const s = this.masked, e = s.slice(0, this.cursor), r = s.slice(this.cursor);\n return `${e}${styleText(\"inverse\", r[0])}${r.slice(1)}`;\n }\n clear() {\n this._clearUserInput();\n }\n constructor({ mask: t, ...s }) {\n super(s), this._mask = t ?? \"\\u2022\", this.on(\"userInput\", (e) => {\n this._setValue(e);\n }), this.on(\"finalize\", () => {\n this.value === void 0 && (this.value = \"\");\n });\n }\n}\n\nclass a extends V {\n options;\n cursor = 0;\n get _selectedValue() {\n return this.options[this.cursor];\n }\n changeValue() {\n this.value = this._selectedValue.value;\n }\n constructor(t) {\n super(t, false), this.options = t.options;\n const i = this.options.findIndex(({ value: s }) => s === t.initialValue), e = i === -1 ? 0 : i;\n this.cursor = this.options[e].disabled ? findCursor(e, 1, this.options) : e, this.changeValue(), this.on(\"cursor\", (s) => {\n switch (s) {\n case \"left\":\n case \"up\":\n this.cursor = findCursor(this.cursor, -1, this.options);\n break;\n case \"down\":\n case \"right\":\n this.cursor = findCursor(this.cursor, 1, this.options);\n break;\n }\n this.changeValue();\n });\n }\n}\n\nclass u extends V {\n options;\n cursor = 0;\n constructor(t) {\n super(t, false), this.options = t.options;\n const s = t.caseSensitive === true, i = this.options.map(({ value: [e] }) => s ? e : e?.toLowerCase());\n this.cursor = Math.max(i.indexOf(t.initialValue), 0), this.on(\"key\", (e) => {\n if (!e)\n return;\n const o = s ? e : e.toLowerCase();\n if (!i.includes(o))\n return;\n const n = this.options.find(({ value: [r] }) => s ? r === o : r?.toLowerCase() === o);\n n && (this.value = n.value, this.state = \"submit\", this.emit(\"submit\"));\n });\n }\n}\n\nclass n extends V {\n get userInputWithCursor() {\n if (this.state === \"submit\")\n return this.userInput;\n const t = this.userInput;\n if (this.cursor >= t.length)\n return `${this.userInput}\\u2588`;\n const e = t.slice(0, this.cursor), [s, ...r] = t.slice(this.cursor);\n return `${e}${styleText(\"inverse\", s)}${r.join(\"\")}`;\n }\n get cursor() {\n return this._cursor;\n }\n constructor(t) {\n super({\n ...t,\n initialUserInput: t.initialUserInput ?? t.initialValue\n }), this.on(\"userInput\", (e) => {\n this._setValue(e);\n }), this.on(\"finalize\", () => {\n this.value || (this.value = t.defaultValue), this.value === void 0 && (this.value = \"\");\n });\n }\n}\n\nexport { T$1 as AutocompletePrompt, r as ConfirmPrompt, U as DatePrompt, u$1 as GroupMultiSelectPrompt, h as MultiLinePrompt, a$1 as MultiSelectPrompt, o as PasswordPrompt, V as Prompt, u as SelectKeyPrompt, a as SelectPrompt, n as TextPrompt, block, getColumns, getRows, isCancel, runValidation, settings, updateSettings, wrapTextWithPrefix };\n",
|
|
9
9
|
"/* MAIN */\nconst getCodePointsLength = (() => {\n const SURROGATE_PAIR_RE = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n return (input) => {\n let surrogatePairsNr = 0;\n SURROGATE_PAIR_RE.lastIndex = 0;\n while (SURROGATE_PAIR_RE.test(input)) {\n surrogatePairsNr += 1;\n }\n return input.length - surrogatePairsNr;\n };\n})();\nconst isFullWidth = (x) => {\n return x === 0x3000 || x >= 0xFF01 && x <= 0xFF60 || x >= 0xFFE0 && x <= 0xFFE6;\n};\nconst isWideNotCJKTNotEmoji = (x) => {\n return x === 0x231B || x === 0x2329 || x >= 0x2FF0 && x <= 0x2FFF || x >= 0x3001 && x <= 0x303E || x >= 0x3099 && x <= 0x30FF || x >= 0x3105 && x <= 0x312F || x >= 0x3131 && x <= 0x318E || x >= 0x3190 && x <= 0x31E3 || x >= 0x31EF && x <= 0x321E || x >= 0x3220 && x <= 0x3247 || x >= 0x3250 && x <= 0x4DBF || x >= 0xFE10 && x <= 0xFE19 || x >= 0xFE30 && x <= 0xFE52 || x >= 0xFE54 && x <= 0xFE66 || x >= 0xFE68 && x <= 0xFE6B || x >= 0x1F200 && x <= 0x1F202 || x >= 0x1F210 && x <= 0x1F23B || x >= 0x1F240 && x <= 0x1F248 || x >= 0x20000 && x <= 0x2FFFD || x >= 0x30000 && x <= 0x3FFFD;\n};\n/* EXPORT */\nexport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji };\n",
|
|
10
10
|
"/* IMPORT */\nimport { getCodePointsLength, isFullWidth, isWideNotCJKTNotEmoji } from './utils.js';\n/* HELPERS */\nconst ANSI_RE = /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\\u001b\\]8;[^;]*;.*?(?:\\u0007|\\u001b\\u005c)/y;\nconst CONTROL_RE = /[\\x00-\\x08\\x0A-\\x1F\\x7F-\\x9F]{1,1000}/y;\nconst CJKT_WIDE_RE = /(?:(?![\\uFF61-\\uFF9F\\uFF00-\\uFFEF])[\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Hangul}\\p{Script=Tangut}]){1,1000}/yu;\nconst TAB_RE = /\\t{1,1000}/y;\nconst EMOJI_RE = /[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*/yu;\nconst LATIN_RE = /(?:[\\x20-\\x7E\\xA0-\\xFF](?!\\uFE0F)){1,1000}/y;\nconst MODIFIER_RE = /\\p{M}+/gu;\nconst NO_TRUNCATION = { limit: Infinity, ellipsis: '' };\n/* MAIN */\nconst getStringTruncatedWidth = (input, truncationOptions = {}, widthOptions = {}) => {\n /* CONSTANTS */\n const LIMIT = truncationOptions.limit ?? Infinity;\n const ELLIPSIS = truncationOptions.ellipsis ?? '';\n const ELLIPSIS_WIDTH = truncationOptions?.ellipsisWidth ?? (ELLIPSIS ? getStringTruncatedWidth(ELLIPSIS, NO_TRUNCATION, widthOptions).width : 0);\n const ANSI_WIDTH = 0;\n const CONTROL_WIDTH = widthOptions.controlWidth ?? 0;\n const TAB_WIDTH = widthOptions.tabWidth ?? 8;\n const EMOJI_WIDTH = widthOptions.emojiWidth ?? 2;\n const FULL_WIDTH_WIDTH = 2;\n const REGULAR_WIDTH = widthOptions.regularWidth ?? 1;\n const WIDE_WIDTH = widthOptions.wideWidth ?? FULL_WIDTH_WIDTH;\n const PARSE_BLOCKS = [\n [LATIN_RE, REGULAR_WIDTH],\n [ANSI_RE, ANSI_WIDTH],\n [CONTROL_RE, CONTROL_WIDTH],\n [TAB_RE, TAB_WIDTH],\n [EMOJI_RE, EMOJI_WIDTH],\n [CJKT_WIDE_RE, WIDE_WIDTH],\n ];\n /* STATE */\n let indexPrev = 0;\n let index = 0;\n let length = input.length;\n let lengthExtra = 0;\n let truncationEnabled = false;\n let truncationIndex = length;\n let truncationLimit = Math.max(0, LIMIT - ELLIPSIS_WIDTH);\n let unmatchedStart = 0;\n let unmatchedEnd = 0;\n let width = 0;\n let widthExtra = 0;\n /* PARSE LOOP */\n outer: while (true) {\n /* UNMATCHED */\n if ((unmatchedEnd > unmatchedStart) || (index >= length && index > indexPrev)) {\n const unmatched = input.slice(unmatchedStart, unmatchedEnd) || input.slice(indexPrev, index);\n lengthExtra = 0;\n for (const char of unmatched.replaceAll(MODIFIER_RE, '')) {\n const codePoint = char.codePointAt(0) || 0;\n if (isFullWidth(codePoint)) {\n widthExtra = FULL_WIDTH_WIDTH;\n }\n else if (isWideNotCJKTNotEmoji(codePoint)) {\n widthExtra = WIDE_WIDTH;\n }\n else {\n widthExtra = REGULAR_WIDTH;\n }\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, Math.max(unmatchedStart, indexPrev) + lengthExtra);\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n lengthExtra += char.length;\n width += widthExtra;\n }\n unmatchedStart = unmatchedEnd = 0;\n }\n /* EXITING */\n if (index >= length) {\n break outer;\n }\n /* PARSE BLOCKS */\n for (let i = 0, l = PARSE_BLOCKS.length; i < l; i++) {\n const [BLOCK_RE, BLOCK_WIDTH] = PARSE_BLOCKS[i];\n BLOCK_RE.lastIndex = index;\n if (BLOCK_RE.test(input)) {\n lengthExtra = BLOCK_RE === CJKT_WIDE_RE ? getCodePointsLength(input.slice(index, BLOCK_RE.lastIndex)) : BLOCK_RE === EMOJI_RE ? 1 : BLOCK_RE.lastIndex - index;\n widthExtra = lengthExtra * BLOCK_WIDTH;\n if ((width + widthExtra) > truncationLimit) {\n truncationIndex = Math.min(truncationIndex, index + Math.floor((truncationLimit - width) / BLOCK_WIDTH));\n }\n if ((width + widthExtra) > LIMIT) {\n truncationEnabled = true;\n break outer;\n }\n width += widthExtra;\n unmatchedStart = indexPrev;\n unmatchedEnd = index;\n index = indexPrev = BLOCK_RE.lastIndex;\n continue outer;\n }\n }\n /* UNMATCHED INDEX */\n index += 1;\n }\n /* RETURN */\n return {\n width: truncationEnabled ? truncationLimit : width,\n index: truncationEnabled ? truncationIndex : length,\n truncated: truncationEnabled,\n ellipsed: truncationEnabled && LIMIT >= ELLIPSIS_WIDTH\n };\n};\n/* EXPORT */\nexport default getStringTruncatedWidth;\n",
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
"import { getColumns, getRows, AutocompletePrompt, settings, ConfirmPrompt, wrapTextWithPrefix, DatePrompt, runValidation, isCancel, MultiSelectPrompt, GroupMultiSelectPrompt, MultiLinePrompt, PasswordPrompt, block, SelectPrompt, SelectKeyPrompt, TextPrompt } from '@clack/core';\nexport { isCancel, settings, updateSettings } from '@clack/core';\nimport { styleText, stripVTControlCharacters } from 'node:util';\nimport process$1 from 'node:process';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport l from 'fast-string-width';\nimport { existsSync, lstatSync, readdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { cursor, erase } from 'sisteransi';\n\nfunction isUnicodeSupported() {\n\tif (process$1.platform !== 'win32') {\n\t\treturn process$1.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process$1.env.CI)\n\t\t|| Boolean(process$1.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process$1.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process$1.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process$1.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process$1.env.TERM_PROGRAM === 'vscode'\n\t\t|| process$1.env.TERM === 'xterm-256color'\n\t\t|| process$1.env.TERM === 'alacritty'\n\t\t|| process$1.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst unicode = isUnicodeSupported(), isCI = () => process.env.CI === \"true\", isTTY = (o) => o.isTTY === true, unicodeOr = (o, e) => unicode ? o : e, S_STEP_ACTIVE = unicodeOr(\"\\u25C6\", \"*\"), S_STEP_CANCEL = unicodeOr(\"\\u25A0\", \"x\"), S_STEP_ERROR = unicodeOr(\"\\u25B2\", \"x\"), S_STEP_SUBMIT = unicodeOr(\"\\u25C7\", \"o\"), S_BAR_START = unicodeOr(\"\\u250C\", \"T\"), S_BAR = unicodeOr(\"\\u2502\", \"|\"), S_BAR_END = unicodeOr(\"\\u2514\", \"\\u2014\"), S_BAR_START_RIGHT = unicodeOr(\"\\u2510\", \"T\"), S_BAR_END_RIGHT = unicodeOr(\"\\u2518\", \"\\u2014\"), S_RADIO_ACTIVE = unicodeOr(\"\\u25CF\", \">\"), S_RADIO_INACTIVE = unicodeOr(\"\\u25CB\", \" \"), S_CHECKBOX_ACTIVE = unicodeOr(\"\\u25FB\", \"[\\u2022]\"), S_CHECKBOX_SELECTED = unicodeOr(\"\\u25FC\", \"[+]\"), S_CHECKBOX_INACTIVE = unicodeOr(\"\\u25FB\", \"[ ]\"), S_PASSWORD_MASK = unicodeOr(\"\\u25AA\", \"\\u2022\"), S_BAR_H = unicodeOr(\"\\u2500\", \"-\"), S_CORNER_TOP_RIGHT = unicodeOr(\"\\u256E\", \"+\"), S_CONNECT_LEFT = unicodeOr(\"\\u251C\", \"+\"), S_CORNER_BOTTOM_RIGHT = unicodeOr(\"\\u256F\", \"+\"), S_CORNER_BOTTOM_LEFT = unicodeOr(\"\\u2570\", \"+\"), S_CORNER_TOP_LEFT = unicodeOr(\"\\u256D\", \"+\"), S_INFO = unicodeOr(\"\\u25CF\", \"\\u2022\"), S_SUCCESS = unicodeOr(\"\\u25C6\", \"*\"), S_WARN = unicodeOr(\"\\u25B2\", \"!\"), S_ERROR = unicodeOr(\"\\u25A0\", \"x\"), symbol = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_STEP_ACTIVE);\n case \"cancel\":\n return styleText(\"red\", S_STEP_CANCEL);\n case \"error\":\n return styleText(\"yellow\", S_STEP_ERROR);\n case \"submit\":\n return styleText(\"green\", S_STEP_SUBMIT);\n }\n}, symbolBar = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_BAR);\n case \"cancel\":\n return styleText(\"red\", S_BAR);\n case \"error\":\n return styleText(\"yellow\", S_BAR);\n case \"submit\":\n return styleText(\"green\", S_BAR);\n }\n};\nfunction formatInstructionFooter(o, e) {\n const r = [`${e ? `${styleText(\"cyan\", S_BAR)} ` : \"\"}${o.join(\" \\u2022 \")}`];\n return e && r.push(styleText(\"cyan\", S_BAR_END)), r;\n}\n\nconst E$1 = (l, o, g, c, h, O = false) => {\n let r = o, w = 0;\n if (O)\n for (let i = c - 1; i >= g && (r -= l[i].length, w++, !(r <= h)); i--)\n ;\n else\n for (let i = g; i < c && (r -= l[i].length, w++, !(r <= h)); i++)\n ;\n return { lineCount: r, removals: w };\n};\nconst limitOptions = ({\n cursor: l,\n options: o,\n style: g,\n output: c = process.stdout,\n maxItems: h = Number.POSITIVE_INFINITY,\n columnPadding: O = 0,\n rowPadding: r = 4\n}) => {\n const i = getColumns(c) - O, I = getRows(c), C = styleText(\"dim\", \"...\"), x = Math.max(I - r, 0), m = Math.max(Math.min(h, x), 5);\n let p = 0;\n l >= m - 3 && (p = Math.max(\n Math.min(l - m + 3, o.length - m),\n 0\n ));\n let f = m < o.length && p > 0, u = m < o.length && p + m < o.length;\n const W = Math.min(\n p + m,\n o.length\n ), e = [];\n let d = 0;\n f && d++, u && d++;\n const v = p + (f ? 1 : 0), P = W - (u ? 1 : 0);\n for (let t = v; t < P; t++) {\n const n = wrapAnsi(g(o[t], t === l), i, {\n hard: true,\n trim: false\n }).split(`\n`);\n e.push(n), d += n.length;\n }\n if (d > x) {\n let t = 0, n = 0, s = d;\n const M = l - v;\n let a = x;\n const T = () => E$1(e, s, 0, M, a), L = () => E$1(\n e,\n s,\n M + 1,\n e.length,\n a,\n true\n );\n f ? ({ lineCount: s, removals: t } = T(), s > a && (u || (a -= 1), { lineCount: s, removals: n } = L())) : (u || (a -= 1), { lineCount: s, removals: n } = L(), s > a && (a -= 1, { lineCount: s, removals: t } = T())), t > 0 && (f = true, e.splice(0, t)), n > 0 && (u = true, e.splice(e.length - n, n));\n }\n const b = [];\n f && b.push(C);\n for (const t of e)\n for (const n of t)\n b.push(n);\n return u && b.push(C), b;\n};\n\nfunction P(t) {\n return t.label ?? String(t.value ?? \"\");\n}\nfunction E(t, c) {\n if (!t)\n return true;\n const n = (c.label ?? String(c.value ?? \"\")).toLowerCase(), i = (c.hint ?? \"\").toLowerCase(), l = String(c.value).toLowerCase(), o = t.toLowerCase();\n return n.includes(o) || i.includes(o) || l.includes(o);\n}\nfunction N(t, c) {\n const n = [];\n for (const i of c)\n t.includes(i.value) && n.push(i);\n return n;\n}\nconst autocomplete = (t) => new AutocompletePrompt({\n options: t.options,\n initialValue: t.initialValue ? [t.initialValue] : void 0,\n initialUserInput: t.initialUserInput,\n placeholder: t.placeholder,\n filter: t.filter ?? ((n, i) => E(n, i)),\n signal: t.signal,\n input: t.input,\n output: t.output,\n validate: t.validate,\n render() {\n const n = t.withGuide ?? settings.withGuide, i = n ? [`${styleText(\"gray\", S_BAR)}`, `${symbol(this.state)} ${t.message}`] : [`${symbol(this.state)} ${t.message}`], l = this.userInput, o = this.options, m = t.placeholder, p = l === \"\" && m !== void 0, $ = (r, s) => {\n const a = P(r), u = r.hint && r.value === this.focusedValue ? styleText(\"dim\", ` (${r.hint})`) : \"\";\n switch (s) {\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}${u}`;\n case \"inactive\":\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`;\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], a)}`;\n }\n };\n switch (this.state) {\n case \"submit\": {\n const r = N(this.selectedValues, o), s = r.length > 0 ? ` ${styleText(\"dim\", r.map(P).join(\", \"))}` : \"\", a = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${a}${s}`;\n }\n case \"cancel\": {\n const r = l ? ` ${styleText([\"strikethrough\", \"dim\"], l)}` : \"\", s = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${s}${r}`;\n }\n default: {\n const r = this.state === \"error\" ? \"yellow\" : \"cyan\", s = n ? `${styleText(r, S_BAR)} ` : \"\", a = n ? styleText(r, S_BAR_END) : \"\";\n let u = \"\";\n if (this.isNavigating || p) {\n const d = p ? m : l;\n u = d !== \"\" ? ` ${styleText(\"dim\", d)}` : \"\";\n } else\n u = ` ${this.userInputWithCursor}`;\n const V = this.filteredOptions.length !== o.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\", y = this.filteredOptions.length === 0 && l ? [`${s}${styleText(\"yellow\", \"No matches found\")}`] : [], b = this.state === \"error\" ? [`${s}${styleText(\"yellow\", this.error)}`] : [];\n n && i.push(`${s.trimEnd()}`), i.push(\n `${s}${styleText(\"dim\", \"Search:\")}${u}${V}`,\n ...y,\n ...b\n );\n const v = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], g = [`${s}${v.join(\" \\u2022 \")}`, a], O = this.filteredOptions.length === 0 ? [] : limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n columnPadding: n ? 3 : 0,\n // for `| ` when guide is shown\n rowPadding: i.length + g.length,\n style: (d, f) => $(\n d,\n d.disabled ? \"disabled\" : f ? \"active\" : \"inactive\"\n ),\n maxItems: t.maxItems,\n output: t.output\n });\n return [\n ...i,\n ...O.map((d) => `${s}${d}`),\n ...g\n ].join(`\n`);\n }\n }\n }\n}).prompt(), autocompleteMultiselect = (t) => {\n const c = (i, l, o, m) => {\n const p = o.includes(i.value), $ = i.label ?? String(i.value ?? \"\"), r = i.hint && m !== void 0 && i.value === m ? styleText(\"dim\", ` (${i.hint})`) : \"\", s = p ? styleText(\"green\", S_CHECKBOX_SELECTED) : styleText(\"dim\", S_CHECKBOX_INACTIVE);\n return i.disabled ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], $)}` : l ? `${s} ${$}${r}` : `${s} ${styleText(\"dim\", $)}`;\n }, n = new AutocompletePrompt({\n options: t.options,\n multiple: true,\n placeholder: t.placeholder,\n filter: t.filter ?? ((i, l) => E(i, l)),\n validate: () => {\n if (t.required && n.selectedValues.length === 0)\n return \"Please select at least one item\";\n },\n initialValue: t.initialValues,\n signal: t.signal,\n input: t.input,\n output: t.output,\n render() {\n const i = t.withGuide ?? settings.withGuide, l = `${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`, o = this.userInput, m = t.placeholder, p = o === \"\" && m !== void 0, $ = this.isNavigating || p ? styleText(\"dim\", p ? m : o) : this.userInputWithCursor, r = this.options, s = this.filteredOptions.length !== r.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\";\n switch (this.state) {\n case \"submit\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n \"dim\",\n `${this.selectedValues.length} items selected`\n )}`;\n case \"cancel\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n [\"strikethrough\", \"dim\"],\n o\n )}`;\n default: {\n const a = this.state === \"error\" ? \"yellow\" : \"cyan\", u = i ? `${styleText(a, S_BAR)} ` : \"\", V = i ? styleText(a, S_BAR_END) : \"\", y = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", this.isNavigating ? \"Space/Tab:\" : \"Tab:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], b = this.filteredOptions.length === 0 && o ? [`${u}${styleText(\"yellow\", \"No matches found\")}`] : [], v = this.state === \"error\" ? [`${u}${styleText(\"yellow\", this.error)}`] : [], g = [\n ...`${l}${i ? styleText(a, S_BAR) : \"\"}`.split(`\n`),\n `${u}${styleText(\"dim\", \"Search:\")} ${$}${s}`,\n ...b,\n ...v\n ], O = [`${u}${y.join(\" \\u2022 \")}`, V], d = limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n style: (f, _) => c(f, _, this.selectedValues, this.focusedValue),\n maxItems: t.maxItems,\n output: t.output,\n rowPadding: g.length + O.length\n });\n return [\n ...g,\n ...d.map((f) => `${u}${f}`),\n ...O\n ].join(`\n`);\n }\n }\n }\n });\n return n.prompt();\n};\n\nconst J = [\n S_CORNER_TOP_LEFT,\n S_CORNER_TOP_RIGHT,\n S_CORNER_BOTTOM_LEFT,\n S_CORNER_BOTTOM_RIGHT\n], K = [S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT];\nfunction A$1(n, e, t, o) {\n let i = t, f = t;\n return o === \"center\" ? i = Math.floor((e - n) / 2) : o === \"right\" && (i = e - n - t), f = e - i - n, [i, f];\n}\nconst Q = (n) => n;\nconst box = (n = \"\", e = \"\", t) => {\n const o = t?.output ?? process.stdout, i = getColumns(o), R = 1 * 2, u = t?.titlePadding ?? 1, h = t?.contentPadding ?? 2, w = t?.width === void 0 || t.width === \"auto\" ? 1 : Math.min(1, t.width), m = t?.withGuide ?? settings.withGuide ? `${S_BAR} ` : \"\", b = t?.formatBorder ?? Q, a = (t?.rounded ? J : K).map(b), _ = b(S_BAR_H), B = b(S_BAR), p = l(m), x = l(e), O = i - p;\n let r = Math.floor(i * w) - p;\n if (t?.width === \"auto\") {\n const c = n.split(`\n`);\n let s = x + u * 2;\n for (const G of c) {\n const P = l(G) + h * 2;\n P > s && (s = P);\n }\n const g = s + R;\n g < r && (r = g);\n }\n r % 2 !== 0 && (r < O ? r++ : r--);\n const d = r - R, S = d - u * 2, T = x > S ? `${e.slice(0, S - 3)}...` : e, [y, W] = A$1(\n l(T),\n d,\n u,\n t?.titleAlign\n ), L = wrapAnsi(n, d - h * 2, {\n hard: true,\n trim: false\n });\n o.write(\n `${m}${a[0]}${_.repeat(y)}${T}${_.repeat(W)}${a[1]}\n`\n );\n const E = L.split(`\n`);\n for (const c of E) {\n const [s, g] = A$1(\n l(c),\n d,\n h,\n t?.contentAlign\n );\n o.write(\n `${m}${B}${\" \".repeat(s)}${c}${\" \".repeat(g)}${B}\n`\n );\n }\n o.write(`${m}${a[2]}${_.repeat(d)}${a[3]}\n`);\n};\n\nconst confirm = (i) => {\n const a = i.active ?? \"Yes\", s = i.inactive ?? \"No\";\n return new ConfirmPrompt({\n active: a,\n inactive: s,\n signal: i.signal,\n input: i.input,\n output: i.output,\n initialValue: i.initialValue ?? true,\n render() {\n const e = i.withGuide ?? settings.withGuide, u = `${symbol(this.state)} `, l = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", f = wrapTextWithPrefix(\n i.output,\n i.message,\n l,\n u\n ), o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${f}\n`, c = this.value ? a : s;\n switch (this.state) {\n case \"submit\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText(\"dim\", c)}`;\n }\n case \"cancel\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText([\"strikethrough\", \"dim\"], c)}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${r}${this.value ? `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}` : `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`}${i.vertical ? e ? `\n${styleText(\"cyan\", S_BAR)} ` : `\n` : ` ${styleText(\"dim\", \"/\")} `}${this.value ? `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", s)}` : `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}`}\n${g}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst date = (e) => {\n const r = e.validate;\n return new DatePrompt({\n ...e,\n validate(t) {\n if (t === void 0)\n return e.defaultValue !== void 0 ? void 0 : r ? runValidation(r, t) : settings.date.messages.required;\n const o = (i) => i.toISOString().slice(0, 10);\n if (e.minDate && o(t) < o(e.minDate))\n return settings.date.messages.afterMin(e.minDate);\n if (e.maxDate && o(t) > o(e.maxDate))\n return settings.date.messages.beforeMax(e.maxDate);\n if (r) return runValidation(r, t);\n },\n render() {\n const t = (e?.withGuide ?? settings.withGuide) !== false, i = `${`${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, l = this.state !== \"initial\" ? this.state : \"active\", d = b(this, l), c = this.value instanceof Date ? this.formattedValue : \"\";\n switch (this.state) {\n case \"error\": {\n const a = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", s = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", f = t ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${i.trim()}\n${s}${d}\n${f}${a}\n`;\n }\n case \"submit\": {\n const a = c ? ` ${styleText(\"dim\", c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}`;\n }\n case \"cancel\": {\n const a = c ? ` ${styleText([\"strikethrough\", \"dim\"], c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}${c.trim() ? `\n${s}` : \"\"}`;\n }\n default: {\n const a = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = t ? styleText(\"cyan\", S_BAR_END) : \"\", f = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = this.inlineError ? `\n${f}${styleText(\"yellow\", this.inlineError)}` : \"\";\n return `${i}${a}${d}${g}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\nfunction b(e, r) {\n const t = e.segmentValues, o = e.segmentCursor;\n if (r === \"submit\" || r === \"cancel\")\n return e.formattedValue;\n const i = styleText(\"gray\", e.separator);\n return e.segments.map((l, d) => {\n const c = d === o.segmentIndex && ![\"submit\", \"cancel\"].includes(r), a = p[l.type];\n return x(t[l.type], { isActive: c, label: a });\n }).join(i);\n}\nfunction x(e, r) {\n const t = !e || e.replace(/_/g, \"\") === \"\";\n return r.isActive ? styleText(\"inverse\", t ? r.label : e.replace(/_/g, \" \")) : t ? styleText(\"dim\", r.label) : e.replace(/_/g, styleText(\"dim\", \" \"));\n}\nconst p = {\n year: \"yyyy\",\n month: \"mm\",\n day: \"dd\"\n};\n\nconst group = async (o, r) => {\n const t = {}, p = Object.keys(o);\n for (const e of p) {\n const i = o[e], n = await i({ results: t })?.catch((a) => {\n throw a;\n });\n if (typeof r?.onCancel == \"function\" && isCancel(n)) {\n t[e] = \"canceled\", r.onCancel({ results: t });\n continue;\n }\n t[e] = n;\n }\n return t;\n};\n\nconst MULTISELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Space:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst m = (n, o) => n.split(`\n`).map((d) => o(d)).join(`\n`);\nconst multiselect = (n) => {\n const o = (t, a) => {\n const r = t.label ?? String(t.value);\n return a === \"disabled\" ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${m(r, (l) => styleText([\"strikethrough\", \"gray\"], l))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint ?? \"disabled\"})`)}` : \"\"}` : a === \"active\" ? `${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${m(r, (l) => styleText(\"dim\", l))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"cancelled\" ? `${m(r, (l) => styleText([\"strikethrough\", \"dim\"], l))}` : a === \"active-selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"submitted\" ? `${m(r, (l) => styleText(\"dim\", l))}` : `${styleText(\"dim\", S_CHECKBOX_INACTIVE)} ${m(r, (l) => styleText(\"dim\", l))}`;\n }, d = n.required ?? true;\n return new MultiSelectPrompt({\n options: n.options,\n signal: n.signal,\n input: n.input,\n output: n.output,\n initialValues: n.initialValues,\n required: d,\n cursorAt: n.cursorAt,\n validate(t) {\n if (d && (t === void 0 || t.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText(\"bgWhite\", styleText(\"inverse\", \" enter \"))\n )} to submit`\n )\n )}`;\n },\n render() {\n const t = n.withGuide ?? settings.withGuide, a = wrapTextWithPrefix(\n n.output,\n n.message,\n t ? `${symbolBar(this.state)} ` : \"\",\n `${symbol(this.state)} `\n ), r = `${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${a}\n`, l = this.value ?? [], p = (i, u) => {\n if (i.disabled)\n return o(i, \"disabled\");\n const s = l.includes(i.value);\n return u && s ? o(i, \"active-selected\") : s ? o(i, \"selected\") : o(i, u ? \"active\" : \"inactive\");\n };\n switch (this.state) {\n case \"submit\": {\n const i = this.options.filter(({ value: s }) => l.includes(s)).map((s) => o(s, \"submitted\")).join(styleText(\"dim\", \", \")) || styleText(\"dim\", \"none\"), u = wrapTextWithPrefix(\n n.output,\n i,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${u}`;\n }\n case \"cancel\": {\n const i = this.options.filter(({ value: s }) => l.includes(s)).map((s) => o(s, \"cancelled\")).join(styleText(\"dim\", \", \"));\n if (i.trim() === \"\")\n return `${r}${styleText(\"gray\", S_BAR)}`;\n const u = wrapTextWithPrefix(\n n.output,\n i,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${u}${t ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n case \"error\": {\n const i = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", u = this.error.split(`\n`).map(\n ($, x) => x === 0 ? `${t ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", $)}` : ` ${$}`\n ).join(`\n`), s = r.split(`\n`).length, g = u.split(`\n`).length + 1;\n return `${r}${i}${limitOptions({\n output: n.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: n.maxItems,\n columnPadding: i.length,\n rowPadding: s + g,\n style: p\n }).join(`\n${i}`)}\n${u}\n`;\n }\n default: {\n const i = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", u = r.split(`\n`).length, s = formatInstructionFooter(MULTISELECT_INSTRUCTIONS, t), g = s.join(`\n`), $ = s.length + 1;\n return `${r}${i}${limitOptions({\n output: n.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: n.maxItems,\n columnPadding: i.length,\n rowPadding: u + $,\n style: p\n }).join(`\n${i}`)}\n${g}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst groupMultiselect = (o) => {\n const { selectableGroups: f = true, groupSpacing: b = 0 } = o, m = (n, l, g = []) => {\n const a = n.label ?? String(n.value), t = typeof n.group == \"string\", u = t && (g[g.indexOf(n) + 1] ?? { group: true }), s = t && u && u.group === true;\n let r = \"\", c = \"\";\n t && (f ? (r = s ? `${S_BAR_END} ` : `${S_BAR} `, c = s ? \" \" : `${S_BAR} `) : r = \" \");\n let i = \"\";\n if (b > 0 && !t && (i = `\n`.repeat(b)), l === \"active\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"group-active\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"group-active-selected\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"selected\") {\n const d = t || f ? styleText(\"green\", S_CHECKBOX_SELECTED) : \"\";\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` (${n.hint})` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${d} `,\n `${i}${styleText(\"dim\", c)} `,\n (S) => styleText(\"dim\", S)\n );\n }\n if (l === \"cancelled\")\n return `${styleText([\"strikethrough\", \"dim\"], a)}`;\n if (l === \"active-selected\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"submitted\")\n return `${styleText(\"dim\", a)}`;\n const h = t || f ? styleText(\"dim\", S_CHECKBOX_INACTIVE) : \"\";\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${h} `,\n `${i}${styleText(\"dim\", c)} `,\n (d) => styleText(\"dim\", d)\n );\n }, x = o.required ?? true;\n return new GroupMultiSelectPrompt({\n options: o.options,\n signal: o.signal,\n input: o.input,\n output: o.output,\n initialValues: o.initialValues,\n required: x,\n cursorAt: o.cursorAt,\n selectableGroups: f,\n validate(n) {\n if (x && (n === void 0 || n.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText([\"bgWhite\", \"inverse\"], \" enter \")\n )} to submit`\n )\n )}`;\n },\n render() {\n const n = o.withGuide ?? settings.withGuide, l = `${n ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${o.message}\n`, g = this.value ?? [], a = (t, u) => {\n const s = this.options, r = g.includes(t.value) || t.group === true && this.isGroupSelected(`${t.value}`);\n return !u && typeof t.group == \"string\" && this.options[this.cursor].value === t.group ? m(t, r ? \"group-active-selected\" : \"group-active\", s) : u && r ? m(t, \"active-selected\", s) : r ? m(t, \"selected\", s) : m(t, u ? \"active\" : \"inactive\", s);\n };\n switch (this.state) {\n case \"submit\": {\n const t = this.options.filter(({ value: s }) => g.includes(s)).map((s) => m(s, \"submitted\")), u = t.length === 0 ? \"\" : ` ${t.join(styleText(\"dim\", \", \"))}`;\n return `${l}${n ? styleText(\"gray\", S_BAR) : \"\"}${u}`;\n }\n case \"cancel\": {\n const t = this.options.filter(({ value: u }) => g.includes(u)).map((u) => m(u, \"cancelled\")).join(styleText(\"dim\", \", \"));\n return `${l}${n ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${t.trim() ? `${t}${n ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}` : \"\"}`;\n }\n case \"error\": {\n const t = n ? `${styleText(\"yellow\", S_BAR)} ` : \"\", u = this.error.split(`\n`).map(\n (i, h) => h === 0 ? `${n ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", i)}` : ` ${i}`\n ).join(`\n`), s = l.split(`\n`).length, r = u.split(`\n`).length + 1, c = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: s + r,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${c}\n${u}\n`;\n }\n default: {\n const t = n ? `${styleText(\"cyan\", S_BAR)} ` : \"\", u = l.split(`\n`).length, s = formatInstructionFooter(MULTISELECT_INSTRUCTIONS, n), r = s.join(`\n`), c = s.length + 1, i = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: u + c,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${i}\n${r}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst log = {\n message: (s = [], {\n symbol: e = styleText(\"gray\", S_BAR),\n secondarySymbol: r = styleText(\"gray\", S_BAR),\n output: m = process.stdout,\n spacing: l = 1,\n withGuide: c\n } = {}) => {\n const t = [], o = c ?? settings.withGuide, f = o ? r : \"\", O = o ? `${e} ` : \"\", u = o ? `${r} ` : \"\";\n for (let i = 0; i < l; i++)\n t.push(f);\n const g = Array.isArray(s) ? s : s.split(`\n`);\n if (g.length > 0) {\n const [i, ...y] = g;\n i.length > 0 ? t.push(`${O}${i}`) : t.push(o ? e : \"\");\n for (const p of y)\n p.length > 0 ? t.push(`${u}${p}`) : t.push(o ? r : \"\");\n }\n m.write(`${t.join(`\n`)}\n`);\n },\n info: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"blue\", S_INFO) });\n },\n success: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_SUCCESS) });\n },\n step: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_STEP_SUBMIT) });\n },\n warn: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"yellow\", S_WARN) });\n },\n /** alias for `log.warn()`. */\n warning: (s, e) => {\n log.warn(s, e);\n },\n error: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"red\", S_ERROR) });\n }\n};\n\nconst cancel = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${styleText(\"red\", o)}\n\n`);\n}, intro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_START)} ` : \"\";\n i.write(`${e}${o}\n`);\n}, outro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR)}\n${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${o}\n\n`);\n};\n\nconst multiline = (e) => new MultiLinePrompt({\n validate: e.validate,\n placeholder: e.placeholder,\n defaultValue: e.defaultValue,\n initialValue: e.initialValue,\n showSubmit: e.showSubmit,\n output: e.output,\n signal: e.signal,\n input: e.input,\n render() {\n const i = e?.withGuide ?? settings.withGuide, o = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, h = e.placeholder ? styleText(\"inverse\", e.placeholder[0]) + styleText(\"dim\", e.placeholder.slice(1)) : styleText([\"inverse\", \"hidden\"], \"_\"), a = this.userInput ? this.userInputWithCursor : h, s = this.value ?? \"\", c = e.showSubmit ? `\n ${styleText(this.focused === \"submit\" ? \"cyan\" : \"dim\", \"[ submit ]\")}` : \"\";\n switch (this.state) {\n case \"error\": {\n const n = `${styleText(\"yellow\", S_BAR)} `, r = i ? wrapTextWithPrefix(e.output, a, n, void 0) : a, u = styleText(\"yellow\", S_BAR_END);\n return `${o}${r}\n${u} ${styleText(\"yellow\", this.error)}${c}\n`;\n }\n case \"submit\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n s,\n n,\n void 0,\n void 0,\n (u) => styleText(\"dim\", u)\n ) : s ? styleText(\"dim\", s) : \"\";\n return `${o}${r}`;\n }\n case \"cancel\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n s,\n n,\n void 0,\n void 0,\n (u) => styleText([\"strikethrough\", \"dim\"], u)\n ) : s ? styleText([\"strikethrough\", \"dim\"], s) : \"\";\n return `${o}${r}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\", u = i ? wrapTextWithPrefix(e.output, a, n) : a;\n return `${o}${u}\n${r}${c}\n`;\n }\n }\n }\n}).prompt();\n\nconst W$1 = (o) => o, C = (o, e, s) => {\n const a = {\n hard: true,\n trim: false\n }, i = wrapAnsi(o, e, a).split(`\n`), c = i.reduce((n, t) => Math.max(l(t), n), 0), u = i.map(s).reduce((n, t) => Math.max(l(t), n), 0), g = e - (u - c);\n return wrapAnsi(o, g, a);\n};\nconst note = (o = \"\", e = \"\", s) => {\n const a = s?.output ?? process$1.stdout, i = s?.withGuide ?? settings.withGuide, c = s?.format ?? W$1, g = [\"\", ...C(o, getColumns(a) - 6, c).split(`\n`).map(c), \"\"], n = l(e), t = Math.max(\n g.reduce((m, F) => {\n const O = l(F);\n return O > m ? O : m;\n }, 0),\n n\n ) + 2, h = g.map(\n (m) => `${styleText(\"gray\", S_BAR)} ${m}${\" \".repeat(t - l(m))}${styleText(\"gray\", S_BAR)}`\n ).join(`\n`), T = i ? `${styleText(\"gray\", S_BAR)}\n` : \"\", l$1 = i ? S_CONNECT_LEFT : S_CORNER_BOTTOM_LEFT;\n a.write(\n `${T}${styleText(\"green\", S_STEP_SUBMIT)} ${styleText(\"reset\", e)} ${styleText(\n \"gray\",\n S_BAR_H.repeat(Math.max(t - n - 1, 1)) + S_CORNER_TOP_RIGHT\n )}\n${h}\n${styleText(\"gray\", l$1 + S_BAR_H.repeat(t + 2) + S_CORNER_BOTTOM_RIGHT)}\n`\n );\n};\n\nconst password = (r) => new PasswordPrompt({\n validate: r.validate,\n mask: r.mask ?? S_PASSWORD_MASK,\n signal: r.signal,\n input: r.input,\n output: r.output,\n render() {\n const e = r.withGuide ?? settings.withGuide, o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${r.message}\n`, c = this.userInputWithCursor, i = this.masked;\n switch (this.state) {\n case \"error\": {\n const s = e ? `${styleText(\"yellow\", S_BAR)} ` : \"\", n = e ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\", l = i ?? \"\";\n return r.clearOnError && this.clear(), `${o.trim()}\n${s}${l}\n${n}${styleText(\"yellow\", this.error)}\n`;\n }\n case \"submit\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText(\"dim\", i) : \"\";\n return `${o}${s}${n}`;\n }\n case \"cancel\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText([\"strikethrough\", \"dim\"], i) : \"\";\n return `${o}${s}${n}${i && e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const s = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", n = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${s}${c}\n${n}\n`;\n }\n }\n }\n}).prompt();\n\nconst path = (e) => {\n const a = e.validate;\n return autocomplete({\n ...e,\n initialUserInput: e.initialValue ?? e.root ?? process.cwd(),\n maxItems: 5,\n validate(t) {\n if (!Array.isArray(t)) {\n if (!t)\n return \"Please select a path\";\n if (a)\n return runValidation(a, t);\n }\n },\n options() {\n const t = this.userInput;\n if (t === \"\")\n return [];\n try {\n let i;\n existsSync(t) ? lstatSync(t).isDirectory() && (!e.directory || t.endsWith(\"/\")) ? i = t : i = dirname(t) : i = dirname(t);\n const c = t.length > 1 && t.endsWith(\"/\") ? t.slice(0, -1) : t;\n return readdirSync(i).map((r) => {\n const n = join(i, r), m = lstatSync(n);\n return {\n name: r,\n path: n,\n isDirectory: m.isDirectory()\n };\n }).filter(\n ({ path: r, isDirectory: n }) => r.startsWith(c) && (n || !e.directory)\n ).map((r) => ({\n value: r.path\n }));\n } catch {\n return [];\n }\n }\n });\n};\n\nconst W = (l) => styleText(\"magenta\", l);\nconst spinner = ({\n indicator: l = \"dots\",\n onCancel: h,\n output: n = process.stdout,\n cancelMessage: G,\n errorMessage: O,\n frames: E = unicode ? [\"\\u25D2\", \"\\u25D0\", \"\\u25D3\", \"\\u25D1\"] : [\"\\u2022\", \"o\", \"O\", \"0\"],\n delay: F = unicode ? 80 : 120,\n signal: m,\n ...I\n} = {}) => {\n const u = isCI();\n let M, T, d = false, S = false, s = \"\", p, w = performance.now();\n const x = getColumns(n), k = I?.styleFrame ?? W, g = (e) => {\n const r = e > 1 ? O ?? settings.messages.error : G ?? settings.messages.cancel;\n S = e === 1, d && (a(r, e), S && typeof h == \"function\" && h());\n }, f = () => g(2), i = () => g(1), A = () => {\n process.on(\"uncaughtExceptionMonitor\", f), process.on(\"unhandledRejection\", f), process.on(\"SIGINT\", i), process.on(\"SIGTERM\", i), process.on(\"exit\", g), m && m.addEventListener(\"abort\", i);\n }, H = () => {\n process.removeListener(\"uncaughtExceptionMonitor\", f), process.removeListener(\"unhandledRejection\", f), process.removeListener(\"SIGINT\", i), process.removeListener(\"SIGTERM\", i), process.removeListener(\"exit\", g), m && m.removeEventListener(\"abort\", i);\n }, y = () => {\n if (p === void 0) return;\n u && n.write(`\n`);\n const r = wrapAnsi(p, x, {\n hard: true,\n trim: false\n }).split(`\n`);\n r.length > 1 && n.write(cursor.up(r.length - 1)), n.write(cursor.to(0)), n.write(erase.down());\n }, C = (e) => e.replace(/\\.+$/, \"\"), _ = (e) => {\n const r = (performance.now() - e) / 1e3, t = Math.floor(r / 60), o = Math.floor(r % 60);\n return t > 0 ? `[${t}m ${o}s]` : `[${o}s]`;\n }, N = I.withGuide ?? settings.withGuide, P = (e = \"\") => {\n d = true, M = block({ output: n }), s = C(e), w = performance.now(), N && n.write(`${styleText(\"gray\", S_BAR)}\n`);\n let r = 0, t = 0;\n A(), T = setInterval(() => {\n if (u && s === p)\n return;\n y(), p = s;\n const o = k(E[r]);\n let v;\n if (u)\n v = `${o} ${s}...`;\n else if (l === \"timer\")\n v = `${o} ${s} ${_(w)}`;\n else {\n const B = \".\".repeat(Math.floor(t)).slice(0, 3);\n v = `${o} ${s}${B}`;\n }\n const j = wrapAnsi(v, x, {\n hard: true,\n trim: false\n });\n n.write(j), r = r + 1 < E.length ? r + 1 : 0, t = t < 4 ? t + 0.125 : 0;\n }, F);\n }, a = (e = \"\", r = 0, t = false) => {\n if (!d) return;\n d = false, clearInterval(T), y();\n const o = r === 0 ? styleText(\"green\", S_STEP_SUBMIT) : r === 1 ? styleText(\"red\", S_STEP_CANCEL) : styleText(\"red\", S_STEP_ERROR);\n s = e ?? s, t || (l === \"timer\" ? n.write(`${o} ${s} ${_(w)}\n`) : n.write(`${o} ${s}\n`)), H(), M();\n };\n return {\n start: P,\n stop: (e = \"\") => a(e, 0),\n message: (e = \"\") => {\n s = C(e ?? s);\n },\n cancel: (e = \"\") => a(e, 1),\n error: (e = \"\") => a(e, 2),\n clear: () => a(\"\", 0, true),\n get isCancelled() {\n return S;\n }\n };\n};\n\nconst u = {\n light: unicodeOr(\"\\u2500\", \"-\"),\n heavy: unicodeOr(\"\\u2501\", \"=\"),\n block: unicodeOr(\"\\u2588\", \"#\")\n};\nfunction progress({\n style: o = \"heavy\",\n max: d = 100,\n size: v = 40,\n ...x\n} = {}) {\n const r = spinner(x);\n let a = 0, n = \"\";\n const c = Math.max(1, d), l = Math.max(1, v), S = (t) => {\n switch (t) {\n case \"initial\":\n case \"active\":\n return (e) => styleText(\"magenta\", e);\n case \"error\":\n case \"cancel\":\n return (e) => styleText(\"red\", e);\n case \"submit\":\n return (e) => styleText(\"green\", e);\n default:\n return (e) => styleText(\"magenta\", e);\n }\n }, p = (t, e) => {\n const m = Math.floor(a / c * l);\n return `${S(t)(u[o].repeat(m))}${styleText(\"dim\", u[o].repeat(l - m))} ${e}`;\n }, h = (t = \"\") => {\n n = t, r.start(p(\"initial\", t));\n }, g = (t = 1, e) => {\n a = Math.min(c, t + a), r.message(p(\"active\", e ?? n)), n = e ?? n;\n };\n return {\n start: h,\n stop: r.stop,\n cancel: r.cancel,\n error: r.error,\n clear: r.clear,\n advance: g,\n isCancelled: r.isCancelled,\n message: (t) => g(0, t)\n };\n}\n\nconst SELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst c = (t, a) => t.includes(`\n`) ? t.split(`\n`).map((i) => a(i)).join(`\n`) : a(t);\nconst select = (t) => {\n const a = (i, m) => {\n const s = i.label ?? String(i.value);\n switch (m) {\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${c(s, (n) => styleText(\"gray\", n))}${i.hint ? ` ${styleText(\"dim\", `(${i.hint ?? \"disabled\"})`)}` : \"\"}`;\n case \"selected\":\n return `${c(s, (n) => styleText(\"dim\", n))}`;\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}${i.hint ? ` ${styleText(\"dim\", `(${i.hint})`)}` : \"\"}`;\n case \"cancelled\":\n return `${c(s, (n) => styleText([\"strikethrough\", \"dim\"], n))}`;\n default:\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${c(s, (n) => styleText(\"dim\", n))}`;\n }\n };\n return new SelectPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n render() {\n const i = t.withGuide ?? settings.withGuide, m = `${symbol(this.state)} `, s = `${symbolBar(this.state)} `, n = wrapTextWithPrefix(\n t.output,\n t.message,\n s,\n m\n ), u = `${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${n}\n`;\n switch (this.state) {\n case \"submit\": {\n const r = i ? `${styleText(\"gray\", S_BAR)} ` : \"\", o = wrapTextWithPrefix(\n t.output,\n a(this.options[this.cursor], \"selected\"),\n r\n );\n return `${u}${o}`;\n }\n case \"cancel\": {\n const r = i ? `${styleText(\"gray\", S_BAR)} ` : \"\", o = wrapTextWithPrefix(\n t.output,\n a(this.options[this.cursor], \"cancelled\"),\n r\n );\n return `${u}${o}${i ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", o = u.split(`\n`).length, $ = formatInstructionFooter(SELECT_INSTRUCTIONS, i), h = $.join(`\n`), b = $.length + 1;\n return `${u}${r}${limitOptions({\n output: t.output,\n cursor: this.cursor,\n options: this.options,\n maxItems: t.maxItems,\n columnPadding: r.length,\n rowPadding: o + b,\n style: (p, x) => a(p, p.disabled ? \"disabled\" : x ? \"active\" : \"inactive\")\n }).join(`\n${r}`)}\n${h}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst selectKey = (t) => {\n const l = (e, a = \"inactive\") => {\n const n = e.label ?? String(e.value);\n return a === \"selected\" ? `${styleText(\"dim\", n)}` : a === \"cancelled\" ? `${styleText([\"strikethrough\", \"dim\"], n)}` : a === \"active\" ? `${styleText([\"bgCyan\", \"gray\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}` : `${styleText([\"gray\", \"bgWhite\", \"inverse\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}`;\n };\n return new SelectKeyPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n caseSensitive: t.caseSensitive,\n render() {\n const e = t.withGuide ?? settings.withGuide, a = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`;\n switch (this.state) {\n case \"submit\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = this.options.find((u) => u.value === this.value) ?? t.options[0], c = wrapTextWithPrefix(\n t.output,\n l(s, \"selected\"),\n n\n );\n return `${a}${c}`;\n }\n case \"cancel\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = wrapTextWithPrefix(\n t.output,\n l(this.options[0], \"cancelled\"),\n n\n );\n return `${a}${s}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const n = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = e ? styleText(\"cyan\", S_BAR_END) : \"\", c = this.options.map(\n (u, $) => wrapTextWithPrefix(\n t.output,\n l(u, $ === this.cursor ? \"active\" : \"inactive\"),\n n\n )\n ).join(`\n`);\n return `${a}${c}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst i = `${styleText(\"gray\", S_BAR)} `;\nconst stream = {\n message: async (e, { symbol: l = styleText(\"gray\", S_BAR) } = {}) => {\n process.stdout.write(`${styleText(\"gray\", S_BAR)}\n${l} `);\n let s = 3;\n for await (let r of e) {\n r = r.replace(/\\n/g, `\n${i}`), r.includes(`\n`) && (s = 3 + stripVTControlCharacters(r.slice(r.lastIndexOf(`\n`))).length);\n const o = stripVTControlCharacters(r).length;\n s + o < process.stdout.columns ? (s += o, process.stdout.write(r)) : (process.stdout.write(`\n${i}${r.trimStart()}`), s = 3 + stripVTControlCharacters(r.trimStart()).length);\n }\n process.stdout.write(`\n`);\n },\n info: (e) => stream.message(e, { symbol: styleText(\"blue\", S_INFO) }),\n success: (e) => stream.message(e, { symbol: styleText(\"green\", S_SUCCESS) }),\n step: (e) => stream.message(e, { symbol: styleText(\"green\", S_STEP_SUBMIT) }),\n warn: (e) => stream.message(e, { symbol: styleText(\"yellow\", S_WARN) }),\n /** alias for `log.warn()`. */\n warning: (e) => stream.warn(e),\n error: (e) => stream.message(e, { symbol: styleText(\"red\", S_ERROR) })\n};\n\nconst tasks = async (o, e) => {\n for (const t of o) {\n if (t.enabled === false) continue;\n const s = spinner(e);\n s.start(t.title);\n const n = await t.task(s.message);\n s.stop(n || t.title);\n }\n};\n\nconst A = (l) => l.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g, \"\");\nconst taskLog = (l) => {\n const r = l.output ?? process.stdout, O = getColumns(r), i = styleText(\"gray\", S_BAR), p = l.spacing ?? 1, k = 3, m = l.retainLog === true, d = !isCI() && isTTY(r);\n r.write(`${i}\n`), r.write(`${styleText(\"green\", S_STEP_SUBMIT)} ${l.title}\n`);\n for (let e = 0; e < p; e++)\n r.write(`${i}\n`);\n const n = [\n {\n value: \"\",\n full: \"\"\n }\n ];\n let v = false;\n const f = (e) => {\n if (n.length === 0)\n return;\n let s = 0;\n e && (s += p + 2);\n for (const t of n) {\n const { value: o, result: a } = t;\n let g = a?.message ?? o;\n if (g.length === 0)\n continue;\n a === void 0 && t.header !== void 0 && t.header !== \"\" && (g += `\n${t.header}`);\n const x = g.split(`\n`).reduce((b, w) => w === \"\" ? b + 1 : b + Math.ceil((w.length + k) / O), 0);\n s += x;\n }\n s > 0 && (s += 1, r.write(erase.lines(s)));\n }, h = (e, s, t) => {\n const o = t ? `${e.full}\n${e.value}` : e.value;\n e.header !== void 0 && e.header !== \"\" && log.message(\n e.header.split(`\n`).map((a) => styleText(\"bold\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: 0\n }\n ), log.message(\n o.split(`\n`).map((a) => styleText(\"dim\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: s ?? p\n }\n );\n }, T = () => {\n for (const e of n) {\n const { header: s, value: t, full: o } = e;\n (s === void 0 || s.length === 0) && t.length === 0 || h(e, void 0, m === true && o.length > 0);\n }\n }, L = (e, s, t) => {\n if (f(false), (t?.raw !== true || !v) && e.value !== \"\" && (e.value += `\n`), e.value += A(s), v = t?.raw === true, l.limit !== void 0) {\n const o = e.value.split(`\n`), a = o.length - l.limit;\n if (a > 0) {\n const g = o.splice(0, a);\n m && (e.full += (e.full === \"\" ? \"\" : `\n`) + g.join(`\n`));\n }\n e.value = o.join(`\n`);\n }\n d && y();\n }, y = () => {\n for (const e of n)\n e.result ? e.result.status === \"error\" ? log.error(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : log.success(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : e.value !== \"\" && h(e, 0);\n }, B = (e, s) => {\n f(false), e.result = s, d && y();\n };\n return {\n message(e, s) {\n L(n[0], e, s);\n },\n group(e) {\n const s = {\n header: e,\n value: \"\",\n full: \"\"\n };\n return n.push(s), {\n message(t, o) {\n L(s, t, o);\n },\n error(t) {\n B(s, {\n status: \"error\",\n message: t\n });\n },\n success(t) {\n B(s, {\n status: \"success\",\n message: t\n });\n }\n };\n },\n error(e, s) {\n f(true), log.error(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog !== false && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n },\n success(e, s) {\n f(true), log.success(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog === true && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n }\n };\n};\n\nconst text = (t) => new TextPrompt({\n validate: t.validate,\n placeholder: t.placeholder,\n defaultValue: t.defaultValue,\n initialValue: t.initialValue,\n output: t.output,\n signal: t.signal,\n input: t.input,\n render() {\n const i = t?.withGuide ?? settings.withGuide, s = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${t.message}\n`, c = t.placeholder ? styleText(\"inverse\", t.placeholder[0]) + styleText(\"dim\", t.placeholder.slice(1)) : styleText([\"inverse\", \"hidden\"], \"_\"), o = this.userInput ? this.userInputWithCursor : c, a = this.value ?? \"\";\n switch (this.state) {\n case \"error\": {\n const n = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", r = i ? `${styleText(\"yellow\", S_BAR)} ` : \"\", d = i ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${s.trim()}\n${r}${o}\n${d}${n}\n`;\n }\n case \"submit\": {\n const n = a ? ` ${styleText(\"dim\", a)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}`;\n }\n case \"cancel\": {\n const n = a ? ` ${styleText([\"strikethrough\", \"dim\"], a)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}${a.trim() ? `\n${r}` : \"\"}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${s}${n}${o}\n${r}\n`;\n }\n }\n }\n}).prompt();\n\nexport { MULTISELECT_INSTRUCTIONS, SELECT_INSTRUCTIONS, S_BAR, S_BAR_END, S_BAR_END_RIGHT, S_BAR_H, S_BAR_START, S_BAR_START_RIGHT, S_CHECKBOX_ACTIVE, S_CHECKBOX_INACTIVE, S_CHECKBOX_SELECTED, S_CONNECT_LEFT, S_CORNER_BOTTOM_LEFT, S_CORNER_BOTTOM_RIGHT, S_CORNER_TOP_LEFT, S_CORNER_TOP_RIGHT, S_ERROR, S_INFO, S_PASSWORD_MASK, S_RADIO_ACTIVE, S_RADIO_INACTIVE, S_STEP_ACTIVE, S_STEP_CANCEL, S_STEP_ERROR, S_STEP_SUBMIT, S_SUCCESS, S_WARN, autocomplete, autocompleteMultiselect, box, cancel, confirm, date, formatInstructionFooter, group, groupMultiselect, intro, isCI, isTTY, limitOptions, log, multiline, multiselect, note, outro, password, path, progress, select, selectKey, spinner, stream, symbol, symbolBar, taskLog, tasks, text, unicode, unicodeOr };\n",
|
|
14
14
|
"const RED = \"\\x1b[31m\";\nconst BOLD = \"\\x1b[1m\";\nconst RESET = \"\\x1b[0m\";\n\nexport const BANNER = [\n\t\"\",\n\t`${BOLD}${RED} ██████╗ █████╗ ██╗ ██╗ ████████╗ █████╗ ██╗ ███████╗${RESET}`,\n\t`${BOLD}${RED} ██╔══██╗ ██╔══██╗ ██║ ██╔╝ ╚══██╔══╝ ██╔══██╗ ██║ ██╔════╝${RESET}`,\n\t`${BOLD}${RED} ██████╔╝ ███████║ █████╔╝ ██║ ███████║ ██║ ███████╗${RESET}`,\n\t`${BOLD}${RED} ██╔══██╗ ██╔══██║ ██╔═██╗ ██║ ██╔══██║ ██ ██║ ╚════██║${RESET}`,\n\t`${BOLD}${RED} ██║ ██║ ██║ ██║ ██║ ██╗ ██║ ██║ ██║ ██╗╚█████╔╝ ███████║${RESET}`,\n\t`${BOLD}${RED} ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚════╝ ╚══════╝${RESET}`,\n\t\"\",\n\t`${BOLD} ────────────────────────Rhein Sullivan──────────────────────────────────${RESET}`,\n\t`${BOLD} Rakta.js — React.js, Bun, TypeScript, Easy Router, and Fullstack Generator${RESET}`,\n\t`${BOLD} Small in size. Fierce in speed. Alive in every route.${RESET}`,\n\t`${BOLD} ────────────────────────Vyagra Nexus™──────────────────────────────────${RESET}`,\n\t\"\",\n].join(\"\\n\");\n\nexport function printBanner(): void {\n\tconsole.log(BANNER);\n}\n",
|
|
15
15
|
"import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport type { ProjectFile } from \"./types\";\n\nexport function ensureDirectory(dirPath: string): void {\n\tif (!existsSync(dirPath)) {\n\t\tmkdirSync(dirPath, {\n\t\t\trecursive: true,\n\t\t});\n\t}\n}\n\nexport function writeFile(\n\tabsolutePath: string,\n\tfileContent: string | Uint8Array,\n): void {\n\tensureDirectory(dirname(absolutePath));\n\twriteFileSync(absolutePath, fileContent);\n}\n\nexport function writeProjectFiles(\n\tprojectRoot: string,\n\tgeneratedFiles: ProjectFile[],\n): void {\n\tfor (const projectFile of generatedFiles) {\n\t\tconst absolutePath = join(resolve(projectRoot), projectFile.path);\n\t\twriteFile(absolutePath, projectFile.content);\n\t}\n}\n\nexport function projectDirectoryExists(projectName: string): boolean {\n\treturn existsSync(resolve(process.cwd(), projectName));\n}\n",
|
|
16
|
-
"import { readFileSync } from \"node:fs\";\nimport type {\n\tBackendFramework,\n\tCssFramework,\n\tDatabase,\n\tProjectConfig,\n\tProjectFile,\n} from \"./types\";\nimport { BACKEND_DISPLAY, CSS_DISPLAY, DATABASE_DISPLAY } from \"./types\";\nimport {\n\tCOMPONENTS_MODAL_CODE,\n\tCORAL_OBSTACLE_CODE,\n\tDEPLOY_MODAL_CODE,\n\tDOCS_MODAL_CODE,\n\tSHRIMP_CHARACTER_CODE,\n\tWELCOME_PAGE_CODE,\n} from \"./welcomeComponents\";\n\nconst DEFAULT_METADATA_TITLE =\n\t\"Rakta.js | Small in size. Fierce in speed. Alive in every route\";\nconst FAVICON_BYTES = readFileSync(\n\tnew URL(\"../assets/favicon.ico\", import.meta.url),\n);\n\n// ─── Root files ─────────────────────────────────────────────────────────────\n\nfunction getRootFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\tconst { projectName, projectMode } = projectConfig;\n\n\tconst workspaces =\n\t\tprojectMode === \"fullstack\" ? [\"frontend\", \"backend\", \"shared\"] : [];\n\n\treturn [\n\t\t{\n\t\t\tpath: \"package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: projectName,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\t...(projectMode === \"fullstack\" ? { workspaces } : {}),\n\t\t\t\t\tscripts:\n\t\t\t\t\t\tprojectMode === \"fullstack\"\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\"dev:frontend\": \"cd frontend && bun run dev\",\n\t\t\t\t\t\t\t\t\t\"dev:backend\": \"cd backend && bun run dev\",\n\t\t\t\t\t\t\t\t\t\"build:frontend\": \"cd frontend && bun run build\",\n\t\t\t\t\t\t\t\t\t\"build:backend\": \"cd backend && bun run build\",\n\t\t\t\t\t\t\t\t\tbuild: \"bun run build:frontend && bun run build:backend\",\n\t\t\t\t\t\t\t\t\tstart: \"cd backend && bun run start\",\n\t\t\t\t\t\t\t\t\ttypecheck:\n\t\t\t\t\t\t\t\t\t\t\"cd frontend && bun run typecheck && cd ../backend && bun run typecheck\",\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\tdescription: `${projectName} — built with Rakta.js`,\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"tsconfig.base.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\ttarget: \"ESNext\",\n\t\t\t\t\t\tmodule: \"ESNext\",\n\t\t\t\t\t\tmoduleResolution: \"Bundler\",\n\t\t\t\t\t\tjsx: \"react-jsx\",\n\t\t\t\t\t\tlib: [\"ESNext\", \"DOM\", \"DOM.Iterable\"],\n\t\t\t\t\t\tstrict: true,\n\t\t\t\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\t\t\t\texactOptionalPropertyTypes: true,\n\t\t\t\t\t\tskipLibCheck: true,\n\t\t\t\t\t\tesModuleInterop: true,\n\t\t\t\t\t\tallowSyntheticDefaultImports: true,\n\t\t\t\t\t\tresolveJsonModule: true,\n\t\t\t\t\t\tverbatimModuleSyntax: true,\n\t\t\t\t\t\tisolatedModules: true,\n\t\t\t\t\t},\n\t\t\t\t\texclude: [\"node_modules\", \"dist\", \"**/dist/**\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"bunfig.toml\",\n\t\t\tcontent: `[install]\\nauto = \"fallback\"\\nexact = false\\nregistry = \"https://registry.npmjs.org/\"\\n\\n[run]\\nbun = true\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".npmrc\",\n\t\t\tcontent: `registry=https://registry.npmjs.org/\\nstrict-ssl=true\\nfetch-retries=5\\nfetch-retry-mintimeout=20000\\nfetch-retry-maxtimeout=120000\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".env.example\",\n\t\t\tcontent: `NODE_ENV=development\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".gitignore\",\n\t\t\tcontent: `node_modules/\\ndist/\\n.env\\n.env.*\\n!.env.example\\n.DS_Store\\n*.log\\n.rakta/\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"README.md\",\n\t\t\tcontent: generateProjectReadme(projectConfig),\n\t\t},\n\t];\n}\n\n// ─── Frontend-only starter (ShrimpRun game) ─────────────────────────────────\n\nfunction getFrontendOnlyFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\tconst { projectName, cssFramework } = projectConfig;\n\tconst styleFileName =\n\t\tcssFramework === \"sass\" ? \"globals.scss\" : \"globals.css\";\n\n\tconst files: ProjectFile[] = [\n\t\t{\n\t\t\tpath: \"package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: projectName,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\ttype: \"module\",\n\t\t\t\t\tscripts: {\n\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\troutes: \"rakta routes\",\n\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t},\n\t\t\t\t\tdependencies: {\n\t\t\t\t\t\traktajs: \"^0.1.6\",\n\t\t\t\t\t\treact: \"^19.2.7\",\n\t\t\t\t\t\t\"react-dom\": \"^19.2.7\",\n\t\t\t\t\t\t\"react-icons\": \"^5.2.1\",\n\t\t\t\t\t\tmotion: \"^12.0.0\",\n\t\t\t\t\t\t...getCssDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t\tdevDependencies: {\n\t\t\t\t\t\t\"@types/react\": \"^19.2.17\",\n\t\t\t\t\t\t\"@types/react-dom\": \"^19.2.3\",\n\t\t\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t\t\t...getCssDevDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"./tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./\",\n\t\t\t\t\t\ttypes: [\"react\", \"react-dom\"],\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\n\t\t\t\t\t\t\"rakta-env.d.ts\",\n\t\t\t\t\t\t\"app/**/*\",\n\t\t\t\t\t\t\"components/**/*\",\n\t\t\t\t\t\t\"styles/**/*\",\n\t\t\t\t\t\t\"rakta.config.ts\",\n\t\t\t\t\t],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"rakta-env.d.ts\",\n\t\t\tcontent: generateFrontendOnlyRaktaEnv(),\n\t\t},\n\t\t{\n\t\t\tpath: \"rakta.config.ts\",\n\t\t\tcontent: `import { defineRaktaConfig } from \"raktajs\";\\n\\nexport default defineRaktaConfig({\\n appName: \"${projectName}\",\\n seo: {\\n defaultTitle: \"${DEFAULT_METADATA_TITLE}\",\\n defaultDescription: \"Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\",\\n },\\n render: {\\n defaultMode: \"csr\",\\n routes: {},\\n },\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/layout.tsx\",\n\t\t\tcontent: generateFrontendOnlyLayout(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/page.tsx\",\n\t\t\tcontent: generateFrontendOnlyPage(projectName),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/loading.tsx\",\n\t\t\tcontent: generateFrontendOnlyLoading(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/error.tsx\",\n\t\t\tcontent: generateFrontendOnlyError(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/notFound.tsx\",\n\t\t\tcontent: generateFrontendOnlyNotFound(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/ComponentsModal.tsx\",\n\t\t\tcontent: COMPONENTS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/CoralObstacle.tsx\",\n\t\t\tcontent: CORAL_OBSTACLE_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/DeployModal.tsx\",\n\t\t\tcontent: DEPLOY_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/DocsModal.tsx\",\n\t\t\tcontent: DOCS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/ShrimpCharacter.tsx\",\n\t\t\tcontent: SHRIMP_CHARACTER_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: `styles/${styleFileName}`,\n\t\t\tcontent: getFrontendOnlyCssGlobals(cssFramework),\n\t\t},\n\t\t{\n\t\t\tpath: \"public/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"public/favicon.ico\",\n\t\t\tcontent: FAVICON_BYTES,\n\t\t},\n\t];\n\n\treturn processFilesForLanguage(files, projectConfig.useTypeScript);\n}\n\n// ─── Fullstack frontend files ────────────────────────────────────────────────\n\nfunction getFullstackFrontendFiles(\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tconst { projectName, cssFramework } = projectConfig;\n\tconst styleFileName =\n\t\tcssFramework === \"sass\" ? \"globals.scss\" : \"globals.css\";\n\n\tconst files: ProjectFile[] = [\n\t\t{\n\t\t\tpath: \"frontend/package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: `${projectName}-frontend`,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\tscripts: {\n\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\troutes: \"rakta routes\",\n\t\t\t\t\t\t\"imports:generate\": \"rakta imports:generate\",\n\t\t\t\t\t\t\"rpc:types\": \"rakta rpc:types\",\n\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t},\n\t\t\t\t\tdependencies: {\n\t\t\t\t\t\traktajs: \"^0.1.6\",\n\t\t\t\t\t\treact: \"^19.2.7\",\n\t\t\t\t\t\t\"react-dom\": \"^19.2.7\",\n\t\t\t\t\t\t\"react-icons\": \"^5.2.1\",\n\t\t\t\t\t\tmotion: \"^12.0.0\",\n\t\t\t\t\t\t...getCssDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t\tdevDependencies: {\n\t\t\t\t\t\t\"@types/react\": \"^19.2.17\",\n\t\t\t\t\t\t\"@types/react-dom\": \"^19.2.3\",\n\t\t\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t\t\t...getCssDevDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"../tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./\",\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\n\t\t\t\t\t\t\"app/**/*\",\n\t\t\t\t\t\t\"components/**/*\",\n\t\t\t\t\t\t\"lib/**/*\",\n\t\t\t\t\t\t\"stores/**/*\",\n\t\t\t\t\t\t\"schemas/**/*\",\n\t\t\t\t\t\t\"rakta.config.ts\",\n\t\t\t\t\t],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/rakta.config.ts\",\n\t\t\tcontent: `import { defineRaktaConfig } from \"raktajs\";\\n\\nexport default defineRaktaConfig({\\n appName: \"${projectName}\",\\n seo: {\\n defaultTitle: \"${DEFAULT_METADATA_TITLE}\",\\n defaultDescription: \"Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\",\\n },\\n render: {\\n defaultMode: \"csr\",\\n routes: {\\n \"/\": \"ssg\",\\n \"/about\": \"ssg\",\\n \"/blog\": \"csg\",\\n \"/blog/:slug\": \"csg\",\\n \"/dashboard\": \"csr\"\\n }\\n }\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/layout.tsx\",\n\t\t\tcontent: `import React from \"react\";\\nimport \"../styles/${styleFileName}\";\\n\\ninterface RootLayoutProps {\\n readonly children: React.ReactNode;\\n}\\n\\nexport default function RootLayout({ children }: RootLayoutProps) {\\n return (\\n <html lang=\"en\">\\n <body>{children}</body>\\n </html>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/page.tsx\",\n\t\t\tcontent: generateFullstackHomePage(projectName),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/about/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function AboutPage() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">ABOUT</p>\\n <h1>About ${projectName}</h1>\\n <p>This project is built with Rakta.js, React, Bun, and TypeScript.</p>\\n <a href=\"/\">Back to home</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/blog/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nconst BLOG_POSTS = [\\n { slug: \"getting-started\", title: \"Getting started with Rakta.js\" },\\n { slug: \"file-based-routing\", title: \"File-based routing explained\" },\\n { slug: \"type-safe-rpc\", title: \"Type-safe API with CarubanWire\" },\\n];\\n\\nexport default function BlogPage() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">BLOG</p>\\n <h1>Articles</h1>\\n <ul>\\n {BLOG_POSTS.map((post) => (\\n <li key={post.slug}>\\n <a href={\\`/blog/\\${post.slug}\\`}>{post.title}</a>\\n </li>\\n ))}\\n </ul>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/blog/[slug]/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\ninterface BlogPostPageProps {\\n readonly params: {\\n readonly slug?: string;\\n };\\n}\\n\\nexport default function BlogPostPage({ params }: BlogPostPageProps) {\\n const postTitle = params.slug?.replaceAll(\"-\", \" \") ?? \"Article\";\\n\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">BLOG POST</p>\\n <h1>{postTitle}</h1>\\n <p>Slug: <code>{params.slug}</code></p>\\n <a href=\"/blog\">Back to blog</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/loading.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function Loading() {\\n return (\\n <main className=\"page-shell\">\\n <p>Loading...</p>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/error.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\ninterface ErrorPageProps {\\n readonly error: Error;\\n readonly reset: () => void;\\n}\\n\\nexport default function ErrorPage({ error, reset }: ErrorPageProps) {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <h1>Something went wrong</h1>\\n <p>{error.message}</p>\\n <button type=\"button\" onClick={reset}>Try again</button>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/not-found.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function NotFound() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <h1>404</h1>\\n <p>The page you are looking for does not exist.</p>\\n <a href=\"/\">Return home</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/api/hello/route.ts\",\n\t\t\tcontent: `export async function GET(request: Request): Promise<Response> {\\n const requestUrl = new URL(request.url);\\n\\n return Response.json({\\n message: \"Hello from Rakta.js API\",\\n pathname: requestUrl.pathname,\\n timestamp: new Date().toISOString(),\\n });\\n}\\n\\nexport async function POST(request: Request): Promise<Response> {\\n const requestBody = await request.json() as Record<string, unknown>;\\n\\n return Response.json({\\n received: requestBody,\\n timestamp: new Date().toISOString(),\\n });\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/http.ts\",\n\t\t\tcontent: `export const API_URL = process.env[\"API_URL\"] ?? \"http://localhost:4000\";\\n\\nexport async function apiGet<TData>(path: string): Promise<TData> {\\n const response = await fetch(\\`\\${API_URL}\\${path}\\`);\\n\\n if (!response.ok) {\\n throw new Error(\\`Request failed with status \\${response.status}\\`);\\n }\\n\\n return response.json() as Promise<TData>;\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/routes.ts\",\n\t\t\tcontent: `export const ROUTES = {\\n home: \"/\",\\n about: \"/about\",\\n blog: \"/blog\",\\n blogPost: (slug: string) => \\`/blog/\\${slug}\\`,\\n apiHello: \"/api/hello\",\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/utils.ts\",\n\t\t\tcontent: `export function cn(...classNames: Array<string | undefined | null | false>): string {\\n return classNames.filter(Boolean).join(\" \");\\n}\\n\\nexport function slugify(text: string): string {\\n return text\\n .toLowerCase()\\n .replace(/[^a-z0-9]+/g, \"-\")\\n .replace(/(^-|-$)/g, \"\");\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/stores/counter.store.ts\",\n\t\t\tcontent: `import { createRaktaStore } from \"raktajs\";\\n\\ninterface CounterState {\\n readonly count: number;\\n readonly increment: () => void;\\n readonly decrement: () => void;\\n}\\n\\nexport const useCounterStore = createRaktaStore<CounterState>((setState, getState) => ({\\n count: 0,\\n increment: () => setState({ count: getState().count + 1 }),\\n decrement: () => setState({ count: getState().count - 1 }),\\n}));\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/schemas/user.schema.ts\",\n\t\t\tcontent: `import { object, string, number } from \"raktajs\";\\n\\nexport const userSchema = object({\\n name: string().min(1),\\n email: string().min(5),\\n age: number().min(0).max(120),\\n});\\n\\nexport type UserSchema = typeof userSchema;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: `frontend/styles/${styleFileName}`,\n\t\t\tcontent: getCssGlobals(cssFramework),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/public/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/public/favicon.ico\",\n\t\t\tcontent: FAVICON_BYTES,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/ComponentsModal.tsx\",\n\t\t\tcontent: COMPONENTS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/CoralObstacle.tsx\",\n\t\t\tcontent: CORAL_OBSTACLE_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/DeployModal.tsx\",\n\t\t\tcontent: DEPLOY_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/DocsModal.tsx\",\n\t\t\tcontent: DOCS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/ShrimpCharacter.tsx\",\n\t\t\tcontent: SHRIMP_CHARACTER_CODE,\n\t\t},\n\t];\n\n\treturn processFilesForLanguage(files, projectConfig.useTypeScript);\n}\n\nfunction processFilesForLanguage(\n\tfiles: ProjectFile[],\n\tuseTypeScript: boolean,\n): ProjectFile[] {\n\tif (useTypeScript) return files;\n\n\treturn files.map((file) => {\n\t\tif (typeof file.content === \"string\") {\n\t\t\tlet path = file.path;\n\t\t\tif (path.endsWith(\".tsx\")) path = path.replace(\".tsx\", \".jsx\");\n\t\t\telse if (path.endsWith(\".ts\")) path = path.replace(\".ts\", \".js\");\n\n\t\t\t// Simple TS stripping regex\n\t\t\tlet code = file.content;\n\t\t\tcode = code.replace(/^interface\\s+\\w+\\s*\\{[\\s\\S]*?\\n\\}\\n/gm, \"\");\n\t\t\tcode = code.replace(/^type\\s+\\w+\\s*=[\\s\\S]*?;\\n/gm, \"\");\n\t\t\t// Remove types like: `function Foo({ a }: FooProps) {` -> `function Foo({ a }) {`\n\t\t\tcode = code.replace(/:\\s*[A-Z]\\w*(Props|State)\\b/g, \"\");\n\t\t\t// Remove `(request: Request): Promise<Response>` -> `(request)`\n\t\t\tcode = code.replace(\n\t\t\t\t/:\\s*(Request|Response|Promise<[^>]+>|string|number|boolean|any|unknown)/g,\n\t\t\t\t\"\",\n\t\t\t);\n\n\t\t\treturn { ...file, path, content: code };\n\t\t}\n\t\treturn file;\n\t});\n}\n\n// ─── Backend files ───────────────────────────────────────────────────────────\n\nfunction getBackendFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t...getBackendCommonFiles(projectConfig),\n\t\t...getBackendFrameworkFiles(projectConfig.backendFramework, projectConfig),\n\t];\n}\n\nfunction getBackendCommonFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/src/env.ts\",\n\t\t\tcontent: `function optionalEnv(envKey: string, fallbackValue: string): string {\\n return process.env[envKey] ?? fallbackValue;\\n}\\n\\nexport const env = {\\n port: Number(optionalEnv(\"PORT\", \"4000\")),\\n nodeEnv: optionalEnv(\"NODE_ENV\", \"development\"),\\n corsOrigin: optionalEnv(\"CORS_ORIGIN\", \"http://localhost:3000\"),\\n databaseUrl: optionalEnv(\"DATABASE_URL\", \"\"),\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/config/app.config.ts\",\n\t\t\tcontent: `import { env } from \"../env\";\\n\\nexport const appConfig = {\\n name: \"${projectConfig.projectName} API\",\\n version: \"0.1.0\",\\n port: env.port,\\n nodeEnv: env.nodeEnv,\\n corsOrigin: env.corsOrigin,\\n isDev: env.nodeEnv === \"development\",\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/config/database.config.ts\",\n\t\t\tcontent: getDatabaseConfig(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/database/client.ts\",\n\t\t\tcontent: getDatabaseClient(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/controllers/hello.controller.ts\",\n\t\t\tcontent: `export interface HelloResponse {\\n readonly success: boolean;\\n readonly message: string;\\n readonly framework: string;\\n readonly version: string;\\n readonly timestamp: string;\\n}\\n\\nexport function helloController(): HelloResponse {\\n return {\\n success: true,\\n message: \"Hello from ${projectConfig.projectName} API\",\\n framework: \"${BACKEND_DISPLAY[projectConfig.backendFramework]}\",\\n version: \"0.1.0\",\\n timestamp: new Date().toISOString(),\\n };\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/.env.example\",\n\t\t\tcontent: getDatabaseEnvExample(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"../tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./src\",\n\t\t\t\t\t\ttypes: [\"node\", \"bun\"],\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\"src/**/*\"],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/database/schema/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getBackendFrameworkFiles(\n\tselectedFramework: BackendFramework,\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tswitch (selectedFramework) {\n\t\tcase \"gaman\":\n\t\t\treturn getGamanFiles(projectConfig);\n\t\tcase \"express\":\n\t\t\treturn getExpressFiles(projectConfig);\n\t\tcase \"nest\":\n\t\t\treturn getNestFiles(projectConfig);\n\t\tcase \"adonis\":\n\t\t\treturn getAdonisFiles(projectConfig);\n\t\tdefault:\n\t\t\treturn getGamanFiles(projectConfig);\n\t}\n}\n\nfunction getGamanFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: { ...getDatabaseDependencies(projectConfig.database) },\n\t\t\t\tdevDependencies: { \"@types/bun\": \"^1.3.14\" },\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst corsHeaders = {\\n \"Access-Control-Allow-Origin\": appConfig.corsOrigin,\\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, PATCH, DELETE, OPTIONS\",\\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\\n};\\n\\nconst server = Bun.serve({\\n port: appConfig.port,\\n fetch(request: Request): Response {\\n const requestUrl = new URL(request.url);\\n\\n if (request.method === \"OPTIONS\") {\\n return new Response(null, { status: 204, headers: corsHeaders });\\n }\\n\\n if (requestUrl.pathname === \"/api/hello\" && request.method === \"GET\") {\\n return Response.json(helloController(), { headers: corsHeaders });\\n }\\n\\n return Response.json(\\n { success: false, error: \"Not found\" },\\n { status: 404, headers: corsHeaders }\\n );\\n },\\n});\\n\\nconsole.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${server.port}\\`);\\n`,\n\t\t},\n\t];\n}\n\nfunction getExpressFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\texpress: \"^4.19.2\",\n\t\t\t\t\tcors: \"^2.8.5\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@types/express\": \"^4.17.21\",\n\t\t\t\t\t\"@types/cors\": \"^2.8.17\",\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import cors from \"cors\";\\nimport express from \"express\";\\nimport { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst app = express();\\n\\napp.use(cors({ origin: appConfig.corsOrigin }));\\napp.use(express.json());\\n\\napp.get(\"/api/hello\", (_request, response) => {\\n response.json(helloController());\\n});\\n\\napp.use((_request, response) => {\\n response.status(404).json({ success: false, error: \"Not found\" });\\n});\\n\\napp.listen(appConfig.port, () => {\\n console.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${appConfig.port}\\`);\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/middlewares/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/routes/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/services/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getNestFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\t\"@nestjs/common\": \"^10.3.0\",\n\t\t\t\t\t\"@nestjs/core\": \"^10.3.0\",\n\t\t\t\t\t\"@nestjs/platform-express\": \"^10.3.0\",\n\t\t\t\t\t\"reflect-metadata\": \"^0.2.2\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/nest-cli.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\t$schema: \"https://json.schemastore.org/nest-cli\",\n\t\t\t\t\tcollection: \"@nestjs/schematics\",\n\t\t\t\t\tsourceRoot: \"src\",\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.module.ts\",\n\t\t\tcontent: `import { Module } from \"@nestjs/common\";\\nimport { AppController } from \"./app.controller\";\\n\\n@Module({\\n controllers: [AppController],\\n})\\nexport class AppModule {}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.controller.ts\",\n\t\t\tcontent: `import { Controller, Get } from \"@nestjs/common\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\n@Controller(\"api\")\\nexport class AppController {\\n @Get(\"hello\")\\n hello() {\\n return helloController();\\n }\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/main.ts\",\n\t\t\tcontent: `import \"reflect-metadata\";\\nimport { NestFactory } from \"@nestjs/core\";\\nimport { AppModule } from \"./app.module\";\\nimport { appConfig } from \"./config/app.config\";\\n\\nasync function bootstrap(): Promise<void> {\\n const app = await NestFactory.create(AppModule);\\n app.enableCors({ origin: appConfig.corsOrigin });\\n await app.listen(appConfig.port);\\n console.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${appConfig.port}\\`);\\n}\\n\\nbootstrap().catch(console.error);\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/modules/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/common/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getAdonisFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\t\"@adonisjs/core\": \"^6.9.0\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@adonisjs/assembler\": \"^7.7.0\",\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/controllers/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/middleware/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/services/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/start/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/config/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst corsHeaders = {\\n \"Access-Control-Allow-Origin\": appConfig.corsOrigin,\\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, PATCH, DELETE, OPTIONS\",\\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\\n};\\n\\nconst server = Bun.serve({\\n port: appConfig.port,\\n fetch(request: Request): Response {\\n const requestUrl = new URL(request.url);\\n\\n if (request.method === \"OPTIONS\") {\\n return new Response(null, { status: 204, headers: corsHeaders });\\n }\\n\\n if (requestUrl.pathname === \"/api/hello\" && request.method === \"GET\") {\\n return Response.json(helloController(), { headers: corsHeaders });\\n }\\n\\n return Response.json(\\n { success: false, error: \"Not found\" },\\n { status: 404, headers: corsHeaders }\\n );\\n },\\n});\\n\\nconsole.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${server.port}\\`);\\n`,\n\t\t},\n\t];\n}\n\nfunction getBackendPackageJson(\n\tprojectConfig: ProjectConfig,\n\tpackageDeps: {\n\t\treadonly dependencies: Record<string, string>;\n\t\treadonly devDependencies: Record<string, string>;\n\t},\n): string {\n\treturn JSON.stringify(\n\t\t{\n\t\t\tname: `${projectConfig.projectName}-backend`,\n\t\t\tversion: \"0.1.0\",\n\t\t\tprivate: true,\n\t\t\ttype: \"module\",\n\t\t\tscripts: {\n\t\t\t\tdev: \"bun run --watch src/app.ts\",\n\t\t\t\tbuild: \"bun build src/app.ts --outfile dist/app.js --target bun\",\n\t\t\t\tstart: \"bun run dist/app.js\",\n\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t},\n\t\t\tdependencies: {\n\t\t\t\t...packageDeps.dependencies,\n\t\t\t},\n\t\t\tdevDependencies: {\n\t\t\t\t\"@types/bun\": \"^1.3.14\",\n\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t...packageDeps.devDependencies,\n\t\t\t},\n\t\t},\n\t\tnull,\n\t\t2,\n\t);\n}\n\n// ─── Shared files (fullstack only) ──────────────────────────────────────────\n\nfunction getSharedFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"shared/types/index.ts\",\n\t\t\tcontent: `export interface ApiResponse<TData = unknown> {\\n readonly success: boolean;\\n readonly data?: TData;\\n readonly error?: string;\\n readonly message?: string;\\n}\\n\\nexport interface User {\\n readonly id: string;\\n readonly name: string;\\n readonly email: string;\\n readonly createdAt: string;\\n readonly updatedAt: string;\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"shared/constants/index.ts\",\n\t\t\tcontent: `export const APP_NAME = \"${projectConfig.projectName}\";\\nexport const API_VERSION = \"v1\";\\nexport const DEFAULT_PAGE_SIZE = 20;\\n`,\n\t\t},\n\t];\n}\n\n// ─── CSS helpers ─────────────────────────────────────────────────────────────\n\nfunction getCssDependencies(\n\tcssFramework: CssFramework,\n): Record<string, string> {\n\tswitch (cssFramework) {\n\t\tcase \"tailwind\":\n\t\t\treturn { tailwindcss: \"^4.3.1\" };\n\t\tcase \"bootstrap\":\n\t\t\treturn { bootstrap: \"^5.3.3\" };\n\t\tcase \"sass\":\n\t\tcase \"none\":\n\t\t\treturn {};\n\t}\n}\n\nfunction getCssDevDependencies(\n\tcssFramework: CssFramework,\n): Record<string, string> {\n\tswitch (cssFramework) {\n\t\tcase \"sass\":\n\t\t\treturn { sass: \"^1.77.0\" };\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n\nfunction getFrontendOnlyCssGlobals(cssFramework: CssFramework): string {\n\tconst cssImport =\n\t\tcssFramework === \"tailwind\"\n\t\t\t? `@import \"tailwindcss\";\\n\\n`\n\t\t\t: cssFramework === \"bootstrap\"\n\t\t\t\t? `@import url(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\\n\\n`\n\t\t\t\t: cssFramework === \"sass\"\n\t\t\t\t\t? `$color-primary: #dc2626;\\n$color-background: #050505;\\n$color-foreground: #f8fafc;\\n\\n`\n\t\t\t\t\t: \"\";\n\n\treturn `${cssImport}:root {\n --color-primary: #dc2626;\n --color-background: #050505;\n --color-foreground: #f8fafc;\n --color-surface: #0e111a;\n --color-border: rgba(255, 255, 255, 0.1);\n --color-muted: #94a3b8;\n color-scheme: dark;\n}\n\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n margin: 0;\n min-width: 320px;\n min-height: 100vh;\n color: var(--color-foreground);\n background: var(--color-background);\n font-family:\n ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@keyframes shrimpLegs {\n 0% {\n transform: translateY(0);\n }\n\n 50% {\n transform: translateY(2px);\n }\n}\n\n#rakta-root {\n min-height: 100vh;\n}\n\nmain {\n width: min(1120px, calc(100% - 32px));\n min-height: 100vh;\n margin: 0 auto;\n padding: 56px 0;\n}\n\nsection {\n margin: 0 0 24px;\n border: 1px solid rgba(248, 113, 113, 0.18);\n border-radius: 18px;\n background:\n linear-gradient(135deg, rgba(220, 38, 38, 0.16), transparent 34%),\n #0e111a;\n box-shadow: 0 24px 80px rgba(127, 29, 29, 0.2);\n padding: clamp(24px, 4vw, 44px);\n}\n\np {\n margin: 0 0 12px;\n color: #cbd5e1;\n line-height: 1.7;\n}\n\nh1,\nh2 {\n margin: 0 0 12px;\n color: #ffffff;\n line-height: 1;\n}\n\nh1 {\n max-width: 760px;\n font-size: clamp(42px, 8vw, 84px);\n letter-spacing: 0;\n}\n\nh2 {\n font-size: clamp(28px, 4vw, 44px);\n}\n\nclick {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 42px;\n margin: 16px 12px 0 0;\n border: 1px solid rgba(248, 113, 113, 0.42);\n border-radius: 12px;\n padding: 0 16px;\n color: #fecaca;\n font-weight: 700;\n text-decoration: none;\n cursor: pointer;\n transition:\n transform 160ms ease,\n border-color 160ms ease,\n background 160ms ease;\n}\n\nclick:hover {\n border-color: #f87171;\n background: rgba(220, 38, 38, 0.12);\n transform: translateY(-1px);\n}\n\nbutton {\n font: inherit;\n}\n\n.relative {\n position: relative;\n}\n\n.absolute {\n position: absolute;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.left-0 {\n left: 0;\n}\n\n.top-2 {\n top: 8px;\n}\n\n.right-3 {\n right: 12px;\n}\n\n.block {\n display: block;\n}\n\n.flex {\n display: flex;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-center {\n align-items: center;\n}\n\n.items-start {\n align-items: flex-start;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.gap-2 {\n gap: 8px;\n}\n\n.gap-4 {\n gap: 16px;\n}\n\n.gap-8 {\n gap: 32px;\n}\n\n.w-full {\n width: 100%;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.select-none {\n user-select: none;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-sm {\n font-size: 14px;\n}\n\n.text-lg {\n font-size: 18px;\n}\n\n.text-xl {\n font-size: 20px;\n}\n\n.font-bold {\n font-weight: 800;\n}\n\n.font-semibold {\n font-weight: 700;\n}\n\n.font-mono {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n}\n\n.text-white {\n color: #fff;\n}\n\n.text-slate-400 {\n color: #94a3b8;\n}\n\n.text-red-600 {\n color: #dc2626;\n}\n\n.bg-red-600 {\n background: #dc2626;\n}\n\n.bg-black\\\\/75 {\n background: rgba(0, 0, 0, 0.75);\n}\n\n.pointer-events-none {\n pointer-events: none;\n}\n\n.rounded-sm {\n border-radius: 2px;\n}\n\n.rounded-lg {\n border-radius: 8px;\n}\n\n.min-h-5 {\n min-height: 20px;\n}\n\n.tabular-nums {\n font-variant-numeric: tabular-nums;\n}\n\nbutton[aria-label^=\"ShrimpRun\"] {\n border: 2px solid rgba(248, 113, 113, 0.28);\n border-radius: 16px;\n background:\n linear-gradient(180deg, rgba(15, 23, 42, 0.96), rgba(7, 10, 18, 0.98)),\n radial-gradient(circle at 18% 22%, rgba(248, 113, 113, 0.16), transparent 30%);\n box-shadow:\n inset 0 0 0 1px rgba(255, 255, 255, 0.04),\n 0 20px 60px rgba(0, 0, 0, 0.28);\n}\n\nbutton[aria-label^=\"ShrimpRun\"] > .bottom-0.left-0 {\n background: linear-gradient(90deg, #7f1d1d, #dc2626, #fecaca);\n}\n\nbutton:not([aria-label]) {\n border: 0;\n border-radius: 10px;\n background: #dc2626;\n color: #fff;\n cursor: pointer;\n font-weight: 800;\n}\n\n.shrimp-sprite {\n filter: drop-shadow(0 8px 12px rgba(0, 0, 0, 0.32));\n}\n\n.shrimp-run-obstacle {\n border-radius: 8px 8px 2px 2px;\n background:\n radial-gradient(circle at 50% 8px, #fecaca 0 4px, transparent 5px),\n linear-gradient(135deg, #fb7185 0%, #dc2626 46%, #7f1d1d 100%);\n box-shadow:\n inset -6px -8px 0 rgba(69, 10, 10, 0.32),\n 0 0 0 2px rgba(254, 202, 202, 0.18);\n}\n\n.shrimp-run-obstacle::before,\n.shrimp-run-obstacle::after {\n position: absolute;\n bottom: 8px;\n width: 10px;\n height: 22px;\n border-radius: 999px 999px 4px 4px;\n background: #ef4444;\n content: \"\";\n}\n\n.shrimp-run-obstacle::before {\n left: -7px;\n transform: rotate(-18deg);\n}\n\n.shrimp-run-obstacle::after {\n right: -7px;\n transform: rotate(18deg);\n}\n\n@media (max-width: 720px) {\n main {\n width: min(100% - 20px, 1120px);\n padding: 24px 0;\n }\n\n section {\n padding: 20px;\n }\n}\n`;\n}\n\nfunction getCssGlobals(cssFramework: CssFramework): string {\n\tconst sharedBase = `\n:root {\n --color-primary: #dc2626;\n --color-background: #050505;\n --color-foreground: #f8fafc;\n}\n\n* {\n box-sizing: border-box;\n}\n\nbody {\n margin: 0;\n color: var(--color-foreground);\n background: var(--color-background);\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n}\n\n.page-shell {\n width: min(100% - 2rem, 960px);\n margin: 0 auto;\n padding: 4rem 0;\n}\n\n.hero-card,\n.feature-card {\n border: 1px solid rgba(255, 255, 255, 0.1);\n background: #0e111a;\n border-radius: 24px;\n padding: 2rem;\n margin-bottom: 1.5rem;\n}\n\n.eyebrow {\n color: #dc2626;\n font-weight: 700;\n letter-spacing: 0.12em;\n font-size: 0.75rem;\n text-transform: uppercase;\n}\n\n.button-row {\n display: flex;\n gap: 0.75rem;\n flex-wrap: wrap;\n margin-top: 1rem;\n}\n\na {\n color: #dc2626;\n}\n\nbutton {\n cursor: pointer;\n}\n`;\n\n\tswitch (cssFramework) {\n\t\tcase \"tailwind\":\n\t\t\treturn `@import \"tailwindcss\";\\n${sharedBase}`;\n\t\tcase \"bootstrap\":\n\t\t\treturn `@import url(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\\n${sharedBase}`;\n\t\tcase \"sass\":\n\t\t\treturn `$color-primary: #dc2626;\\n$color-background: #050505;\\n$color-foreground: #f8fafc;\\n${sharedBase}`;\n\t\tcase \"none\":\n\t\t\treturn sharedBase;\n\t}\n}\n\n// ─── Inline template generators ──────────────────────────────────────────────\n\nfunction generateFrontendOnlyRaktaEnv(): string {\n\treturn `declare module \"*.css\";\ndeclare module \"*.scss\";\ndeclare module \"*.sass\";\n\ntype RaktaClickAttributes = Omit<\n import(\"react\").AnchorHTMLAttributes<HTMLAnchorElement>,\n \"href\"\n> & {\n readonly to: string;\n};\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n\n const useCallback: typeof import(\"react\").useCallback;\n const useEffect: typeof import(\"react\").useEffect;\n const useRef: typeof import(\"react\").useRef;\n const useState: typeof import(\"react\").useState;\n\n const ComponentsModal: typeof import(\"./app/components/ComponentsModal\").default;\n const CoralObstacle: typeof import(\"./app/components/CoralObstacle\").default;\n const DeployModal: typeof import(\"./app/components/DeployModal\").default;\n const DocsModal: typeof import(\"./app/components/DocsModal\").default;\n const ShrimpCharacter: typeof import(\"./app/components/ShrimpCharacter\").default;\n}\n\ndeclare module \"react/jsx-runtime\" {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n}\n\ndeclare module \"react/jsx-dev-runtime\" {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n}\n\nexport {};\n`;\n}\n\nfunction generateFrontendOnlyLayout(): string {\n\treturn `interface RootLayoutProps {\n readonly children: import(\"react\").ReactNode;\n}\n\nexport default function RootLayout({ children }: RootLayoutProps) {\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Rakta.js App</title>\n </head>\n <body className=\"min-h-screen bg-[#050505] text-slate-50 antialiased\">\n {children}\n </body>\n </html>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyPage(_projectName: string): string {\n\treturn WELCOME_PAGE_CODE;\n}\n\nfunction generateFrontendOnlyLoading(): string {\n\treturn `export default function Loading() {\n return (\n <main className=\"flex min-h-screen items-center justify-center bg-[#050505] px-4\">\n <p className=\"text-sm font-medium text-slate-400\">Loading...</p>\n </main>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyError(): string {\n\treturn `interface ErrorPageProps {\n readonly error: Error;\n readonly reset: () => void;\n}\n\nexport default function ErrorPage({ error, reset }: ErrorPageProps) {\n return (\n <main className=\"mx-auto flex min-h-screen w-full max-w-3xl items-center px-4 py-16\">\n <section className=\"w-full rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n ERROR\n </p>\n <h1 className=\"mb-3 text-3xl font-extrabold text-white\">\n Something went wrong\n </h1>\n <p className=\"mb-6 wrap-break-word text-sm leading-6 text-slate-400\">\n {error.message}\n </p>\n <button\n type=\"button\"\n onClick={reset}\n className=\"rounded-lg bg-red-600 px-6 py-2 font-semibold text-white transition hover:bg-red-700 active:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n >\n Try again\n </button>\n </section>\n </main>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyNotFound(): string {\n\treturn `export default function NotFound() {\n return (\n <main className=\"mx-auto flex min-h-screen w-full max-w-3xl items-center px-4 py-16\">\n <section className=\"w-full rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n 404\n </p>\n <h1 className=\"mb-3 text-3xl font-extrabold text-white\">\n Page not found\n </h1>\n <p className=\"mb-6 text-sm leading-6 text-slate-400\">\n The page you are looking for does not exist.\n </p>\n <click\n to=\"/\"\n className=\"font-semibold text-red-500 underline-offset-4 transition hover:text-red-400 hover:underline\"\n >\n Return home\n </click>\n </section>\n </main>\n );\n}\n`;\n}\n\nfunction _generateShrimpMascotComponent(): string {\n\treturn `interface RaktaShrimpMascotProps {\n readonly isJumping: boolean;\n readonly isDead: boolean;\n readonly style?: import(\"react\").CSSProperties;\n}\n\n/**\n * RaktaShrimpMascot — The animated shrimp hero of ShrimpRun.\n * Drawn entirely with inline SVG. No external assets required.\n */\nexport default function RaktaShrimpMascot({\n isJumping,\n isDead,\n style,\n}: RaktaShrimpMascotProps) {\n const bodyColor = isDead ? \"#6b7280\" : \"#dc2626\";\n const eyeColor = isDead ? \"#374151\" : \"#fff\";\n const legAnimation =\n isJumping || isDead ? \"none\" : \"shrimpLegs 0.3s steps(2) infinite\";\n\n return (\n <svg\n viewBox=\"0 0 48 48\"\n width=\"48\"\n height=\"48\"\n style={{ display: \"block\", ...style }}\n aria-label={\n isDead ? \"dead shrimp\" : isJumping ? \"shrimp jumping\" : \"running shrimp\"\n }\n role=\"img\"\n >\n <style>{\\`\n @keyframes shrimpLegs {\n 0% { transform: translateY(0); }\n 50% { transform: translateY(2px); }\n }\n \\`}</style>\n\n {/* Body */}\n <path\n d=\"M8 30 Q10 14 24 12 Q38 10 40 22 Q42 32 32 36 Q20 40 8 30Z\"\n fill={bodyColor}\n />\n\n {/* Shell segments */}\n <path\n d=\"M12 28 Q16 20 24 18 Q30 17 34 22\"\n stroke=\"#b91c1c\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity={isDead ? 0.3 : 0.6}\n />\n <path\n d=\"M14 32 Q19 24 28 22 Q33 21 36 26\"\n stroke=\"#b91c1c\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity={isDead ? 0.3 : 0.6}\n />\n\n {/* Eye */}\n <circle cx=\"34\" cy=\"18\" r=\"4\" fill=\"#1e293b\" />\n <circle cx=\"35\" cy=\"17\" r=\"2\" fill={eyeColor} />\n\n {isDead && (\n <>\n <line\n x1=\"32\"\n y1=\"16\"\n x2=\"36\"\n y2=\"20\"\n stroke=\"#374151\"\n strokeWidth=\"1.5\"\n />\n <line\n x1=\"36\"\n y1=\"16\"\n x2=\"32\"\n y2=\"20\"\n stroke=\"#374151\"\n strokeWidth=\"1.5\"\n />\n </>\n )}\n\n {/* Antennae */}\n <line\n x1=\"34\"\n y1=\"14\"\n x2=\"40\"\n y2=\"6\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"32\"\n y1=\"13\"\n x2=\"36\"\n y2=\"4\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n\n {/* Tail */}\n <path\n d=\"M10 30 Q4 26 6 20\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10 30 Q2 30 4 36\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10 30 Q6 34 8 40\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n\n {/* Legs */}\n <g\n style={{\n animation: legAnimation,\n transformOrigin: \"24px 36px\",\n }}\n >\n <line\n x1=\"18\"\n y1=\"36\"\n x2=\"14\"\n y2=\"44\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"22\"\n y1=\"38\"\n x2=\"18\"\n y2=\"46\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"26\"\n y1=\"38\"\n x2=\"24\"\n y2=\"46\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"30\"\n y1=\"37\"\n x2=\"28\"\n y2=\"45\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </g>\n </svg>\n );\n}\n`;\n}\n\nfunction _generateShrimpRunGameComponent(): string {\n\treturn `import { useCallback, useEffect, useRef, useState } from \"react\";\nimport RaktaShrimpMascot from \"./raktaShrimpMascot\";\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype GameStatus = \"idle\" | \"running\" | \"dead\";\n\ninterface ObstacleState {\n readonly id: number;\n readonly xPosition: number;\n readonly width: number;\n readonly height: number;\n}\n\ninterface ShrimpState {\n readonly yPosition: number;\n readonly velocityY: number;\n readonly isJumping: boolean;\n}\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst CANVAS_WIDTH = 640;\nconst CANVAS_HEIGHT = 160;\nconst GROUND_STRIP_HEIGHT = 4;\nconst SHRIMP_START_X = 60;\nconst SHRIMP_WIDTH = 48;\nconst SHRIMP_HEIGHT = 48;\nconst GRAVITY = 1.4;\nconst JUMP_VELOCITY = -18;\nconst INITIAL_OBSTACLE_SPEED = 5;\nconst SPEED_INCREMENT_PER_SCORE = 0.003;\nconst OBSTACLE_SPAWN_INTERVAL_MS = 1600;\nconst SCORE_TICK_MS = 80;\nconst COLLISION_MARGIN = 8;\nconst MAX_CONCURRENT_OBSTACLES = 3;\nconst FRAME_SKIP_THRESHOLD_MS = 100;\n\n// ─── Physics helpers ──────────────────────────────────────────────────────────\n\nfunction getObstacleSpeed(currentScore: number): number {\n return INITIAL_OBSTACLE_SPEED + currentScore * SPEED_INCREMENT_PER_SCORE;\n}\n\nfunction checkCollision(\n shrimpYPosition: number,\n obstacle: ObstacleState,\n): boolean {\n const shrimpLeft = SHRIMP_START_X + COLLISION_MARGIN;\n const shrimpRight = SHRIMP_START_X + SHRIMP_WIDTH - COLLISION_MARGIN;\n const shrimpTop =\n CANVAS_HEIGHT -\n GROUND_STRIP_HEIGHT -\n shrimpYPosition -\n SHRIMP_HEIGHT +\n COLLISION_MARGIN;\n const shrimpBottom = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT - shrimpYPosition;\n\n const obstacleLeft = obstacle.xPosition + COLLISION_MARGIN;\n const obstacleRight = obstacle.xPosition + obstacle.width - COLLISION_MARGIN;\n const obstacleTop = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT - obstacle.height;\n const obstacleBottom = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT;\n\n return (\n shrimpLeft < obstacleRight &&\n shrimpRight > obstacleLeft &&\n shrimpTop < obstacleBottom &&\n shrimpBottom > obstacleTop\n );\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * ShrimpRun — Default Rakta.js interactive starter game.\n *\n * Like the Chrome offline Dino game, but the dinosaur is an animated shrimp.\n * Press Space or click the game canvas to jump. Avoid the red obstacles!\n *\n * Features:\n * - React state only — no external game library\n * - requestAnimationFrame game loop\n * - Physics: gravity + jump velocity\n * - Score that increases over time\n * - Speed ramps up as score grows\n * - Collision detection with margin\n * - High score tracked in component state\n * - Keyboard (Space) and click/tap support\n * - Accessible button game canvas\n * - SVG shrimp mascot — no external assets\n */\nexport default function ShrimpRunGame() {\n const [gameStatus, setGameStatus] = useState<GameStatus>(\"idle\");\n const [score, setScore] = useState(0);\n const [highScore, setHighScore] = useState(0);\n const [obstacles, setObstacles] = useState<ObstacleState[]>([]);\n const [shrimp, setShrimp] = useState<ShrimpState>({\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n });\n\n const gameStatusRef = useRef<GameStatus>(\"idle\");\n const scoreRef = useRef(0);\n const shrimpRef = useRef<ShrimpState>({\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n });\n const obstaclesRef = useRef<ObstacleState[]>([]);\n const obstacleIdRef = useRef(0);\n const animationFrameRef = useRef<number>(0);\n const lastObstacleTimeRef = useRef(0);\n const lastScoreTickRef = useRef(0);\n\n const jump = useCallback((): void => {\n if (gameStatusRef.current === \"dead\") {\n return;\n }\n\n if (gameStatusRef.current === \"idle\") {\n gameStatusRef.current = \"running\";\n setGameStatus(\"running\");\n }\n\n if (!shrimpRef.current.isJumping) {\n const nextShrimp: ShrimpState = {\n ...shrimpRef.current,\n velocityY: JUMP_VELOCITY,\n isJumping: true,\n };\n\n shrimpRef.current = nextShrimp;\n setShrimp(nextShrimp);\n }\n }, []);\n\n const resetGame = useCallback((): void => {\n const freshShrimp: ShrimpState = {\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n };\n\n shrimpRef.current = freshShrimp;\n obstaclesRef.current = [];\n obstacleIdRef.current = 0;\n scoreRef.current = 0;\n gameStatusRef.current = \"idle\";\n lastObstacleTimeRef.current = 0;\n lastScoreTickRef.current = 0;\n\n setShrimp(freshShrimp);\n setObstacles([]);\n setScore(0);\n setGameStatus(\"idle\");\n }, []);\n\n useEffect(() => {\n let previousTimestamp = 0;\n\n function gameTick(timestamp: number): void {\n if (gameStatusRef.current !== \"running\") {\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n\n const deltaTime = timestamp - previousTimestamp;\n previousTimestamp = timestamp;\n\n if (deltaTime > FRAME_SKIP_THRESHOLD_MS) {\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n\n const currentShrimp = shrimpRef.current;\n let nextVelocityY = currentShrimp.velocityY + GRAVITY;\n let nextYPosition = currentShrimp.yPosition - nextVelocityY;\n\n if (nextYPosition <= 0) {\n nextYPosition = 0;\n nextVelocityY = 0;\n }\n\n const nextShrimp: ShrimpState = {\n yPosition: nextYPosition,\n velocityY: nextVelocityY,\n isJumping: nextYPosition > 0,\n };\n\n shrimpRef.current = nextShrimp;\n setShrimp(nextShrimp);\n\n const obstacleSpeed = getObstacleSpeed(scoreRef.current);\n\n const movedObstacles = obstaclesRef.current\n .map(\n (obstacle): ObstacleState => ({\n ...obstacle,\n xPosition: obstacle.xPosition - obstacleSpeed,\n }),\n )\n .filter((obstacle) => obstacle.xPosition + obstacle.width > -10);\n\n if (\n timestamp - lastObstacleTimeRef.current > OBSTACLE_SPAWN_INTERVAL_MS &&\n movedObstacles.length < MAX_CONCURRENT_OBSTACLES\n ) {\n const obstacleHeight = 30 + Math.floor(Math.random() * 30);\n const obstacleWidth = 20 + Math.floor(Math.random() * 20);\n\n movedObstacles.push({\n id: obstacleIdRef.current,\n xPosition: CANVAS_WIDTH + 20,\n width: obstacleWidth,\n height: obstacleHeight,\n });\n\n obstacleIdRef.current += 1;\n lastObstacleTimeRef.current = timestamp;\n }\n\n obstaclesRef.current = movedObstacles;\n setObstacles([...movedObstacles]);\n\n for (const obstacle of movedObstacles) {\n if (checkCollision(nextShrimp.yPosition, obstacle)) {\n gameStatusRef.current = \"dead\";\n setGameStatus(\"dead\");\n setHighScore((previousHighScore: number) =>\n Math.max(previousHighScore, scoreRef.current),\n );\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n }\n\n if (timestamp - lastScoreTickRef.current > SCORE_TICK_MS) {\n scoreRef.current += 1;\n setScore(scoreRef.current);\n lastScoreTickRef.current = timestamp;\n }\n\n animationFrameRef.current = requestAnimationFrame(gameTick);\n }\n\n animationFrameRef.current = requestAnimationFrame(gameTick);\n\n return () => {\n cancelAnimationFrame(animationFrameRef.current);\n };\n }, []);\n\n useEffect(() => {\n function handleKeyDown(keyboardEvent: KeyboardEvent): void {\n if (keyboardEvent.code === \"Space\") {\n keyboardEvent.preventDefault();\n jump();\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [jump]);\n\n const shrimpBottomOffset = GROUND_STRIP_HEIGHT + shrimp.yPosition;\n const isDead = gameStatus === \"dead\";\n const isIdle = gameStatus === \"idle\";\n const isRunning = gameStatus === \"running\";\n\n return (\n <div className=\"flex flex-col items-start gap-4 py-4\">\n <div className=\"flex flex-wrap items-center gap-8\">\n <span className=\"font-mono text-xl font-bold tabular-nums text-red-600\">\n Score: {score}\n </span>\n {highScore > 0 && (\n <span className=\"text-sm text-slate-400\">Best: {highScore}</span>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"relative block max-w-full cursor-pointer select-none overflow-hidden rounded-2xl border-2 border-red-600/30 bg-[#0e111a] p-0 text-left focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n aria-label=\"ShrimpRun game area. Click or press Space to jump.\"\n onClick={jump}\n onKeyDown={(keyboardEvent: import(\"react\").KeyboardEvent) => {\n if (keyboardEvent.code === \"Space\") {\n keyboardEvent.preventDefault();\n jump();\n }\n }}\n style={{\n width: CANVAS_WIDTH,\n height: CANVAS_HEIGHT,\n }}\n >\n <span\n className=\"absolute bottom-0 left-0 w-full rounded-sm bg-red-600\"\n style={{\n height: GROUND_STRIP_HEIGHT,\n }}\n />\n\n <span\n className=\"absolute shrimp-sprite\"\n style={{\n left: SHRIMP_START_X,\n bottom: shrimpBottomOffset,\n width: SHRIMP_WIDTH,\n height: SHRIMP_HEIGHT,\n transform: isDead\n ? \"rotate(18deg) translateY(8px)\"\n : shrimp.isJumping\n ? \"rotate(-8deg) translateY(-4px)\"\n : \"rotate(0deg)\",\n transition: \"transform 120ms ease\",\n }}\n >\n <RaktaShrimpMascot isJumping={shrimp.isJumping} isDead={isDead} />\n </span>\n\n {obstacles.map((obstacle) => (\n <span\n key={obstacle.id}\n className=\"absolute shrimp-run-obstacle\"\n style={{\n left: obstacle.xPosition,\n bottom: GROUND_STRIP_HEIGHT,\n width: obstacle.width,\n height: obstacle.height,\n }}\n />\n ))}\n\n {isIdle && (\n <span className=\"pointer-events-none absolute inset-0 flex items-center justify-center text-sm text-slate-400\">\n Press Space or click to start\n </span>\n )}\n\n {isDead && (\n <span className=\"absolute inset-0 flex flex-col items-center justify-center gap-2 bg-black/75\">\n <span className=\"text-lg font-bold tracking-widest text-red-600\">\n GAME OVER\n </span>\n <span className=\"text-sm text-slate-400\">Score: {score}</span>\n </span>\n )}\n\n {isRunning && score > 0 && score % 50 === 0 && (\n <span className=\"absolute right-3 top-2 text-xs font-bold tracking-widest text-red-600 opacity-80\">\n {score}!\n </span>\n )}\n </button>\n\n <p className=\"min-h-5 text-sm text-slate-400\">\n {isIdle && \"🦐 Click or press Space to make the shrimp jump!\"}\n {isRunning && \"🦐 Don't hit the obstacles!\"}\n {isDead && \"The shrimp got cooked. Try again!\"}\n </p>\n\n {isDead && (\n <button\n type=\"button\"\n className=\"w-fit rounded-lg bg-red-600 px-6 py-2 font-semibold text-white transition hover:bg-red-700 active:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n onClick={resetGame}\n >\n Restart\n </button>\n )}\n </div>\n );\n}\n`;\n}\n\nfunction generateFullstackHomePage(_projectName: string): string {\n\treturn WELCOME_PAGE_CODE;\n}\n\n// ─── Database helpers ─────────────────────────────────────────────────────────\n\nfunction getDatabaseDependencies(\n\tselectedDatabase: Database,\n): Record<string, string> {\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn { postgres: \"^3.4.4\" };\n\t\tcase \"mysql\":\n\t\tcase \"mariadb\":\n\t\t\treturn { mysql2: \"^3.9.8\" };\n\t\tcase \"mongodb\":\n\t\t\treturn { mongodb: \"^6.8.0\" };\n\t\tcase \"firebase\":\n\t\t\treturn { \"firebase-admin\": \"^12.7.0\" };\n\t\tcase \"sqlite\":\n\t\t\treturn {};\n\t\tcase \"redis\":\n\t\t\treturn { ioredis: \"^5.4.1\" };\n\t\tcase \"planetscale\":\n\t\t\treturn { \"@planetscale/database\": \"^1.18.0\" };\n\t\tcase \"neon\":\n\t\t\treturn { \"@neondatabase/serverless\": \"^0.9.4\" };\n\t\tcase \"turso\":\n\t\t\treturn { \"@libsql/client\": \"^0.6.2\" };\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n\nfunction getDatabaseConfig(selectedDatabase: Database): string {\n\tswitch (selectedDatabase) {\n\t\tcase \"sqlite\":\n\t\t\treturn `export const databaseConfig = {\\n path: process.env[\"DATABASE_PATH\"] ?? \"./database.sqlite\",\\n provider: \"sqlite\" as const,\\n} as const;\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `export const databaseConfig = {\\n projectId: process.env[\"FIREBASE_PROJECT_ID\"] ?? \"\",\\n clientEmail: process.env[\"FIREBASE_CLIENT_EMAIL\"] ?? \"\",\\n privateKey: process.env[\"FIREBASE_PRIVATE_KEY\"]?.replace(/\\\\\\\\\\\\\\\\n/g, \"\\\\\\\\n\") ?? \"\",\\n databaseUrl: process.env[\"FIREBASE_DATABASE_URL\"] ?? \"\",\\n provider: \"firebase\" as const,\\n} as const;\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `export const databaseConfig = {\\n url: process.env[\"TURSO_DATABASE_URL\"] ?? \"\",\\n authToken: process.env[\"TURSO_AUTH_TOKEN\"] ?? \"\",\\n provider: \"turso\" as const,\\n} as const;\\n`;\n\t\tdefault:\n\t\t\treturn `import { env } from \"../env\";\\n\\nexport const databaseConfig = {\\n url: env.databaseUrl,\\n provider: \"${selectedDatabase}\" as const,\\n} as const;\\n`;\n\t}\n}\n\nfunction getDatabaseClient(selectedDatabase: Database): string {\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn `import postgres from \"postgres\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const sql = databaseConfig.url ? postgres(databaseConfig.url) : null;\\n`;\n\t\tcase \"mysql\":\n\t\tcase \"mariadb\":\n\t\t\treturn `import mysql from \"mysql2/promise\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const pool = databaseConfig.url\\n ? mysql.createPool({ uri: databaseConfig.url, connectionLimit: 10 })\\n : null;\\n`;\n\t\tcase \"mongodb\":\n\t\t\treturn `import { MongoClient } from \"mongodb\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const mongoClient = databaseConfig.url\\n ? new MongoClient(databaseConfig.url)\\n : null;\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `import { cert, getApps, initializeApp } from \"firebase-admin/app\";\\nimport { getFirestore } from \"firebase-admin/firestore\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nconst credentialReady =\\n databaseConfig.projectId.length > 0 &&\\n databaseConfig.clientEmail.length > 0 &&\\n databaseConfig.privateKey.length > 0;\\n\\nexport const firebaseApp = getApps()[0] ?? initializeApp(\\n credentialReady\\n ? {\\n credential: cert({\\n projectId: databaseConfig.projectId,\\n clientEmail: databaseConfig.clientEmail,\\n privateKey: databaseConfig.privateKey,\\n }),\\n databaseURL: databaseConfig.databaseUrl || undefined,\\n }\\n : undefined\\n);\\n\\nexport const firestore = getFirestore(firebaseApp);\\n`;\n\t\tcase \"sqlite\":\n\t\t\treturn `import { Database } from \"bun:sqlite\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const db = new Database(databaseConfig.path, { create: true });\\n`;\n\t\tcase \"redis\":\n\t\t\treturn `import Redis from \"ioredis\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const redis = databaseConfig.url ? new Redis(databaseConfig.url) : null;\\n`;\n\t\tcase \"planetscale\":\n\t\t\treturn `import { connect } from \"@planetscale/database\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const connection = databaseConfig.url\\n ? connect({ url: databaseConfig.url })\\n : null;\\n`;\n\t\tcase \"neon\":\n\t\t\treturn `import { neon } from \"@neondatabase/serverless\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const sql = databaseConfig.url ? neon(databaseConfig.url) : null;\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `import { createClient } from \"@libsql/client\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const db =\\n databaseConfig.url && databaseConfig.authToken\\n ? createClient({ url: databaseConfig.url, authToken: databaseConfig.authToken })\\n : null;\\n`;\n\t\tdefault:\n\t\t\treturn `export const databaseClient = null;\\n`;\n\t}\n}\n\nfunction getDatabaseEnvExample(selectedDatabase: Database): string {\n\tconst baseEnv = `NODE_ENV=development\\nPORT=4000\\nCORS_ORIGIN=http://localhost:3000\\n`;\n\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn `${baseEnv}DATABASE_URL=postgresql://user:password@localhost:5432/dbname\\n`;\n\t\tcase \"mysql\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@localhost:3306/dbname\\n`;\n\t\tcase \"mariadb\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@localhost:3306/dbname\\n`;\n\t\tcase \"mongodb\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mongodb://localhost:27017/dbname\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `${baseEnv}FIREBASE_PROJECT_ID=your-project-id\\nFIREBASE_CLIENT_EMAIL=firebase-adminsdk@your-project.iam.gserviceaccount.com\\nFIREBASE_PRIVATE_KEY=\"-----BEGIN PRIVATE KEY-----\\\\nyour-key\\\\n-----END PRIVATE KEY-----\\\\n\"\\nFIREBASE_DATABASE_URL=https://your-project.firebaseio.com\\n`;\n\t\tcase \"sqlite\":\n\t\t\treturn `${baseEnv}DATABASE_PATH=./database.sqlite\\n`;\n\t\tcase \"redis\":\n\t\t\treturn `${baseEnv}DATABASE_URL=redis://localhost:6379\\n`;\n\t\tcase \"planetscale\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@aws.connect.psdb.cloud/dbname\\n`;\n\t\tcase \"neon\":\n\t\t\treturn `${baseEnv}DATABASE_URL=postgresql://user:password@ep-xxx.neon.tech/neondb?sslmode=require\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `${baseEnv}TURSO_DATABASE_URL=libsql://your-db.turso.io\\nTURSO_AUTH_TOKEN=your-auth-token\\n`;\n\t\tdefault:\n\t\t\treturn `${baseEnv}DATABASE_URL=\\n`;\n\t}\n}\n\n// ─── README ──────────────────────────────────────────────────────────────────\n\nfunction generateProjectReadme(projectConfig: ProjectConfig): string {\n\tconst { projectName, projectMode } = projectConfig;\n\n\tif (projectMode === \"frontend-only\") {\n\t\treturn `# ${projectName}\\n\\nBuilt with Rakta.js — Small in size. Fierce in speed. Alive in every route.\\n\\n## Stack\\n\\n| Layer | Technology |\\n| --- | --- |\\n| Frontend | Rakta.js + React + TypeScript |\\n| CSS | ${CSS_DISPLAY[projectConfig.cssFramework]} |\\n| Runtime | Bun |\\n\\n## Run\\n\\n\\`\\`\\`bash\\nbun install\\nbun run dev\\n\\`\\`\\`\\n\\n## ShrimpRun\\n\\nYour starter includes ShrimpRun — an interactive game where a shrimp dodges obstacles. Press Space or click to jump!\\n`;\n\t}\n\n\treturn `# ${projectName}\\n\\nBuilt with Rakta.js — Small in size. Fierce in speed. Alive in every route.\\n\\n## Stack\\n\\n| Layer | Technology |\\n| --- | --- |\\n| Frontend | Rakta.js + React + TypeScript |\\n| CSS | ${CSS_DISPLAY[projectConfig.cssFramework]} |\\n| Backend | ${BACKEND_DISPLAY[projectConfig.backendFramework]} |\\n| Database | ${DATABASE_DISPLAY[projectConfig.database]} |\\n| Runtime | Bun |\\n\\n## Run\\n\\n\\`\\`\\`bash\\nbun install\\n\\n# Terminal 1\\nbun run dev:frontend\\n\\n# Terminal 2\\nbun run dev:backend\\n\\`\\`\\`\\n\\n## Endpoints\\n\\n- Frontend: http://localhost:3000\\n- Backend: http://localhost:4000\\n`;\n}\n\n// ─── Main export ─────────────────────────────────────────────────────────────\n\nexport function generateProjectFiles(\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tif (projectConfig.projectMode === \"frontend-only\") {\n\t\treturn [\n\t\t\t...getRootFiles(projectConfig),\n\t\t\t...getFrontendOnlyFiles(projectConfig),\n\t\t];\n\t}\n\n\treturn [\n\t\t...getRootFiles(projectConfig),\n\t\t...getFullstackFrontendFiles(projectConfig),\n\t\t...getBackendFiles(projectConfig),\n\t\t...getSharedFiles(projectConfig),\n\t];\n}\n",
|
|
16
|
+
"import { readFileSync } from \"node:fs\";\nimport type {\n\tBackendFramework,\n\tCssFramework,\n\tDatabase,\n\tProjectConfig,\n\tProjectFile,\n} from \"./types\";\nimport { BACKEND_DISPLAY, CSS_DISPLAY, DATABASE_DISPLAY } from \"./types\";\nimport {\n\tCOMPONENTS_MODAL_CODE,\n\tCORAL_OBSTACLE_CODE,\n\tDEPLOY_MODAL_CODE,\n\tDOCS_MODAL_CODE,\n\tSHRIMP_CHARACTER_CODE,\n\tWELCOME_PAGE_CODE,\n} from \"./welcomeComponents\";\n\nconst DEFAULT_METADATA_TITLE =\n\t\"Rakta.js | Small in size. Fierce in speed. Alive in every route\";\nconst FAVICON_BYTES = readFileSync(\n\tnew URL(\"../assets/favicon.ico\", import.meta.url),\n);\n\n// ─── Root files ─────────────────────────────────────────────────────────────\n\nfunction getRootFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\tconst { projectName, projectMode } = projectConfig;\n\n\tconst workspaces =\n\t\tprojectMode === \"fullstack\" ? [\"frontend\", \"backend\", \"shared\"] : [];\n\n\treturn [\n\t\t{\n\t\t\tpath: \"package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: projectName,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\t...(projectMode === \"fullstack\" ? { workspaces } : {}),\n\t\t\t\t\tscripts:\n\t\t\t\t\t\tprojectMode === \"fullstack\"\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\"dev:frontend\": \"cd frontend && bun run dev\",\n\t\t\t\t\t\t\t\t\t\"dev:backend\": \"cd backend && bun run dev\",\n\t\t\t\t\t\t\t\t\t\"build:frontend\": \"cd frontend && bun run build\",\n\t\t\t\t\t\t\t\t\t\"build:backend\": \"cd backend && bun run build\",\n\t\t\t\t\t\t\t\t\tbuild: \"bun run build:frontend && bun run build:backend\",\n\t\t\t\t\t\t\t\t\tstart: \"cd backend && bun run start\",\n\t\t\t\t\t\t\t\t\ttypecheck:\n\t\t\t\t\t\t\t\t\t\t\"cd frontend && bun run typecheck && cd ../backend && bun run typecheck\",\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\tdescription: `${projectName} — built with Rakta.js`,\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"tsconfig.base.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\ttarget: \"ESNext\",\n\t\t\t\t\t\tmodule: \"ESNext\",\n\t\t\t\t\t\tmoduleResolution: \"Bundler\",\n\t\t\t\t\t\tjsx: \"react-jsx\",\n\t\t\t\t\t\tlib: [\"ESNext\", \"DOM\", \"DOM.Iterable\"],\n\t\t\t\t\t\tstrict: true,\n\t\t\t\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\t\t\t\texactOptionalPropertyTypes: true,\n\t\t\t\t\t\tskipLibCheck: true,\n\t\t\t\t\t\tesModuleInterop: true,\n\t\t\t\t\t\tallowSyntheticDefaultImports: true,\n\t\t\t\t\t\tresolveJsonModule: true,\n\t\t\t\t\t\tverbatimModuleSyntax: true,\n\t\t\t\t\t\tisolatedModules: true,\n\t\t\t\t\t},\n\t\t\t\t\texclude: [\"node_modules\", \"dist\", \"**/dist/**\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"bunfig.toml\",\n\t\t\tcontent: `[install]\\nauto = \"fallback\"\\nexact = false\\nregistry = \"https://registry.npmjs.org/\"\\n\\n[run]\\nbun = true\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".npmrc\",\n\t\t\tcontent: `registry=https://registry.npmjs.org/\\nstrict-ssl=true\\nfetch-retries=5\\nfetch-retry-mintimeout=20000\\nfetch-retry-maxtimeout=120000\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".env.example\",\n\t\t\tcontent: `NODE_ENV=development\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".gitignore\",\n\t\t\tcontent: `node_modules/\\ndist/\\n.env\\n.env.*\\n!.env.example\\n.DS_Store\\n*.log\\n.rakta/\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"README.md\",\n\t\t\tcontent: generateProjectReadme(projectConfig),\n\t\t},\n\t];\n}\n\n// ─── Frontend-only starter (ShrimpRun game) ─────────────────────────────────\n\nfunction getFrontendOnlyFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\tconst { projectName, cssFramework } = projectConfig;\n\tconst styleFileName =\n\t\tcssFramework === \"sass\" ? \"globals.scss\" : \"globals.css\";\n\n\tconst files: ProjectFile[] = [\n\t\t{\n\t\t\tpath: \"package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: projectName,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\ttype: \"module\",\n\t\t\t\t\tscripts: {\n\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\troutes: \"rakta routes\",\n\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t},\n\t\t\t\t\tdependencies: {\n\t\t\t\t\t\traktajs: \"^0.1.7\",\n\t\t\t\t\t\treact: \"^19.2.7\",\n\t\t\t\t\t\t\"react-dom\": \"^19.2.7\",\n\t\t\t\t\t\t\"react-icons\": \"^5.2.1\",\n\t\t\t\t\t\tmotion: \"^12.0.0\",\n\t\t\t\t\t\t...getCssDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t\tdevDependencies: {\n\t\t\t\t\t\t\"@types/react\": \"^19.2.17\",\n\t\t\t\t\t\t\"@types/react-dom\": \"^19.2.3\",\n\t\t\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t\t\t...getCssDevDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"./tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./\",\n\t\t\t\t\t\ttypes: [\"react\", \"react-dom\"],\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\n\t\t\t\t\t\t\"rakta-env.d.ts\",\n\t\t\t\t\t\t\"app/**/*\",\n\t\t\t\t\t\t\"components/**/*\",\n\t\t\t\t\t\t\"styles/**/*\",\n\t\t\t\t\t\t\"rakta.config.ts\",\n\t\t\t\t\t],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"rakta-env.d.ts\",\n\t\t\tcontent: generateFrontendOnlyRaktaEnv(),\n\t\t},\n\t\t{\n\t\t\tpath: \"rakta.config.ts\",\n\t\t\tcontent: `import { defineRaktaConfig } from \"raktajs\";\\n\\nexport default defineRaktaConfig({\\n appName: \"${projectName}\",\\n seo: {\\n defaultTitle: \"${DEFAULT_METADATA_TITLE}\",\\n defaultDescription: \"Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\",\\n },\\n render: {\\n defaultMode: \"csr\",\\n routes: {},\\n },\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/layout.tsx\",\n\t\t\tcontent: generateFrontendOnlyLayout(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/page.tsx\",\n\t\t\tcontent: generateFrontendOnlyPage(projectName),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/loading.tsx\",\n\t\t\tcontent: generateFrontendOnlyLoading(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/error.tsx\",\n\t\t\tcontent: generateFrontendOnlyError(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/notFound.tsx\",\n\t\t\tcontent: generateFrontendOnlyNotFound(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/ComponentsModal.tsx\",\n\t\t\tcontent: COMPONENTS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/CoralObstacle.tsx\",\n\t\t\tcontent: CORAL_OBSTACLE_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/DeployModal.tsx\",\n\t\t\tcontent: DEPLOY_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/DocsModal.tsx\",\n\t\t\tcontent: DOCS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/ShrimpCharacter.tsx\",\n\t\t\tcontent: SHRIMP_CHARACTER_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: `styles/${styleFileName}`,\n\t\t\tcontent: getFrontendOnlyCssGlobals(cssFramework),\n\t\t},\n\t\t{\n\t\t\tpath: \"public/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"public/favicon.ico\",\n\t\t\tcontent: FAVICON_BYTES,\n\t\t},\n\t];\n\n\treturn processFilesForLanguage(files, projectConfig.useTypeScript);\n}\n\n// ─── Fullstack frontend files ────────────────────────────────────────────────\n\nfunction getFullstackFrontendFiles(\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tconst { projectName, cssFramework } = projectConfig;\n\tconst styleFileName =\n\t\tcssFramework === \"sass\" ? \"globals.scss\" : \"globals.css\";\n\n\tconst files: ProjectFile[] = [\n\t\t{\n\t\t\tpath: \"frontend/package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: `${projectName}-frontend`,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\tscripts: {\n\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\troutes: \"rakta routes\",\n\t\t\t\t\t\t\"imports:generate\": \"rakta imports:generate\",\n\t\t\t\t\t\t\"rpc:types\": \"rakta rpc:types\",\n\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t},\n\t\t\t\t\tdependencies: {\n\t\t\t\t\t\traktajs: \"^0.1.7\",\n\t\t\t\t\t\treact: \"^19.2.7\",\n\t\t\t\t\t\t\"react-dom\": \"^19.2.7\",\n\t\t\t\t\t\t\"react-icons\": \"^5.2.1\",\n\t\t\t\t\t\tmotion: \"^12.0.0\",\n\t\t\t\t\t\t...getCssDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t\tdevDependencies: {\n\t\t\t\t\t\t\"@types/react\": \"^19.2.17\",\n\t\t\t\t\t\t\"@types/react-dom\": \"^19.2.3\",\n\t\t\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t\t\t...getCssDevDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"../tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./\",\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\n\t\t\t\t\t\t\"app/**/*\",\n\t\t\t\t\t\t\"components/**/*\",\n\t\t\t\t\t\t\"lib/**/*\",\n\t\t\t\t\t\t\"stores/**/*\",\n\t\t\t\t\t\t\"schemas/**/*\",\n\t\t\t\t\t\t\"rakta.config.ts\",\n\t\t\t\t\t],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/rakta.config.ts\",\n\t\t\tcontent: `import { defineRaktaConfig } from \"raktajs\";\\n\\nexport default defineRaktaConfig({\\n appName: \"${projectName}\",\\n seo: {\\n defaultTitle: \"${DEFAULT_METADATA_TITLE}\",\\n defaultDescription: \"Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\",\\n },\\n render: {\\n defaultMode: \"csr\",\\n routes: {\\n \"/\": \"ssg\",\\n \"/about\": \"ssg\",\\n \"/blog\": \"csg\",\\n \"/blog/:slug\": \"csg\",\\n \"/dashboard\": \"csr\"\\n }\\n }\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/layout.tsx\",\n\t\t\tcontent: `import React from \"react\";\\nimport \"../styles/${styleFileName}\";\\n\\ninterface RootLayoutProps {\\n readonly children: React.ReactNode;\\n}\\n\\nexport default function RootLayout({ children }: RootLayoutProps) {\\n return (\\n <html lang=\"en\">\\n <body>{children}</body>\\n </html>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/page.tsx\",\n\t\t\tcontent: generateFullstackHomePage(projectName),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/about/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function AboutPage() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">ABOUT</p>\\n <h1>About ${projectName}</h1>\\n <p>This project is built with Rakta.js, React, Bun, and TypeScript.</p>\\n <a href=\"/\">Back to home</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/blog/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nconst BLOG_POSTS = [\\n { slug: \"getting-started\", title: \"Getting started with Rakta.js\" },\\n { slug: \"file-based-routing\", title: \"File-based routing explained\" },\\n { slug: \"type-safe-rpc\", title: \"Type-safe API with CarubanWire\" },\\n];\\n\\nexport default function BlogPage() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">BLOG</p>\\n <h1>Articles</h1>\\n <ul>\\n {BLOG_POSTS.map((post) => (\\n <li key={post.slug}>\\n <a href={\\`/blog/\\${post.slug}\\`}>{post.title}</a>\\n </li>\\n ))}\\n </ul>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/blog/[slug]/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\ninterface BlogPostPageProps {\\n readonly params: {\\n readonly slug?: string;\\n };\\n}\\n\\nexport default function BlogPostPage({ params }: BlogPostPageProps) {\\n const postTitle = params.slug?.replaceAll(\"-\", \" \") ?? \"Article\";\\n\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">BLOG POST</p>\\n <h1>{postTitle}</h1>\\n <p>Slug: <code>{params.slug}</code></p>\\n <a href=\"/blog\">Back to blog</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/loading.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function Loading() {\\n return (\\n <main className=\"page-shell\">\\n <p>Loading...</p>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/error.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\ninterface ErrorPageProps {\\n readonly error: Error;\\n readonly reset: () => void;\\n}\\n\\nexport default function ErrorPage({ error, reset }: ErrorPageProps) {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <h1>Something went wrong</h1>\\n <p>{error.message}</p>\\n <button type=\"button\" onClick={reset}>Try again</button>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/not-found.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function NotFound() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <h1>404</h1>\\n <p>The page you are looking for does not exist.</p>\\n <a href=\"/\">Return home</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/api/hello/route.ts\",\n\t\t\tcontent: `export async function GET(request: Request): Promise<Response> {\\n const requestUrl = new URL(request.url);\\n\\n return Response.json({\\n message: \"Hello from Rakta.js API\",\\n pathname: requestUrl.pathname,\\n timestamp: new Date().toISOString(),\\n });\\n}\\n\\nexport async function POST(request: Request): Promise<Response> {\\n const requestBody = await request.json() as Record<string, unknown>;\\n\\n return Response.json({\\n received: requestBody,\\n timestamp: new Date().toISOString(),\\n });\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/http.ts\",\n\t\t\tcontent: `export const API_URL = process.env[\"API_URL\"] ?? \"http://localhost:4000\";\\n\\nexport async function apiGet<TData>(path: string): Promise<TData> {\\n const response = await fetch(\\`\\${API_URL}\\${path}\\`);\\n\\n if (!response.ok) {\\n throw new Error(\\`Request failed with status \\${response.status}\\`);\\n }\\n\\n return response.json() as Promise<TData>;\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/routes.ts\",\n\t\t\tcontent: `export const ROUTES = {\\n home: \"/\",\\n about: \"/about\",\\n blog: \"/blog\",\\n blogPost: (slug: string) => \\`/blog/\\${slug}\\`,\\n apiHello: \"/api/hello\",\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/utils.ts\",\n\t\t\tcontent: `export function cn(...classNames: Array<string | undefined | null | false>): string {\\n return classNames.filter(Boolean).join(\" \");\\n}\\n\\nexport function slugify(text: string): string {\\n return text\\n .toLowerCase()\\n .replace(/[^a-z0-9]+/g, \"-\")\\n .replace(/(^-|-$)/g, \"\");\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/stores/counter.store.ts\",\n\t\t\tcontent: `import { createRaktaStore } from \"raktajs\";\\n\\ninterface CounterState {\\n readonly count: number;\\n readonly increment: () => void;\\n readonly decrement: () => void;\\n}\\n\\nexport const useCounterStore = createRaktaStore<CounterState>((setState, getState) => ({\\n count: 0,\\n increment: () => setState({ count: getState().count + 1 }),\\n decrement: () => setState({ count: getState().count - 1 }),\\n}));\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/schemas/user.schema.ts\",\n\t\t\tcontent: `import { object, string, number } from \"raktajs\";\\n\\nexport const userSchema = object({\\n name: string().min(1),\\n email: string().min(5),\\n age: number().min(0).max(120),\\n});\\n\\nexport type UserSchema = typeof userSchema;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: `frontend/styles/${styleFileName}`,\n\t\t\tcontent: getCssGlobals(cssFramework),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/public/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/public/favicon.ico\",\n\t\t\tcontent: FAVICON_BYTES,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/ComponentsModal.tsx\",\n\t\t\tcontent: COMPONENTS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/CoralObstacle.tsx\",\n\t\t\tcontent: CORAL_OBSTACLE_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/DeployModal.tsx\",\n\t\t\tcontent: DEPLOY_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/DocsModal.tsx\",\n\t\t\tcontent: DOCS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/ShrimpCharacter.tsx\",\n\t\t\tcontent: SHRIMP_CHARACTER_CODE,\n\t\t},\n\t];\n\n\treturn processFilesForLanguage(files, projectConfig.useTypeScript);\n}\n\nfunction processFilesForLanguage(\n\tfiles: ProjectFile[],\n\tuseTypeScript: boolean,\n): ProjectFile[] {\n\tif (useTypeScript) return files;\n\n\treturn files.map((file) => {\n\t\tif (typeof file.content === \"string\") {\n\t\t\tlet path = file.path;\n\t\t\tif (path.endsWith(\".tsx\")) path = path.replace(\".tsx\", \".jsx\");\n\t\t\telse if (path.endsWith(\".ts\")) path = path.replace(\".ts\", \".js\");\n\n\t\t\t// Simple TS stripping regex\n\t\t\tlet code = file.content;\n\t\t\tcode = code.replace(/^interface\\s+\\w+\\s*\\{[\\s\\S]*?\\n\\}\\n/gm, \"\");\n\t\t\tcode = code.replace(/^type\\s+\\w+\\s*=[\\s\\S]*?;\\n/gm, \"\");\n\t\t\t// Remove types like: `function Foo({ a }: FooProps) {` -> `function Foo({ a }) {`\n\t\t\tcode = code.replace(/:\\s*[A-Z]\\w*(Props|State)\\b/g, \"\");\n\t\t\t// Remove `(request: Request): Promise<Response>` -> `(request)`\n\t\t\tcode = code.replace(\n\t\t\t\t/:\\s*(Request|Response|Promise<[^>]+>|string|number|boolean|any|unknown)/g,\n\t\t\t\t\"\",\n\t\t\t);\n\n\t\t\treturn { ...file, path, content: code };\n\t\t}\n\t\treturn file;\n\t});\n}\n\n// ─── Backend files ───────────────────────────────────────────────────────────\n\nfunction getBackendFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t...getBackendCommonFiles(projectConfig),\n\t\t...getBackendFrameworkFiles(projectConfig.backendFramework, projectConfig),\n\t];\n}\n\nfunction getBackendCommonFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/src/env.ts\",\n\t\t\tcontent: `function optionalEnv(envKey: string, fallbackValue: string): string {\\n return process.env[envKey] ?? fallbackValue;\\n}\\n\\nexport const env = {\\n port: Number(optionalEnv(\"PORT\", \"4000\")),\\n nodeEnv: optionalEnv(\"NODE_ENV\", \"development\"),\\n corsOrigin: optionalEnv(\"CORS_ORIGIN\", \"http://localhost:3000\"),\\n databaseUrl: optionalEnv(\"DATABASE_URL\", \"\"),\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/config/app.config.ts\",\n\t\t\tcontent: `import { env } from \"../env\";\\n\\nexport const appConfig = {\\n name: \"${projectConfig.projectName} API\",\\n version: \"0.1.0\",\\n port: env.port,\\n nodeEnv: env.nodeEnv,\\n corsOrigin: env.corsOrigin,\\n isDev: env.nodeEnv === \"development\",\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/config/database.config.ts\",\n\t\t\tcontent: getDatabaseConfig(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/database/client.ts\",\n\t\t\tcontent: getDatabaseClient(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/controllers/hello.controller.ts\",\n\t\t\tcontent: `export interface HelloResponse {\\n readonly success: boolean;\\n readonly message: string;\\n readonly framework: string;\\n readonly version: string;\\n readonly timestamp: string;\\n}\\n\\nexport function helloController(): HelloResponse {\\n return {\\n success: true,\\n message: \"Hello from ${projectConfig.projectName} API\",\\n framework: \"${BACKEND_DISPLAY[projectConfig.backendFramework]}\",\\n version: \"0.1.0\",\\n timestamp: new Date().toISOString(),\\n };\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/.env.example\",\n\t\t\tcontent: getDatabaseEnvExample(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"../tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./src\",\n\t\t\t\t\t\ttypes: [\"node\", \"bun\"],\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\"src/**/*\"],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/database/schema/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getBackendFrameworkFiles(\n\tselectedFramework: BackendFramework,\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tswitch (selectedFramework) {\n\t\tcase \"gaman\":\n\t\t\treturn getGamanFiles(projectConfig);\n\t\tcase \"express\":\n\t\t\treturn getExpressFiles(projectConfig);\n\t\tcase \"nest\":\n\t\t\treturn getNestFiles(projectConfig);\n\t\tcase \"adonis\":\n\t\t\treturn getAdonisFiles(projectConfig);\n\t\tdefault:\n\t\t\treturn getGamanFiles(projectConfig);\n\t}\n}\n\nfunction getGamanFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: { ...getDatabaseDependencies(projectConfig.database) },\n\t\t\t\tdevDependencies: { \"@types/bun\": \"^1.3.14\" },\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst corsHeaders = {\\n \"Access-Control-Allow-Origin\": appConfig.corsOrigin,\\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, PATCH, DELETE, OPTIONS\",\\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\\n};\\n\\nconst server = Bun.serve({\\n port: appConfig.port,\\n fetch(request: Request): Response {\\n const requestUrl = new URL(request.url);\\n\\n if (request.method === \"OPTIONS\") {\\n return new Response(null, { status: 204, headers: corsHeaders });\\n }\\n\\n if (requestUrl.pathname === \"/api/hello\" && request.method === \"GET\") {\\n return Response.json(helloController(), { headers: corsHeaders });\\n }\\n\\n return Response.json(\\n { success: false, error: \"Not found\" },\\n { status: 404, headers: corsHeaders }\\n );\\n },\\n});\\n\\nconsole.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${server.port}\\`);\\n`,\n\t\t},\n\t];\n}\n\nfunction getExpressFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\texpress: \"^4.19.2\",\n\t\t\t\t\tcors: \"^2.8.5\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@types/express\": \"^4.17.21\",\n\t\t\t\t\t\"@types/cors\": \"^2.8.17\",\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import cors from \"cors\";\\nimport express from \"express\";\\nimport { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst app = express();\\n\\napp.use(cors({ origin: appConfig.corsOrigin }));\\napp.use(express.json());\\n\\napp.get(\"/api/hello\", (_request, response) => {\\n response.json(helloController());\\n});\\n\\napp.use((_request, response) => {\\n response.status(404).json({ success: false, error: \"Not found\" });\\n});\\n\\napp.listen(appConfig.port, () => {\\n console.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${appConfig.port}\\`);\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/middlewares/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/routes/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/services/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getNestFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\t\"@nestjs/common\": \"^10.3.0\",\n\t\t\t\t\t\"@nestjs/core\": \"^10.3.0\",\n\t\t\t\t\t\"@nestjs/platform-express\": \"^10.3.0\",\n\t\t\t\t\t\"reflect-metadata\": \"^0.2.2\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/nest-cli.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\t$schema: \"https://json.schemastore.org/nest-cli\",\n\t\t\t\t\tcollection: \"@nestjs/schematics\",\n\t\t\t\t\tsourceRoot: \"src\",\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.module.ts\",\n\t\t\tcontent: `import { Module } from \"@nestjs/common\";\\nimport { AppController } from \"./app.controller\";\\n\\n@Module({\\n controllers: [AppController],\\n})\\nexport class AppModule {}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.controller.ts\",\n\t\t\tcontent: `import { Controller, Get } from \"@nestjs/common\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\n@Controller(\"api\")\\nexport class AppController {\\n @Get(\"hello\")\\n hello() {\\n return helloController();\\n }\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/main.ts\",\n\t\t\tcontent: `import \"reflect-metadata\";\\nimport { NestFactory } from \"@nestjs/core\";\\nimport { AppModule } from \"./app.module\";\\nimport { appConfig } from \"./config/app.config\";\\n\\nasync function bootstrap(): Promise<void> {\\n const app = await NestFactory.create(AppModule);\\n app.enableCors({ origin: appConfig.corsOrigin });\\n await app.listen(appConfig.port);\\n console.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${appConfig.port}\\`);\\n}\\n\\nbootstrap().catch(console.error);\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/modules/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/common/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getAdonisFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\t\"@adonisjs/core\": \"^6.9.0\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@adonisjs/assembler\": \"^7.7.0\",\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/controllers/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/middleware/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/services/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/start/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/config/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst corsHeaders = {\\n \"Access-Control-Allow-Origin\": appConfig.corsOrigin,\\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, PATCH, DELETE, OPTIONS\",\\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\\n};\\n\\nconst server = Bun.serve({\\n port: appConfig.port,\\n fetch(request: Request): Response {\\n const requestUrl = new URL(request.url);\\n\\n if (request.method === \"OPTIONS\") {\\n return new Response(null, { status: 204, headers: corsHeaders });\\n }\\n\\n if (requestUrl.pathname === \"/api/hello\" && request.method === \"GET\") {\\n return Response.json(helloController(), { headers: corsHeaders });\\n }\\n\\n return Response.json(\\n { success: false, error: \"Not found\" },\\n { status: 404, headers: corsHeaders }\\n );\\n },\\n});\\n\\nconsole.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${server.port}\\`);\\n`,\n\t\t},\n\t];\n}\n\nfunction getBackendPackageJson(\n\tprojectConfig: ProjectConfig,\n\tpackageDeps: {\n\t\treadonly dependencies: Record<string, string>;\n\t\treadonly devDependencies: Record<string, string>;\n\t},\n): string {\n\treturn JSON.stringify(\n\t\t{\n\t\t\tname: `${projectConfig.projectName}-backend`,\n\t\t\tversion: \"0.1.0\",\n\t\t\tprivate: true,\n\t\t\ttype: \"module\",\n\t\t\tscripts: {\n\t\t\t\tdev: \"bun run --watch src/app.ts\",\n\t\t\t\tbuild: \"bun build src/app.ts --outfile dist/app.js --target bun\",\n\t\t\t\tstart: \"bun run dist/app.js\",\n\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t},\n\t\t\tdependencies: {\n\t\t\t\t...packageDeps.dependencies,\n\t\t\t},\n\t\t\tdevDependencies: {\n\t\t\t\t\"@types/bun\": \"^1.3.14\",\n\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t...packageDeps.devDependencies,\n\t\t\t},\n\t\t},\n\t\tnull,\n\t\t2,\n\t);\n}\n\n// ─── Shared files (fullstack only) ──────────────────────────────────────────\n\nfunction getSharedFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"shared/types/index.ts\",\n\t\t\tcontent: `export interface ApiResponse<TData = unknown> {\\n readonly success: boolean;\\n readonly data?: TData;\\n readonly error?: string;\\n readonly message?: string;\\n}\\n\\nexport interface User {\\n readonly id: string;\\n readonly name: string;\\n readonly email: string;\\n readonly createdAt: string;\\n readonly updatedAt: string;\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"shared/constants/index.ts\",\n\t\t\tcontent: `export const APP_NAME = \"${projectConfig.projectName}\";\\nexport const API_VERSION = \"v1\";\\nexport const DEFAULT_PAGE_SIZE = 20;\\n`,\n\t\t},\n\t];\n}\n\n// ─── CSS helpers ─────────────────────────────────────────────────────────────\n\nfunction getCssDependencies(\n\tcssFramework: CssFramework,\n): Record<string, string> {\n\tswitch (cssFramework) {\n\t\tcase \"tailwind\":\n\t\t\treturn { tailwindcss: \"^4.3.1\" };\n\t\tcase \"bootstrap\":\n\t\t\treturn { bootstrap: \"^5.3.3\" };\n\t\tcase \"sass\":\n\t\tcase \"none\":\n\t\t\treturn {};\n\t}\n}\n\nfunction getCssDevDependencies(\n\tcssFramework: CssFramework,\n): Record<string, string> {\n\tswitch (cssFramework) {\n\t\tcase \"sass\":\n\t\t\treturn { sass: \"^1.77.0\" };\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n\nfunction getFrontendOnlyCssGlobals(cssFramework: CssFramework): string {\n\tconst cssImport =\n\t\tcssFramework === \"tailwind\"\n\t\t\t? `@import \"tailwindcss\";\\n\\n`\n\t\t\t: cssFramework === \"bootstrap\"\n\t\t\t\t? `@import url(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\\n\\n`\n\t\t\t\t: cssFramework === \"sass\"\n\t\t\t\t\t? `$color-primary: #dc2626;\\n$color-background: #050505;\\n$color-foreground: #f8fafc;\\n\\n`\n\t\t\t\t\t: \"\";\n\n\treturn `${cssImport}:root {\n --color-primary: #dc2626;\n --color-background: #050505;\n --color-foreground: #f8fafc;\n --color-surface: #0e111a;\n --color-border: rgba(255, 255, 255, 0.1);\n --color-muted: #94a3b8;\n color-scheme: dark;\n}\n\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n margin: 0;\n min-width: 320px;\n min-height: 100vh;\n color: var(--color-foreground);\n background: var(--color-background);\n font-family:\n ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@keyframes shrimpLegs {\n 0% {\n transform: translateY(0);\n }\n\n 50% {\n transform: translateY(2px);\n }\n}\n\n#rakta-root {\n min-height: 100vh;\n}\n\nmain {\n width: min(1120px, calc(100% - 32px));\n min-height: 100vh;\n margin: 0 auto;\n padding: 56px 0;\n}\n\nsection {\n margin: 0 0 24px;\n border: 1px solid rgba(248, 113, 113, 0.18);\n border-radius: 18px;\n background:\n linear-gradient(135deg, rgba(220, 38, 38, 0.16), transparent 34%),\n #0e111a;\n box-shadow: 0 24px 80px rgba(127, 29, 29, 0.2);\n padding: clamp(24px, 4vw, 44px);\n}\n\np {\n margin: 0 0 12px;\n color: #cbd5e1;\n line-height: 1.7;\n}\n\nh1,\nh2 {\n margin: 0 0 12px;\n color: #ffffff;\n line-height: 1;\n}\n\nh1 {\n max-width: 760px;\n font-size: clamp(42px, 8vw, 84px);\n letter-spacing: 0;\n}\n\nh2 {\n font-size: clamp(28px, 4vw, 44px);\n}\n\nclick {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 42px;\n margin: 16px 12px 0 0;\n border: 1px solid rgba(248, 113, 113, 0.42);\n border-radius: 12px;\n padding: 0 16px;\n color: #fecaca;\n font-weight: 700;\n text-decoration: none;\n cursor: pointer;\n transition:\n transform 160ms ease,\n border-color 160ms ease,\n background 160ms ease;\n}\n\nclick:hover {\n border-color: #f87171;\n background: rgba(220, 38, 38, 0.12);\n transform: translateY(-1px);\n}\n\nbutton {\n font: inherit;\n}\n\n.relative {\n position: relative;\n}\n\n.absolute {\n position: absolute;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.left-0 {\n left: 0;\n}\n\n.top-2 {\n top: 8px;\n}\n\n.right-3 {\n right: 12px;\n}\n\n.block {\n display: block;\n}\n\n.flex {\n display: flex;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-center {\n align-items: center;\n}\n\n.items-start {\n align-items: flex-start;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.gap-2 {\n gap: 8px;\n}\n\n.gap-4 {\n gap: 16px;\n}\n\n.gap-8 {\n gap: 32px;\n}\n\n.w-full {\n width: 100%;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.select-none {\n user-select: none;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-sm {\n font-size: 14px;\n}\n\n.text-lg {\n font-size: 18px;\n}\n\n.text-xl {\n font-size: 20px;\n}\n\n.font-bold {\n font-weight: 800;\n}\n\n.font-semibold {\n font-weight: 700;\n}\n\n.font-mono {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n}\n\n.text-white {\n color: #fff;\n}\n\n.text-slate-400 {\n color: #94a3b8;\n}\n\n.text-red-600 {\n color: #dc2626;\n}\n\n.bg-red-600 {\n background: #dc2626;\n}\n\n.bg-black\\\\/75 {\n background: rgba(0, 0, 0, 0.75);\n}\n\n.pointer-events-none {\n pointer-events: none;\n}\n\n.rounded-sm {\n border-radius: 2px;\n}\n\n.rounded-lg {\n border-radius: 8px;\n}\n\n.min-h-5 {\n min-height: 20px;\n}\n\n.tabular-nums {\n font-variant-numeric: tabular-nums;\n}\n\nbutton[aria-label^=\"ShrimpRun\"] {\n border: 2px solid rgba(248, 113, 113, 0.28);\n border-radius: 16px;\n background:\n linear-gradient(180deg, rgba(15, 23, 42, 0.96), rgba(7, 10, 18, 0.98)),\n radial-gradient(circle at 18% 22%, rgba(248, 113, 113, 0.16), transparent 30%);\n box-shadow:\n inset 0 0 0 1px rgba(255, 255, 255, 0.04),\n 0 20px 60px rgba(0, 0, 0, 0.28);\n}\n\nbutton[aria-label^=\"ShrimpRun\"] > .bottom-0.left-0 {\n background: linear-gradient(90deg, #7f1d1d, #dc2626, #fecaca);\n}\n\nbutton:not([aria-label]) {\n border: 0;\n border-radius: 10px;\n background: #dc2626;\n color: #fff;\n cursor: pointer;\n font-weight: 800;\n}\n\n.shrimp-sprite {\n filter: drop-shadow(0 8px 12px rgba(0, 0, 0, 0.32));\n}\n\n.shrimp-run-obstacle {\n border-radius: 8px 8px 2px 2px;\n background:\n radial-gradient(circle at 50% 8px, #fecaca 0 4px, transparent 5px),\n linear-gradient(135deg, #fb7185 0%, #dc2626 46%, #7f1d1d 100%);\n box-shadow:\n inset -6px -8px 0 rgba(69, 10, 10, 0.32),\n 0 0 0 2px rgba(254, 202, 202, 0.18);\n}\n\n.shrimp-run-obstacle::before,\n.shrimp-run-obstacle::after {\n position: absolute;\n bottom: 8px;\n width: 10px;\n height: 22px;\n border-radius: 999px 999px 4px 4px;\n background: #ef4444;\n content: \"\";\n}\n\n.shrimp-run-obstacle::before {\n left: -7px;\n transform: rotate(-18deg);\n}\n\n.shrimp-run-obstacle::after {\n right: -7px;\n transform: rotate(18deg);\n}\n\n@media (max-width: 720px) {\n main {\n width: min(100% - 20px, 1120px);\n padding: 24px 0;\n }\n\n section {\n padding: 20px;\n }\n}\n`;\n}\n\nfunction getCssGlobals(cssFramework: CssFramework): string {\n\tconst sharedBase = `\n:root {\n --color-primary: #dc2626;\n --color-background: #050505;\n --color-foreground: #f8fafc;\n}\n\n* {\n box-sizing: border-box;\n}\n\nbody {\n margin: 0;\n color: var(--color-foreground);\n background: var(--color-background);\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n}\n\n.page-shell {\n width: min(100% - 2rem, 960px);\n margin: 0 auto;\n padding: 4rem 0;\n}\n\n.hero-card,\n.feature-card {\n border: 1px solid rgba(255, 255, 255, 0.1);\n background: #0e111a;\n border-radius: 24px;\n padding: 2rem;\n margin-bottom: 1.5rem;\n}\n\n.eyebrow {\n color: #dc2626;\n font-weight: 700;\n letter-spacing: 0.12em;\n font-size: 0.75rem;\n text-transform: uppercase;\n}\n\n.button-row {\n display: flex;\n gap: 0.75rem;\n flex-wrap: wrap;\n margin-top: 1rem;\n}\n\na {\n color: #dc2626;\n}\n\nbutton {\n cursor: pointer;\n}\n`;\n\n\tswitch (cssFramework) {\n\t\tcase \"tailwind\":\n\t\t\treturn `@import \"tailwindcss\";\\n${sharedBase}`;\n\t\tcase \"bootstrap\":\n\t\t\treturn `@import url(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\\n${sharedBase}`;\n\t\tcase \"sass\":\n\t\t\treturn `$color-primary: #dc2626;\\n$color-background: #050505;\\n$color-foreground: #f8fafc;\\n${sharedBase}`;\n\t\tcase \"none\":\n\t\t\treturn sharedBase;\n\t}\n}\n\n// ─── Inline template generators ──────────────────────────────────────────────\n\nfunction generateFrontendOnlyRaktaEnv(): string {\n\treturn `declare module \"*.css\";\ndeclare module \"*.scss\";\ndeclare module \"*.sass\";\n\ntype RaktaClickAttributes = Omit<\n import(\"react\").AnchorHTMLAttributes<HTMLAnchorElement>,\n \"href\"\n> & {\n readonly to: string;\n};\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n\n const useCallback: typeof import(\"react\").useCallback;\n const useEffect: typeof import(\"react\").useEffect;\n const useRef: typeof import(\"react\").useRef;\n const useState: typeof import(\"react\").useState;\n\n const ComponentsModal: typeof import(\"./app/components/ComponentsModal\").default;\n const CoralObstacle: typeof import(\"./app/components/CoralObstacle\").default;\n const DeployModal: typeof import(\"./app/components/DeployModal\").default;\n const DocsModal: typeof import(\"./app/components/DocsModal\").default;\n const ShrimpCharacter: typeof import(\"./app/components/ShrimpCharacter\").default;\n}\n\ndeclare module \"react/jsx-runtime\" {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n}\n\ndeclare module \"react/jsx-dev-runtime\" {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n}\n\nexport {};\n`;\n}\n\nfunction generateFrontendOnlyLayout(): string {\n\treturn `interface RootLayoutProps {\n readonly children: import(\"react\").ReactNode;\n}\n\nexport default function RootLayout({ children }: RootLayoutProps) {\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Rakta.js App</title>\n </head>\n <body className=\"min-h-screen bg-[#050505] text-slate-50 antialiased\">\n {children}\n </body>\n </html>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyPage(_projectName: string): string {\n\treturn WELCOME_PAGE_CODE;\n}\n\nfunction generateFrontendOnlyLoading(): string {\n\treturn `export default function Loading() {\n return (\n <main className=\"flex min-h-screen items-center justify-center bg-[#050505] px-4\">\n <p className=\"text-sm font-medium text-slate-400\">Loading...</p>\n </main>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyError(): string {\n\treturn `interface ErrorPageProps {\n readonly error: Error;\n readonly reset: () => void;\n}\n\nexport default function ErrorPage({ error, reset }: ErrorPageProps) {\n return (\n <main className=\"mx-auto flex min-h-screen w-full max-w-3xl items-center px-4 py-16\">\n <section className=\"w-full rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n ERROR\n </p>\n <h1 className=\"mb-3 text-3xl font-extrabold text-white\">\n Something went wrong\n </h1>\n <p className=\"mb-6 wrap-break-word text-sm leading-6 text-slate-400\">\n {error.message}\n </p>\n <button\n type=\"button\"\n onClick={reset}\n className=\"rounded-lg bg-red-600 px-6 py-2 font-semibold text-white transition hover:bg-red-700 active:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n >\n Try again\n </button>\n </section>\n </main>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyNotFound(): string {\n\treturn `export default function NotFound() {\n return (\n <main className=\"mx-auto flex min-h-screen w-full max-w-3xl items-center px-4 py-16\">\n <section className=\"w-full rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n 404\n </p>\n <h1 className=\"mb-3 text-3xl font-extrabold text-white\">\n Page not found\n </h1>\n <p className=\"mb-6 text-sm leading-6 text-slate-400\">\n The page you are looking for does not exist.\n </p>\n <click\n to=\"/\"\n className=\"font-semibold text-red-500 underline-offset-4 transition hover:text-red-400 hover:underline\"\n >\n Return home\n </click>\n </section>\n </main>\n );\n}\n`;\n}\n\nfunction _generateShrimpMascotComponent(): string {\n\treturn `interface RaktaShrimpMascotProps {\n readonly isJumping: boolean;\n readonly isDead: boolean;\n readonly style?: import(\"react\").CSSProperties;\n}\n\n/**\n * RaktaShrimpMascot — The animated shrimp hero of ShrimpRun.\n * Drawn entirely with inline SVG. No external assets required.\n */\nexport default function RaktaShrimpMascot({\n isJumping,\n isDead,\n style,\n}: RaktaShrimpMascotProps) {\n const bodyColor = isDead ? \"#6b7280\" : \"#dc2626\";\n const eyeColor = isDead ? \"#374151\" : \"#fff\";\n const legAnimation =\n isJumping || isDead ? \"none\" : \"shrimpLegs 0.3s steps(2) infinite\";\n\n return (\n <svg\n viewBox=\"0 0 48 48\"\n width=\"48\"\n height=\"48\"\n style={{ display: \"block\", ...style }}\n aria-label={\n isDead ? \"dead shrimp\" : isJumping ? \"shrimp jumping\" : \"running shrimp\"\n }\n role=\"img\"\n >\n <style>{\\`\n @keyframes shrimpLegs {\n 0% { transform: translateY(0); }\n 50% { transform: translateY(2px); }\n }\n \\`}</style>\n\n {/* Body */}\n <path\n d=\"M8 30 Q10 14 24 12 Q38 10 40 22 Q42 32 32 36 Q20 40 8 30Z\"\n fill={bodyColor}\n />\n\n {/* Shell segments */}\n <path\n d=\"M12 28 Q16 20 24 18 Q30 17 34 22\"\n stroke=\"#b91c1c\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity={isDead ? 0.3 : 0.6}\n />\n <path\n d=\"M14 32 Q19 24 28 22 Q33 21 36 26\"\n stroke=\"#b91c1c\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity={isDead ? 0.3 : 0.6}\n />\n\n {/* Eye */}\n <circle cx=\"34\" cy=\"18\" r=\"4\" fill=\"#1e293b\" />\n <circle cx=\"35\" cy=\"17\" r=\"2\" fill={eyeColor} />\n\n {isDead && (\n <>\n <line\n x1=\"32\"\n y1=\"16\"\n x2=\"36\"\n y2=\"20\"\n stroke=\"#374151\"\n strokeWidth=\"1.5\"\n />\n <line\n x1=\"36\"\n y1=\"16\"\n x2=\"32\"\n y2=\"20\"\n stroke=\"#374151\"\n strokeWidth=\"1.5\"\n />\n </>\n )}\n\n {/* Antennae */}\n <line\n x1=\"34\"\n y1=\"14\"\n x2=\"40\"\n y2=\"6\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"32\"\n y1=\"13\"\n x2=\"36\"\n y2=\"4\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n\n {/* Tail */}\n <path\n d=\"M10 30 Q4 26 6 20\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10 30 Q2 30 4 36\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10 30 Q6 34 8 40\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n\n {/* Legs */}\n <g\n style={{\n animation: legAnimation,\n transformOrigin: \"24px 36px\",\n }}\n >\n <line\n x1=\"18\"\n y1=\"36\"\n x2=\"14\"\n y2=\"44\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"22\"\n y1=\"38\"\n x2=\"18\"\n y2=\"46\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"26\"\n y1=\"38\"\n x2=\"24\"\n y2=\"46\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"30\"\n y1=\"37\"\n x2=\"28\"\n y2=\"45\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </g>\n </svg>\n );\n}\n`;\n}\n\nfunction _generateShrimpRunGameComponent(): string {\n\treturn `import { useCallback, useEffect, useRef, useState } from \"react\";\nimport RaktaShrimpMascot from \"./raktaShrimpMascot\";\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype GameStatus = \"idle\" | \"running\" | \"dead\";\n\ninterface ObstacleState {\n readonly id: number;\n readonly xPosition: number;\n readonly width: number;\n readonly height: number;\n}\n\ninterface ShrimpState {\n readonly yPosition: number;\n readonly velocityY: number;\n readonly isJumping: boolean;\n}\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst CANVAS_WIDTH = 640;\nconst CANVAS_HEIGHT = 160;\nconst GROUND_STRIP_HEIGHT = 4;\nconst SHRIMP_START_X = 60;\nconst SHRIMP_WIDTH = 48;\nconst SHRIMP_HEIGHT = 48;\nconst GRAVITY = 1.4;\nconst JUMP_VELOCITY = -18;\nconst INITIAL_OBSTACLE_SPEED = 5;\nconst SPEED_INCREMENT_PER_SCORE = 0.003;\nconst OBSTACLE_SPAWN_INTERVAL_MS = 1600;\nconst SCORE_TICK_MS = 80;\nconst COLLISION_MARGIN = 8;\nconst MAX_CONCURRENT_OBSTACLES = 3;\nconst FRAME_SKIP_THRESHOLD_MS = 100;\n\n// ─── Physics helpers ──────────────────────────────────────────────────────────\n\nfunction getObstacleSpeed(currentScore: number): number {\n return INITIAL_OBSTACLE_SPEED + currentScore * SPEED_INCREMENT_PER_SCORE;\n}\n\nfunction checkCollision(\n shrimpYPosition: number,\n obstacle: ObstacleState,\n): boolean {\n const shrimpLeft = SHRIMP_START_X + COLLISION_MARGIN;\n const shrimpRight = SHRIMP_START_X + SHRIMP_WIDTH - COLLISION_MARGIN;\n const shrimpTop =\n CANVAS_HEIGHT -\n GROUND_STRIP_HEIGHT -\n shrimpYPosition -\n SHRIMP_HEIGHT +\n COLLISION_MARGIN;\n const shrimpBottom = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT - shrimpYPosition;\n\n const obstacleLeft = obstacle.xPosition + COLLISION_MARGIN;\n const obstacleRight = obstacle.xPosition + obstacle.width - COLLISION_MARGIN;\n const obstacleTop = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT - obstacle.height;\n const obstacleBottom = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT;\n\n return (\n shrimpLeft < obstacleRight &&\n shrimpRight > obstacleLeft &&\n shrimpTop < obstacleBottom &&\n shrimpBottom > obstacleTop\n );\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * ShrimpRun — Default Rakta.js interactive starter game.\n *\n * Like the Chrome offline Dino game, but the dinosaur is an animated shrimp.\n * Press Space or click the game canvas to jump. Avoid the red obstacles!\n *\n * Features:\n * - React state only — no external game library\n * - requestAnimationFrame game loop\n * - Physics: gravity + jump velocity\n * - Score that increases over time\n * - Speed ramps up as score grows\n * - Collision detection with margin\n * - High score tracked in component state\n * - Keyboard (Space) and click/tap support\n * - Accessible button game canvas\n * - SVG shrimp mascot — no external assets\n */\nexport default function ShrimpRunGame() {\n const [gameStatus, setGameStatus] = useState<GameStatus>(\"idle\");\n const [score, setScore] = useState(0);\n const [highScore, setHighScore] = useState(0);\n const [obstacles, setObstacles] = useState<ObstacleState[]>([]);\n const [shrimp, setShrimp] = useState<ShrimpState>({\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n });\n\n const gameStatusRef = useRef<GameStatus>(\"idle\");\n const scoreRef = useRef(0);\n const shrimpRef = useRef<ShrimpState>({\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n });\n const obstaclesRef = useRef<ObstacleState[]>([]);\n const obstacleIdRef = useRef(0);\n const animationFrameRef = useRef<number>(0);\n const lastObstacleTimeRef = useRef(0);\n const lastScoreTickRef = useRef(0);\n\n const jump = useCallback((): void => {\n if (gameStatusRef.current === \"dead\") {\n return;\n }\n\n if (gameStatusRef.current === \"idle\") {\n gameStatusRef.current = \"running\";\n setGameStatus(\"running\");\n }\n\n if (!shrimpRef.current.isJumping) {\n const nextShrimp: ShrimpState = {\n ...shrimpRef.current,\n velocityY: JUMP_VELOCITY,\n isJumping: true,\n };\n\n shrimpRef.current = nextShrimp;\n setShrimp(nextShrimp);\n }\n }, []);\n\n const resetGame = useCallback((): void => {\n const freshShrimp: ShrimpState = {\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n };\n\n shrimpRef.current = freshShrimp;\n obstaclesRef.current = [];\n obstacleIdRef.current = 0;\n scoreRef.current = 0;\n gameStatusRef.current = \"idle\";\n lastObstacleTimeRef.current = 0;\n lastScoreTickRef.current = 0;\n\n setShrimp(freshShrimp);\n setObstacles([]);\n setScore(0);\n setGameStatus(\"idle\");\n }, []);\n\n useEffect(() => {\n let previousTimestamp = 0;\n\n function gameTick(timestamp: number): void {\n if (gameStatusRef.current !== \"running\") {\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n\n const deltaTime = timestamp - previousTimestamp;\n previousTimestamp = timestamp;\n\n if (deltaTime > FRAME_SKIP_THRESHOLD_MS) {\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n\n const currentShrimp = shrimpRef.current;\n let nextVelocityY = currentShrimp.velocityY + GRAVITY;\n let nextYPosition = currentShrimp.yPosition - nextVelocityY;\n\n if (nextYPosition <= 0) {\n nextYPosition = 0;\n nextVelocityY = 0;\n }\n\n const nextShrimp: ShrimpState = {\n yPosition: nextYPosition,\n velocityY: nextVelocityY,\n isJumping: nextYPosition > 0,\n };\n\n shrimpRef.current = nextShrimp;\n setShrimp(nextShrimp);\n\n const obstacleSpeed = getObstacleSpeed(scoreRef.current);\n\n const movedObstacles = obstaclesRef.current\n .map(\n (obstacle): ObstacleState => ({\n ...obstacle,\n xPosition: obstacle.xPosition - obstacleSpeed,\n }),\n )\n .filter((obstacle) => obstacle.xPosition + obstacle.width > -10);\n\n if (\n timestamp - lastObstacleTimeRef.current > OBSTACLE_SPAWN_INTERVAL_MS &&\n movedObstacles.length < MAX_CONCURRENT_OBSTACLES\n ) {\n const obstacleHeight = 30 + Math.floor(Math.random() * 30);\n const obstacleWidth = 20 + Math.floor(Math.random() * 20);\n\n movedObstacles.push({\n id: obstacleIdRef.current,\n xPosition: CANVAS_WIDTH + 20,\n width: obstacleWidth,\n height: obstacleHeight,\n });\n\n obstacleIdRef.current += 1;\n lastObstacleTimeRef.current = timestamp;\n }\n\n obstaclesRef.current = movedObstacles;\n setObstacles([...movedObstacles]);\n\n for (const obstacle of movedObstacles) {\n if (checkCollision(nextShrimp.yPosition, obstacle)) {\n gameStatusRef.current = \"dead\";\n setGameStatus(\"dead\");\n setHighScore((previousHighScore: number) =>\n Math.max(previousHighScore, scoreRef.current),\n );\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n }\n\n if (timestamp - lastScoreTickRef.current > SCORE_TICK_MS) {\n scoreRef.current += 1;\n setScore(scoreRef.current);\n lastScoreTickRef.current = timestamp;\n }\n\n animationFrameRef.current = requestAnimationFrame(gameTick);\n }\n\n animationFrameRef.current = requestAnimationFrame(gameTick);\n\n return () => {\n cancelAnimationFrame(animationFrameRef.current);\n };\n }, []);\n\n useEffect(() => {\n function handleKeyDown(keyboardEvent: KeyboardEvent): void {\n if (keyboardEvent.code === \"Space\") {\n keyboardEvent.preventDefault();\n jump();\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [jump]);\n\n const shrimpBottomOffset = GROUND_STRIP_HEIGHT + shrimp.yPosition;\n const isDead = gameStatus === \"dead\";\n const isIdle = gameStatus === \"idle\";\n const isRunning = gameStatus === \"running\";\n\n return (\n <div className=\"flex flex-col items-start gap-4 py-4\">\n <div className=\"flex flex-wrap items-center gap-8\">\n <span className=\"font-mono text-xl font-bold tabular-nums text-red-600\">\n Score: {score}\n </span>\n {highScore > 0 && (\n <span className=\"text-sm text-slate-400\">Best: {highScore}</span>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"relative block max-w-full cursor-pointer select-none overflow-hidden rounded-2xl border-2 border-red-600/30 bg-[#0e111a] p-0 text-left focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n aria-label=\"ShrimpRun game area. Click or press Space to jump.\"\n onClick={jump}\n onKeyDown={(keyboardEvent: import(\"react\").KeyboardEvent) => {\n if (keyboardEvent.code === \"Space\") {\n keyboardEvent.preventDefault();\n jump();\n }\n }}\n style={{\n width: CANVAS_WIDTH,\n height: CANVAS_HEIGHT,\n }}\n >\n <span\n className=\"absolute bottom-0 left-0 w-full rounded-sm bg-red-600\"\n style={{\n height: GROUND_STRIP_HEIGHT,\n }}\n />\n\n <span\n className=\"absolute shrimp-sprite\"\n style={{\n left: SHRIMP_START_X,\n bottom: shrimpBottomOffset,\n width: SHRIMP_WIDTH,\n height: SHRIMP_HEIGHT,\n transform: isDead\n ? \"rotate(18deg) translateY(8px)\"\n : shrimp.isJumping\n ? \"rotate(-8deg) translateY(-4px)\"\n : \"rotate(0deg)\",\n transition: \"transform 120ms ease\",\n }}\n >\n <RaktaShrimpMascot isJumping={shrimp.isJumping} isDead={isDead} />\n </span>\n\n {obstacles.map((obstacle) => (\n <span\n key={obstacle.id}\n className=\"absolute shrimp-run-obstacle\"\n style={{\n left: obstacle.xPosition,\n bottom: GROUND_STRIP_HEIGHT,\n width: obstacle.width,\n height: obstacle.height,\n }}\n />\n ))}\n\n {isIdle && (\n <span className=\"pointer-events-none absolute inset-0 flex items-center justify-center text-sm text-slate-400\">\n Press Space or click to start\n </span>\n )}\n\n {isDead && (\n <span className=\"absolute inset-0 flex flex-col items-center justify-center gap-2 bg-black/75\">\n <span className=\"text-lg font-bold tracking-widest text-red-600\">\n GAME OVER\n </span>\n <span className=\"text-sm text-slate-400\">Score: {score}</span>\n </span>\n )}\n\n {isRunning && score > 0 && score % 50 === 0 && (\n <span className=\"absolute right-3 top-2 text-xs font-bold tracking-widest text-red-600 opacity-80\">\n {score}!\n </span>\n )}\n </button>\n\n <p className=\"min-h-5 text-sm text-slate-400\">\n {isIdle && \"🦐 Click or press Space to make the shrimp jump!\"}\n {isRunning && \"🦐 Don't hit the obstacles!\"}\n {isDead && \"The shrimp got cooked. Try again!\"}\n </p>\n\n {isDead && (\n <button\n type=\"button\"\n className=\"w-fit rounded-lg bg-red-600 px-6 py-2 font-semibold text-white transition hover:bg-red-700 active:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n onClick={resetGame}\n >\n Restart\n </button>\n )}\n </div>\n );\n}\n`;\n}\n\nfunction generateFullstackHomePage(_projectName: string): string {\n\treturn WELCOME_PAGE_CODE;\n}\n\n// ─── Database helpers ─────────────────────────────────────────────────────────\n\nfunction getDatabaseDependencies(\n\tselectedDatabase: Database,\n): Record<string, string> {\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn { postgres: \"^3.4.4\" };\n\t\tcase \"mysql\":\n\t\tcase \"mariadb\":\n\t\t\treturn { mysql2: \"^3.9.8\" };\n\t\tcase \"mongodb\":\n\t\t\treturn { mongodb: \"^6.8.0\" };\n\t\tcase \"firebase\":\n\t\t\treturn { \"firebase-admin\": \"^12.7.0\" };\n\t\tcase \"sqlite\":\n\t\t\treturn {};\n\t\tcase \"redis\":\n\t\t\treturn { ioredis: \"^5.4.1\" };\n\t\tcase \"planetscale\":\n\t\t\treturn { \"@planetscale/database\": \"^1.18.0\" };\n\t\tcase \"neon\":\n\t\t\treturn { \"@neondatabase/serverless\": \"^0.9.4\" };\n\t\tcase \"turso\":\n\t\t\treturn { \"@libsql/client\": \"^0.6.2\" };\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n\nfunction getDatabaseConfig(selectedDatabase: Database): string {\n\tswitch (selectedDatabase) {\n\t\tcase \"sqlite\":\n\t\t\treturn `export const databaseConfig = {\\n path: process.env[\"DATABASE_PATH\"] ?? \"./database.sqlite\",\\n provider: \"sqlite\" as const,\\n} as const;\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `export const databaseConfig = {\\n projectId: process.env[\"FIREBASE_PROJECT_ID\"] ?? \"\",\\n clientEmail: process.env[\"FIREBASE_CLIENT_EMAIL\"] ?? \"\",\\n privateKey: process.env[\"FIREBASE_PRIVATE_KEY\"]?.replace(/\\\\\\\\\\\\\\\\n/g, \"\\\\\\\\n\") ?? \"\",\\n databaseUrl: process.env[\"FIREBASE_DATABASE_URL\"] ?? \"\",\\n provider: \"firebase\" as const,\\n} as const;\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `export const databaseConfig = {\\n url: process.env[\"TURSO_DATABASE_URL\"] ?? \"\",\\n authToken: process.env[\"TURSO_AUTH_TOKEN\"] ?? \"\",\\n provider: \"turso\" as const,\\n} as const;\\n`;\n\t\tdefault:\n\t\t\treturn `import { env } from \"../env\";\\n\\nexport const databaseConfig = {\\n url: env.databaseUrl,\\n provider: \"${selectedDatabase}\" as const,\\n} as const;\\n`;\n\t}\n}\n\nfunction getDatabaseClient(selectedDatabase: Database): string {\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn `import postgres from \"postgres\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const sql = databaseConfig.url ? postgres(databaseConfig.url) : null;\\n`;\n\t\tcase \"mysql\":\n\t\tcase \"mariadb\":\n\t\t\treturn `import mysql from \"mysql2/promise\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const pool = databaseConfig.url\\n ? mysql.createPool({ uri: databaseConfig.url, connectionLimit: 10 })\\n : null;\\n`;\n\t\tcase \"mongodb\":\n\t\t\treturn `import { MongoClient } from \"mongodb\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const mongoClient = databaseConfig.url\\n ? new MongoClient(databaseConfig.url)\\n : null;\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `import { cert, getApps, initializeApp } from \"firebase-admin/app\";\\nimport { getFirestore } from \"firebase-admin/firestore\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nconst credentialReady =\\n databaseConfig.projectId.length > 0 &&\\n databaseConfig.clientEmail.length > 0 &&\\n databaseConfig.privateKey.length > 0;\\n\\nexport const firebaseApp = getApps()[0] ?? initializeApp(\\n credentialReady\\n ? {\\n credential: cert({\\n projectId: databaseConfig.projectId,\\n clientEmail: databaseConfig.clientEmail,\\n privateKey: databaseConfig.privateKey,\\n }),\\n databaseURL: databaseConfig.databaseUrl || undefined,\\n }\\n : undefined\\n);\\n\\nexport const firestore = getFirestore(firebaseApp);\\n`;\n\t\tcase \"sqlite\":\n\t\t\treturn `import { Database } from \"bun:sqlite\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const db = new Database(databaseConfig.path, { create: true });\\n`;\n\t\tcase \"redis\":\n\t\t\treturn `import Redis from \"ioredis\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const redis = databaseConfig.url ? new Redis(databaseConfig.url) : null;\\n`;\n\t\tcase \"planetscale\":\n\t\t\treturn `import { connect } from \"@planetscale/database\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const connection = databaseConfig.url\\n ? connect({ url: databaseConfig.url })\\n : null;\\n`;\n\t\tcase \"neon\":\n\t\t\treturn `import { neon } from \"@neondatabase/serverless\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const sql = databaseConfig.url ? neon(databaseConfig.url) : null;\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `import { createClient } from \"@libsql/client\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const db =\\n databaseConfig.url && databaseConfig.authToken\\n ? createClient({ url: databaseConfig.url, authToken: databaseConfig.authToken })\\n : null;\\n`;\n\t\tdefault:\n\t\t\treturn `export const databaseClient = null;\\n`;\n\t}\n}\n\nfunction getDatabaseEnvExample(selectedDatabase: Database): string {\n\tconst baseEnv = `NODE_ENV=development\\nPORT=4000\\nCORS_ORIGIN=http://localhost:3000\\n`;\n\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn `${baseEnv}DATABASE_URL=postgresql://user:password@localhost:5432/dbname\\n`;\n\t\tcase \"mysql\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@localhost:3306/dbname\\n`;\n\t\tcase \"mariadb\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@localhost:3306/dbname\\n`;\n\t\tcase \"mongodb\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mongodb://localhost:27017/dbname\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `${baseEnv}FIREBASE_PROJECT_ID=your-project-id\\nFIREBASE_CLIENT_EMAIL=firebase-adminsdk@your-project.iam.gserviceaccount.com\\nFIREBASE_PRIVATE_KEY=\"-----BEGIN PRIVATE KEY-----\\\\nyour-key\\\\n-----END PRIVATE KEY-----\\\\n\"\\nFIREBASE_DATABASE_URL=https://your-project.firebaseio.com\\n`;\n\t\tcase \"sqlite\":\n\t\t\treturn `${baseEnv}DATABASE_PATH=./database.sqlite\\n`;\n\t\tcase \"redis\":\n\t\t\treturn `${baseEnv}DATABASE_URL=redis://localhost:6379\\n`;\n\t\tcase \"planetscale\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@aws.connect.psdb.cloud/dbname\\n`;\n\t\tcase \"neon\":\n\t\t\treturn `${baseEnv}DATABASE_URL=postgresql://user:password@ep-xxx.neon.tech/neondb?sslmode=require\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `${baseEnv}TURSO_DATABASE_URL=libsql://your-db.turso.io\\nTURSO_AUTH_TOKEN=your-auth-token\\n`;\n\t\tdefault:\n\t\t\treturn `${baseEnv}DATABASE_URL=\\n`;\n\t}\n}\n\n// ─── README ──────────────────────────────────────────────────────────────────\n\nfunction generateProjectReadme(projectConfig: ProjectConfig): string {\n\tconst { projectName, projectMode } = projectConfig;\n\n\tif (projectMode === \"frontend-only\") {\n\t\treturn `# ${projectName}\\n\\nBuilt with Rakta.js — Small in size. Fierce in speed. Alive in every route.\\n\\n## Stack\\n\\n| Layer | Technology |\\n| --- | --- |\\n| Frontend | Rakta.js + React + TypeScript |\\n| CSS | ${CSS_DISPLAY[projectConfig.cssFramework]} |\\n| Runtime | Bun |\\n\\n## Run\\n\\n\\`\\`\\`bash\\nbun install\\nbun run dev\\n\\`\\`\\`\\n\\n## ShrimpRun\\n\\nYour starter includes ShrimpRun — an interactive game where a shrimp dodges obstacles. Press Space or click to jump!\\n`;\n\t}\n\n\treturn `# ${projectName}\\n\\nBuilt with Rakta.js — Small in size. Fierce in speed. Alive in every route.\\n\\n## Stack\\n\\n| Layer | Technology |\\n| --- | --- |\\n| Frontend | Rakta.js + React + TypeScript |\\n| CSS | ${CSS_DISPLAY[projectConfig.cssFramework]} |\\n| Backend | ${BACKEND_DISPLAY[projectConfig.backendFramework]} |\\n| Database | ${DATABASE_DISPLAY[projectConfig.database]} |\\n| Runtime | Bun |\\n\\n## Run\\n\\n\\`\\`\\`bash\\nbun install\\n\\n# Terminal 1\\nbun run dev:frontend\\n\\n# Terminal 2\\nbun run dev:backend\\n\\`\\`\\`\\n\\n## Endpoints\\n\\n- Frontend: http://localhost:3000\\n- Backend: http://localhost:4000\\n`;\n}\n\n// ─── Main export ─────────────────────────────────────────────────────────────\n\nexport function generateProjectFiles(\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tif (projectConfig.projectMode === \"frontend-only\") {\n\t\treturn [\n\t\t\t...getRootFiles(projectConfig),\n\t\t\t...getFrontendOnlyFiles(projectConfig),\n\t\t];\n\t}\n\n\treturn [\n\t\t...getRootFiles(projectConfig),\n\t\t...getFullstackFrontendFiles(projectConfig),\n\t\t...getBackendFiles(projectConfig),\n\t\t...getSharedFiles(projectConfig),\n\t];\n}\n",
|
|
17
17
|
"export type CssFramework = \"tailwind\" | \"bootstrap\" | \"sass\" | \"none\";\n\nexport type BackendFramework = \"gaman\" | \"express\" | \"nest\" | \"adonis\";\n\nexport type Database =\n\t| \"postgresql\"\n\t| \"mysql\"\n\t| \"mongodb\"\n\t| \"firebase\"\n\t| \"sqlite\"\n\t| \"mariadb\"\n\t| \"redis\"\n\t| \"planetscale\"\n\t| \"neon\"\n\t| \"turso\";\n\nexport type RenderMode = \"csr\" | \"ssr\" | \"ssg\" | \"csg\" | \"spa\" | \"hybrid\";\n\nexport type ProjectMode = \"fullstack\" | \"frontend-only\";\n\nexport interface ProjectFile {\n\treadonly path: string;\n\treadonly content: string | Uint8Array;\n}\n\nexport interface ProjectConfig {\n\treadonly projectName: string;\n\treadonly projectMode: ProjectMode;\n\treadonly useTypeScript: boolean;\n\treadonly cssFramework: CssFramework;\n\treadonly renderMode: RenderMode;\n\treadonly backendFramework: BackendFramework;\n\treadonly database: Database;\n}\n\nexport const CSS_DISPLAY: Record<CssFramework, string> = {\n\ttailwind: \"Tailwind CSS\",\n\tbootstrap: \"Bootstrap\",\n\tsass: \"SASS\",\n\tnone: \"None\",\n};\n\nexport const BACKEND_DISPLAY: Record<BackendFramework, string> = {\n\tgaman: \"Gaman.js\",\n\texpress: \"Express.js\",\n\tnest: \"Nest.js\",\n\tadonis: \"Adonis.js\",\n};\n\nexport const DATABASE_DISPLAY: Record<Database, string> = {\n\tpostgresql: \"PostgreSQL\",\n\tmysql: \"MySQL\",\n\tmongodb: \"MongoDB\",\n\tfirebase: \"Firebase\",\n\tsqlite: \"SQLite\",\n\tmariadb: \"MariaDB\",\n\tredis: \"Redis\",\n\tplanetscale: \"PlanetScale\",\n\tneon: \"Neon\",\n\tturso: \"Turso\",\n};\n\nexport const RENDER_MODE_DISPLAY: Record<RenderMode, string> = {\n\tcsr: \"CSR — Client-Side Rendering\",\n\tssr: \"SSR — Server-Side Rendering\",\n\tssg: \"SSG — Static Site Generation\",\n\tcsg: \"CSG — Configurable Static Generation\",\n\tspa: \"SPA — Single Page Application\",\n\thybrid: \"Hybrid — Mixed per-route\",\n};\n\nexport const PROJECT_MODE_DISPLAY: Record<ProjectMode, string> = {\n\tfullstack: \"Fullstack app (frontend + backend + database)\",\n\t\"frontend-only\": \"Frontend only (no backend, no database)\",\n};\n",
|
|
18
|
-
"export const COMPONENTS_MODAL_CODE = `import React, { useState } from 'react';\nimport { LuX as X, LuCopy as Copy, LuCheck as Check, LuCode as Code, LuCpu as Cpu } from 'react-icons/lu';\nimport { motion } from 'motion/react';\n// import { playJumpSound, playScoreSound } from '../utils/audio'; // Removed to prevent error if not exists\n\ninterface ComponentsModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\ninterface ComponentItem {\n id: string;\n name: string;\n description: string;\n preview: (state: any, setState: any) => React.ReactNode;\n code: string;\n}\n\nconst BRUTALIST_COMPONENTS: ComponentItem[] = [\n {\n id: 'button',\n name: 'Brutalist Button',\n description: 'A solid, high-contrast action trigger with raw borders and active scaling.',\n code: \\`<button class=\"bg-rose-600 hover:bg-white text-white hover:text-black px-6 py-3 font-mono text-xs font-bold uppercase transition-all duration-150 border border-transparent hover:border-black active:scale-95 shadow-[4px_4px_0px_0px_rgba(255,255,255,0.25)]\">\n TRIGGER PIPELINE\n</button>\\`,\n preview: (state, setState) => (\n <button \n onClick={() => {\n setState({ ...state, clickCount: (state.clickCount || 0) + 1 });\n }}\n className=\"bg-brand-pink hover:bg-white text-white hover:text-black px-6 py-3 font-mono text-xs font-bold uppercase transition-all duration-150 border border-transparent hover:border-black active:scale-95 shadow-[4px_4px_0px_0px_rgba(255,255,255,0.25)] cursor-pointer\"\n >\n TRIGGER PIPELINE ({state.clickCount || 0})\n </button>\n )\n },\n {\n id: 'badge',\n name: 'Performance Badge',\n description: 'A high-visibility mono badge with a pulsing live status indicator.',\n code: \\`<div class=\"flex items-center gap-2 border border-emerald-500/30 bg-emerald-950/20 px-3 py-1 font-mono text-xs text-emerald-400\">\n <span class=\"w-1.5 h-1.5 bg-emerald-500 rounded-full animate-ping\"></span>\n OPERATIONAL :: 100%\n</div>\\`,\n preview: (state, setState) => (\n <div className=\"flex items-center gap-2 border border-emerald-500/30 bg-emerald-950/20 px-3 py-1.5 font-mono text-xs text-emerald-400\">\n <span className=\"relative flex h-2 w-2\">\n <span className=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75\"></span>\n <span className=\"relative inline-flex rounded-full h-2 w-2 bg-emerald-500\"></span>\n </span>\n OPERATIONAL :: 100%\n </div>\n )\n },\n {\n id: 'switch',\n name: 'Monochrome Toggle',\n description: 'A structural, rectangular switch that flips states with tactile audio feedback.',\n code: \\`<button class=\"flex items-center border border-white p-1 w-16 h-8 bg-zinc-900\">\n <div class=\"w-6 h-6 bg-white transition-all transform translate-x-8\"></div>\n</button>\\`,\n preview: (state, setState) => {\n const isChecked = state.isChecked ?? false;\n const handleToggle = () => {\n setState({ ...state, isChecked: !isChecked });\n };\n return (\n <div className=\"flex items-center gap-4\">\n <button \n onClick={handleToggle}\n className={\\`flex items-center border-2 border-white p-0.5 w-16 h-8 transition-colors cursor-pointer \\${isChecked ? 'bg-brand-pink' : 'bg-zinc-900'}\\`}\n >\n <div className={\\`w-6 h-6 bg-white transition-transform \\${isChecked ? 'translate-x-8' : 'translate-x-0'}\\`}></div>\n </button>\n <span className=\"font-mono text-xs uppercase text-gray-400\">\n STATE: <span className=\"text-white font-bold\">{isChecked ? 'ENABLED' : 'DISABLED'}</span>\n </span>\n </div>\n );\n }\n },\n {\n id: 'slider',\n name: 'Frequency Slider',\n description: 'A pixelated level adjuster with raw visual increments.',\n code: \\`<div class=\"w-full max-w-xs font-mono\">\n <input type=\"range\" class=\"accent-rose-600 bg-zinc-800 h-2 w-full border border-zinc-700 appearance-none cursor-pointer\" />\n</div>\\`,\n preview: (state, setState) => {\n const value = state.sliderVal ?? 60;\n return (\n <div className=\"w-full max-w-sm font-mono text-xs\">\n <div className=\"flex justify-between mb-2\">\n <span className=\"text-gray-400 uppercase\">SYS_SPEED</span>\n <span className=\"text-brand-green font-bold\">{value} MHz</span>\n </div>\n <input \n type=\"range\" \n min=\"10\"\n max=\"200\"\n value={value}\n onChange={(e) => setState({ ...state, sliderVal: parseInt(e.target.value) })}\n className=\"accent-brand-pink bg-zinc-900 h-2 w-full border border-zinc-700 appearance-none cursor-pointer\" \n />\n <div className=\"flex justify-between mt-1 text-[9px] text-gray-600\">\n <span>MIN</span>\n <span>MID_GRID</span>\n <span>MAX</span>\n </div>\n </div>\n );\n }\n },\n {\n id: 'input',\n name: 'Brutalist Input',\n description: 'Minimal text box with bright validation focus indicators.',\n code: \\`<div class=\"relative font-mono\">\n <input type=\"text\" placeholder=\"ENTER NODE NAME...\" class=\"bg-black border border-zinc-700 focus:border-rose-600 text-white px-4 py-2 w-full outline-none\" />\n</div>\\`,\n preview: (state, setState) => {\n const text = state.inputValue ?? '';\n return (\n <div className=\"w-full max-w-xs font-mono text-xs\">\n <label className=\"block text-gray-500 uppercase mb-1.5\">Node Configuration</label>\n <input \n type=\"text\" \n placeholder=\"ENTER NODE NAME...\"\n value={text}\n onChange={(e) => setState({ ...state, inputValue: e.target.value })}\n className=\"bg-black border border-zinc-700 focus:border-brand-pink text-white px-4 py-2 w-full outline-none\" \n />\n {text && (\n <p className=\"text-[10px] text-brand-green mt-1\">✓ Validating: {text.toUpperCase()}.local</p>\n )}\n </div>\n );\n }\n }\n];\n\nexport default function ComponentsModal({ isOpen, onClose }: ComponentsModalProps) {\n const [activeCompId, setActiveCompId] = useState('button');\n const [componentStates, setComponentStates] = useState<Record<string, any>>({});\n const [copiedId, setCopiedId] = useState<string | null>(null);\n\n if (!isOpen) return null;\n\n const activeComp = (BRUTALIST_COMPONENTS.find(c => c.id === activeCompId) || BRUTALIST_COMPONENTS[0])!;\n const activeState = componentStates[activeCompId] || {};\n\n const handleSetState = (newState: any) => {\n setComponentStates({\n ...componentStates,\n [activeCompId]: newState\n });\n };\n\n const handleCopyCode = (code: string) => {\n navigator.clipboard.writeText(code);\n setCopiedId(activeCompId);\n setTimeout(() => setCopiedId(null), 2000);\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/85 backdrop-blur-sm\" id=\"components-modal-container\">\n <motion.div \n initial={{ opacity: 0, scale: 0.95, y: 15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: 15 }}\n transition={{ duration: 0.2 }}\n className=\"w-full max-w-4xl h-[75vh] bg-black border-2 border-white flex flex-col relative\"\n >\n <div className=\"flex items-center justify-between border-b border-white p-5\">\n <div className=\"flex items-center gap-3\">\n <Cpu className=\"w-5 h-5 text-rose-500\" />\n <h2 className=\"text-xl font-bold font-mono tracking-tight uppercase\">\n Rakta <span className=\"text-rose-500\">Component Library</span>\n </h2>\n </div>\n <button \n onClick={onClose}\n className=\"p-2 border border-white hover:bg-rose-500 hover:text-white transition-colors cursor-pointer\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n <div className=\"flex-1 flex flex-col md:flex-row overflow-hidden\">\n <div className=\"w-full md:w-56 border-r border-white overflow-y-auto bg-[#080808] divide-y divide-white/20\">\n {BRUTALIST_COMPONENTS.map((comp) => {\n const isSelected = comp.id === activeCompId;\n return (\n <button\n key={comp.id}\n onClick={() => setActiveCompId(comp.id)}\n className={\\`w-full text-left p-4 transition-colors font-mono text-xs uppercase cursor-pointer \\${\n isSelected \n ? 'bg-rose-500 text-white font-bold' \n : 'text-gray-400 hover:bg-white/5 hover:text-white'\n }\\`}\n >\n {comp.name}\n </button>\n );\n })}\n </div>\n\n <div className=\"flex-1 flex flex-col overflow-y-auto bg-black p-6 md:p-8\">\n <div className=\"mb-6\">\n <h3 className=\"text-xl font-bold text-white uppercase font-mono tracking-tight\">{activeComp.name}</h3>\n <p className=\"text-sm text-gray-400 mt-1\">{activeComp.description}</p>\n </div>\n\n <div className=\"border border-white/30 bg-[#050505] p-12 flex items-center justify-center min-h-[160px] relative\">\n <span className=\"absolute top-2 left-2 text-[8px] font-mono text-gray-600 uppercase tracking-widest\">LIVE PLAYGROUND</span>\n {activeComp.preview(activeState, handleSetState)}\n </div>\n\n <div className=\"mt-8 flex-1 flex flex-col min-h-[150px]\">\n <div className=\"flex items-center justify-between bg-zinc-900 border-t border-x border-white/20 px-4 py-2\">\n <span className=\"text-[10px] font-mono text-gray-500 uppercase tracking-widest flex items-center gap-1.5\">\n <Code className=\"w-3.5 h-3.5\" /> HTML/Tailwind Markup\n </span>\n <button\n onClick={() => handleCopyCode(activeComp.code)}\n className=\"flex items-center gap-1.5 text-[10px] font-mono text-rose-500 hover:text-white transition-colors cursor-pointer\"\n >\n {copiedId === activeComp.id ? (\n <>\n <Check className=\"w-3.5 h-3.5 text-green-500\" /> COPIED!\n </>\n ) : (\n <>\n <Copy className=\"w-3.5 h-3.5\" /> COPY TO CLIPBOARD\n </>\n )}\n </button>\n </div>\n <pre className=\"flex-1 bg-zinc-950 border border-white/20 p-4 font-mono text-xs text-green-400 overflow-x-auto whitespace-pre leading-5 select-all\">\n <code>{activeComp.code}</code>\n </pre>\n </div>\n </div>\n </div>\n </motion.div>\n </div>\n );\n}\n`;\n\nexport const CORAL_OBSTACLE_CODE = `import React from 'react';\n\ninterface CoralObstacleProps {\n position: 'TOP' | 'BOTTOM';\n height: number;\n width?: number;\n paletteIndex?: number;\n variant?: number;\n scaleX?: number;\n}\n\nexport default function CoralObstacle({ \n position, \n height, \n width = 64,\n paletteIndex = 0, \n variant = 0, \n scaleX = 1 \n}: CoralObstacleProps) {\n const palettes = [\n { primary: '#f43f5e', secondary: '#fda4af', shadow: '#9f1239', polyps: '#ffe4e6', name: 'rose' },\n { primary: '#06b6d4', secondary: '#67e8f9', shadow: '#155e75', polyps: '#ecfeff', name: 'cyan' },\n { primary: '#a855f7', secondary: '#d8b4fe', shadow: '#581c87', polyps: '#faf5ff', name: 'amethyst' },\n { primary: '#f59e0b', secondary: '#fde047', shadow: '#78350f', polyps: '#fefce8', name: 'amber' },\n { primary: '#10b981', secondary: '#6ee7b7', shadow: '#065f46', polyps: '#e6fffa', name: 'emerald' },\n ];\n const palette = palettes[paletteIndex % palettes.length]!;\n\n return (\n <div \n className=\"absolute flex items-center justify-center pointer-events-none\"\n style={{ height: \\`\\${height}px\\`, width: \\`\\${width}px\\`, transform: \\`scaleX(\\${scaleX})\\` }}\n >\n <svg \n viewBox=\"0 0 80 120\" \n className=\"w-full h-full drop-shadow-[0_6px_14px_rgba(0,0,0,0.7)]\"\n preserveAspectRatio=\"none\"\n >\n <defs>\n <linearGradient id={\\`coralGrad-\\${palette.name}\\`} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={palette.secondary} />\n <stop offset=\"50%\" stopColor={palette.primary} />\n <stop offset=\"100%\" stopColor={palette.shadow} />\n </linearGradient>\n </defs>\n\n <g transform={position === 'TOP' ? 'scale(1, -1) translate(0, -120)' : undefined}>\n <path d=\"M 40 120 C 35 90, 20 80, 24 55 C 28 30, 15 20, 22 10 C 29 0, 37 15, 35 30 C 33 45, 42 55, 40 75 C 38 95, 42 110, 40 120 Z\" fill={\\`url(#coralGrad-\\${palette.name})\\`} />\n <path d=\"M 40 120 C 45 95, 55 85, 52 65 C 49 45, 62 35, 58 20 C 54 5, 46 12, 48 25 C 50 38, 42 50, 44 70 C 46 90, 42 105, 40 120 Z\" fill={\\`url(#coralGrad-\\${palette.name})\\`} />\n </g>\n </svg>\n </div>\n );\n}\n`;\n\nexport const DEPLOY_MODAL_CODE = `import React, { useState, useEffect, useRef } from 'react';\nimport { LuX as X, LuPlay as Play, LuCheckCircle as CheckCircle2, LuRotateCcw as RotateCcw, LuCloud as Cloud } from 'react-icons/lu';\nimport { motion } from 'motion/react';\n\ninterface DeployModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst DEPLOY_LOGS = [\n { text: ':: RAKTA CORE PIPELINE INITIALIZED ::', type: 'system' },\n { text: '[SYS] Resolving package.json manifest dependencies...', type: 'info' },\n { text: '[VITE] Starting asset compilation & typescript check...', type: 'info' },\n { text: '[VITE] ✓ Production dist/ folder generated successfully [384ms]', type: 'success' },\n { text: '[ESBUILD] Compiling full-stack backend entrypoint: server.ts', type: 'info' },\n { text: '[ESBUILD] ✓ Bundled server.ts into dist/server.cjs [120ms]', type: 'success' },\n { text: '[CLOUD RUN] Pushing build payload to regional edge registry...', type: 'info' },\n { text: '[CLOUD RUN] Ingress configured: routing all traffic exclusively to Port 3000', type: 'info' },\n { text: ':: SYSTEM DEPLOYMENT COMPLETED ON EDGE NODES ::', type: 'success' },\n];\n\nexport default function DeployModal({ isOpen, onClose }: DeployModalProps) {\n const [status, setStatus] = useState<'idle' | 'building' | 'success' | 'error'>('idle');\n const [logs, setLogs] = useState<Array<{ text: string; type: string }>>([]);\n const [progress, setProgress] = useState(0);\n const terminalEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (terminalEndRef.current) {\n terminalEndRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }, [logs]);\n\n if (!isOpen) return null;\n\n const startDeployment = () => {\n setStatus('building');\n setLogs([]);\n setProgress(0);\n\n let currentLogIndex = 0;\n \n const runStep = () => {\n if (currentLogIndex < DEPLOY_LOGS.length) {\n setLogs(prev => [...prev, DEPLOY_LOGS[currentLogIndex]!]);\n setProgress(Math.round(((currentLogIndex + 1) / DEPLOY_LOGS.length) * 100));\n currentLogIndex++;\n setTimeout(runStep, Math.random() * 250 + 150);\n } else {\n setStatus('success');\n }\n };\n setTimeout(runStep, 400);\n };\n\n const resetDeploy = () => {\n setStatus('idle');\n setLogs([]);\n setProgress(0);\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/85 backdrop-blur-sm\" id=\"deploy-modal-container\">\n <motion.div \n initial={{ opacity: 0, scale: 0.95, y: 15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: 15 }}\n transition={{ duration: 0.2 }}\n className=\"w-full max-w-3xl h-[70vh] bg-black border-2 border-white flex flex-col relative\"\n >\n <div className=\"flex items-center justify-between border-b border-white/30 p-5\">\n <div className=\"flex items-center gap-3\">\n <Cloud className=\"w-5 h-5 text-rose-500\" />\n <h2 className=\"text-xl font-bold font-mono tracking-tight uppercase\">\n Rakta <span className=\"text-rose-500\">Edge Deployment</span>\n </h2>\n </div>\n <button \n onClick={onClose}\n className=\"p-2 border border-white/30 hover:bg-rose-500 hover:text-white transition-colors cursor-pointer\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n <div className=\"bg-zinc-900 p-6 border-b border-white/20 flex flex-col sm:flex-row sm:items-center justify-between gap-4\">\n <div>\n <span className=\"text-[10px] font-mono text-gray-500 uppercase tracking-widest block\">PIPELINE STATUS</span>\n <div className=\"flex items-center gap-2 mt-1\">\n {status === 'idle' && <span className=\"font-mono text-sm text-yellow-500 font-bold uppercase\">IDLE - READY TO LAUNCH</span>}\n {status === 'building' && <span className=\"font-mono text-sm text-rose-500 font-bold uppercase\">COMPILES IN PROGRESS ({progress}%)</span>}\n {status === 'success' && <span className=\"font-mono text-sm text-green-500 font-bold uppercase\">LIVE - PRODUCTION DEPLOYED</span>}\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n {status === 'idle' && (\n <button onClick={startDeployment} className=\"bg-rose-500 hover:bg-white text-white hover:text-black px-6 py-2.5 font-mono text-xs font-bold uppercase transition-all duration-150 border border-transparent active:scale-95 flex items-center gap-2 cursor-pointer\">\n <Play className=\"w-4 h-4 fill-current\" /> INITIATE LAUNCH\n </button>\n )}\n {status === 'success' && (\n <button onClick={resetDeploy} className=\"border border-white hover:bg-white hover:text-black px-4 py-2.5 font-mono text-xs uppercase transition-all duration-150 flex items-center gap-1.5 cursor-pointer\">\n <RotateCcw className=\"w-3.5 h-3.5\" /> RE-BUILD PIPELINE\n </button>\n )}\n </div>\n </div>\n\n <div className=\"flex-1 bg-black p-5 font-mono text-xs overflow-y-auto flex flex-col gap-2 select-text selection:bg-rose-500/30\">\n {logs.map((log, index) => {\n let textColor = 'text-gray-400';\n if (log.type === 'system') textColor = 'text-rose-500 font-bold border-b border-rose-500/20 pb-1 mb-2';\n if (log.type === 'success') textColor = 'text-green-500 font-bold';\n if (log.type === 'info') textColor = 'text-gray-300';\n return <div key={index} className={\\`leading-relaxed whitespace-pre-wrap \\${textColor}\\`}>{log.text}</div>;\n })}\n {status === 'idle' && <div className=\"text-gray-600 italic mt-4 text-center\">Click 'INITIATE LAUNCH' to begin.</div>}\n <div ref={terminalEndRef} />\n </div>\n </motion.div>\n </div>\n );\n}\n`;\n\nexport const DOCS_MODAL_CODE = `import React, { useState } from 'react';\nimport { LuX as X, LuBook as Book, LuArrowRight as ArrowRight, LuSearch as Search } from 'react-icons/lu';\nimport { motion } from 'motion/react';\n\ninterface DocsModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst ARTICLES = [\n { id: 'intro', title: '1. Welcome to Rakta.js', category: 'Getting Started', content: 'Rakta.js is a zero-dependency, ultra-fast structural core designed for creating high-performance, single-page web experiences.' }\n];\n\nexport default function DocsModal({ isOpen, onClose }: DocsModalProps) {\n if (!isOpen) return null;\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/80 backdrop-blur-sm\">\n <motion.div initial={{ opacity: 0, y: 15 }} animate={{ opacity: 1, y: 0 }} className=\"w-full max-w-5xl h-[80vh] bg-black border-2 border-white flex flex-col relative\">\n <div className=\"flex items-center justify-between border-b border-white/30 p-5\">\n <div className=\"flex items-center gap-3\">\n <Book className=\"w-5 h-5 text-rose-500\" />\n <h2 className=\"text-xl font-bold font-mono tracking-tight uppercase\">Rakta.js <span className=\"text-rose-500\">System Manual</span></h2>\n </div>\n <button onClick={onClose} className=\"p-2 border border-white/30 hover:bg-rose-500 hover:text-white transition-colors cursor-pointer\"><X className=\"w-5 h-5\" /></button>\n </div>\n <div className=\"p-10 text-white font-mono text-sm leading-relaxed max-w-3xl\">\n <h3 className=\"text-3xl font-extrabold text-rose-500 mb-6\">Welcome to Rakta.js</h3>\n <p className=\"mb-4\">You have successfully generated your project.</p>\n <p className=\"mb-4\">Use the CLI generator to expand your codebase, or start editing files in the app/ directory.</p>\n <ul className=\"list-disc pl-5 mt-4 space-y-2 text-gray-400\">\n <li>Instant Engine Boot: Sub-1ms load time.</li>\n <li>Brutalist Aesthetics natively supported.</li>\n <li>Hot Reload available globally via WebSockets.</li>\n </ul>\n </div>\n </motion.div>\n </div>\n );\n}\n`;\n\nexport const SHRIMP_CHARACTER_CODE = `import React from 'react';\n\ninterface ShrimpCharacterProps {\n status: 'IDLE' | 'SWIMMING' | 'JUMPING' | 'DEAD';\n playerY: number;\n rotation?: number;\n}\n\nexport default function ShrimpCharacter({ status, playerY, rotation }: ShrimpCharacterProps) {\n let bodyClass = '';\n let isDead = status === 'DEAD';\n\n if (isDead) bodyClass = 'animate-bounce';\n else if (status === 'SWIMMING') bodyClass = 'animate-pulse';\n else bodyClass = '';\n\n const finalRotation = rotation !== undefined ? rotation : (isDead ? 180 : 0);\n const shrimpColor = isDead ? 'fill-orange-400' : 'fill-rose-500';\n\n return (\n <div \n className=\"relative w-16 h-16 flex items-center justify-center select-none pointer-events-none transition-transform duration-75\"\n style={{ transform: \\`rotate(\\${finalRotation}deg)\\` }}\n >\n <svg viewBox=\"0 0 100 100\" className={\\`w-full h-full drop-shadow-[0_4px_12px_rgba(244,63,94,0.3)] \\${bodyClass}\\`}>\n <path d=\"M 30 46 C 25 32, 45 22, 58 28 C 65 31, 62 48, 55 54 C 44 58, 35 55, 30 46 Z\" className={shrimpColor} />\n <path d=\"M 55 30 C 65 24, 76 34, 74 46 C 72 54, 62 55, 55 48 Z\" className={shrimpColor} />\n <circle cx=\"66\" cy=\"38\" r=\"4.5\" fill={isDead ? '#18181b' : '#000'} />\n </svg>\n <style>{\\`\n @keyframes bubble-up {\n 0% { transform: translateY(0) scale(1); opacity: 0.8; }\n 100% { transform: translateY(-20px) scale(1.5); opacity: 0; }\n }\n \\`}</style>\n </div>\n );\n}\n`;\n\nexport const WELCOME_PAGE_CODE = `import { useState } from \"react\";\nimport { LuPlay as Play, LuBook as Book, LuCpu as Cpu, LuCloud as Cloud } from \"react-icons/lu\";\n\nexport default function WelcomePage() {\n const [modalOpen, setModalOpen] = useState<'components' | 'deploy' | 'docs' | null>(null);\n\n return (\n <main className=\"min-h-screen bg-[#050505] flex flex-col items-center justify-center text-white font-mono p-4\">\n <div className=\"absolute top-10 pointer-events-none opacity-20\">\n <ShrimpCharacter status=\"IDLE\" playerY={0} />\n </div>\n\n <div className=\"text-center z-10 max-w-2xl\">\n <h1 className=\"text-5xl md:text-7xl font-extrabold uppercase tracking-tighter mb-4\">\n Welcome to <span className=\"text-rose-500\">Rakta.js</span>\n </h1>\n <p className=\"text-gray-400 text-sm md:text-base mb-10 leading-relaxed\">\n Small in size. Fierce in speed. Alive in every route.\n <br/>\n Your neo-brutalist web application is ready for action.\n </p>\n\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <button \n onClick={() => setModalOpen('components')}\n className=\"flex flex-col items-center justify-center gap-3 p-6 border-2 border-zinc-800 bg-zinc-900/50 hover:border-rose-500 hover:bg-rose-500/10 transition-colors cursor-pointer group\"\n >\n <Cpu className=\"w-8 h-8 text-gray-400 group-hover:text-rose-500\" />\n <span className=\"font-bold text-sm uppercase\">Components</span>\n </button>\n \n <button \n onClick={() => setModalOpen('docs')}\n className=\"flex flex-col items-center justify-center gap-3 p-6 border-2 border-zinc-800 bg-zinc-900/50 hover:border-blue-500 hover:bg-blue-500/10 transition-colors cursor-pointer group\"\n >\n <Book className=\"w-8 h-8 text-gray-400 group-hover:text-blue-500\" />\n <span className=\"font-bold text-sm uppercase\">Documentation</span>\n </button>\n\n <button \n onClick={() => setModalOpen('deploy')}\n className=\"flex flex-col items-center justify-center gap-3 p-6 border-2 border-zinc-800 bg-zinc-900/50 hover:border-green-500 hover:bg-green-500/10 transition-colors cursor-pointer group\"\n >\n <Cloud className=\"w-8 h-8 text-gray-400 group-hover:text-green-500\" />\n <span className=\"font-bold text-sm uppercase\">Deployment</span>\n </button>\n </div>\n </div>\n\n <div className=\"absolute bottom-6 text-[10px] text-gray-600 uppercase tracking-widest text-center\">\n Running on http://localhost:3000 • Hot Reload Active\n </div>\n\n {modalOpen === 'components' && <ComponentsModal isOpen={true} onClose={() => setModalOpen(null)} />}\n {modalOpen === 'deploy' && <DeployModal isOpen={true} onClose={() => setModalOpen(null)} />}\n {modalOpen === 'docs' && <DocsModal isOpen={true} onClose={() => setModalOpen(null)} />}\n </main>\n );\n}\n`;\n",
|
|
18
|
+
"export const COMPONENTS_MODAL_CODE = `import type React from 'react';\nimport { useState } from 'react';\nimport { LuX as X, LuCopy as Copy, LuCheck as Check, LuCode as Code, LuCpu as Cpu } from 'react-icons/lu';\nimport { motion } from 'motion/react';\n// import { playJumpSound, playScoreSound } from '../utils/audio'; // Removed to prevent error if not exists\n\ninterface ComponentsModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\ntype ComponentState = Record<string, string | number | boolean | undefined>;\ntype SetComponentState = (state: ComponentState) => void;\n\ninterface ComponentItem {\n id: string;\n name: string;\n description: string;\n preview: (state: ComponentState, setState: SetComponentState) => React.ReactNode;\n code: string;\n}\n\nconst BRUTALIST_COMPONENTS: ComponentItem[] = [\n {\n id: 'button',\n name: 'Brutalist Button',\n description: 'A solid, high-contrast action trigger with raw borders and active scaling.',\n code: \\`<button class=\"bg-rose-600 hover:bg-white text-white hover:text-black px-6 py-3 font-mono text-xs font-bold uppercase transition-all duration-150 border border-transparent hover:border-black active:scale-95 shadow-[4px_4px_0px_0px_rgba(255,255,255,0.25)]\">\n TRIGGER PIPELINE\n</button>\\`,\n preview: (state, setState) => (\n <button \n type=\"button\"\n onClick={() => {\n const clickCount = typeof state.clickCount === 'number' ? state.clickCount : 0;\n setState({ ...state, clickCount: clickCount + 1 });\n }}\n className=\"bg-brand-pink hover:bg-white text-white hover:text-black px-6 py-3 font-mono text-xs font-bold uppercase transition-all duration-150 border border-transparent hover:border-black active:scale-95 shadow-[4px_4px_0px_0px_rgba(255,255,255,0.25)] cursor-pointer\"\n >\n TRIGGER PIPELINE ({typeof state.clickCount === 'number' ? state.clickCount : 0})\n </button>\n )\n },\n {\n id: 'badge',\n name: 'Performance Badge',\n description: 'A high-visibility mono badge with a pulsing live status indicator.',\n code: \\`<div class=\"flex items-center gap-2 border border-emerald-500/30 bg-emerald-950/20 px-3 py-1 font-mono text-xs text-emerald-400\">\n <span class=\"w-1.5 h-1.5 bg-emerald-500 rounded-full animate-ping\"></span>\n OPERATIONAL :: 100%\n</div>\\`,\n preview: (_state, _setState) => (\n <div className=\"flex items-center gap-2 border border-emerald-500/30 bg-emerald-950/20 px-3 py-1.5 font-mono text-xs text-emerald-400\">\n <span className=\"relative flex h-2 w-2\">\n <span className=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75\"></span>\n <span className=\"relative inline-flex rounded-full h-2 w-2 bg-emerald-500\"></span>\n </span>\n OPERATIONAL :: 100%\n </div>\n )\n },\n {\n id: 'switch',\n name: 'Monochrome Toggle',\n description: 'A structural, rectangular switch that flips states with tactile audio feedback.',\n code: \\`<button class=\"flex items-center border border-white p-1 w-16 h-8 bg-zinc-900\">\n <div class=\"w-6 h-6 bg-white transition-all transform translate-x-8\"></div>\n</button>\\`,\n preview: (state, setState) => {\n const isChecked = state.isChecked ?? false;\n const handleToggle = () => {\n setState({ ...state, isChecked: !isChecked });\n };\n return (\n <div className=\"flex items-center gap-4\">\n <button \n type=\"button\"\n onClick={handleToggle}\n className={\\`flex items-center border-2 border-white p-0.5 w-16 h-8 transition-colors cursor-pointer \\${isChecked ? 'bg-brand-pink' : 'bg-zinc-900'}\\`}\n >\n <div className={\\`w-6 h-6 bg-white transition-transform \\${isChecked ? 'translate-x-8' : 'translate-x-0'}\\`}></div>\n </button>\n <span className=\"font-mono text-xs uppercase text-gray-400\">\n STATE: <span className=\"text-white font-bold\">{isChecked ? 'ENABLED' : 'DISABLED'}</span>\n </span>\n </div>\n );\n }\n },\n {\n id: 'slider',\n name: 'Frequency Slider',\n description: 'A pixelated level adjuster with raw visual increments.',\n code: \\`<div class=\"w-full max-w-xs font-mono\">\n <input type=\"range\" class=\"accent-rose-600 bg-zinc-800 h-2 w-full border border-zinc-700 appearance-none cursor-pointer\" />\n</div>\\`,\n preview: (state, setState) => {\n const value = typeof state.sliderVal === 'number' ? state.sliderVal : 60;\n return (\n <div className=\"w-full max-w-sm font-mono text-xs\">\n <div className=\"flex justify-between mb-2\">\n <span className=\"text-gray-400 uppercase\">SYS_SPEED</span>\n <span className=\"text-brand-green font-bold\">{value} MHz</span>\n </div>\n <input \n type=\"range\" \n min=\"10\"\n max=\"200\"\n value={value}\n onChange={(e) => setState({ ...state, sliderVal: parseInt(e.target.value, 10) })}\n className=\"accent-brand-pink bg-zinc-900 h-2 w-full border border-zinc-700 appearance-none cursor-pointer\" \n />\n <div className=\"flex justify-between mt-1 text-[9px] text-gray-600\">\n <span>MIN</span>\n <span>MID_GRID</span>\n <span>MAX</span>\n </div>\n </div>\n );\n }\n },\n {\n id: 'input',\n name: 'Brutalist Input',\n description: 'Minimal text box with bright validation focus indicators.',\n code: \\`<div class=\"relative font-mono\">\n <input type=\"text\" placeholder=\"ENTER NODE NAME...\" class=\"bg-black border border-zinc-700 focus:border-rose-600 text-white px-4 py-2 w-full outline-none\" />\n</div>\\`,\n preview: (state, setState) => {\n const text = typeof state.inputValue === 'string' ? state.inputValue : '';\n return (\n <div className=\"w-full max-w-xs font-mono text-xs\">\n <label className=\"block text-gray-500 uppercase mb-1.5\">\n Node Configuration\n <input \n type=\"text\" \n placeholder=\"ENTER NODE NAME...\"\n value={text}\n onChange={(e) => setState({ ...state, inputValue: e.target.value })}\n className=\"mt-1.5 bg-black border border-zinc-700 focus:border-brand-pink text-white px-4 py-2 w-full outline-none\" \n />\n </label>\n {text && (\n <p className=\"text-[10px] text-brand-green mt-1\">✓ Validating: {text.toUpperCase()}.local</p>\n )}\n </div>\n );\n }\n }\n];\n\nexport default function ComponentsModal({ isOpen, onClose }: ComponentsModalProps) {\n const [activeCompId, setActiveCompId] = useState('button');\n const [componentStates, setComponentStates] = useState<Record<string, ComponentState>>({});\n const [copiedId, setCopiedId] = useState<string | null>(null);\n\n if (!isOpen) return null;\n\n const fallbackComponent = BRUTALIST_COMPONENTS[0];\n if (!fallbackComponent) return null;\n\n const activeComp = BRUTALIST_COMPONENTS.find(c => c.id === activeCompId) ?? fallbackComponent;\n const activeState = componentStates[activeCompId] || {};\n\n const handleSetState = (newState: ComponentState) => {\n setComponentStates({\n ...componentStates,\n [activeCompId]: newState\n });\n };\n\n const handleCopyCode = (code: string) => {\n navigator.clipboard.writeText(code);\n setCopiedId(activeCompId);\n setTimeout(() => setCopiedId(null), 2000);\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/85 backdrop-blur-sm\" id=\"components-modal-container\">\n <motion.div \n initial={{ opacity: 0, scale: 0.95, y: 15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: 15 }}\n transition={{ duration: 0.2 }}\n className=\"w-full max-w-4xl h-[75vh] bg-black border-2 border-white flex flex-col relative\"\n >\n <div className=\"flex items-center justify-between border-b border-white p-5\">\n <div className=\"flex items-center gap-3\">\n <Cpu className=\"w-5 h-5 text-rose-500\" />\n <h2 className=\"text-xl font-bold font-mono tracking-tight uppercase\">\n Rakta <span className=\"text-rose-500\">Component Library</span>\n </h2>\n </div>\n <button \n type=\"button\"\n onClick={onClose}\n className=\"p-2 border border-white hover:bg-rose-500 hover:text-white transition-colors cursor-pointer\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n <div className=\"flex-1 flex flex-col md:flex-row overflow-hidden\">\n <div className=\"w-full md:w-56 border-r border-white overflow-y-auto bg-[#080808] divide-y divide-white/20\">\n {BRUTALIST_COMPONENTS.map((comp) => {\n const isSelected = comp.id === activeCompId;\n return (\n <button\n type=\"button\"\n key={comp.id}\n onClick={() => setActiveCompId(comp.id)}\n className={\\`w-full text-left p-4 transition-colors font-mono text-xs uppercase cursor-pointer \\${\n isSelected \n ? 'bg-rose-500 text-white font-bold' \n : 'text-gray-400 hover:bg-white/5 hover:text-white'\n }\\`}\n >\n {comp.name}\n </button>\n );\n })}\n </div>\n\n <div className=\"flex-1 flex flex-col overflow-y-auto bg-black p-6 md:p-8\">\n <div className=\"mb-6\">\n <h3 className=\"text-xl font-bold text-white uppercase font-mono tracking-tight\">{activeComp.name}</h3>\n <p className=\"text-sm text-gray-400 mt-1\">{activeComp.description}</p>\n </div>\n\n <div className=\"border border-white/30 bg-[#050505] p-12 flex items-center justify-center min-h-[160px] relative\">\n <span className=\"absolute top-2 left-2 text-[8px] font-mono text-gray-600 uppercase tracking-widest\">LIVE PLAYGROUND</span>\n {activeComp.preview(activeState, handleSetState)}\n </div>\n\n <div className=\"mt-8 flex-1 flex flex-col min-h-[150px]\">\n <div className=\"flex items-center justify-between bg-zinc-900 border-t border-x border-white/20 px-4 py-2\">\n <span className=\"text-[10px] font-mono text-gray-500 uppercase tracking-widest flex items-center gap-1.5\">\n <Code className=\"w-3.5 h-3.5\" /> HTML/Tailwind Markup\n </span>\n <button\n type=\"button\"\n onClick={() => handleCopyCode(activeComp.code)}\n className=\"flex items-center gap-1.5 text-[10px] font-mono text-rose-500 hover:text-white transition-colors cursor-pointer\"\n >\n {copiedId === activeComp.id ? (\n <>\n <Check className=\"w-3.5 h-3.5 text-green-500\" /> COPIED!\n </>\n ) : (\n <>\n <Copy className=\"w-3.5 h-3.5\" /> COPY TO CLIPBOARD\n </>\n )}\n </button>\n </div>\n <pre className=\"flex-1 bg-zinc-950 border border-white/20 p-4 font-mono text-xs text-green-400 overflow-x-auto whitespace-pre leading-5 select-all\">\n <code>{activeComp.code}</code>\n </pre>\n </div>\n </div>\n </div>\n </motion.div>\n </div>\n );\n}\n`;\n\nexport const CORAL_OBSTACLE_CODE = `interface CoralObstacleProps {\n position: 'TOP' | 'BOTTOM';\n height: number;\n width?: number;\n paletteIndex?: number;\n variant?: number;\n scaleX?: number;\n}\n\nexport default function CoralObstacle({ \n position, \n height, \n width = 64,\n paletteIndex = 0, \n variant = 0, \n scaleX = 1 \n}: CoralObstacleProps) {\n const defaultPalette = { primary: '#f43f5e', secondary: '#fda4af', shadow: '#9f1239', polyps: '#ffe4e6', name: 'rose' };\n const palettes = [\n defaultPalette,\n { primary: '#06b6d4', secondary: '#67e8f9', shadow: '#155e75', polyps: '#ecfeff', name: 'cyan' },\n { primary: '#a855f7', secondary: '#d8b4fe', shadow: '#581c87', polyps: '#faf5ff', name: 'amethyst' },\n { primary: '#f59e0b', secondary: '#fde047', shadow: '#78350f', polyps: '#fefce8', name: 'amber' },\n { primary: '#10b981', secondary: '#6ee7b7', shadow: '#065f46', polyps: '#e6fffa', name: 'emerald' },\n ];\n const palette = palettes[paletteIndex % palettes.length] ?? defaultPalette;\n const coralId = \\`coralGrad-\\${palette.name}-\\${variant}\\`;\n\n return (\n <div \n className=\"absolute flex items-center justify-center pointer-events-none\"\n style={{ height: \\`\\${height}px\\`, width: \\`\\${width}px\\`, transform: \\`scaleX(\\${scaleX})\\` }}\n >\n <svg \n aria-hidden=\"true\"\n focusable=\"false\"\n viewBox=\"0 0 80 120\" \n className=\"w-full h-full drop-shadow-[0_6px_14px_rgba(0,0,0,0.7)]\"\n preserveAspectRatio=\"none\"\n >\n <defs>\n <linearGradient id={coralId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={palette.secondary} />\n <stop offset=\"50%\" stopColor={palette.primary} />\n <stop offset=\"100%\" stopColor={palette.shadow} />\n </linearGradient>\n </defs>\n\n <g transform={position === 'TOP' ? 'scale(1, -1) translate(0, -120)' : undefined}>\n <path d=\"M 40 120 C 35 90, 20 80, 24 55 C 28 30, 15 20, 22 10 C 29 0, 37 15, 35 30 C 33 45, 42 55, 40 75 C 38 95, 42 110, 40 120 Z\" fill={\\`url(#\\${coralId})\\`} />\n <path d=\"M 40 120 C 45 95, 55 85, 52 65 C 49 45, 62 35, 58 20 C 54 5, 46 12, 48 25 C 50 38, 42 50, 44 70 C 46 90, 42 105, 40 120 Z\" fill={\\`url(#\\${coralId})\\`} />\n </g>\n </svg>\n </div>\n );\n}\n`;\n\nexport const DEPLOY_MODAL_CODE = `import { useState, useEffect, useRef } from 'react';\nimport { LuX as X, LuPlay as Play, LuRotateCcw as RotateCcw, LuCloud as Cloud } from 'react-icons/lu';\nimport { motion } from 'motion/react';\n\ninterface DeployModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst DEPLOY_LOGS = [\n { text: ':: RAKTA CORE PIPELINE INITIALIZED ::', type: 'system' },\n { text: '[SYS] Resolving package.json manifest dependencies...', type: 'info' },\n { text: '[VITE] Starting asset compilation & typescript check...', type: 'info' },\n { text: '[VITE] ✓ Production dist/ folder generated successfully [384ms]', type: 'success' },\n { text: '[ESBUILD] Compiling full-stack backend entrypoint: server.ts', type: 'info' },\n { text: '[ESBUILD] ✓ Bundled server.ts into dist/server.cjs [120ms]', type: 'success' },\n { text: '[CLOUD RUN] Pushing build payload to regional edge registry...', type: 'info' },\n { text: '[CLOUD RUN] Ingress configured: routing all traffic exclusively to Port 3000', type: 'info' },\n { text: ':: SYSTEM DEPLOYMENT COMPLETED ON EDGE NODES ::', type: 'success' },\n];\n\nexport default function DeployModal({ isOpen, onClose }: DeployModalProps) {\n const [status, setStatus] = useState<'idle' | 'building' | 'success' | 'error'>('idle');\n const [logs, setLogs] = useState<Array<{ text: string; type: string }>>([]);\n const [progress, setProgress] = useState(0);\n const terminalEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (terminalEndRef.current) {\n terminalEndRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n });\n\n if (!isOpen) return null;\n\n const startDeployment = () => {\n setStatus('building');\n setLogs([]);\n setProgress(0);\n\n let currentLogIndex = 0;\n \n const runStep = () => {\n if (currentLogIndex < DEPLOY_LOGS.length) {\n const nextLog = DEPLOY_LOGS[currentLogIndex];\n if (nextLog) {\n setLogs(prev => [...prev, nextLog]);\n }\n setProgress(Math.round(((currentLogIndex + 1) / DEPLOY_LOGS.length) * 100));\n currentLogIndex++;\n setTimeout(runStep, Math.random() * 250 + 150);\n } else {\n setStatus('success');\n }\n };\n setTimeout(runStep, 400);\n };\n\n const resetDeploy = () => {\n setStatus('idle');\n setLogs([]);\n setProgress(0);\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/85 backdrop-blur-sm\" id=\"deploy-modal-container\">\n <motion.div \n initial={{ opacity: 0, scale: 0.95, y: 15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: 15 }}\n transition={{ duration: 0.2 }}\n className=\"w-full max-w-3xl h-[70vh] bg-black border-2 border-white flex flex-col relative\"\n >\n <div className=\"flex items-center justify-between border-b border-white/30 p-5\">\n <div className=\"flex items-center gap-3\">\n <Cloud className=\"w-5 h-5 text-rose-500\" />\n <h2 className=\"text-xl font-bold font-mono tracking-tight uppercase\">\n Rakta <span className=\"text-rose-500\">Edge Deployment</span>\n </h2>\n </div>\n <button \n type=\"button\"\n onClick={onClose}\n className=\"p-2 border border-white/30 hover:bg-rose-500 hover:text-white transition-colors cursor-pointer\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n <div className=\"bg-zinc-900 p-6 border-b border-white/20 flex flex-col sm:flex-row sm:items-center justify-between gap-4\">\n <div>\n <span className=\"text-[10px] font-mono text-gray-500 uppercase tracking-widest block\">PIPELINE STATUS</span>\n <div className=\"flex items-center gap-2 mt-1\">\n {status === 'idle' && <span className=\"font-mono text-sm text-yellow-500 font-bold uppercase\">IDLE - READY TO LAUNCH</span>}\n {status === 'building' && <span className=\"font-mono text-sm text-rose-500 font-bold uppercase\">COMPILES IN PROGRESS ({progress}%)</span>}\n {status === 'success' && <span className=\"font-mono text-sm text-green-500 font-bold uppercase\">LIVE - PRODUCTION DEPLOYED</span>}\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n {status === 'idle' && (\n <button type=\"button\" onClick={startDeployment} className=\"bg-rose-500 hover:bg-white text-white hover:text-black px-6 py-2.5 font-mono text-xs font-bold uppercase transition-all duration-150 border border-transparent active:scale-95 flex items-center gap-2 cursor-pointer\">\n <Play className=\"w-4 h-4 fill-current\" /> INITIATE LAUNCH\n </button>\n )}\n {status === 'success' && (\n <button type=\"button\" onClick={resetDeploy} className=\"border border-white hover:bg-white hover:text-black px-4 py-2.5 font-mono text-xs uppercase transition-all duration-150 flex items-center gap-1.5 cursor-pointer\">\n <RotateCcw className=\"w-3.5 h-3.5\" /> RE-BUILD PIPELINE\n </button>\n )}\n </div>\n </div>\n\n <div className=\"flex-1 bg-black p-5 font-mono text-xs overflow-y-auto flex flex-col gap-2 select-text selection:bg-rose-500/30\">\n {logs.map((log) => {\n let textColor = 'text-gray-400';\n if (log.type === 'system') textColor = 'text-rose-500 font-bold border-b border-rose-500/20 pb-1 mb-2';\n if (log.type === 'success') textColor = 'text-green-500 font-bold';\n if (log.type === 'info') textColor = 'text-gray-300';\n return <div key={\\`\\${log.type}-\\${log.text}\\`} className={\\`leading-relaxed whitespace-pre-wrap \\${textColor}\\`}>{log.text}</div>;\n })}\n {status === 'idle' && <div className=\"text-gray-600 italic mt-4 text-center\">Click 'INITIATE LAUNCH' to begin.</div>}\n <div ref={terminalEndRef} />\n </div>\n </motion.div>\n </div>\n );\n}\n`;\n\nexport const DOCS_MODAL_CODE = `import { LuX as X, LuBook as Book } from 'react-icons/lu';\nimport { motion } from 'motion/react';\n\ninterface DocsModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport default function DocsModal({ isOpen, onClose }: DocsModalProps) {\n if (!isOpen) return null;\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/80 backdrop-blur-sm\">\n <motion.div initial={{ opacity: 0, y: 15 }} animate={{ opacity: 1, y: 0 }} className=\"w-full max-w-5xl h-[80vh] bg-black border-2 border-white flex flex-col relative\">\n <div className=\"flex items-center justify-between border-b border-white/30 p-5\">\n <div className=\"flex items-center gap-3\">\n <Book className=\"w-5 h-5 text-rose-500\" />\n <h2 className=\"text-xl font-bold font-mono tracking-tight uppercase\">Rakta.js <span className=\"text-rose-500\">System Manual</span></h2>\n </div>\n <button type=\"button\" onClick={onClose} className=\"p-2 border border-white/30 hover:bg-rose-500 hover:text-white transition-colors cursor-pointer\"><X className=\"w-5 h-5\" /></button>\n </div>\n <div className=\"p-10 text-white font-mono text-sm leading-relaxed max-w-3xl\">\n <h3 className=\"text-3xl font-extrabold text-rose-500 mb-6\">Welcome to Rakta.js</h3>\n <p className=\"mb-4\">You have successfully generated your project.</p>\n <p className=\"mb-4\">Use the CLI generator to expand your codebase, or start editing files in the app/ directory.</p>\n <ul className=\"list-disc pl-5 mt-4 space-y-2 text-gray-400\">\n <li>Instant Engine Boot: Sub-1ms load time.</li>\n <li>Brutalist Aesthetics natively supported.</li>\n <li>Hot Reload available globally via WebSockets.</li>\n </ul>\n </div>\n </motion.div>\n </div>\n );\n}\n`;\n\nexport const SHRIMP_CHARACTER_CODE = `interface ShrimpCharacterProps {\n status: 'IDLE' | 'SWIMMING' | 'JUMPING' | 'DEAD';\n playerY: number;\n rotation?: number;\n}\n\nexport default function ShrimpCharacter({ status, playerY, rotation }: ShrimpCharacterProps) {\n let bodyClass = '';\n const isDead = status === 'DEAD';\n\n if (isDead) bodyClass = 'animate-bounce';\n else if (status === 'SWIMMING') bodyClass = 'animate-pulse';\n else bodyClass = '';\n\n const finalRotation = rotation !== undefined ? rotation : (isDead ? 180 : 0);\n const shrimpColor = isDead ? 'fill-orange-400' : 'fill-rose-500';\n\n return (\n <div \n className=\"relative w-16 h-16 flex items-center justify-center select-none pointer-events-none transition-transform duration-75\"\n style={{ transform: \\`translateY(\\${-playerY}px) rotate(\\${finalRotation}deg)\\` }}\n >\n <svg aria-hidden=\"true\" focusable=\"false\" viewBox=\"0 0 100 100\" className={\\`w-full h-full drop-shadow-[0_4px_12px_rgba(244,63,94,0.3)] \\${bodyClass}\\`}>\n <path d=\"M 30 46 C 25 32, 45 22, 58 28 C 65 31, 62 48, 55 54 C 44 58, 35 55, 30 46 Z\" className={shrimpColor} />\n <path d=\"M 55 30 C 65 24, 76 34, 74 46 C 72 54, 62 55, 55 48 Z\" className={shrimpColor} />\n <circle cx=\"66\" cy=\"38\" r=\"4.5\" fill={isDead ? '#18181b' : '#000'} />\n </svg>\n <style>{\\`\n @keyframes bubble-up {\n 0% { transform: translateY(0) scale(1); opacity: 0.8; }\n 100% { transform: translateY(-20px) scale(1.5); opacity: 0; }\n }\n \\`}</style>\n </div>\n );\n}\n`;\n\nexport const WELCOME_PAGE_CODE = `import { useState } from \"react\";\nimport { LuBook as Book, LuCloud as Cloud, LuCpu as Cpu } from \"react-icons/lu\";\nimport ComponentsModal from \"./components/ComponentsModal\";\nimport DeployModal from \"./components/DeployModal\";\nimport DocsModal from \"./components/DocsModal\";\nimport ShrimpCharacter from \"./components/ShrimpCharacter\";\n\nexport default function WelcomePage() {\n const [modalOpen, setModalOpen] = useState<'components' | 'deploy' | 'docs' | null>(null);\n\n return (\n <main className=\"min-h-screen bg-[#050505] flex flex-col items-center justify-center text-white font-mono p-4\">\n <div className=\"absolute top-10 pointer-events-none opacity-20\">\n <ShrimpCharacter status=\"IDLE\" playerY={0} />\n </div>\n\n <div className=\"text-center z-10 max-w-2xl\">\n <h1 className=\"text-5xl md:text-7xl font-extrabold uppercase tracking-tighter mb-4\">\n Welcome to <span className=\"text-rose-500\">Rakta.js</span>\n </h1>\n <p className=\"text-gray-400 text-sm md:text-base mb-10 leading-relaxed\">\n Small in size. Fierce in speed. Alive in every route.\n <br/>\n Your neo-brutalist web application is ready for action.\n </p>\n\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <button \n type=\"button\"\n onClick={() => setModalOpen('components')}\n className=\"flex flex-col items-center justify-center gap-3 p-6 border-2 border-zinc-800 bg-zinc-900/50 hover:border-rose-500 hover:bg-rose-500/10 transition-colors cursor-pointer group\"\n >\n <Cpu className=\"w-8 h-8 text-gray-400 group-hover:text-rose-500\" />\n <span className=\"font-bold text-sm uppercase\">Components</span>\n </button>\n \n <button \n type=\"button\"\n onClick={() => setModalOpen('docs')}\n className=\"flex flex-col items-center justify-center gap-3 p-6 border-2 border-zinc-800 bg-zinc-900/50 hover:border-blue-500 hover:bg-blue-500/10 transition-colors cursor-pointer group\"\n >\n <Book className=\"w-8 h-8 text-gray-400 group-hover:text-blue-500\" />\n <span className=\"font-bold text-sm uppercase\">Documentation</span>\n </button>\n\n <button \n type=\"button\"\n onClick={() => setModalOpen('deploy')}\n className=\"flex flex-col items-center justify-center gap-3 p-6 border-2 border-zinc-800 bg-zinc-900/50 hover:border-green-500 hover:bg-green-500/10 transition-colors cursor-pointer group\"\n >\n <Cloud className=\"w-8 h-8 text-gray-400 group-hover:text-green-500\" />\n <span className=\"font-bold text-sm uppercase\">Deployment</span>\n </button>\n </div>\n </div>\n\n <div className=\"absolute bottom-6 text-[10px] text-gray-600 uppercase tracking-widest text-center\">\n Running on http://localhost:3000 • Hot Reload Active\n </div>\n\n {modalOpen === 'components' && <ComponentsModal isOpen={true} onClose={() => setModalOpen(null)} />}\n {modalOpen === 'deploy' && <DeployModal isOpen={true} onClose={() => setModalOpen(null)} />}\n {modalOpen === 'docs' && <DocsModal isOpen={true} onClose={() => setModalOpen(null)} />}\n </main>\n );\n}\n`;\n",
|
|
19
19
|
"import * as clack from \"@clack/prompts\";\nimport type {\n\tBackendFramework,\n\tCssFramework,\n\tDatabase,\n\tProjectConfig,\n\tProjectMode,\n\tRenderMode,\n} from \"./types\";\nimport {\n\tBACKEND_DISPLAY,\n\tCSS_DISPLAY,\n\tDATABASE_DISPLAY,\n\tPROJECT_MODE_DISPLAY,\n\tRENDER_MODE_DISPLAY,\n} from \"./types\";\n\nfunction getPromptValue<TValue>(promptResult: TValue | symbol): TValue {\n\tif (clack.isCancel(promptResult)) {\n\t\tclack.cancel(\"Setup cancelled.\");\n\t\tprocess.exit(0);\n\t}\n\n\treturn promptResult;\n}\n\nexport async function promptProjectName(fallbackName: string): Promise<string> {\n\tconst promptResult = await clack.text({\n\t\tmessage: \"Project name:\",\n\t\tplaceholder: fallbackName,\n\t\tdefaultValue: fallbackName,\n\t\tvalidate(inputValue) {\n\t\t\tconst trimmedInput = (inputValue ?? \"\").trim();\n\n\t\t\tif (trimmedInput.length === 0) {\n\t\t\t\treturn \"Project name cannot be empty.\";\n\t\t\t}\n\n\t\t\tif (!/^[a-z0-9-_]+$/i.test(trimmedInput)) {\n\t\t\t\treturn \"Use only letters, numbers, hyphens, and underscores.\";\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t});\n\n\treturn getPromptValue(promptResult).trim();\n}\n\nexport async function promptProjectMode(): Promise<ProjectMode> {\n\tconst promptResult = await clack.select<ProjectMode>({\n\t\tmessage: \"What do you want to create?\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"frontend-only\",\n\t\t\t\tlabel: PROJECT_MODE_DISPLAY[\"frontend-only\"],\n\t\t\t\thint: \"recommended for starters\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"fullstack\",\n\t\t\t\tlabel: PROJECT_MODE_DISPLAY.fullstack,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"frontend-only\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptTypeScript(): Promise<boolean> {\n\tconst promptResult = await clack.confirm({\n\t\tmessage: \"Would you like to use TypeScript? (recommended)\",\n\t\tinitialValue: true,\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptCssFramework(): Promise<CssFramework> {\n\tconst promptResult = await clack.select<CssFramework>({\n\t\tmessage: \"Choose a CSS framework:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"tailwind\",\n\t\t\t\tlabel: CSS_DISPLAY.tailwind,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"bootstrap\",\n\t\t\t\tlabel: CSS_DISPLAY.bootstrap,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"sass\",\n\t\t\t\tlabel: CSS_DISPLAY.sass,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"none\",\n\t\t\t\tlabel: CSS_DISPLAY.none,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"tailwind\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptRenderMode(): Promise<RenderMode> {\n\tconst promptResult = await clack.select<RenderMode>({\n\t\tmessage: \"Choose a render mode:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"csr\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.csr,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"spa\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.spa,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"hybrid\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.hybrid,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"ssr\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.ssr,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"ssg\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.ssg,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"csg\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.csg,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"csr\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptBackendFramework(): Promise<BackendFramework> {\n\tconst promptResult = await clack.select<BackendFramework>({\n\t\tmessage: \"Choose a backend framework:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"gaman\",\n\t\t\t\tlabel: BACKEND_DISPLAY.gaman,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"express\",\n\t\t\t\tlabel: BACKEND_DISPLAY.express,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"nest\",\n\t\t\t\tlabel: BACKEND_DISPLAY.nest,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"adonis\",\n\t\t\t\tlabel: BACKEND_DISPLAY.adonis,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"gaman\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptDatabase(): Promise<Database> {\n\tconst promptResult = await clack.select<Database>({\n\t\tmessage: \"Choose a database:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"postgresql\",\n\t\t\t\tlabel: DATABASE_DISPLAY.postgresql,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"mysql\",\n\t\t\t\tlabel: DATABASE_DISPLAY.mysql,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"mongodb\",\n\t\t\t\tlabel: DATABASE_DISPLAY.mongodb,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"firebase\",\n\t\t\t\tlabel: DATABASE_DISPLAY.firebase,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"sqlite\",\n\t\t\t\tlabel: DATABASE_DISPLAY.sqlite,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"mariadb\",\n\t\t\t\tlabel: DATABASE_DISPLAY.mariadb,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"redis\",\n\t\t\t\tlabel: DATABASE_DISPLAY.redis,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"planetscale\",\n\t\t\t\tlabel: DATABASE_DISPLAY.planetscale,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"neon\",\n\t\t\t\tlabel: DATABASE_DISPLAY.neon,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"turso\",\n\t\t\t\tlabel: DATABASE_DISPLAY.turso,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"postgresql\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function runPrompts(projectName: string): Promise<ProjectConfig> {\n\tconst projectMode = await promptProjectMode();\n\tconst useTypeScript = await promptTypeScript();\n\tconst cssFramework = await promptCssFramework();\n\tconst renderMode = await promptRenderMode();\n\n\tif (projectMode === \"frontend-only\") {\n\t\treturn {\n\t\t\tprojectName,\n\t\t\tprojectMode,\n\t\t\tuseTypeScript,\n\t\t\tcssFramework,\n\t\t\trenderMode,\n\t\t\tbackendFramework: \"gaman\",\n\t\t\tdatabase: \"postgresql\",\n\t\t};\n\t}\n\n\tconst backendFramework = await promptBackendFramework();\n\tconst selectedDatabase = await promptDatabase();\n\n\treturn {\n\t\tprojectName,\n\t\tprojectMode,\n\t\tuseTypeScript,\n\t\tcssFramework,\n\t\trenderMode,\n\t\tbackendFramework,\n\t\tdatabase: selectedDatabase,\n\t};\n}\n"
|
|
20
20
|
],
|
|
21
|
-
"mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4P9B,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwD5B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
|
|
22
|
-
"debugId": "
|
|
21
|
+
"mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2Q9B,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0D5B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiI1B,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCxB,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsC9B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AF9fjC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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
|
|
22
|
+
"debugId": "2E17890E5DBF1B0764756E2164756E21",
|
|
23
23
|
"names": []
|
|
24
24
|
}
|