@samebase/convex-hosting 0.13.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +117 -73
  3. package/dist/cli/convex.d.ts +6 -0
  4. package/dist/cli/convex.js +22 -1
  5. package/dist/cli/convex.js.map +1 -1
  6. package/dist/cli/files.js +6 -1
  7. package/dist/cli/files.js.map +1 -1
  8. package/dist/cli/main.js +138 -20
  9. package/dist/cli/main.js.map +1 -1
  10. package/dist/cli/manifest.d.ts +19 -0
  11. package/dist/cli/manifest.js +71 -0
  12. package/dist/cli/manifest.js.map +1 -0
  13. package/dist/cli/site-config.d.ts +32 -0
  14. package/dist/cli/site-config.js +15 -0
  15. package/dist/cli/site-config.js.map +1 -0
  16. package/dist/client/answer.d.ts +16 -0
  17. package/dist/client/answer.js +51 -0
  18. package/dist/client/answer.js.map +1 -0
  19. package/dist/client/index.d.ts +23 -3
  20. package/dist/client/index.js +57 -78
  21. package/dist/client/index.js.map +1 -1
  22. package/dist/client/manifest.d.ts +68 -0
  23. package/dist/client/manifest.js +48 -0
  24. package/dist/client/manifest.js.map +1 -0
  25. package/dist/client/version-module.d.ts +1 -1
  26. package/dist/component/_generated/component.d.ts +2 -18
  27. package/dist/component/lib.d.ts +15 -46
  28. package/dist/component/lib.js +35 -134
  29. package/dist/component/lib.js.map +1 -1
  30. package/dist/component/schema.d.ts +2 -2
  31. package/dist/component/schema.js +2 -2
  32. package/dist/workers-sdk/packages/workers-shared/asset-worker/src/assets-manifest.d.ts +14 -0
  33. package/dist/workers-sdk/packages/workers-shared/asset-worker/src/assets-manifest.js +84 -0
  34. package/dist/workers-sdk/packages/workers-shared/asset-worker/src/assets-manifest.js.map +1 -0
  35. package/package.json +7 -6
package/dist/cli/main.js CHANGED
@@ -1,13 +1,16 @@
1
1
  import { randomUUID } from "node:crypto";
2
- import { appendFileSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
2
+ import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
3
3
  import { join, resolve } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import { parseArgs } from "node:util";
6
6
  import { z } from "zod";
7
+ import { ASSETS_FORMAT, MARK_HEADER, MARK_PATH, } from "../client/manifest.js";
7
8
  import { internal } from "../component/_generated/api.js";
8
9
  import { AssetConfigSchema } from "../workers-sdk/packages/workers-shared/utils/types.js";
9
- import { deploymentSelector, probeComponent, readConvexEnv, runComponent, siteUrl, } from "./convex.js";
10
+ import { deploymentSelector, probeComponent, readConvexEnv, runComponent, runComponentQuery, siteUrl, } from "./convex.js";
10
11
  import { readDist } from "./files.js";
12
+ import { buildAssetFiles } from "./manifest.js";
13
+ import { siteConfig } from "./site-config.js";
11
14
  const USAGE = `Usage:
12
15
  convex-hosting deploy --dist <dir> [options]
13
16
  Runs the build, if any, stores the site files, and pushes the functions. The push switches
@@ -35,6 +38,11 @@ export const VERSION_FILE = join(STATE_DIR, "version.js");
35
38
  * `deploy` then uploads after the push.
36
39
  */
37
40
  const FIRST_INSTALL_MARKER = join(STATE_DIR, "first-install");
41
+ /**
42
+ * Entries per inline query that reads the storage URLs: 2,000 entries and their `_storage`
43
+ * documents are 4,000 of the 32,000 documents a query may read, and about 300 KB of result.
44
+ */
45
+ const URL_PAGE = 2000;
38
46
  /** Files that the upload sends to storage at once. */
39
47
  const UPLOAD_CONCURRENCY = 4;
40
48
  /**
@@ -132,9 +140,9 @@ function quote(arg) {
132
140
  return process.platform === "win32" ? `"${arg}"` : `'${arg.replaceAll("'", `'\\''`)}'`;
133
141
  }
134
142
  /**
135
- * Builds, uploads, writes the version file, and pushes. The push is the switch: the first request
136
- * that the new code serves marks its version live. Then it reports the site URL, for a person and,
137
- * through `$GITHUB_OUTPUT`, for the next step of a GitHub Actions job.
143
+ * Builds, uploads, writes the version file, and pushes. The push is the switch. Then it asks the
144
+ * served code to mark its version live, and reports the site URL, for a person and, through
145
+ * `$GITHUB_OUTPUT`, for the next step of a GitHub Actions job.
138
146
  */
139
147
  async function deploy(cli, options, build) {
140
148
  // A deploy key wins over every selector in the Convex CLI, so a production key in the environment
@@ -187,6 +195,7 @@ async function deploy(cli, options, build) {
187
195
  const message = error instanceof Error ? error.message : String(error);
188
196
  throw new Error(`Deployed version ${versionId}, but reading the site URL failed: ${message}`);
189
197
  }
198
+ await markServedVersion(cli, url, readVersionFile(cli));
190
199
  cli.log(`Deployed version ${versionId} to ${url}.`);
191
200
  if (cli.env.GITHUB_OUTPUT)
192
201
  appendFileSync(cli.env.GITHUB_OUTPUT, `url=${url}\n`);
@@ -197,7 +206,7 @@ async function deploy(cli, options, build) {
197
206
  * reads `VITE_CONVEX_URL`). Then the upload runs here, and `npx convex run --push` pushes, with an inline
198
207
  * query at the app's root, which exists before the push installs the component. It works whether
199
208
  * or not `npx convex dev` runs; `npx convex dev --once` refuses while it runs a local deployment's
200
- * backend.
209
+ * backend. A first install pushes, uploads, and pushes again.
201
210
  */
202
211
  async function deployDev(cli, options, target, versionId, build) {
203
212
  if (build !== undefined) {
@@ -208,13 +217,21 @@ async function deployDev(cli, options, target, versionId, build) {
208
217
  const missing = await upload(cli, options, target, versionId);
209
218
  if (missing !== undefined)
210
219
  cli.log(notInstalledYet(options.component));
220
+ await pushDev(cli);
221
+ if (missing !== undefined) {
222
+ await uploadAfterPush(cli, options, target, versionId);
223
+ await pushDev(cli);
224
+ }
225
+ }
226
+ async function pushDev(cli) {
211
227
  const exitCode = await cli.convexInherited(["run", "--push", "--inline-query", "null"]);
212
228
  if (exitCode !== 0)
213
229
  throw new Error(`npx convex run --push failed with exit code ${exitCode}.`);
214
- if (missing !== undefined)
215
- await uploadAfterPush(cli, options, target, versionId);
216
230
  }
217
- /** Production or a preview: the build, if any, and the upload run inside `npx convex deploy --cmd`. */
231
+ /**
232
+ * Production or a preview: the build, if any, and the upload run inside `npx convex deploy --cmd`.
233
+ * A first install uploads after that push and pushes again with `npx convex deploy`.
234
+ */
218
235
  async function deployWithConvexDeploy(cli, options, target, versionId, build) {
219
236
  const marker = join(cli.cwd, FIRST_INSTALL_MARKER);
220
237
  rmSync(marker, { force: true });
@@ -250,8 +267,12 @@ async function deployWithConvexDeploy(cli, options, target, versionId, build) {
250
267
  rmSync(marker, { force: true });
251
268
  if (exitCode !== 0)
252
269
  throw new Error(`npx convex deploy failed with exit code ${exitCode}.`);
253
- if (firstInstall)
270
+ if (firstInstall) {
254
271
  await uploadAfterPush(cli, options, target, versionId);
272
+ const again = await cli.convexInherited(["deploy", ...deployFlags]);
273
+ if (again !== 0)
274
+ throw new Error(`npx convex deploy failed with exit code ${again}.`);
275
+ }
255
276
  }
256
277
  /** The upload inside `npx convex deploy --cmd`. On a first install, `deploy` uploads after the push. */
257
278
  async function uploadInsideDeploy(cli, options, versionId) {
@@ -265,7 +286,7 @@ async function uploadInsideDeploy(cli, options, versionId) {
265
286
  }
266
287
  }
267
288
  function notInstalledYet(component) {
268
- return `The component "${component}" is not installed yet. The push installs it, and the upload runs after the push.`;
289
+ return `The component "${component}" is not installed yet. The push installs it, the upload runs after the push, and a second push serves the site.`;
269
290
  }
270
291
  /** The upload of a first install, after the push. The probe's output shows a mistyped `--component`. */
271
292
  async function uploadAfterPush(cli, options, target, versionId) {
@@ -276,17 +297,19 @@ async function uploadAfterPush(cli, options, target, versionId) {
276
297
  }
277
298
  }
278
299
  /**
279
- * Uploads `--dist` as version `versionId` and writes the version file. When the component is not
280
- * installed yet, it writes only the version file, so that the push that follows installs the
281
- * component, and returns the probe's output.
300
+ * Uploads `--dist` as version `versionId` and writes the version file with the site's files. When
301
+ * the component is not installed yet, it writes a version file without files, which serves
302
+ * nothing, so that the push that follows installs the component, and returns the probe's output.
282
303
  */
283
304
  async function upload(cli, options, target, versionId) {
284
305
  const dist = resolve(cli.cwd, options.dist);
285
306
  const { config, entries } = await readDist(dist, options, cli.log);
286
307
  const generateUploadUrls = (count) => runComponent(cli, target, internal.lib.generateUploadUrls, { count }, z.array(z.string()).length(count));
308
+ // The CLI sends it after the push; see `MARK_HEADER`.
309
+ const markToken = randomUUID();
287
310
  const missing = await probeComponent(cli, target);
288
311
  if (missing !== undefined) {
289
- writeVersionFile(cli, versionId);
312
+ writeVersionFile(cli, { format: ASSETS_FORMAT, versionId, markToken, files: null });
290
313
  return missing;
291
314
  }
292
315
  cli.log(`Uploading version ${versionId}: ${entries.length} files.`);
@@ -350,21 +373,116 @@ async function upload(cli, options, target, versionId) {
350
373
  await record(uploaded);
351
374
  }
352
375
  await runComponent(cli, target, internal.lib.finishVersion, { versionId }, z.null());
353
- writeVersionFile(cli, versionId);
376
+ const files = await assetFiles(cli, target, versionId, config, entries);
377
+ writeVersionFile(cli, { format: ASSETS_FORMAT, versionId, markToken, files });
354
378
  cli.log(`Uploaded version ${versionId} and wrote ${VERSION_FILE}.`);
355
379
  return undefined;
356
380
  }
357
- function writeVersionFile(cli, versionId) {
358
- writeStateFile(cli, VERSION_FILE, `export const versionId = ${JSON.stringify(versionId)};\n`);
381
+ /**
382
+ * The files of the site that serving reads: the storage URL of each entry, which only the
383
+ * component can make, read with inline queries in the component, which work whatever release of
384
+ * this package its functions are, and the deployment's `CONVEX_CLOUD_URL`, their origin.
385
+ */
386
+ async function assetFiles(cli, target, versionId, config, entries) {
387
+ const urls = new Map();
388
+ let cloudUrl = "";
389
+ let after = "";
390
+ for (;;) {
391
+ const page = await runComponentQuery(cli, target, `const rows = await ctx.db.query("entries").withIndex("by_version_path", (q) => ` +
392
+ `q.eq("versionId", ${JSON.stringify(versionId)}).gt("path", ${JSON.stringify(after)}))` +
393
+ `.take(${URL_PAGE}); return { cloudUrl: process.env.CONVEX_CLOUD_URL, files: await ` +
394
+ `Promise.all(rows.map(async (row) => [row.path, await ctx.storage.getUrl(row.storageId)])) };`, z.object({
395
+ cloudUrl: z.string(),
396
+ files: z.array(z.tuple([z.string(), z.string().nullable()])),
397
+ }));
398
+ cloudUrl = page.cloudUrl;
399
+ for (const [path, url] of page.files) {
400
+ if (url === null) {
401
+ throw new Error(`The stored file of ${path} is gone, deleted by the age rule; run the deploy again.`);
402
+ }
403
+ urls.set(path, url);
404
+ }
405
+ if (page.files.length < URL_PAGE)
406
+ break;
407
+ after = page.files[page.files.length - 1][0];
408
+ }
409
+ return buildAssetFiles(cloudUrl, siteConfig(config), entries.map(({ path, sha256, contentType }) => {
410
+ const url = urls.get(path);
411
+ if (url === undefined)
412
+ throw new Error(`Version ${versionId} has no entry for ${path}.`);
413
+ return { path, sha256, contentType, url };
414
+ }));
359
415
  }
360
- /** Writes a file of the state folder, and the folder's `.gitignore` when it is absent. */
416
+ /** The line of the version file that holds the assets. */
417
+ const ASSETS_LINE = "export const assets = ";
418
+ /**
419
+ * Writes the version file. The assets carry their type as JSDoc: Convex's default
420
+ * `convex/tsconfig.json` sets `allowJs`, so tsc reads this file instead of the package's
421
+ * declaration, and would infer `string` where `Assets` has a union of literals.
422
+ */
423
+ function writeVersionFile(cli, assets) {
424
+ writeStateFile(cli, VERSION_FILE, `/** @type {import("@samebase/convex-hosting").Assets} */\n` +
425
+ `${ASSETS_LINE}${JSON.stringify(assets)};\n`);
426
+ }
427
+ /** The id and the mark token of the assets in the version file that the upload wrote. */
428
+ function readVersionFile(cli) {
429
+ const line = readFileSync(join(cli.cwd, VERSION_FILE), "utf8")
430
+ .split("\n")
431
+ .find((text) => text.startsWith(ASSETS_LINE));
432
+ if (line === undefined)
433
+ throw new Error(`${VERSION_FILE} has no assets.`);
434
+ return z
435
+ .object({ versionId: z.string(), markToken: z.string() })
436
+ .parse(JSON.parse(line.slice(ASSETS_LINE.length, -1)));
437
+ }
438
+ /**
439
+ * Asks the code that the deployment serves to mark its version live, with the site's mark token,
440
+ * which only the code of this deploy has. A failure deletes nothing: the versions live before stay
441
+ * until a later deploy marks its own, so it is reported, and the deploy succeeds.
442
+ */
443
+ async function markServedVersion(cli, url, site) {
444
+ const later = `Version ${site.versionId} serves, and the next deploy deletes the files of the versions before it.`;
445
+ let answer;
446
+ try {
447
+ // A redirect would carry the token to another origin, so it counts as other code answering.
448
+ const response = await cli.fetch(url + MARK_PATH, {
449
+ method: "POST",
450
+ headers: { [MARK_HEADER]: site.markToken },
451
+ redirect: "manual",
452
+ });
453
+ // Other code answers the path with a page or a 404, which is no mark.
454
+ answer = response.ok ? await response.json().catch(() => null) : null;
455
+ }
456
+ catch (error) {
457
+ const message = error instanceof Error ? error.message : String(error);
458
+ cli.log(`Asking the site to mark version ${site.versionId} live failed: ${message}. ${later}`);
459
+ return;
460
+ }
461
+ const parsed = z.object({ versionId: z.string(), result: z.string() }).safeParse(answer);
462
+ if (!parsed.success || parsed.data.versionId !== site.versionId) {
463
+ cli.log(`The site did not answer as version ${site.versionId}, so its code is not this deploy's.`);
464
+ return;
465
+ }
466
+ const { result } = parsed.data;
467
+ if (result === "superseded") {
468
+ cli.log(`Another version went live over ${site.versionId}, so a deploy overlapped this one; ${later}`);
469
+ }
470
+ else if (result !== "marked" && result !== "live") {
471
+ cli.log(`Version ${site.versionId} could not be marked live: it is ${result}.`);
472
+ }
473
+ }
474
+ /**
475
+ * Writes a file of the state folder, and the folder's `.gitignore` when it is absent. It writes a
476
+ * temporary file and renames it, so a running `npx convex dev` never reads half a file.
477
+ */
361
478
  function writeStateFile(cli, path, body) {
362
479
  const gitignore = join(cli.cwd, STATE_DIR, ".gitignore");
363
480
  if (!existsSync(gitignore)) {
364
481
  mkdirSync(join(cli.cwd, STATE_DIR), { recursive: true });
365
482
  writeFileSync(gitignore, "*\n");
366
483
  }
367
- writeFileSync(join(cli.cwd, path), body);
484
+ writeFileSync(join(cli.cwd, `${path}.tmp`), body);
485
+ renameSync(join(cli.cwd, `${path}.tmp`), join(cli.cwd, path));
368
486
  }
369
487
  /** Stores one file through an upload URL and returns its storage id; `what` names it in errors. */
370
488
  async function store(cli, url, body, contentType, what) {
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,YAAY,EACZ,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,OAAO,GAIR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAwC,MAAM,YAAY,CAAC;AAE5E,MAAM,KAAK,GAAG;;;;;;;;;;;;;;0CAc4B,CAAC;AAE3C;;;GAGG;AACH,MAAM,SAAS,GAAG,iBAAiB,CAAC;AAEpC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAE9D,sDAAsD;AACtD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B;;;GAGG;AACH,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AAC1E,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;AAanF,SAAS,YAAY,CAAC,IAAc;IAClC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI;QACJ,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACxC,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAClC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE;YACnE,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;YACzD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE;YACjD,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAChC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;SACtD;KACF,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC9D,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC;IACpC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IACxF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;IAClF,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mCAAmC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACxF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,wCAAwC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAY;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,aAAa,EAAE,YAAY,CAAC,IAAI;QAChC,kBAAkB,EAAE,gBAAgB,CAAC,IAAI;QACzC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,GAAG;YACrB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;YACjB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,SAAS;gBACpC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;gBACxB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE;KACxD,CAAC;IACF,6FAA6F;IAC7F,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACnF,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc,EAAE,GAAQ;IACjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,SAAS,KAAK,CAAC,GAAW;IACxB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,MAAM,CAAC,GAAQ,EAAE,OAAgB,EAAE,KAAyB;IACzE,kGAAkG;IAClG,2FAA2F;IAC3F,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,yFAAyF;IACzF,8BAA8B;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,uBAAuB,CAAC;IACjE,MAAM,GAAG,GAAG,GAAG,KAAK,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,IAAI,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,+EAA+E;YAC7E,oGAAoG,CACvG,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjF,mFAAmF;QACnF,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;YAClC,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,mBAAmB,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6DAA6D,IAAI,GAAG,CAAC,CAAC;IACxF,CAAC;IACD,4FAA4F;IAC5F,mGAAmG;IACnG,IACE,CAAC,GAAG;QACJ,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS;QACtC,CAAC,GAAG,CAAC,iBAAiB;QACtB,CAAC,GAAG,CAAC,sBAAsB,EAC3B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,4FAA4F;YAC1F,4EAA4E;YAC5E,oCAAoC,CACvC,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAW;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC;KACpD,CAAC;IACF,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACvC,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,MAAM,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6EAA6E;QAC7E,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,sCAAsC,OAAO,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,oBAAoB,SAAS,OAAO,GAAG,GAAG,CAAC,CAAC;IACpD,IAAI,GAAG,CAAC,GAAG,CAAC,aAAa;QAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;AACnF,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,SAAS,CACtB,GAAQ,EACR,OAAgB,EAChB,MAAc,EACd,SAAiB,EACjB,KAAyB;IAEzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,aAAa,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,aAAa,GAAG,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxF,IAAI,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,GAAG,CAAC,CAAC;IAChG,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACpF,CAAC;AAED,uGAAuG;AACvG,KAAK,UAAU,sBAAsB,CACnC,GAAQ,EACR,OAAgB,EAChB,MAAc,EACd,SAAiB,EACjB,KAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACnD,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,8EAA8E;IAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACrE,MAAM,YAAY,GAChB,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,MAAM,WAAW,GAAG;QAClB,OAAO,CAAC,QAAQ;QAChB,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,QAAQ;QACR,QAAQ;QACR,OAAO,CAAC,IAAI;QACZ,cAAc;QACd,SAAS;QACT,iBAAiB;QACjB,OAAO,CAAC,aAAa;QACrB,sBAAsB;QACtB,OAAO,CAAC,kBAAkB;QAC1B,aAAa;QACb,OAAO,CAAC,SAAS;QACjB,GAAG,YAAY;KAChB;SACE,GAAG,CAAC,KAAK,CAAC;SACV,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,4FAA4F;IAC5F,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC;QACzC,QAAQ;QACR,OAAO;QACP,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,WAAW,EAAE;QAChE,GAAG,WAAW;KACf,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,IAAI,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,QAAQ,GAAG,CAAC,CAAC;IAC5F,IAAI,YAAY;QAAE,MAAM,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED,wGAAwG;AACxG,KAAK,UAAU,kBAAkB,CAAC,GAAQ,EAAE,OAAgB,EAAE,SAAiB;IAC7E,MAAM,MAAM,GAAW;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC;KACpD,CAAC;IACF,IAAI,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAClE,cAAc,CAAC,GAAG,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAC9C,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,OAAO,kBAAkB,SAAS,mFAAmF,CAAC;AACxH,CAAC;AAED,wGAAwG;AACxG,KAAK,UAAU,eAAe,CAAC,GAAQ,EAAE,OAAgB,EAAE,MAAc,EAAE,SAAiB;IAC1F,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,kBAAkB,OAAO,CAAC,SAAS,oDAAoD;YACrF,UAAU,OAAO,EAAE,CACtB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,MAAM,CACnB,GAAQ,EACR,OAAgB,EAChB,MAAc,EACd,SAAiB;IAEjB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE,CAC3C,YAAY,CACV,GAAG,EACH,MAAM,EACN,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAC/B,EAAE,KAAK,EAAE,EACT,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAClC,CAAC;IAEJ,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,qBAAqB,SAAS,KAAK,OAAO,CAAC,MAAM,SAAS,CAAC,CAAC;IACpE,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,EACH,SAAS,EACT,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EACtB,kBAAkB,EAClB,YAAY,CACb,CAAC;IACF,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6FAA6F;QAC7F,gFAAgF;QAChF,IACE,KAAK,YAAY,KAAK;YACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,iDAAiD,CAAC,EACzE,CAAC;YACD,MAAM,IAAI,KAAK,CACb,kBAAkB,OAAO,CAAC,SAAS,2CAA2C;gBAC5E,0EAA0E;gBAC1E,sFAAsF;gBACtF,qGAAqG,CACxG,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,qDAAqD;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IACD,sFAAsF;IACtF,MAAM,MAAM,GAAG,KAAK,EAAE,MAAuD,EAAE,EAAE;QAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CACxD,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YACzD,IAAI;YACJ,MAAM;YACN,WAAW;YACX,SAAS;SACV,CAAC,CAAC,CACJ,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,MAAM,YAAY,CAChB,GAAG,EACH,MAAM,EACN,QAAQ,CAAC,GAAG,CAAC,WAAW,EACxB,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAC7B,CAAC,CAAC,IAAI,EAAE,CACT,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,iEAAiE;IACjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,YAAY,CAC9B,GAAG,EACH,MAAM,EACN,QAAQ,CAAC,GAAG,CAAC,UAAU,EACvB,EAAE,OAAO,EAAE,EACX,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,CACtE,CAAC;QACF,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACpF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAoD,EAAE,CAAC;QACrE,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;YACxB,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;gBACrB,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;gBACvF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrF,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjC,GAAG,CAAC,GAAG,CAAC,oBAAoB,SAAS,cAAc,YAAY,GAAG,CAAC,CAAC;IACpE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAQ,EAAE,SAAiB;IACnD,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChG,CAAC;AAED,0FAA0F;AAC1F,SAAS,cAAc,CAAC,GAAQ,EAAE,IAAY,EAAE,IAAY;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,mGAAmG;AACnG,KAAK,UAAU,KAAK,CAClB,GAAQ,EACR,GAAW,EACX,IAAsC,EACtC,WAA+B,EAC/B,IAAY;IAEZ,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE;YACzE,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,YAAY,OAAO,8DAA8D,CACjG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,gBAAgB,QAAQ,CAAC,MAAM,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED;;;;;GAKG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAiB,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAEvF,SAAS,aAAa,CAAI,KAAU;IAClC,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,IAAI,KAAK,GAAQ,EAAE,CAAC;IACpB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,UAAU,GAAG,mBAAmB,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,GAAG,EAAE,CAAC;YACX,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,IAAI,UAAU,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { NormalizedAssetConfig } from "../workers-sdk/packages/workers-shared/asset-worker/src/types.js";
2
+ import { type AssetFiles } from "../client/manifest.js";
3
+ /** One file of a version, as the upload knows it. */
4
+ export type AssetEntry = {
5
+ /** The URL path, such as `/assets/index-a1b2.js`. */
6
+ path: string;
7
+ /** The hex SHA-256 of the bytes. */
8
+ sha256: string;
9
+ contentType: string | undefined;
10
+ url: string;
11
+ };
12
+ /**
13
+ * Builds the files that serving reads. The manifest is encoded as Miniflare encodes it for
14
+ * `wrangler dev`: a 20-byte header, then one 40-byte entry per path, sorted by the path hash. The
15
+ * content hash covers the bytes and the content type, as Cloudflare's covers the bytes and the
16
+ * extension, so the same bytes under two types are two entries with two ETags. The storage URLs
17
+ * differ only in a key, so what they share is written once.
18
+ */
19
+ export declare function buildAssetFiles(cloudUrl: string, config: NormalizedAssetConfig, entries: AssetEntry[]): AssetFiles;
@@ -0,0 +1,71 @@
1
+ import { createHash } from "node:crypto";
2
+ import { CONTENT_HASH_OFFSET, CONTENT_HASH_SIZE, ENTRY_SIZE, HEADER_SIZE, PATH_HASH_OFFSET, PATH_HASH_SIZE, } from "../workers-sdk/packages/workers-shared/utils/constants.js";
3
+ import { NO_CONTENT_TYPE, TAIL_CONTENT_TYPE, TAIL_URL, } from "../client/manifest.js";
4
+ const sha256 = (text) => createHash("sha256").update(text).digest();
5
+ /**
6
+ * Builds the files that serving reads. The manifest is encoded as Miniflare encodes it for
7
+ * `wrangler dev`: a 20-byte header, then one 40-byte entry per path, sorted by the path hash. The
8
+ * content hash covers the bytes and the content type, as Cloudflare's covers the bytes and the
9
+ * extension, so the same bytes under two types are two entries with two ETags. The storage URLs
10
+ * differ only in a key, so what they share is written once.
11
+ */
12
+ export function buildAssetFiles(cloudUrl, config, entries) {
13
+ // Sorted, so the same files write the same version file.
14
+ const urls = [...new Set(entries.map(({ url }) => url))].sort();
15
+ const contentTypes = [
16
+ ...new Set(entries.flatMap(({ contentType }) => (contentType === undefined ? [] : [contentType]))),
17
+ ].sort();
18
+ const urlIndex = new Map(urls.map((url, index) => [url, index]));
19
+ const urlPrefix = sharedStart(urls);
20
+ const urlSuffix = sharedEnd(urls.map((url) => url.slice(urlPrefix.length)));
21
+ const keys = urls.map((url) => url.slice(urlPrefix.length, url.length - urlSuffix.length));
22
+ const urlKeyWidth = keys.reduce((width, key) => Math.max(width, key.length), 0);
23
+ const contentTypeIndex = new Map(contentTypes.map((type, index) => [type, index]));
24
+ const sorted = entries
25
+ .map((entry) => ({ entry, pathHash: sha256(entry.path).subarray(0, PATH_HASH_SIZE) }))
26
+ .sort((a, b) => Buffer.compare(a.pathHash, b.pathHash));
27
+ const manifest = Buffer.alloc(HEADER_SIZE + sorted.length * ENTRY_SIZE);
28
+ sorted.forEach(({ entry, pathHash }, i) => {
29
+ const offset = HEADER_SIZE + i * ENTRY_SIZE;
30
+ pathHash.copy(manifest, offset + PATH_HASH_OFFSET);
31
+ sha256(`${entry.sha256}\n${entry.contentType ?? ""}`).copy(manifest, offset + CONTENT_HASH_OFFSET, 0, CONTENT_HASH_SIZE);
32
+ const tail = offset + CONTENT_HASH_OFFSET + CONTENT_HASH_SIZE;
33
+ manifest.writeUInt32BE(urlIndex.get(entry.url) ?? 0, tail + TAIL_URL);
34
+ manifest.writeUInt16BE(entry.contentType === undefined
35
+ ? NO_CONTENT_TYPE
36
+ : (contentTypeIndex.get(entry.contentType) ?? 0), tail + TAIL_CONTENT_TYPE);
37
+ });
38
+ return {
39
+ cloudUrl,
40
+ config,
41
+ manifest: manifest.toString("base64"),
42
+ contentTypes,
43
+ urlPrefix,
44
+ urlSuffix,
45
+ urlKeys: keys.map((key) => key.padEnd(urlKeyWidth)).join(""),
46
+ urlKeyWidth,
47
+ };
48
+ }
49
+ function sharedStart(texts) {
50
+ let start = texts[0] ?? "";
51
+ for (const text of texts) {
52
+ let length = 0;
53
+ while (length < start.length && start[length] === text[length])
54
+ length++;
55
+ start = start.slice(0, length);
56
+ }
57
+ return start;
58
+ }
59
+ function sharedEnd(texts) {
60
+ let end = texts[0] ?? "";
61
+ for (const text of texts) {
62
+ let length = 0;
63
+ while (length < Math.min(end.length, text.length) &&
64
+ end[end.length - 1 - length] === text[text.length - 1 - length]) {
65
+ length++;
66
+ }
67
+ end = end.slice(end.length - length);
68
+ }
69
+ return end;
70
+ }
71
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/cli/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,GACf,MAAM,2DAA2D,CAAC;AACnE,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,QAAQ,GAET,MAAM,uBAAuB,CAAC;AAY/B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,MAA6B,EAC7B,OAAqB;IAErB,yDAAyD;IACzD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,MAAM,YAAY,GAAG;QACnB,GAAG,IAAI,GAAG,CACR,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CACvF;KACF,CAAC,IAAI,EAAE,CAAC;IACT,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnF,MAAM,MAAM,GAAG,OAAO;SACnB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;SACrF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IACxE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,WAAW,GAAG,CAAC,GAAG,UAAU,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CACxD,QAAQ,EACR,MAAM,GAAG,mBAAmB,EAC5B,CAAC,EACD,iBAAiB,CAClB,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;QAC9D,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC;QACtE,QAAQ,CAAC,aAAa,CACpB,KAAK,CAAC,WAAW,KAAK,SAAS;YAC7B,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAClD,IAAI,GAAG,iBAAiB,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO;QACL,QAAQ;QACR,MAAM;QACN,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACrC,YAAY;QACZ,SAAS;QACT,SAAS;QACT,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAe;IAClC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC;YAAE,MAAM,EAAE,CAAC;QACzE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,KAAe;IAChC,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OACE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAC1C,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,EAC/D,CAAC;YACD,MAAM,EAAE,CAAC;QACX,CAAC;QACD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { Config } from "../component/lib.js";
2
+ /** A version's config as Cloudflare's handler takes it, which the site carries. */
3
+ export declare function siteConfig(config: Config): Required<{
4
+ account_id?: number | undefined;
5
+ script_id?: number | undefined;
6
+ debug?: boolean | undefined;
7
+ compatibility_date?: string | undefined;
8
+ compatibility_flags?: string[] | undefined;
9
+ html_handling?: "auto-trailing-slash" | "drop-trailing-slash" | "force-trailing-slash" | "none" | undefined;
10
+ not_found_handling?: "404-page" | "none" | "single-page-application" | undefined;
11
+ base_path?: string | undefined;
12
+ redirects?: {
13
+ version: 1;
14
+ staticRules: Record<string, {
15
+ status: number;
16
+ to: string;
17
+ lineNumber: number;
18
+ }>;
19
+ rules: Record<string, {
20
+ status: number;
21
+ to: string;
22
+ }>;
23
+ } | undefined;
24
+ headers?: {
25
+ version: 2;
26
+ rules: Record<string, {
27
+ set?: Record<string, string> | undefined;
28
+ unset?: string[] | undefined;
29
+ }>;
30
+ } | undefined;
31
+ has_static_routing?: boolean | undefined;
32
+ }>;
@@ -0,0 +1,15 @@
1
+ import { normalizeConfiguration } from "../workers-sdk/packages/workers-shared/asset-worker/src/configuration.js";
2
+ import { AssetConfigSchema } from "../workers-sdk/packages/workers-shared/utils/types.js";
3
+ /**
4
+ * The compatibility date of Cloudflare's handler. From 2025-04-01 on, Cloudflare applies
5
+ * `not_found_handling` to a request with `Sec-Fetch-Mode: navigate` when a Worker exists.
6
+ */
7
+ const COMPATIBILITY_DATE = "2025-04-01";
8
+ /** A version's config as Cloudflare's handler takes it, which the site carries. */
9
+ export function siteConfig(config) {
10
+ return normalizeConfiguration({
11
+ ...AssetConfigSchema.parse(config),
12
+ compatibility_date: COMPATIBILITY_DATE,
13
+ });
14
+ }
15
+ //# sourceMappingURL=site-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-config.js","sourceRoot":"","sources":["../../src/cli/site-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0EAA0E,CAAC;AAClH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAE1F;;;GAGG;AACH,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAExC,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,sBAAsB,CAAC;QAC5B,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,kBAAkB,EAAE,kBAAkB;KACvC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type AssetFiles } from "./manifest.js";
2
+ /** An answer of Cloudflare's handler, and the storage URL of its body, if it has one. */
3
+ export type Answer = {
4
+ status: number;
5
+ headers: Headers;
6
+ url: string | null;
7
+ };
8
+ /**
9
+ * Runs Cloudflare's asset handler for `request` against the version's files, or returns `null` when
10
+ * no asset answers. `hasUserWorker` is Cloudflare's `has_user_worker`: whether the app has code that
11
+ * answers a miss. With it, Cloudflare's router asks `canFetch` first, which keeps
12
+ * `not_found_handling` for navigations only, and the app answers the other misses. Without it,
13
+ * every request goes to `handleRequest`, so `not_found_handling` applies to all of them, and an
14
+ * asset always answers.
15
+ */
16
+ export declare function answer(files: AssetFiles, request: Request, hasUserWorker: boolean): Promise<Answer | null>;
@@ -0,0 +1,51 @@
1
+ import { Analytics } from "../workers-sdk/packages/workers-shared/asset-worker/src/analytics.js";
2
+ import { canFetch, handleRequest, } from "../workers-sdk/packages/workers-shared/asset-worker/src/handler.js";
3
+ import { mockJaegerBinding } from "../workers-sdk/packages/workers-shared/utils/tracing.js";
4
+ import { manifestLookup } from "./manifest.js";
5
+ /**
6
+ * Runs Cloudflare's asset handler for `request` against the version's files, or returns `null` when
7
+ * no asset answers. `hasUserWorker` is Cloudflare's `has_user_worker`: whether the app has code that
8
+ * answers a miss. With it, Cloudflare's router asks `canFetch` first, which keeps
9
+ * `not_found_handling` for navigations only, and the app answers the other misses. Without it,
10
+ * every request goes to `handleRequest`, so `not_found_handling` applies to all of them, and an
11
+ * asset always answers.
12
+ */
13
+ export async function answer(files, request, hasUserWorker) {
14
+ const env = { JAEGER: mockJaegerBinding() };
15
+ // `exists` returns the entry's ETag; `getByETag` gets the entry back for that ETag.
16
+ const lookup = manifestLookup(files);
17
+ const found = new Map();
18
+ const exists = async (pathname) => {
19
+ const hit = await lookup(pathname);
20
+ if (hit === null)
21
+ return null;
22
+ found.set(hit.eTag, hit);
23
+ return hit.eTag;
24
+ };
25
+ let body;
26
+ const getByETag = async (eTag) => {
27
+ body = found.get(eTag);
28
+ if (body === undefined)
29
+ throw new Error(`No entry has the ETag ${eTag}.`);
30
+ return {
31
+ // `withBody` replaces this placeholder with the stored file.
32
+ readableStream: new ReadableStream(),
33
+ contentType: body.contentType,
34
+ cacheStatus: "MISS",
35
+ };
36
+ };
37
+ if (hasUserWorker && !(await canFetch(request, env, files.config, exists)))
38
+ return null;
39
+ const response = await handleRequest(request, env, files.config, exists, getByETag, new Analytics());
40
+ // It describes Cloudflare's cache, which does not exist here.
41
+ response.headers.delete("CF-Cache-Status");
42
+ // The deployment's Cloudflare front caches 404 answers on static paths.
43
+ if (response.status === 404)
44
+ response.headers.set("Cache-Control", "no-store");
45
+ return {
46
+ status: response.status,
47
+ headers: response.headers,
48
+ url: response.body !== null && body !== undefined ? body.url : null,
49
+ };
50
+ }
51
+ //# sourceMappingURL=answer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../src/client/answer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sEAAsE,CAAC;AACjG,OAAO,EACL,QAAQ,EACR,aAAa,GACd,MAAM,oEAAoE,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAqC,MAAM,eAAe,CAAC;AAKlF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAiB,EACjB,OAAgB,EAChB,aAAsB;IAEtB,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC;IAC5C,oFAAoF;IACpF,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC,CAAC;IACF,IAAI,IAA6B,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACvC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,GAAG,CAAC,CAAC;QAC1E,OAAO;YACL,6DAA6D;YAC7D,cAAc,EAAE,IAAI,cAAc,EAAE;YACpC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,MAAe;SAC7B,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,aAAa,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACxF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC,OAAO,EACP,GAAG,EACH,KAAK,CAAC,MAAM,EACZ,MAAM,EACN,SAAS,EACT,IAAI,SAAS,EAAE,CAChB,CAAC;IACF,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC3C,wEAAwE;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC/E,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,GAAG,EAAE,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;KACpE,CAAC;AACJ,CAAC"}
@@ -1,15 +1,35 @@
1
1
  import "./runtime.js";
2
2
  import { type HttpRouter, type PublicHttpAction } from "convex/server";
3
3
  import type { ComponentApi } from "../component/_generated/component.js";
4
+ import { type Assets } from "./manifest.js";
5
+ export type { Assets } from "./manifest.js";
6
+ /** What `routeAll` routes, each named as Cloudflare and Convex name it. */
7
+ export type RouteAllOptions = {
8
+ /** The app's router, from `httpRouter()`. */
9
+ http: HttpRouter;
10
+ /** The installed component: `components.hosting`. */
11
+ component: ComponentApi;
12
+ /** `assets` from `.convex-hosting/version.js`, which `convex-hosting deploy` writes. */
13
+ assets: Assets;
14
+ /**
15
+ * The Worker script: the object with `fetch(request)` that the app's server entry exports, the
16
+ * code that runs on a miss. Without it, the site is assets only.
17
+ */
18
+ worker?: {
19
+ fetch(request: Request): Promise<Response>;
20
+ };
21
+ };
4
22
  /**
5
23
  * Routes the site on the app's router: `serveSite`'s action for every method Convex routes, at
6
24
  * every path, as every request reaches a Cloudflare Worker with static assets. Convex answers HEAD
7
25
  * through GET.
8
26
  *
27
+ * ```ts
28
+ * routeAll({ http, component: components.hosting, assets, worker: server });
29
+ * ```
30
+ *
9
31
  * Returns the action, for the paths that a component's HTTP prefix would otherwise take: Convex
10
32
  * picks an exact route first, then the longest prefix, so an app whose session routes sit under a
11
33
  * component's prefix registers them with `http.route({ path, method, handler })`.
12
34
  */
13
- export declare function routeAll(http: HttpRouter, component: ComponentApi, versionId: string, worker?: {
14
- fetch(request: Request): Promise<Response>;
15
- }): PublicHttpAction;
35
+ export declare function routeAll(options: RouteAllOptions): PublicHttpAction;