raktajs 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/rakta.js CHANGED
@@ -25,7 +25,7 @@ var defaultConfig = {
25
25
  },
26
26
  server: {
27
27
  port: 3000,
28
- hostname: "localhost",
28
+ hostname: "0.0.0.0",
29
29
  cors: true,
30
30
  compression: false,
31
31
  trustProxy: false
@@ -599,7 +599,6 @@ function navigate(to: string): void {
599
599
  function App(): React.ReactElement {
600
600
  const [pathname, setPathname] = useState(() => window.location.pathname);
601
601
  const [Page, setPage] = useState<React.ComponentType | null>(null);
602
- const [routeError, setRouteError] = useState<Error | null>(null);
603
602
 
604
603
  useEffect(() => {
605
604
  function handlePopState(): void {
@@ -642,63 +641,17 @@ function App(): React.ReactElement {
642
641
  useEffect(() => {
643
642
  let isCurrent = true;
644
643
 
645
- setPage(null);
646
- setRouteError(null);
647
-
648
- resolveRouteLoader(pathname)()
649
- .then((pageModule) => {
650
- if (isCurrent) {
651
- setPage(() => pageModule.default);
652
- }
653
- })
654
- .catch((caughtError) => {
655
- const error =
656
- caughtError instanceof Error
657
- ? caughtError
658
- : new Error(String(caughtError));
659
-
660
- console.error("[Rakta.js] Failed to load route:", error);
661
-
662
- if (isCurrent) {
663
- setRouteError(error);
664
- }
665
- });
644
+ resolveRouteLoader(pathname)().then((pageModule) => {
645
+ if (isCurrent) {
646
+ setPage(() => pageModule.default);
647
+ }
648
+ });
666
649
 
667
650
  return () => {
668
651
  isCurrent = false;
669
652
  };
670
653
  }, [pathname]);
671
654
 
672
- if (routeError) {
673
- return React.createElement("main", {
674
- style: {
675
- minHeight: "100vh",
676
- padding: "32px",
677
- background: "#050505",
678
- color: "#f8fafc",
679
- fontFamily: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",
680
- },
681
- },
682
- React.createElement("p", {
683
- style: {
684
- margin: "0 0 12px",
685
- color: "#fb7185",
686
- fontSize: "12px",
687
- fontWeight: 700,
688
- letterSpacing: "0.08em",
689
- textTransform: "uppercase",
690
- },
691
- }, "Rakta.js route failed to load"),
692
- React.createElement("pre", {
693
- style: {
694
- margin: 0,
695
- whiteSpace: "pre-wrap",
696
- lineHeight: 1.6,
697
- },
698
- }, routeError.stack ?? routeError.message),
699
- );
700
- }
701
-
702
655
  if (!Page) {
703
656
  return React.createElement("main", {
704
657
  style: {
@@ -843,7 +796,7 @@ import { join as join8 } from "path";
843
796
 
844
797
  // src/forge/devServer.ts
845
798
  import { existsSync as existsSync7, readFileSync as readFileSync2, statSync as statSync3, watch } from "fs";
846
- import { join as join7 } from "path";
799
+ import { join as join7, relative as relative3 } from "path";
847
800
 
848
801
  // src/render/renderer.ts
849
802
  function buildHtmlShell(options) {
@@ -998,7 +951,28 @@ ${buildErrors}`);
998
951
  async function startDevServer(options) {
999
952
  const manifest = generateManifest(options.appDir);
1000
953
  const resolvedPort = resolveDevPort(options.port);
1001
- const clientOutDir = await buildDevClientBundle(options, manifest);
954
+ let clientOutDir = await buildDevClientBundle(options, manifest);
955
+ let isClientBundleDirty = false;
956
+ let clientBundleRebuild = null;
957
+ function shouldReloadForPath(changedPath) {
958
+ if (changedPath === null)
959
+ return true;
960
+ const relativePath = relative3(options.projectRoot, changedPath).replace(/\\/g, "/");
961
+ return relativePath.length > 0 && !relativePath.startsWith("node_modules/") && !relativePath.startsWith(".rakta/") && !relativePath.startsWith("dist/");
962
+ }
963
+ async function ensureFreshClientBundle() {
964
+ if (!isClientBundleDirty)
965
+ return;
966
+ clientBundleRebuild ??= buildDevClientBundle(options, manifest).then((nextClientOutDir) => {
967
+ clientOutDir = nextClientOutDir;
968
+ isClientBundleDirty = false;
969
+ clientBundleRebuild = null;
970
+ }, (caughtError) => {
971
+ clientBundleRebuild = null;
972
+ throw caughtError;
973
+ });
974
+ await clientBundleRebuild;
975
+ }
1002
976
  const server = Bun.serve({
1003
977
  port: resolvedPort,
1004
978
  hostname: options.host,
@@ -1018,6 +992,7 @@ async function startDevServer(options) {
1018
992
  const url = new URL(request.url);
1019
993
  const { pathname } = url;
1020
994
  if (clientOutDir.length > 0) {
995
+ await ensureFreshClientBundle();
1021
996
  const clientBundlePath = join7(clientOutDir, pathname);
1022
997
  if (isReadableFile(clientBundlePath)) {
1023
998
  return new Response(readFileSync2(clientBundlePath), {
@@ -1042,6 +1017,7 @@ async function startDevServer(options) {
1042
1017
  }
1043
1018
  return await handler(request);
1044
1019
  }
1020
+ await ensureFreshClientBundle();
1045
1021
  const resolved = resolveRouteMode(pathname, options.renderConfig);
1046
1022
  const searchParams = {};
1047
1023
  url.searchParams.forEach((value, key) => {
@@ -1085,14 +1061,19 @@ async function startDevServer(options) {
1085
1061
  });
1086
1062
  const serverPort = typeof server.port === "number" ? server.port : resolvedPort;
1087
1063
  try {
1088
- watch(options.appDir, { recursive: true }, () => {
1089
- server.publish("livereload", "reload");
1064
+ watch(options.projectRoot, { recursive: true }, (_eventType, filename) => {
1065
+ const changedPath = typeof filename === "string" ? join7(options.projectRoot, filename) : null;
1066
+ if (shouldReloadForPath(changedPath)) {
1067
+ isClientBundleDirty = true;
1068
+ server.publish("livereload", "reload");
1069
+ }
1090
1070
  });
1091
1071
  } catch {}
1072
+ const displayHost = options.host === "0.0.0.0" || options.host === "::" ? "localhost" : options.host;
1092
1073
  return {
1093
1074
  port: serverPort,
1094
1075
  host: options.host,
1095
- url: `http://${options.host}:${serverPort}`,
1076
+ url: `http://${displayHost}:${serverPort}`,
1096
1077
  stop: () => server.stop()
1097
1078
  };
1098
1079
  }
@@ -1106,7 +1087,7 @@ async function devCommand(cwd = process.cwd()) {
1106
1087
  const server = await startDevServer({
1107
1088
  projectRoot: cwd,
1108
1089
  port: config.port,
1109
- host: config.server.hostname ?? "localhost",
1090
+ host: config.server.hostname ?? "0.0.0.0",
1110
1091
  appDir: join8(cwd, config.appDir),
1111
1092
  publicDir: join8(cwd, config.publicDir),
1112
1093
  appName: config.appName,
@@ -1186,7 +1167,7 @@ import { join as join11 } from "path";
1186
1167
 
1187
1168
  // src/auto-import/scanner.ts
1188
1169
  import { existsSync as existsSync9, readdirSync as readdirSync3 } from "fs";
1189
- import { basename, extname, join as join10, relative as relative3 } from "path";
1170
+ import { basename, extname, join as join10, relative as relative4 } from "path";
1190
1171
  var DEFAULT_EXTENSIONS = [
1191
1172
  ".ts",
1192
1173
  ".tsx",
@@ -1217,7 +1198,7 @@ function toPascalCase(text) {
1217
1198
  return text.replace(/[-_.]/g, " ").replace(/\s+(.)/g, (_match, char) => char.toUpperCase()).replace(/^(.)/, (_match, char) => char.toUpperCase());
1218
1199
  }
1219
1200
  function deriveExportName(filePath, dirPath) {
1220
- const relativePath = relative3(dirPath, filePath).replace(/\\/g, "/");
1201
+ const relativePath = relative4(dirPath, filePath).replace(/\\/g, "/");
1221
1202
  const withoutExtension = relativePath.replace(/\.(ts|tsx|js|jsx)$/, "").replace(/\/index$/, "");
1222
1203
  return toPascalCase(withoutExtension.replace(/\//g, "_"));
1223
1204
  }
@@ -1255,11 +1236,11 @@ function scanForExports(options) {
1255
1236
  const directoryAbs = join10(options.frontendRoot, directory);
1256
1237
  const files = walkDirectory(directoryAbs, extensions);
1257
1238
  for (const filePath of files) {
1258
- const relativeFromOutput = relative3(outputAbs, filePath).replace(/\\/g, "/").replace(/\.(ts|tsx)$/, "");
1239
+ const relativeFromOutput = relative4(outputAbs, filePath).replace(/\\/g, "/").replace(/\.(ts|tsx)$/, "");
1259
1240
  const importPath = relativeFromOutput.startsWith(".") ? relativeFromOutput : `./${relativeFromOutput}`;
1260
1241
  discovered.push({
1261
1242
  name: deriveExportName(filePath, directoryAbs),
1262
- filePath: relative3(options.frontendRoot, filePath).replace(/\\/g, "/"),
1243
+ filePath: relative4(options.frontendRoot, filePath).replace(/\\/g, "/"),
1263
1244
  importPath,
1264
1245
  kind: detectKind(filePath)
1265
1246
  });
@@ -1850,4 +1831,4 @@ ${BOLD}${RED}Rakta.js error:${RESET} ${errorMessage}
1850
1831
  process.exit(1);
1851
1832
  });
1852
1833
 
1853
- //# debugId=83FAE8A38F61D75064756E2164756E21
1834
+ //# debugId=ACBE00BFA61391DE64756E2164756E21
@@ -4,16 +4,16 @@
4
4
  "sourcesContent": [
5
5
  "#!/usr/bin/env bun\n\nimport { join } from \"node:path\";\nimport { loadConfig } from \"../config/loadConfig\";\nimport { inspectBuild, printInspectReport } from \"../forge/inspect\";\nimport { buildCommand } from \"./build\";\nimport { devCommand } from \"./dev\";\nimport { doctorCommand } from \"./doctor\";\nimport { importsGenerateCommand } from \"./imports\";\nimport { makeCommand } from \"./make\";\nimport { routesCommand } from \"./routes\";\nimport { rpcTypesCommand } from \"./rpcTypes\";\nimport { seoGenerateCommand } from \"./seo\";\nimport { startCommand } from \"./start\";\n\nconst RED = \"\\x1b[31m\";\nconst BOLD = \"\\x1b[1m\";\nconst DIM = \"\\x1b[2m\";\nconst RESET = \"\\x1b[0m\";\n\nconst cliArgs = process.argv.slice(2);\nconst selectedCommand = cliArgs[0] ?? \"help\";\nconst firstArgument = cliArgs[1];\nconst cwd = process.cwd();\n\nconst 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].join(\"\\n\");\n\nfunction printHelp(): void {\n\tconsole.log(BANNER);\n\tconsole.log(`${BOLD}${RED} Rakta.js CLI${RESET}`);\n\tconsole.log(\n\t\t`${DIM} Small in size. Fierce in speed. Alive in every route.${RESET}`,\n\t);\n\tconsole.log(\"\");\n\tconsole.log(`${BOLD}Usage:${RESET}`);\n\tconsole.log(\" bun rakta <command> [options]\");\n\tconsole.log(\"\");\n\tconsole.log(`${BOLD}Commands:${RESET}`);\n\tconsole.log(\" rakta dev\");\n\tconsole.log(\" rakta build\");\n\tconsole.log(\" rakta start\");\n\tconsole.log(\" rakta routes\");\n\tconsole.log(\"\");\n\tconsole.log(\" rakta make:page <name>\");\n\tconsole.log(\" rakta make:layout <name>\");\n\tconsole.log(\" rakta make:component <name>\");\n\tconsole.log(\" rakta make:api <name>\");\n\tconsole.log(\"\");\n\tconsole.log(\" rakta seo:generate\");\n\tconsole.log(\" rakta imports:generate\");\n\tconsole.log(\" rakta rpc:types\");\n\tconsole.log(\"\");\n\tconsole.log(\" rakta forge:inspect\");\n\tconsole.log(\" rakta tide:render\");\n\tconsole.log(\" rakta doctor\");\n\tconsole.log(\" rakta help\");\n\tconsole.log(\"\");\n}\n\nfunction getRequiredArgument(\n\tcommandName: string,\n\targumentValue: string | undefined,\n): string {\n\tif (typeof argumentValue === \"string\" && argumentValue.trim().length > 0) {\n\t\treturn argumentValue;\n\t}\n\n\tconsole.error(\n\t\t`${BOLD}${RED}Rakta.js${RESET} ${DIM}missing argument for:${RESET} ${commandName}`,\n\t);\n\tconsole.error(`${DIM}Usage: rakta ${commandName} <name>${RESET}`);\n\tprocess.exit(1);\n}\n\nasync function runForgeInspect(): Promise<void> {\n\tconst projectConfig = await loadConfig(cwd);\n\tconst outputDirectory = projectConfig.build.outDir ?? \"dist\";\n\n\tconst inspectReport = inspectBuild({\n\t\toutDir: join(cwd, outputDirectory),\n\t\trenderConfig: projectConfig.render,\n\t});\n\n\tprintInspectReport(inspectReport);\n}\n\nasync function main(): Promise<void> {\n\tswitch (selectedCommand) {\n\t\tcase \"help\":\n\t\tcase \"--help\":\n\t\tcase \"-h\":\n\t\t\tprintHelp();\n\t\t\tbreak;\n\n\t\tcase \"dev\":\n\t\t\tawait devCommand(cwd);\n\t\t\tbreak;\n\n\t\tcase \"build\":\n\t\t\tawait buildCommand(cwd);\n\t\t\tbreak;\n\n\t\tcase \"start\":\n\t\t\tawait startCommand(cwd);\n\t\t\tbreak;\n\n\t\tcase \"routes\":\n\t\t\tawait routesCommand(cwd);\n\t\t\tbreak;\n\n\t\tcase \"make:page\":\n\t\t\tawait makeCommand(\n\t\t\t\t\"page\",\n\t\t\t\tgetRequiredArgument(\"make:page\", firstArgument),\n\t\t\t\tcwd,\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase \"make:layout\":\n\t\t\tawait makeCommand(\n\t\t\t\t\"layout\",\n\t\t\t\tgetRequiredArgument(\"make:layout\", firstArgument),\n\t\t\t\tcwd,\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase \"make:component\":\n\t\t\tawait makeCommand(\n\t\t\t\t\"component\",\n\t\t\t\tgetRequiredArgument(\"make:component\", firstArgument),\n\t\t\t\tcwd,\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase \"make:api\":\n\t\t\tawait makeCommand(\n\t\t\t\t\"api\",\n\t\t\t\tgetRequiredArgument(\"make:api\", firstArgument),\n\t\t\t\tcwd,\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase \"seo:generate\":\n\t\t\tawait seoGenerateCommand(cwd);\n\t\t\tbreak;\n\n\t\tcase \"imports:generate\":\n\t\t\tawait importsGenerateCommand(cwd);\n\t\t\tbreak;\n\n\t\tcase \"rpc:types\":\n\t\t\tawait rpcTypesCommand(cwd);\n\t\t\tbreak;\n\n\t\tcase \"forge:inspect\":\n\t\t\tawait runForgeInspect();\n\t\t\tbreak;\n\n\t\tcase \"tide:render\":\n\t\t\tconsole.log(\n\t\t\t\t`${BOLD}${RED}Rakta.js${RESET} ${DIM}tide:render is planned for v0.2.0.${RESET}`,\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase \"doctor\":\n\t\t\tawait doctorCommand(cwd);\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.error(\n\t\t\t\t`${BOLD}${RED}Rakta.js${RESET} ${DIM}unknown command:${RESET} ${selectedCommand}`,\n\t\t\t);\n\t\t\tprintHelp();\n\t\t\tprocess.exit(1);\n\t}\n}\n\nmain().catch((caughtError: unknown) => {\n\tconst errorMessage =\n\t\tcaughtError instanceof Error ? caughtError.message : String(caughtError);\n\n\tconsole.error(`\\n${BOLD}${RED}Rakta.js error:${RESET} ${errorMessage}\\n`);\n\tprocess.exit(1);\n});\n",
6
6
  "import { existsSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport type { RaktaConfig } from \"./defineConfig\";\nimport { defaultConfig } from \"./defineConfig\";\n\nconst CONFIG_FILENAMES: ReadonlyArray<string> = [\n\t\"rakta.config.ts\",\n\t\"rakta.config.js\",\n\t\"rakta.config.mts\",\n\t\"rakta.config.mjs\",\n];\n\nexport async function loadConfig(\n\tcwd: string = process.cwd(),\n): Promise<Required<RaktaConfig>> {\n\tconst resolvedCwd = resolve(cwd);\n\n\tfor (const filename of CONFIG_FILENAMES) {\n\t\tconst configPath = join(resolvedCwd, filename);\n\n\t\tif (!existsSync(configPath)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst configModule = (await import(configPath)) as {\n\t\t\tdefault?: RaktaConfig;\n\t\t};\n\t\tconst userConfig: RaktaConfig = configModule.default ?? {};\n\n\t\treturn mergeConfig(defaultConfig, userConfig);\n\t}\n\n\treturn defaultConfig;\n}\n\nexport function mergeConfig(\n\tbaseConfig: Required<RaktaConfig>,\n\toverrideConfig: RaktaConfig,\n): Required<RaktaConfig> {\n\treturn {\n\t\tappName: overrideConfig.appName ?? baseConfig.appName,\n\t\tappDir: overrideConfig.appDir ?? baseConfig.appDir,\n\t\tpublicDir: overrideConfig.publicDir ?? baseConfig.publicDir,\n\t\tport: overrideConfig.port ?? baseConfig.port,\n\t\tcss:\n\t\t\toverrideConfig.css !== undefined\n\t\t\t\t? { ...baseConfig.css, ...overrideConfig.css }\n\t\t\t\t: baseConfig.css,\n\t\tseo:\n\t\t\toverrideConfig.seo !== undefined\n\t\t\t\t? { ...baseConfig.seo, ...overrideConfig.seo }\n\t\t\t\t: baseConfig.seo,\n\t\tserver:\n\t\t\toverrideConfig.server !== undefined\n\t\t\t\t? { ...baseConfig.server, ...overrideConfig.server }\n\t\t\t\t: baseConfig.server,\n\t\tbuild:\n\t\t\toverrideConfig.build !== undefined\n\t\t\t\t? { ...baseConfig.build, ...overrideConfig.build }\n\t\t\t\t: baseConfig.build,\n\t\tautoImport:\n\t\t\toverrideConfig.autoImport !== undefined\n\t\t\t\t? { ...baseConfig.autoImport, ...overrideConfig.autoImport }\n\t\t\t\t: baseConfig.autoImport,\n\t\trpc:\n\t\t\toverrideConfig.rpc !== undefined\n\t\t\t\t? { ...baseConfig.rpc, ...overrideConfig.rpc }\n\t\t\t\t: baseConfig.rpc,\n\t\trender:\n\t\t\toverrideConfig.render !== undefined\n\t\t\t\t? {\n\t\t\t\t\t\tdefaultMode:\n\t\t\t\t\t\t\toverrideConfig.render.defaultMode ??\n\t\t\t\t\t\t\tbaseConfig.render.defaultMode,\n\t\t\t\t\t\troutes: {\n\t\t\t\t\t\t\t...baseConfig.render.routes,\n\t\t\t\t\t\t\t...overrideConfig.render.routes,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: baseConfig.render,\n\t};\n}\n",
7
- "import type { RenderConfig } from \"../render/types\";\n\nexport interface CssConfig {\n\treadonly framework: \"tailwind\" | \"bootstrap\" | \"sass\" | \"none\";\n\n\treadonly configPath?: string;\n}\n\nexport interface SeoConfig {\n\treadonly defaultTitle?: string;\n\treadonly titleTemplate?: string;\n\treadonly defaultDescription?: string;\n\treadonly siteUrl?: string;\n\treadonly defaultOpenGraphImage?: string;\n}\n\nexport interface CorsConfig {\n\treadonly origin: string | string[];\n\treadonly methods?: string[];\n\treadonly headers?: string[];\n\treadonly credentials?: boolean;\n\treadonly maxAge?: number;\n}\n\nexport interface ServerConfig {\n\treadonly port?: number;\n\treadonly hostname?: string;\n\treadonly cors?: boolean | CorsConfig;\n\treadonly compression?: boolean;\n\treadonly trustProxy?: boolean;\n}\n\nexport interface BuildConfig {\n\treadonly entryPoint?: string;\n\treadonly outDir?: string;\n\treadonly sourcemap?: boolean;\n\treadonly minify?: boolean;\n\treadonly splitting?: boolean;\n\treadonly target?: \"browser\" | \"bun\" | \"node\";\n}\n\nexport interface AutoImportConfig {\n\treadonly enabled: boolean;\n\treadonly directories: string[];\n\treadonly outputDirectory: string;\n\treadonly extensions?: string[];\n\treadonly dts?: boolean;\n}\n\nexport interface RpcConfig {\n\treadonly enabled: boolean;\n\treadonly basePath?: string;\n\treadonly maxBodySize?: number;\n}\n\nexport interface RaktaConfig {\n\treadonly appName?: string;\n\treadonly appDir?: string;\n\treadonly publicDir?: string;\n\treadonly port?: number;\n\treadonly css?: CssConfig;\n\treadonly seo?: SeoConfig;\n\treadonly server?: ServerConfig;\n\treadonly build?: BuildConfig;\n\treadonly autoImport?: AutoImportConfig;\n\treadonly rpc?: RpcConfig;\n\treadonly render?: RenderConfig;\n}\n\nexport function defineConfig(config: RaktaConfig): RaktaConfig {\n\treturn config;\n}\n\n/** Alias matching the config example in the docs. */\nexport const defineRaktaConfig = defineConfig;\n\nexport const defaultConfig: Required<RaktaConfig> = {\n\tappName: \"Rakta.js App\",\n\tappDir: \"app\",\n\tpublicDir: \"public\",\n\tport: 3000,\n\tcss: {\n\t\tframework: \"tailwind\",\n\t},\n\tseo: {\n\t\tdefaultTitle: \"Rakta.js App\",\n\t\ttitleTemplate: \"%s | Rakta.js App\",\n\t\tdefaultDescription: \"Built with Rakta.js\",\n\t\tsiteUrl: \"http://localhost:3000\",\n\t},\n\tserver: {\n\t\tport: 3000,\n\t\thostname: \"localhost\",\n\t\tcors: true,\n\t\tcompression: false,\n\t\ttrustProxy: false,\n\t},\n\tbuild: {\n\t\tentryPoint: \"entry.client.tsx\",\n\t\toutDir: \"dist\",\n\t\tsourcemap: false,\n\t\tminify: true,\n\t\tsplitting: false,\n\t\ttarget: \"browser\",\n\t},\n\tautoImport: {\n\t\tenabled: false,\n\t\tdirectories: [\"components\", \"lib\", \"stores\", \"schemas\"],\n\t\toutputDirectory: \".rakta\",\n\t\textensions: [\".ts\", \".tsx\", \".js\", \".jsx\"],\n\t\tdts: true,\n\t},\n\trpc: {\n\t\tenabled: false,\n\t\tbasePath: \"/rpc\",\n\t\tmaxBodySize: 1_048_576,\n\t},\n\trender: {\n\t\tdefaultMode: \"csr\",\n\t\troutes: {},\n\t},\n};\n",
7
+ "import type { RenderConfig } from \"../render/types\";\n\nexport interface CssConfig {\n\treadonly framework: \"tailwind\" | \"bootstrap\" | \"sass\" | \"none\";\n\n\treadonly configPath?: string;\n}\n\nexport interface SeoConfig {\n\treadonly defaultTitle?: string;\n\treadonly titleTemplate?: string;\n\treadonly defaultDescription?: string;\n\treadonly siteUrl?: string;\n\treadonly defaultOpenGraphImage?: string;\n}\n\nexport interface CorsConfig {\n\treadonly origin: string | string[];\n\treadonly methods?: string[];\n\treadonly headers?: string[];\n\treadonly credentials?: boolean;\n\treadonly maxAge?: number;\n}\n\nexport interface ServerConfig {\n\treadonly port?: number;\n\treadonly hostname?: string;\n\treadonly cors?: boolean | CorsConfig;\n\treadonly compression?: boolean;\n\treadonly trustProxy?: boolean;\n}\n\nexport interface BuildConfig {\n\treadonly entryPoint?: string;\n\treadonly outDir?: string;\n\treadonly sourcemap?: boolean;\n\treadonly minify?: boolean;\n\treadonly splitting?: boolean;\n\treadonly target?: \"browser\" | \"bun\" | \"node\";\n}\n\nexport interface AutoImportConfig {\n\treadonly enabled: boolean;\n\treadonly directories: string[];\n\treadonly outputDirectory: string;\n\treadonly extensions?: string[];\n\treadonly dts?: boolean;\n}\n\nexport interface RpcConfig {\n\treadonly enabled: boolean;\n\treadonly basePath?: string;\n\treadonly maxBodySize?: number;\n}\n\nexport interface RaktaConfig {\n\treadonly appName?: string;\n\treadonly appDir?: string;\n\treadonly publicDir?: string;\n\treadonly port?: number;\n\treadonly css?: CssConfig;\n\treadonly seo?: SeoConfig;\n\treadonly server?: ServerConfig;\n\treadonly build?: BuildConfig;\n\treadonly autoImport?: AutoImportConfig;\n\treadonly rpc?: RpcConfig;\n\treadonly render?: RenderConfig;\n}\n\nexport function defineConfig(config: RaktaConfig): RaktaConfig {\n\treturn config;\n}\n\n/** Alias matching the config example in the docs. */\nexport const defineRaktaConfig = defineConfig;\n\nexport const defaultConfig: Required<RaktaConfig> = {\n\tappName: \"Rakta.js App\",\n\tappDir: \"app\",\n\tpublicDir: \"public\",\n\tport: 3000,\n\tcss: {\n\t\tframework: \"tailwind\",\n\t},\n\tseo: {\n\t\tdefaultTitle: \"Rakta.js App\",\n\t\ttitleTemplate: \"%s | Rakta.js App\",\n\t\tdefaultDescription: \"Built with Rakta.js\",\n\t\tsiteUrl: \"http://localhost:3000\",\n\t},\n\tserver: {\n\t\tport: 3000,\n\t\thostname: \"0.0.0.0\",\n\t\tcors: true,\n\t\tcompression: false,\n\t\ttrustProxy: false,\n\t},\n\tbuild: {\n\t\tentryPoint: \"entry.client.tsx\",\n\t\toutDir: \"dist\",\n\t\tsourcemap: false,\n\t\tminify: true,\n\t\tsplitting: false,\n\t\ttarget: \"browser\",\n\t},\n\tautoImport: {\n\t\tenabled: false,\n\t\tdirectories: [\"components\", \"lib\", \"stores\", \"schemas\"],\n\t\toutputDirectory: \".rakta\",\n\t\textensions: [\".ts\", \".tsx\", \".js\", \".jsx\"],\n\t\tdts: true,\n\t},\n\trpc: {\n\t\tenabled: false,\n\t\tbasePath: \"/rpc\",\n\t\tmaxBodySize: 1_048_576,\n\t},\n\trender: {\n\t\tdefaultMode: \"csr\",\n\t\troutes: {},\n\t},\n};\n",
8
8
  "import { existsSync, readdirSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { resolveRouteMode } from \"../render/modes\";\nimport type { RenderConfig } from \"../render/types\";\nimport { readManifest } from \"../router/manifest\";\nimport type {\n\tArtifactKind,\n\tForgeBuildArtifact,\n\tForgeInspectReport,\n\tForgeRouteModeEntry,\n} from \"./types\";\n\nexport interface InspectOptions {\n\treadonly outDir: string;\n\treadonly renderConfig: RenderConfig;\n}\n\nfunction detectArtifactKind(filename: string): ArtifactKind {\n\tif (filename === \"route-manifest.json\") return \"manifest\";\n\tif (filename.endsWith(\".css\")) return \"stylesheet\";\n\tif (filename.endsWith(\".js\") || filename.endsWith(\".mjs\")) return \"script\";\n\treturn \"asset\";\n}\n\nfunction formatBytes(bytes: number): string {\n\tif (bytes < 1024) return `${bytes} B`;\n\tif (bytes < 1_048_576) return `${(bytes / 1024).toFixed(1)} KB`;\n\treturn `${(bytes / 1_048_576).toFixed(2)} MB`;\n}\n\nfunction scanDirectory(dirPath: string): ForgeBuildArtifact[] {\n\tif (!existsSync(dirPath)) return [];\n\tconst collected: ForgeBuildArtifact[] = [];\n\n\tfunction walk(current: string): void {\n\t\tconst entries = readdirSync(current, { withFileTypes: true });\n\t\tfor (const entry of entries) {\n\t\t\tconst full = join(current, entry.name);\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\twalk(full);\n\t\t\t} else if (entry.isFile()) {\n\t\t\t\tcollected.push({\n\t\t\t\t\toutputPath: full,\n\t\t\t\t\tsizeBytes: statSync(full).size,\n\t\t\t\t\tkind: detectArtifactKind(entry.name),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\twalk(dirPath);\n\treturn collected;\n}\n\nexport function inspectBuild(options: InspectOptions): ForgeInspectReport {\n\tconst artifacts = scanDirectory(options.outDir);\n\tconst manifestPath = join(options.outDir, \"route-manifest.json\");\n\tconst manifest = readManifest(manifestPath);\n\n\tconst emptyManifest = {\n\t\tversion: \"1\" as const,\n\t\tgeneratedAt: new Date().toISOString(),\n\t\troutes: [],\n\t};\n\n\tconst routeModes: ForgeRouteModeEntry[] = (manifest ?? emptyManifest).routes\n\t\t.filter((r) => r.kind === \"page\" || r.kind === \"api\")\n\t\t.map((r) => {\n\t\t\tconst resolved = resolveRouteMode(r.urlPattern, options.renderConfig);\n\t\t\treturn {\n\t\t\t\tpattern: r.urlPattern,\n\t\t\t\tmode: resolved.mode,\n\t\t\t\tsource: resolved.source,\n\t\t\t};\n\t\t});\n\n\treturn {\n\t\tbuildDir: options.outDir,\n\t\tartifacts,\n\t\tmanifest: manifest ?? emptyManifest,\n\t\trouteModes,\n\t\ttotalSizeBytes: artifacts.reduce((sum, a) => sum + a.sizeBytes, 0),\n\t\tinspectedAt: new Date().toISOString(),\n\t};\n}\n\nexport function printInspectReport(report: ForgeInspectReport): void {\n\tconst sep = \"─\".repeat(58);\n\tconsole.log(`\n \\n Rakta.js Forge - Build Inspection\n `);\n\tconsole.log(`\n ${sep}\n `);\n\tconsole.log(`\n Directory: ${report.buildDir}\n `);\n\tconsole.log(`\n Inspected: ${report.inspectedAt}\n `);\n\tconsole.log(`\n Total size: ${formatBytes(report.totalSizeBytes)}\\n\n `);\n\n\tif (report.artifacts.length > 0) {\n\t\tconsole.log(\"Artifacts:\");\n\t\tfor (const artifact of report.artifacts) {\n\t\t\tconst rel = artifact.outputPath\n\t\t\t\t.replace(report.buildDir, \".\")\n\t\t\t\t.replace(/\\\\/g, \"/\");\n\t\t\tconsole.log(`\n [${artifact.kind.padEnd(10)}] \n ${rel.padEnd(38)} \n ${formatBytes(artifact.sizeBytes)}`);\n\t\t}\n\t\tconsole.log(\"\");\n\t}\n\n\tif (report.routeModes.length > 0) {\n\t\tconsole.log(\"Route Render Modes:\");\n\t\tfor (const rm of report.routeModes) {\n\t\t\tconst src = rm.source === \"route-override\" ? \"(override)\" : \"(default) \";\n\t\t\tconsole.log(`\n ${rm.mode.toUpperCase().padEnd(8)} \n ${rm.pattern.padEnd(36)} ${src}`);\n\t\t}\n\t\tconsole.log(\"\");\n\t}\n\n\tconsole.log(`${sep}\\n`);\n}\n",
9
9
  "import type {\n\tRenderConfig,\n\tRenderMode,\n\tRenderModeDescriptor,\n\tResolvedRouteMode,\n} from \"./types\";\n\nexport const RENDER_MODE_DESCRIPTORS: Readonly<\n\tRecord<RenderMode, RenderModeDescriptor>\n> = {\n\tcsr: {\n\t\tmode: \"csr\",\n\t\tlabel: \"Client-Side Rendering\",\n\t\tshortLabel: \"CSR\",\n\t\tdescription:\n\t\t\t\"React renders entirely in the browser. The server sends a minimal HTML shell with a JS bundle. No server required at runtime.\",\n\t\tserverRequired: false,\n\t\tbuildTimeGenerated: false,\n\t\tclientHydration: true,\n\t\troadmap: false,\n\t},\n\tssr: {\n\t\tmode: \"ssr\",\n\t\tlabel: \"Server-Side Rendering\",\n\t\tshortLabel: \"SSR\",\n\t\tdescription:\n\t\t\t\"React renders to HTML on the server per request. The client receives full HTML and then hydrates. Requires a running Node/Bun server.\",\n\t\tserverRequired: true,\n\t\tbuildTimeGenerated: false,\n\t\tclientHydration: true,\n\t\troadmap: true, // Roadmap: v0.2.0\n\t},\n\tssg: {\n\t\tmode: \"ssg\",\n\t\tlabel: \"Static Site Generation\",\n\t\tshortLabel: \"SSG\",\n\t\tdescription:\n\t\t\t\"Pages are fully rendered at build time. Output is static HTML files. No server required at runtime.\",\n\t\tserverRequired: false,\n\t\tbuildTimeGenerated: true,\n\t\tclientHydration: false,\n\t\troadmap: true, // Roadmap: v0.2.0\n\t},\n\tcsg: {\n\t\tmode: \"csg\",\n\t\tlabel: \"Client-Side Generation\",\n\t\tshortLabel: \"CSG\",\n\t\tdescription:\n\t\t\t\"A static shell is generated at build time, data is fetched and rendered on the client. Combines SSG speed with dynamic data.\",\n\t\tserverRequired: false,\n\t\tbuildTimeGenerated: true,\n\t\tclientHydration: true,\n\t\troadmap: true, // Roadmap: v0.2.0\n\t},\n\tspa: {\n\t\tmode: \"spa\",\n\t\tlabel: \"Single Page Application\",\n\t\tshortLabel: \"SPA\",\n\t\tdescription:\n\t\t\t\"A single HTML entry point is served for all routes. React handles all routing client-side. Equivalent to a standard Vite SPA.\",\n\t\tserverRequired: false,\n\t\tbuildTimeGenerated: false,\n\t\tclientHydration: true,\n\t\troadmap: false,\n\t},\n\thybrid: {\n\t\tmode: \"hybrid\",\n\t\tlabel: \"Hybrid Rendering\",\n\t\tshortLabel: \"Hybrid\",\n\t\tdescription:\n\t\t\t\"Different routes use different render modes. Configured via the `render.routes` map in rakta.config.ts. The top-level mode is the fallback.\",\n\t\tserverRequired: false,\n\t\tbuildTimeGenerated: false,\n\t\tclientHydration: true,\n\t\troadmap: false,\n\t},\n};\n\n/**\n * Returns true if the pathname matches a given route pattern.\n * Supports exact paths and simple :param segments (e.g. /blog/:slug).\n */\nfunction pathMatchesPattern(pathname: string, pattern: string): boolean {\n\tif (pattern === pathname) return true;\n\n\tconst patternParts = pattern.split(\"/\");\n\tconst pathParts = pathname.split(\"/\");\n\n\tif (patternParts.length !== pathParts.length) return false;\n\n\tfor (let i = 0; i < patternParts.length; i++) {\n\t\tconst pp = patternParts[i];\n\t\tconst path = pathParts[i];\n\t\tif (pp === undefined || path === undefined) return false;\n\t\tif (pp.startsWith(\":\")) continue; // dynamic segment — always matches\n\t\tif (pp !== path) return false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Resolves the render mode for the given pathname using the provided config.\n * Route-specific overrides take priority. The most specific (longest) matching\n * pattern wins. Falls back to `config.defaultMode`.\n */\nexport function resolveRouteMode(\n\tpathname: string,\n\tconfig: RenderConfig,\n): ResolvedRouteMode {\n\tconst patterns = Object.keys(config.routes).sort(\n\t\t(a, b) => b.length - a.length, // longest pattern first (most specific)\n\t);\n\n\tfor (const pattern of patterns) {\n\t\tconst overrideMode = config.routes[pattern];\n\t\tif (overrideMode !== undefined && pathMatchesPattern(pathname, pattern)) {\n\t\t\treturn {\n\t\t\t\troutePath: pathname,\n\t\t\t\tmode: overrideMode,\n\t\t\t\tsource: \"route-override\",\n\t\t\t};\n\t\t}\n\t}\n\n\treturn {\n\t\troutePath: pathname,\n\t\tmode: config.defaultMode,\n\t\tsource: \"default\",\n\t};\n}\n\nexport function getModeDescriptor(mode: RenderMode): RenderModeDescriptor {\n\treturn RENDER_MODE_DESCRIPTORS[mode];\n}\n\nexport function isRoadmapMode(mode: RenderMode): boolean {\n\treturn RENDER_MODE_DESCRIPTORS[mode].roadmap;\n}\n\nexport function requiresServer(mode: RenderMode): boolean {\n\treturn RENDER_MODE_DESCRIPTORS[mode].serverRequired;\n}\n\nexport function isBuildTimeMode(mode: RenderMode): boolean {\n\treturn RENDER_MODE_DESCRIPTORS[mode].buildTimeGenerated;\n}\n",
10
10
  "import { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { scanRoutes } from \"./scanner\";\nimport type { RouteManifest } from \"./types\";\n\nexport function generateManifest(appDir: string): RouteManifest {\n\tconst routes = scanRoutes({ appDir });\n\n\tconst manifest: RouteManifest = {\n\t\tversion: \"1\",\n\t\tgeneratedAt: new Date().toISOString(),\n\t\troutes,\n\t};\n\n\treturn manifest;\n}\n\nexport function writeManifest(\n\tmanifest: RouteManifest,\n\toutputPath: string,\n): void {\n\twriteFileSync(outputPath, JSON.stringify(manifest, null, 2), \"utf-8\");\n}\n\nexport function readManifest(manifestPath: string): RouteManifest | null {\n\tif (!existsSync(manifestPath)) return null;\n\n\tconst raw = readFileSync(manifestPath, \"utf-8\");\n\n\tconst parsed: unknown = JSON.parse(raw);\n\tif (\n\t\ttypeof parsed !== \"object\" ||\n\t\tparsed === null ||\n\t\t!(\"version\" in parsed) ||\n\t\t!(\"routes\" in parsed)\n\t) {\n\t\treturn null;\n\t}\n\n\treturn parsed as RouteManifest;\n}\n\nexport function printManifest(manifest: RouteManifest): void {\n\tconst pageRoutes = manifest.routes.filter((route) => route.kind === \"page\");\n\tconst apiRoutes = manifest.routes.filter((route) => route.kind === \"api\");\n\tconst layoutRoutes = manifest.routes.filter(\n\t\t(route) => route.kind === \"layout\",\n\t);\n\tconst specialRoutes = manifest.routes.filter((route) =>\n\t\t[\"loading\", \"not-found\", \"error\"].includes(route.kind),\n\t);\n\n\tconst line = \"─\".repeat(56);\n\n\tconsole.log(`\\n Rakta.js Route Manifest`);\n\tconsole.log(` ${line}`);\n\tconsole.log(` Generated: ${manifest.generatedAt}`);\n\tconsole.log(` Total: ${manifest.routes.length} routes\\n`);\n\n\tif (pageRoutes.length > 0) {\n\t\tconsole.log(\" Pages:\");\n\t\tfor (const route of pageRoutes) {\n\t\t\tconst dynamic = route.isDynamic\n\t\t\t\t? ` [params: ${route.paramNames.join(\", \")}]`\n\t\t\t\t: \"\";\n\t\t\tconsole.log(` GET ${route.urlPattern}${dynamic}`);\n\t\t}\n\t\tconsole.log(\"\");\n\t}\n\n\tif (apiRoutes.length > 0) {\n\t\tconsole.log(\" API Routes:\");\n\t\tfor (const route of apiRoutes) {\n\t\t\tconst dynamic = route.isDynamic\n\t\t\t\t? ` [params: ${route.paramNames.join(\", \")}]`\n\t\t\t\t: \"\";\n\t\t\tconsole.log(` ANY ${route.urlPattern}${dynamic}`);\n\t\t}\n\t\tconsole.log(\"\");\n\t}\n\n\tif (layoutRoutes.length > 0) {\n\t\tconsole.log(\" Layouts:\");\n\t\tfor (const route of layoutRoutes) {\n\t\t\tconsole.log(\n\t\t\t\t` ${route.urlPattern === \"/\" ? \"root\" : route.urlPattern}`,\n\t\t\t);\n\t\t}\n\t\tconsole.log(\"\");\n\t}\n\n\tif (specialRoutes.length > 0) {\n\t\tconsole.log(\" Special:\");\n\t\tfor (const route of specialRoutes) {\n\t\t\tconsole.log(` [${route.kind}] ${route.filePath}`);\n\t\t}\n\t\tconsole.log(\"\");\n\t}\n\n\tconsole.log(` ${line}\\n`);\n}\n",
11
11
  "import { existsSync, readdirSync, statSync } from \"node:fs\";\nimport { join, relative } from \"node:path\";\nimport type { RouteKind, RouteManifestEntry, RouteSegment } from \"./types.js\";\n\nconst FILE_TO_KIND: Record<string, RouteKind> = {\n\t\"page.tsx\": \"page\",\n\t\"page.ts\": \"page\",\n\t\"page.jsx\": \"page\",\n\t\"page.js\": \"page\",\n\t\"layout.tsx\": \"layout\",\n\t\"layout.ts\": \"layout\",\n\t\"layout.jsx\": \"layout\",\n\t\"layout.js\": \"layout\",\n\t\"loading.tsx\": \"loading\",\n\t\"loading.ts\": \"loading\",\n\t\"loading.jsx\": \"loading\",\n\t\"loading.js\": \"loading\",\n\t\"notFound.tsx\": \"notFound\",\n\t\"notFound.ts\": \"notFound\",\n\t\"notFound.jsx\": \"notFound\",\n\t\"notFound.js\": \"notFound\",\n\t\"error.tsx\": \"error\",\n\t\"error.ts\": \"error\",\n\t\"error.jsx\": \"error\",\n\t\"error.js\": \"error\",\n\t\"route.ts\": \"api\",\n\t\"route.js\": \"api\",\n};\n\nfunction parseSegment(raw: string): RouteSegment {\n\tconst isDynamic = raw.startsWith(\"[\") && raw.endsWith(\"]\");\n\tconst paramName = isDynamic ? raw.slice(1, -1) : \"\";\n\n\treturn { raw, isDynamic, paramName };\n}\n\nfunction collectParamNames(segments: RouteSegment[]): string[] {\n\treturn segments\n\t\t.filter((segment) => segment.isDynamic && segment.paramName.length > 0)\n\t\t.map((segment) => segment.paramName);\n}\n\nfunction segmentsToUrlPattern(segments: RouteSegment[]): string {\n\tif (segments.length === 0) return \"/\";\n\tconst parts = segments.map((segment) =>\n\t\tsegment.isDynamic && segment.paramName\n\t\t\t? `:${segment.paramName}`\n\t\t\t: segment.raw,\n\t);\n\treturn `/${parts.join(\"/\")}`;\n}\n\nfunction scanDirectory(\n\tdirPath: string,\n\tappRoot: string,\n\tresults: RouteManifestEntry[],\n): void {\n\tif (!existsSync(dirPath)) return;\n\n\tconst entries = readdirSync(dirPath);\n\n\tfor (const entryName of entries) {\n\t\tconst fullPath = join(dirPath, entryName);\n\t\tconst stats = statSync(fullPath);\n\n\t\tif (stats.isDirectory()) {\n\t\t\tscanDirectory(fullPath, appRoot, results);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!stats.isFile()) continue;\n\n\t\tconst kind = FILE_TO_KIND[entryName];\n\t\tif (!kind) continue;\n\n\t\t// Get path relative to app root, using forward slashes\n\t\tconst relativePath = relative(appRoot, fullPath).replace(/\\\\/g, \"/\");\n\n\t\t// Extract directory segments (all parts except the filename)\n\t\tconst dirRelative = relative(appRoot, dirPath).replace(/\\\\/g, \"/\");\n\t\tconst rawSegments = dirRelative === \"\" ? [] : dirRelative.split(\"/\");\n\n\t\tconst segments: RouteSegment[] = rawSegments.map(parseSegment);\n\t\tconst urlPattern = segmentsToUrlPattern(segments);\n\t\tconst paramNames = collectParamNames(segments);\n\t\tconst isDynamic = paramNames.length > 0;\n\n\t\tresults.push({\n\t\t\tfilePath: relativePath,\n\t\t\turlPattern,\n\t\t\tkind,\n\t\t\tsegments,\n\t\t\tisDynamic,\n\t\t\tparamNames,\n\t\t});\n\t}\n}\n\nexport interface ScanOptions {\n\tappDir: string;\n}\n\nexport function scanRoutes(options: ScanOptions): RouteManifestEntry[] {\n\tconst results: RouteManifestEntry[] = [];\n\tscanDirectory(options.appDir, options.appDir, results);\n\n\t// Sort: static routes before dynamic, shorter patterns first\n\tresults.sort((routeA, routeB) => {\n\t\tif (routeA.isDynamic !== routeB.isDynamic) {\n\t\t\treturn routeA.isDynamic ? 1 : -1;\n\t\t}\n\t\treturn routeA.urlPattern.localeCompare(routeB.urlPattern);\n\t});\n\n\treturn results;\n}\n",
12
12
  "import { isAbsolute, join } from \"node:path\";\nimport { loadConfig } from \"../config/loadConfig\";\nimport { buildProject } from \"../forge/build\";\n\nfunction resolveProjectPath(cwd: string, pathValue: string): string {\n\tif (isAbsolute(pathValue)) {\n\t\treturn pathValue;\n\t}\n\n\treturn join(cwd, pathValue);\n}\n\nexport async function buildCommand(cwd: string = process.cwd()): Promise<void> {\n\tconst projectConfig = await loadConfig(cwd);\n\n\tconst appDirectory = projectConfig.appDir ?? \"app\";\n\tconst publicDirectory = projectConfig.publicDir ?? \"public\";\n\tconst outputDirectory = projectConfig.build.outDir ?? \"dist\";\n\tconst entryFile = projectConfig.build.entryPoint ?? \"entry.client.tsx\";\n\n\tconst entryPoint = resolveProjectPath(join(cwd, appDirectory), entryFile);\n\tconst outDir = resolveProjectPath(cwd, outputDirectory);\n\n\tconsole.log(\"\\n Building Rakta.js application...\\n\");\n\n\tconst buildResult = await buildProject({\n\t\tprojectRoot: cwd,\n\t\tentryPoint,\n\t\toutDir,\n\t\tappDir: join(cwd, appDirectory),\n\t\tpublicDir: join(cwd, publicDirectory),\n\t\tappName: projectConfig.appName,\n\t\tsourcemap: projectConfig.build.sourcemap ?? false,\n\t\tminify: projectConfig.build.minify ?? true,\n\t\tsplitting: projectConfig.build.splitting ?? false,\n\t\ttarget: projectConfig.build.target ?? \"browser\",\n\t\trenderConfig: projectConfig.render,\n\t});\n\n\tif (!buildResult.success) {\n\t\tconsole.error(\"Build failed:\");\n\n\t\tfor (const buildError of buildResult.errors) {\n\t\t\tconsole.error(`${buildError}`);\n\t\t}\n\n\t\tprocess.exit(1);\n\t}\n\n\tconsole.log(`Build complete in ${buildResult.buildMs}ms`);\n\tconsole.log(`Output: ${outDir}`);\n\tconsole.log(`Artifacts: ${buildResult.artifacts.length}\\n`);\n}\n",
13
13
  "import { existsSync, mkdirSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { generateManifest, writeManifest } from \"../router/manifest\";\nimport { writeClientEntry } from \"./clientEntry\";\nimport type {\n\tForgeBuildArtifact,\n\tForgeBuildOptions,\n\tForgeBuildResult,\n} from \"./types\";\n\n/**\n * Runs the Rakta.js Forge build pipeline.\n * Uses Bun.build for bundling. Generates a route manifest alongside the bundle.\n */\nexport async function buildProject(\n\toptions: ForgeBuildOptions,\n): Promise<ForgeBuildResult> {\n\tconst startMs = Date.now();\n\tconst artifacts: ForgeBuildArtifact[] = [];\n\tconst errors: string[] = [];\n\n\tmkdirSync(resolve(options.outDir), { recursive: true });\n\n\t// Generate and write route manifest\n\tconst manifest = generateManifest(options.appDir);\n\tconst manifestPath = join(options.outDir, \"route-manifest.json\");\n\twriteManifest(manifest, manifestPath);\n\n\tconst manifestContent = JSON.stringify(manifest);\n\tartifacts.push({\n\t\toutputPath: manifestPath,\n\t\tsizeBytes: new TextEncoder().encode(manifestContent).byteLength,\n\t\tkind: \"manifest\",\n\t});\n\n\tconst entryPoint = existsSync(options.entryPoint)\n\t\t? options.entryPoint\n\t\t: writeClientEntry({\n\t\t\t\tprojectRoot: options.projectRoot,\n\t\t\t\tappDir: options.appDir,\n\t\t\t\tworkDir: join(options.projectRoot, \".rakta\"),\n\t\t\t\tmanifest,\n\t\t\t});\n\n\t// Build JavaScript bundle\n\tconst buildResult = await Bun.build({\n\t\tentrypoints: [entryPoint],\n\t\toutdir: options.outDir,\n\t\ttarget: options.target,\n\t\tminify: options.minify,\n\t\tsourcemap: options.sourcemap ? \"external\" : \"none\",\n\t\tsplitting: options.splitting,\n\t\tnaming: {\n\t\t\tentry: \"app.[ext]\",\n\t\t\tchunk: \"chunks/[name]-[hash].[ext]\",\n\t\t\tasset: \"assets/[name]-[hash].[ext]\",\n\t\t},\n\t});\n\n\tif (!buildResult.success) {\n\t\tfor (const log of buildResult.logs) {\n\t\t\terrors.push(log.message);\n\t\t}\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\tartifacts,\n\t\t\tmanifest,\n\t\t\tbuildMs: Date.now() - startMs,\n\t\t\terrors,\n\t\t};\n\t}\n\n\tfor (const output of buildResult.outputs) {\n\t\tartifacts.push({\n\t\t\toutputPath: output.path,\n\t\t\tsizeBytes: output.size,\n\t\t\tkind: output.path.endsWith(\".css\") ? \"stylesheet\" : \"script\",\n\t\t});\n\t}\n\n\treturn {\n\t\tsuccess: true,\n\t\tartifacts,\n\t\tmanifest,\n\t\tbuildMs: Date.now() - startMs,\n\t\terrors: [],\n\t};\n}\n",
14
- "import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport type { RouteManifest, RouteManifestEntry } from \"../router/types\";\n\nexport interface ClientEntryOptions {\n\treadonly projectRoot: string;\n\treadonly appDir: string;\n\treadonly workDir: string;\n\treadonly manifest: RouteManifest;\n}\n\nfunction toModuleSpecifier(fromFile: string, targetFile: string): string {\n\tconst relativePath = relative(dirname(fromFile), targetFile).replace(\n\t\t/\\\\/g,\n\t\t\"/\",\n\t);\n\n\tif (relativePath.startsWith(\".\")) {\n\t\treturn relativePath;\n\t}\n\n\treturn `./${relativePath}`;\n}\n\nfunction toCssImportSpecifier(\n\tentryPath: string,\n\tprojectRoot: string,\n): string | null {\n\tconst candidates = [\n\t\tjoin(projectRoot, \"styles\", \"globals.css\"),\n\t\tjoin(projectRoot, \"styles\", \"globals.scss\"),\n\t\tjoin(projectRoot, \"styles\", \"globals.sass\"),\n\t];\n\n\tconst stylePath = candidates.find((candidate) => existsSync(candidate));\n\n\tif (!stylePath) {\n\t\treturn null;\n\t}\n\n\treturn toModuleSpecifier(entryPath, stylePath);\n}\n\nfunction getPageRoutes(manifest: RouteManifest): RouteManifestEntry[] {\n\treturn manifest.routes.filter((route) => route.kind === \"page\");\n}\n\nfunction buildRouteImports(\n\tentryPath: string,\n\tappDir: string,\n\tpageRoutes: ReadonlyArray<RouteManifestEntry>,\n): string {\n\tconst routeEntries = pageRoutes\n\t\t.map((route) => {\n\t\t\tconst pagePath = join(appDir, route.filePath);\n\t\t\treturn ` ${JSON.stringify(route.urlPattern)}: () => import(\"${toModuleSpecifier(entryPath, pagePath)}\"),`;\n\t\t})\n\t\t.join(\"\\n\");\n\n\treturn `const routeModules = {\\n${routeEntries}\\n} as const;`;\n}\n\nfunction buildRouteTable(\n\tpageRoutes: ReadonlyArray<RouteManifestEntry>,\n): string {\n\tconst routeEntries = pageRoutes\n\t\t.map(\n\t\t\t(route) =>\n\t\t\t\t` ${JSON.stringify(route.urlPattern)}: routeModules[${JSON.stringify(route.urlPattern)}],`,\n\t\t)\n\t\t.join(\"\\n\");\n\n\treturn `const routes = {\\n${routeEntries}\\n} as const;`;\n}\n\nfunction findExistingModule(\n\tbasePathWithoutExtension: string,\n): string | undefined {\n\tconst candidates = [\".tsx\", \".ts\", \".jsx\", \".js\"].map(\n\t\t(extension) => `${basePathWithoutExtension}${extension}`,\n\t);\n\n\treturn candidates.find((candidate) => existsSync(candidate));\n}\n\nfunction buildStarterGlobalLoaders(entryPath: string, appDir: string): string {\n\tconst mascotPath = findExistingModule(\n\t\tjoin(appDir, \"components\", \"raktaShrimpMascot\"),\n\t);\n\tconst gamePath = findExistingModule(\n\t\tjoin(appDir, \"components\", \"shrimpRunGame\"),\n\t);\n\tconst loaders: string[] = [];\n\n\tif (mascotPath !== undefined) {\n\t\tloaders.push(` const mascotModule = await import(\"${toModuleSpecifier(entryPath, mascotPath)}\");\n (globalThis as typeof globalThis & Record<string, unknown>).RaktaShrimpMascot = mascotModule.default;`);\n\t}\n\n\tif (gamePath !== undefined) {\n\t\tloaders.push(` const gameModule = await import(\"${toModuleSpecifier(entryPath, gamePath)}\");\n (globalThis as typeof globalThis & Record<string, unknown>).ShrimpRunGame = gameModule.default;`);\n\t}\n\n\tif (loaders.length === 0) {\n\t\treturn `async function loadRaktaGlobals(): Promise<void> {\n return;\n}`;\n\t}\n\n\treturn `async function loadRaktaGlobals(): Promise<void> {\n${loaders.join(\"\\n\\n\")}\n}`;\n}\n\nfunction buildClientEntrySource(\n\toptions: ClientEntryOptions,\n\tentryPath: string,\n): string {\n\tconst pageRoutes = getPageRoutes(options.manifest);\n\tconst routeModules = buildRouteImports(entryPath, options.appDir, pageRoutes);\n\tconst routeTable = buildRouteTable(pageRoutes);\n\tconst cssImportSpecifier = toCssImportSpecifier(\n\t\tentryPath,\n\t\toptions.projectRoot,\n\t);\n\tconst cssImport =\n\t\tcssImportSpecifier !== null ? `import \"${cssImportSpecifier}\";\\n` : \"\";\n\tconst starterGlobalLoaders = buildStarterGlobalLoaders(\n\t\tentryPath,\n\t\toptions.appDir,\n\t);\n\n\treturn `import React, { useEffect, useState } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport * as ReactHooks from \"react\";\n${cssImport}\n(globalThis as typeof globalThis & Record<string, unknown>).useCallback = ReactHooks.useCallback;\n(globalThis as typeof globalThis & Record<string, unknown>).useEffect = ReactHooks.useEffect;\n(globalThis as typeof globalThis & Record<string, unknown>).useRef = ReactHooks.useRef;\n(globalThis as typeof globalThis & Record<string, unknown>).useState = ReactHooks.useState;\n\n${starterGlobalLoaders}\n\nawait loadRaktaGlobals();\n\n${routeModules}\n\n${routeTable}\n\ntype RoutePath = keyof typeof routes;\ntype PageModule = { default: React.ComponentType };\n\nfunction normalizePathname(pathname: string): string {\n if (pathname.length > 1 && pathname.endsWith(\"/\")) {\n return pathname.slice(0, -1);\n }\n\n return pathname;\n}\n\nfunction resolveRouteLoader(pathname: string): () => Promise<PageModule> {\n const normalizedPathname = normalizePathname(pathname) as RoutePath;\n\n return routes[normalizedPathname] ?? routes[\"/\"];\n}\n\nfunction navigate(to: string): void {\n window.history.pushState({ source: \"rakta-click\", to }, \"\", to);\n window.dispatchEvent(new PopStateEvent(\"popstate\", { state: { to } }));\n}\n\nfunction App(): React.ReactElement {\n const [pathname, setPathname] = useState(() => window.location.pathname);\n const [Page, setPage] = useState<React.ComponentType | null>(null);\n const [routeError, setRouteError] = useState<Error | null>(null);\n\n useEffect(() => {\n function handlePopState(): void {\n setPathname(window.location.pathname);\n }\n\n function handleClick(event: MouseEvent): void {\n const target = event.target;\n\n if (!(target instanceof Element)) {\n return;\n }\n\n const clickElement = target.closest(\"click\");\n\n if (!clickElement) {\n return;\n }\n\n const to = clickElement.getAttribute(\"to\");\n\n if (!to || to.startsWith(\"http://\") || to.startsWith(\"https://\")) {\n return;\n }\n\n event.preventDefault();\n navigate(to);\n setPathname(window.location.pathname);\n }\n\n window.addEventListener(\"popstate\", handlePopState);\n document.addEventListener(\"click\", handleClick);\n\n return () => {\n window.removeEventListener(\"popstate\", handlePopState);\n document.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n useEffect(() => {\n let isCurrent = true;\n\n setPage(null);\n setRouteError(null);\n\n resolveRouteLoader(pathname)()\n .then((pageModule) => {\n if (isCurrent) {\n setPage(() => pageModule.default);\n }\n })\n .catch((caughtError) => {\n const error =\n caughtError instanceof Error\n ? caughtError\n : new Error(String(caughtError));\n\n console.error(\"[Rakta.js] Failed to load route:\", error);\n\n if (isCurrent) {\n setRouteError(error);\n }\n });\n\n return () => {\n isCurrent = false;\n };\n }, [pathname]);\n\n if (routeError) {\n return React.createElement(\"main\", {\n style: {\n minHeight: \"100vh\",\n padding: \"32px\",\n background: \"#050505\",\n color: \"#f8fafc\",\n fontFamily: \"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\",\n },\n },\n React.createElement(\"p\", {\n style: {\n margin: \"0 0 12px\",\n color: \"#fb7185\",\n fontSize: \"12px\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n },\n }, \"Rakta.js route failed to load\"),\n React.createElement(\"pre\", {\n style: {\n margin: 0,\n whiteSpace: \"pre-wrap\",\n lineHeight: 1.6,\n },\n }, routeError.stack ?? routeError.message),\n );\n }\n\n if (!Page) {\n return React.createElement(\"main\", {\n style: {\n minHeight: \"100vh\",\n display: \"grid\",\n placeItems: \"center\",\n background: \"#050505\",\n color: \"#f8fafc\",\n fontFamily: \"ui-sans-serif, system-ui, sans-serif\",\n },\n }, \"Loading Rakta.js...\");\n }\n\n return React.createElement(Page);\n}\n\nconst rootElement = document.getElementById(\"rakta-root\");\n\nif (!rootElement) {\n throw new Error(\"Rakta.js root element #rakta-root was not found.\");\n}\n\ncreateRoot(rootElement).render(React.createElement(App));\n`;\n}\n\nexport function writeClientEntry(options: ClientEntryOptions): string {\n\tmkdirSync(options.workDir, { recursive: true });\n\n\tconst entryPath = join(options.workDir, \"client-entry.tsx\");\n\tconst entrySource = buildClientEntrySource(options, entryPath);\n\n\twriteFileSync(entryPath, entrySource, \"utf-8\");\n\n\treturn entryPath;\n}\n",
15
- "import { join } from \"node:path\";\nimport { loadConfig } from \"../config/loadConfig\";\nimport { startDevServer } from \"../forge/devServer\";\n\nexport async function devCommand(cwd: string = process.cwd()): Promise<void> {\n\tconst config = await loadConfig(cwd);\n\n\tconsole.log(`\\n Starting Rakta.js dev server...\\n`);\n\n\tconst server = await startDevServer({\n\t\tprojectRoot: cwd,\n\t\tport: config.port,\n\t\thost: config.server.hostname ?? \"localhost\",\n\t\tappDir: join(cwd, config.appDir),\n\t\tpublicDir: join(cwd, config.publicDir),\n\t\tappName: config.appName,\n\t\tseo: config.seo,\n\t\trenderConfig: config.render,\n\t});\n\n\tconsole.log(` Ready at ${server.url}\\n`);\n}\n",
16
- "import { existsSync, readFileSync, statSync, watch } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { resolveRouteMode } from \"../render/modes\";\nimport { render } from \"../render/renderer\";\nimport { generateManifest } from \"../router/manifest\";\nimport { matchRoute } from \"../router/matcher\";\nimport { writeClientEntry } from \"./clientEntry\";\nimport type { ForgeDevServerHandle, ForgeDevServerOptions } from \"./types\";\n\nconst DEFAULT_DEV_PORT = 3000;\n\nconst MIME_MAP: Readonly<Record<string, string>> = {\n\t\".html\": \"text/html; charset=utf-8\",\n\t\".js\": \"application/javascript; charset=utf-8\",\n\t\".mjs\": \"application/javascript; charset=utf-8\",\n\t\".css\": \"text/css; charset=utf-8\",\n\t\".json\": \"application/json; charset=utf-8\",\n\t\".png\": \"image/png\",\n\t\".jpg\": \"image/jpeg\",\n\t\".jpeg\": \"image/jpeg\",\n\t\".webp\": \"image/webp\",\n\t\".svg\": \"image/svg+xml\",\n\t\".ico\": \"image/x-icon\",\n\t\".woff\": \"font/woff\",\n\t\".woff2\": \"font/woff2\",\n\t\".ttf\": \"font/ttf\",\n};\n\nfunction resolveMime(filePath: string): string {\n\tconst ext = filePath.slice(filePath.lastIndexOf(\".\")).toLowerCase();\n\treturn MIME_MAP[ext] ?? \"application/octet-stream\";\n}\n\nfunction resolveDevPort(port: number): number {\n\treturn port > 0 ? port : DEFAULT_DEV_PORT;\n}\n\nfunction isReadableFile(filePath: string): boolean {\n\treturn existsSync(filePath) && statSync(filePath).isFile();\n}\n\nasync function buildDevClientBundle(\n\toptions: ForgeDevServerOptions,\n\tmanifest: ReturnType<typeof generateManifest>,\n): Promise<string> {\n\tconst workDir = join(options.projectRoot, \".rakta\");\n\tconst clientOutDir = join(workDir, \"dev\");\n\tconst clientEntry = writeClientEntry({\n\t\tprojectRoot: options.projectRoot,\n\t\tappDir: options.appDir,\n\t\tworkDir,\n\t\tmanifest,\n\t});\n\n\tconst buildResult = await Bun.build({\n\t\tentrypoints: [clientEntry],\n\t\toutdir: clientOutDir,\n\t\ttarget: \"browser\",\n\t\tsourcemap: \"external\",\n\t\tnaming: {\n\t\t\tentry: \"app.[ext]\",\n\t\t\tchunk: \"chunks/[name]-[hash].[ext]\",\n\t\t\tasset: \"assets/[name]-[hash].[ext]\",\n\t\t},\n\t});\n\n\tif (!buildResult.success) {\n\t\tconst buildErrors = buildResult.logs\n\t\t\t.map((buildLog) => buildLog.message)\n\t\t\t.join(\"\\n\");\n\n\t\tthrow new Error(`Failed to build Rakta.js client bundle.\\n${buildErrors}`);\n\t}\n\n\treturn clientOutDir;\n}\n\ninterface ApiRouteExports {\n\tGET?: (request: Request) => Promise<Response>;\n\tPOST?: (request: Request) => Promise<Response>;\n\tPUT?: (request: Request) => Promise<Response>;\n\tPATCH?: (request: Request) => Promise<Response>;\n\tDELETE?: (request: Request) => Promise<Response>;\n\tHEAD?: (request: Request) => Promise<Response>;\n\tOPTIONS?: (request: Request) => Promise<Response>;\n}\n\n/**\n * Starts the Rakta.js Forge development server.\n * Powered by Bun.serve. HMR is a roadmap feature (v0.2.0).\n */\nexport async function startDevServer(\n\toptions: ForgeDevServerOptions,\n): Promise<ForgeDevServerHandle> {\n\tconst manifest = generateManifest(options.appDir);\n\tconst resolvedPort = resolveDevPort(options.port);\n\tconst clientOutDir = await buildDevClientBundle(options, manifest);\n\n\tconst server = Bun.serve({\n\t\tport: resolvedPort,\n\t\thostname: options.host,\n\t\twebsocket: {\n\t\t\topen(ws) {\n\t\t\t\tws.subscribe(\"livereload\");\n\t\t\t},\n\t\t\tmessage() {},\n\t\t},\n\n\t\tasync fetch(request: Request, server): Promise<Response> {\n\t\t\tif (request.url.endsWith(\"/__livereload\")) {\n\t\t\t\tconst upgraded = server.upgrade(request);\n\t\t\t\tif (upgraded) {\n\t\t\t\t\treturn new Response(null);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst url = new URL(request.url);\n\t\t\tconst { pathname } = url;\n\n\t\t\tif (clientOutDir.length > 0) {\n\t\t\t\tconst clientBundlePath = join(clientOutDir, pathname);\n\n\t\t\t\tif (isReadableFile(clientBundlePath)) {\n\t\t\t\t\treturn new Response(readFileSync(clientBundlePath), {\n\t\t\t\t\t\theaders: { \"Content-Type\": resolveMime(clientBundlePath) },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Serve static files from public dir\n\t\t\tconst publicPath = join(options.publicDir, pathname);\n\t\t\tif (isReadableFile(publicPath)) {\n\t\t\t\treturn new Response(readFileSync(publicPath), {\n\t\t\t\t\theaders: { \"Content-Type\": resolveMime(pathname) },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Match API routes\n\t\t\tconst apiMatch = matchRoute(\n\t\t\t\tpathname,\n\t\t\t\tmanifest.routes.filter((route) => route.kind === \"api\"),\n\t\t\t);\n\n\t\t\tif (apiMatch) {\n\t\t\t\tconst modulePath = join(options.appDir, apiMatch.entry.filePath);\n\t\t\t\tconst routeModule = (await import(modulePath)) as ApiRouteExports;\n\t\t\t\tconst method = request.method.toUpperCase() as keyof ApiRouteExports;\n\t\t\t\tconst handler = routeModule[method];\n\n\t\t\t\tif (typeof handler !== \"function\") {\n\t\t\t\t\treturn new Response(\"Method not allowed\", { status: 405 });\n\t\t\t\t}\n\n\t\t\t\treturn await handler(request);\n\t\t\t}\n\n\t\t\t// Resolve render mode and serve HTML shell for page routes\n\t\t\tconst resolved = resolveRouteMode(pathname, options.renderConfig);\n\n\t\t\tconst searchParams: Record<string, string> = {};\n\t\t\turl.searchParams.forEach((value, key) => {\n\t\t\t\tsearchParams[key] = value;\n\t\t\t});\n\n\t\t\tconst requestHeaders: Record<string, string> = {};\n\t\t\trequest.headers.forEach((value, key) => {\n\t\t\t\trequestHeaders[key] = value;\n\t\t\t});\n\n\t\t\tconst result = await render(\n\t\t\t\t{\n\t\t\t\t\troutePath: pathname,\n\t\t\t\t\tmode: resolved.mode,\n\t\t\t\t\tparams: {},\n\t\t\t\t\tsearchParams,\n\t\t\t\t\trequestHeaders,\n\t\t\t\t\ttimestampMs: Date.now(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tappName: options.appName,\n\t\t\t\t\ttitle: options.seo.defaultTitle,\n\t\t\t\t\tdescription: options.seo.defaultDescription,\n\t\t\t\t\tscriptPath: \"/app.js\",\n\t\t\t\t\tcssPath: \"/app.css\",\n\t\t\t\t\tlang: \"en\",\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tif (result.kind === \"failure\") {\n\t\t\t\treturn new Response(result.reason, { status: result.httpStatus });\n\t\t\t}\n\n\t\t\tconst liveReloadScript = `\n<script>\n (function() {\n const ws = new WebSocket(\"ws://\" + location.host + \"/__livereload\");\n ws.onmessage = () => location.reload();\n })();\n</script>`;\n\t\t\tconst finalHtml = result.html.replace(\n\t\t\t\t\"</body>\",\n\t\t\t\t`${liveReloadScript}</body>`,\n\t\t\t);\n\n\t\t\treturn new Response(finalHtml, {\n\t\t\t\tstatus: result.httpStatus,\n\t\t\t\theaders: result.responseHeaders,\n\t\t\t});\n\t\t},\n\t});\n\n\tconst serverPort =\n\t\ttypeof server.port === \"number\" ? server.port : resolvedPort;\n\n\ttry {\n\t\twatch(options.appDir, { recursive: true }, () => {\n\t\t\tserver.publish(\"livereload\", \"reload\");\n\t\t});\n\t} catch {\n\t\t// Ignore watch errors if dir doesn't exist\n\t}\n\n\treturn {\n\t\tport: serverPort,\n\t\thost: options.host,\n\t\turl: `http://${options.host}:${serverPort}`,\n\t\tstop: () => server.stop(),\n\t};\n}\n",
14
+ "import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport type { RouteManifest, RouteManifestEntry } from \"../router/types\";\n\nexport interface ClientEntryOptions {\n\treadonly projectRoot: string;\n\treadonly appDir: string;\n\treadonly workDir: string;\n\treadonly manifest: RouteManifest;\n}\n\nfunction toModuleSpecifier(fromFile: string, targetFile: string): string {\n\tconst relativePath = relative(dirname(fromFile), targetFile).replace(\n\t\t/\\\\/g,\n\t\t\"/\",\n\t);\n\n\tif (relativePath.startsWith(\".\")) {\n\t\treturn relativePath;\n\t}\n\n\treturn `./${relativePath}`;\n}\n\nfunction toCssImportSpecifier(\n\tentryPath: string,\n\tprojectRoot: string,\n): string | null {\n\tconst candidates = [\n\t\tjoin(projectRoot, \"styles\", \"globals.css\"),\n\t\tjoin(projectRoot, \"styles\", \"globals.scss\"),\n\t\tjoin(projectRoot, \"styles\", \"globals.sass\"),\n\t];\n\n\tconst stylePath = candidates.find((candidate) => existsSync(candidate));\n\n\tif (!stylePath) {\n\t\treturn null;\n\t}\n\n\treturn toModuleSpecifier(entryPath, stylePath);\n}\n\nfunction getPageRoutes(manifest: RouteManifest): RouteManifestEntry[] {\n\treturn manifest.routes.filter((route) => route.kind === \"page\");\n}\n\nfunction buildRouteImports(\n\tentryPath: string,\n\tappDir: string,\n\tpageRoutes: ReadonlyArray<RouteManifestEntry>,\n): string {\n\tconst routeEntries = pageRoutes\n\t\t.map((route) => {\n\t\t\tconst pagePath = join(appDir, route.filePath);\n\t\t\treturn ` ${JSON.stringify(route.urlPattern)}: () => import(\"${toModuleSpecifier(entryPath, pagePath)}\"),`;\n\t\t})\n\t\t.join(\"\\n\");\n\n\treturn `const routeModules = {\\n${routeEntries}\\n} as const;`;\n}\n\nfunction buildRouteTable(\n\tpageRoutes: ReadonlyArray<RouteManifestEntry>,\n): string {\n\tconst routeEntries = pageRoutes\n\t\t.map(\n\t\t\t(route) =>\n\t\t\t\t` ${JSON.stringify(route.urlPattern)}: routeModules[${JSON.stringify(route.urlPattern)}],`,\n\t\t)\n\t\t.join(\"\\n\");\n\n\treturn `const routes = {\\n${routeEntries}\\n} as const;`;\n}\n\nfunction findExistingModule(\n\tbasePathWithoutExtension: string,\n): string | undefined {\n\tconst candidates = [\".tsx\", \".ts\", \".jsx\", \".js\"].map(\n\t\t(extension) => `${basePathWithoutExtension}${extension}`,\n\t);\n\n\treturn candidates.find((candidate) => existsSync(candidate));\n}\n\nfunction buildStarterGlobalLoaders(entryPath: string, appDir: string): string {\n\tconst mascotPath = findExistingModule(\n\t\tjoin(appDir, \"components\", \"raktaShrimpMascot\"),\n\t);\n\tconst gamePath = findExistingModule(\n\t\tjoin(appDir, \"components\", \"shrimpRunGame\"),\n\t);\n\tconst loaders: string[] = [];\n\n\tif (mascotPath !== undefined) {\n\t\tloaders.push(` const mascotModule = await import(\"${toModuleSpecifier(entryPath, mascotPath)}\");\n (globalThis as typeof globalThis & Record<string, unknown>).RaktaShrimpMascot = mascotModule.default;`);\n\t}\n\n\tif (gamePath !== undefined) {\n\t\tloaders.push(` const gameModule = await import(\"${toModuleSpecifier(entryPath, gamePath)}\");\n (globalThis as typeof globalThis & Record<string, unknown>).ShrimpRunGame = gameModule.default;`);\n\t}\n\n\tif (loaders.length === 0) {\n\t\treturn `async function loadRaktaGlobals(): Promise<void> {\n return;\n}`;\n\t}\n\n\treturn `async function loadRaktaGlobals(): Promise<void> {\n${loaders.join(\"\\n\\n\")}\n}`;\n}\n\nfunction buildClientEntrySource(\n\toptions: ClientEntryOptions,\n\tentryPath: string,\n): string {\n\tconst pageRoutes = getPageRoutes(options.manifest);\n\tconst routeModules = buildRouteImports(entryPath, options.appDir, pageRoutes);\n\tconst routeTable = buildRouteTable(pageRoutes);\n\tconst cssImportSpecifier = toCssImportSpecifier(\n\t\tentryPath,\n\t\toptions.projectRoot,\n\t);\n\tconst cssImport =\n\t\tcssImportSpecifier !== null ? `import \"${cssImportSpecifier}\";\\n` : \"\";\n\tconst starterGlobalLoaders = buildStarterGlobalLoaders(\n\t\tentryPath,\n\t\toptions.appDir,\n\t);\n\n\treturn `import React, { useEffect, useState } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport * as ReactHooks from \"react\";\n${cssImport}\n(globalThis as typeof globalThis & Record<string, unknown>).useCallback = ReactHooks.useCallback;\n(globalThis as typeof globalThis & Record<string, unknown>).useEffect = ReactHooks.useEffect;\n(globalThis as typeof globalThis & Record<string, unknown>).useRef = ReactHooks.useRef;\n(globalThis as typeof globalThis & Record<string, unknown>).useState = ReactHooks.useState;\n\n${starterGlobalLoaders}\n\nawait loadRaktaGlobals();\n\n${routeModules}\n\n${routeTable}\n\ntype RoutePath = keyof typeof routes;\ntype PageModule = { default: React.ComponentType };\n\nfunction normalizePathname(pathname: string): string {\n if (pathname.length > 1 && pathname.endsWith(\"/\")) {\n return pathname.slice(0, -1);\n }\n\n return pathname;\n}\n\nfunction resolveRouteLoader(pathname: string): () => Promise<PageModule> {\n const normalizedPathname = normalizePathname(pathname) as RoutePath;\n\n return routes[normalizedPathname] ?? routes[\"/\"];\n}\n\nfunction navigate(to: string): void {\n window.history.pushState({ source: \"rakta-click\", to }, \"\", to);\n window.dispatchEvent(new PopStateEvent(\"popstate\", { state: { to } }));\n}\n\nfunction App(): React.ReactElement {\n const [pathname, setPathname] = useState(() => window.location.pathname);\n const [Page, setPage] = useState<React.ComponentType | null>(null);\n\n useEffect(() => {\n function handlePopState(): void {\n setPathname(window.location.pathname);\n }\n\n function handleClick(event: MouseEvent): void {\n const target = event.target;\n\n if (!(target instanceof Element)) {\n return;\n }\n\n const clickElement = target.closest(\"click\");\n\n if (!clickElement) {\n return;\n }\n\n const to = clickElement.getAttribute(\"to\");\n\n if (!to || to.startsWith(\"http://\") || to.startsWith(\"https://\")) {\n return;\n }\n\n event.preventDefault();\n navigate(to);\n setPathname(window.location.pathname);\n }\n\n window.addEventListener(\"popstate\", handlePopState);\n document.addEventListener(\"click\", handleClick);\n\n return () => {\n window.removeEventListener(\"popstate\", handlePopState);\n document.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n useEffect(() => {\n let isCurrent = true;\n\n resolveRouteLoader(pathname)().then((pageModule) => {\n if (isCurrent) {\n setPage(() => pageModule.default);\n }\n });\n\n return () => {\n isCurrent = false;\n };\n }, [pathname]);\n\n if (!Page) {\n return React.createElement(\"main\", {\n style: {\n minHeight: \"100vh\",\n display: \"grid\",\n placeItems: \"center\",\n background: \"#050505\",\n color: \"#f8fafc\",\n fontFamily: \"ui-sans-serif, system-ui, sans-serif\",\n },\n }, \"Loading Rakta.js...\");\n }\n\n return React.createElement(Page);\n}\n\nconst rootElement = document.getElementById(\"rakta-root\");\n\nif (!rootElement) {\n throw new Error(\"Rakta.js root element #rakta-root was not found.\");\n}\n\ncreateRoot(rootElement).render(React.createElement(App));\n`;\n}\n\nexport function writeClientEntry(options: ClientEntryOptions): string {\n\tmkdirSync(options.workDir, { recursive: true });\n\n\tconst entryPath = join(options.workDir, \"client-entry.tsx\");\n\tconst entrySource = buildClientEntrySource(options, entryPath);\n\n\twriteFileSync(entryPath, entrySource, \"utf-8\");\n\n\treturn entryPath;\n}\n",
15
+ "import { join } from \"node:path\";\nimport { loadConfig } from \"../config/loadConfig\";\nimport { startDevServer } from \"../forge/devServer\";\n\nexport async function devCommand(cwd: string = process.cwd()): Promise<void> {\n\tconst config = await loadConfig(cwd);\n\n\tconsole.log(`\\n Starting Rakta.js dev server...\\n`);\n\n\tconst server = await startDevServer({\n\t\tprojectRoot: cwd,\n\t\tport: config.port,\n\t\thost: config.server.hostname ?? \"0.0.0.0\",\n\t\tappDir: join(cwd, config.appDir),\n\t\tpublicDir: join(cwd, config.publicDir),\n\t\tappName: config.appName,\n\t\tseo: config.seo,\n\t\trenderConfig: config.render,\n\t});\n\n\tconsole.log(` Ready at ${server.url}\\n`);\n}\n",
16
+ "import { existsSync, readFileSync, statSync, watch } from \"node:fs\";\nimport { join, relative } from \"node:path\";\nimport { resolveRouteMode } from \"../render/modes\";\nimport { render } from \"../render/renderer\";\nimport { generateManifest } from \"../router/manifest\";\nimport { matchRoute } from \"../router/matcher\";\nimport { writeClientEntry } from \"./clientEntry\";\nimport type { ForgeDevServerHandle, ForgeDevServerOptions } from \"./types\";\n\nconst DEFAULT_DEV_PORT = 3000;\n\nconst MIME_MAP: Readonly<Record<string, string>> = {\n\t\".html\": \"text/html; charset=utf-8\",\n\t\".js\": \"application/javascript; charset=utf-8\",\n\t\".mjs\": \"application/javascript; charset=utf-8\",\n\t\".css\": \"text/css; charset=utf-8\",\n\t\".json\": \"application/json; charset=utf-8\",\n\t\".png\": \"image/png\",\n\t\".jpg\": \"image/jpeg\",\n\t\".jpeg\": \"image/jpeg\",\n\t\".webp\": \"image/webp\",\n\t\".svg\": \"image/svg+xml\",\n\t\".ico\": \"image/x-icon\",\n\t\".woff\": \"font/woff\",\n\t\".woff2\": \"font/woff2\",\n\t\".ttf\": \"font/ttf\",\n};\n\nfunction resolveMime(filePath: string): string {\n\tconst ext = filePath.slice(filePath.lastIndexOf(\".\")).toLowerCase();\n\treturn MIME_MAP[ext] ?? \"application/octet-stream\";\n}\n\nfunction resolveDevPort(port: number): number {\n\treturn port > 0 ? port : DEFAULT_DEV_PORT;\n}\n\nfunction isReadableFile(filePath: string): boolean {\n\treturn existsSync(filePath) && statSync(filePath).isFile();\n}\n\nasync function buildDevClientBundle(\n\toptions: ForgeDevServerOptions,\n\tmanifest: ReturnType<typeof generateManifest>,\n): Promise<string> {\n\tconst workDir = join(options.projectRoot, \".rakta\");\n\tconst clientOutDir = join(workDir, \"dev\");\n\tconst clientEntry = writeClientEntry({\n\t\tprojectRoot: options.projectRoot,\n\t\tappDir: options.appDir,\n\t\tworkDir,\n\t\tmanifest,\n\t});\n\n\tconst buildResult = await Bun.build({\n\t\tentrypoints: [clientEntry],\n\t\toutdir: clientOutDir,\n\t\ttarget: \"browser\",\n\t\tsourcemap: \"external\",\n\t\tnaming: {\n\t\t\tentry: \"app.[ext]\",\n\t\t\tchunk: \"chunks/[name]-[hash].[ext]\",\n\t\t\tasset: \"assets/[name]-[hash].[ext]\",\n\t\t},\n\t});\n\n\tif (!buildResult.success) {\n\t\tconst buildErrors = buildResult.logs\n\t\t\t.map((buildLog) => buildLog.message)\n\t\t\t.join(\"\\n\");\n\n\t\tthrow new Error(`Failed to build Rakta.js client bundle.\\n${buildErrors}`);\n\t}\n\n\treturn clientOutDir;\n}\n\ninterface ApiRouteExports {\n\tGET?: (request: Request) => Promise<Response>;\n\tPOST?: (request: Request) => Promise<Response>;\n\tPUT?: (request: Request) => Promise<Response>;\n\tPATCH?: (request: Request) => Promise<Response>;\n\tDELETE?: (request: Request) => Promise<Response>;\n\tHEAD?: (request: Request) => Promise<Response>;\n\tOPTIONS?: (request: Request) => Promise<Response>;\n}\n\n/**\n * Starts the Rakta.js Forge development server.\n * Powered by Bun.serve. HMR is a roadmap feature (v0.2.0).\n */\nexport async function startDevServer(\n\toptions: ForgeDevServerOptions,\n): Promise<ForgeDevServerHandle> {\n\tconst manifest = generateManifest(options.appDir);\n\tconst resolvedPort = resolveDevPort(options.port);\n\tlet clientOutDir = await buildDevClientBundle(options, manifest);\n\tlet isClientBundleDirty = false;\n\tlet clientBundleRebuild: Promise<void> | null = null;\n\n\tfunction shouldReloadForPath(changedPath: string | null): boolean {\n\t\tif (changedPath === null) return true;\n\n\t\tconst relativePath = relative(options.projectRoot, changedPath).replace(\n\t\t\t/\\\\/g,\n\t\t\t\"/\",\n\t\t);\n\n\t\treturn (\n\t\t\trelativePath.length > 0 &&\n\t\t\t!relativePath.startsWith(\"node_modules/\") &&\n\t\t\t!relativePath.startsWith(\".rakta/\") &&\n\t\t\t!relativePath.startsWith(\"dist/\")\n\t\t);\n\t}\n\n\tasync function ensureFreshClientBundle(): Promise<void> {\n\t\tif (!isClientBundleDirty) return;\n\n\t\tclientBundleRebuild ??= buildDevClientBundle(options, manifest).then(\n\t\t\t(nextClientOutDir) => {\n\t\t\t\tclientOutDir = nextClientOutDir;\n\t\t\t\tisClientBundleDirty = false;\n\t\t\t\tclientBundleRebuild = null;\n\t\t\t},\n\t\t\t(caughtError: unknown) => {\n\t\t\t\tclientBundleRebuild = null;\n\t\t\t\tthrow caughtError;\n\t\t\t},\n\t\t);\n\n\t\tawait clientBundleRebuild;\n\t}\n\n\tconst server = Bun.serve({\n\t\tport: resolvedPort,\n\t\thostname: options.host,\n\t\twebsocket: {\n\t\t\topen(ws) {\n\t\t\t\tws.subscribe(\"livereload\");\n\t\t\t},\n\t\t\tmessage() {},\n\t\t},\n\n\t\tasync fetch(request: Request, server): Promise<Response> {\n\t\t\tif (request.url.endsWith(\"/__livereload\")) {\n\t\t\t\tconst upgraded = server.upgrade(request);\n\t\t\t\tif (upgraded) {\n\t\t\t\t\treturn new Response(null);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst url = new URL(request.url);\n\t\t\tconst { pathname } = url;\n\n\t\t\tif (clientOutDir.length > 0) {\n\t\t\t\tawait ensureFreshClientBundle();\n\t\t\t\tconst clientBundlePath = join(clientOutDir, pathname);\n\n\t\t\t\tif (isReadableFile(clientBundlePath)) {\n\t\t\t\t\treturn new Response(readFileSync(clientBundlePath), {\n\t\t\t\t\t\theaders: { \"Content-Type\": resolveMime(clientBundlePath) },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Serve static files from public dir\n\t\t\tconst publicPath = join(options.publicDir, pathname);\n\t\t\tif (isReadableFile(publicPath)) {\n\t\t\t\treturn new Response(readFileSync(publicPath), {\n\t\t\t\t\theaders: { \"Content-Type\": resolveMime(pathname) },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Match API routes\n\t\t\tconst apiMatch = matchRoute(\n\t\t\t\tpathname,\n\t\t\t\tmanifest.routes.filter((route) => route.kind === \"api\"),\n\t\t\t);\n\n\t\t\tif (apiMatch) {\n\t\t\t\tconst modulePath = join(options.appDir, apiMatch.entry.filePath);\n\t\t\t\tconst routeModule = (await import(modulePath)) as ApiRouteExports;\n\t\t\t\tconst method = request.method.toUpperCase() as keyof ApiRouteExports;\n\t\t\t\tconst handler = routeModule[method];\n\n\t\t\t\tif (typeof handler !== \"function\") {\n\t\t\t\t\treturn new Response(\"Method not allowed\", { status: 405 });\n\t\t\t\t}\n\n\t\t\t\treturn await handler(request);\n\t\t\t}\n\n\t\t\t// Resolve render mode and serve HTML shell for page routes\n\t\t\tawait ensureFreshClientBundle();\n\t\t\tconst resolved = resolveRouteMode(pathname, options.renderConfig);\n\n\t\t\tconst searchParams: Record<string, string> = {};\n\t\t\turl.searchParams.forEach((value, key) => {\n\t\t\t\tsearchParams[key] = value;\n\t\t\t});\n\n\t\t\tconst requestHeaders: Record<string, string> = {};\n\t\t\trequest.headers.forEach((value, key) => {\n\t\t\t\trequestHeaders[key] = value;\n\t\t\t});\n\n\t\t\tconst result = await render(\n\t\t\t\t{\n\t\t\t\t\troutePath: pathname,\n\t\t\t\t\tmode: resolved.mode,\n\t\t\t\t\tparams: {},\n\t\t\t\t\tsearchParams,\n\t\t\t\t\trequestHeaders,\n\t\t\t\t\ttimestampMs: Date.now(),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tappName: options.appName,\n\t\t\t\t\ttitle: options.seo.defaultTitle,\n\t\t\t\t\tdescription: options.seo.defaultDescription,\n\t\t\t\t\tscriptPath: \"/app.js\",\n\t\t\t\t\tcssPath: \"/app.css\",\n\t\t\t\t\tlang: \"en\",\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tif (result.kind === \"failure\") {\n\t\t\t\treturn new Response(result.reason, { status: result.httpStatus });\n\t\t\t}\n\n\t\t\tconst liveReloadScript = `\n<script>\n (function() {\n const ws = new WebSocket(\"ws://\" + location.host + \"/__livereload\");\n ws.onmessage = () => location.reload();\n })();\n</script>`;\n\t\t\tconst finalHtml = result.html.replace(\n\t\t\t\t\"</body>\",\n\t\t\t\t`${liveReloadScript}</body>`,\n\t\t\t);\n\n\t\t\treturn new Response(finalHtml, {\n\t\t\t\tstatus: result.httpStatus,\n\t\t\t\theaders: result.responseHeaders,\n\t\t\t});\n\t\t},\n\t});\n\n\tconst serverPort =\n\t\ttypeof server.port === \"number\" ? server.port : resolvedPort;\n\n\ttry {\n\t\twatch(options.projectRoot, { recursive: true }, (_eventType, filename) => {\n\t\t\tconst changedPath =\n\t\t\t\ttypeof filename === \"string\"\n\t\t\t\t\t? join(options.projectRoot, filename)\n\t\t\t\t\t: null;\n\n\t\t\tif (shouldReloadForPath(changedPath)) {\n\t\t\t\tisClientBundleDirty = true;\n\t\t\t\tserver.publish(\"livereload\", \"reload\");\n\t\t\t}\n\t\t});\n\t} catch {\n\t\t// Some filesystems do not support recursive watch. The dev server still runs.\n\t}\n\n\tconst displayHost =\n\t\toptions.host === \"0.0.0.0\" || options.host === \"::\"\n\t\t\t? \"localhost\"\n\t\t\t: options.host;\n\n\treturn {\n\t\tport: serverPort,\n\t\thost: options.host,\n\t\turl: `http://${displayHost}:${serverPort}`,\n\t\tstop: () => server.stop(),\n\t};\n}\n",
17
17
  "import { isRoadmapMode } from \"./modes\";\nimport type {\n\tRenderContext,\n\tRenderFailure,\n\tRenderMode,\n\tRenderResult,\n\tRenderSuccess,\n} from \"./types\";\n\nexport interface RendererOptions {\n\treadonly appName: string;\n\treadonly title?: string | undefined;\n\treadonly description?: string | undefined;\n\treadonly faviconPath?: string | undefined;\n\treadonly scriptPath: string;\n\treadonly cssPath: string;\n\treadonly lang: string;\n}\n\nfunction buildHtmlShell(options: RendererOptions): string {\n\tconst title = options.title ?? options.appName;\n\tconst faviconPath = options.faviconPath ?? \"/favicon.ico\";\n\tconst descriptionMeta =\n\t\toptions.description !== undefined\n\t\t\t? `<meta name=\"description\" content=\"${options.description}\" />`\n\t\t\t: \"\";\n\n\treturn `\n <!DOCTYPE html>\n <html lang=\"${options.lang}\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>${title}</title>\n ${descriptionMeta}\n <link rel=\"icon\" href=\"${faviconPath}\" sizes=\"any\" type=\"image/x-icon\" />\n <link rel=\"shortcut icon\" href=\"${faviconPath}\" type=\"image/x-icon\" />\n <link rel=\"stylesheet\" href=\"${options.cssPath}\" />\n </head>\n <body>\n <div id=\"rakta-root\"></div>\n <script type=\"module\" src=\"${options.scriptPath}\"></script>\n </body>\n </html>`;\n}\n\nfunction makeSuccess(\n\thtml: string,\n\tmode: RenderMode,\n\trenderMs: number,\n\thttpStatus: number = 200,\n\tfromCache: boolean = false,\n): RenderSuccess {\n\treturn {\n\t\tkind: \"success\",\n\t\thtml,\n\t\tmode,\n\t\thttpStatus,\n\t\tresponseHeaders: { \"Content-Type\": \"text/html; charset=utf-8\" },\n\t\tfromCache,\n\t\trenderMs,\n\t};\n}\n\nfunction makeFailure(\n\treason: string,\n\tmode: RenderMode,\n\thttpStatus: number = 500,\n): RenderFailure {\n\treturn { kind: \"failure\", reason, mode, httpStatus };\n}\n\n/**\n * Render a page using the resolved mode from the context.\n * Roadmap modes (ssr, ssg, csg) fall back to a CSR shell in v0.1.0.\n */\nexport async function render(\n\tcontext: RenderContext,\n\toptions: RendererOptions,\n): Promise<RenderResult> {\n\tconst startMs = Date.now();\n\n\t// Roadmap modes: fall back to CSR shell with a warning\n\tif (isRoadmapMode(context.mode)) {\n\t\tconsole.warn(\n\t\t\t`[Rakta.js] Render mode \"${context.mode}\" is a roadmap feature (v0.2.0). ` +\n\t\t\t\t`Falling back to CSR for: ${context.routePath}`,\n\t\t);\n\t\treturn makeSuccess(buildHtmlShell(options), \"csr\", Date.now() - startMs);\n\t}\n\n\tswitch (context.mode) {\n\t\tcase \"csr\":\n\t\tcase \"spa\":\n\t\t\treturn makeSuccess(\n\t\t\t\tbuildHtmlShell(options),\n\t\t\t\tcontext.mode,\n\t\t\t\tDate.now() - startMs,\n\t\t\t);\n\n\t\tcase \"hybrid\":\n\t\t\t// Hybrid resolution happens upstream in Tide. If it reaches the renderer\n\t\t\t// as hybrid, the route had no specific override - fall back to CSR.\n\t\t\treturn makeSuccess(buildHtmlShell(options), \"csr\", Date.now() - startMs);\n\n\t\tcase \"ssr\":\n\t\tcase \"ssg\":\n\t\tcase \"csg\":\n\t\t\t// These are already caught by isRoadmapMode above, but TypeScript\n\t\t\t// requires an exhaustive switch for the RenderMode union.\n\t\t\treturn makeFailure(\n\t\t\t\t`Render mode \"${context.mode}\" is not yet implemented.`,\n\t\t\t\tcontext.mode,\n\t\t\t\t501,\n\t\t\t);\n\t}\n}\n\nexport function renderNotFound(options: RendererOptions): RenderSuccess {\n\treturn makeSuccess(buildHtmlShell(options), \"csr\", 0, 404);\n}\n\nexport function renderServerError(\n\treason: string,\n\tmode: RenderMode,\n): RenderFailure {\n\treturn makeFailure(reason, mode, 500);\n}\n",
18
18
  "import type {\n\tMatchedRoute,\n\tRouteManifestEntry,\n\tRouteSegment,\n} from \"./types.js\";\n\nfunction escapeRegex(text: string): string {\n\treturn text.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction buildPatternRegex(segments: RouteSegment[]): {\n\tregex: RegExp;\n\tparamNames: string[];\n} {\n\tconst paramNames: string[] = [];\n\n\tconst parts = segments.map((segment) => {\n\t\tif (segment.isDynamic && segment.paramName) {\n\t\t\tparamNames.push(segment.paramName);\n\t\t\t// Match any non-slash sequence for the param\n\t\t\treturn \"([^/]+)\";\n\t\t}\n\t\treturn escapeRegex(segment.raw);\n\t});\n\n\tconst pattern = parts.length === 0 ? \"\" : `/${parts.join(\"/\")}`;\n\tconst regex = new RegExp(`^${pattern || \"/\"}$`);\n\n\treturn { regex, paramNames };\n}\n\nexport function matchRoute(\n\tpathname: string,\n\troutes: RouteManifestEntry[],\n): MatchedRoute | null {\n\t// Normalize pathname: strip trailing slash unless root\n\tconst normalized =\n\t\tpathname !== \"/\" && pathname.endsWith(\"/\")\n\t\t\t? pathname.slice(0, -1)\n\t\t\t: pathname;\n\n\tfor (const entry of routes) {\n\t\t// Only match pages and api routes\n\t\tif (entry.kind !== \"page\" && entry.kind !== \"api\") continue;\n\n\t\tconst { regex, paramNames } = buildPatternRegex(entry.segments);\n\t\tconst match = regex.exec(normalized);\n\n\t\tif (!match) continue;\n\n\t\tconst params: Record<string, string> = {};\n\t\tparamNames.forEach((name, index) => {\n\t\t\tconst captured = match[index + 1];\n\t\t\tif (captured !== undefined) {\n\t\t\t\tparams[name] = decodeURIComponent(captured);\n\t\t\t}\n\t\t});\n\n\t\treturn { entry, params };\n\t}\n\n\treturn null;\n}\n\nexport function findLayoutsForPathname(\n\tpathname: string,\n\troutes: RouteManifestEntry[],\n): RouteManifestEntry[] {\n\tconst layoutRoutes = routes.filter((route) => route.kind === \"layout\");\n\n\treturn layoutRoutes.filter((layout) => {\n\t\tif (layout.urlPattern === \"/\") return true;\n\t\treturn (\n\t\t\tpathname === layout.urlPattern ||\n\t\t\tpathname.startsWith(`${layout.urlPattern}/`)\n\t\t);\n\t});\n}\n\nexport function findSpecialRoute(\n\tkind: \"loading\" | \"not-found\" | \"error\",\n\tpathname: string,\n\troutes: RouteManifestEntry[],\n): RouteManifestEntry | null {\n\tconst candidates = routes.filter((route) => route.kind === kind);\n\n\t// Find the most specific match (longest matching prefix)\n\tlet best: RouteManifestEntry | null = null;\n\tlet bestLength = -1;\n\n\tfor (const candidate of candidates) {\n\t\tconst prefix = candidate.urlPattern === \"/\" ? \"\" : candidate.urlPattern;\n\t\tif (pathname.startsWith(prefix) && prefix.length > bestLength) {\n\t\t\tbest = candidate;\n\t\t\tbestLength = prefix.length;\n\t\t}\n\t}\n\n\treturn best;\n}\n",
19
19
  "// CLI: bun rakta doctor\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { loadConfig } from \"../config/loadConfig\";\n\ninterface CheckResult {\n\treadonly label: string;\n\treadonly passed: boolean;\n\treadonly note?: string;\n}\n\nexport async function doctorCommand(\n\tcwd: string = process.cwd(),\n): Promise<void> {\n\tconst config = await loadConfig(cwd);\n\n\tconst checks: CheckResult[] = [\n\t\t{\n\t\t\tlabel: \"Bun runtime\",\n\t\t\tpassed: typeof Bun !== \"undefined\",\n\t\t\tnote: typeof Bun !== \"undefined\" ? `v${Bun.version}` : \"not found\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"rakta.config.ts\",\n\t\t\tpassed:\n\t\t\t\texistsSync(join(cwd, \"rakta.config.ts\")) ||\n\t\t\t\texistsSync(join(cwd, \"rakta.config.js\")),\n\t\t},\n\t\t{\n\t\t\tlabel: `app/ directory (${config.appDir})`,\n\t\t\tpassed: existsSync(join(cwd, config.appDir)),\n\t\t},\n\t\t{\n\t\t\tlabel: \"app/page.tsx (root page)\",\n\t\t\tpassed: existsSync(join(cwd, config.appDir, \"page.tsx\")),\n\t\t},\n\t\t{\n\t\t\tlabel: \"app/layout.tsx (root layout)\",\n\t\t\tpassed: existsSync(join(cwd, config.appDir, \"layout.tsx\")),\n\t\t},\n\t\t{\n\t\t\tlabel: `public/ directory (${config.publicDir})`,\n\t\t\tpassed: existsSync(join(cwd, config.publicDir)),\n\t\t},\n\t\t{\n\t\t\tlabel: \"package.json\",\n\t\t\tpassed: existsSync(join(cwd, \"package.json\")),\n\t\t},\n\t\t{\n\t\t\tlabel: \"tsconfig.json\",\n\t\t\tpassed: existsSync(join(cwd, \"tsconfig.json\")),\n\t\t},\n\t];\n\n\tconst sep = \"─\".repeat(52);\n\tconsole.log(`\\n Rakta.js Doctor`);\n\tconsole.log(` ${sep}`);\n\n\tlet allPassed = true;\n\tfor (const check of checks) {\n\t\tconst icon = check.passed ? \"pass\" : \"FAIL\";\n\t\tconst note = check.note ? ` (${check.note})` : \"\";\n\t\tconsole.log(` [${icon}] ${check.label}${note}`);\n\t\tif (!check.passed) allPassed = false;\n\t}\n\n\tconsole.log(` ${sep}`);\n\n\tif (allPassed) {\n\t\tconsole.log(\" All checks passed.\\n\");\n\t} else {\n\t\tconsole.log(\" Some checks failed. Review the output above.\\n\");\n\t\tprocess.exit(1);\n\t}\n}\n",
@@ -28,7 +28,7 @@
28
28
  "import { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { type RenderConfig, render, resolveRouteMode } from \"../render\";\nimport { generateManifest, matchRoute } from \"../router\";\nimport {\n\tbuildErrorResponse,\n\tbuildHtmlResponse,\n\tcreateRuntimeContext,\n} from \"./runtime\";\nimport type { TideAdapter, TideAdapterConfig } from \"./types\";\n\nconst STATIC_MIME_TYPES: Readonly<Record<string, string>> = {\n\t\".js\": \"application/javascript; charset=utf-8\",\n\t\".ts\": \"application/javascript; charset=utf-8\",\n\t\".css\": \"text/css; charset=utf-8\",\n\t\".json\": \"application/json; charset=utf-8\",\n\t\".png\": \"image/png\",\n\t\".jpg\": \"image/jpeg\",\n\t\".jpeg\": \"image/jpeg\",\n\t\".webp\": \"image/webp\",\n\t\".svg\": \"image/svg+xml\",\n\t\".ico\": \"image/x-icon\",\n\t\".woff\": \"font/woff\",\n\t\".woff2\": \"font/woff2\",\n};\n\ntype ApiRouteHandler = (request: Request) => Response | Promise<Response>;\n\ninterface ApiRouteExports {\n\treadonly GET?: ApiRouteHandler;\n\treadonly POST?: ApiRouteHandler;\n\treadonly PUT?: ApiRouteHandler;\n\treadonly PATCH?: ApiRouteHandler;\n\treadonly DELETE?: ApiRouteHandler;\n\treadonly HEAD?: ApiRouteHandler;\n\treadonly OPTIONS?: ApiRouteHandler;\n}\n\nfunction mimeForPath(filePath: string): string {\n\tconst extensionIndex = filePath.lastIndexOf(\".\");\n\n\tif (extensionIndex < 0) {\n\t\treturn \"application/octet-stream\";\n\t}\n\n\tconst extension = filePath.slice(extensionIndex).toLowerCase();\n\n\treturn STATIC_MIME_TYPES[extension] ?? \"application/octet-stream\";\n}\n\nfunction normalizeStaticPath(pathname: string): string {\n\tconst pathnameWithoutLeadingSlash = pathname.replace(/^\\/+/, \"\");\n\n\tif (pathnameWithoutLeadingSlash.length > 0) {\n\t\treturn pathnameWithoutLeadingSlash;\n\t}\n\n\treturn \"index.html\";\n}\n\nfunction isReadableFile(filePath: string): boolean {\n\treturn existsSync(filePath) && statSync(filePath).isFile();\n}\n\nfunction isApiRouteExports(value: unknown): value is ApiRouteExports {\n\tif (typeof value !== \"object\" || value === null) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nfunction getApiRouteHandler(\n\trouteExports: ApiRouteExports,\n\tmethod: string,\n): ApiRouteHandler | undefined {\n\tif (method === \"GET\") {\n\t\treturn routeExports.GET;\n\t}\n\n\tif (method === \"POST\") {\n\t\treturn routeExports.POST;\n\t}\n\n\tif (method === \"PUT\") {\n\t\treturn routeExports.PUT;\n\t}\n\n\tif (method === \"PATCH\") {\n\t\treturn routeExports.PATCH;\n\t}\n\n\tif (method === \"DELETE\") {\n\t\treturn routeExports.DELETE;\n\t}\n\n\tif (method === \"HEAD\") {\n\t\treturn routeExports.HEAD;\n\t}\n\n\tif (method === \"OPTIONS\") {\n\t\treturn routeExports.OPTIONS;\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Creates the Bun Tide adapter.\n * Handles static files, API routes, and page rendering.\n */\nexport function createBunAdapter(\n\tadapterConfig: TideAdapterConfig,\n\trenderConfig: RenderConfig,\n): TideAdapter {\n\tconst manifest = generateManifest(adapterConfig.appDir);\n\tconst searchDirectories = [adapterConfig.publicDir, adapterConfig.outDir];\n\n\tlet serverInstance: ReturnType<typeof Bun.serve> | undefined;\n\n\tasync function handle(request: Request): Promise<Response> {\n\t\tconst url = new URL(request.url);\n\t\tconst { pathname } = url;\n\t\tconst staticPathname = normalizeStaticPath(pathname);\n\n\t\tfor (const searchDirectory of searchDirectories) {\n\t\t\tconst filePath = join(searchDirectory, staticPathname);\n\n\t\t\tif (isReadableFile(filePath)) {\n\t\t\t\treturn new Response(readFileSync(filePath), {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"Content-Type\": mimeForPath(filePath),\n\t\t\t\t\t\t\"Cache-Control\": \"public, max-age=31536000, immutable\",\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst apiRoutes = manifest.routes.filter((route) => route.kind === \"api\");\n\t\tconst apiMatch = matchRoute(pathname, apiRoutes);\n\n\t\tif (apiMatch) {\n\t\t\tconst modulePath = join(adapterConfig.appDir, apiMatch.entry.filePath);\n\n\t\t\tconst routeModule: unknown = await import(modulePath);\n\n\t\t\tif (!isApiRouteExports(routeModule)) {\n\t\t\t\treturn new Response(\"Invalid API route module\", {\n\t\t\t\t\tstatus: 500,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst handler = getApiRouteHandler(\n\t\t\t\trouteModule,\n\t\t\t\trequest.method.toUpperCase(),\n\t\t\t);\n\n\t\t\tif (!handler) {\n\t\t\t\treturn new Response(\"Method not allowed\", {\n\t\t\t\t\tstatus: 405,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn await handler(request);\n\t\t}\n\n\t\tconst resolvedRouteMode = resolveRouteMode(pathname, renderConfig);\n\n\t\tconst runtimeContext = createRuntimeContext(\n\t\t\trequest,\n\t\t\turl,\n\t\t\t{},\n\t\t\tresolvedRouteMode.mode,\n\t\t);\n\n\t\tconst renderResult = await render(\n\t\t\t{\n\t\t\t\troutePath: runtimeContext.pathname,\n\t\t\t\tmode: runtimeContext.resolvedMode,\n\t\t\t\tparams: runtimeContext.params,\n\t\t\t\tsearchParams: runtimeContext.searchParams,\n\t\t\t\trequestHeaders: runtimeContext.requestHeaders,\n\t\t\t\ttimestampMs: runtimeContext.timestampMs,\n\t\t\t},\n\t\t\t{\n\t\t\t\tappName: adapterConfig.appName,\n\t\t\t\ttitle: adapterConfig.seo.defaultTitle,\n\t\t\t\tdescription: adapterConfig.seo.defaultDescription,\n\t\t\t\tscriptPath: \"/app.js\",\n\t\t\t\tcssPath: \"/app.css\",\n\t\t\t\tlang: \"en\",\n\t\t\t},\n\t\t);\n\n\t\tif (renderResult.kind === \"failure\") {\n\t\t\treturn buildErrorResponse(renderResult.reason, renderResult.httpStatus);\n\t\t}\n\n\t\treturn buildHtmlResponse(renderResult.html, renderResult.httpStatus);\n\t}\n\n\treturn {\n\t\tkind: \"bun\",\n\t\thandle,\n\t\tstart: async (): Promise<void> => {\n\t\t\tserverInstance = Bun.serve({\n\t\t\t\tport: adapterConfig.port,\n\t\t\t\thostname: adapterConfig.host,\n\t\t\t\tfetch: handle,\n\t\t\t});\n\n\t\t\tconsole.log(\n\t\t\t\t`[Rakta.js Tide] Running at http://${adapterConfig.host}:${serverInstance.port}`,\n\t\t\t);\n\t\t},\n\t\tstop: (): void => {\n\t\t\tif (!serverInstance) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tserverInstance.stop();\n\t\t},\n\t};\n}\n",
29
29
  "import type { RenderMode } from \"rakta/render\";\nimport type { TideRuntimeContext } from \"./types\";\n\nexport function createRuntimeContext(\n\trequest: Request,\n\turl: URL,\n\tparams: Readonly<Record<string, string>>,\n\tresolvedMode: RenderMode,\n): TideRuntimeContext {\n\tconst searchParams: Record<string, string> = {};\n\turl.searchParams.forEach((value, key) => {\n\t\tsearchParams[key] = value;\n\t});\n\n\tconst requestHeaders: Record<string, string> = {};\n\trequest.headers.forEach((value, key) => {\n\t\trequestHeaders[key] = value;\n\t});\n\n\treturn {\n\t\turl,\n\t\tparams,\n\t\trequest,\n\t\tsearchParams,\n\t\tresolvedMode,\n\t\trequestHeaders,\n\t\tpathname: url.pathname,\n\t\ttimestampMs: Date.now(),\n\t\tmethod: request.method.toUpperCase(),\n\t};\n}\n\nexport function buildTextResponse(\n\tbody: string,\n\tstatus: number,\n\theaders: Record<string, string>,\n): Response {\n\treturn new Response(body, { status, headers });\n}\n\nexport function buildHtmlResponse(\n\thtml: string,\n\tstatus: number = 200,\n): Response {\n\treturn buildTextResponse(html, status, {\n\t\t\"Content-Type\": \"text/html; charset=utf-8\",\n\t});\n}\n\nexport function buildJsonResponse(\n\tresponseData: Record<string, string | number | boolean | object>,\n\tstatus: number = 200,\n): Response {\n\treturn buildTextResponse(JSON.stringify(responseData), status, {\n\t\t\"Content-Type\": \"application/json; charset=utf-8\",\n\t});\n}\n\nexport function buildErrorResponse(\n\terrorMessage: string,\n\tstatus: number = 500,\n): Response {\n\treturn buildJsonResponse({ error: errorMessage }, status);\n}\n"
30
30
  ],
31
- "mappings": "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",
32
- "debugId": "83FAE8A38F61D75064756E2164756E21",
31
+ "mappings": "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",
32
+ "debugId": "ACBE00BFA61391DE64756E2164756E21",
33
33
  "names": []
34
34
  }