ugly-app 0.1.500 → 0.1.502

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.
@@ -1,17 +1,29 @@
1
1
  /**
2
2
  * `ugly-app build:workers` — bundle the user's Workers entry into
3
- * `dist/worker/worker.js` so Studio's `workers-deploy` step (and
4
- * `wrangler deploy`) can upload it.
3
+ * `dist/worker/worker.js` AND stage the SPA assets for R2 upload.
5
4
  *
6
- * Convention:
7
- * The user writes `server/workers.ts` in their project. It should
8
- * `export default createWorkersApp(...)` and `export { CollectionDO,
9
- * SessionDO } from 'ugly-app/server/adapter/workers'`. We bundle that
10
- * file with esbuild — single ESM output, `cloudflare:*` + `node:*`
11
- * marked external (workerd provides them).
5
+ * Output layout (relative to the project root):
12
6
  *
13
- * If `server/workers.ts` is missing, we print a copy-pasteable
14
- * starter so the user can wire one up in seconds.
7
+ * dist/client/index.html — vite output (pre-rewrite)
8
+ * dist/client/assets/index-Abc.js — vite output
9
+ * dist/client/icon.png — vite output
10
+ *
11
+ * dist/worker/worker.js — bundled Worker module
12
+ * dist/worker/meta.json — esbuild metafile (size guard input)
13
+ * dist/worker/index.html — rewritten HTML (/{buildId}/...)
14
+ * dist/worker/r2-upload/ — files Studio uploads to R2 BEFORE
15
+ * builds/{buildId}/assets/... the Worker script lands. Keys mirror
16
+ * builds/{buildId}/icon.png the relative paths under r2-upload/.
17
+ * builds/{buildId}/buildId.txt
18
+ *
19
+ * The build wraps the user's `server/workers.ts` via an auto-generated
20
+ * entry that pipes the base WorkersApp through `wrapWithAssets` with
21
+ * the rewritten `indexHtml` + `buildId` inlined as constants. The
22
+ * user's entry stays runtime-neutral and they never see the generated
23
+ * wrapper.
24
+ *
25
+ * The hygiene gate (no `pg`/`nats`/`@aws-sdk/*` in the bundle) still
26
+ * runs after esbuild.
15
27
  */
16
28
  interface BuildWorkersOptions {
17
29
  /** Project root — typically process.cwd(). */
@@ -20,13 +32,19 @@ interface BuildWorkersOptions {
20
32
  entry?: string;
21
33
  /** Override the output dir. Default `dist/worker/`. */
22
34
  outDir?: string;
35
+ /** Vite client output dir. Default `dist/client/`. */
36
+ clientDir?: string;
23
37
  /** When true, print the bundle-size table after building. */
24
38
  verbose?: boolean;
25
39
  }
26
- export declare function runBuildWorkers(opts?: BuildWorkersOptions): Promise<{
40
+ interface BuildWorkersResult {
27
41
  outFile: string;
28
42
  metaFile: string;
29
43
  bytes: number;
30
- }>;
44
+ buildId: string;
45
+ /** Directory holding files Studio uploads to R2. Mirrors R2 keys. */
46
+ r2UploadDir: string;
47
+ }
48
+ export declare function runBuildWorkers(opts?: BuildWorkersOptions): Promise<BuildWorkersResult>;
31
49
  export {};
32
50
  //# sourceMappingURL=buildWorkers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildWorkers.d.ts","sourceRoot":"","sources":["../../src/cli/buildWorkers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAoCH,UAAU,mBAAmB;IAC3B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,eAAe,CACnC,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAyED"}
1
+ {"version":3,"file":"buildWorkers.d.ts","sourceRoot":"","sources":["../../src/cli/buildWorkers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAiCH,UAAU,mBAAmB;IAC3B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,eAAe,CACnC,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAqG7B"}
@@ -1,44 +1,53 @@
1
1
  /**
2
2
  * `ugly-app build:workers` — bundle the user's Workers entry into
3
- * `dist/worker/worker.js` so Studio's `workers-deploy` step (and
4
- * `wrangler deploy`) can upload it.
3
+ * `dist/worker/worker.js` AND stage the SPA assets for R2 upload.
5
4
  *
6
- * Convention:
7
- * The user writes `server/workers.ts` in their project. It should
8
- * `export default createWorkersApp(...)` and `export { CollectionDO,
9
- * SessionDO } from 'ugly-app/server/adapter/workers'`. We bundle that
10
- * file with esbuild — single ESM output, `cloudflare:*` + `node:*`
11
- * marked external (workerd provides them).
5
+ * Output layout (relative to the project root):
12
6
  *
13
- * If `server/workers.ts` is missing, we print a copy-pasteable
14
- * starter so the user can wire one up in seconds.
7
+ * dist/client/index.html — vite output (pre-rewrite)
8
+ * dist/client/assets/index-Abc.js — vite output
9
+ * dist/client/icon.png — vite output
10
+ *
11
+ * dist/worker/worker.js — bundled Worker module
12
+ * dist/worker/meta.json — esbuild metafile (size guard input)
13
+ * dist/worker/index.html — rewritten HTML (/{buildId}/...)
14
+ * dist/worker/r2-upload/ — files Studio uploads to R2 BEFORE
15
+ * builds/{buildId}/assets/... the Worker script lands. Keys mirror
16
+ * builds/{buildId}/icon.png the relative paths under r2-upload/.
17
+ * builds/{buildId}/buildId.txt
18
+ *
19
+ * The build wraps the user's `server/workers.ts` via an auto-generated
20
+ * entry that pipes the base WorkersApp through `wrapWithAssets` with
21
+ * the rewritten `indexHtml` + `buildId` inlined as constants. The
22
+ * user's entry stays runtime-neutral and they never see the generated
23
+ * wrapper.
24
+ *
25
+ * The hygiene gate (no `pg`/`nats`/`@aws-sdk/*` in the bundle) still
26
+ * runs after esbuild.
15
27
  */
16
28
  import { build } from 'esbuild';
17
- import { mkdir, readFile, stat, writeFile } from 'fs/promises';
18
29
  import { existsSync } from 'fs';
30
+ import { copyFile, mkdir, readFile, readdir, rm, stat, writeFile } from 'fs/promises';
19
31
  import path from 'path';
20
32
  const STARTER_ENTRY = `// server/workers.ts — Cloudflare Workers entry point.
21
- // Studio's publish flow bundles this file and uploads it as the Worker
22
- // script. The DO classes must be exported (CollectionDO + SessionDO)
23
- // so wrangler.toml's [[durable_objects.bindings]] can reference them.
33
+ // Studio's publish flow bundles this file (after wrapping it with
34
+ // asset-serving infrastructure) and uploads it as the Worker script.
35
+ // The DO classes must be exported (CollectionDO + SessionDO) so
36
+ // wrangler.toml's [[durable_objects.bindings]] can reference them.
24
37
 
25
38
  import { createWorkersApp } from 'ugly-app/server/adapter/workers';
26
39
  import { CollectionDO, SessionDO } from 'ugly-app/server/adapter/workers';
27
40
 
28
- import { requests } from '../shared/api';
41
+ import { messages, requests } from '../shared/api';
29
42
  import { collections } from '../shared/collections';
30
- // Move handlers + cron + workers definitions into modules importable
31
- // without touching express/ws. The easiest split: a sibling file
32
- // 'server/handlers.ts' that exports them by name.
33
- import { handlers, cronTasks, cronHandlers, workers, workerHandlers } from './handlers';
43
+ import { handlers, cronTasks, cronHandlers } from './handlers';
34
44
 
35
45
  const app = createWorkersApp(
36
- { requests },
46
+ { requests, messages },
37
47
  handlers,
38
48
  collections,
39
49
  (cfg) => {
40
- cfg.setCronTasks(cronTasks, cronHandlers);
41
- cfg.setWorkers(workers, workerHandlers);
50
+ cfg.setWorkers(cronTasks, cronHandlers);
42
51
  },
43
52
  );
44
53
 
@@ -49,34 +58,61 @@ export async function runBuildWorkers(opts = {}) {
49
58
  const projectDir = path.resolve(opts.projectDir ?? process.cwd());
50
59
  const entry = path.resolve(projectDir, opts.entry ?? 'server/workers.ts');
51
60
  const outDir = path.resolve(projectDir, opts.outDir ?? 'dist/worker');
61
+ const clientDir = path.resolve(projectDir, opts.clientDir ?? 'dist/client');
52
62
  if (!existsSync(entry)) {
53
63
  const rel = path.relative(projectDir, entry);
54
- const errMsg = `[build:workers] ${rel} not found.\n\n` +
64
+ throw new Error(`[build:workers] ${rel} not found.\n\n` +
55
65
  `Create it with the snippet below, adjusting imports to match your project:\n\n` +
56
66
  STARTER_ENTRY +
57
67
  `\n` +
58
- `Then re-run \`npm run build:workers\`.\n`;
59
- throw new Error(errMsg);
68
+ `Then re-run \`npm run build:workers\`.\n`);
69
+ }
70
+ if (!existsSync(clientDir) || !existsSync(path.join(clientDir, 'index.html'))) {
71
+ throw new Error(`[build:workers] ${path.relative(projectDir, clientDir)}/index.html not found.\n` +
72
+ `Run \`npm run build\` first (vite outputs the SPA there), then re-run \`npm run build:workers\`.`);
60
73
  }
74
+ // Reset the worker output dir so old artifacts don't leak in.
75
+ await rm(outDir, { recursive: true, force: true });
61
76
  await mkdir(outDir, { recursive: true });
77
+ // ── BuildId — match the framework's convention (string of Date.now()).
78
+ // If `shared/Build.ts` already has one (set by `npm run build`), reuse
79
+ // it so the buildId the client SEES at runtime matches the asset path.
80
+ const buildId = await readSharedBuildId(projectDir);
81
+ // ── Stage SPA assets for R2 upload.
82
+ const r2UploadDir = path.join(outDir, 'r2-upload');
83
+ const r2BuildPrefix = path.join(r2UploadDir, 'builds', buildId);
84
+ await mkdir(r2BuildPrefix, { recursive: true });
85
+ await copyDirRec(clientDir, r2BuildPrefix, /* skip */ (rel) => rel === 'index.html');
86
+ // Drop a marker file so we can detect which buildId an R2 bucket has
87
+ // assets for (handy when bumping versions / debugging).
88
+ await writeFile(path.join(r2BuildPrefix, 'buildId.txt'), buildId, 'utf-8');
89
+ // ── Rewrite index.html.
90
+ const rawHtml = await readFile(path.join(clientDir, 'index.html'), 'utf-8');
91
+ const rewrittenHtml = rewriteHtmlForBuildId(rawHtml, buildId);
92
+ await writeFile(path.join(outDir, 'index.html'), rewrittenHtml, 'utf-8');
93
+ // ── Generate the wrapper entry. esbuild bundles this; it imports
94
+ // the user's untouched `server/workers.ts` and re-exports the wrapped
95
+ // app + DO classes.
96
+ const generatedEntry = path.join(outDir, 'entry.generated.ts');
97
+ await writeFile(generatedEntry, `// AUTO-GENERATED by ugly-app build:workers — do not edit.\n` +
98
+ `import { wrapWithAssets } from 'ugly-app/server/adapter/workers';\n` +
99
+ `import baseApp, { CollectionDO, SessionDO } from ${JSON.stringify(entry)};\n` +
100
+ `const indexHtml = ${JSON.stringify(rewrittenHtml)};\n` +
101
+ `const buildId = ${JSON.stringify(buildId)};\n` +
102
+ `const app = wrapWithAssets(baseApp, { indexHtml, buildId });\n` +
103
+ `export default app;\n` +
104
+ `export { CollectionDO, SessionDO };\n`, 'utf-8');
62
105
  const result = await build({
63
- entryPoints: [entry],
106
+ entryPoints: [generatedEntry],
64
107
  bundle: true,
65
108
  format: 'esm',
66
109
  target: 'esnext',
67
- // workerd is closer to a browser than to Node; this lets esbuild
68
- // pick browser-condition exports from packages that ship dual
69
- // builds (e.g. `@neondatabase/serverless`).
70
110
  platform: 'browser',
71
111
  outfile: path.join(outDir, 'worker.js'),
72
112
  metafile: true,
73
113
  sourcemap: false,
74
114
  logLevel: 'info',
75
- // workerd provides these natively. Bundling them would break
76
- // imports and defeat the size budget.
77
115
  external: ['cloudflare:*', 'node:*'],
78
- // Keep absolute paths intact in the metafile so callers can map
79
- // back to source files.
80
116
  absWorkingDir: projectDir,
81
117
  });
82
118
  const metaJson = JSON.stringify(result.metafile, null, 2);
@@ -84,33 +120,66 @@ export async function runBuildWorkers(opts = {}) {
84
120
  const metaFile = path.join(outDir, 'meta.json');
85
121
  await writeFile(metaFile, metaJson);
86
122
  const { size: bytes } = await stat(outFile);
123
+ // eslint-disable-next-line no-console
124
+ console.log(`[build:workers] buildId=${buildId} | worker.js ${(bytes / 1024).toFixed(1)} KB raw | r2-upload: ${path.relative(projectDir, r2UploadDir)}`);
87
125
  if (opts.verbose && result.metafile) {
88
- const top = topInputs(result.metafile, 10);
89
- // eslint-disable-next-line no-console
90
- console.log(`[build:workers] ${path.relative(projectDir, outFile)} — ${(bytes / 1024).toFixed(1)} KB raw`);
91
- for (const row of top) {
126
+ for (const row of topInputs(result.metafile, 10)) {
92
127
  // eslint-disable-next-line no-console
93
128
  console.log(` ${(row.bytes / 1024).toFixed(1).padStart(7)} KB ${row.path}`);
94
129
  }
95
130
  }
96
- else {
97
- // eslint-disable-next-line no-console
98
- console.log(`[build:workers] ${path.relative(projectDir, outFile)} — ${(bytes / 1024).toFixed(1)} KB raw`);
99
- }
100
- // Quick hygiene gate — surface bundle errors that would only
101
- // otherwise show up during `wrangler deploy`. We don't enforce a
102
- // hard size cap here (Workers Paid caps at 10MB; user projects
103
- // legitimately vary), but we DO refuse to ship Node-only modules
104
- // that workerd can't load.
105
131
  await assertNoNodeOnlyDeps(metaFile);
106
- return { outFile, metaFile, bytes };
132
+ return { outFile, metaFile, bytes, buildId, r2UploadDir };
133
+ }
134
+ // ────────────────────────────────────────────────────────────────────
135
+ // Helpers
136
+ async function readSharedBuildId(projectDir) {
137
+ const buildFile = path.join(projectDir, 'shared', 'Build.ts');
138
+ if (existsSync(buildFile)) {
139
+ const contents = await readFile(buildFile, 'utf-8');
140
+ const m = contents.match(/buildId\s*=\s*['"]([^'"]+)['"]/);
141
+ if (m && m[1])
142
+ return m[1];
143
+ }
144
+ // Fall back to a fresh timestamp if `shared/Build.ts` is missing
145
+ // (e.g. user ran `build:workers` without `npm run build` first).
146
+ return String(Date.now());
147
+ }
148
+ function rewriteHtmlForBuildId(html, buildId) {
149
+ // Match `src="/path"` / `href="/path"` whose path starts with the
150
+ // vite-emitted prefixes — `/assets/`, plus root-level static files
151
+ // emitted by vite to `dist/client/` (icon.png, favicon.ico, etc.).
152
+ // Replacing only these patterns avoids accidentally clobbering
153
+ // hrefs to `/api/...` or to external URLs.
154
+ return html.replace(/(\s(?:src|href)=")\/([^"]+)"/g, (full, attr, restPath) => {
155
+ if (restPath.startsWith('assets/') ||
156
+ restPath.match(/^[^/]+\.(?:png|ico|svg|jpg|jpeg|gif|webp|woff2?|ttf|map)$/i)) {
157
+ return `${attr}/${buildId}/${restPath}"`;
158
+ }
159
+ return full;
160
+ });
161
+ }
162
+ async function copyDirRec(src, dest, skip, base) {
163
+ const baseDir = base ?? src;
164
+ await mkdir(dest, { recursive: true });
165
+ const entries = await readdir(src, { withFileTypes: true });
166
+ for (const ent of entries) {
167
+ const srcPath = path.join(src, ent.name);
168
+ const destPath = path.join(dest, ent.name);
169
+ const rel = path.relative(baseDir, srcPath);
170
+ if (skip?.(rel))
171
+ continue;
172
+ if (ent.isDirectory()) {
173
+ await copyDirRec(srcPath, destPath, skip, baseDir);
174
+ }
175
+ else if (ent.isFile()) {
176
+ await copyFile(srcPath, destPath);
177
+ }
178
+ }
107
179
  }
108
180
  function topInputs(metafile, n) {
109
181
  return Object.entries(metafile.inputs)
110
- .map(([p, info]) => ({
111
- path: p,
112
- bytes: info.bytes,
113
- }))
182
+ .map(([p, info]) => ({ path: p, bytes: info.bytes }))
114
183
  .sort((a, b) => b.bytes - a.bytes)
115
184
  .slice(0, n);
116
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"buildWorkers.js","sourceRoot":"","sources":["../../src/cli/buildWorkers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,KAAK,EAAiB,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BrB,CAAC;AAaF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA4B,EAAE;IAM9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,IAAI,mBAAmB,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC;IAEtE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GACV,mBAAmB,GAAG,iBAAiB;YACvC,gFAAgF;YAChF,aAAa;YACb,IAAI;YACJ,0CAA0C,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,WAAW,EAAE,CAAC,KAAK,CAAC;QACpB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,QAAQ;QAChB,iEAAiE;QACjE,8DAA8D;QAC9D,4CAA4C;QAC5C,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC;QACvC,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,MAAM;QAChB,6DAA6D;QAC7D,sCAAsC;QACtC,QAAQ,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC;QACpC,gEAAgE;QAChE,wBAAwB;QACxB,aAAa,EAAE,UAAU;KAC1B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEpC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3C,sCAAsC;QACtC,OAAO,CAAC,GAAG,CACT,mBAAmB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAC9F,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,sCAAsC;QACtC,OAAO,CAAC,GAAG,CACT,mBAAmB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAC9F,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,iEAAiE;IACjE,+DAA+D;IAC/D,iEAAiE;IACjE,2BAA2B;IAC3B,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAErC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC;AAWD,SAAS,SAAS,CAAC,QAAkB,EAAE,CAAS;IAC9C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAA0B,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,eAAe,GAA0B;IAC7C,WAAW;IACX,KAAK;IACL,OAAO;IACP,SAAS;IACT,SAAS;IACT,UAAU;IACV,WAAW;CACZ,CAAC;AAEF,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAa,CAAC;IACvE,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/D,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,+DAA+D;YAC7D,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,iIAAiI,CACpI,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"buildWorkers.js","sourceRoot":"","sources":["../../src/cli/buildWorkers.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.500";
1
+ export declare const CLI_VERSION = "0.1.502";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.500";
2
+ export const CLI_VERSION = "0.1.502";
3
3
  //# sourceMappingURL=version.js.map
@@ -12,7 +12,8 @@
12
12
  *
13
13
  * HTTP path:
14
14
  * POST /api/:name → router.dispatch(name, input, userId)
15
- * GET /socket → upgrade to SessionDO with the request
15
+ * GET /rpc → upgrade to SessionDO with the request
16
+ * GET /socket → alias for /rpc (legacy framework path)
16
17
  * GET /_health → liveness probe (Studio's workers-init step)
17
18
  *
18
19
  * WebSocket path (via SessionDO):
@@ -1 +1 @@
1
- {"version":3,"file":"createWorkersApp.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/createWorkersApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createWorkersApp.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/createWorkersApp.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,8 @@
12
12
  *
13
13
  * HTTP path:
14
14
  * POST /api/:name → router.dispatch(name, input, userId)
15
- * GET /socket → upgrade to SessionDO with the request
15
+ * GET /rpc → upgrade to SessionDO with the request
16
+ * GET /socket → alias for /rpc (legacy framework path)
16
17
  * GET /_health → liveness probe (Studio's workers-init step)
17
18
  *
18
19
  * WebSocket path (via SessionDO):
@@ -361,22 +362,27 @@ export function createWorkersApp(optsOrRegistry, handlersArg, _appDefsArg, confi
361
362
  return c.json({ error: err.message }, 400);
362
363
  }
363
364
  });
364
- // GET /socket — forward to a per-user SessionDO.
365
- hono.get('/socket', async (c) => {
365
+ // WebSocket upgrade — forward to a per-user SessionDO. We register
366
+ // `/rpc` (the framework client's default `socketUrl`) AND `/socket`
367
+ // (legacy + tests). Custom user paths set via App.setWsPath aren't
368
+ // routed here yet — Phase 2 will read the registered path from the
369
+ // app config and add it dynamically.
370
+ const handleWsUpgrade = async (c) => {
366
371
  ensureAdapter(c.env);
367
372
  if (c.req.header('Upgrade') !== 'websocket') {
368
373
  return c.text('expected websocket upgrade', 400);
369
374
  }
370
- // Per-user keying. v1: hash the Authorization header so anonymous
371
- // connections still get their own DO. Phase 2 verifies the token
372
- // up-front and uses the userId.
373
375
  const authHeader = c.req.header('Authorization') ?? 'anon';
374
376
  const sessionName = `${c.env.PROJECT_ID}:session:${hash(authHeader)}`;
375
377
  const stub = c.env.SESSIONS.get(c.env.SESSIONS.idFromName(sessionName));
376
378
  const upstreamReq = c.req
377
379
  .raw;
378
380
  return (await stub.fetch(upstreamReq));
379
- });
381
+ };
382
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
383
+ hono.get('/rpc', handleWsUpgrade);
384
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
385
+ hono.get('/socket', handleWsUpgrade);
380
386
  return {
381
387
  async fetch(request, env, ctxArg) {
382
388
  ensureAdapter(env);
@@ -1 +1 @@
1
- {"version":3,"file":"createWorkersApp.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/createWorkersApp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createWorkersApp.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/createWorkersApp.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ import type { WorkersEnv } from './cf-types.js';
15
15
  export { CollectionDO } from './do-collection.js';
16
16
  export { SessionDO } from './createWorkersApp.js';
17
17
  export { createWorkersApp, getAppContext, } from './createWorkersApp.js';
18
+ export { wrapWithAssets, type AssetsConfig } from './wrapWithAssets.js';
18
19
  export { _hasAdapter, getAdapter, setAdapter, } from '../singleton.js';
19
20
  export type { CreateWorkersAppOptions, WorkersApp, } from './createWorkersApp.js';
20
21
  export type { WorkersEnv } from './cf-types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMhD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,uBAAuB,EACvB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAsBnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMhD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxE,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,uBAAuB,EACvB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAsBnE"}
@@ -17,6 +17,7 @@ import { createWorkersStorage } from './storage.js';
17
17
  export { CollectionDO } from './do-collection.js';
18
18
  export { SessionDO } from './createWorkersApp.js';
19
19
  export { createWorkersApp, getAppContext, } from './createWorkersApp.js';
20
+ export { wrapWithAssets } from './wrapWithAssets.js';
20
21
  // Re-export the singleton accessors so user app code can do
21
22
  // `import { getAdapter } from 'ugly-app/server/adapter/workers'`
22
23
  // without going through `adapter/index.ts` (which imports the Node
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,4DAA4D;AAC5D,iEAAiE;AACjE,mEAAmE;AACnE,uEAAuE;AACvE,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,iBAAiB,CAAC;AAOzB,MAAM,UAAU,oBAAoB,CAAC,GAAe;IAClD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE;YACpC,aAAa,EAAE,GAAG,CAAC,cAAc;SAClC,CAAC;QACF,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC;QAC5D,OAAO,EAAE,oBAAoB,CAC3B,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B;QACD,QAAQ,EAAE,qBAAqB,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAiB,EAAE;gBAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CACb,oCAAoC,IAAI,kFAAkF,CAC3H,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AACxE,4DAA4D;AAC5D,iEAAiE;AACjE,mEAAmE;AACnE,uEAAuE;AACvE,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,iBAAiB,CAAC;AAOzB,MAAM,UAAU,oBAAoB,CAAC,GAAe;IAClD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE;YACpC,aAAa,EAAE,GAAG,CAAC,cAAc;SAClC,CAAC;QACF,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC;QAC5D,OAAO,EAAE,oBAAoB,CAC3B,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B;QACD,QAAQ,EAAE,qBAAqB,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAiB,EAAE;gBAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CACb,oCAAoC,IAAI,kFAAkF,CAC3H,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * `wrapWithAssets(workersApp, { indexHtml, buildId })`
3
+ *
4
+ * Mirrors ugly.bot's prod pattern: the server serves a single
5
+ * non-cached HTML document at `/` (and as a fallback for non-API
6
+ * SPA routes), with all asset URLs rewritten to a per-build prefix
7
+ * `/{buildId}/...`. Those `/{buildId}/*` requests are served from the
8
+ * R2 bucket binding at key `builds/{buildId}/...` — content-hashed
9
+ * vite chunks plus root-level static files (icon.png, favicon.ico).
10
+ *
11
+ * Why this shape?
12
+ * - The HTML must be no-cache so a deploy actually rolls out.
13
+ * - Assets must be immutable and edge-cached for cost + latency.
14
+ * - The buildId in the path is the bust signal: every deploy issues
15
+ * a new buildId, so users always pull fresh chunks, but cached
16
+ * copies of older chunks stay valid as long as they exist in R2.
17
+ *
18
+ * The publish pipeline uploads the vite output to
19
+ * R2_BUCKET: builds/{buildId}/assets/index-Abc.js
20
+ * builds/{buildId}/icon.png
21
+ * ...
22
+ * before the Worker script itself is uploaded, so the very first
23
+ * request to a fresh deploy can already satisfy `/{buildId}/...`.
24
+ *
25
+ * The wrapper composes over the base WorkersApp: the base handles
26
+ * `/api/:name`, `/socket`, `/_health`. We only intercept `/`,
27
+ * `/{buildId}/*`, and the SPA fallback (any non-base, non-asset
28
+ * GET that the base would 404).
29
+ */
30
+ import type { WorkersApp } from './createWorkersApp.js';
31
+ export interface AssetsConfig {
32
+ /**
33
+ * The post-rewrite HTML — `/assets/foo.js` → `/{buildId}/assets/foo.js`
34
+ * etc. Inlined as a string at build time by `ugly-app build:workers`.
35
+ */
36
+ indexHtml: string;
37
+ /**
38
+ * Per-deploy cache-bust prefix. Every asset URL inside `indexHtml`
39
+ * begins with `/{buildId}/`, and the matching R2 keys live under
40
+ * `builds/{buildId}/...`.
41
+ */
42
+ buildId: string;
43
+ }
44
+ export declare function wrapWithAssets(base: WorkersApp, config: AssetsConfig): WorkersApp;
45
+ //# sourceMappingURL=wrapWithAssets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapWithAssets.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/wrapWithAssets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAoCD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GACnB,UAAU,CAgEZ"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * `wrapWithAssets(workersApp, { indexHtml, buildId })`
3
+ *
4
+ * Mirrors ugly.bot's prod pattern: the server serves a single
5
+ * non-cached HTML document at `/` (and as a fallback for non-API
6
+ * SPA routes), with all asset URLs rewritten to a per-build prefix
7
+ * `/{buildId}/...`. Those `/{buildId}/*` requests are served from the
8
+ * R2 bucket binding at key `builds/{buildId}/...` — content-hashed
9
+ * vite chunks plus root-level static files (icon.png, favicon.ico).
10
+ *
11
+ * Why this shape?
12
+ * - The HTML must be no-cache so a deploy actually rolls out.
13
+ * - Assets must be immutable and edge-cached for cost + latency.
14
+ * - The buildId in the path is the bust signal: every deploy issues
15
+ * a new buildId, so users always pull fresh chunks, but cached
16
+ * copies of older chunks stay valid as long as they exist in R2.
17
+ *
18
+ * The publish pipeline uploads the vite output to
19
+ * R2_BUCKET: builds/{buildId}/assets/index-Abc.js
20
+ * builds/{buildId}/icon.png
21
+ * ...
22
+ * before the Worker script itself is uploaded, so the very first
23
+ * request to a fresh deploy can already satisfy `/{buildId}/...`.
24
+ *
25
+ * The wrapper composes over the base WorkersApp: the base handles
26
+ * `/api/:name`, `/socket`, `/_health`. We only intercept `/`,
27
+ * `/{buildId}/*`, and the SPA fallback (any non-base, non-asset
28
+ * GET that the base would 404).
29
+ */
30
+ const ASSET_CACHE_CONTROL = 'public, max-age=31536000, immutable';
31
+ const HTML_CACHE_CONTROL = 'no-cache, no-store, must-revalidate';
32
+ function guessContentType(path) {
33
+ const lower = path.toLowerCase();
34
+ if (lower.endsWith('.js') || lower.endsWith('.mjs')) {
35
+ return 'application/javascript; charset=utf-8';
36
+ }
37
+ if (lower.endsWith('.css'))
38
+ return 'text/css; charset=utf-8';
39
+ if (lower.endsWith('.html'))
40
+ return 'text/html; charset=utf-8';
41
+ if (lower.endsWith('.json'))
42
+ return 'application/json; charset=utf-8';
43
+ if (lower.endsWith('.svg'))
44
+ return 'image/svg+xml';
45
+ if (lower.endsWith('.png'))
46
+ return 'image/png';
47
+ if (lower.endsWith('.jpg') || lower.endsWith('.jpeg'))
48
+ return 'image/jpeg';
49
+ if (lower.endsWith('.gif'))
50
+ return 'image/gif';
51
+ if (lower.endsWith('.webp'))
52
+ return 'image/webp';
53
+ if (lower.endsWith('.ico'))
54
+ return 'image/x-icon';
55
+ if (lower.endsWith('.woff2'))
56
+ return 'font/woff2';
57
+ if (lower.endsWith('.woff'))
58
+ return 'font/woff';
59
+ if (lower.endsWith('.ttf'))
60
+ return 'font/ttf';
61
+ if (lower.endsWith('.map'))
62
+ return 'application/json; charset=utf-8';
63
+ return 'application/octet-stream';
64
+ }
65
+ function htmlResponse(html) {
66
+ return new Response(html, {
67
+ status: 200,
68
+ headers: {
69
+ 'content-type': 'text/html; charset=utf-8',
70
+ 'cache-control': HTML_CACHE_CONTROL,
71
+ },
72
+ });
73
+ }
74
+ export function wrapWithAssets(base, config) {
75
+ const { indexHtml, buildId } = config;
76
+ const assetPrefix = `/${buildId}/`;
77
+ return {
78
+ async fetch(request, env, ctx) {
79
+ const url = new URL(request.url);
80
+ const path = url.pathname;
81
+ const method = request.method.toUpperCase();
82
+ // ── 1. Asset path: /{buildId}/anything ────────────────────────
83
+ // Serve from R2. R2 keys mirror the URL path, prefixed with
84
+ // `builds/`.
85
+ if (path.startsWith(assetPrefix) && (method === 'GET' || method === 'HEAD')) {
86
+ const rest = path.slice(assetPrefix.length); // "assets/foo.js" or "icon.png"
87
+ const key = `builds/${buildId}/${rest}`;
88
+ const obj = await env.R2_BUCKET.get(key);
89
+ if (!obj) {
90
+ return new Response('asset not found', { status: 404 });
91
+ }
92
+ const contentType = obj.httpMetadata?.contentType ?? guessContentType(rest);
93
+ return new Response(obj.body, {
94
+ status: 200,
95
+ headers: {
96
+ 'content-type': contentType,
97
+ 'cache-control': ASSET_CACHE_CONTROL,
98
+ // ETag helps CDN re-validation behave on conditional GETs.
99
+ etag: obj.etag,
100
+ },
101
+ });
102
+ }
103
+ // ── 2. Framework + user routes ────────────────────────────────
104
+ // Anything the base WorkersApp wants to handle goes through
105
+ // first: /api/:name, /socket, /_health, anything the user
106
+ // registered. If it returns a non-404, that's our response.
107
+ const baseRes = await base.fetch(request, env, ctx);
108
+ if (baseRes.status !== 404) {
109
+ return baseRes;
110
+ }
111
+ // ── 3. SPA fallback ───────────────────────────────────────────
112
+ // GET / and any other GET the framework didn't handle gets the
113
+ // index document. Client-side routing takes it from here.
114
+ // POST/PUT/DELETE on unrecognized paths get the base's 404.
115
+ if (method === 'GET' || method === 'HEAD') {
116
+ return htmlResponse(indexHtml);
117
+ }
118
+ return baseRes;
119
+ },
120
+ async scheduled(event, env, ctx) {
121
+ return base.scheduled(event, env, ctx);
122
+ },
123
+ async queue(batch, env, ctx) {
124
+ return base.queue(batch, env, ctx);
125
+ },
126
+ };
127
+ }
128
+ //# sourceMappingURL=wrapWithAssets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapWithAssets.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/wrapWithAssets.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.500",
3
+ "version": "0.1.502",
4
4
  "type": "module",
5
5
  "main": "./dist/server/index.js",
6
6
  "exports": {
@@ -1,46 +1,55 @@
1
1
  /**
2
2
  * `ugly-app build:workers` — bundle the user's Workers entry into
3
- * `dist/worker/worker.js` so Studio's `workers-deploy` step (and
4
- * `wrangler deploy`) can upload it.
3
+ * `dist/worker/worker.js` AND stage the SPA assets for R2 upload.
5
4
  *
6
- * Convention:
7
- * The user writes `server/workers.ts` in their project. It should
8
- * `export default createWorkersApp(...)` and `export { CollectionDO,
9
- * SessionDO } from 'ugly-app/server/adapter/workers'`. We bundle that
10
- * file with esbuild — single ESM output, `cloudflare:*` + `node:*`
11
- * marked external (workerd provides them).
5
+ * Output layout (relative to the project root):
12
6
  *
13
- * If `server/workers.ts` is missing, we print a copy-pasteable
14
- * starter so the user can wire one up in seconds.
7
+ * dist/client/index.html — vite output (pre-rewrite)
8
+ * dist/client/assets/index-Abc.js — vite output
9
+ * dist/client/icon.png — vite output
10
+ *
11
+ * dist/worker/worker.js — bundled Worker module
12
+ * dist/worker/meta.json — esbuild metafile (size guard input)
13
+ * dist/worker/index.html — rewritten HTML (/{buildId}/...)
14
+ * dist/worker/r2-upload/ — files Studio uploads to R2 BEFORE
15
+ * builds/{buildId}/assets/... the Worker script lands. Keys mirror
16
+ * builds/{buildId}/icon.png the relative paths under r2-upload/.
17
+ * builds/{buildId}/buildId.txt
18
+ *
19
+ * The build wraps the user's `server/workers.ts` via an auto-generated
20
+ * entry that pipes the base WorkersApp through `wrapWithAssets` with
21
+ * the rewritten `indexHtml` + `buildId` inlined as constants. The
22
+ * user's entry stays runtime-neutral and they never see the generated
23
+ * wrapper.
24
+ *
25
+ * The hygiene gate (no `pg`/`nats`/`@aws-sdk/*` in the bundle) still
26
+ * runs after esbuild.
15
27
  */
16
28
 
17
29
  import { build, type Metafile } from 'esbuild';
18
- import { mkdir, readFile, stat, writeFile } from 'fs/promises';
19
30
  import { existsSync } from 'fs';
31
+ import { copyFile, mkdir, readFile, readdir, rm, stat, writeFile } from 'fs/promises';
20
32
  import path from 'path';
21
33
 
22
34
  const STARTER_ENTRY = `// server/workers.ts — Cloudflare Workers entry point.
23
- // Studio's publish flow bundles this file and uploads it as the Worker
24
- // script. The DO classes must be exported (CollectionDO + SessionDO)
25
- // so wrangler.toml's [[durable_objects.bindings]] can reference them.
35
+ // Studio's publish flow bundles this file (after wrapping it with
36
+ // asset-serving infrastructure) and uploads it as the Worker script.
37
+ // The DO classes must be exported (CollectionDO + SessionDO) so
38
+ // wrangler.toml's [[durable_objects.bindings]] can reference them.
26
39
 
27
40
  import { createWorkersApp } from 'ugly-app/server/adapter/workers';
28
41
  import { CollectionDO, SessionDO } from 'ugly-app/server/adapter/workers';
29
42
 
30
- import { requests } from '../shared/api';
43
+ import { messages, requests } from '../shared/api';
31
44
  import { collections } from '../shared/collections';
32
- // Move handlers + cron + workers definitions into modules importable
33
- // without touching express/ws. The easiest split: a sibling file
34
- // 'server/handlers.ts' that exports them by name.
35
- import { handlers, cronTasks, cronHandlers, workers, workerHandlers } from './handlers';
45
+ import { handlers, cronTasks, cronHandlers } from './handlers';
36
46
 
37
47
  const app = createWorkersApp(
38
- { requests },
48
+ { requests, messages },
39
49
  handlers,
40
50
  collections,
41
51
  (cfg) => {
42
- cfg.setCronTasks(cronTasks, cronHandlers);
43
- cfg.setWorkers(workers, workerHandlers);
52
+ cfg.setWorkers(cronTasks, cronHandlers);
44
53
  },
45
54
  );
46
55
 
@@ -55,52 +64,98 @@ interface BuildWorkersOptions {
55
64
  entry?: string;
56
65
  /** Override the output dir. Default `dist/worker/`. */
57
66
  outDir?: string;
67
+ /** Vite client output dir. Default `dist/client/`. */
68
+ clientDir?: string;
58
69
  /** When true, print the bundle-size table after building. */
59
70
  verbose?: boolean;
60
71
  }
61
72
 
62
- export async function runBuildWorkers(
63
- opts: BuildWorkersOptions = {},
64
- ): Promise<{
73
+ interface BuildWorkersResult {
65
74
  outFile: string;
66
75
  metaFile: string;
67
76
  bytes: number;
68
- }> {
77
+ buildId: string;
78
+ /** Directory holding files Studio uploads to R2. Mirrors R2 keys. */
79
+ r2UploadDir: string;
80
+ }
81
+
82
+ export async function runBuildWorkers(
83
+ opts: BuildWorkersOptions = {},
84
+ ): Promise<BuildWorkersResult> {
69
85
  const projectDir = path.resolve(opts.projectDir ?? process.cwd());
70
86
  const entry = path.resolve(projectDir, opts.entry ?? 'server/workers.ts');
71
87
  const outDir = path.resolve(projectDir, opts.outDir ?? 'dist/worker');
88
+ const clientDir = path.resolve(projectDir, opts.clientDir ?? 'dist/client');
72
89
 
73
90
  if (!existsSync(entry)) {
74
91
  const rel = path.relative(projectDir, entry);
75
- const errMsg =
92
+ throw new Error(
76
93
  `[build:workers] ${rel} not found.\n\n` +
77
- `Create it with the snippet below, adjusting imports to match your project:\n\n` +
78
- STARTER_ENTRY +
79
- `\n` +
80
- `Then re-run \`npm run build:workers\`.\n`;
81
- throw new Error(errMsg);
94
+ `Create it with the snippet below, adjusting imports to match your project:\n\n` +
95
+ STARTER_ENTRY +
96
+ `\n` +
97
+ `Then re-run \`npm run build:workers\`.\n`,
98
+ );
99
+ }
100
+
101
+ if (!existsSync(clientDir) || !existsSync(path.join(clientDir, 'index.html'))) {
102
+ throw new Error(
103
+ `[build:workers] ${path.relative(projectDir, clientDir)}/index.html not found.\n` +
104
+ `Run \`npm run build\` first (vite outputs the SPA there), then re-run \`npm run build:workers\`.`,
105
+ );
82
106
  }
83
107
 
108
+ // Reset the worker output dir so old artifacts don't leak in.
109
+ await rm(outDir, { recursive: true, force: true });
84
110
  await mkdir(outDir, { recursive: true });
85
111
 
112
+ // ── BuildId — match the framework's convention (string of Date.now()).
113
+ // If `shared/Build.ts` already has one (set by `npm run build`), reuse
114
+ // it so the buildId the client SEES at runtime matches the asset path.
115
+ const buildId = await readSharedBuildId(projectDir);
116
+
117
+ // ── Stage SPA assets for R2 upload.
118
+ const r2UploadDir = path.join(outDir, 'r2-upload');
119
+ const r2BuildPrefix = path.join(r2UploadDir, 'builds', buildId);
120
+ await mkdir(r2BuildPrefix, { recursive: true });
121
+ await copyDirRec(clientDir, r2BuildPrefix, /* skip */ (rel) => rel === 'index.html');
122
+ // Drop a marker file so we can detect which buildId an R2 bucket has
123
+ // assets for (handy when bumping versions / debugging).
124
+ await writeFile(path.join(r2BuildPrefix, 'buildId.txt'), buildId, 'utf-8');
125
+
126
+ // ── Rewrite index.html.
127
+ const rawHtml = await readFile(path.join(clientDir, 'index.html'), 'utf-8');
128
+ const rewrittenHtml = rewriteHtmlForBuildId(rawHtml, buildId);
129
+ await writeFile(path.join(outDir, 'index.html'), rewrittenHtml, 'utf-8');
130
+
131
+ // ── Generate the wrapper entry. esbuild bundles this; it imports
132
+ // the user's untouched `server/workers.ts` and re-exports the wrapped
133
+ // app + DO classes.
134
+ const generatedEntry = path.join(outDir, 'entry.generated.ts');
135
+ await writeFile(
136
+ generatedEntry,
137
+ `// AUTO-GENERATED by ugly-app build:workers — do not edit.\n` +
138
+ `import { wrapWithAssets } from 'ugly-app/server/adapter/workers';\n` +
139
+ `import baseApp, { CollectionDO, SessionDO } from ${JSON.stringify(entry)};\n` +
140
+ `const indexHtml = ${JSON.stringify(rewrittenHtml)};\n` +
141
+ `const buildId = ${JSON.stringify(buildId)};\n` +
142
+ `const app = wrapWithAssets(baseApp, { indexHtml, buildId });\n` +
143
+ `export default app;\n` +
144
+ `export { CollectionDO, SessionDO };\n`,
145
+ 'utf-8',
146
+ );
147
+
86
148
  const result = await build({
87
- entryPoints: [entry],
149
+ entryPoints: [generatedEntry],
88
150
  bundle: true,
89
151
  format: 'esm',
90
152
  target: 'esnext',
91
- // workerd is closer to a browser than to Node; this lets esbuild
92
- // pick browser-condition exports from packages that ship dual
93
- // builds (e.g. `@neondatabase/serverless`).
94
153
  platform: 'browser',
95
154
  outfile: path.join(outDir, 'worker.js'),
96
155
  metafile: true,
97
156
  sourcemap: false,
98
157
  logLevel: 'info',
99
- // workerd provides these natively. Bundling them would break
100
- // imports and defeat the size budget.
101
158
  external: ['cloudflare:*', 'node:*'],
102
- // Keep absolute paths intact in the metafile so callers can map
103
- // back to source files.
104
159
  absWorkingDir: projectDir,
105
160
  });
106
161
 
@@ -111,37 +166,79 @@ export async function runBuildWorkers(
111
166
 
112
167
  const { size: bytes } = await stat(outFile);
113
168
 
169
+ // eslint-disable-next-line no-console
170
+ console.log(
171
+ `[build:workers] buildId=${buildId} | worker.js ${(bytes / 1024).toFixed(1)} KB raw | r2-upload: ${path.relative(projectDir, r2UploadDir)}`,
172
+ );
114
173
  if (opts.verbose && result.metafile) {
115
- const top = topInputs(result.metafile, 10);
116
- // eslint-disable-next-line no-console
117
- console.log(
118
- `[build:workers] ${path.relative(projectDir, outFile)} — ${(bytes / 1024).toFixed(1)} KB raw`,
119
- );
120
- for (const row of top) {
174
+ for (const row of topInputs(result.metafile, 10)) {
121
175
  // eslint-disable-next-line no-console
122
176
  console.log(
123
177
  ` ${(row.bytes / 1024).toFixed(1).padStart(7)} KB ${row.path}`,
124
178
  );
125
179
  }
126
- } else {
127
- // eslint-disable-next-line no-console
128
- console.log(
129
- `[build:workers] ${path.relative(projectDir, outFile)} — ${(bytes / 1024).toFixed(1)} KB raw`,
130
- );
131
180
  }
132
181
 
133
- // Quick hygiene gate — surface bundle errors that would only
134
- // otherwise show up during `wrangler deploy`. We don't enforce a
135
- // hard size cap here (Workers Paid caps at 10MB; user projects
136
- // legitimately vary), but we DO refuse to ship Node-only modules
137
- // that workerd can't load.
138
182
  await assertNoNodeOnlyDeps(metaFile);
139
183
 
140
- return { outFile, metaFile, bytes };
184
+ return { outFile, metaFile, bytes, buildId, r2UploadDir };
141
185
  }
142
186
 
143
- interface MetafileInput {
144
- bytes: number;
187
+ // ────────────────────────────────────────────────────────────────────
188
+ // Helpers
189
+
190
+ async function readSharedBuildId(projectDir: string): Promise<string> {
191
+ const buildFile = path.join(projectDir, 'shared', 'Build.ts');
192
+ if (existsSync(buildFile)) {
193
+ const contents = await readFile(buildFile, 'utf-8');
194
+ const m = contents.match(/buildId\s*=\s*['"]([^'"]+)['"]/);
195
+ if (m && m[1]) return m[1];
196
+ }
197
+ // Fall back to a fresh timestamp if `shared/Build.ts` is missing
198
+ // (e.g. user ran `build:workers` without `npm run build` first).
199
+ return String(Date.now());
200
+ }
201
+
202
+ function rewriteHtmlForBuildId(html: string, buildId: string): string {
203
+ // Match `src="/path"` / `href="/path"` whose path starts with the
204
+ // vite-emitted prefixes — `/assets/`, plus root-level static files
205
+ // emitted by vite to `dist/client/` (icon.png, favicon.ico, etc.).
206
+ // Replacing only these patterns avoids accidentally clobbering
207
+ // hrefs to `/api/...` or to external URLs.
208
+ return html.replace(
209
+ /(\s(?:src|href)=")\/([^"]+)"/g,
210
+ (full, attr: string, restPath: string) => {
211
+ if (
212
+ restPath.startsWith('assets/') ||
213
+ restPath.match(/^[^/]+\.(?:png|ico|svg|jpg|jpeg|gif|webp|woff2?|ttf|map)$/i)
214
+ ) {
215
+ return `${attr}/${buildId}/${restPath}"`;
216
+ }
217
+ return full;
218
+ },
219
+ );
220
+ }
221
+
222
+ async function copyDirRec(
223
+ src: string,
224
+ dest: string,
225
+ skip?: (relPath: string) => boolean,
226
+ base?: string,
227
+ ): Promise<void> {
228
+ const baseDir = base ?? src;
229
+ await mkdir(dest, { recursive: true });
230
+ const entries = await readdir(src, { withFileTypes: true });
231
+ for (const ent of entries) {
232
+ const srcPath = path.join(src, ent.name);
233
+ const destPath = path.join(dest, ent.name);
234
+ const rel = path.relative(baseDir, srcPath);
235
+ if (skip?.(rel)) continue;
236
+ if (ent.isDirectory()) {
237
+ await copyDirRec(srcPath, destPath, skip, baseDir);
238
+ } else if (ent.isFile()) {
239
+ await copyFile(srcPath, destPath);
240
+ }
241
+ }
145
242
  }
146
243
 
147
244
  interface TopRow {
@@ -151,10 +248,7 @@ interface TopRow {
151
248
 
152
249
  function topInputs(metafile: Metafile, n: number): TopRow[] {
153
250
  return Object.entries(metafile.inputs)
154
- .map(([p, info]: [string, MetafileInput]) => ({
155
- path: p,
156
- bytes: info.bytes,
157
- }))
251
+ .map(([p, info]) => ({ path: p, bytes: info.bytes }))
158
252
  .sort((a, b) => b.bytes - a.bytes)
159
253
  .slice(0, n);
160
254
  }
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.500";
2
+ export const CLI_VERSION = "0.1.502";
@@ -12,7 +12,8 @@
12
12
  *
13
13
  * HTTP path:
14
14
  * POST /api/:name → router.dispatch(name, input, userId)
15
- * GET /socket → upgrade to SessionDO with the request
15
+ * GET /rpc → upgrade to SessionDO with the request
16
+ * GET /socket → alias for /rpc (legacy framework path)
16
17
  * GET /_health → liveness probe (Studio's workers-init step)
17
18
  *
18
19
  * WebSocket path (via SessionDO):
@@ -590,15 +591,18 @@ export function createWorkersApp<R extends AppRegistryBase>(
590
591
  }
591
592
  });
592
593
 
593
- // GET /socket — forward to a per-user SessionDO.
594
- hono.get('/socket', async (c) => {
594
+ // WebSocket upgrade — forward to a per-user SessionDO. We register
595
+ // `/rpc` (the framework client's default `socketUrl`) AND `/socket`
596
+ // (legacy + tests). Custom user paths set via App.setWsPath aren't
597
+ // routed here yet — Phase 2 will read the registered path from the
598
+ // app config and add it dynamically.
599
+ const handleWsUpgrade = async (
600
+ c: { req: { header: (n: string) => string | undefined; raw: Request }; env: WorkersEnv; text: (s: string, code: number) => Response },
601
+ ): Promise<Response> => {
595
602
  ensureAdapter(c.env);
596
603
  if (c.req.header('Upgrade') !== 'websocket') {
597
604
  return c.text('expected websocket upgrade', 400);
598
605
  }
599
- // Per-user keying. v1: hash the Authorization header so anonymous
600
- // connections still get their own DO. Phase 2 verifies the token
601
- // up-front and uses the userId.
602
606
  const authHeader = c.req.header('Authorization') ?? 'anon';
603
607
  const sessionName = `${c.env.PROJECT_ID}:session:${hash(authHeader)}`;
604
608
  const stub = c.env.SESSIONS.get(
@@ -607,7 +611,11 @@ export function createWorkersApp<R extends AppRegistryBase>(
607
611
  const upstreamReq = c.req
608
612
  .raw as unknown as Parameters<typeof stub.fetch>[0];
609
613
  return (await stub.fetch(upstreamReq)) as unknown as Response;
610
- });
614
+ };
615
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
616
+ hono.get('/rpc', handleWsUpgrade as any);
617
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
618
+ hono.get('/socket', handleWsUpgrade as any);
611
619
 
612
620
  return {
613
621
  async fetch(request, env, ctxArg): Promise<Response> {
@@ -24,6 +24,7 @@ export {
24
24
  createWorkersApp,
25
25
  getAppContext,
26
26
  } from './createWorkersApp.js';
27
+ export { wrapWithAssets, type AssetsConfig } from './wrapWithAssets.js';
27
28
  // Re-export the singleton accessors so user app code can do
28
29
  // `import { getAdapter } from 'ugly-app/server/adapter/workers'`
29
30
  // without going through `adapter/index.ts` (which imports the Node
@@ -0,0 +1,151 @@
1
+ /**
2
+ * `wrapWithAssets(workersApp, { indexHtml, buildId })`
3
+ *
4
+ * Mirrors ugly.bot's prod pattern: the server serves a single
5
+ * non-cached HTML document at `/` (and as a fallback for non-API
6
+ * SPA routes), with all asset URLs rewritten to a per-build prefix
7
+ * `/{buildId}/...`. Those `/{buildId}/*` requests are served from the
8
+ * R2 bucket binding at key `builds/{buildId}/...` — content-hashed
9
+ * vite chunks plus root-level static files (icon.png, favicon.ico).
10
+ *
11
+ * Why this shape?
12
+ * - The HTML must be no-cache so a deploy actually rolls out.
13
+ * - Assets must be immutable and edge-cached for cost + latency.
14
+ * - The buildId in the path is the bust signal: every deploy issues
15
+ * a new buildId, so users always pull fresh chunks, but cached
16
+ * copies of older chunks stay valid as long as they exist in R2.
17
+ *
18
+ * The publish pipeline uploads the vite output to
19
+ * R2_BUCKET: builds/{buildId}/assets/index-Abc.js
20
+ * builds/{buildId}/icon.png
21
+ * ...
22
+ * before the Worker script itself is uploaded, so the very first
23
+ * request to a fresh deploy can already satisfy `/{buildId}/...`.
24
+ *
25
+ * The wrapper composes over the base WorkersApp: the base handles
26
+ * `/api/:name`, `/socket`, `/_health`. We only intercept `/`,
27
+ * `/{buildId}/*`, and the SPA fallback (any non-base, non-asset
28
+ * GET that the base would 404).
29
+ */
30
+
31
+ import type { ExecutionContext } from '@cloudflare/workers-types';
32
+
33
+ import type { WorkersEnv } from './cf-types.js';
34
+ import type { WorkersApp } from './createWorkersApp.js';
35
+
36
+ export interface AssetsConfig {
37
+ /**
38
+ * The post-rewrite HTML — `/assets/foo.js` → `/{buildId}/assets/foo.js`
39
+ * etc. Inlined as a string at build time by `ugly-app build:workers`.
40
+ */
41
+ indexHtml: string;
42
+ /**
43
+ * Per-deploy cache-bust prefix. Every asset URL inside `indexHtml`
44
+ * begins with `/{buildId}/`, and the matching R2 keys live under
45
+ * `builds/{buildId}/...`.
46
+ */
47
+ buildId: string;
48
+ }
49
+
50
+ const ASSET_CACHE_CONTROL = 'public, max-age=31536000, immutable';
51
+ const HTML_CACHE_CONTROL = 'no-cache, no-store, must-revalidate';
52
+
53
+ function guessContentType(path: string): string {
54
+ const lower = path.toLowerCase();
55
+ if (lower.endsWith('.js') || lower.endsWith('.mjs')) {
56
+ return 'application/javascript; charset=utf-8';
57
+ }
58
+ if (lower.endsWith('.css')) return 'text/css; charset=utf-8';
59
+ if (lower.endsWith('.html')) return 'text/html; charset=utf-8';
60
+ if (lower.endsWith('.json')) return 'application/json; charset=utf-8';
61
+ if (lower.endsWith('.svg')) return 'image/svg+xml';
62
+ if (lower.endsWith('.png')) return 'image/png';
63
+ if (lower.endsWith('.jpg') || lower.endsWith('.jpeg')) return 'image/jpeg';
64
+ if (lower.endsWith('.gif')) return 'image/gif';
65
+ if (lower.endsWith('.webp')) return 'image/webp';
66
+ if (lower.endsWith('.ico')) return 'image/x-icon';
67
+ if (lower.endsWith('.woff2')) return 'font/woff2';
68
+ if (lower.endsWith('.woff')) return 'font/woff';
69
+ if (lower.endsWith('.ttf')) return 'font/ttf';
70
+ if (lower.endsWith('.map')) return 'application/json; charset=utf-8';
71
+ return 'application/octet-stream';
72
+ }
73
+
74
+ function htmlResponse(html: string): Response {
75
+ return new Response(html, {
76
+ status: 200,
77
+ headers: {
78
+ 'content-type': 'text/html; charset=utf-8',
79
+ 'cache-control': HTML_CACHE_CONTROL,
80
+ },
81
+ });
82
+ }
83
+
84
+ export function wrapWithAssets(
85
+ base: WorkersApp,
86
+ config: AssetsConfig,
87
+ ): WorkersApp {
88
+ const { indexHtml, buildId } = config;
89
+ const assetPrefix = `/${buildId}/`;
90
+
91
+ return {
92
+ async fetch(
93
+ request: Request,
94
+ env: WorkersEnv,
95
+ ctx: ExecutionContext,
96
+ ): Promise<Response> {
97
+ const url = new URL(request.url);
98
+ const path = url.pathname;
99
+ const method = request.method.toUpperCase();
100
+
101
+ // ── 1. Asset path: /{buildId}/anything ────────────────────────
102
+ // Serve from R2. R2 keys mirror the URL path, prefixed with
103
+ // `builds/`.
104
+ if (path.startsWith(assetPrefix) && (method === 'GET' || method === 'HEAD')) {
105
+ const rest = path.slice(assetPrefix.length); // "assets/foo.js" or "icon.png"
106
+ const key = `builds/${buildId}/${rest}`;
107
+ const obj = await env.R2_BUCKET.get(key);
108
+ if (!obj) {
109
+ return new Response('asset not found', { status: 404 });
110
+ }
111
+ const contentType =
112
+ obj.httpMetadata?.contentType ?? guessContentType(rest);
113
+ return new Response(obj.body as unknown as ReadableStream, {
114
+ status: 200,
115
+ headers: {
116
+ 'content-type': contentType,
117
+ 'cache-control': ASSET_CACHE_CONTROL,
118
+ // ETag helps CDN re-validation behave on conditional GETs.
119
+ etag: obj.etag,
120
+ },
121
+ });
122
+ }
123
+
124
+ // ── 2. Framework + user routes ────────────────────────────────
125
+ // Anything the base WorkersApp wants to handle goes through
126
+ // first: /api/:name, /socket, /_health, anything the user
127
+ // registered. If it returns a non-404, that's our response.
128
+ const baseRes = await base.fetch(request, env, ctx);
129
+ if (baseRes.status !== 404) {
130
+ return baseRes;
131
+ }
132
+
133
+ // ── 3. SPA fallback ───────────────────────────────────────────
134
+ // GET / and any other GET the framework didn't handle gets the
135
+ // index document. Client-side routing takes it from here.
136
+ // POST/PUT/DELETE on unrecognized paths get the base's 404.
137
+ if (method === 'GET' || method === 'HEAD') {
138
+ return htmlResponse(indexHtml);
139
+ }
140
+ return baseRes;
141
+ },
142
+
143
+ async scheduled(event, env, ctx): Promise<void> {
144
+ return base.scheduled(event, env, ctx);
145
+ },
146
+
147
+ async queue(batch, env, ctx): Promise<void> {
148
+ return base.queue(batch, env, ctx);
149
+ },
150
+ };
151
+ }