@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
@@ -1,17 +1,8 @@
1
1
  import { ConvexError, v } from "convex/values";
2
2
  import { z } from "zod";
3
- import { Analytics } from "../workers-sdk/packages/workers-shared/asset-worker/src/analytics.js";
4
- import { normalizeConfiguration } from "../workers-sdk/packages/workers-shared/asset-worker/src/configuration.js";
5
- import { canFetch, handleRequest, } from "../workers-sdk/packages/workers-shared/asset-worker/src/handler.js";
6
- import { mockJaegerBinding } from "../workers-sdk/packages/workers-shared/utils/tracing.js";
7
3
  import { AssetConfigSchema } from "../workers-sdk/packages/workers-shared/utils/types.js";
8
4
  import { internal } from "./_generated/api.js";
9
- import { internalAction, internalMutation, internalQuery, mutation, query, } from "./_generated/server.js";
10
- /**
11
- * The compatibility date of Cloudflare's handler. From 2025-04-01 on, Cloudflare applies
12
- * `not_found_handling` to a request with `Sec-Fetch-Mode: navigate` when a Worker exists.
13
- */
14
- const COMPATIBILITY_DATE = "2025-04-01";
5
+ import { internalAction, internalMutation, internalQuery, mutation, } from "./_generated/server.js";
15
6
  /**
16
7
  * A version that never became live, and a stored file that no entry references, are garbage once
17
8
  * they are a day old: a failed deploy leaves them, and an upload in progress is younger. This age
@@ -216,39 +207,49 @@ export const finishVersion = internalMutation({
216
207
  },
217
208
  });
218
209
  /**
219
- * Marks a `ready` version `live` and schedules `collect`. `serveSite` calls it at each request that
220
- * finds the version `ready`. An older upload never goes live over a newer one: the mark does nothing
221
- * when a live version was created after this one. So a request that started on replaced code, and
222
- * reaches its lookup or its mark after the new code's first request marked the new version, cannot
223
- * make the old version newest, and `collect` cannot delete the new version's files. A version that
224
- * is already live stays as it is, so concurrent first requests are fine.
210
+ * Marks a `ready` version `live` and schedules `collect`, and says what it did. `serveSite` calls
211
+ * it for the request that the CLI sends after the push, with the site's mark token, so only the
212
+ * code that serves marks its own version. A version that is already live stays as it is, so a
213
+ * repeated mark is fine. It never throws, so the CLI reads every outcome from the answer.
214
+ *
215
+ * The request may still run when its code is replaced, so two rules refuse a mark of replaced code.
216
+ * An older upload never goes live over a newer one: the mark does nothing when a live version was
217
+ * created after this one. And a mark is late when another version went live after its request
218
+ * arrived, at `arrivedAt`: that version's code has served since. `arrivedAt` is the HTTP action's
219
+ * clock and the live time is this mutation's, so the rule holds as far as the two agree.
225
220
  *
226
- * Precondition: deploys to one deployment do not overlap. When two overlap and the older upload is
227
- * pushed last, its requests look like requests of replaced code: its version serves but stays
228
- * `ready`, and nothing is deleted until the next deploy.
221
+ * Precondition: deploys to one deployment do not overlap. When two overlap, the mark of the
222
+ * version that serves may be refused: it then stays `ready`, and nothing is deleted until the next
223
+ * deploy. The limits are in `docs/design.md`, "Stated, not solved".
229
224
  */
230
225
  export const markLive = mutation({
231
- args: { versionId: v.string() },
232
- returns: v.null(),
233
- handler: async (ctx, { versionId }) => {
234
- const version = await getVersionOrThrow(ctx, versionId);
235
- if (version.state.kind === "live")
236
- return null;
237
- if (version.state.kind === "uploading") {
238
- throw new ConvexError(`Version ${versionId} is still uploading.`);
239
- }
240
- if (version.state.kind === "deleting") {
241
- throw new ConvexError(`Version ${versionId} is being deleted.`);
242
- }
226
+ args: {
227
+ versionId: v.string(),
228
+ /** `Date.now()` when the mark's request reached the code that serves. */
229
+ arrivedAt: v.number(),
230
+ },
231
+ returns: v.union(
232
+ /** It was `ready` and is now the newest live version. */
233
+ v.literal("marked"), v.literal("live"),
234
+ /** A live version was created after it, or went live after `arrivedAt`: it stays as it is. */
235
+ v.literal("superseded"), v.literal("uploading"), v.literal("deleting"), v.literal("missing")),
236
+ handler: async (ctx, { versionId, arrivedAt }) => {
237
+ const version = await getVersion(ctx, versionId);
238
+ if (version === null)
239
+ return "missing";
240
+ if (version.state.kind !== "ready")
241
+ return version.state.kind;
243
242
  const newest = await getNewestLive(ctx);
244
243
  if (newest !== null && newest.createdAt > version._creationTime)
245
- return null;
244
+ return "superseded";
245
+ if (newest !== null && newest.at > arrivedAt)
246
+ return "superseded";
246
247
  // Later than every live `at`, also within one millisecond or when the clock moves back, so that
247
248
  // `at` follows creation order and `collect` deletes the versions live before this one.
248
249
  const at = newest === null ? Date.now() : Math.max(Date.now(), newest.at + 1);
249
250
  await ctx.db.patch("versions", version._id, { state: { kind: "live", at } });
250
251
  await ctx.scheduler.runAfter(0, internal.lib.collect, { step: { kind: "files" } });
251
- return null;
252
+ return "marked";
252
253
  },
253
254
  });
254
255
  /**
@@ -337,7 +338,7 @@ export const collect = internalMutation({
337
338
  await ctx.db.delete("entries", entry._id);
338
339
  if (entries.length === budget) {
339
340
  // The version may have more entries: the next call reads it again. Until its row goes,
340
- // it is `deleting`, so that no request serves it or marks it live between the pages.
341
+ // it is `deleting`, so that no mark makes it live between the pages.
341
342
  if (state.kind !== "deleting") {
342
343
  await ctx.db.patch("versions", version._id, { state: { kind: "deleting" } });
343
344
  }
@@ -365,108 +366,8 @@ function advance(cursor, document) {
365
366
  ? { at: cursor.at, seen: [...cursor.seen, document._id] }
366
367
  : { at: document._creationTime, seen: [document._id] };
367
368
  }
368
- const routeHeaders = v.record(v.string(), v.string());
369
- /**
370
- * Runs Cloudflare's asset handler for one request against one version. `state` is the kind of the
371
- * version's state, or `null` when the version does not exist. `asset` is `null` when the version is
372
- * uploading, being deleted, or does not exist, or when no asset answers.
373
- *
374
- * `hasUserWorker` is Cloudflare's `has_user_worker`: whether the app has code that answers a miss.
375
- * With it, Cloudflare's router asks `canFetch` first, which keeps `not_found_handling` for
376
- * navigations only, and the app answers the other misses. Without it, every request goes to
377
- * `handleRequest`, so `not_found_handling` applies to all of them, and an asset always answers.
378
- */
379
- export const route = query({
380
- args: {
381
- versionId: v.string(),
382
- method: v.string(),
383
- url: v.string(),
384
- headers: routeHeaders,
385
- hasUserWorker: v.boolean(),
386
- },
387
- returns: v.object({
388
- state: v.union(v.literal("uploading"), v.literal("ready"), v.literal("live"), v.literal("deleting"), v.null()),
389
- asset: v.union(v.null(), v.object({
390
- status: v.number(),
391
- headers: v.array(v.object({ name: v.string(), value: v.string() })),
392
- /** The storage URL of the body, when the response has one. */
393
- bodyUrl: v.union(v.string(), v.null()),
394
- })),
395
- }),
396
- handler: async (ctx, { versionId, method, url, headers, hasUserWorker }) => {
397
- const version = await getVersion(ctx, versionId);
398
- if (version === null)
399
- return { state: null, asset: null };
400
- const state = version.state.kind;
401
- if (state === "uploading" || state === "deleting") {
402
- return { state, asset: null };
403
- }
404
- const configuration = normalizeConfiguration({
405
- ...AssetConfigSchema.parse(JSON.parse(version.config)),
406
- compatibility_date: COMPATIBILITY_DATE,
407
- });
408
- const request = new Request(url, { method, headers });
409
- const env = { JAEGER: mockJaegerBinding() };
410
- // `exists` returns an ETag; `getByETag` gets the entry back for that ETag.
411
- const found = new Map();
412
- const exists = async (pathname) => {
413
- const entry = await getEntry(ctx, versionId, pathname);
414
- if (entry === null)
415
- return null;
416
- const eTag = entry.sha256 + (await shortHash(entry.contentType ?? ""));
417
- found.set(eTag, entry);
418
- return eTag;
419
- };
420
- let bodyEntry;
421
- const getByETag = async (eTag) => {
422
- bodyEntry = found.get(eTag);
423
- if (bodyEntry === undefined)
424
- throw new Error(`No entry has the ETag ${eTag}.`);
425
- return {
426
- // `serveSite` replaces this placeholder with the stored file.
427
- readableStream: new ReadableStream(),
428
- contentType: bodyEntry.contentType,
429
- cacheStatus: "MISS",
430
- };
431
- };
432
- if (hasUserWorker && !(await canFetch(request, env, configuration, exists))) {
433
- return { state, asset: null };
434
- }
435
- const response = await handleRequest(request, env, configuration, exists, getByETag, new Analytics());
436
- // It describes Cloudflare's cache, which does not exist here.
437
- response.headers.delete("CF-Cache-Status");
438
- // The deployment's Cloudflare front caches 404 answers on static paths.
439
- if (response.status === 404)
440
- response.headers.set("Cache-Control", "no-store");
441
- let bodyUrl = null;
442
- if (response.body !== null && bodyEntry !== undefined) {
443
- bodyUrl = await ctx.storage.getUrl(bodyEntry.storageId);
444
- // The file is gone from storage. As in `serveSite` when storage answers 404, the answer must
445
- // not stay in a cache.
446
- if (bodyUrl === null) {
447
- return {
448
- state,
449
- asset: { status: 404, headers: [{ name: "cache-control", value: "no-store" }], bodyUrl },
450
- };
451
- }
452
- }
453
- return {
454
- state,
455
- asset: {
456
- status: response.status,
457
- headers: [...response.headers].map(([name, value]) => ({ name, value })),
458
- bodyUrl,
459
- },
460
- };
461
- },
462
- });
463
369
  /** Convex's `_storage` table holds the sha256 in base64; entries hold it in hex. */
464
370
  function base64ToHex(base64) {
465
371
  return Array.from(atob(base64), (char) => char.charCodeAt(0).toString(16).padStart(2, "0")).join("");
466
372
  }
467
- /** The first 8 hex digits of the SHA-256 of `text`. */
468
- async function shortHash(text) {
469
- const digest = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(text));
470
- return Array.from(new Uint8Array(digest, 0, 4), (byte) => byte.toString(16).padStart(2, "0")).join("");
471
- }
472
373
  //# sourceMappingURL=lib.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/component/lib.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
16
16
  }, {
17
17
  versionId: import("convex/values").VString<string, "required">;
18
18
  /**
19
- * `live` carries the time the first request of the version's pushed code marked it live, so a
19
+ * `live` carries the time the version's pushed code marked it live, at its deploy's mark, so a
20
20
  * version cannot have a live time without being live.
21
21
  */
22
22
  state: import("convex/values").VUnion<{
@@ -74,7 +74,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
74
74
  sha256: import("convex/values").VString<string, "required">;
75
75
  /**
76
76
  * The type belongs to the path, not to the bytes: paths with identical bytes share one stored
77
- * file but keep their own types, and `route` serves without reading `_storage`. Absent when
77
+ * file but keep their own types, and the site's manifest carries each type. Absent when
78
78
  * the `mime` package has no type for the file name.
79
79
  */
80
80
  contentType: import("convex/values").VString<string | undefined, "optional">;
@@ -5,7 +5,7 @@ export default defineSchema({
5
5
  versions: defineTable({
6
6
  versionId: v.string(),
7
7
  /**
8
- * `live` carries the time the first request of the version's pushed code marked it live, so a
8
+ * `live` carries the time the version's pushed code marked it live, at its deploy's mark, so a
9
9
  * version cannot have a live time without being live.
10
10
  */
11
11
  state: v.union(v.object({ kind: v.literal("uploading") }), v.object({ kind: v.literal("ready") }), v.object({ kind: v.literal("live"), at: v.number() }),
@@ -32,7 +32,7 @@ export default defineSchema({
32
32
  sha256: v.string(),
33
33
  /**
34
34
  * The type belongs to the path, not to the bytes: paths with identical bytes share one stored
35
- * file but keep their own types, and `route` serves without reading `_storage`. Absent when
35
+ * file but keep their own types, and the site's manifest carries each type. Absent when
36
36
  * the `mime` package has no type for the file name.
37
37
  */
38
38
  contentType: v.optional(v.string()),
@@ -0,0 +1,14 @@
1
+ export declare class AssetsManifest {
2
+ private data;
3
+ constructor(data: ArrayBuffer);
4
+ get(pathname: string): Promise<string | null>;
5
+ }
6
+ export declare const hashPath: (path: string) => Promise<Uint8Array<ArrayBuffer>>;
7
+ /**
8
+ * Search for an entry with the given hash path.
9
+ *
10
+ * @param manifest the manifest bytes
11
+ * @param pathHash the path hash to find in the manifest
12
+ * @returns The content hash when the entry is found and `false` otherwise
13
+ */
14
+ export declare const binarySearch: (manifest: Uint8Array, pathHash: Uint8Array) => Uint8Array | false;
@@ -0,0 +1,84 @@
1
+ import { CONTENT_HASH_OFFSET, CONTENT_HASH_SIZE, ENTRY_SIZE, HEADER_SIZE, PATH_HASH_OFFSET, PATH_HASH_SIZE, } from "../../utils/constants.js";
2
+ export class AssetsManifest {
3
+ data;
4
+ constructor(data) {
5
+ this.data = new Uint8Array(data);
6
+ }
7
+ async get(pathname) {
8
+ const pathHash = await hashPath(pathname);
9
+ const entry = binarySearch(this.data, pathHash);
10
+ return entry ? Uint8ToHexString(entry) : null;
11
+ }
12
+ }
13
+ export const hashPath = async (path) => {
14
+ const encoder = new TextEncoder();
15
+ const data = encoder.encode(path);
16
+ const hashBuffer = await crypto.subtle.digest("SHA-256", data.buffer);
17
+ return new Uint8Array(hashBuffer, 0, PATH_HASH_SIZE);
18
+ };
19
+ /**
20
+ * Search for an entry with the given hash path.
21
+ *
22
+ * @param manifest the manifest bytes
23
+ * @param pathHash the path hash to find in the manifest
24
+ * @returns The content hash when the entry is found and `false` otherwise
25
+ */
26
+ export const binarySearch = (manifest, pathHash) => {
27
+ if (pathHash.byteLength !== PATH_HASH_SIZE) {
28
+ throw new TypeError(`Search value should have a length of ${PATH_HASH_SIZE}`);
29
+ }
30
+ const numberOfEntries = (manifest.byteLength - HEADER_SIZE) / ENTRY_SIZE;
31
+ if (numberOfEntries === 0) {
32
+ return false;
33
+ }
34
+ let lowIndex = 0;
35
+ let highIndex = numberOfEntries - 1;
36
+ while (lowIndex <= highIndex) {
37
+ const middleIndex = (lowIndex + highIndex) >> 1;
38
+ const cmp = comparePathHashWithEntry(pathHash, manifest, middleIndex);
39
+ if (cmp < 0) {
40
+ highIndex = middleIndex - 1;
41
+ continue;
42
+ }
43
+ if (cmp > 0) {
44
+ lowIndex = middleIndex + 1;
45
+ continue;
46
+ }
47
+ return new Uint8Array(manifest.buffer, HEADER_SIZE + middleIndex * ENTRY_SIZE + CONTENT_HASH_OFFSET, CONTENT_HASH_SIZE);
48
+ }
49
+ return false;
50
+ };
51
+ /**
52
+ * Compares a search value with a path hash in the manifest
53
+ *
54
+ * @param searchValue a `Uint8Array` of size `PATH_HASH_SIZE`
55
+ * @param manifest the manifest bytes
56
+ * @param entryIndex the index in the manifest of the entry to compare
57
+ */
58
+ function comparePathHashWithEntry(searchValue, manifest, entryIndex) {
59
+ let pathHashOffset = HEADER_SIZE + entryIndex * ENTRY_SIZE + PATH_HASH_OFFSET;
60
+ for (let offset = 0; offset < PATH_HASH_SIZE; offset++, pathHashOffset++) {
61
+ const s = searchValue[offset];
62
+ const e = manifest[pathHashOffset];
63
+ if (s === undefined || e === undefined) {
64
+ throw new TypeError(`Unexpected undefined value at offset ${offset} during path hash comparison`);
65
+ }
66
+ if (s < e) {
67
+ return -1;
68
+ }
69
+ if (s > e) {
70
+ return 1;
71
+ }
72
+ }
73
+ return 0;
74
+ }
75
+ /**
76
+ * Converts an Uint8Array to an hex string
77
+ *
78
+ * @param array The content hash
79
+ * @returns padded hex string
80
+ */
81
+ const Uint8ToHexString = (array) => {
82
+ return [...array].map((b) => b.toString(16).padStart(2, "0")).join("");
83
+ };
84
+ //# sourceMappingURL=assets-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets-manifest.js","sourceRoot":"","sources":["../../../../../../src/workers-sdk/packages/workers-shared/asset-worker/src/assets-manifest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@samebase/convex-hosting",
3
- "version": "0.13.1",
3
+ "version": "0.15.0",
4
4
  "description": "Serves a web app from its own Convex deployment: the files of a build, and the pages the app renders.",
5
5
  "keywords": [
6
6
  "component",
@@ -45,15 +45,16 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "ignore": "7.0.12",
48
- "mime": "4.1.0",
49
- "zod": "4.6.5"
48
+ "mime": "4.1.1",
49
+ "zod": "4.6.6"
50
50
  },
51
51
  "devDependencies": {
52
- "@types/node": "24.19.1",
52
+ "@types/node": "24.19.2",
53
53
  "convex": "1.46.0",
54
- "convex-test": "0.0.60",
54
+ "convex-test": "0.0.61",
55
+ "fast-check": "4.10.2",
55
56
  "typescript": "7.0.2",
56
- "undici": "7.29.1",
57
+ "undici": "8.11.2",
57
58
  "vite-plus": "1.1.0"
58
59
  },
59
60
  "peerDependencies": {