[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-tanstack-ai-persistencebuild-cloudflare-artifact-store":3,"mdc--52pm4v-key":56,"related-org-tanstack-ai-persistencebuild-cloudflare-artifact-store":13987,"related-repo-tanstack-ai-persistencebuild-cloudflare-artifact-store":14131},{"slug":4,"name":5,"fn":6,"description":7,"org":8,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":51,"sourceUrl":54,"mdContent":55},"ai-persistencebuild-cloudflare-artifact-store","ai-persistence\u002Fbuild-cloudflare-artifact-store","build Cloudflare artifact storage for AI","Use when a Cloudflare Worker needs durable byte storage for TanStack AI generated media (images, audio, video, transcripts) — writes a BlobStore backed by R2 and an ArtifactStore backed by D1 (or KV), composes them onto the generation persistence so withGenerationPersistence persists artifact bytes, and serves them back from a Worker GET route. Includes one-line sketches for S3, GCS, Vercel Blob, Supabase, and a dev filesystem BlobStore.",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},"tanstack","TanStack","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftanstack.png",[13,17,20,23,26],{"name":14,"slug":15,"type":16},"Backend","backend","tag",{"name":18,"slug":19,"type":16},"Cloudflare","cloudflare",{"name":21,"slug":22,"type":16},"AI","ai",{"name":24,"slug":25,"type":16},"Storage","storage",{"name":10,"slug":9,"type":16},2884,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Fai","2026-08-02T06:09:09.070849",null,269,[22,33,34,35,36,37,38,39,40,41,42,43,44,45,46,9,47,48,49,50],"ai-agents","ai-sdk","anthropic","chatbot","function-calling","gemini","generative-ai","llm","multimodal","openai","react","solidjs","streaming","svelte","tool-calling","typescript","typescript-sdk","vue",{"repoUrl":28,"stars":27,"forks":31,"topics":52,"description":53},[22,33,34,35,36,37,38,39,40,41,42,43,44,45,46,9,47,48,49,50],"🤖 Type-safe, provider-agnostic TypeScript AI SDK for streaming chat, tool calling, agents, and multimodal apps across OpenAI, Anthropic, Gemini, React, Vue, Svelte, and Solid.","https:\u002F\u002Fgithub.com\u002FTanStack\u002Fai\u002Ftree\u002FHEAD\u002Fpackages\u002Fai-persistence\u002Fskills\u002Fai-persistence\u002Fbuild-cloudflare-artifact-store","---\nname: ai-persistence\u002Fbuild-cloudflare-artifact-store\ndescription: Use when a Cloudflare Worker needs durable byte storage for TanStack AI generated media (images, audio, video, transcripts) — writes a BlobStore backed by R2 and an ArtifactStore backed by D1 (or KV), composes them onto the generation persistence so withGenerationPersistence persists artifact bytes, and serves them back from a Worker GET route. Includes one-line sketches for S3, GCS, Vercel Blob, Supabase, and a dev filesystem BlobStore.\n---\n\n# Cloudflare Artifact + Blob Store\n\n`withGenerationPersistence(persistence)` needs only `stores.generationRuns` to track a\ngeneration's lifecycle. Add `stores.artifacts` (metadata) **and** `stores.blobs`\n(the bytes) — both, or neither — and the middleware also persists the generated\nmedia: image\u002Faudio\u002FTTS\u002Fvideo\u002Ftranscription bytes land at blob key\n`artifacts\u002F\u003CrunId>\u002F\u003CartifactId>`, with an `ArtifactRecord` row describing each.\n\nThe deliverable is **one file in the Worker** — e.g.\n`src\u002Flib\u002Fgeneration-persistence.ts` — exporting a factory that builds an\n`AIPersistence` from the request's R2 + D1 bindings, plus a GET route that serves\nartifact bytes with `retrieveArtifact` \u002F `retrieveBlob`.\n\nRead the sibling **ai-persistence\u002Fbuild-cloudflare-adapter** skill for the\nper-request-binding rule, `wrangler` config shape, D1 migration workflow, and the\nchat (generation-run\u002Fmessage) side. This skill covers only the two byte-storage stores and\nhow to compose them.\n\n## The two contracts, verbatim\n\nBoth come from `@tanstack\u002Fai-persistence`. `defineBlobStore` \u002F `defineArtifactStore`\ntype an object literal inline (autocomplete + contract checking, no separate\nannotation).\n\n```ts\n\u002F\u002F BlobStore — the byte layer. R2 backs it.\ninterface BlobStore {\n  put(\n    key: string,\n    body: BlobBody,\n    options?: BlobPutOptions,\n  ): Promise\u003CBlobRecord>\n  \u002F\u002F metadata + byte accessors; `options.range` reads one slice (for `206`s)\n  get(key: string, options?: BlobGetOptions): Promise\u003CBlobObject | null>\n  head(key: string): Promise\u003CBlobRecord | null> \u002F\u002F metadata only\n  delete(key: string): Promise\u003Cvoid> \u002F\u002F no-op if absent\n  list(options?: BlobListOptions): Promise\u003CBlobListPage>\n}\n\n\u002F\u002F ArtifactStore — the metadata layer. D1 (or KV) backs it.\ninterface ArtifactStore {\n  save(record: ArtifactRecord): Promise\u003Cvoid> \u002F\u002F insert or overwrite\n  get(artifactId: string): Promise\u003CArtifactRecord | null>\n  list(runId: string): Promise\u003CArray\u003CArtifactRecord>> \u002F\u002F [] when none\n  delete(artifactId: string): Promise\u003Cvoid>\n  deleteForRun(runId: string): Promise\u003Cvoid>\n}\n```\n\n`BlobBody` is `ReadableStream\u003CUint8Array> | ArrayBuffer | ArrayBufferView |\nstring | Blob`. The non-stream shapes flow straight into `R2Bucket.put`\nunchanged — but a `ReadableStream` body does **not**, in the general case:\nworkerd's `put` requires a stream with a known length (a `Response` body or the\nreadable half of a `FixedLengthStream`), and the artifact middleware hands you a\n`TransformStream`-wrapped body whenever it had to cap a fetched body as it\ndrains. Passing that stream to `bucket.put` throws `TypeError: Provided readable\nstream must have a known length`.\n\n**When does that actually happen?** The wrapper only exists to enforce\n`maxArtifactBytes` during the drain, so the middleware applies it only when\nnothing else bounds the transfer:\n\n| Provider response                       | Body handed to `put`              | R2 path             |\n| --------------------------------------- | --------------------------------- | ------------------- |\n| `content-length`, no `content-encoding` | untouched, declared length intact | `bucket.put` direct |\n| chunked (no declared length)            | wrapped, length-less              | multipart           |\n| `content-encoding: gzip`                | wrapped, length-less              | multipart           |\n\nA provider CDN normally sends `content-length`, so the first row is the common\ncase and `bucket.put(key, body)` just works. The recipe below is what makes the\nother two rows work: it re-declares the length from\n`BlobPutOptions.expectedLength` when the middleware could vouch for one, and\notherwise streams through a multipart upload (one 8 MiB part at a time — flat\nmemory at any artifact size). Write it once and every response shape is\ncovered.\n\n`withGenerationPersistence(persistence, { maxArtifactBytes: false })` drops the\nceiling and the wrapper altogether, so even a chunked reply arrives untouched.\nIt buys nothing extra for R2 (a chunked body has no length to preserve), so\nchoose it on its own merits: no _application_ limit on what an origin can\nstream into your bucket. R2's own limits still apply — 5 GiB per single-shot\nput, and 10,000 multipart parts (~80 GiB at the 8 MiB part size below). Keep\nthe cap when `allowInputUrl` lets callers name the URL.\n\n`BlobPutOptions` is\n`{ contentType?, customMetadata?, expectedLength? }`; `BlobGetOptions` is\n`{ range?: { offset: number, length?: number } }` and maps onto R2's own\n`range`; `BlobListOptions` is `{ prefix?, cursor?, limit? }`; `BlobListPage` is\n`{ objects: BlobRecord[], cursor?, truncated? }`.\n\n## 1. BlobStore backed by R2\n\n`R2Object` carries `size`, `etag`, `httpMetadata.contentType`, `customMetadata`,\nand `uploaded` (a `Date`). `BlobRecord` wants `createdAt` \u002F `updatedAt` as epoch\nms — R2 tracks only the single `uploaded` instant, so map it to both. `get` \u002F\n`head` are the byte-body vs metadata-only split; `R2ObjectBody` already exposes\n`body`, `arrayBuffer()`, and `text()`, so a `BlobObject` is essentially the R2\nobject plus the mapped metadata.\n\n```ts ignore\nimport { defineBlobStore, resolveBlobRange } from '@tanstack\u002Fai-persistence'\nimport type { BlobObject, BlobRecord } from '@tanstack\u002Fai-persistence'\n\n\u002F\u002F R2 multipart parts must be ≥ 5 MiB and — except for the last — all exactly\n\u002F\u002F the SAME size, so a part reader has to cut on an exact boundary and carry the\n\u002F\u002F remainder. 8 MiB × the 10,000-part ceiling puts the multipart path's limit at\n\u002F\u002F ~80 GiB; raise this for larger objects, and check R2's current object-size\n\u002F\u002F limits before promising more.\nconst MULTIPART_PART_SIZE = 8 * 1024 * 1024\n\n\u002F**\n * Cut exactly `limit` bytes off the stream (fewer only at EOF), carrying any\n * overshoot into the next part.\n *\n * `carry` is the leftover from the previous call. Chunks are collected by\n * reference and copied once per part: growing a `Uint8Array` chunk-by-chunk\n * instead would re-copy the whole part on every read — quadratic work for a\n * part built from hundreds of small chunks.\n *\u002F\nasync function readPart(\n  reader: ReadableStreamDefaultReader\u003CUint8Array>,\n  limit: number,\n  carry: Uint8Array,\n): Promise\u003C{ bytes: Uint8Array; carry: Uint8Array; eof: boolean }> {\n  const chunks: Array\u003CUint8Array> = carry.byteLength > 0 ? [carry] : []\n  let total = carry.byteLength\n  let eof = false\n  while (total \u003C limit) {\n    const { value, done } = await reader.read()\n    if (done) {\n      eof = true\n      break\n    }\n    chunks.push(value)\n    total += value.byteLength\n  }\n  const joined = new Uint8Array(total)\n  let offset = 0\n  for (const chunk of chunks) {\n    joined.set(chunk, offset)\n    offset += chunk.byteLength\n  }\n  \u002F\u002F Equal-sized parts: hand back exactly `limit` and keep the rest for next\n  \u002F\u002F time. At EOF the last part is whatever is left, which R2 allows.\n  if (!eof && total > limit) {\n    return {\n      bytes: joined.subarray(0, limit),\n      carry: joined.subarray(limit),\n      eof,\n    }\n  }\n  return { bytes: joined, carry: new Uint8Array(0), eof }\n}\n\n\u002F\u002F R2 takes a single-shot put up to 5 GiB. Above that the upload has to be\n\u002F\u002F multipart even when the length is known.\nconst MAX_SINGLE_SHOT_BYTES = 5 * 1024 * 1024 * 1024\n\n\u002F**\n * `R2Bucket.put` requires a stream with a known length; a pass-through\n * TransformStream (what the middleware sends when it had to cap the body) has\n * none. Re-declare the length when `expectedLength` provides it — the\n * middleware only sets it when it is the exact decoded byte count — and\n * otherwise stream through a multipart upload, one buffered part at a time.\n *\u002F\nasync function putStream(\n  bucket: R2Bucket,\n  key: string,\n  body: ReadableStream\u003CUint8Array>,\n  options: R2PutOptions,\n  expectedLength: number | undefined,\n): Promise\u003CR2Object | null> {\n  if (expectedLength !== undefined && expectedLength \u003C= MAX_SINGLE_SHOT_BYTES) {\n    return bucket.put(\n      key,\n      body.pipeThrough(new FixedLengthStream(expectedLength)),\n      options,\n    )\n  }\n  \u002F\u002F Unknown length, or too big for one shot: multipart, one part at a time.\n  const reader = body.getReader()\n  const first = await readPart(reader, MULTIPART_PART_SIZE, new Uint8Array(0))\n  if (first.eof) {\n    \u002F\u002F The whole body fit in one part — a plain put is enough.\n    return bucket.put(key, first.bytes, options)\n  }\n  const upload = await bucket.createMultipartUpload(key, options)\n  try {\n    const parts: Array\u003CR2UploadedPart> = [\n      await upload.uploadPart(1, first.bytes),\n    ]\n    let carry = first.carry\n    let partNumber = 2\n    for (;;) {\n      const part = await readPart(reader, MULTIPART_PART_SIZE, carry)\n      carry = part.carry\n      if (part.bytes.byteLength > 0) {\n        \u002F\u002F 10,000 parts is R2's ceiling; failing here beats a confusing error\n        \u002F\u002F from `complete` after uploading gigabytes.\n        if (partNumber > 10_000) {\n          throw new Error(\n            `Artifact at ${key} exceeds the multipart part limit — raise MULTIPART_PART_SIZE.`,\n          )\n        }\n        parts.push(await upload.uploadPart(partNumber, part.bytes))\n        partNumber += 1\n      }\n      if (part.eof) break\n    }\n    return await upload.complete(parts)\n  } catch (error) {\n    await upload.abort().catch(() => undefined)\n    throw error\n  }\n}\n\nfunction toRecord(obj: R2Object): BlobRecord {\n  const uploaded = obj.uploaded.getTime()\n  return {\n    key: obj.key,\n    size: obj.size,\n    etag: obj.etag,\n    ...(obj.httpMetadata?.contentType\n      ? { contentType: obj.httpMetadata.contentType }\n      : {}),\n    ...(obj.customMetadata ? { customMetadata: obj.customMetadata } : {}),\n    createdAt: uploaded,\n    updatedAt: uploaded,\n  }\n}\n\nexport function r2BlobStore(bucket: R2Bucket) {\n  return defineBlobStore({\n    async put(key, body, options) {\n      const r2Options = {\n        ...(options?.contentType\n          ? { httpMetadata: { contentType: options.contentType } }\n          : {}),\n        ...(options?.customMetadata\n          ? { customMetadata: options.customMetadata }\n          : {}),\n      }\n      const obj =\n        body instanceof ReadableStream\n          ? await putStream(\n              bucket,\n              key,\n              body,\n              r2Options,\n              options?.expectedLength,\n            )\n          : await bucket.put(key, body, r2Options)\n      \u002F\u002F R2.put returns null only when an onlyIf precondition fails — not used here.\n      if (!obj) throw new Error(`R2 put failed for ${key}`)\n      return toRecord(obj)\n    },\n\n    async get(key, options): Promise\u003CBlobObject | null> {\n      if (!options?.range) {\n        const whole = await bucket.get(key)\n        if (!whole) return null\n        return {\n          ...toRecord(whole),\n          body: whole.body,\n          arrayBuffer: () => whole.arrayBuffer(),\n          text: () => whole.text(),\n        }\n      }\n      \u002F\u002F A ranged read is what a serve route turns into `206` — R2 slices in\n      \u002F\u002F the bucket, so a seek never streams the whole object. `resolveBlobRange`\n      \u002F\u002F clamps a too-long length and throws on an offset past the end (the\n      \u002F\u002F route answers `416` from `record.size` before ever calling in). The\n      \u002F\u002F `head` buys that clamp deterministically — one class-B op against\n      \u002F\u002F bytes you did not need to send.\n      \u002F\u002F\n      \u002F\u002F Retry a bounded number of times: each attempt measures the object and\n      \u002F\u002F reads a slice of THAT version, and only an overwrite landing between\n      \u002F\u002F the two calls costs another lap.\n      for (let attempt = 0; attempt \u003C 3; attempt++) {\n        const head = await bucket.head(key)\n        \u002F\u002F A ranged read of a key that is not there is a miss, not a\n        \u002F\u002F whole-object read: falling through to an un-ranged `get` would\n        \u002F\u002F answer a `206` carrying the entire file.\n        if (!head) return null\n        const served = resolveBlobRange(head.size, options.range)\n        const obj = await bucket.get(key, {\n          range: { offset: served.offset, length: served.length },\n          \u002F\u002F Tie the slice to the version `head` measured. Without this, a\n          \u002F\u002F `put` landing between the two calls yields a `Content-Range`\n          \u002F\u002F computed from one object and bytes from another.\n          onlyIf: { etagMatches: head.etag },\n        })\n        \u002F\u002F No body means the precondition failed — the object changed under us.\n        if (!obj) return null\n        if (!('body' in obj)) continue\n        return {\n          \u002F\u002F `toRecord(obj)` reports the WHOLE object's size even on a ranged\n          \u002F\u002F read — R2's `R2Object.size` is the object, not the slice — which\n          \u002F\u002F is exactly the contract, and what `Content-Range`'s total needs.\n          ...toRecord(obj),\n          range: served,\n          body: obj.body,\n          arrayBuffer: () => obj.arrayBuffer(),\n          text: () => obj.text(),\n        }\n      }\n      throw new Error(`R2 object ${key} changed under every ranged read.`)\n    },\n\n    async head(key) {\n      const obj = await bucket.head(key)\n      return obj ? toRecord(obj) : null\n    },\n\n    async delete(key) {\n      await bucket.delete(key)\n    },\n\n    async list(options) {\n      \u002F\u002F R2 reads `limit: 0` as \"use the default\", so short-circuit it.\n      if (options?.limit === 0) {\n        return { objects: [] }\n      }\n      const page = await bucket.list({\n        ...(options?.prefix !== undefined ? { prefix: options.prefix } : {}),\n        ...(options?.cursor !== undefined ? { cursor: options.cursor } : {}),\n        ...(options?.limit !== undefined ? { limit: options.limit } : {}),\n        \u002F\u002F R2 omits httpMetadata\u002FcustomMetadata from list rows unless asked.\n        include: ['httpMetadata', 'customMetadata'],\n      })\n      return {\n        objects: page.objects.map(toRecord),\n        ...(page.truncated ? { cursor: page.cursor, truncated: true } : {}),\n      }\n    },\n  })\n}\n```\n\nInvariants that matter (asserted by the conformance testkit):\n\n- `get` \u002F `head` return `null` for a missing key; `delete` is a silent no-op.\n- `put` **overwrites** an existing key.\n- `put` accepts a `ReadableStream` body with **no declared length** — the\n  middleware streams URL-fetched artifacts as exactly that. This is where the\n  naive \"pass the body straight to `bucket.put`\" recipe fails at runtime\n  (workerd requires a known length), which is what `putStream` above handles.\n- `get` honours `options.range`: it returns **only** that slice, reports it as\n  `range`, and keeps `size` on the whole object. That is the `206` a video\n  player's seeking depends on, and R2 slices in the bucket so the bytes never\n  cross the Worker.\n- `list` filters by `prefix` literally (R2 prefix is a literal byte prefix — no\n  glob), returns keys in ascending order, and pages via the opaque `cursor` when\n  `truncated`. R2's own cursor is opaque and satisfies this directly. `limit: 0`\n  must yield an empty, untruncated page — R2 treats `limit: 0` as \"use the\n  default\", so special-case it: `if (options?.limit === 0) return { objects: [] }`.\n\n## 2. ArtifactStore backed by D1\n\n`ArtifactRecord` is `{ artifactId, runId, threadId, name, mimeType, size,\nsourceUrl?, createdAt }` (`createdAt` epoch ms). One flat table, keyed by\n`artifact_id`, indexed by `run_id` for `list`.\n\n```sql\nCREATE TABLE IF NOT EXISTS generation_artifacts (\n  artifact_id  text PRIMARY KEY NOT NULL,\n  run_id       text NOT NULL,\n  thread_id    text NOT NULL,\n  blob_key     text,\n  name         text NOT NULL,\n  mime_type    text NOT NULL,\n  size         integer NOT NULL,\n  source_url   text,\n  created_at   integer NOT NULL\n);\nCREATE INDEX IF NOT EXISTS generation_artifacts_run ON generation_artifacts (run_id);\n```\n\n```ts ignore\nimport { defineArtifactStore } from '@tanstack\u002Fai-persistence'\nimport type { ArtifactRecord } from '@tanstack\u002Fai-persistence'\n\ninterface ArtifactRow {\n  artifact_id: string\n  run_id: string\n  thread_id: string\n  blob_key: string | null\n  name: string\n  mime_type: string\n  size: number\n  source_url: string | null\n  created_at: number\n}\n\nfunction fromRow(row: ArtifactRow): ArtifactRecord {\n  return {\n    artifactId: row.artifact_id,\n    runId: row.run_id,\n    threadId: row.thread_id,\n    ...(row.blob_key != null ? { blobKey: row.blob_key } : {}),\n    name: row.name,\n    mimeType: row.mime_type,\n    size: row.size,\n    ...(row.source_url != null ? { sourceUrl: row.source_url } : {}),\n    createdAt: row.created_at,\n  }\n}\n\nexport function d1ArtifactStore(db: D1Database) {\n  return defineArtifactStore({\n    async save(record) {\n      \u002F\u002F Insert or overwrite (artifact ids are unique).\n      await db\n        .prepare(\n          `INSERT INTO generation_artifacts\n             (artifact_id, run_id, thread_id, blob_key, name, mime_type, size, source_url, created_at)\n           VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n           ON CONFLICT(artifact_id) DO UPDATE SET\n             run_id = excluded.run_id, thread_id = excluded.thread_id,\n             blob_key = excluded.blob_key, name = excluded.name,\n             mime_type = excluded.mime_type, size = excluded.size,\n             source_url = excluded.source_url, created_at = excluded.created_at`,\n        )\n        .bind(\n          record.artifactId,\n          record.runId,\n          record.threadId,\n          record.blobKey ?? null,\n          record.name,\n          record.mimeType,\n          record.size,\n          record.sourceUrl ?? null,\n          record.createdAt,\n        )\n        .run()\n    },\n\n    async get(artifactId) {\n      const row = await db\n        .prepare(`SELECT * FROM generation_artifacts WHERE artifact_id = ?`)\n        .bind(artifactId)\n        .first\u003CArtifactRow>()\n      return row ? fromRow(row) : null\n    },\n\n    async list(runId) {\n      const { results } = await db\n        .prepare(`SELECT * FROM generation_artifacts WHERE run_id = ?`)\n        .bind(runId)\n        .all\u003CArtifactRow>()\n      return results.map(fromRow)\n    },\n\n    async delete(artifactId) {\n      await db\n        .prepare(`DELETE FROM generation_artifacts WHERE artifact_id = ?`)\n        .bind(artifactId)\n        .run()\n    },\n\n    async deleteForRun(runId) {\n      await db\n        .prepare(`DELETE FROM generation_artifacts WHERE run_id = ?`)\n        .bind(runId)\n        .run()\n    },\n  })\n}\n```\n\nOmitting `source_url` \u002F `blob_key` from the record when the column is `NULL`\nkeeps records comparing cleanly against the reference in-memory store. Persist\n`blob_key` verbatim: a `storageKey` mapper can put the bytes anywhere, so a\nreader cannot recompute the path — `resolveArtifactBlobKey(record)` falls back\nto the default convention only for rows written before the column existed.\n**KV alternative:** if\nyou have no D1, back `save`\u002F`get` with `KV.put(artifactId, JSON.stringify(record))`\n\u002F `KV.get(artifactId, 'json')`, and maintain a `run:\u003CrunId>` index key (a JSON\narray of artifact ids) for `list` — KV has no query, so `list` needs that\nsecondary index.\n\n## 3. Compose and wire\n\nBindings are per-request on Workers, so export a **factory**. Combine the byte\nstores with a generation-run store (and, if this Worker also does chat, the chat stores).\nEither build the whole `AIPersistence` with `defineAIPersistence`, or layer the\nartifact stores onto an existing chat persistence with `composePersistence`:\n\n```ts ignore\nimport {\n  defineAIPersistence,\n  composePersistence,\n  withGenerationPersistence,\n} from '@tanstack\u002Fai-persistence'\nimport { r2BlobStore } from '.\u002Fr2-blob-store'\nimport { d1ArtifactStore } from '.\u002Fd1-artifact-store'\nimport { d1GenerationRunStore } from '.\u002Fd1-job-store' \u002F\u002F your GenerationRunStore\n\n\u002F** Call inside a request handler — bindings are not available at module scope. *\u002F\nexport function generationPersistence(env: Env) {\n  return defineAIPersistence({\n    stores: {\n      generationRuns: d1GenerationRunStore(env.DB),\n      artifacts: d1ArtifactStore(env.DB),\n      blobs: r2BlobStore(env.ARTIFACTS_BUCKET),\n    },\n  })\n}\n\n\u002F\u002F …or add bytes to a persistence that already has chat + generation runs:\n\u002F\u002F composePersistence(chatAndJobsPersistence(env), {\n\u002F\u002F   overrides: {\n\u002F\u002F     artifacts: d1ArtifactStore(env.DB),\n\u002F\u002F     blobs: r2BlobStore(env.ARTIFACTS_BUCKET),\n\u002F\u002F   },\n\u002F\u002F })\n```\n\n`withGenerationPersistence` throws if exactly one of `artifacts` \u002F `blobs` is\npresent — provide both or neither. Wire it as generation middleware:\n\n```ts ignore\nimport { generateImage, toServerSentEventsResponse } from '@tanstack\u002Fai'\nimport { openaiImage } from '@tanstack\u002Fai-openai'\nimport { withGenerationPersistence } from '@tanstack\u002Fai-persistence'\nimport { generationPersistence } from '.\u002Flib\u002Fgeneration-persistence'\n\nexport default {\n  async fetch(request: Request, env: Env) {\n    const { prompt, threadId } = await request.json()\n    const stream = generateImage({\n      adapter: openaiImage('gpt-image-1'),\n      prompt,\n      threadId, \u002F\u002F the slot recorded on the job + artifacts\n      stream: true,\n      middleware: [\n        \u002F\u002F Nothing is buffered: the artifact streams from the provider CDN\n        \u002F\u002F into R2. Add `maxArtifactBytes: false` if you want no ceiling at\n        \u002F\u002F all on what an origin can stream into your bucket (the default is\n        \u002F\u002F 1 GiB); it is not needed for the streaming itself.\n        withGenerationPersistence(generationPersistence(env), { threadId }),\n      ],\n    })\n    return toServerSentEventsResponse(stream)\n  },\n}\n```\n\n## 4. Serve the bytes back\n\nA GET route resolves an `artifactId` to its record and its stored bytes.\n`retrieveArtifact` returns the `ArtifactRecord` (or `null` → 404);\n`retrieveBlob` returns the `BlobObject` (metadata + a streamable `body`). Both\nresolve the blob key from the record internally, so you never build the key\nyourself.\n\nHonour `Range` requests: `\u003Cvideo>` seeking is built on `206` \u002F `Content-Range`,\nand Safari refuses to play a source that ignores `Range` entirely. Images never\nnotice; a few-hundred-MB clip is unwatchable without it. Pass `range` to\n`retrieveBlob` — the store slices in R2 — rather than reaching into the bucket\nbinding from the route, which would tie the route to R2 and bypass the store's\nown key resolution.\n\n```ts ignore\nimport {\n  parseRangeHeader,\n  retrieveArtifact,\n  retrieveBlob,\n} from '@tanstack\u002Fai-persistence'\nimport { generationPersistence } from '.\u002Flib\u002Fgeneration-persistence'\n\nexport async function GET(request: Request, env: Env) {\n  const artifactId = new URL(request.url).searchParams.get('id') ?? ''\n  const persistence = generationPersistence(env)\n\n  \u002F\u002F Authorize before serving — derive the owner from the session, never trust\n  \u002F\u002F a client-supplied id. (The record carries runId\u002FthreadId to check against.)\n  const record = await retrieveArtifact(persistence, artifactId)\n  if (!record) return new Response('Not found', { status: 404 })\n\n  \u002F\u002F `parseRangeHeader` resolves the header against the size on the record —\n  \u002F\u002F suffix ranges included — so an unsatisfiable range is a 416 here and the\n  \u002F\u002F store only ever sees a range it can serve.\n  const range = parseRangeHeader(request.headers.get('range'), record.size)\n  if (range === 'unsatisfiable') {\n    return new Response('Range not satisfiable', {\n      status: 416,\n      headers: { 'content-range': `bytes *\u002F${record.size}` },\n    })\n  }\n\n  \u002F\u002F Pass the record, not the id: no second metadata lookup.\n  const blob = await retrieveBlob(\n    persistence,\n    record,\n    range ? { range } : undefined,\n  )\n  if (!blob?.body) return new Response('Not found', { status: 404 })\n\n  \u002F\u002F `accept-ranges` on every response, including the whole-file one: it is how\n  \u002F\u002F a player learns it may seek at all.\n  const headers = {\n    'content-type': record.mimeType,\n    'accept-ranges': 'bytes',\n  }\n  if (!blob.range) {\n    return new Response(blob.body, {\n      headers: { ...headers, 'content-length': String(record.size) },\n    })\n  }\n  const { offset, length } = blob.range\n  return new Response(blob.body, {\n    status: 206,\n    headers: {\n      ...headers,\n      'content-length': String(length),\n      'content-range': `bytes ${offset}-${offset + length - 1}\u002F${record.size}`,\n    },\n  })\n}\n```\n\nTo hydrate a **server-driven generation client** (`persistence: true` + a stable\n`threadId`) on mount, also expose `reconstructGeneration(persistence, request)`\non a GET that reads `?threadId=` \u002F `?runId=` — see `ai-core\u002Fclient-persistence`.\n\n## Other backends — the contract is tiny, here's how each maps\n\n`BlobStore` is five methods over an object store. Any of these backs it; swap the\nfactory, keep everything else. `put` maps to the SDK's upload, `get` to a\ndownload that exposes `body`\u002F`arrayBuffer`\u002F`text`, `head` to a metadata fetch,\n`delete` to a delete, `list` to a prefixed, cursor-paged list.\n\n| Backend                   | npm                     | One-line sketch                                                                                                                                                                                                                                                                                                                                                           |\n| ------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **AWS S3**                | `@aws-sdk\u002Fclient-s3`    | `put`→`PutObjectCommand`; `get`→`GetObjectCommand` (`Body` is a stream → `body`, `.transformToByteArray()`\u002F`.transformToString()`); `head`→`HeadObjectCommand`; `delete`→`DeleteObjectCommand`; `list`→`ListObjectsV2Command` (`Prefix`, `ContinuationToken`↔`cursor`, `MaxKeys`↔`limit`, `IsTruncated`↔`truncated`).                                                     |\n| **Google Cloud Storage**  | `@google-cloud\u002Fstorage` | `bucket.file(key)`: `put`→`.save(body, { contentType, metadata })`; `get`→`.createReadStream()` for `body` + `.download()` for bytes; `head`→`.getMetadata()`; `delete`→`.delete({ ignoreNotFound: true })`; `list`→`bucket.getFiles({ prefix, maxResults, pageToken })`.                                                                                                 |\n| **Vercel Blob**           | `@vercel\u002Fblob`          | `put`→`put(key, body, { access: 'public', contentType })`; `get`→`fetch(head(key).url)` (stream `res.body`); `head`→`head(key)` (returns `null`→catch as absent); `delete`→`del(key)`; `list`→`list({ prefix, cursor, limit })` (`hasMore`↔`truncated`).                                                                                                                  |\n| **Supabase Storage**      | `@supabase\u002Fsupabase-js` | `storage.from(bucket)`: `put`→`.upload(key, body, { contentType, upsert: true })`; `get`→`.download(key)` (returns a `Blob` → `body`\u002F`arrayBuffer`\u002F`text`); `head`→`.info(key)` or list-one; `delete`→`.remove([key])`; `list`→`.list(prefix, { limit })` (offset\u002Flimit paging → synthesize a `cursor`).                                                                  |\n| **Filesystem (dev only)** | `node:fs\u002Fpromises`      | Root each key under a dir: `put`→`mkdir(dirname, { recursive: true })` + `writeFile`; `get`→`createReadStream` for `body` + `readFile`; `head`→`stat` (`size`, `mtimeMs`→`updatedAt`); `delete`→`rm(path, { force: true })`; `list`→recursive `readdir` filtered by prefix, sorted, sliced by `limit`, cursor = last key. Not for production — no concurrency guarantees. |\n\nFor each: `contentType` and `customMetadata` ride the SDK's own metadata fields;\n`BlobRecord.createdAt`\u002F`updatedAt` come from the object's stored timestamps\n(epoch ms); return `null` from `get`\u002F`head` on a not-found rather than throwing.\n\n## Verify\n\nThe shared `runPersistenceConformance` testkit covers all seven stores, including\n`generationRuns`, `artifacts`, and `blobs` — point it at your factory rather than\nhand-writing these assertions:\n\n```ts ignore\nimport { runPersistenceConformance } from '@tanstack\u002Fai-persistence\u002Ftestkit'\nimport { env } from 'cloudflare:test'\nimport { generationPersistence } from '..\u002Fsrc\u002Flib\u002Fgeneration-persistence'\n\n\u002F\u002F A generation-only Worker declares the chat state stores it does not provide.\nrunPersistenceConformance('app-r2', () => generationPersistence(env), {\n  skip: ['messages', 'runs', 'interrupts', 'metadata'],\n})\n```\n\nRun it against a Miniflare R2 + D1 binding with the migration applied, reset\nbetween runs (see **ai-persistence\u002Fbuild-cloudflare-adapter** for the\n`cloudflare:test` harness pattern). It exercises, among the rest:\n\n- `put` then `get` round-trips bytes and metadata; `get`\u002F`head` return `null` for\n  a missing key; `delete` is a silent no-op on an absent key.\n- `put` accepts a `ReadableStream` body with no declared length (a\n  `TransformStream`-wrapped stream) and records the real drained size — the\n  shape every URL-fetched artifact arrives in.\n- `get` with a `range` returns just that slice, reports it as `range`, and\n  still reports the whole object's `size` — what a `206` \u002F `Content-Range`\n  response is built from.\n- `put` overwrites an existing key (and its `contentType`\u002F`customMetadata`).\n- `list` filters by `prefix` **literally and case-sensitively**, returns\n  ascending keys, pages through the `cursor` when `truncated` without gaps or\n  repeats, and returns an empty untruncated page for `limit: 0`.\n- The `ArtifactStore`: `save` is insert-or-overwrite, `get` returns `null` when\n  absent, `list(runId)` returns `[]` for an unknown run, and `delete` \u002F\n  `deleteForRun` remove exactly the expected rows.\n- The `GenerationRunStore`: `createOrResume` idempotency, no-op `update` on an\n  unknown id, and `findLatestForThread` returning the most recently started\n  linked run (terminal ones included).\n\nAn end-to-end check is the strongest signal: run `generateImage` through\n`withGenerationPersistence(generationPersistence(env), { threadId })`, then confirm the blob\nexists at `artifacts\u002F\u003CrunId>\u002F\u003CartifactId>` and `retrieveBlob` streams it back.\n",{"data":57,"body":58},{"name":5,"description":7},{"type":59,"children":60},"root",[61,70,131,175,195,202,230,941,1030,1048,1159,1187,1214,1282,1288,1428,7404,7409,7600,7606,7651,7756,9552,9661,9667,9700,10194,10220,10798,10804,10857,10913,12466,12522,12528,12592,13280,13333,13339,13372,13655,13673,13947,13981],{"type":62,"tag":63,"props":64,"children":66},"element","h1",{"id":65},"cloudflare-artifact-blob-store",[67],{"type":68,"value":69},"text","Cloudflare Artifact + Blob Store",{"type":62,"tag":71,"props":72,"children":73},"p",{},[74,81,83,89,91,97,99,105,107,113,115,121,123,129],{"type":62,"tag":75,"props":76,"children":78},"code",{"className":77},[],[79],{"type":68,"value":80},"withGenerationPersistence(persistence)",{"type":68,"value":82}," needs only ",{"type":62,"tag":75,"props":84,"children":86},{"className":85},[],[87],{"type":68,"value":88},"stores.generationRuns",{"type":68,"value":90}," to track a\ngeneration's lifecycle. Add ",{"type":62,"tag":75,"props":92,"children":94},{"className":93},[],[95],{"type":68,"value":96},"stores.artifacts",{"type":68,"value":98}," (metadata) ",{"type":62,"tag":100,"props":101,"children":102},"strong",{},[103],{"type":68,"value":104},"and",{"type":68,"value":106}," ",{"type":62,"tag":75,"props":108,"children":110},{"className":109},[],[111],{"type":68,"value":112},"stores.blobs",{"type":68,"value":114},"\n(the bytes) — both, or neither — and the middleware also persists the generated\nmedia: image\u002Faudio\u002FTTS\u002Fvideo\u002Ftranscription bytes land at blob key\n",{"type":62,"tag":75,"props":116,"children":118},{"className":117},[],[119],{"type":68,"value":120},"artifacts\u002F\u003CrunId>\u002F\u003CartifactId>",{"type":68,"value":122},", with an ",{"type":62,"tag":75,"props":124,"children":126},{"className":125},[],[127],{"type":68,"value":128},"ArtifactRecord",{"type":68,"value":130}," row describing each.",{"type":62,"tag":71,"props":132,"children":133},{},[134,136,141,143,149,151,157,159,165,167,173],{"type":68,"value":135},"The deliverable is ",{"type":62,"tag":100,"props":137,"children":138},{},[139],{"type":68,"value":140},"one file in the Worker",{"type":68,"value":142}," — e.g.\n",{"type":62,"tag":75,"props":144,"children":146},{"className":145},[],[147],{"type":68,"value":148},"src\u002Flib\u002Fgeneration-persistence.ts",{"type":68,"value":150}," — exporting a factory that builds an\n",{"type":62,"tag":75,"props":152,"children":154},{"className":153},[],[155],{"type":68,"value":156},"AIPersistence",{"type":68,"value":158}," from the request's R2 + D1 bindings, plus a GET route that serves\nartifact bytes with ",{"type":62,"tag":75,"props":160,"children":162},{"className":161},[],[163],{"type":68,"value":164},"retrieveArtifact",{"type":68,"value":166}," \u002F ",{"type":62,"tag":75,"props":168,"children":170},{"className":169},[],[171],{"type":68,"value":172},"retrieveBlob",{"type":68,"value":174},".",{"type":62,"tag":71,"props":176,"children":177},{},[178,180,185,187,193],{"type":68,"value":179},"Read the sibling ",{"type":62,"tag":100,"props":181,"children":182},{},[183],{"type":68,"value":184},"ai-persistence\u002Fbuild-cloudflare-adapter",{"type":68,"value":186}," skill for the\nper-request-binding rule, ",{"type":62,"tag":75,"props":188,"children":190},{"className":189},[],[191],{"type":68,"value":192},"wrangler",{"type":68,"value":194}," config shape, D1 migration workflow, and the\nchat (generation-run\u002Fmessage) side. This skill covers only the two byte-storage stores and\nhow to compose them.",{"type":62,"tag":196,"props":197,"children":199},"h2",{"id":198},"the-two-contracts-verbatim",[200],{"type":68,"value":201},"The two contracts, verbatim",{"type":62,"tag":71,"props":203,"children":204},{},[205,207,213,215,221,222,228],{"type":68,"value":206},"Both come from ",{"type":62,"tag":75,"props":208,"children":210},{"className":209},[],[211],{"type":68,"value":212},"@tanstack\u002Fai-persistence",{"type":68,"value":214},". ",{"type":62,"tag":75,"props":216,"children":218},{"className":217},[],[219],{"type":68,"value":220},"defineBlobStore",{"type":68,"value":166},{"type":62,"tag":75,"props":223,"children":225},{"className":224},[],[226],{"type":68,"value":227},"defineArtifactStore",{"type":68,"value":229},"\ntype an object literal inline (autocomplete + contract checking, no separate\nannotation).",{"type":62,"tag":231,"props":232,"children":237},"pre",{"className":233,"code":234,"language":235,"meta":236,"style":236},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F BlobStore — the byte layer. R2 backs it.\ninterface BlobStore {\n  put(\n    key: string,\n    body: BlobBody,\n    options?: BlobPutOptions,\n  ): Promise\u003CBlobRecord>\n  \u002F\u002F metadata + byte accessors; `options.range` reads one slice (for `206`s)\n  get(key: string, options?: BlobGetOptions): Promise\u003CBlobObject | null>\n  head(key: string): Promise\u003CBlobRecord | null> \u002F\u002F metadata only\n  delete(key: string): Promise\u003Cvoid> \u002F\u002F no-op if absent\n  list(options?: BlobListOptions): Promise\u003CBlobListPage>\n}\n\n\u002F\u002F ArtifactStore — the metadata layer. D1 (or KV) backs it.\ninterface ArtifactStore {\n  save(record: ArtifactRecord): Promise\u003Cvoid> \u002F\u002F insert or overwrite\n  get(artifactId: string): Promise\u003CArtifactRecord | null>\n  list(runId: string): Promise\u003CArray\u003CArtifactRecord>> \u002F\u002F [] when none\n  delete(artifactId: string): Promise\u003Cvoid>\n  deleteForRun(runId: string): Promise\u003Cvoid>\n}\n","ts","",[238],{"type":62,"tag":75,"props":239,"children":240},{"__ignoreMap":236},[241,253,275,290,315,337,360,389,398,476,535,586,634,643,653,662,679,731,784,844,888,933],{"type":62,"tag":242,"props":243,"children":246},"span",{"class":244,"line":245},"line",1,[247],{"type":62,"tag":242,"props":248,"children":250},{"style":249},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[251],{"type":68,"value":252},"\u002F\u002F BlobStore — the byte layer. R2 backs it.\n",{"type":62,"tag":242,"props":254,"children":256},{"class":244,"line":255},2,[257,263,269],{"type":62,"tag":242,"props":258,"children":260},{"style":259},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[261],{"type":68,"value":262},"interface",{"type":62,"tag":242,"props":264,"children":266},{"style":265},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[267],{"type":68,"value":268}," BlobStore",{"type":62,"tag":242,"props":270,"children":272},{"style":271},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[273],{"type":68,"value":274}," {\n",{"type":62,"tag":242,"props":276,"children":278},{"class":244,"line":277},3,[279,285],{"type":62,"tag":242,"props":280,"children":282},{"style":281},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[283],{"type":68,"value":284},"  put",{"type":62,"tag":242,"props":286,"children":287},{"style":271},[288],{"type":68,"value":289},"(\n",{"type":62,"tag":242,"props":291,"children":293},{"class":244,"line":292},4,[294,300,305,310],{"type":62,"tag":242,"props":295,"children":297},{"style":296},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[298],{"type":68,"value":299},"    key",{"type":62,"tag":242,"props":301,"children":302},{"style":271},[303],{"type":68,"value":304},":",{"type":62,"tag":242,"props":306,"children":307},{"style":265},[308],{"type":68,"value":309}," string",{"type":62,"tag":242,"props":311,"children":312},{"style":271},[313],{"type":68,"value":314},",\n",{"type":62,"tag":242,"props":316,"children":318},{"class":244,"line":317},5,[319,324,328,333],{"type":62,"tag":242,"props":320,"children":321},{"style":296},[322],{"type":68,"value":323},"    body",{"type":62,"tag":242,"props":325,"children":326},{"style":271},[327],{"type":68,"value":304},{"type":62,"tag":242,"props":329,"children":330},{"style":265},[331],{"type":68,"value":332}," BlobBody",{"type":62,"tag":242,"props":334,"children":335},{"style":271},[336],{"type":68,"value":314},{"type":62,"tag":242,"props":338,"children":340},{"class":244,"line":339},6,[341,346,351,356],{"type":62,"tag":242,"props":342,"children":343},{"style":296},[344],{"type":68,"value":345},"    options",{"type":62,"tag":242,"props":347,"children":348},{"style":271},[349],{"type":68,"value":350},"?:",{"type":62,"tag":242,"props":352,"children":353},{"style":265},[354],{"type":68,"value":355}," BlobPutOptions",{"type":62,"tag":242,"props":357,"children":358},{"style":271},[359],{"type":68,"value":314},{"type":62,"tag":242,"props":361,"children":363},{"class":244,"line":362},7,[364,369,374,379,384],{"type":62,"tag":242,"props":365,"children":366},{"style":271},[367],{"type":68,"value":368},"  ):",{"type":62,"tag":242,"props":370,"children":371},{"style":265},[372],{"type":68,"value":373}," Promise",{"type":62,"tag":242,"props":375,"children":376},{"style":271},[377],{"type":68,"value":378},"\u003C",{"type":62,"tag":242,"props":380,"children":381},{"style":265},[382],{"type":68,"value":383},"BlobRecord",{"type":62,"tag":242,"props":385,"children":386},{"style":271},[387],{"type":68,"value":388},">\n",{"type":62,"tag":242,"props":390,"children":392},{"class":244,"line":391},8,[393],{"type":62,"tag":242,"props":394,"children":395},{"style":249},[396],{"type":68,"value":397},"  \u002F\u002F metadata + byte accessors; `options.range` reads one slice (for `206`s)\n",{"type":62,"tag":242,"props":399,"children":401},{"class":244,"line":400},9,[402,407,412,417,421,425,430,435,439,444,449,453,457,462,467,472],{"type":62,"tag":242,"props":403,"children":404},{"style":281},[405],{"type":68,"value":406},"  get",{"type":62,"tag":242,"props":408,"children":409},{"style":271},[410],{"type":68,"value":411},"(",{"type":62,"tag":242,"props":413,"children":414},{"style":296},[415],{"type":68,"value":416},"key",{"type":62,"tag":242,"props":418,"children":419},{"style":271},[420],{"type":68,"value":304},{"type":62,"tag":242,"props":422,"children":423},{"style":265},[424],{"type":68,"value":309},{"type":62,"tag":242,"props":426,"children":427},{"style":271},[428],{"type":68,"value":429},",",{"type":62,"tag":242,"props":431,"children":432},{"style":296},[433],{"type":68,"value":434}," options",{"type":62,"tag":242,"props":436,"children":437},{"style":271},[438],{"type":68,"value":350},{"type":62,"tag":242,"props":440,"children":441},{"style":265},[442],{"type":68,"value":443}," BlobGetOptions",{"type":62,"tag":242,"props":445,"children":446},{"style":271},[447],{"type":68,"value":448},"):",{"type":62,"tag":242,"props":450,"children":451},{"style":265},[452],{"type":68,"value":373},{"type":62,"tag":242,"props":454,"children":455},{"style":271},[456],{"type":68,"value":378},{"type":62,"tag":242,"props":458,"children":459},{"style":265},[460],{"type":68,"value":461},"BlobObject",{"type":62,"tag":242,"props":463,"children":464},{"style":271},[465],{"type":68,"value":466}," |",{"type":62,"tag":242,"props":468,"children":469},{"style":265},[470],{"type":68,"value":471}," null",{"type":62,"tag":242,"props":473,"children":474},{"style":271},[475],{"type":68,"value":388},{"type":62,"tag":242,"props":477,"children":479},{"class":244,"line":478},10,[480,485,489,493,497,501,505,509,513,517,521,525,530],{"type":62,"tag":242,"props":481,"children":482},{"style":281},[483],{"type":68,"value":484},"  head",{"type":62,"tag":242,"props":486,"children":487},{"style":271},[488],{"type":68,"value":411},{"type":62,"tag":242,"props":490,"children":491},{"style":296},[492],{"type":68,"value":416},{"type":62,"tag":242,"props":494,"children":495},{"style":271},[496],{"type":68,"value":304},{"type":62,"tag":242,"props":498,"children":499},{"style":265},[500],{"type":68,"value":309},{"type":62,"tag":242,"props":502,"children":503},{"style":271},[504],{"type":68,"value":448},{"type":62,"tag":242,"props":506,"children":507},{"style":265},[508],{"type":68,"value":373},{"type":62,"tag":242,"props":510,"children":511},{"style":271},[512],{"type":68,"value":378},{"type":62,"tag":242,"props":514,"children":515},{"style":265},[516],{"type":68,"value":383},{"type":62,"tag":242,"props":518,"children":519},{"style":271},[520],{"type":68,"value":466},{"type":62,"tag":242,"props":522,"children":523},{"style":265},[524],{"type":68,"value":471},{"type":62,"tag":242,"props":526,"children":527},{"style":271},[528],{"type":68,"value":529},">",{"type":62,"tag":242,"props":531,"children":532},{"style":249},[533],{"type":68,"value":534}," \u002F\u002F metadata only\n",{"type":62,"tag":242,"props":536,"children":538},{"class":244,"line":537},11,[539,544,548,552,556,560,564,568,572,577,581],{"type":62,"tag":242,"props":540,"children":541},{"style":281},[542],{"type":68,"value":543},"  delete",{"type":62,"tag":242,"props":545,"children":546},{"style":271},[547],{"type":68,"value":411},{"type":62,"tag":242,"props":549,"children":550},{"style":296},[551],{"type":68,"value":416},{"type":62,"tag":242,"props":553,"children":554},{"style":271},[555],{"type":68,"value":304},{"type":62,"tag":242,"props":557,"children":558},{"style":265},[559],{"type":68,"value":309},{"type":62,"tag":242,"props":561,"children":562},{"style":271},[563],{"type":68,"value":448},{"type":62,"tag":242,"props":565,"children":566},{"style":265},[567],{"type":68,"value":373},{"type":62,"tag":242,"props":569,"children":570},{"style":271},[571],{"type":68,"value":378},{"type":62,"tag":242,"props":573,"children":574},{"style":265},[575],{"type":68,"value":576},"void",{"type":62,"tag":242,"props":578,"children":579},{"style":271},[580],{"type":68,"value":529},{"type":62,"tag":242,"props":582,"children":583},{"style":249},[584],{"type":68,"value":585}," \u002F\u002F no-op if absent\n",{"type":62,"tag":242,"props":587,"children":589},{"class":244,"line":588},12,[590,595,599,604,608,613,617,621,625,630],{"type":62,"tag":242,"props":591,"children":592},{"style":281},[593],{"type":68,"value":594},"  list",{"type":62,"tag":242,"props":596,"children":597},{"style":271},[598],{"type":68,"value":411},{"type":62,"tag":242,"props":600,"children":601},{"style":296},[602],{"type":68,"value":603},"options",{"type":62,"tag":242,"props":605,"children":606},{"style":271},[607],{"type":68,"value":350},{"type":62,"tag":242,"props":609,"children":610},{"style":265},[611],{"type":68,"value":612}," BlobListOptions",{"type":62,"tag":242,"props":614,"children":615},{"style":271},[616],{"type":68,"value":448},{"type":62,"tag":242,"props":618,"children":619},{"style":265},[620],{"type":68,"value":373},{"type":62,"tag":242,"props":622,"children":623},{"style":271},[624],{"type":68,"value":378},{"type":62,"tag":242,"props":626,"children":627},{"style":265},[628],{"type":68,"value":629},"BlobListPage",{"type":62,"tag":242,"props":631,"children":632},{"style":271},[633],{"type":68,"value":388},{"type":62,"tag":242,"props":635,"children":637},{"class":244,"line":636},13,[638],{"type":62,"tag":242,"props":639,"children":640},{"style":271},[641],{"type":68,"value":642},"}\n",{"type":62,"tag":242,"props":644,"children":646},{"class":244,"line":645},14,[647],{"type":62,"tag":242,"props":648,"children":650},{"emptyLinePlaceholder":649},true,[651],{"type":68,"value":652},"\n",{"type":62,"tag":242,"props":654,"children":656},{"class":244,"line":655},15,[657],{"type":62,"tag":242,"props":658,"children":659},{"style":249},[660],{"type":68,"value":661},"\u002F\u002F ArtifactStore — the metadata layer. D1 (or KV) backs it.\n",{"type":62,"tag":242,"props":663,"children":665},{"class":244,"line":664},16,[666,670,675],{"type":62,"tag":242,"props":667,"children":668},{"style":259},[669],{"type":68,"value":262},{"type":62,"tag":242,"props":671,"children":672},{"style":265},[673],{"type":68,"value":674}," ArtifactStore",{"type":62,"tag":242,"props":676,"children":677},{"style":271},[678],{"type":68,"value":274},{"type":62,"tag":242,"props":680,"children":682},{"class":244,"line":681},17,[683,688,692,697,701,706,710,714,718,722,726],{"type":62,"tag":242,"props":684,"children":685},{"style":281},[686],{"type":68,"value":687},"  save",{"type":62,"tag":242,"props":689,"children":690},{"style":271},[691],{"type":68,"value":411},{"type":62,"tag":242,"props":693,"children":694},{"style":296},[695],{"type":68,"value":696},"record",{"type":62,"tag":242,"props":698,"children":699},{"style":271},[700],{"type":68,"value":304},{"type":62,"tag":242,"props":702,"children":703},{"style":265},[704],{"type":68,"value":705}," ArtifactRecord",{"type":62,"tag":242,"props":707,"children":708},{"style":271},[709],{"type":68,"value":448},{"type":62,"tag":242,"props":711,"children":712},{"style":265},[713],{"type":68,"value":373},{"type":62,"tag":242,"props":715,"children":716},{"style":271},[717],{"type":68,"value":378},{"type":62,"tag":242,"props":719,"children":720},{"style":265},[721],{"type":68,"value":576},{"type":62,"tag":242,"props":723,"children":724},{"style":271},[725],{"type":68,"value":529},{"type":62,"tag":242,"props":727,"children":728},{"style":249},[729],{"type":68,"value":730}," \u002F\u002F insert or overwrite\n",{"type":62,"tag":242,"props":732,"children":734},{"class":244,"line":733},18,[735,739,743,748,752,756,760,764,768,772,776,780],{"type":62,"tag":242,"props":736,"children":737},{"style":281},[738],{"type":68,"value":406},{"type":62,"tag":242,"props":740,"children":741},{"style":271},[742],{"type":68,"value":411},{"type":62,"tag":242,"props":744,"children":745},{"style":296},[746],{"type":68,"value":747},"artifactId",{"type":62,"tag":242,"props":749,"children":750},{"style":271},[751],{"type":68,"value":304},{"type":62,"tag":242,"props":753,"children":754},{"style":265},[755],{"type":68,"value":309},{"type":62,"tag":242,"props":757,"children":758},{"style":271},[759],{"type":68,"value":448},{"type":62,"tag":242,"props":761,"children":762},{"style":265},[763],{"type":68,"value":373},{"type":62,"tag":242,"props":765,"children":766},{"style":271},[767],{"type":68,"value":378},{"type":62,"tag":242,"props":769,"children":770},{"style":265},[771],{"type":68,"value":128},{"type":62,"tag":242,"props":773,"children":774},{"style":271},[775],{"type":68,"value":466},{"type":62,"tag":242,"props":777,"children":778},{"style":265},[779],{"type":68,"value":471},{"type":62,"tag":242,"props":781,"children":782},{"style":271},[783],{"type":68,"value":388},{"type":62,"tag":242,"props":785,"children":787},{"class":244,"line":786},19,[788,792,796,801,805,809,813,817,821,826,830,834,839],{"type":62,"tag":242,"props":789,"children":790},{"style":281},[791],{"type":68,"value":594},{"type":62,"tag":242,"props":793,"children":794},{"style":271},[795],{"type":68,"value":411},{"type":62,"tag":242,"props":797,"children":798},{"style":296},[799],{"type":68,"value":800},"runId",{"type":62,"tag":242,"props":802,"children":803},{"style":271},[804],{"type":68,"value":304},{"type":62,"tag":242,"props":806,"children":807},{"style":265},[808],{"type":68,"value":309},{"type":62,"tag":242,"props":810,"children":811},{"style":271},[812],{"type":68,"value":448},{"type":62,"tag":242,"props":814,"children":815},{"style":265},[816],{"type":68,"value":373},{"type":62,"tag":242,"props":818,"children":819},{"style":271},[820],{"type":68,"value":378},{"type":62,"tag":242,"props":822,"children":823},{"style":265},[824],{"type":68,"value":825},"Array",{"type":62,"tag":242,"props":827,"children":828},{"style":271},[829],{"type":68,"value":378},{"type":62,"tag":242,"props":831,"children":832},{"style":265},[833],{"type":68,"value":128},{"type":62,"tag":242,"props":835,"children":836},{"style":271},[837],{"type":68,"value":838},">>",{"type":62,"tag":242,"props":840,"children":841},{"style":249},[842],{"type":68,"value":843}," \u002F\u002F [] when none\n",{"type":62,"tag":242,"props":845,"children":847},{"class":244,"line":846},20,[848,852,856,860,864,868,872,876,880,884],{"type":62,"tag":242,"props":849,"children":850},{"style":281},[851],{"type":68,"value":543},{"type":62,"tag":242,"props":853,"children":854},{"style":271},[855],{"type":68,"value":411},{"type":62,"tag":242,"props":857,"children":858},{"style":296},[859],{"type":68,"value":747},{"type":62,"tag":242,"props":861,"children":862},{"style":271},[863],{"type":68,"value":304},{"type":62,"tag":242,"props":865,"children":866},{"style":265},[867],{"type":68,"value":309},{"type":62,"tag":242,"props":869,"children":870},{"style":271},[871],{"type":68,"value":448},{"type":62,"tag":242,"props":873,"children":874},{"style":265},[875],{"type":68,"value":373},{"type":62,"tag":242,"props":877,"children":878},{"style":271},[879],{"type":68,"value":378},{"type":62,"tag":242,"props":881,"children":882},{"style":265},[883],{"type":68,"value":576},{"type":62,"tag":242,"props":885,"children":886},{"style":271},[887],{"type":68,"value":388},{"type":62,"tag":242,"props":889,"children":891},{"class":244,"line":890},21,[892,897,901,905,909,913,917,921,925,929],{"type":62,"tag":242,"props":893,"children":894},{"style":281},[895],{"type":68,"value":896},"  deleteForRun",{"type":62,"tag":242,"props":898,"children":899},{"style":271},[900],{"type":68,"value":411},{"type":62,"tag":242,"props":902,"children":903},{"style":296},[904],{"type":68,"value":800},{"type":62,"tag":242,"props":906,"children":907},{"style":271},[908],{"type":68,"value":304},{"type":62,"tag":242,"props":910,"children":911},{"style":265},[912],{"type":68,"value":309},{"type":62,"tag":242,"props":914,"children":915},{"style":271},[916],{"type":68,"value":448},{"type":62,"tag":242,"props":918,"children":919},{"style":265},[920],{"type":68,"value":373},{"type":62,"tag":242,"props":922,"children":923},{"style":271},[924],{"type":68,"value":378},{"type":62,"tag":242,"props":926,"children":927},{"style":265},[928],{"type":68,"value":576},{"type":62,"tag":242,"props":930,"children":931},{"style":271},[932],{"type":68,"value":388},{"type":62,"tag":242,"props":934,"children":936},{"class":244,"line":935},22,[937],{"type":62,"tag":242,"props":938,"children":939},{"style":271},[940],{"type":68,"value":642},{"type":62,"tag":71,"props":942,"children":943},{},[944,950,952,958,960,966,968,974,976,981,983,989,991,997,999,1005,1007,1013,1015,1021,1023,1029],{"type":62,"tag":75,"props":945,"children":947},{"className":946},[],[948],{"type":68,"value":949},"BlobBody",{"type":68,"value":951}," is ",{"type":62,"tag":75,"props":953,"children":955},{"className":954},[],[956],{"type":68,"value":957},"ReadableStream\u003CUint8Array> | ArrayBuffer | ArrayBufferView | string | Blob",{"type":68,"value":959},". The non-stream shapes flow straight into ",{"type":62,"tag":75,"props":961,"children":963},{"className":962},[],[964],{"type":68,"value":965},"R2Bucket.put",{"type":68,"value":967},"\nunchanged — but a ",{"type":62,"tag":75,"props":969,"children":971},{"className":970},[],[972],{"type":68,"value":973},"ReadableStream",{"type":68,"value":975}," body does ",{"type":62,"tag":100,"props":977,"children":978},{},[979],{"type":68,"value":980},"not",{"type":68,"value":982},", in the general case:\nworkerd's ",{"type":62,"tag":75,"props":984,"children":986},{"className":985},[],[987],{"type":68,"value":988},"put",{"type":68,"value":990}," requires a stream with a known length (a ",{"type":62,"tag":75,"props":992,"children":994},{"className":993},[],[995],{"type":68,"value":996},"Response",{"type":68,"value":998}," body or the\nreadable half of a ",{"type":62,"tag":75,"props":1000,"children":1002},{"className":1001},[],[1003],{"type":68,"value":1004},"FixedLengthStream",{"type":68,"value":1006},"), and the artifact middleware hands you a\n",{"type":62,"tag":75,"props":1008,"children":1010},{"className":1009},[],[1011],{"type":68,"value":1012},"TransformStream",{"type":68,"value":1014},"-wrapped body whenever it had to cap a fetched body as it\ndrains. Passing that stream to ",{"type":62,"tag":75,"props":1016,"children":1018},{"className":1017},[],[1019],{"type":68,"value":1020},"bucket.put",{"type":68,"value":1022}," throws ",{"type":62,"tag":75,"props":1024,"children":1026},{"className":1025},[],[1027],{"type":68,"value":1028},"TypeError: Provided readable stream must have a known length",{"type":68,"value":174},{"type":62,"tag":71,"props":1031,"children":1032},{},[1033,1038,1040,1046],{"type":62,"tag":100,"props":1034,"children":1035},{},[1036],{"type":68,"value":1037},"When does that actually happen?",{"type":68,"value":1039}," The wrapper only exists to enforce\n",{"type":62,"tag":75,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":68,"value":1045},"maxArtifactBytes",{"type":68,"value":1047}," during the drain, so the middleware applies it only when\nnothing else bounds the transfer:",{"type":62,"tag":1049,"props":1050,"children":1051},"table",{},[1052,1081],{"type":62,"tag":1053,"props":1054,"children":1055},"thead",{},[1056],{"type":62,"tag":1057,"props":1058,"children":1059},"tr",{},[1060,1066,1076],{"type":62,"tag":1061,"props":1062,"children":1063},"th",{},[1064],{"type":68,"value":1065},"Provider response",{"type":62,"tag":1061,"props":1067,"children":1068},{},[1069,1071],{"type":68,"value":1070},"Body handed to ",{"type":62,"tag":75,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":68,"value":988},{"type":62,"tag":1061,"props":1077,"children":1078},{},[1079],{"type":68,"value":1080},"R2 path",{"type":62,"tag":1082,"props":1083,"children":1084},"tbody",{},[1085,1121,1139],{"type":62,"tag":1057,"props":1086,"children":1087},{},[1088,1106,1111],{"type":62,"tag":1089,"props":1090,"children":1091},"td",{},[1092,1098,1100],{"type":62,"tag":75,"props":1093,"children":1095},{"className":1094},[],[1096],{"type":68,"value":1097},"content-length",{"type":68,"value":1099},", no ",{"type":62,"tag":75,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":68,"value":1105},"content-encoding",{"type":62,"tag":1089,"props":1107,"children":1108},{},[1109],{"type":68,"value":1110},"untouched, declared length intact",{"type":62,"tag":1089,"props":1112,"children":1113},{},[1114,1119],{"type":62,"tag":75,"props":1115,"children":1117},{"className":1116},[],[1118],{"type":68,"value":1020},{"type":68,"value":1120}," direct",{"type":62,"tag":1057,"props":1122,"children":1123},{},[1124,1129,1134],{"type":62,"tag":1089,"props":1125,"children":1126},{},[1127],{"type":68,"value":1128},"chunked (no declared length)",{"type":62,"tag":1089,"props":1130,"children":1131},{},[1132],{"type":68,"value":1133},"wrapped, length-less",{"type":62,"tag":1089,"props":1135,"children":1136},{},[1137],{"type":68,"value":1138},"multipart",{"type":62,"tag":1057,"props":1140,"children":1141},{},[1142,1151,1155],{"type":62,"tag":1089,"props":1143,"children":1144},{},[1145],{"type":62,"tag":75,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":68,"value":1150},"content-encoding: gzip",{"type":62,"tag":1089,"props":1152,"children":1153},{},[1154],{"type":68,"value":1133},{"type":62,"tag":1089,"props":1156,"children":1157},{},[1158],{"type":68,"value":1138},{"type":62,"tag":71,"props":1160,"children":1161},{},[1162,1164,1169,1171,1177,1179,1185],{"type":68,"value":1163},"A provider CDN normally sends ",{"type":62,"tag":75,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":68,"value":1097},{"type":68,"value":1170},", so the first row is the common\ncase and ",{"type":62,"tag":75,"props":1172,"children":1174},{"className":1173},[],[1175],{"type":68,"value":1176},"bucket.put(key, body)",{"type":68,"value":1178}," just works. The recipe below is what makes the\nother two rows work: it re-declares the length from\n",{"type":62,"tag":75,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":68,"value":1184},"BlobPutOptions.expectedLength",{"type":68,"value":1186}," when the middleware could vouch for one, and\notherwise streams through a multipart upload (one 8 MiB part at a time — flat\nmemory at any artifact size). Write it once and every response shape is\ncovered.",{"type":62,"tag":71,"props":1188,"children":1189},{},[1190,1196,1198,1204,1206,1212],{"type":62,"tag":75,"props":1191,"children":1193},{"className":1192},[],[1194],{"type":68,"value":1195},"withGenerationPersistence(persistence, { maxArtifactBytes: false })",{"type":68,"value":1197}," drops the\nceiling and the wrapper altogether, so even a chunked reply arrives untouched.\nIt buys nothing extra for R2 (a chunked body has no length to preserve), so\nchoose it on its own merits: no ",{"type":62,"tag":1199,"props":1200,"children":1201},"em",{},[1202],{"type":68,"value":1203},"application",{"type":68,"value":1205}," limit on what an origin can\nstream into your bucket. R2's own limits still apply — 5 GiB per single-shot\nput, and 10,000 multipart parts (~80 GiB at the 8 MiB part size below). Keep\nthe cap when ",{"type":62,"tag":75,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":68,"value":1211},"allowInputUrl",{"type":68,"value":1213}," lets callers name the URL.",{"type":62,"tag":71,"props":1215,"children":1216},{},[1217,1223,1225,1231,1233,1239,1240,1246,1248,1254,1255,1261,1262,1268,1269,1274,1275,1281],{"type":62,"tag":75,"props":1218,"children":1220},{"className":1219},[],[1221],{"type":68,"value":1222},"BlobPutOptions",{"type":68,"value":1224}," is\n",{"type":62,"tag":75,"props":1226,"children":1228},{"className":1227},[],[1229],{"type":68,"value":1230},"{ contentType?, customMetadata?, expectedLength? }",{"type":68,"value":1232},"; ",{"type":62,"tag":75,"props":1234,"children":1236},{"className":1235},[],[1237],{"type":68,"value":1238},"BlobGetOptions",{"type":68,"value":1224},{"type":62,"tag":75,"props":1241,"children":1243},{"className":1242},[],[1244],{"type":68,"value":1245},"{ range?: { offset: number, length?: number } }",{"type":68,"value":1247}," and maps onto R2's own\n",{"type":62,"tag":75,"props":1249,"children":1251},{"className":1250},[],[1252],{"type":68,"value":1253},"range",{"type":68,"value":1232},{"type":62,"tag":75,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":68,"value":1260},"BlobListOptions",{"type":68,"value":951},{"type":62,"tag":75,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":68,"value":1267},"{ prefix?, cursor?, limit? }",{"type":68,"value":1232},{"type":62,"tag":75,"props":1270,"children":1272},{"className":1271},[],[1273],{"type":68,"value":629},{"type":68,"value":1224},{"type":62,"tag":75,"props":1276,"children":1278},{"className":1277},[],[1279],{"type":68,"value":1280},"{ objects: BlobRecord[], cursor?, truncated? }",{"type":68,"value":174},{"type":62,"tag":196,"props":1283,"children":1285},{"id":1284},"_1-blobstore-backed-by-r2",[1286],{"type":68,"value":1287},"1. BlobStore backed by R2",{"type":62,"tag":71,"props":1289,"children":1290},{},[1291,1297,1299,1305,1307,1313,1314,1320,1321,1327,1329,1335,1337,1343,1345,1350,1352,1358,1359,1365,1367,1372,1374,1380,1382,1388,1390,1396,1398,1404,1405,1411,1413,1419,1421,1426],{"type":62,"tag":75,"props":1292,"children":1294},{"className":1293},[],[1295],{"type":68,"value":1296},"R2Object",{"type":68,"value":1298}," carries ",{"type":62,"tag":75,"props":1300,"children":1302},{"className":1301},[],[1303],{"type":68,"value":1304},"size",{"type":68,"value":1306},", ",{"type":62,"tag":75,"props":1308,"children":1310},{"className":1309},[],[1311],{"type":68,"value":1312},"etag",{"type":68,"value":1306},{"type":62,"tag":75,"props":1315,"children":1317},{"className":1316},[],[1318],{"type":68,"value":1319},"httpMetadata.contentType",{"type":68,"value":1306},{"type":62,"tag":75,"props":1322,"children":1324},{"className":1323},[],[1325],{"type":68,"value":1326},"customMetadata",{"type":68,"value":1328},",\nand ",{"type":62,"tag":75,"props":1330,"children":1332},{"className":1331},[],[1333],{"type":68,"value":1334},"uploaded",{"type":68,"value":1336}," (a ",{"type":62,"tag":75,"props":1338,"children":1340},{"className":1339},[],[1341],{"type":68,"value":1342},"Date",{"type":68,"value":1344},"). ",{"type":62,"tag":75,"props":1346,"children":1348},{"className":1347},[],[1349],{"type":68,"value":383},{"type":68,"value":1351}," wants ",{"type":62,"tag":75,"props":1353,"children":1355},{"className":1354},[],[1356],{"type":68,"value":1357},"createdAt",{"type":68,"value":166},{"type":62,"tag":75,"props":1360,"children":1362},{"className":1361},[],[1363],{"type":68,"value":1364},"updatedAt",{"type":68,"value":1366}," as epoch\nms — R2 tracks only the single ",{"type":62,"tag":75,"props":1368,"children":1370},{"className":1369},[],[1371],{"type":68,"value":1334},{"type":68,"value":1373}," instant, so map it to both. ",{"type":62,"tag":75,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":68,"value":1379},"get",{"type":68,"value":1381}," \u002F\n",{"type":62,"tag":75,"props":1383,"children":1385},{"className":1384},[],[1386],{"type":68,"value":1387},"head",{"type":68,"value":1389}," are the byte-body vs metadata-only split; ",{"type":62,"tag":75,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":68,"value":1395},"R2ObjectBody",{"type":68,"value":1397}," already exposes\n",{"type":62,"tag":75,"props":1399,"children":1401},{"className":1400},[],[1402],{"type":68,"value":1403},"body",{"type":68,"value":1306},{"type":62,"tag":75,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":68,"value":1410},"arrayBuffer()",{"type":68,"value":1412},", and ",{"type":62,"tag":75,"props":1414,"children":1416},{"className":1415},[],[1417],{"type":68,"value":1418},"text()",{"type":68,"value":1420},", so a ",{"type":62,"tag":75,"props":1422,"children":1424},{"className":1423},[],[1425],{"type":68,"value":461},{"type":68,"value":1427}," is essentially the R2\nobject plus the mapped metadata.",{"type":62,"tag":231,"props":1429,"children":1432},{"className":233,"code":1430,"language":235,"meta":1431,"style":236},"import { defineBlobStore, resolveBlobRange } from '@tanstack\u002Fai-persistence'\nimport type { BlobObject, BlobRecord } from '@tanstack\u002Fai-persistence'\n\n\u002F\u002F R2 multipart parts must be ≥ 5 MiB and — except for the last — all exactly\n\u002F\u002F the SAME size, so a part reader has to cut on an exact boundary and carry the\n\u002F\u002F remainder. 8 MiB × the 10,000-part ceiling puts the multipart path's limit at\n\u002F\u002F ~80 GiB; raise this for larger objects, and check R2's current object-size\n\u002F\u002F limits before promising more.\nconst MULTIPART_PART_SIZE = 8 * 1024 * 1024\n\n\u002F**\n * Cut exactly `limit` bytes off the stream (fewer only at EOF), carrying any\n * overshoot into the next part.\n *\n * `carry` is the leftover from the previous call. Chunks are collected by\n * reference and copied once per part: growing a `Uint8Array` chunk-by-chunk\n * instead would re-copy the whole part on every read — quadratic work for a\n * part built from hundreds of small chunks.\n *\u002F\nasync function readPart(\n  reader: ReadableStreamDefaultReader\u003CUint8Array>,\n  limit: number,\n  carry: Uint8Array,\n): Promise\u003C{ bytes: Uint8Array; carry: Uint8Array; eof: boolean }> {\n  const chunks: Array\u003CUint8Array> = carry.byteLength > 0 ? [carry] : []\n  let total = carry.byteLength\n  let eof = false\n  while (total \u003C limit) {\n    const { value, done } = await reader.read()\n    if (done) {\n      eof = true\n      break\n    }\n    chunks.push(value)\n    total += value.byteLength\n  }\n  const joined = new Uint8Array(total)\n  let offset = 0\n  for (const chunk of chunks) {\n    joined.set(chunk, offset)\n    offset += chunk.byteLength\n  }\n  \u002F\u002F Equal-sized parts: hand back exactly `limit` and keep the rest for next\n  \u002F\u002F time. At EOF the last part is whatever is left, which R2 allows.\n  if (!eof && total > limit) {\n    return {\n      bytes: joined.subarray(0, limit),\n      carry: joined.subarray(limit),\n      eof,\n    }\n  }\n  return { bytes: joined, carry: new Uint8Array(0), eof }\n}\n\n\u002F\u002F R2 takes a single-shot put up to 5 GiB. Above that the upload has to be\n\u002F\u002F multipart even when the length is known.\nconst MAX_SINGLE_SHOT_BYTES = 5 * 1024 * 1024 * 1024\n\n\u002F**\n * `R2Bucket.put` requires a stream with a known length; a pass-through\n * TransformStream (what the middleware sends when it had to cap the body) has\n * none. Re-declare the length when `expectedLength` provides it — the\n * middleware only sets it when it is the exact decoded byte count — and\n * otherwise stream through a multipart upload, one buffered part at a time.\n *\u002F\nasync function putStream(\n  bucket: R2Bucket,\n  key: string,\n  body: ReadableStream\u003CUint8Array>,\n  options: R2PutOptions,\n  expectedLength: number | undefined,\n): Promise\u003CR2Object | null> {\n  if (expectedLength !== undefined && expectedLength \u003C= MAX_SINGLE_SHOT_BYTES) {\n    return bucket.put(\n      key,\n      body.pipeThrough(new FixedLengthStream(expectedLength)),\n      options,\n    )\n  }\n  \u002F\u002F Unknown length, or too big for one shot: multipart, one part at a time.\n  const reader = body.getReader()\n  const first = await readPart(reader, MULTIPART_PART_SIZE, new Uint8Array(0))\n  if (first.eof) {\n    \u002F\u002F The whole body fit in one part — a plain put is enough.\n    return bucket.put(key, first.bytes, options)\n  }\n  const upload = await bucket.createMultipartUpload(key, options)\n  try {\n    const parts: Array\u003CR2UploadedPart> = [\n      await upload.uploadPart(1, first.bytes),\n    ]\n    let carry = first.carry\n    let partNumber = 2\n    for (;;) {\n      const part = await readPart(reader, MULTIPART_PART_SIZE, carry)\n      carry = part.carry\n      if (part.bytes.byteLength > 0) {\n        \u002F\u002F 10,000 parts is R2's ceiling; failing here beats a confusing error\n        \u002F\u002F from `complete` after uploading gigabytes.\n        if (partNumber > 10_000) {\n          throw new Error(\n            `Artifact at ${key} exceeds the multipart part limit — raise MULTIPART_PART_SIZE.`,\n          )\n        }\n        parts.push(await upload.uploadPart(partNumber, part.bytes))\n        partNumber += 1\n      }\n      if (part.eof) break\n    }\n    return await upload.complete(parts)\n  } catch (error) {\n    await upload.abort().catch(() => undefined)\n    throw error\n  }\n}\n\nfunction toRecord(obj: R2Object): BlobRecord {\n  const uploaded = obj.uploaded.getTime()\n  return {\n    key: obj.key,\n    size: obj.size,\n    etag: obj.etag,\n    ...(obj.httpMetadata?.contentType\n      ? { contentType: obj.httpMetadata.contentType }\n      : {}),\n    ...(obj.customMetadata ? { customMetadata: obj.customMetadata } : {}),\n    createdAt: uploaded,\n    updatedAt: uploaded,\n  }\n}\n\nexport function r2BlobStore(bucket: R2Bucket) {\n  return defineBlobStore({\n    async put(key, body, options) {\n      const r2Options = {\n        ...(options?.contentType\n          ? { httpMetadata: { contentType: options.contentType } }\n          : {}),\n        ...(options?.customMetadata\n          ? { customMetadata: options.customMetadata }\n          : {}),\n      }\n      const obj =\n        body instanceof ReadableStream\n          ? await putStream(\n              bucket,\n              key,\n              body,\n              r2Options,\n              options?.expectedLength,\n            )\n          : await bucket.put(key, body, r2Options)\n      \u002F\u002F R2.put returns null only when an onlyIf precondition fails — not used here.\n      if (!obj) throw new Error(`R2 put failed for ${key}`)\n      return toRecord(obj)\n    },\n\n    async get(key, options): Promise\u003CBlobObject | null> {\n      if (!options?.range) {\n        const whole = await bucket.get(key)\n        if (!whole) return null\n        return {\n          ...toRecord(whole),\n          body: whole.body,\n          arrayBuffer: () => whole.arrayBuffer(),\n          text: () => whole.text(),\n        }\n      }\n      \u002F\u002F A ranged read is what a serve route turns into `206` — R2 slices in\n      \u002F\u002F the bucket, so a seek never streams the whole object. `resolveBlobRange`\n      \u002F\u002F clamps a too-long length and throws on an offset past the end (the\n      \u002F\u002F route answers `416` from `record.size` before ever calling in). The\n      \u002F\u002F `head` buys that clamp deterministically — one class-B op against\n      \u002F\u002F bytes you did not need to send.\n      \u002F\u002F\n      \u002F\u002F Retry a bounded number of times: each attempt measures the object and\n      \u002F\u002F reads a slice of THAT version, and only an overwrite landing between\n      \u002F\u002F the two calls costs another lap.\n      for (let attempt = 0; attempt \u003C 3; attempt++) {\n        const head = await bucket.head(key)\n        \u002F\u002F A ranged read of a key that is not there is a miss, not a\n        \u002F\u002F whole-object read: falling through to an un-ranged `get` would\n        \u002F\u002F answer a `206` carrying the entire file.\n        if (!head) return null\n        const served = resolveBlobRange(head.size, options.range)\n        const obj = await bucket.get(key, {\n          range: { offset: served.offset, length: served.length },\n          \u002F\u002F Tie the slice to the version `head` measured. Without this, a\n          \u002F\u002F `put` landing between the two calls yields a `Content-Range`\n          \u002F\u002F computed from one object and bytes from another.\n          onlyIf: { etagMatches: head.etag },\n        })\n        \u002F\u002F No body means the precondition failed — the object changed under us.\n        if (!obj) return null\n        if (!('body' in obj)) continue\n        return {\n          \u002F\u002F `toRecord(obj)` reports the WHOLE object's size even on a ranged\n          \u002F\u002F read — R2's `R2Object.size` is the object, not the slice — which\n          \u002F\u002F is exactly the contract, and what `Content-Range`'s total needs.\n          ...toRecord(obj),\n          range: served,\n          body: obj.body,\n          arrayBuffer: () => obj.arrayBuffer(),\n          text: () => obj.text(),\n        }\n      }\n      throw new Error(`R2 object ${key} changed under every ranged read.`)\n    },\n\n    async head(key) {\n      const obj = await bucket.head(key)\n      return obj ? toRecord(obj) : null\n    },\n\n    async delete(key) {\n      await bucket.delete(key)\n    },\n\n    async list(options) {\n      \u002F\u002F R2 reads `limit: 0` as \"use the default\", so short-circuit it.\n      if (options?.limit === 0) {\n        return { objects: [] }\n      }\n      const page = await bucket.list({\n        ...(options?.prefix !== undefined ? { prefix: options.prefix } : {}),\n        ...(options?.cursor !== undefined ? { cursor: options.cursor } : {}),\n        ...(options?.limit !== undefined ? { limit: options.limit } : {}),\n        \u002F\u002F R2 omits httpMetadata\u002FcustomMetadata from list rows unless asked.\n        include: ['httpMetadata', 'customMetadata'],\n      })\n      return {\n        objects: page.objects.map(toRecord),\n        ...(page.truncated ? { cursor: page.cursor, truncated: true } : {}),\n      }\n    },\n  })\n}\n","ignore",[1433],{"type":62,"tag":75,"props":1434,"children":1435},{"__ignoreMap":236},[1436,1490,1540,1547,1555,1563,1571,1579,1587,1630,1637,1645,1653,1661,1669,1677,1685,1693,1701,1709,1732,1763,1784,1806,1881,1973,2004,2026,2065,2124,2150,2168,2177,2186,2218,2244,2253,2291,2313,2352,2391,2416,2424,2433,2442,2490,2503,2555,2597,2609,2617,2625,2695,2703,2711,2720,2729,2775,2783,2791,2800,2809,2818,2827,2836,2844,2865,2887,2908,2938,2960,2990,3026,3079,3104,3117,3166,3179,3188,3196,3205,3239,3307,3340,3349,3406,3414,3468,3481,3524,3579,3588,3618,3640,3666,3720,3744,3794,3803,3812,3847,3869,3911,3920,3929,3995,4013,4022,4055,4063,4101,4132,4189,4203,4211,4219,4227,4271,4314,4326,4354,4383,4412,4448,4495,4517,4591,4612,4633,4641,4649,4657,4700,4720,4766,4787,4812,4866,4887,4912,4948,4968,4976,4993,5012,5032,5045,5058,5071,5084,5105,5114,5166,5175,5242,5267,5276,5284,5345,5381,5427,5462,5475,5505,5534,5577,5618,5626,5634,5643,5652,5661,5670,5679,5688,5697,5706,5715,5724,5793,5838,5847,5856,5865,5897,5954,6002,6071,6080,6089,6098,6140,6153,6162,6194,6246,6258,6267,6276,6285,6313,6333,6361,6401,6441,6449,6457,6512,6520,6528,6556,6600,6640,6648,6656,6685,6718,6726,6734,6763,6772,6813,6843,6851,6893,6975,7057,7137,7146,7200,7213,7225,7276,7368,7376,7384,7396],{"type":62,"tag":242,"props":1437,"children":1438},{"class":244,"line":245},[1439,1445,1450,1456,1460,1465,1470,1475,1480,1485],{"type":62,"tag":242,"props":1440,"children":1442},{"style":1441},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1443],{"type":68,"value":1444},"import",{"type":62,"tag":242,"props":1446,"children":1447},{"style":271},[1448],{"type":68,"value":1449}," {",{"type":62,"tag":242,"props":1451,"children":1453},{"style":1452},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1454],{"type":68,"value":1455}," defineBlobStore",{"type":62,"tag":242,"props":1457,"children":1458},{"style":271},[1459],{"type":68,"value":429},{"type":62,"tag":242,"props":1461,"children":1462},{"style":1452},[1463],{"type":68,"value":1464}," resolveBlobRange",{"type":62,"tag":242,"props":1466,"children":1467},{"style":271},[1468],{"type":68,"value":1469}," }",{"type":62,"tag":242,"props":1471,"children":1472},{"style":1441},[1473],{"type":68,"value":1474}," from",{"type":62,"tag":242,"props":1476,"children":1477},{"style":271},[1478],{"type":68,"value":1479}," '",{"type":62,"tag":242,"props":1481,"children":1483},{"style":1482},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1484],{"type":68,"value":212},{"type":62,"tag":242,"props":1486,"children":1487},{"style":271},[1488],{"type":68,"value":1489},"'\n",{"type":62,"tag":242,"props":1491,"children":1492},{"class":244,"line":255},[1493,1497,1502,1506,1511,1515,1520,1524,1528,1532,1536],{"type":62,"tag":242,"props":1494,"children":1495},{"style":1441},[1496],{"type":68,"value":1444},{"type":62,"tag":242,"props":1498,"children":1499},{"style":1441},[1500],{"type":68,"value":1501}," type",{"type":62,"tag":242,"props":1503,"children":1504},{"style":271},[1505],{"type":68,"value":1449},{"type":62,"tag":242,"props":1507,"children":1508},{"style":1452},[1509],{"type":68,"value":1510}," BlobObject",{"type":62,"tag":242,"props":1512,"children":1513},{"style":271},[1514],{"type":68,"value":429},{"type":62,"tag":242,"props":1516,"children":1517},{"style":1452},[1518],{"type":68,"value":1519}," BlobRecord",{"type":62,"tag":242,"props":1521,"children":1522},{"style":271},[1523],{"type":68,"value":1469},{"type":62,"tag":242,"props":1525,"children":1526},{"style":1441},[1527],{"type":68,"value":1474},{"type":62,"tag":242,"props":1529,"children":1530},{"style":271},[1531],{"type":68,"value":1479},{"type":62,"tag":242,"props":1533,"children":1534},{"style":1482},[1535],{"type":68,"value":212},{"type":62,"tag":242,"props":1537,"children":1538},{"style":271},[1539],{"type":68,"value":1489},{"type":62,"tag":242,"props":1541,"children":1542},{"class":244,"line":277},[1543],{"type":62,"tag":242,"props":1544,"children":1545},{"emptyLinePlaceholder":649},[1546],{"type":68,"value":652},{"type":62,"tag":242,"props":1548,"children":1549},{"class":244,"line":292},[1550],{"type":62,"tag":242,"props":1551,"children":1552},{"style":249},[1553],{"type":68,"value":1554},"\u002F\u002F R2 multipart parts must be ≥ 5 MiB and — except for the last — all exactly\n",{"type":62,"tag":242,"props":1556,"children":1557},{"class":244,"line":317},[1558],{"type":62,"tag":242,"props":1559,"children":1560},{"style":249},[1561],{"type":68,"value":1562},"\u002F\u002F the SAME size, so a part reader has to cut on an exact boundary and carry the\n",{"type":62,"tag":242,"props":1564,"children":1565},{"class":244,"line":339},[1566],{"type":62,"tag":242,"props":1567,"children":1568},{"style":249},[1569],{"type":68,"value":1570},"\u002F\u002F remainder. 8 MiB × the 10,000-part ceiling puts the multipart path's limit at\n",{"type":62,"tag":242,"props":1572,"children":1573},{"class":244,"line":362},[1574],{"type":62,"tag":242,"props":1575,"children":1576},{"style":249},[1577],{"type":68,"value":1578},"\u002F\u002F ~80 GiB; raise this for larger objects, and check R2's current object-size\n",{"type":62,"tag":242,"props":1580,"children":1581},{"class":244,"line":391},[1582],{"type":62,"tag":242,"props":1583,"children":1584},{"style":249},[1585],{"type":68,"value":1586},"\u002F\u002F limits before promising more.\n",{"type":62,"tag":242,"props":1588,"children":1589},{"class":244,"line":400},[1590,1595,1600,1605,1611,1616,1621,1625],{"type":62,"tag":242,"props":1591,"children":1592},{"style":259},[1593],{"type":68,"value":1594},"const",{"type":62,"tag":242,"props":1596,"children":1597},{"style":1452},[1598],{"type":68,"value":1599}," MULTIPART_PART_SIZE ",{"type":62,"tag":242,"props":1601,"children":1602},{"style":271},[1603],{"type":68,"value":1604},"=",{"type":62,"tag":242,"props":1606,"children":1608},{"style":1607},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1609],{"type":68,"value":1610}," 8",{"type":62,"tag":242,"props":1612,"children":1613},{"style":271},[1614],{"type":68,"value":1615}," *",{"type":62,"tag":242,"props":1617,"children":1618},{"style":1607},[1619],{"type":68,"value":1620}," 1024",{"type":62,"tag":242,"props":1622,"children":1623},{"style":271},[1624],{"type":68,"value":1615},{"type":62,"tag":242,"props":1626,"children":1627},{"style":1607},[1628],{"type":68,"value":1629}," 1024\n",{"type":62,"tag":242,"props":1631,"children":1632},{"class":244,"line":478},[1633],{"type":62,"tag":242,"props":1634,"children":1635},{"emptyLinePlaceholder":649},[1636],{"type":68,"value":652},{"type":62,"tag":242,"props":1638,"children":1639},{"class":244,"line":537},[1640],{"type":62,"tag":242,"props":1641,"children":1642},{"style":249},[1643],{"type":68,"value":1644},"\u002F**\n",{"type":62,"tag":242,"props":1646,"children":1647},{"class":244,"line":588},[1648],{"type":62,"tag":242,"props":1649,"children":1650},{"style":249},[1651],{"type":68,"value":1652}," * Cut exactly `limit` bytes off the stream (fewer only at EOF), carrying any\n",{"type":62,"tag":242,"props":1654,"children":1655},{"class":244,"line":636},[1656],{"type":62,"tag":242,"props":1657,"children":1658},{"style":249},[1659],{"type":68,"value":1660}," * overshoot into the next part.\n",{"type":62,"tag":242,"props":1662,"children":1663},{"class":244,"line":645},[1664],{"type":62,"tag":242,"props":1665,"children":1666},{"style":249},[1667],{"type":68,"value":1668}," *\n",{"type":62,"tag":242,"props":1670,"children":1671},{"class":244,"line":655},[1672],{"type":62,"tag":242,"props":1673,"children":1674},{"style":249},[1675],{"type":68,"value":1676}," * `carry` is the leftover from the previous call. Chunks are collected by\n",{"type":62,"tag":242,"props":1678,"children":1679},{"class":244,"line":664},[1680],{"type":62,"tag":242,"props":1681,"children":1682},{"style":249},[1683],{"type":68,"value":1684}," * reference and copied once per part: growing a `Uint8Array` chunk-by-chunk\n",{"type":62,"tag":242,"props":1686,"children":1687},{"class":244,"line":681},[1688],{"type":62,"tag":242,"props":1689,"children":1690},{"style":249},[1691],{"type":68,"value":1692}," * instead would re-copy the whole part on every read — quadratic work for a\n",{"type":62,"tag":242,"props":1694,"children":1695},{"class":244,"line":733},[1696],{"type":62,"tag":242,"props":1697,"children":1698},{"style":249},[1699],{"type":68,"value":1700}," * part built from hundreds of small chunks.\n",{"type":62,"tag":242,"props":1702,"children":1703},{"class":244,"line":786},[1704],{"type":62,"tag":242,"props":1705,"children":1706},{"style":249},[1707],{"type":68,"value":1708}," *\u002F\n",{"type":62,"tag":242,"props":1710,"children":1711},{"class":244,"line":846},[1712,1717,1722,1728],{"type":62,"tag":242,"props":1713,"children":1714},{"style":259},[1715],{"type":68,"value":1716},"async",{"type":62,"tag":242,"props":1718,"children":1719},{"style":259},[1720],{"type":68,"value":1721}," function",{"type":62,"tag":242,"props":1723,"children":1725},{"style":1724},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1726],{"type":68,"value":1727}," readPart",{"type":62,"tag":242,"props":1729,"children":1730},{"style":271},[1731],{"type":68,"value":289},{"type":62,"tag":242,"props":1733,"children":1734},{"class":244,"line":890},[1735,1740,1744,1749,1753,1758],{"type":62,"tag":242,"props":1736,"children":1737},{"style":296},[1738],{"type":68,"value":1739},"  reader",{"type":62,"tag":242,"props":1741,"children":1742},{"style":271},[1743],{"type":68,"value":304},{"type":62,"tag":242,"props":1745,"children":1746},{"style":265},[1747],{"type":68,"value":1748}," ReadableStreamDefaultReader",{"type":62,"tag":242,"props":1750,"children":1751},{"style":271},[1752],{"type":68,"value":378},{"type":62,"tag":242,"props":1754,"children":1755},{"style":265},[1756],{"type":68,"value":1757},"Uint8Array",{"type":62,"tag":242,"props":1759,"children":1760},{"style":271},[1761],{"type":68,"value":1762},">,\n",{"type":62,"tag":242,"props":1764,"children":1765},{"class":244,"line":935},[1766,1771,1775,1780],{"type":62,"tag":242,"props":1767,"children":1768},{"style":296},[1769],{"type":68,"value":1770},"  limit",{"type":62,"tag":242,"props":1772,"children":1773},{"style":271},[1774],{"type":68,"value":304},{"type":62,"tag":242,"props":1776,"children":1777},{"style":265},[1778],{"type":68,"value":1779}," number",{"type":62,"tag":242,"props":1781,"children":1782},{"style":271},[1783],{"type":68,"value":314},{"type":62,"tag":242,"props":1785,"children":1787},{"class":244,"line":1786},23,[1788,1793,1797,1802],{"type":62,"tag":242,"props":1789,"children":1790},{"style":296},[1791],{"type":68,"value":1792},"  carry",{"type":62,"tag":242,"props":1794,"children":1795},{"style":271},[1796],{"type":68,"value":304},{"type":62,"tag":242,"props":1798,"children":1799},{"style":265},[1800],{"type":68,"value":1801}," Uint8Array",{"type":62,"tag":242,"props":1803,"children":1804},{"style":271},[1805],{"type":68,"value":314},{"type":62,"tag":242,"props":1807,"children":1809},{"class":244,"line":1808},24,[1810,1814,1818,1823,1828,1832,1836,1841,1846,1850,1854,1858,1863,1867,1872,1877],{"type":62,"tag":242,"props":1811,"children":1812},{"style":271},[1813],{"type":68,"value":448},{"type":62,"tag":242,"props":1815,"children":1816},{"style":265},[1817],{"type":68,"value":373},{"type":62,"tag":242,"props":1819,"children":1820},{"style":271},[1821],{"type":68,"value":1822},"\u003C{",{"type":62,"tag":242,"props":1824,"children":1825},{"style":281},[1826],{"type":68,"value":1827}," bytes",{"type":62,"tag":242,"props":1829,"children":1830},{"style":271},[1831],{"type":68,"value":304},{"type":62,"tag":242,"props":1833,"children":1834},{"style":265},[1835],{"type":68,"value":1801},{"type":62,"tag":242,"props":1837,"children":1838},{"style":271},[1839],{"type":68,"value":1840},";",{"type":62,"tag":242,"props":1842,"children":1843},{"style":281},[1844],{"type":68,"value":1845}," carry",{"type":62,"tag":242,"props":1847,"children":1848},{"style":271},[1849],{"type":68,"value":304},{"type":62,"tag":242,"props":1851,"children":1852},{"style":265},[1853],{"type":68,"value":1801},{"type":62,"tag":242,"props":1855,"children":1856},{"style":271},[1857],{"type":68,"value":1840},{"type":62,"tag":242,"props":1859,"children":1860},{"style":281},[1861],{"type":68,"value":1862}," eof",{"type":62,"tag":242,"props":1864,"children":1865},{"style":271},[1866],{"type":68,"value":304},{"type":62,"tag":242,"props":1868,"children":1869},{"style":265},[1870],{"type":68,"value":1871}," boolean",{"type":62,"tag":242,"props":1873,"children":1874},{"style":271},[1875],{"type":68,"value":1876}," }>",{"type":62,"tag":242,"props":1878,"children":1879},{"style":271},[1880],{"type":68,"value":274},{"type":62,"tag":242,"props":1882,"children":1884},{"class":244,"line":1883},25,[1885,1890,1895,1899,1904,1908,1912,1916,1921,1925,1929,1934,1939,1944,1949,1954,1959,1964,1968],{"type":62,"tag":242,"props":1886,"children":1887},{"style":259},[1888],{"type":68,"value":1889},"  const",{"type":62,"tag":242,"props":1891,"children":1892},{"style":1452},[1893],{"type":68,"value":1894}," chunks",{"type":62,"tag":242,"props":1896,"children":1897},{"style":271},[1898],{"type":68,"value":304},{"type":62,"tag":242,"props":1900,"children":1901},{"style":265},[1902],{"type":68,"value":1903}," Array",{"type":62,"tag":242,"props":1905,"children":1906},{"style":271},[1907],{"type":68,"value":378},{"type":62,"tag":242,"props":1909,"children":1910},{"style":265},[1911],{"type":68,"value":1757},{"type":62,"tag":242,"props":1913,"children":1914},{"style":271},[1915],{"type":68,"value":529},{"type":62,"tag":242,"props":1917,"children":1918},{"style":271},[1919],{"type":68,"value":1920}," =",{"type":62,"tag":242,"props":1922,"children":1923},{"style":1452},[1924],{"type":68,"value":1845},{"type":62,"tag":242,"props":1926,"children":1927},{"style":271},[1928],{"type":68,"value":174},{"type":62,"tag":242,"props":1930,"children":1931},{"style":1452},[1932],{"type":68,"value":1933},"byteLength",{"type":62,"tag":242,"props":1935,"children":1936},{"style":271},[1937],{"type":68,"value":1938}," >",{"type":62,"tag":242,"props":1940,"children":1941},{"style":1607},[1942],{"type":68,"value":1943}," 0",{"type":62,"tag":242,"props":1945,"children":1946},{"style":271},[1947],{"type":68,"value":1948}," ?",{"type":62,"tag":242,"props":1950,"children":1951},{"style":281},[1952],{"type":68,"value":1953}," [",{"type":62,"tag":242,"props":1955,"children":1956},{"style":1452},[1957],{"type":68,"value":1958},"carry",{"type":62,"tag":242,"props":1960,"children":1961},{"style":281},[1962],{"type":68,"value":1963},"] ",{"type":62,"tag":242,"props":1965,"children":1966},{"style":271},[1967],{"type":68,"value":304},{"type":62,"tag":242,"props":1969,"children":1970},{"style":281},[1971],{"type":68,"value":1972}," []\n",{"type":62,"tag":242,"props":1974,"children":1976},{"class":244,"line":1975},26,[1977,1982,1987,1991,1995,1999],{"type":62,"tag":242,"props":1978,"children":1979},{"style":259},[1980],{"type":68,"value":1981},"  let",{"type":62,"tag":242,"props":1983,"children":1984},{"style":1452},[1985],{"type":68,"value":1986}," total",{"type":62,"tag":242,"props":1988,"children":1989},{"style":271},[1990],{"type":68,"value":1920},{"type":62,"tag":242,"props":1992,"children":1993},{"style":1452},[1994],{"type":68,"value":1845},{"type":62,"tag":242,"props":1996,"children":1997},{"style":271},[1998],{"type":68,"value":174},{"type":62,"tag":242,"props":2000,"children":2001},{"style":1452},[2002],{"type":68,"value":2003},"byteLength\n",{"type":62,"tag":242,"props":2005,"children":2007},{"class":244,"line":2006},27,[2008,2012,2016,2020],{"type":62,"tag":242,"props":2009,"children":2010},{"style":259},[2011],{"type":68,"value":1981},{"type":62,"tag":242,"props":2013,"children":2014},{"style":1452},[2015],{"type":68,"value":1862},{"type":62,"tag":242,"props":2017,"children":2018},{"style":271},[2019],{"type":68,"value":1920},{"type":62,"tag":242,"props":2021,"children":2023},{"style":2022},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[2024],{"type":68,"value":2025}," false\n",{"type":62,"tag":242,"props":2027,"children":2029},{"class":244,"line":2028},28,[2030,2035,2040,2045,2050,2055,2060],{"type":62,"tag":242,"props":2031,"children":2032},{"style":1441},[2033],{"type":68,"value":2034},"  while",{"type":62,"tag":242,"props":2036,"children":2037},{"style":281},[2038],{"type":68,"value":2039}," (",{"type":62,"tag":242,"props":2041,"children":2042},{"style":1452},[2043],{"type":68,"value":2044},"total",{"type":62,"tag":242,"props":2046,"children":2047},{"style":271},[2048],{"type":68,"value":2049}," \u003C",{"type":62,"tag":242,"props":2051,"children":2052},{"style":1452},[2053],{"type":68,"value":2054}," limit",{"type":62,"tag":242,"props":2056,"children":2057},{"style":281},[2058],{"type":68,"value":2059},") ",{"type":62,"tag":242,"props":2061,"children":2062},{"style":271},[2063],{"type":68,"value":2064},"{\n",{"type":62,"tag":242,"props":2066,"children":2068},{"class":244,"line":2067},29,[2069,2074,2078,2083,2087,2092,2096,2100,2105,2110,2114,2119],{"type":62,"tag":242,"props":2070,"children":2071},{"style":259},[2072],{"type":68,"value":2073},"    const",{"type":62,"tag":242,"props":2075,"children":2076},{"style":271},[2077],{"type":68,"value":1449},{"type":62,"tag":242,"props":2079,"children":2080},{"style":1452},[2081],{"type":68,"value":2082}," value",{"type":62,"tag":242,"props":2084,"children":2085},{"style":271},[2086],{"type":68,"value":429},{"type":62,"tag":242,"props":2088,"children":2089},{"style":1452},[2090],{"type":68,"value":2091}," done",{"type":62,"tag":242,"props":2093,"children":2094},{"style":271},[2095],{"type":68,"value":1469},{"type":62,"tag":242,"props":2097,"children":2098},{"style":271},[2099],{"type":68,"value":1920},{"type":62,"tag":242,"props":2101,"children":2102},{"style":1441},[2103],{"type":68,"value":2104}," await",{"type":62,"tag":242,"props":2106,"children":2107},{"style":1452},[2108],{"type":68,"value":2109}," reader",{"type":62,"tag":242,"props":2111,"children":2112},{"style":271},[2113],{"type":68,"value":174},{"type":62,"tag":242,"props":2115,"children":2116},{"style":1724},[2117],{"type":68,"value":2118},"read",{"type":62,"tag":242,"props":2120,"children":2121},{"style":281},[2122],{"type":68,"value":2123},"()\n",{"type":62,"tag":242,"props":2125,"children":2127},{"class":244,"line":2126},30,[2128,2133,2137,2142,2146],{"type":62,"tag":242,"props":2129,"children":2130},{"style":1441},[2131],{"type":68,"value":2132},"    if",{"type":62,"tag":242,"props":2134,"children":2135},{"style":281},[2136],{"type":68,"value":2039},{"type":62,"tag":242,"props":2138,"children":2139},{"style":1452},[2140],{"type":68,"value":2141},"done",{"type":62,"tag":242,"props":2143,"children":2144},{"style":281},[2145],{"type":68,"value":2059},{"type":62,"tag":242,"props":2147,"children":2148},{"style":271},[2149],{"type":68,"value":2064},{"type":62,"tag":242,"props":2151,"children":2153},{"class":244,"line":2152},31,[2154,2159,2163],{"type":62,"tag":242,"props":2155,"children":2156},{"style":1452},[2157],{"type":68,"value":2158},"      eof",{"type":62,"tag":242,"props":2160,"children":2161},{"style":271},[2162],{"type":68,"value":1920},{"type":62,"tag":242,"props":2164,"children":2165},{"style":2022},[2166],{"type":68,"value":2167}," true\n",{"type":62,"tag":242,"props":2169,"children":2171},{"class":244,"line":2170},32,[2172],{"type":62,"tag":242,"props":2173,"children":2174},{"style":1441},[2175],{"type":68,"value":2176},"      break\n",{"type":62,"tag":242,"props":2178,"children":2180},{"class":244,"line":2179},33,[2181],{"type":62,"tag":242,"props":2182,"children":2183},{"style":271},[2184],{"type":68,"value":2185},"    }\n",{"type":62,"tag":242,"props":2187,"children":2189},{"class":244,"line":2188},34,[2190,2195,2199,2204,2208,2213],{"type":62,"tag":242,"props":2191,"children":2192},{"style":1452},[2193],{"type":68,"value":2194},"    chunks",{"type":62,"tag":242,"props":2196,"children":2197},{"style":271},[2198],{"type":68,"value":174},{"type":62,"tag":242,"props":2200,"children":2201},{"style":1724},[2202],{"type":68,"value":2203},"push",{"type":62,"tag":242,"props":2205,"children":2206},{"style":281},[2207],{"type":68,"value":411},{"type":62,"tag":242,"props":2209,"children":2210},{"style":1452},[2211],{"type":68,"value":2212},"value",{"type":62,"tag":242,"props":2214,"children":2215},{"style":281},[2216],{"type":68,"value":2217},")\n",{"type":62,"tag":242,"props":2219,"children":2221},{"class":244,"line":2220},35,[2222,2227,2232,2236,2240],{"type":62,"tag":242,"props":2223,"children":2224},{"style":1452},[2225],{"type":68,"value":2226},"    total",{"type":62,"tag":242,"props":2228,"children":2229},{"style":271},[2230],{"type":68,"value":2231}," +=",{"type":62,"tag":242,"props":2233,"children":2234},{"style":1452},[2235],{"type":68,"value":2082},{"type":62,"tag":242,"props":2237,"children":2238},{"style":271},[2239],{"type":68,"value":174},{"type":62,"tag":242,"props":2241,"children":2242},{"style":1452},[2243],{"type":68,"value":2003},{"type":62,"tag":242,"props":2245,"children":2247},{"class":244,"line":2246},36,[2248],{"type":62,"tag":242,"props":2249,"children":2250},{"style":271},[2251],{"type":68,"value":2252},"  }\n",{"type":62,"tag":242,"props":2254,"children":2256},{"class":244,"line":2255},37,[2257,2261,2266,2270,2275,2279,2283,2287],{"type":62,"tag":242,"props":2258,"children":2259},{"style":259},[2260],{"type":68,"value":1889},{"type":62,"tag":242,"props":2262,"children":2263},{"style":1452},[2264],{"type":68,"value":2265}," joined",{"type":62,"tag":242,"props":2267,"children":2268},{"style":271},[2269],{"type":68,"value":1920},{"type":62,"tag":242,"props":2271,"children":2272},{"style":271},[2273],{"type":68,"value":2274}," new",{"type":62,"tag":242,"props":2276,"children":2277},{"style":1724},[2278],{"type":68,"value":1801},{"type":62,"tag":242,"props":2280,"children":2281},{"style":281},[2282],{"type":68,"value":411},{"type":62,"tag":242,"props":2284,"children":2285},{"style":1452},[2286],{"type":68,"value":2044},{"type":62,"tag":242,"props":2288,"children":2289},{"style":281},[2290],{"type":68,"value":2217},{"type":62,"tag":242,"props":2292,"children":2294},{"class":244,"line":2293},38,[2295,2299,2304,2308],{"type":62,"tag":242,"props":2296,"children":2297},{"style":259},[2298],{"type":68,"value":1981},{"type":62,"tag":242,"props":2300,"children":2301},{"style":1452},[2302],{"type":68,"value":2303}," offset",{"type":62,"tag":242,"props":2305,"children":2306},{"style":271},[2307],{"type":68,"value":1920},{"type":62,"tag":242,"props":2309,"children":2310},{"style":1607},[2311],{"type":68,"value":2312}," 0\n",{"type":62,"tag":242,"props":2314,"children":2316},{"class":244,"line":2315},39,[2317,2322,2326,2330,2335,2340,2344,2348],{"type":62,"tag":242,"props":2318,"children":2319},{"style":1441},[2320],{"type":68,"value":2321},"  for",{"type":62,"tag":242,"props":2323,"children":2324},{"style":281},[2325],{"type":68,"value":2039},{"type":62,"tag":242,"props":2327,"children":2328},{"style":259},[2329],{"type":68,"value":1594},{"type":62,"tag":242,"props":2331,"children":2332},{"style":1452},[2333],{"type":68,"value":2334}," chunk",{"type":62,"tag":242,"props":2336,"children":2337},{"style":271},[2338],{"type":68,"value":2339}," of",{"type":62,"tag":242,"props":2341,"children":2342},{"style":1452},[2343],{"type":68,"value":1894},{"type":62,"tag":242,"props":2345,"children":2346},{"style":281},[2347],{"type":68,"value":2059},{"type":62,"tag":242,"props":2349,"children":2350},{"style":271},[2351],{"type":68,"value":2064},{"type":62,"tag":242,"props":2353,"children":2355},{"class":244,"line":2354},40,[2356,2361,2365,2370,2374,2379,2383,2387],{"type":62,"tag":242,"props":2357,"children":2358},{"style":1452},[2359],{"type":68,"value":2360},"    joined",{"type":62,"tag":242,"props":2362,"children":2363},{"style":271},[2364],{"type":68,"value":174},{"type":62,"tag":242,"props":2366,"children":2367},{"style":1724},[2368],{"type":68,"value":2369},"set",{"type":62,"tag":242,"props":2371,"children":2372},{"style":281},[2373],{"type":68,"value":411},{"type":62,"tag":242,"props":2375,"children":2376},{"style":1452},[2377],{"type":68,"value":2378},"chunk",{"type":62,"tag":242,"props":2380,"children":2381},{"style":271},[2382],{"type":68,"value":429},{"type":62,"tag":242,"props":2384,"children":2385},{"style":1452},[2386],{"type":68,"value":2303},{"type":62,"tag":242,"props":2388,"children":2389},{"style":281},[2390],{"type":68,"value":2217},{"type":62,"tag":242,"props":2392,"children":2394},{"class":244,"line":2393},41,[2395,2400,2404,2408,2412],{"type":62,"tag":242,"props":2396,"children":2397},{"style":1452},[2398],{"type":68,"value":2399},"    offset",{"type":62,"tag":242,"props":2401,"children":2402},{"style":271},[2403],{"type":68,"value":2231},{"type":62,"tag":242,"props":2405,"children":2406},{"style":1452},[2407],{"type":68,"value":2334},{"type":62,"tag":242,"props":2409,"children":2410},{"style":271},[2411],{"type":68,"value":174},{"type":62,"tag":242,"props":2413,"children":2414},{"style":1452},[2415],{"type":68,"value":2003},{"type":62,"tag":242,"props":2417,"children":2419},{"class":244,"line":2418},42,[2420],{"type":62,"tag":242,"props":2421,"children":2422},{"style":271},[2423],{"type":68,"value":2252},{"type":62,"tag":242,"props":2425,"children":2427},{"class":244,"line":2426},43,[2428],{"type":62,"tag":242,"props":2429,"children":2430},{"style":249},[2431],{"type":68,"value":2432},"  \u002F\u002F Equal-sized parts: hand back exactly `limit` and keep the rest for next\n",{"type":62,"tag":242,"props":2434,"children":2436},{"class":244,"line":2435},44,[2437],{"type":62,"tag":242,"props":2438,"children":2439},{"style":249},[2440],{"type":68,"value":2441},"  \u002F\u002F time. At EOF the last part is whatever is left, which R2 allows.\n",{"type":62,"tag":242,"props":2443,"children":2445},{"class":244,"line":2444},45,[2446,2451,2455,2460,2465,2470,2474,2478,2482,2486],{"type":62,"tag":242,"props":2447,"children":2448},{"style":1441},[2449],{"type":68,"value":2450},"  if",{"type":62,"tag":242,"props":2452,"children":2453},{"style":281},[2454],{"type":68,"value":2039},{"type":62,"tag":242,"props":2456,"children":2457},{"style":271},[2458],{"type":68,"value":2459},"!",{"type":62,"tag":242,"props":2461,"children":2462},{"style":1452},[2463],{"type":68,"value":2464},"eof",{"type":62,"tag":242,"props":2466,"children":2467},{"style":271},[2468],{"type":68,"value":2469}," &&",{"type":62,"tag":242,"props":2471,"children":2472},{"style":1452},[2473],{"type":68,"value":1986},{"type":62,"tag":242,"props":2475,"children":2476},{"style":271},[2477],{"type":68,"value":1938},{"type":62,"tag":242,"props":2479,"children":2480},{"style":1452},[2481],{"type":68,"value":2054},{"type":62,"tag":242,"props":2483,"children":2484},{"style":281},[2485],{"type":68,"value":2059},{"type":62,"tag":242,"props":2487,"children":2488},{"style":271},[2489],{"type":68,"value":2064},{"type":62,"tag":242,"props":2491,"children":2493},{"class":244,"line":2492},46,[2494,2499],{"type":62,"tag":242,"props":2495,"children":2496},{"style":1441},[2497],{"type":68,"value":2498},"    return",{"type":62,"tag":242,"props":2500,"children":2501},{"style":271},[2502],{"type":68,"value":274},{"type":62,"tag":242,"props":2504,"children":2506},{"class":244,"line":2505},47,[2507,2512,2516,2520,2524,2529,2533,2538,2542,2546,2551],{"type":62,"tag":242,"props":2508,"children":2509},{"style":281},[2510],{"type":68,"value":2511},"      bytes",{"type":62,"tag":242,"props":2513,"children":2514},{"style":271},[2515],{"type":68,"value":304},{"type":62,"tag":242,"props":2517,"children":2518},{"style":1452},[2519],{"type":68,"value":2265},{"type":62,"tag":242,"props":2521,"children":2522},{"style":271},[2523],{"type":68,"value":174},{"type":62,"tag":242,"props":2525,"children":2526},{"style":1724},[2527],{"type":68,"value":2528},"subarray",{"type":62,"tag":242,"props":2530,"children":2531},{"style":281},[2532],{"type":68,"value":411},{"type":62,"tag":242,"props":2534,"children":2535},{"style":1607},[2536],{"type":68,"value":2537},"0",{"type":62,"tag":242,"props":2539,"children":2540},{"style":271},[2541],{"type":68,"value":429},{"type":62,"tag":242,"props":2543,"children":2544},{"style":1452},[2545],{"type":68,"value":2054},{"type":62,"tag":242,"props":2547,"children":2548},{"style":281},[2549],{"type":68,"value":2550},")",{"type":62,"tag":242,"props":2552,"children":2553},{"style":271},[2554],{"type":68,"value":314},{"type":62,"tag":242,"props":2556,"children":2558},{"class":244,"line":2557},48,[2559,2564,2568,2572,2576,2580,2584,2589,2593],{"type":62,"tag":242,"props":2560,"children":2561},{"style":281},[2562],{"type":68,"value":2563},"      carry",{"type":62,"tag":242,"props":2565,"children":2566},{"style":271},[2567],{"type":68,"value":304},{"type":62,"tag":242,"props":2569,"children":2570},{"style":1452},[2571],{"type":68,"value":2265},{"type":62,"tag":242,"props":2573,"children":2574},{"style":271},[2575],{"type":68,"value":174},{"type":62,"tag":242,"props":2577,"children":2578},{"style":1724},[2579],{"type":68,"value":2528},{"type":62,"tag":242,"props":2581,"children":2582},{"style":281},[2583],{"type":68,"value":411},{"type":62,"tag":242,"props":2585,"children":2586},{"style":1452},[2587],{"type":68,"value":2588},"limit",{"type":62,"tag":242,"props":2590,"children":2591},{"style":281},[2592],{"type":68,"value":2550},{"type":62,"tag":242,"props":2594,"children":2595},{"style":271},[2596],{"type":68,"value":314},{"type":62,"tag":242,"props":2598,"children":2600},{"class":244,"line":2599},49,[2601,2605],{"type":62,"tag":242,"props":2602,"children":2603},{"style":1452},[2604],{"type":68,"value":2158},{"type":62,"tag":242,"props":2606,"children":2607},{"style":271},[2608],{"type":68,"value":314},{"type":62,"tag":242,"props":2610,"children":2612},{"class":244,"line":2611},50,[2613],{"type":62,"tag":242,"props":2614,"children":2615},{"style":271},[2616],{"type":68,"value":2185},{"type":62,"tag":242,"props":2618,"children":2620},{"class":244,"line":2619},51,[2621],{"type":62,"tag":242,"props":2622,"children":2623},{"style":271},[2624],{"type":68,"value":2252},{"type":62,"tag":242,"props":2626,"children":2628},{"class":244,"line":2627},52,[2629,2634,2638,2642,2646,2650,2654,2658,2662,2666,2670,2674,2678,2682,2686,2690],{"type":62,"tag":242,"props":2630,"children":2631},{"style":1441},[2632],{"type":68,"value":2633},"  return",{"type":62,"tag":242,"props":2635,"children":2636},{"style":271},[2637],{"type":68,"value":1449},{"type":62,"tag":242,"props":2639,"children":2640},{"style":281},[2641],{"type":68,"value":1827},{"type":62,"tag":242,"props":2643,"children":2644},{"style":271},[2645],{"type":68,"value":304},{"type":62,"tag":242,"props":2647,"children":2648},{"style":1452},[2649],{"type":68,"value":2265},{"type":62,"tag":242,"props":2651,"children":2652},{"style":271},[2653],{"type":68,"value":429},{"type":62,"tag":242,"props":2655,"children":2656},{"style":281},[2657],{"type":68,"value":1845},{"type":62,"tag":242,"props":2659,"children":2660},{"style":271},[2661],{"type":68,"value":304},{"type":62,"tag":242,"props":2663,"children":2664},{"style":271},[2665],{"type":68,"value":2274},{"type":62,"tag":242,"props":2667,"children":2668},{"style":1724},[2669],{"type":68,"value":1801},{"type":62,"tag":242,"props":2671,"children":2672},{"style":281},[2673],{"type":68,"value":411},{"type":62,"tag":242,"props":2675,"children":2676},{"style":1607},[2677],{"type":68,"value":2537},{"type":62,"tag":242,"props":2679,"children":2680},{"style":281},[2681],{"type":68,"value":2550},{"type":62,"tag":242,"props":2683,"children":2684},{"style":271},[2685],{"type":68,"value":429},{"type":62,"tag":242,"props":2687,"children":2688},{"style":1452},[2689],{"type":68,"value":1862},{"type":62,"tag":242,"props":2691,"children":2692},{"style":271},[2693],{"type":68,"value":2694}," }\n",{"type":62,"tag":242,"props":2696,"children":2698},{"class":244,"line":2697},53,[2699],{"type":62,"tag":242,"props":2700,"children":2701},{"style":271},[2702],{"type":68,"value":642},{"type":62,"tag":242,"props":2704,"children":2706},{"class":244,"line":2705},54,[2707],{"type":62,"tag":242,"props":2708,"children":2709},{"emptyLinePlaceholder":649},[2710],{"type":68,"value":652},{"type":62,"tag":242,"props":2712,"children":2714},{"class":244,"line":2713},55,[2715],{"type":62,"tag":242,"props":2716,"children":2717},{"style":249},[2718],{"type":68,"value":2719},"\u002F\u002F R2 takes a single-shot put up to 5 GiB. Above that the upload has to be\n",{"type":62,"tag":242,"props":2721,"children":2723},{"class":244,"line":2722},56,[2724],{"type":62,"tag":242,"props":2725,"children":2726},{"style":249},[2727],{"type":68,"value":2728},"\u002F\u002F multipart even when the length is known.\n",{"type":62,"tag":242,"props":2730,"children":2732},{"class":244,"line":2731},57,[2733,2737,2742,2746,2751,2755,2759,2763,2767,2771],{"type":62,"tag":242,"props":2734,"children":2735},{"style":259},[2736],{"type":68,"value":1594},{"type":62,"tag":242,"props":2738,"children":2739},{"style":1452},[2740],{"type":68,"value":2741}," MAX_SINGLE_SHOT_BYTES ",{"type":62,"tag":242,"props":2743,"children":2744},{"style":271},[2745],{"type":68,"value":1604},{"type":62,"tag":242,"props":2747,"children":2748},{"style":1607},[2749],{"type":68,"value":2750}," 5",{"type":62,"tag":242,"props":2752,"children":2753},{"style":271},[2754],{"type":68,"value":1615},{"type":62,"tag":242,"props":2756,"children":2757},{"style":1607},[2758],{"type":68,"value":1620},{"type":62,"tag":242,"props":2760,"children":2761},{"style":271},[2762],{"type":68,"value":1615},{"type":62,"tag":242,"props":2764,"children":2765},{"style":1607},[2766],{"type":68,"value":1620},{"type":62,"tag":242,"props":2768,"children":2769},{"style":271},[2770],{"type":68,"value":1615},{"type":62,"tag":242,"props":2772,"children":2773},{"style":1607},[2774],{"type":68,"value":1629},{"type":62,"tag":242,"props":2776,"children":2778},{"class":244,"line":2777},58,[2779],{"type":62,"tag":242,"props":2780,"children":2781},{"emptyLinePlaceholder":649},[2782],{"type":68,"value":652},{"type":62,"tag":242,"props":2784,"children":2786},{"class":244,"line":2785},59,[2787],{"type":62,"tag":242,"props":2788,"children":2789},{"style":249},[2790],{"type":68,"value":1644},{"type":62,"tag":242,"props":2792,"children":2794},{"class":244,"line":2793},60,[2795],{"type":62,"tag":242,"props":2796,"children":2797},{"style":249},[2798],{"type":68,"value":2799}," * `R2Bucket.put` requires a stream with a known length; a pass-through\n",{"type":62,"tag":242,"props":2801,"children":2803},{"class":244,"line":2802},61,[2804],{"type":62,"tag":242,"props":2805,"children":2806},{"style":249},[2807],{"type":68,"value":2808}," * TransformStream (what the middleware sends when it had to cap the body) has\n",{"type":62,"tag":242,"props":2810,"children":2812},{"class":244,"line":2811},62,[2813],{"type":62,"tag":242,"props":2814,"children":2815},{"style":249},[2816],{"type":68,"value":2817}," * none. Re-declare the length when `expectedLength` provides it — the\n",{"type":62,"tag":242,"props":2819,"children":2821},{"class":244,"line":2820},63,[2822],{"type":62,"tag":242,"props":2823,"children":2824},{"style":249},[2825],{"type":68,"value":2826}," * middleware only sets it when it is the exact decoded byte count — and\n",{"type":62,"tag":242,"props":2828,"children":2830},{"class":244,"line":2829},64,[2831],{"type":62,"tag":242,"props":2832,"children":2833},{"style":249},[2834],{"type":68,"value":2835}," * otherwise stream through a multipart upload, one buffered part at a time.\n",{"type":62,"tag":242,"props":2837,"children":2839},{"class":244,"line":2838},65,[2840],{"type":62,"tag":242,"props":2841,"children":2842},{"style":249},[2843],{"type":68,"value":1708},{"type":62,"tag":242,"props":2845,"children":2847},{"class":244,"line":2846},66,[2848,2852,2856,2861],{"type":62,"tag":242,"props":2849,"children":2850},{"style":259},[2851],{"type":68,"value":1716},{"type":62,"tag":242,"props":2853,"children":2854},{"style":259},[2855],{"type":68,"value":1721},{"type":62,"tag":242,"props":2857,"children":2858},{"style":1724},[2859],{"type":68,"value":2860}," putStream",{"type":62,"tag":242,"props":2862,"children":2863},{"style":271},[2864],{"type":68,"value":289},{"type":62,"tag":242,"props":2866,"children":2868},{"class":244,"line":2867},67,[2869,2874,2878,2883],{"type":62,"tag":242,"props":2870,"children":2871},{"style":296},[2872],{"type":68,"value":2873},"  bucket",{"type":62,"tag":242,"props":2875,"children":2876},{"style":271},[2877],{"type":68,"value":304},{"type":62,"tag":242,"props":2879,"children":2880},{"style":265},[2881],{"type":68,"value":2882}," R2Bucket",{"type":62,"tag":242,"props":2884,"children":2885},{"style":271},[2886],{"type":68,"value":314},{"type":62,"tag":242,"props":2888,"children":2890},{"class":244,"line":2889},68,[2891,2896,2900,2904],{"type":62,"tag":242,"props":2892,"children":2893},{"style":296},[2894],{"type":68,"value":2895},"  key",{"type":62,"tag":242,"props":2897,"children":2898},{"style":271},[2899],{"type":68,"value":304},{"type":62,"tag":242,"props":2901,"children":2902},{"style":265},[2903],{"type":68,"value":309},{"type":62,"tag":242,"props":2905,"children":2906},{"style":271},[2907],{"type":68,"value":314},{"type":62,"tag":242,"props":2909,"children":2911},{"class":244,"line":2910},69,[2912,2917,2921,2926,2930,2934],{"type":62,"tag":242,"props":2913,"children":2914},{"style":296},[2915],{"type":68,"value":2916},"  body",{"type":62,"tag":242,"props":2918,"children":2919},{"style":271},[2920],{"type":68,"value":304},{"type":62,"tag":242,"props":2922,"children":2923},{"style":265},[2924],{"type":68,"value":2925}," ReadableStream",{"type":62,"tag":242,"props":2927,"children":2928},{"style":271},[2929],{"type":68,"value":378},{"type":62,"tag":242,"props":2931,"children":2932},{"style":265},[2933],{"type":68,"value":1757},{"type":62,"tag":242,"props":2935,"children":2936},{"style":271},[2937],{"type":68,"value":1762},{"type":62,"tag":242,"props":2939,"children":2941},{"class":244,"line":2940},70,[2942,2947,2951,2956],{"type":62,"tag":242,"props":2943,"children":2944},{"style":296},[2945],{"type":68,"value":2946},"  options",{"type":62,"tag":242,"props":2948,"children":2949},{"style":271},[2950],{"type":68,"value":304},{"type":62,"tag":242,"props":2952,"children":2953},{"style":265},[2954],{"type":68,"value":2955}," R2PutOptions",{"type":62,"tag":242,"props":2957,"children":2958},{"style":271},[2959],{"type":68,"value":314},{"type":62,"tag":242,"props":2961,"children":2963},{"class":244,"line":2962},71,[2964,2969,2973,2977,2981,2986],{"type":62,"tag":242,"props":2965,"children":2966},{"style":296},[2967],{"type":68,"value":2968},"  expectedLength",{"type":62,"tag":242,"props":2970,"children":2971},{"style":271},[2972],{"type":68,"value":304},{"type":62,"tag":242,"props":2974,"children":2975},{"style":265},[2976],{"type":68,"value":1779},{"type":62,"tag":242,"props":2978,"children":2979},{"style":271},[2980],{"type":68,"value":466},{"type":62,"tag":242,"props":2982,"children":2983},{"style":265},[2984],{"type":68,"value":2985}," undefined",{"type":62,"tag":242,"props":2987,"children":2988},{"style":271},[2989],{"type":68,"value":314},{"type":62,"tag":242,"props":2991,"children":2993},{"class":244,"line":2992},72,[2994,2998,3002,3006,3010,3014,3018,3022],{"type":62,"tag":242,"props":2995,"children":2996},{"style":271},[2997],{"type":68,"value":448},{"type":62,"tag":242,"props":2999,"children":3000},{"style":265},[3001],{"type":68,"value":373},{"type":62,"tag":242,"props":3003,"children":3004},{"style":271},[3005],{"type":68,"value":378},{"type":62,"tag":242,"props":3007,"children":3008},{"style":265},[3009],{"type":68,"value":1296},{"type":62,"tag":242,"props":3011,"children":3012},{"style":271},[3013],{"type":68,"value":466},{"type":62,"tag":242,"props":3015,"children":3016},{"style":265},[3017],{"type":68,"value":471},{"type":62,"tag":242,"props":3019,"children":3020},{"style":271},[3021],{"type":68,"value":529},{"type":62,"tag":242,"props":3023,"children":3024},{"style":271},[3025],{"type":68,"value":274},{"type":62,"tag":242,"props":3027,"children":3029},{"class":244,"line":3028},73,[3030,3034,3038,3043,3048,3052,3056,3061,3066,3071,3075],{"type":62,"tag":242,"props":3031,"children":3032},{"style":1441},[3033],{"type":68,"value":2450},{"type":62,"tag":242,"props":3035,"children":3036},{"style":281},[3037],{"type":68,"value":2039},{"type":62,"tag":242,"props":3039,"children":3040},{"style":1452},[3041],{"type":68,"value":3042},"expectedLength",{"type":62,"tag":242,"props":3044,"children":3045},{"style":271},[3046],{"type":68,"value":3047}," !==",{"type":62,"tag":242,"props":3049,"children":3050},{"style":271},[3051],{"type":68,"value":2985},{"type":62,"tag":242,"props":3053,"children":3054},{"style":271},[3055],{"type":68,"value":2469},{"type":62,"tag":242,"props":3057,"children":3058},{"style":1452},[3059],{"type":68,"value":3060}," expectedLength",{"type":62,"tag":242,"props":3062,"children":3063},{"style":271},[3064],{"type":68,"value":3065}," \u003C=",{"type":62,"tag":242,"props":3067,"children":3068},{"style":1452},[3069],{"type":68,"value":3070}," MAX_SINGLE_SHOT_BYTES",{"type":62,"tag":242,"props":3072,"children":3073},{"style":281},[3074],{"type":68,"value":2059},{"type":62,"tag":242,"props":3076,"children":3077},{"style":271},[3078],{"type":68,"value":2064},{"type":62,"tag":242,"props":3080,"children":3082},{"class":244,"line":3081},74,[3083,3087,3092,3096,3100],{"type":62,"tag":242,"props":3084,"children":3085},{"style":1441},[3086],{"type":68,"value":2498},{"type":62,"tag":242,"props":3088,"children":3089},{"style":1452},[3090],{"type":68,"value":3091}," bucket",{"type":62,"tag":242,"props":3093,"children":3094},{"style":271},[3095],{"type":68,"value":174},{"type":62,"tag":242,"props":3097,"children":3098},{"style":1724},[3099],{"type":68,"value":988},{"type":62,"tag":242,"props":3101,"children":3102},{"style":281},[3103],{"type":68,"value":289},{"type":62,"tag":242,"props":3105,"children":3107},{"class":244,"line":3106},75,[3108,3113],{"type":62,"tag":242,"props":3109,"children":3110},{"style":1452},[3111],{"type":68,"value":3112},"      key",{"type":62,"tag":242,"props":3114,"children":3115},{"style":271},[3116],{"type":68,"value":314},{"type":62,"tag":242,"props":3118,"children":3120},{"class":244,"line":3119},76,[3121,3126,3130,3135,3139,3144,3149,3153,3157,3162],{"type":62,"tag":242,"props":3122,"children":3123},{"style":1452},[3124],{"type":68,"value":3125},"      body",{"type":62,"tag":242,"props":3127,"children":3128},{"style":271},[3129],{"type":68,"value":174},{"type":62,"tag":242,"props":3131,"children":3132},{"style":1724},[3133],{"type":68,"value":3134},"pipeThrough",{"type":62,"tag":242,"props":3136,"children":3137},{"style":281},[3138],{"type":68,"value":411},{"type":62,"tag":242,"props":3140,"children":3141},{"style":271},[3142],{"type":68,"value":3143},"new",{"type":62,"tag":242,"props":3145,"children":3146},{"style":1724},[3147],{"type":68,"value":3148}," FixedLengthStream",{"type":62,"tag":242,"props":3150,"children":3151},{"style":281},[3152],{"type":68,"value":411},{"type":62,"tag":242,"props":3154,"children":3155},{"style":1452},[3156],{"type":68,"value":3042},{"type":62,"tag":242,"props":3158,"children":3159},{"style":281},[3160],{"type":68,"value":3161},"))",{"type":62,"tag":242,"props":3163,"children":3164},{"style":271},[3165],{"type":68,"value":314},{"type":62,"tag":242,"props":3167,"children":3169},{"class":244,"line":3168},77,[3170,3175],{"type":62,"tag":242,"props":3171,"children":3172},{"style":1452},[3173],{"type":68,"value":3174},"      options",{"type":62,"tag":242,"props":3176,"children":3177},{"style":271},[3178],{"type":68,"value":314},{"type":62,"tag":242,"props":3180,"children":3182},{"class":244,"line":3181},78,[3183],{"type":62,"tag":242,"props":3184,"children":3185},{"style":281},[3186],{"type":68,"value":3187},"    )\n",{"type":62,"tag":242,"props":3189,"children":3191},{"class":244,"line":3190},79,[3192],{"type":62,"tag":242,"props":3193,"children":3194},{"style":271},[3195],{"type":68,"value":2252},{"type":62,"tag":242,"props":3197,"children":3199},{"class":244,"line":3198},80,[3200],{"type":62,"tag":242,"props":3201,"children":3202},{"style":249},[3203],{"type":68,"value":3204},"  \u002F\u002F Unknown length, or too big for one shot: multipart, one part at a time.\n",{"type":62,"tag":242,"props":3206,"children":3208},{"class":244,"line":3207},81,[3209,3213,3217,3221,3226,3230,3235],{"type":62,"tag":242,"props":3210,"children":3211},{"style":259},[3212],{"type":68,"value":1889},{"type":62,"tag":242,"props":3214,"children":3215},{"style":1452},[3216],{"type":68,"value":2109},{"type":62,"tag":242,"props":3218,"children":3219},{"style":271},[3220],{"type":68,"value":1920},{"type":62,"tag":242,"props":3222,"children":3223},{"style":1452},[3224],{"type":68,"value":3225}," body",{"type":62,"tag":242,"props":3227,"children":3228},{"style":271},[3229],{"type":68,"value":174},{"type":62,"tag":242,"props":3231,"children":3232},{"style":1724},[3233],{"type":68,"value":3234},"getReader",{"type":62,"tag":242,"props":3236,"children":3237},{"style":281},[3238],{"type":68,"value":2123},{"type":62,"tag":242,"props":3240,"children":3242},{"class":244,"line":3241},82,[3243,3247,3252,3256,3260,3264,3268,3273,3277,3282,3286,3290,3294,3298,3302],{"type":62,"tag":242,"props":3244,"children":3245},{"style":259},[3246],{"type":68,"value":1889},{"type":62,"tag":242,"props":3248,"children":3249},{"style":1452},[3250],{"type":68,"value":3251}," first",{"type":62,"tag":242,"props":3253,"children":3254},{"style":271},[3255],{"type":68,"value":1920},{"type":62,"tag":242,"props":3257,"children":3258},{"style":1441},[3259],{"type":68,"value":2104},{"type":62,"tag":242,"props":3261,"children":3262},{"style":1724},[3263],{"type":68,"value":1727},{"type":62,"tag":242,"props":3265,"children":3266},{"style":281},[3267],{"type":68,"value":411},{"type":62,"tag":242,"props":3269,"children":3270},{"style":1452},[3271],{"type":68,"value":3272},"reader",{"type":62,"tag":242,"props":3274,"children":3275},{"style":271},[3276],{"type":68,"value":429},{"type":62,"tag":242,"props":3278,"children":3279},{"style":1452},[3280],{"type":68,"value":3281}," MULTIPART_PART_SIZE",{"type":62,"tag":242,"props":3283,"children":3284},{"style":271},[3285],{"type":68,"value":429},{"type":62,"tag":242,"props":3287,"children":3288},{"style":271},[3289],{"type":68,"value":2274},{"type":62,"tag":242,"props":3291,"children":3292},{"style":1724},[3293],{"type":68,"value":1801},{"type":62,"tag":242,"props":3295,"children":3296},{"style":281},[3297],{"type":68,"value":411},{"type":62,"tag":242,"props":3299,"children":3300},{"style":1607},[3301],{"type":68,"value":2537},{"type":62,"tag":242,"props":3303,"children":3304},{"style":281},[3305],{"type":68,"value":3306},"))\n",{"type":62,"tag":242,"props":3308,"children":3310},{"class":244,"line":3309},83,[3311,3315,3319,3324,3328,3332,3336],{"type":62,"tag":242,"props":3312,"children":3313},{"style":1441},[3314],{"type":68,"value":2450},{"type":62,"tag":242,"props":3316,"children":3317},{"style":281},[3318],{"type":68,"value":2039},{"type":62,"tag":242,"props":3320,"children":3321},{"style":1452},[3322],{"type":68,"value":3323},"first",{"type":62,"tag":242,"props":3325,"children":3326},{"style":271},[3327],{"type":68,"value":174},{"type":62,"tag":242,"props":3329,"children":3330},{"style":1452},[3331],{"type":68,"value":2464},{"type":62,"tag":242,"props":3333,"children":3334},{"style":281},[3335],{"type":68,"value":2059},{"type":62,"tag":242,"props":3337,"children":3338},{"style":271},[3339],{"type":68,"value":2064},{"type":62,"tag":242,"props":3341,"children":3343},{"class":244,"line":3342},84,[3344],{"type":62,"tag":242,"props":3345,"children":3346},{"style":249},[3347],{"type":68,"value":3348},"    \u002F\u002F The whole body fit in one part — a plain put is enough.\n",{"type":62,"tag":242,"props":3350,"children":3352},{"class":244,"line":3351},85,[3353,3357,3361,3365,3369,3373,3377,3381,3385,3389,3394,3398,3402],{"type":62,"tag":242,"props":3354,"children":3355},{"style":1441},[3356],{"type":68,"value":2498},{"type":62,"tag":242,"props":3358,"children":3359},{"style":1452},[3360],{"type":68,"value":3091},{"type":62,"tag":242,"props":3362,"children":3363},{"style":271},[3364],{"type":68,"value":174},{"type":62,"tag":242,"props":3366,"children":3367},{"style":1724},[3368],{"type":68,"value":988},{"type":62,"tag":242,"props":3370,"children":3371},{"style":281},[3372],{"type":68,"value":411},{"type":62,"tag":242,"props":3374,"children":3375},{"style":1452},[3376],{"type":68,"value":416},{"type":62,"tag":242,"props":3378,"children":3379},{"style":271},[3380],{"type":68,"value":429},{"type":62,"tag":242,"props":3382,"children":3383},{"style":1452},[3384],{"type":68,"value":3251},{"type":62,"tag":242,"props":3386,"children":3387},{"style":271},[3388],{"type":68,"value":174},{"type":62,"tag":242,"props":3390,"children":3391},{"style":1452},[3392],{"type":68,"value":3393},"bytes",{"type":62,"tag":242,"props":3395,"children":3396},{"style":271},[3397],{"type":68,"value":429},{"type":62,"tag":242,"props":3399,"children":3400},{"style":1452},[3401],{"type":68,"value":434},{"type":62,"tag":242,"props":3403,"children":3404},{"style":281},[3405],{"type":68,"value":2217},{"type":62,"tag":242,"props":3407,"children":3409},{"class":244,"line":3408},86,[3410],{"type":62,"tag":242,"props":3411,"children":3412},{"style":271},[3413],{"type":68,"value":2252},{"type":62,"tag":242,"props":3415,"children":3417},{"class":244,"line":3416},87,[3418,3422,3427,3431,3435,3439,3443,3448,3452,3456,3460,3464],{"type":62,"tag":242,"props":3419,"children":3420},{"style":259},[3421],{"type":68,"value":1889},{"type":62,"tag":242,"props":3423,"children":3424},{"style":1452},[3425],{"type":68,"value":3426}," upload",{"type":62,"tag":242,"props":3428,"children":3429},{"style":271},[3430],{"type":68,"value":1920},{"type":62,"tag":242,"props":3432,"children":3433},{"style":1441},[3434],{"type":68,"value":2104},{"type":62,"tag":242,"props":3436,"children":3437},{"style":1452},[3438],{"type":68,"value":3091},{"type":62,"tag":242,"props":3440,"children":3441},{"style":271},[3442],{"type":68,"value":174},{"type":62,"tag":242,"props":3444,"children":3445},{"style":1724},[3446],{"type":68,"value":3447},"createMultipartUpload",{"type":62,"tag":242,"props":3449,"children":3450},{"style":281},[3451],{"type":68,"value":411},{"type":62,"tag":242,"props":3453,"children":3454},{"style":1452},[3455],{"type":68,"value":416},{"type":62,"tag":242,"props":3457,"children":3458},{"style":271},[3459],{"type":68,"value":429},{"type":62,"tag":242,"props":3461,"children":3462},{"style":1452},[3463],{"type":68,"value":434},{"type":62,"tag":242,"props":3465,"children":3466},{"style":281},[3467],{"type":68,"value":2217},{"type":62,"tag":242,"props":3469,"children":3471},{"class":244,"line":3470},88,[3472,3477],{"type":62,"tag":242,"props":3473,"children":3474},{"style":1441},[3475],{"type":68,"value":3476},"  try",{"type":62,"tag":242,"props":3478,"children":3479},{"style":271},[3480],{"type":68,"value":274},{"type":62,"tag":242,"props":3482,"children":3484},{"class":244,"line":3483},89,[3485,3489,3494,3498,3502,3506,3511,3515,3519],{"type":62,"tag":242,"props":3486,"children":3487},{"style":259},[3488],{"type":68,"value":2073},{"type":62,"tag":242,"props":3490,"children":3491},{"style":1452},[3492],{"type":68,"value":3493}," parts",{"type":62,"tag":242,"props":3495,"children":3496},{"style":271},[3497],{"type":68,"value":304},{"type":62,"tag":242,"props":3499,"children":3500},{"style":265},[3501],{"type":68,"value":1903},{"type":62,"tag":242,"props":3503,"children":3504},{"style":271},[3505],{"type":68,"value":378},{"type":62,"tag":242,"props":3507,"children":3508},{"style":265},[3509],{"type":68,"value":3510},"R2UploadedPart",{"type":62,"tag":242,"props":3512,"children":3513},{"style":271},[3514],{"type":68,"value":529},{"type":62,"tag":242,"props":3516,"children":3517},{"style":271},[3518],{"type":68,"value":1920},{"type":62,"tag":242,"props":3520,"children":3521},{"style":281},[3522],{"type":68,"value":3523}," [\n",{"type":62,"tag":242,"props":3525,"children":3527},{"class":244,"line":3526},90,[3528,3533,3537,3541,3546,3550,3555,3559,3563,3567,3571,3575],{"type":62,"tag":242,"props":3529,"children":3530},{"style":1441},[3531],{"type":68,"value":3532},"      await",{"type":62,"tag":242,"props":3534,"children":3535},{"style":1452},[3536],{"type":68,"value":3426},{"type":62,"tag":242,"props":3538,"children":3539},{"style":271},[3540],{"type":68,"value":174},{"type":62,"tag":242,"props":3542,"children":3543},{"style":1724},[3544],{"type":68,"value":3545},"uploadPart",{"type":62,"tag":242,"props":3547,"children":3548},{"style":281},[3549],{"type":68,"value":411},{"type":62,"tag":242,"props":3551,"children":3552},{"style":1607},[3553],{"type":68,"value":3554},"1",{"type":62,"tag":242,"props":3556,"children":3557},{"style":271},[3558],{"type":68,"value":429},{"type":62,"tag":242,"props":3560,"children":3561},{"style":1452},[3562],{"type":68,"value":3251},{"type":62,"tag":242,"props":3564,"children":3565},{"style":271},[3566],{"type":68,"value":174},{"type":62,"tag":242,"props":3568,"children":3569},{"style":1452},[3570],{"type":68,"value":3393},{"type":62,"tag":242,"props":3572,"children":3573},{"style":281},[3574],{"type":68,"value":2550},{"type":62,"tag":242,"props":3576,"children":3577},{"style":271},[3578],{"type":68,"value":314},{"type":62,"tag":242,"props":3580,"children":3582},{"class":244,"line":3581},91,[3583],{"type":62,"tag":242,"props":3584,"children":3585},{"style":281},[3586],{"type":68,"value":3587},"    ]\n",{"type":62,"tag":242,"props":3589,"children":3591},{"class":244,"line":3590},92,[3592,3597,3601,3605,3609,3613],{"type":62,"tag":242,"props":3593,"children":3594},{"style":259},[3595],{"type":68,"value":3596},"    let",{"type":62,"tag":242,"props":3598,"children":3599},{"style":1452},[3600],{"type":68,"value":1845},{"type":62,"tag":242,"props":3602,"children":3603},{"style":271},[3604],{"type":68,"value":1920},{"type":62,"tag":242,"props":3606,"children":3607},{"style":1452},[3608],{"type":68,"value":3251},{"type":62,"tag":242,"props":3610,"children":3611},{"style":271},[3612],{"type":68,"value":174},{"type":62,"tag":242,"props":3614,"children":3615},{"style":1452},[3616],{"type":68,"value":3617},"carry\n",{"type":62,"tag":242,"props":3619,"children":3621},{"class":244,"line":3620},93,[3622,3626,3631,3635],{"type":62,"tag":242,"props":3623,"children":3624},{"style":259},[3625],{"type":68,"value":3596},{"type":62,"tag":242,"props":3627,"children":3628},{"style":1452},[3629],{"type":68,"value":3630}," partNumber",{"type":62,"tag":242,"props":3632,"children":3633},{"style":271},[3634],{"type":68,"value":1920},{"type":62,"tag":242,"props":3636,"children":3637},{"style":1607},[3638],{"type":68,"value":3639}," 2\n",{"type":62,"tag":242,"props":3641,"children":3643},{"class":244,"line":3642},94,[3644,3649,3653,3658,3662],{"type":62,"tag":242,"props":3645,"children":3646},{"style":1441},[3647],{"type":68,"value":3648},"    for",{"type":62,"tag":242,"props":3650,"children":3651},{"style":281},[3652],{"type":68,"value":2039},{"type":62,"tag":242,"props":3654,"children":3655},{"style":271},[3656],{"type":68,"value":3657},";;",{"type":62,"tag":242,"props":3659,"children":3660},{"style":281},[3661],{"type":68,"value":2059},{"type":62,"tag":242,"props":3663,"children":3664},{"style":271},[3665],{"type":68,"value":2064},{"type":62,"tag":242,"props":3667,"children":3669},{"class":244,"line":3668},95,[3670,3675,3680,3684,3688,3692,3696,3700,3704,3708,3712,3716],{"type":62,"tag":242,"props":3671,"children":3672},{"style":259},[3673],{"type":68,"value":3674},"      const",{"type":62,"tag":242,"props":3676,"children":3677},{"style":1452},[3678],{"type":68,"value":3679}," part",{"type":62,"tag":242,"props":3681,"children":3682},{"style":271},[3683],{"type":68,"value":1920},{"type":62,"tag":242,"props":3685,"children":3686},{"style":1441},[3687],{"type":68,"value":2104},{"type":62,"tag":242,"props":3689,"children":3690},{"style":1724},[3691],{"type":68,"value":1727},{"type":62,"tag":242,"props":3693,"children":3694},{"style":281},[3695],{"type":68,"value":411},{"type":62,"tag":242,"props":3697,"children":3698},{"style":1452},[3699],{"type":68,"value":3272},{"type":62,"tag":242,"props":3701,"children":3702},{"style":271},[3703],{"type":68,"value":429},{"type":62,"tag":242,"props":3705,"children":3706},{"style":1452},[3707],{"type":68,"value":3281},{"type":62,"tag":242,"props":3709,"children":3710},{"style":271},[3711],{"type":68,"value":429},{"type":62,"tag":242,"props":3713,"children":3714},{"style":1452},[3715],{"type":68,"value":1845},{"type":62,"tag":242,"props":3717,"children":3718},{"style":281},[3719],{"type":68,"value":2217},{"type":62,"tag":242,"props":3721,"children":3723},{"class":244,"line":3722},96,[3724,3728,3732,3736,3740],{"type":62,"tag":242,"props":3725,"children":3726},{"style":1452},[3727],{"type":68,"value":2563},{"type":62,"tag":242,"props":3729,"children":3730},{"style":271},[3731],{"type":68,"value":1920},{"type":62,"tag":242,"props":3733,"children":3734},{"style":1452},[3735],{"type":68,"value":3679},{"type":62,"tag":242,"props":3737,"children":3738},{"style":271},[3739],{"type":68,"value":174},{"type":62,"tag":242,"props":3741,"children":3742},{"style":1452},[3743],{"type":68,"value":3617},{"type":62,"tag":242,"props":3745,"children":3747},{"class":244,"line":3746},97,[3748,3753,3757,3762,3766,3770,3774,3778,3782,3786,3790],{"type":62,"tag":242,"props":3749,"children":3750},{"style":1441},[3751],{"type":68,"value":3752},"      if",{"type":62,"tag":242,"props":3754,"children":3755},{"style":281},[3756],{"type":68,"value":2039},{"type":62,"tag":242,"props":3758,"children":3759},{"style":1452},[3760],{"type":68,"value":3761},"part",{"type":62,"tag":242,"props":3763,"children":3764},{"style":271},[3765],{"type":68,"value":174},{"type":62,"tag":242,"props":3767,"children":3768},{"style":1452},[3769],{"type":68,"value":3393},{"type":62,"tag":242,"props":3771,"children":3772},{"style":271},[3773],{"type":68,"value":174},{"type":62,"tag":242,"props":3775,"children":3776},{"style":1452},[3777],{"type":68,"value":1933},{"type":62,"tag":242,"props":3779,"children":3780},{"style":271},[3781],{"type":68,"value":1938},{"type":62,"tag":242,"props":3783,"children":3784},{"style":1607},[3785],{"type":68,"value":1943},{"type":62,"tag":242,"props":3787,"children":3788},{"style":281},[3789],{"type":68,"value":2059},{"type":62,"tag":242,"props":3791,"children":3792},{"style":271},[3793],{"type":68,"value":2064},{"type":62,"tag":242,"props":3795,"children":3797},{"class":244,"line":3796},98,[3798],{"type":62,"tag":242,"props":3799,"children":3800},{"style":249},[3801],{"type":68,"value":3802},"        \u002F\u002F 10,000 parts is R2's ceiling; failing here beats a confusing error\n",{"type":62,"tag":242,"props":3804,"children":3806},{"class":244,"line":3805},99,[3807],{"type":62,"tag":242,"props":3808,"children":3809},{"style":249},[3810],{"type":68,"value":3811},"        \u002F\u002F from `complete` after uploading gigabytes.\n",{"type":62,"tag":242,"props":3813,"children":3815},{"class":244,"line":3814},100,[3816,3821,3825,3830,3834,3839,3843],{"type":62,"tag":242,"props":3817,"children":3818},{"style":1441},[3819],{"type":68,"value":3820},"        if",{"type":62,"tag":242,"props":3822,"children":3823},{"style":281},[3824],{"type":68,"value":2039},{"type":62,"tag":242,"props":3826,"children":3827},{"style":1452},[3828],{"type":68,"value":3829},"partNumber",{"type":62,"tag":242,"props":3831,"children":3832},{"style":271},[3833],{"type":68,"value":1938},{"type":62,"tag":242,"props":3835,"children":3836},{"style":1607},[3837],{"type":68,"value":3838}," 10_000",{"type":62,"tag":242,"props":3840,"children":3841},{"style":281},[3842],{"type":68,"value":2059},{"type":62,"tag":242,"props":3844,"children":3845},{"style":271},[3846],{"type":68,"value":2064},{"type":62,"tag":242,"props":3848,"children":3850},{"class":244,"line":3849},101,[3851,3856,3860,3865],{"type":62,"tag":242,"props":3852,"children":3853},{"style":1441},[3854],{"type":68,"value":3855},"          throw",{"type":62,"tag":242,"props":3857,"children":3858},{"style":271},[3859],{"type":68,"value":2274},{"type":62,"tag":242,"props":3861,"children":3862},{"style":1724},[3863],{"type":68,"value":3864}," Error",{"type":62,"tag":242,"props":3866,"children":3867},{"style":281},[3868],{"type":68,"value":289},{"type":62,"tag":242,"props":3870,"children":3872},{"class":244,"line":3871},102,[3873,3878,3883,3888,3892,3897,3902,3907],{"type":62,"tag":242,"props":3874,"children":3875},{"style":271},[3876],{"type":68,"value":3877},"            `",{"type":62,"tag":242,"props":3879,"children":3880},{"style":1482},[3881],{"type":68,"value":3882},"Artifact at ",{"type":62,"tag":242,"props":3884,"children":3885},{"style":271},[3886],{"type":68,"value":3887},"${",{"type":62,"tag":242,"props":3889,"children":3890},{"style":1452},[3891],{"type":68,"value":416},{"type":62,"tag":242,"props":3893,"children":3894},{"style":271},[3895],{"type":68,"value":3896},"}",{"type":62,"tag":242,"props":3898,"children":3899},{"style":1482},[3900],{"type":68,"value":3901}," exceeds the multipart part limit — raise MULTIPART_PART_SIZE.",{"type":62,"tag":242,"props":3903,"children":3904},{"style":271},[3905],{"type":68,"value":3906},"`",{"type":62,"tag":242,"props":3908,"children":3909},{"style":271},[3910],{"type":68,"value":314},{"type":62,"tag":242,"props":3912,"children":3914},{"class":244,"line":3913},103,[3915],{"type":62,"tag":242,"props":3916,"children":3917},{"style":281},[3918],{"type":68,"value":3919},"          )\n",{"type":62,"tag":242,"props":3921,"children":3923},{"class":244,"line":3922},104,[3924],{"type":62,"tag":242,"props":3925,"children":3926},{"style":271},[3927],{"type":68,"value":3928},"        }\n",{"type":62,"tag":242,"props":3930,"children":3932},{"class":244,"line":3931},105,[3933,3938,3942,3946,3950,3955,3959,3963,3967,3971,3975,3979,3983,3987,3991],{"type":62,"tag":242,"props":3934,"children":3935},{"style":1452},[3936],{"type":68,"value":3937},"        parts",{"type":62,"tag":242,"props":3939,"children":3940},{"style":271},[3941],{"type":68,"value":174},{"type":62,"tag":242,"props":3943,"children":3944},{"style":1724},[3945],{"type":68,"value":2203},{"type":62,"tag":242,"props":3947,"children":3948},{"style":281},[3949],{"type":68,"value":411},{"type":62,"tag":242,"props":3951,"children":3952},{"style":1441},[3953],{"type":68,"value":3954},"await",{"type":62,"tag":242,"props":3956,"children":3957},{"style":1452},[3958],{"type":68,"value":3426},{"type":62,"tag":242,"props":3960,"children":3961},{"style":271},[3962],{"type":68,"value":174},{"type":62,"tag":242,"props":3964,"children":3965},{"style":1724},[3966],{"type":68,"value":3545},{"type":62,"tag":242,"props":3968,"children":3969},{"style":281},[3970],{"type":68,"value":411},{"type":62,"tag":242,"props":3972,"children":3973},{"style":1452},[3974],{"type":68,"value":3829},{"type":62,"tag":242,"props":3976,"children":3977},{"style":271},[3978],{"type":68,"value":429},{"type":62,"tag":242,"props":3980,"children":3981},{"style":1452},[3982],{"type":68,"value":3679},{"type":62,"tag":242,"props":3984,"children":3985},{"style":271},[3986],{"type":68,"value":174},{"type":62,"tag":242,"props":3988,"children":3989},{"style":1452},[3990],{"type":68,"value":3393},{"type":62,"tag":242,"props":3992,"children":3993},{"style":281},[3994],{"type":68,"value":3306},{"type":62,"tag":242,"props":3996,"children":3998},{"class":244,"line":3997},106,[3999,4004,4008],{"type":62,"tag":242,"props":4000,"children":4001},{"style":1452},[4002],{"type":68,"value":4003},"        partNumber",{"type":62,"tag":242,"props":4005,"children":4006},{"style":271},[4007],{"type":68,"value":2231},{"type":62,"tag":242,"props":4009,"children":4010},{"style":1607},[4011],{"type":68,"value":4012}," 1\n",{"type":62,"tag":242,"props":4014,"children":4016},{"class":244,"line":4015},107,[4017],{"type":62,"tag":242,"props":4018,"children":4019},{"style":271},[4020],{"type":68,"value":4021},"      }\n",{"type":62,"tag":242,"props":4023,"children":4025},{"class":244,"line":4024},108,[4026,4030,4034,4038,4042,4046,4050],{"type":62,"tag":242,"props":4027,"children":4028},{"style":1441},[4029],{"type":68,"value":3752},{"type":62,"tag":242,"props":4031,"children":4032},{"style":281},[4033],{"type":68,"value":2039},{"type":62,"tag":242,"props":4035,"children":4036},{"style":1452},[4037],{"type":68,"value":3761},{"type":62,"tag":242,"props":4039,"children":4040},{"style":271},[4041],{"type":68,"value":174},{"type":62,"tag":242,"props":4043,"children":4044},{"style":1452},[4045],{"type":68,"value":2464},{"type":62,"tag":242,"props":4047,"children":4048},{"style":281},[4049],{"type":68,"value":2059},{"type":62,"tag":242,"props":4051,"children":4052},{"style":1441},[4053],{"type":68,"value":4054},"break\n",{"type":62,"tag":242,"props":4056,"children":4058},{"class":244,"line":4057},109,[4059],{"type":62,"tag":242,"props":4060,"children":4061},{"style":271},[4062],{"type":68,"value":2185},{"type":62,"tag":242,"props":4064,"children":4066},{"class":244,"line":4065},110,[4067,4071,4075,4079,4083,4088,4092,4097],{"type":62,"tag":242,"props":4068,"children":4069},{"style":1441},[4070],{"type":68,"value":2498},{"type":62,"tag":242,"props":4072,"children":4073},{"style":1441},[4074],{"type":68,"value":2104},{"type":62,"tag":242,"props":4076,"children":4077},{"style":1452},[4078],{"type":68,"value":3426},{"type":62,"tag":242,"props":4080,"children":4081},{"style":271},[4082],{"type":68,"value":174},{"type":62,"tag":242,"props":4084,"children":4085},{"style":1724},[4086],{"type":68,"value":4087},"complete",{"type":62,"tag":242,"props":4089,"children":4090},{"style":281},[4091],{"type":68,"value":411},{"type":62,"tag":242,"props":4093,"children":4094},{"style":1452},[4095],{"type":68,"value":4096},"parts",{"type":62,"tag":242,"props":4098,"children":4099},{"style":281},[4100],{"type":68,"value":2217},{"type":62,"tag":242,"props":4102,"children":4104},{"class":244,"line":4103},111,[4105,4110,4115,4119,4124,4128],{"type":62,"tag":242,"props":4106,"children":4107},{"style":271},[4108],{"type":68,"value":4109},"  }",{"type":62,"tag":242,"props":4111,"children":4112},{"style":1441},[4113],{"type":68,"value":4114}," catch",{"type":62,"tag":242,"props":4116,"children":4117},{"style":281},[4118],{"type":68,"value":2039},{"type":62,"tag":242,"props":4120,"children":4121},{"style":1452},[4122],{"type":68,"value":4123},"error",{"type":62,"tag":242,"props":4125,"children":4126},{"style":281},[4127],{"type":68,"value":2059},{"type":62,"tag":242,"props":4129,"children":4130},{"style":271},[4131],{"type":68,"value":2064},{"type":62,"tag":242,"props":4133,"children":4135},{"class":244,"line":4134},112,[4136,4141,4145,4149,4154,4159,4163,4168,4172,4176,4181,4185],{"type":62,"tag":242,"props":4137,"children":4138},{"style":1441},[4139],{"type":68,"value":4140},"    await",{"type":62,"tag":242,"props":4142,"children":4143},{"style":1452},[4144],{"type":68,"value":3426},{"type":62,"tag":242,"props":4146,"children":4147},{"style":271},[4148],{"type":68,"value":174},{"type":62,"tag":242,"props":4150,"children":4151},{"style":1724},[4152],{"type":68,"value":4153},"abort",{"type":62,"tag":242,"props":4155,"children":4156},{"style":281},[4157],{"type":68,"value":4158},"()",{"type":62,"tag":242,"props":4160,"children":4161},{"style":271},[4162],{"type":68,"value":174},{"type":62,"tag":242,"props":4164,"children":4165},{"style":1724},[4166],{"type":68,"value":4167},"catch",{"type":62,"tag":242,"props":4169,"children":4170},{"style":281},[4171],{"type":68,"value":411},{"type":62,"tag":242,"props":4173,"children":4174},{"style":271},[4175],{"type":68,"value":4158},{"type":62,"tag":242,"props":4177,"children":4178},{"style":259},[4179],{"type":68,"value":4180}," =>",{"type":62,"tag":242,"props":4182,"children":4183},{"style":271},[4184],{"type":68,"value":2985},{"type":62,"tag":242,"props":4186,"children":4187},{"style":281},[4188],{"type":68,"value":2217},{"type":62,"tag":242,"props":4190,"children":4192},{"class":244,"line":4191},113,[4193,4198],{"type":62,"tag":242,"props":4194,"children":4195},{"style":1441},[4196],{"type":68,"value":4197},"    throw",{"type":62,"tag":242,"props":4199,"children":4200},{"style":1452},[4201],{"type":68,"value":4202}," error\n",{"type":62,"tag":242,"props":4204,"children":4206},{"class":244,"line":4205},114,[4207],{"type":62,"tag":242,"props":4208,"children":4209},{"style":271},[4210],{"type":68,"value":2252},{"type":62,"tag":242,"props":4212,"children":4214},{"class":244,"line":4213},115,[4215],{"type":62,"tag":242,"props":4216,"children":4217},{"style":271},[4218],{"type":68,"value":642},{"type":62,"tag":242,"props":4220,"children":4222},{"class":244,"line":4221},116,[4223],{"type":62,"tag":242,"props":4224,"children":4225},{"emptyLinePlaceholder":649},[4226],{"type":68,"value":652},{"type":62,"tag":242,"props":4228,"children":4230},{"class":244,"line":4229},117,[4231,4236,4241,4245,4250,4254,4259,4263,4267],{"type":62,"tag":242,"props":4232,"children":4233},{"style":259},[4234],{"type":68,"value":4235},"function",{"type":62,"tag":242,"props":4237,"children":4238},{"style":1724},[4239],{"type":68,"value":4240}," toRecord",{"type":62,"tag":242,"props":4242,"children":4243},{"style":271},[4244],{"type":68,"value":411},{"type":62,"tag":242,"props":4246,"children":4247},{"style":296},[4248],{"type":68,"value":4249},"obj",{"type":62,"tag":242,"props":4251,"children":4252},{"style":271},[4253],{"type":68,"value":304},{"type":62,"tag":242,"props":4255,"children":4256},{"style":265},[4257],{"type":68,"value":4258}," R2Object",{"type":62,"tag":242,"props":4260,"children":4261},{"style":271},[4262],{"type":68,"value":448},{"type":62,"tag":242,"props":4264,"children":4265},{"style":265},[4266],{"type":68,"value":1519},{"type":62,"tag":242,"props":4268,"children":4269},{"style":271},[4270],{"type":68,"value":274},{"type":62,"tag":242,"props":4272,"children":4274},{"class":244,"line":4273},118,[4275,4279,4284,4288,4293,4297,4301,4305,4310],{"type":62,"tag":242,"props":4276,"children":4277},{"style":259},[4278],{"type":68,"value":1889},{"type":62,"tag":242,"props":4280,"children":4281},{"style":1452},[4282],{"type":68,"value":4283}," uploaded",{"type":62,"tag":242,"props":4285,"children":4286},{"style":271},[4287],{"type":68,"value":1920},{"type":62,"tag":242,"props":4289,"children":4290},{"style":1452},[4291],{"type":68,"value":4292}," obj",{"type":62,"tag":242,"props":4294,"children":4295},{"style":271},[4296],{"type":68,"value":174},{"type":62,"tag":242,"props":4298,"children":4299},{"style":1452},[4300],{"type":68,"value":1334},{"type":62,"tag":242,"props":4302,"children":4303},{"style":271},[4304],{"type":68,"value":174},{"type":62,"tag":242,"props":4306,"children":4307},{"style":1724},[4308],{"type":68,"value":4309},"getTime",{"type":62,"tag":242,"props":4311,"children":4312},{"style":281},[4313],{"type":68,"value":2123},{"type":62,"tag":242,"props":4315,"children":4317},{"class":244,"line":4316},119,[4318,4322],{"type":62,"tag":242,"props":4319,"children":4320},{"style":1441},[4321],{"type":68,"value":2633},{"type":62,"tag":242,"props":4323,"children":4324},{"style":271},[4325],{"type":68,"value":274},{"type":62,"tag":242,"props":4327,"children":4329},{"class":244,"line":4328},120,[4330,4334,4338,4342,4346,4350],{"type":62,"tag":242,"props":4331,"children":4332},{"style":281},[4333],{"type":68,"value":299},{"type":62,"tag":242,"props":4335,"children":4336},{"style":271},[4337],{"type":68,"value":304},{"type":62,"tag":242,"props":4339,"children":4340},{"style":1452},[4341],{"type":68,"value":4292},{"type":62,"tag":242,"props":4343,"children":4344},{"style":271},[4345],{"type":68,"value":174},{"type":62,"tag":242,"props":4347,"children":4348},{"style":1452},[4349],{"type":68,"value":416},{"type":62,"tag":242,"props":4351,"children":4352},{"style":271},[4353],{"type":68,"value":314},{"type":62,"tag":242,"props":4355,"children":4357},{"class":244,"line":4356},121,[4358,4363,4367,4371,4375,4379],{"type":62,"tag":242,"props":4359,"children":4360},{"style":281},[4361],{"type":68,"value":4362},"    size",{"type":62,"tag":242,"props":4364,"children":4365},{"style":271},[4366],{"type":68,"value":304},{"type":62,"tag":242,"props":4368,"children":4369},{"style":1452},[4370],{"type":68,"value":4292},{"type":62,"tag":242,"props":4372,"children":4373},{"style":271},[4374],{"type":68,"value":174},{"type":62,"tag":242,"props":4376,"children":4377},{"style":1452},[4378],{"type":68,"value":1304},{"type":62,"tag":242,"props":4380,"children":4381},{"style":271},[4382],{"type":68,"value":314},{"type":62,"tag":242,"props":4384,"children":4386},{"class":244,"line":4385},122,[4387,4392,4396,4400,4404,4408],{"type":62,"tag":242,"props":4388,"children":4389},{"style":281},[4390],{"type":68,"value":4391},"    etag",{"type":62,"tag":242,"props":4393,"children":4394},{"style":271},[4395],{"type":68,"value":304},{"type":62,"tag":242,"props":4397,"children":4398},{"style":1452},[4399],{"type":68,"value":4292},{"type":62,"tag":242,"props":4401,"children":4402},{"style":271},[4403],{"type":68,"value":174},{"type":62,"tag":242,"props":4405,"children":4406},{"style":1452},[4407],{"type":68,"value":1312},{"type":62,"tag":242,"props":4409,"children":4410},{"style":271},[4411],{"type":68,"value":314},{"type":62,"tag":242,"props":4413,"children":4415},{"class":244,"line":4414},123,[4416,4421,4425,4429,4433,4438,4443],{"type":62,"tag":242,"props":4417,"children":4418},{"style":271},[4419],{"type":68,"value":4420},"    ...",{"type":62,"tag":242,"props":4422,"children":4423},{"style":281},[4424],{"type":68,"value":411},{"type":62,"tag":242,"props":4426,"children":4427},{"style":1452},[4428],{"type":68,"value":4249},{"type":62,"tag":242,"props":4430,"children":4431},{"style":271},[4432],{"type":68,"value":174},{"type":62,"tag":242,"props":4434,"children":4435},{"style":1452},[4436],{"type":68,"value":4437},"httpMetadata",{"type":62,"tag":242,"props":4439,"children":4440},{"style":271},[4441],{"type":68,"value":4442},"?.",{"type":62,"tag":242,"props":4444,"children":4445},{"style":1452},[4446],{"type":68,"value":4447},"contentType\n",{"type":62,"tag":242,"props":4449,"children":4451},{"class":244,"line":4450},124,[4452,4457,4461,4466,4470,4474,4478,4482,4486,4491],{"type":62,"tag":242,"props":4453,"children":4454},{"style":271},[4455],{"type":68,"value":4456},"      ?",{"type":62,"tag":242,"props":4458,"children":4459},{"style":271},[4460],{"type":68,"value":1449},{"type":62,"tag":242,"props":4462,"children":4463},{"style":281},[4464],{"type":68,"value":4465}," contentType",{"type":62,"tag":242,"props":4467,"children":4468},{"style":271},[4469],{"type":68,"value":304},{"type":62,"tag":242,"props":4471,"children":4472},{"style":1452},[4473],{"type":68,"value":4292},{"type":62,"tag":242,"props":4475,"children":4476},{"style":271},[4477],{"type":68,"value":174},{"type":62,"tag":242,"props":4479,"children":4480},{"style":1452},[4481],{"type":68,"value":4437},{"type":62,"tag":242,"props":4483,"children":4484},{"style":271},[4485],{"type":68,"value":174},{"type":62,"tag":242,"props":4487,"children":4488},{"style":1452},[4489],{"type":68,"value":4490},"contentType",{"type":62,"tag":242,"props":4492,"children":4493},{"style":271},[4494],{"type":68,"value":2694},{"type":62,"tag":242,"props":4496,"children":4498},{"class":244,"line":4497},125,[4499,4504,4509,4513],{"type":62,"tag":242,"props":4500,"children":4501},{"style":271},[4502],{"type":68,"value":4503},"      :",{"type":62,"tag":242,"props":4505,"children":4506},{"style":271},[4507],{"type":68,"value":4508}," {}",{"type":62,"tag":242,"props":4510,"children":4511},{"style":281},[4512],{"type":68,"value":2550},{"type":62,"tag":242,"props":4514,"children":4515},{"style":271},[4516],{"type":68,"value":314},{"type":62,"tag":242,"props":4518,"children":4520},{"class":244,"line":4519},126,[4521,4525,4529,4533,4537,4541,4545,4549,4554,4558,4562,4566,4570,4574,4579,4583,4587],{"type":62,"tag":242,"props":4522,"children":4523},{"style":271},[4524],{"type":68,"value":4420},{"type":62,"tag":242,"props":4526,"children":4527},{"style":281},[4528],{"type":68,"value":411},{"type":62,"tag":242,"props":4530,"children":4531},{"style":1452},[4532],{"type":68,"value":4249},{"type":62,"tag":242,"props":4534,"children":4535},{"style":271},[4536],{"type":68,"value":174},{"type":62,"tag":242,"props":4538,"children":4539},{"style":1452},[4540],{"type":68,"value":1326},{"type":62,"tag":242,"props":4542,"children":4543},{"style":271},[4544],{"type":68,"value":1948},{"type":62,"tag":242,"props":4546,"children":4547},{"style":271},[4548],{"type":68,"value":1449},{"type":62,"tag":242,"props":4550,"children":4551},{"style":281},[4552],{"type":68,"value":4553}," customMetadata",{"type":62,"tag":242,"props":4555,"children":4556},{"style":271},[4557],{"type":68,"value":304},{"type":62,"tag":242,"props":4559,"children":4560},{"style":1452},[4561],{"type":68,"value":4292},{"type":62,"tag":242,"props":4563,"children":4564},{"style":271},[4565],{"type":68,"value":174},{"type":62,"tag":242,"props":4567,"children":4568},{"style":1452},[4569],{"type":68,"value":1326},{"type":62,"tag":242,"props":4571,"children":4572},{"style":271},[4573],{"type":68,"value":1469},{"type":62,"tag":242,"props":4575,"children":4576},{"style":271},[4577],{"type":68,"value":4578}," :",{"type":62,"tag":242,"props":4580,"children":4581},{"style":271},[4582],{"type":68,"value":4508},{"type":62,"tag":242,"props":4584,"children":4585},{"style":281},[4586],{"type":68,"value":2550},{"type":62,"tag":242,"props":4588,"children":4589},{"style":271},[4590],{"type":68,"value":314},{"type":62,"tag":242,"props":4592,"children":4594},{"class":244,"line":4593},127,[4595,4600,4604,4608],{"type":62,"tag":242,"props":4596,"children":4597},{"style":281},[4598],{"type":68,"value":4599},"    createdAt",{"type":62,"tag":242,"props":4601,"children":4602},{"style":271},[4603],{"type":68,"value":304},{"type":62,"tag":242,"props":4605,"children":4606},{"style":1452},[4607],{"type":68,"value":4283},{"type":62,"tag":242,"props":4609,"children":4610},{"style":271},[4611],{"type":68,"value":314},{"type":62,"tag":242,"props":4613,"children":4615},{"class":244,"line":4614},128,[4616,4621,4625,4629],{"type":62,"tag":242,"props":4617,"children":4618},{"style":281},[4619],{"type":68,"value":4620},"    updatedAt",{"type":62,"tag":242,"props":4622,"children":4623},{"style":271},[4624],{"type":68,"value":304},{"type":62,"tag":242,"props":4626,"children":4627},{"style":1452},[4628],{"type":68,"value":4283},{"type":62,"tag":242,"props":4630,"children":4631},{"style":271},[4632],{"type":68,"value":314},{"type":62,"tag":242,"props":4634,"children":4636},{"class":244,"line":4635},129,[4637],{"type":62,"tag":242,"props":4638,"children":4639},{"style":271},[4640],{"type":68,"value":2252},{"type":62,"tag":242,"props":4642,"children":4644},{"class":244,"line":4643},130,[4645],{"type":62,"tag":242,"props":4646,"children":4647},{"style":271},[4648],{"type":68,"value":642},{"type":62,"tag":242,"props":4650,"children":4652},{"class":244,"line":4651},131,[4653],{"type":62,"tag":242,"props":4654,"children":4655},{"emptyLinePlaceholder":649},[4656],{"type":68,"value":652},{"type":62,"tag":242,"props":4658,"children":4660},{"class":244,"line":4659},132,[4661,4666,4670,4675,4679,4684,4688,4692,4696],{"type":62,"tag":242,"props":4662,"children":4663},{"style":1441},[4664],{"type":68,"value":4665},"export",{"type":62,"tag":242,"props":4667,"children":4668},{"style":259},[4669],{"type":68,"value":1721},{"type":62,"tag":242,"props":4671,"children":4672},{"style":1724},[4673],{"type":68,"value":4674}," r2BlobStore",{"type":62,"tag":242,"props":4676,"children":4677},{"style":271},[4678],{"type":68,"value":411},{"type":62,"tag":242,"props":4680,"children":4681},{"style":296},[4682],{"type":68,"value":4683},"bucket",{"type":62,"tag":242,"props":4685,"children":4686},{"style":271},[4687],{"type":68,"value":304},{"type":62,"tag":242,"props":4689,"children":4690},{"style":265},[4691],{"type":68,"value":2882},{"type":62,"tag":242,"props":4693,"children":4694},{"style":271},[4695],{"type":68,"value":2550},{"type":62,"tag":242,"props":4697,"children":4698},{"style":271},[4699],{"type":68,"value":274},{"type":62,"tag":242,"props":4701,"children":4703},{"class":244,"line":4702},133,[4704,4708,4712,4716],{"type":62,"tag":242,"props":4705,"children":4706},{"style":1441},[4707],{"type":68,"value":2633},{"type":62,"tag":242,"props":4709,"children":4710},{"style":1724},[4711],{"type":68,"value":1455},{"type":62,"tag":242,"props":4713,"children":4714},{"style":281},[4715],{"type":68,"value":411},{"type":62,"tag":242,"props":4717,"children":4718},{"style":271},[4719],{"type":68,"value":2064},{"type":62,"tag":242,"props":4721,"children":4723},{"class":244,"line":4722},134,[4724,4729,4734,4738,4742,4746,4750,4754,4758,4762],{"type":62,"tag":242,"props":4725,"children":4726},{"style":259},[4727],{"type":68,"value":4728},"    async",{"type":62,"tag":242,"props":4730,"children":4731},{"style":281},[4732],{"type":68,"value":4733}," put",{"type":62,"tag":242,"props":4735,"children":4736},{"style":271},[4737],{"type":68,"value":411},{"type":62,"tag":242,"props":4739,"children":4740},{"style":296},[4741],{"type":68,"value":416},{"type":62,"tag":242,"props":4743,"children":4744},{"style":271},[4745],{"type":68,"value":429},{"type":62,"tag":242,"props":4747,"children":4748},{"style":296},[4749],{"type":68,"value":3225},{"type":62,"tag":242,"props":4751,"children":4752},{"style":271},[4753],{"type":68,"value":429},{"type":62,"tag":242,"props":4755,"children":4756},{"style":296},[4757],{"type":68,"value":434},{"type":62,"tag":242,"props":4759,"children":4760},{"style":271},[4761],{"type":68,"value":2550},{"type":62,"tag":242,"props":4763,"children":4764},{"style":271},[4765],{"type":68,"value":274},{"type":62,"tag":242,"props":4767,"children":4769},{"class":244,"line":4768},135,[4770,4774,4779,4783],{"type":62,"tag":242,"props":4771,"children":4772},{"style":259},[4773],{"type":68,"value":3674},{"type":62,"tag":242,"props":4775,"children":4776},{"style":1452},[4777],{"type":68,"value":4778}," r2Options",{"type":62,"tag":242,"props":4780,"children":4781},{"style":271},[4782],{"type":68,"value":1920},{"type":62,"tag":242,"props":4784,"children":4785},{"style":271},[4786],{"type":68,"value":274},{"type":62,"tag":242,"props":4788,"children":4790},{"class":244,"line":4789},136,[4791,4796,4800,4804,4808],{"type":62,"tag":242,"props":4792,"children":4793},{"style":271},[4794],{"type":68,"value":4795},"        ...",{"type":62,"tag":242,"props":4797,"children":4798},{"style":281},[4799],{"type":68,"value":411},{"type":62,"tag":242,"props":4801,"children":4802},{"style":1452},[4803],{"type":68,"value":603},{"type":62,"tag":242,"props":4805,"children":4806},{"style":271},[4807],{"type":68,"value":4442},{"type":62,"tag":242,"props":4809,"children":4810},{"style":1452},[4811],{"type":68,"value":4447},{"type":62,"tag":242,"props":4813,"children":4815},{"class":244,"line":4814},137,[4816,4821,4825,4830,4834,4838,4842,4846,4850,4854,4858,4862],{"type":62,"tag":242,"props":4817,"children":4818},{"style":271},[4819],{"type":68,"value":4820},"          ?",{"type":62,"tag":242,"props":4822,"children":4823},{"style":271},[4824],{"type":68,"value":1449},{"type":62,"tag":242,"props":4826,"children":4827},{"style":281},[4828],{"type":68,"value":4829}," httpMetadata",{"type":62,"tag":242,"props":4831,"children":4832},{"style":271},[4833],{"type":68,"value":304},{"type":62,"tag":242,"props":4835,"children":4836},{"style":271},[4837],{"type":68,"value":1449},{"type":62,"tag":242,"props":4839,"children":4840},{"style":281},[4841],{"type":68,"value":4465},{"type":62,"tag":242,"props":4843,"children":4844},{"style":271},[4845],{"type":68,"value":304},{"type":62,"tag":242,"props":4847,"children":4848},{"style":1452},[4849],{"type":68,"value":434},{"type":62,"tag":242,"props":4851,"children":4852},{"style":271},[4853],{"type":68,"value":174},{"type":62,"tag":242,"props":4855,"children":4856},{"style":1452},[4857],{"type":68,"value":4490},{"type":62,"tag":242,"props":4859,"children":4860},{"style":271},[4861],{"type":68,"value":1469},{"type":62,"tag":242,"props":4863,"children":4864},{"style":271},[4865],{"type":68,"value":2694},{"type":62,"tag":242,"props":4867,"children":4869},{"class":244,"line":4868},138,[4870,4875,4879,4883],{"type":62,"tag":242,"props":4871,"children":4872},{"style":271},[4873],{"type":68,"value":4874},"          :",{"type":62,"tag":242,"props":4876,"children":4877},{"style":271},[4878],{"type":68,"value":4508},{"type":62,"tag":242,"props":4880,"children":4881},{"style":281},[4882],{"type":68,"value":2550},{"type":62,"tag":242,"props":4884,"children":4885},{"style":271},[4886],{"type":68,"value":314},{"type":62,"tag":242,"props":4888,"children":4890},{"class":244,"line":4889},139,[4891,4895,4899,4903,4907],{"type":62,"tag":242,"props":4892,"children":4893},{"style":271},[4894],{"type":68,"value":4795},{"type":62,"tag":242,"props":4896,"children":4897},{"style":281},[4898],{"type":68,"value":411},{"type":62,"tag":242,"props":4900,"children":4901},{"style":1452},[4902],{"type":68,"value":603},{"type":62,"tag":242,"props":4904,"children":4905},{"style":271},[4906],{"type":68,"value":4442},{"type":62,"tag":242,"props":4908,"children":4909},{"style":1452},[4910],{"type":68,"value":4911},"customMetadata\n",{"type":62,"tag":242,"props":4913,"children":4915},{"class":244,"line":4914},140,[4916,4920,4924,4928,4932,4936,4940,4944],{"type":62,"tag":242,"props":4917,"children":4918},{"style":271},[4919],{"type":68,"value":4820},{"type":62,"tag":242,"props":4921,"children":4922},{"style":271},[4923],{"type":68,"value":1449},{"type":62,"tag":242,"props":4925,"children":4926},{"style":281},[4927],{"type":68,"value":4553},{"type":62,"tag":242,"props":4929,"children":4930},{"style":271},[4931],{"type":68,"value":304},{"type":62,"tag":242,"props":4933,"children":4934},{"style":1452},[4935],{"type":68,"value":434},{"type":62,"tag":242,"props":4937,"children":4938},{"style":271},[4939],{"type":68,"value":174},{"type":62,"tag":242,"props":4941,"children":4942},{"style":1452},[4943],{"type":68,"value":1326},{"type":62,"tag":242,"props":4945,"children":4946},{"style":271},[4947],{"type":68,"value":2694},{"type":62,"tag":242,"props":4949,"children":4951},{"class":244,"line":4950},141,[4952,4956,4960,4964],{"type":62,"tag":242,"props":4953,"children":4954},{"style":271},[4955],{"type":68,"value":4874},{"type":62,"tag":242,"props":4957,"children":4958},{"style":271},[4959],{"type":68,"value":4508},{"type":62,"tag":242,"props":4961,"children":4962},{"style":281},[4963],{"type":68,"value":2550},{"type":62,"tag":242,"props":4965,"children":4966},{"style":271},[4967],{"type":68,"value":314},{"type":62,"tag":242,"props":4969,"children":4971},{"class":244,"line":4970},142,[4972],{"type":62,"tag":242,"props":4973,"children":4974},{"style":271},[4975],{"type":68,"value":4021},{"type":62,"tag":242,"props":4977,"children":4979},{"class":244,"line":4978},143,[4980,4984,4988],{"type":62,"tag":242,"props":4981,"children":4982},{"style":259},[4983],{"type":68,"value":3674},{"type":62,"tag":242,"props":4985,"children":4986},{"style":1452},[4987],{"type":68,"value":4292},{"type":62,"tag":242,"props":4989,"children":4990},{"style":271},[4991],{"type":68,"value":4992}," =\n",{"type":62,"tag":242,"props":4994,"children":4996},{"class":244,"line":4995},144,[4997,5002,5007],{"type":62,"tag":242,"props":4998,"children":4999},{"style":1452},[5000],{"type":68,"value":5001},"        body",{"type":62,"tag":242,"props":5003,"children":5004},{"style":271},[5005],{"type":68,"value":5006}," instanceof",{"type":62,"tag":242,"props":5008,"children":5009},{"style":265},[5010],{"type":68,"value":5011}," ReadableStream\n",{"type":62,"tag":242,"props":5013,"children":5015},{"class":244,"line":5014},145,[5016,5020,5024,5028],{"type":62,"tag":242,"props":5017,"children":5018},{"style":271},[5019],{"type":68,"value":4820},{"type":62,"tag":242,"props":5021,"children":5022},{"style":1441},[5023],{"type":68,"value":2104},{"type":62,"tag":242,"props":5025,"children":5026},{"style":1724},[5027],{"type":68,"value":2860},{"type":62,"tag":242,"props":5029,"children":5030},{"style":281},[5031],{"type":68,"value":289},{"type":62,"tag":242,"props":5033,"children":5035},{"class":244,"line":5034},146,[5036,5041],{"type":62,"tag":242,"props":5037,"children":5038},{"style":1452},[5039],{"type":68,"value":5040},"              bucket",{"type":62,"tag":242,"props":5042,"children":5043},{"style":271},[5044],{"type":68,"value":314},{"type":62,"tag":242,"props":5046,"children":5048},{"class":244,"line":5047},147,[5049,5054],{"type":62,"tag":242,"props":5050,"children":5051},{"style":1452},[5052],{"type":68,"value":5053},"              key",{"type":62,"tag":242,"props":5055,"children":5056},{"style":271},[5057],{"type":68,"value":314},{"type":62,"tag":242,"props":5059,"children":5061},{"class":244,"line":5060},148,[5062,5067],{"type":62,"tag":242,"props":5063,"children":5064},{"style":1452},[5065],{"type":68,"value":5066},"              body",{"type":62,"tag":242,"props":5068,"children":5069},{"style":271},[5070],{"type":68,"value":314},{"type":62,"tag":242,"props":5072,"children":5074},{"class":244,"line":5073},149,[5075,5080],{"type":62,"tag":242,"props":5076,"children":5077},{"style":1452},[5078],{"type":68,"value":5079},"              r2Options",{"type":62,"tag":242,"props":5081,"children":5082},{"style":271},[5083],{"type":68,"value":314},{"type":62,"tag":242,"props":5085,"children":5087},{"class":244,"line":5086},150,[5088,5093,5097,5101],{"type":62,"tag":242,"props":5089,"children":5090},{"style":1452},[5091],{"type":68,"value":5092},"              options",{"type":62,"tag":242,"props":5094,"children":5095},{"style":271},[5096],{"type":68,"value":4442},{"type":62,"tag":242,"props":5098,"children":5099},{"style":1452},[5100],{"type":68,"value":3042},{"type":62,"tag":242,"props":5102,"children":5103},{"style":271},[5104],{"type":68,"value":314},{"type":62,"tag":242,"props":5106,"children":5108},{"class":244,"line":5107},151,[5109],{"type":62,"tag":242,"props":5110,"children":5111},{"style":281},[5112],{"type":68,"value":5113},"            )\n",{"type":62,"tag":242,"props":5115,"children":5117},{"class":244,"line":5116},152,[5118,5122,5126,5130,5134,5138,5142,5146,5150,5154,5158,5162],{"type":62,"tag":242,"props":5119,"children":5120},{"style":271},[5121],{"type":68,"value":4874},{"type":62,"tag":242,"props":5123,"children":5124},{"style":1441},[5125],{"type":68,"value":2104},{"type":62,"tag":242,"props":5127,"children":5128},{"style":1452},[5129],{"type":68,"value":3091},{"type":62,"tag":242,"props":5131,"children":5132},{"style":271},[5133],{"type":68,"value":174},{"type":62,"tag":242,"props":5135,"children":5136},{"style":1724},[5137],{"type":68,"value":988},{"type":62,"tag":242,"props":5139,"children":5140},{"style":281},[5141],{"type":68,"value":411},{"type":62,"tag":242,"props":5143,"children":5144},{"style":1452},[5145],{"type":68,"value":416},{"type":62,"tag":242,"props":5147,"children":5148},{"style":271},[5149],{"type":68,"value":429},{"type":62,"tag":242,"props":5151,"children":5152},{"style":1452},[5153],{"type":68,"value":3225},{"type":62,"tag":242,"props":5155,"children":5156},{"style":271},[5157],{"type":68,"value":429},{"type":62,"tag":242,"props":5159,"children":5160},{"style":1452},[5161],{"type":68,"value":4778},{"type":62,"tag":242,"props":5163,"children":5164},{"style":281},[5165],{"type":68,"value":2217},{"type":62,"tag":242,"props":5167,"children":5169},{"class":244,"line":5168},153,[5170],{"type":62,"tag":242,"props":5171,"children":5172},{"style":249},[5173],{"type":68,"value":5174},"      \u002F\u002F R2.put returns null only when an onlyIf precondition fails — not used here.\n",{"type":62,"tag":242,"props":5176,"children":5178},{"class":244,"line":5177},154,[5179,5183,5187,5191,5195,5199,5204,5208,5212,5216,5220,5225,5229,5233,5238],{"type":62,"tag":242,"props":5180,"children":5181},{"style":1441},[5182],{"type":68,"value":3752},{"type":62,"tag":242,"props":5184,"children":5185},{"style":281},[5186],{"type":68,"value":2039},{"type":62,"tag":242,"props":5188,"children":5189},{"style":271},[5190],{"type":68,"value":2459},{"type":62,"tag":242,"props":5192,"children":5193},{"style":1452},[5194],{"type":68,"value":4249},{"type":62,"tag":242,"props":5196,"children":5197},{"style":281},[5198],{"type":68,"value":2059},{"type":62,"tag":242,"props":5200,"children":5201},{"style":1441},[5202],{"type":68,"value":5203},"throw",{"type":62,"tag":242,"props":5205,"children":5206},{"style":271},[5207],{"type":68,"value":2274},{"type":62,"tag":242,"props":5209,"children":5210},{"style":1724},[5211],{"type":68,"value":3864},{"type":62,"tag":242,"props":5213,"children":5214},{"style":281},[5215],{"type":68,"value":411},{"type":62,"tag":242,"props":5217,"children":5218},{"style":271},[5219],{"type":68,"value":3906},{"type":62,"tag":242,"props":5221,"children":5222},{"style":1482},[5223],{"type":68,"value":5224},"R2 put failed for ",{"type":62,"tag":242,"props":5226,"children":5227},{"style":271},[5228],{"type":68,"value":3887},{"type":62,"tag":242,"props":5230,"children":5231},{"style":1452},[5232],{"type":68,"value":416},{"type":62,"tag":242,"props":5234,"children":5235},{"style":271},[5236],{"type":68,"value":5237},"}`",{"type":62,"tag":242,"props":5239,"children":5240},{"style":281},[5241],{"type":68,"value":2217},{"type":62,"tag":242,"props":5243,"children":5245},{"class":244,"line":5244},155,[5246,5251,5255,5259,5263],{"type":62,"tag":242,"props":5247,"children":5248},{"style":1441},[5249],{"type":68,"value":5250},"      return",{"type":62,"tag":242,"props":5252,"children":5253},{"style":1724},[5254],{"type":68,"value":4240},{"type":62,"tag":242,"props":5256,"children":5257},{"style":281},[5258],{"type":68,"value":411},{"type":62,"tag":242,"props":5260,"children":5261},{"style":1452},[5262],{"type":68,"value":4249},{"type":62,"tag":242,"props":5264,"children":5265},{"style":281},[5266],{"type":68,"value":2217},{"type":62,"tag":242,"props":5268,"children":5270},{"class":244,"line":5269},156,[5271],{"type":62,"tag":242,"props":5272,"children":5273},{"style":271},[5274],{"type":68,"value":5275},"    },\n",{"type":62,"tag":242,"props":5277,"children":5279},{"class":244,"line":5278},157,[5280],{"type":62,"tag":242,"props":5281,"children":5282},{"emptyLinePlaceholder":649},[5283],{"type":68,"value":652},{"type":62,"tag":242,"props":5285,"children":5287},{"class":244,"line":5286},158,[5288,5292,5297,5301,5305,5309,5313,5317,5321,5325,5329,5333,5337,5341],{"type":62,"tag":242,"props":5289,"children":5290},{"style":259},[5291],{"type":68,"value":4728},{"type":62,"tag":242,"props":5293,"children":5294},{"style":281},[5295],{"type":68,"value":5296}," get",{"type":62,"tag":242,"props":5298,"children":5299},{"style":271},[5300],{"type":68,"value":411},{"type":62,"tag":242,"props":5302,"children":5303},{"style":296},[5304],{"type":68,"value":416},{"type":62,"tag":242,"props":5306,"children":5307},{"style":271},[5308],{"type":68,"value":429},{"type":62,"tag":242,"props":5310,"children":5311},{"style":296},[5312],{"type":68,"value":434},{"type":62,"tag":242,"props":5314,"children":5315},{"style":271},[5316],{"type":68,"value":448},{"type":62,"tag":242,"props":5318,"children":5319},{"style":265},[5320],{"type":68,"value":373},{"type":62,"tag":242,"props":5322,"children":5323},{"style":271},[5324],{"type":68,"value":378},{"type":62,"tag":242,"props":5326,"children":5327},{"style":265},[5328],{"type":68,"value":461},{"type":62,"tag":242,"props":5330,"children":5331},{"style":271},[5332],{"type":68,"value":466},{"type":62,"tag":242,"props":5334,"children":5335},{"style":265},[5336],{"type":68,"value":471},{"type":62,"tag":242,"props":5338,"children":5339},{"style":271},[5340],{"type":68,"value":529},{"type":62,"tag":242,"props":5342,"children":5343},{"style":271},[5344],{"type":68,"value":274},{"type":62,"tag":242,"props":5346,"children":5348},{"class":244,"line":5347},159,[5349,5353,5357,5361,5365,5369,5373,5377],{"type":62,"tag":242,"props":5350,"children":5351},{"style":1441},[5352],{"type":68,"value":3752},{"type":62,"tag":242,"props":5354,"children":5355},{"style":281},[5356],{"type":68,"value":2039},{"type":62,"tag":242,"props":5358,"children":5359},{"style":271},[5360],{"type":68,"value":2459},{"type":62,"tag":242,"props":5362,"children":5363},{"style":1452},[5364],{"type":68,"value":603},{"type":62,"tag":242,"props":5366,"children":5367},{"style":271},[5368],{"type":68,"value":4442},{"type":62,"tag":242,"props":5370,"children":5371},{"style":1452},[5372],{"type":68,"value":1253},{"type":62,"tag":242,"props":5374,"children":5375},{"style":281},[5376],{"type":68,"value":2059},{"type":62,"tag":242,"props":5378,"children":5379},{"style":271},[5380],{"type":68,"value":2064},{"type":62,"tag":242,"props":5382,"children":5384},{"class":244,"line":5383},160,[5385,5390,5395,5399,5403,5407,5411,5415,5419,5423],{"type":62,"tag":242,"props":5386,"children":5387},{"style":259},[5388],{"type":68,"value":5389},"        const",{"type":62,"tag":242,"props":5391,"children":5392},{"style":1452},[5393],{"type":68,"value":5394}," whole",{"type":62,"tag":242,"props":5396,"children":5397},{"style":271},[5398],{"type":68,"value":1920},{"type":62,"tag":242,"props":5400,"children":5401},{"style":1441},[5402],{"type":68,"value":2104},{"type":62,"tag":242,"props":5404,"children":5405},{"style":1452},[5406],{"type":68,"value":3091},{"type":62,"tag":242,"props":5408,"children":5409},{"style":271},[5410],{"type":68,"value":174},{"type":62,"tag":242,"props":5412,"children":5413},{"style":1724},[5414],{"type":68,"value":1379},{"type":62,"tag":242,"props":5416,"children":5417},{"style":281},[5418],{"type":68,"value":411},{"type":62,"tag":242,"props":5420,"children":5421},{"style":1452},[5422],{"type":68,"value":416},{"type":62,"tag":242,"props":5424,"children":5425},{"style":281},[5426],{"type":68,"value":2217},{"type":62,"tag":242,"props":5428,"children":5430},{"class":244,"line":5429},161,[5431,5435,5439,5443,5448,5452,5457],{"type":62,"tag":242,"props":5432,"children":5433},{"style":1441},[5434],{"type":68,"value":3820},{"type":62,"tag":242,"props":5436,"children":5437},{"style":281},[5438],{"type":68,"value":2039},{"type":62,"tag":242,"props":5440,"children":5441},{"style":271},[5442],{"type":68,"value":2459},{"type":62,"tag":242,"props":5444,"children":5445},{"style":1452},[5446],{"type":68,"value":5447},"whole",{"type":62,"tag":242,"props":5449,"children":5450},{"style":281},[5451],{"type":68,"value":2059},{"type":62,"tag":242,"props":5453,"children":5454},{"style":1441},[5455],{"type":68,"value":5456},"return",{"type":62,"tag":242,"props":5458,"children":5459},{"style":271},[5460],{"type":68,"value":5461}," null\n",{"type":62,"tag":242,"props":5463,"children":5465},{"class":244,"line":5464},162,[5466,5471],{"type":62,"tag":242,"props":5467,"children":5468},{"style":1441},[5469],{"type":68,"value":5470},"        return",{"type":62,"tag":242,"props":5472,"children":5473},{"style":271},[5474],{"type":68,"value":274},{"type":62,"tag":242,"props":5476,"children":5478},{"class":244,"line":5477},163,[5479,5484,5489,5493,5497,5501],{"type":62,"tag":242,"props":5480,"children":5481},{"style":271},[5482],{"type":68,"value":5483},"          ...",{"type":62,"tag":242,"props":5485,"children":5486},{"style":1724},[5487],{"type":68,"value":5488},"toRecord",{"type":62,"tag":242,"props":5490,"children":5491},{"style":281},[5492],{"type":68,"value":411},{"type":62,"tag":242,"props":5494,"children":5495},{"style":1452},[5496],{"type":68,"value":5447},{"type":62,"tag":242,"props":5498,"children":5499},{"style":281},[5500],{"type":68,"value":2550},{"type":62,"tag":242,"props":5502,"children":5503},{"style":271},[5504],{"type":68,"value":314},{"type":62,"tag":242,"props":5506,"children":5508},{"class":244,"line":5507},164,[5509,5514,5518,5522,5526,5530],{"type":62,"tag":242,"props":5510,"children":5511},{"style":281},[5512],{"type":68,"value":5513},"          body",{"type":62,"tag":242,"props":5515,"children":5516},{"style":271},[5517],{"type":68,"value":304},{"type":62,"tag":242,"props":5519,"children":5520},{"style":1452},[5521],{"type":68,"value":5394},{"type":62,"tag":242,"props":5523,"children":5524},{"style":271},[5525],{"type":68,"value":174},{"type":62,"tag":242,"props":5527,"children":5528},{"style":1452},[5529],{"type":68,"value":1403},{"type":62,"tag":242,"props":5531,"children":5532},{"style":271},[5533],{"type":68,"value":314},{"type":62,"tag":242,"props":5535,"children":5537},{"class":244,"line":5536},165,[5538,5543,5547,5552,5556,5560,5564,5569,5573],{"type":62,"tag":242,"props":5539,"children":5540},{"style":1724},[5541],{"type":68,"value":5542},"          arrayBuffer",{"type":62,"tag":242,"props":5544,"children":5545},{"style":271},[5546],{"type":68,"value":304},{"type":62,"tag":242,"props":5548,"children":5549},{"style":271},[5550],{"type":68,"value":5551}," ()",{"type":62,"tag":242,"props":5553,"children":5554},{"style":259},[5555],{"type":68,"value":4180},{"type":62,"tag":242,"props":5557,"children":5558},{"style":1452},[5559],{"type":68,"value":5394},{"type":62,"tag":242,"props":5561,"children":5562},{"style":271},[5563],{"type":68,"value":174},{"type":62,"tag":242,"props":5565,"children":5566},{"style":1724},[5567],{"type":68,"value":5568},"arrayBuffer",{"type":62,"tag":242,"props":5570,"children":5571},{"style":281},[5572],{"type":68,"value":4158},{"type":62,"tag":242,"props":5574,"children":5575},{"style":271},[5576],{"type":68,"value":314},{"type":62,"tag":242,"props":5578,"children":5580},{"class":244,"line":5579},166,[5581,5586,5590,5594,5598,5602,5606,5610,5614],{"type":62,"tag":242,"props":5582,"children":5583},{"style":1724},[5584],{"type":68,"value":5585},"          text",{"type":62,"tag":242,"props":5587,"children":5588},{"style":271},[5589],{"type":68,"value":304},{"type":62,"tag":242,"props":5591,"children":5592},{"style":271},[5593],{"type":68,"value":5551},{"type":62,"tag":242,"props":5595,"children":5596},{"style":259},[5597],{"type":68,"value":4180},{"type":62,"tag":242,"props":5599,"children":5600},{"style":1452},[5601],{"type":68,"value":5394},{"type":62,"tag":242,"props":5603,"children":5604},{"style":271},[5605],{"type":68,"value":174},{"type":62,"tag":242,"props":5607,"children":5608},{"style":1724},[5609],{"type":68,"value":68},{"type":62,"tag":242,"props":5611,"children":5612},{"style":281},[5613],{"type":68,"value":4158},{"type":62,"tag":242,"props":5615,"children":5616},{"style":271},[5617],{"type":68,"value":314},{"type":62,"tag":242,"props":5619,"children":5621},{"class":244,"line":5620},167,[5622],{"type":62,"tag":242,"props":5623,"children":5624},{"style":271},[5625],{"type":68,"value":3928},{"type":62,"tag":242,"props":5627,"children":5629},{"class":244,"line":5628},168,[5630],{"type":62,"tag":242,"props":5631,"children":5632},{"style":271},[5633],{"type":68,"value":4021},{"type":62,"tag":242,"props":5635,"children":5637},{"class":244,"line":5636},169,[5638],{"type":62,"tag":242,"props":5639,"children":5640},{"style":249},[5641],{"type":68,"value":5642},"      \u002F\u002F A ranged read is what a serve route turns into `206` — R2 slices in\n",{"type":62,"tag":242,"props":5644,"children":5646},{"class":244,"line":5645},170,[5647],{"type":62,"tag":242,"props":5648,"children":5649},{"style":249},[5650],{"type":68,"value":5651},"      \u002F\u002F the bucket, so a seek never streams the whole object. `resolveBlobRange`\n",{"type":62,"tag":242,"props":5653,"children":5655},{"class":244,"line":5654},171,[5656],{"type":62,"tag":242,"props":5657,"children":5658},{"style":249},[5659],{"type":68,"value":5660},"      \u002F\u002F clamps a too-long length and throws on an offset past the end (the\n",{"type":62,"tag":242,"props":5662,"children":5664},{"class":244,"line":5663},172,[5665],{"type":62,"tag":242,"props":5666,"children":5667},{"style":249},[5668],{"type":68,"value":5669},"      \u002F\u002F route answers `416` from `record.size` before ever calling in). The\n",{"type":62,"tag":242,"props":5671,"children":5673},{"class":244,"line":5672},173,[5674],{"type":62,"tag":242,"props":5675,"children":5676},{"style":249},[5677],{"type":68,"value":5678},"      \u002F\u002F `head` buys that clamp deterministically — one class-B op against\n",{"type":62,"tag":242,"props":5680,"children":5682},{"class":244,"line":5681},174,[5683],{"type":62,"tag":242,"props":5684,"children":5685},{"style":249},[5686],{"type":68,"value":5687},"      \u002F\u002F bytes you did not need to send.\n",{"type":62,"tag":242,"props":5689,"children":5691},{"class":244,"line":5690},175,[5692],{"type":62,"tag":242,"props":5693,"children":5694},{"style":249},[5695],{"type":68,"value":5696},"      \u002F\u002F\n",{"type":62,"tag":242,"props":5698,"children":5700},{"class":244,"line":5699},176,[5701],{"type":62,"tag":242,"props":5702,"children":5703},{"style":249},[5704],{"type":68,"value":5705},"      \u002F\u002F Retry a bounded number of times: each attempt measures the object and\n",{"type":62,"tag":242,"props":5707,"children":5709},{"class":244,"line":5708},177,[5710],{"type":62,"tag":242,"props":5711,"children":5712},{"style":249},[5713],{"type":68,"value":5714},"      \u002F\u002F reads a slice of THAT version, and only an overwrite landing between\n",{"type":62,"tag":242,"props":5716,"children":5718},{"class":244,"line":5717},178,[5719],{"type":62,"tag":242,"props":5720,"children":5721},{"style":249},[5722],{"type":68,"value":5723},"      \u002F\u002F the two calls costs another lap.\n",{"type":62,"tag":242,"props":5725,"children":5727},{"class":244,"line":5726},179,[5728,5733,5737,5742,5747,5751,5755,5759,5763,5767,5772,5776,5780,5785,5789],{"type":62,"tag":242,"props":5729,"children":5730},{"style":1441},[5731],{"type":68,"value":5732},"      for",{"type":62,"tag":242,"props":5734,"children":5735},{"style":281},[5736],{"type":68,"value":2039},{"type":62,"tag":242,"props":5738,"children":5739},{"style":259},[5740],{"type":68,"value":5741},"let",{"type":62,"tag":242,"props":5743,"children":5744},{"style":1452},[5745],{"type":68,"value":5746}," attempt",{"type":62,"tag":242,"props":5748,"children":5749},{"style":271},[5750],{"type":68,"value":1920},{"type":62,"tag":242,"props":5752,"children":5753},{"style":1607},[5754],{"type":68,"value":1943},{"type":62,"tag":242,"props":5756,"children":5757},{"style":271},[5758],{"type":68,"value":1840},{"type":62,"tag":242,"props":5760,"children":5761},{"style":1452},[5762],{"type":68,"value":5746},{"type":62,"tag":242,"props":5764,"children":5765},{"style":271},[5766],{"type":68,"value":2049},{"type":62,"tag":242,"props":5768,"children":5769},{"style":1607},[5770],{"type":68,"value":5771}," 3",{"type":62,"tag":242,"props":5773,"children":5774},{"style":271},[5775],{"type":68,"value":1840},{"type":62,"tag":242,"props":5777,"children":5778},{"style":1452},[5779],{"type":68,"value":5746},{"type":62,"tag":242,"props":5781,"children":5782},{"style":271},[5783],{"type":68,"value":5784},"++",{"type":62,"tag":242,"props":5786,"children":5787},{"style":281},[5788],{"type":68,"value":2059},{"type":62,"tag":242,"props":5790,"children":5791},{"style":271},[5792],{"type":68,"value":2064},{"type":62,"tag":242,"props":5794,"children":5796},{"class":244,"line":5795},180,[5797,5801,5806,5810,5814,5818,5822,5826,5830,5834],{"type":62,"tag":242,"props":5798,"children":5799},{"style":259},[5800],{"type":68,"value":5389},{"type":62,"tag":242,"props":5802,"children":5803},{"style":1452},[5804],{"type":68,"value":5805}," head",{"type":62,"tag":242,"props":5807,"children":5808},{"style":271},[5809],{"type":68,"value":1920},{"type":62,"tag":242,"props":5811,"children":5812},{"style":1441},[5813],{"type":68,"value":2104},{"type":62,"tag":242,"props":5815,"children":5816},{"style":1452},[5817],{"type":68,"value":3091},{"type":62,"tag":242,"props":5819,"children":5820},{"style":271},[5821],{"type":68,"value":174},{"type":62,"tag":242,"props":5823,"children":5824},{"style":1724},[5825],{"type":68,"value":1387},{"type":62,"tag":242,"props":5827,"children":5828},{"style":281},[5829],{"type":68,"value":411},{"type":62,"tag":242,"props":5831,"children":5832},{"style":1452},[5833],{"type":68,"value":416},{"type":62,"tag":242,"props":5835,"children":5836},{"style":281},[5837],{"type":68,"value":2217},{"type":62,"tag":242,"props":5839,"children":5841},{"class":244,"line":5840},181,[5842],{"type":62,"tag":242,"props":5843,"children":5844},{"style":249},[5845],{"type":68,"value":5846},"        \u002F\u002F A ranged read of a key that is not there is a miss, not a\n",{"type":62,"tag":242,"props":5848,"children":5850},{"class":244,"line":5849},182,[5851],{"type":62,"tag":242,"props":5852,"children":5853},{"style":249},[5854],{"type":68,"value":5855},"        \u002F\u002F whole-object read: falling through to an un-ranged `get` would\n",{"type":62,"tag":242,"props":5857,"children":5859},{"class":244,"line":5858},183,[5860],{"type":62,"tag":242,"props":5861,"children":5862},{"style":249},[5863],{"type":68,"value":5864},"        \u002F\u002F answer a `206` carrying the entire file.\n",{"type":62,"tag":242,"props":5866,"children":5868},{"class":244,"line":5867},184,[5869,5873,5877,5881,5885,5889,5893],{"type":62,"tag":242,"props":5870,"children":5871},{"style":1441},[5872],{"type":68,"value":3820},{"type":62,"tag":242,"props":5874,"children":5875},{"style":281},[5876],{"type":68,"value":2039},{"type":62,"tag":242,"props":5878,"children":5879},{"style":271},[5880],{"type":68,"value":2459},{"type":62,"tag":242,"props":5882,"children":5883},{"style":1452},[5884],{"type":68,"value":1387},{"type":62,"tag":242,"props":5886,"children":5887},{"style":281},[5888],{"type":68,"value":2059},{"type":62,"tag":242,"props":5890,"children":5891},{"style":1441},[5892],{"type":68,"value":5456},{"type":62,"tag":242,"props":5894,"children":5895},{"style":271},[5896],{"type":68,"value":5461},{"type":62,"tag":242,"props":5898,"children":5900},{"class":244,"line":5899},185,[5901,5905,5910,5914,5918,5922,5926,5930,5934,5938,5942,5946,5950],{"type":62,"tag":242,"props":5902,"children":5903},{"style":259},[5904],{"type":68,"value":5389},{"type":62,"tag":242,"props":5906,"children":5907},{"style":1452},[5908],{"type":68,"value":5909}," served",{"type":62,"tag":242,"props":5911,"children":5912},{"style":271},[5913],{"type":68,"value":1920},{"type":62,"tag":242,"props":5915,"children":5916},{"style":1724},[5917],{"type":68,"value":1464},{"type":62,"tag":242,"props":5919,"children":5920},{"style":281},[5921],{"type":68,"value":411},{"type":62,"tag":242,"props":5923,"children":5924},{"style":1452},[5925],{"type":68,"value":1387},{"type":62,"tag":242,"props":5927,"children":5928},{"style":271},[5929],{"type":68,"value":174},{"type":62,"tag":242,"props":5931,"children":5932},{"style":1452},[5933],{"type":68,"value":1304},{"type":62,"tag":242,"props":5935,"children":5936},{"style":271},[5937],{"type":68,"value":429},{"type":62,"tag":242,"props":5939,"children":5940},{"style":1452},[5941],{"type":68,"value":434},{"type":62,"tag":242,"props":5943,"children":5944},{"style":271},[5945],{"type":68,"value":174},{"type":62,"tag":242,"props":5947,"children":5948},{"style":1452},[5949],{"type":68,"value":1253},{"type":62,"tag":242,"props":5951,"children":5952},{"style":281},[5953],{"type":68,"value":2217},{"type":62,"tag":242,"props":5955,"children":5957},{"class":244,"line":5956},186,[5958,5962,5966,5970,5974,5978,5982,5986,5990,5994,5998],{"type":62,"tag":242,"props":5959,"children":5960},{"style":259},[5961],{"type":68,"value":5389},{"type":62,"tag":242,"props":5963,"children":5964},{"style":1452},[5965],{"type":68,"value":4292},{"type":62,"tag":242,"props":5967,"children":5968},{"style":271},[5969],{"type":68,"value":1920},{"type":62,"tag":242,"props":5971,"children":5972},{"style":1441},[5973],{"type":68,"value":2104},{"type":62,"tag":242,"props":5975,"children":5976},{"style":1452},[5977],{"type":68,"value":3091},{"type":62,"tag":242,"props":5979,"children":5980},{"style":271},[5981],{"type":68,"value":174},{"type":62,"tag":242,"props":5983,"children":5984},{"style":1724},[5985],{"type":68,"value":1379},{"type":62,"tag":242,"props":5987,"children":5988},{"style":281},[5989],{"type":68,"value":411},{"type":62,"tag":242,"props":5991,"children":5992},{"style":1452},[5993],{"type":68,"value":416},{"type":62,"tag":242,"props":5995,"children":5996},{"style":271},[5997],{"type":68,"value":429},{"type":62,"tag":242,"props":5999,"children":6000},{"style":271},[6001],{"type":68,"value":274},{"type":62,"tag":242,"props":6003,"children":6005},{"class":244,"line":6004},187,[6006,6011,6015,6019,6023,6027,6031,6035,6040,6044,6049,6053,6057,6061,6066],{"type":62,"tag":242,"props":6007,"children":6008},{"style":281},[6009],{"type":68,"value":6010},"          range",{"type":62,"tag":242,"props":6012,"children":6013},{"style":271},[6014],{"type":68,"value":304},{"type":62,"tag":242,"props":6016,"children":6017},{"style":271},[6018],{"type":68,"value":1449},{"type":62,"tag":242,"props":6020,"children":6021},{"style":281},[6022],{"type":68,"value":2303},{"type":62,"tag":242,"props":6024,"children":6025},{"style":271},[6026],{"type":68,"value":304},{"type":62,"tag":242,"props":6028,"children":6029},{"style":1452},[6030],{"type":68,"value":5909},{"type":62,"tag":242,"props":6032,"children":6033},{"style":271},[6034],{"type":68,"value":174},{"type":62,"tag":242,"props":6036,"children":6037},{"style":1452},[6038],{"type":68,"value":6039},"offset",{"type":62,"tag":242,"props":6041,"children":6042},{"style":271},[6043],{"type":68,"value":429},{"type":62,"tag":242,"props":6045,"children":6046},{"style":281},[6047],{"type":68,"value":6048}," length",{"type":62,"tag":242,"props":6050,"children":6051},{"style":271},[6052],{"type":68,"value":304},{"type":62,"tag":242,"props":6054,"children":6055},{"style":1452},[6056],{"type":68,"value":5909},{"type":62,"tag":242,"props":6058,"children":6059},{"style":271},[6060],{"type":68,"value":174},{"type":62,"tag":242,"props":6062,"children":6063},{"style":1452},[6064],{"type":68,"value":6065},"length",{"type":62,"tag":242,"props":6067,"children":6068},{"style":271},[6069],{"type":68,"value":6070}," },\n",{"type":62,"tag":242,"props":6072,"children":6074},{"class":244,"line":6073},188,[6075],{"type":62,"tag":242,"props":6076,"children":6077},{"style":249},[6078],{"type":68,"value":6079},"          \u002F\u002F Tie the slice to the version `head` measured. Without this, a\n",{"type":62,"tag":242,"props":6081,"children":6083},{"class":244,"line":6082},189,[6084],{"type":62,"tag":242,"props":6085,"children":6086},{"style":249},[6087],{"type":68,"value":6088},"          \u002F\u002F `put` landing between the two calls yields a `Content-Range`\n",{"type":62,"tag":242,"props":6090,"children":6092},{"class":244,"line":6091},190,[6093],{"type":62,"tag":242,"props":6094,"children":6095},{"style":249},[6096],{"type":68,"value":6097},"          \u002F\u002F computed from one object and bytes from another.\n",{"type":62,"tag":242,"props":6099,"children":6101},{"class":244,"line":6100},191,[6102,6107,6111,6115,6120,6124,6128,6132,6136],{"type":62,"tag":242,"props":6103,"children":6104},{"style":281},[6105],{"type":68,"value":6106},"          onlyIf",{"type":62,"tag":242,"props":6108,"children":6109},{"style":271},[6110],{"type":68,"value":304},{"type":62,"tag":242,"props":6112,"children":6113},{"style":271},[6114],{"type":68,"value":1449},{"type":62,"tag":242,"props":6116,"children":6117},{"style":281},[6118],{"type":68,"value":6119}," etagMatches",{"type":62,"tag":242,"props":6121,"children":6122},{"style":271},[6123],{"type":68,"value":304},{"type":62,"tag":242,"props":6125,"children":6126},{"style":1452},[6127],{"type":68,"value":5805},{"type":62,"tag":242,"props":6129,"children":6130},{"style":271},[6131],{"type":68,"value":174},{"type":62,"tag":242,"props":6133,"children":6134},{"style":1452},[6135],{"type":68,"value":1312},{"type":62,"tag":242,"props":6137,"children":6138},{"style":271},[6139],{"type":68,"value":6070},{"type":62,"tag":242,"props":6141,"children":6143},{"class":244,"line":6142},192,[6144,6149],{"type":62,"tag":242,"props":6145,"children":6146},{"style":271},[6147],{"type":68,"value":6148},"        }",{"type":62,"tag":242,"props":6150,"children":6151},{"style":281},[6152],{"type":68,"value":2217},{"type":62,"tag":242,"props":6154,"children":6156},{"class":244,"line":6155},193,[6157],{"type":62,"tag":242,"props":6158,"children":6159},{"style":249},[6160],{"type":68,"value":6161},"        \u002F\u002F No body means the precondition failed — the object changed under us.\n",{"type":62,"tag":242,"props":6163,"children":6165},{"class":244,"line":6164},194,[6166,6170,6174,6178,6182,6186,6190],{"type":62,"tag":242,"props":6167,"children":6168},{"style":1441},[6169],{"type":68,"value":3820},{"type":62,"tag":242,"props":6171,"children":6172},{"style":281},[6173],{"type":68,"value":2039},{"type":62,"tag":242,"props":6175,"children":6176},{"style":271},[6177],{"type":68,"value":2459},{"type":62,"tag":242,"props":6179,"children":6180},{"style":1452},[6181],{"type":68,"value":4249},{"type":62,"tag":242,"props":6183,"children":6184},{"style":281},[6185],{"type":68,"value":2059},{"type":62,"tag":242,"props":6187,"children":6188},{"style":1441},[6189],{"type":68,"value":5456},{"type":62,"tag":242,"props":6191,"children":6192},{"style":271},[6193],{"type":68,"value":5461},{"type":62,"tag":242,"props":6195,"children":6197},{"class":244,"line":6196},195,[6198,6202,6206,6210,6214,6219,6223,6227,6232,6236,6241],{"type":62,"tag":242,"props":6199,"children":6200},{"style":1441},[6201],{"type":68,"value":3820},{"type":62,"tag":242,"props":6203,"children":6204},{"style":281},[6205],{"type":68,"value":2039},{"type":62,"tag":242,"props":6207,"children":6208},{"style":271},[6209],{"type":68,"value":2459},{"type":62,"tag":242,"props":6211,"children":6212},{"style":281},[6213],{"type":68,"value":411},{"type":62,"tag":242,"props":6215,"children":6216},{"style":271},[6217],{"type":68,"value":6218},"'",{"type":62,"tag":242,"props":6220,"children":6221},{"style":1482},[6222],{"type":68,"value":1403},{"type":62,"tag":242,"props":6224,"children":6225},{"style":271},[6226],{"type":68,"value":6218},{"type":62,"tag":242,"props":6228,"children":6229},{"style":271},[6230],{"type":68,"value":6231}," in",{"type":62,"tag":242,"props":6233,"children":6234},{"style":1452},[6235],{"type":68,"value":4292},{"type":62,"tag":242,"props":6237,"children":6238},{"style":281},[6239],{"type":68,"value":6240},")) ",{"type":62,"tag":242,"props":6242,"children":6243},{"style":1441},[6244],{"type":68,"value":6245},"continue\n",{"type":62,"tag":242,"props":6247,"children":6249},{"class":244,"line":6248},196,[6250,6254],{"type":62,"tag":242,"props":6251,"children":6252},{"style":1441},[6253],{"type":68,"value":5470},{"type":62,"tag":242,"props":6255,"children":6256},{"style":271},[6257],{"type":68,"value":274},{"type":62,"tag":242,"props":6259,"children":6261},{"class":244,"line":6260},197,[6262],{"type":62,"tag":242,"props":6263,"children":6264},{"style":249},[6265],{"type":68,"value":6266},"          \u002F\u002F `toRecord(obj)` reports the WHOLE object's size even on a ranged\n",{"type":62,"tag":242,"props":6268,"children":6270},{"class":244,"line":6269},198,[6271],{"type":62,"tag":242,"props":6272,"children":6273},{"style":249},[6274],{"type":68,"value":6275},"          \u002F\u002F read — R2's `R2Object.size` is the object, not the slice — which\n",{"type":62,"tag":242,"props":6277,"children":6279},{"class":244,"line":6278},199,[6280],{"type":62,"tag":242,"props":6281,"children":6282},{"style":249},[6283],{"type":68,"value":6284},"          \u002F\u002F is exactly the contract, and what `Content-Range`'s total needs.\n",{"type":62,"tag":242,"props":6286,"children":6288},{"class":244,"line":6287},200,[6289,6293,6297,6301,6305,6309],{"type":62,"tag":242,"props":6290,"children":6291},{"style":271},[6292],{"type":68,"value":5483},{"type":62,"tag":242,"props":6294,"children":6295},{"style":1724},[6296],{"type":68,"value":5488},{"type":62,"tag":242,"props":6298,"children":6299},{"style":281},[6300],{"type":68,"value":411},{"type":62,"tag":242,"props":6302,"children":6303},{"style":1452},[6304],{"type":68,"value":4249},{"type":62,"tag":242,"props":6306,"children":6307},{"style":281},[6308],{"type":68,"value":2550},{"type":62,"tag":242,"props":6310,"children":6311},{"style":271},[6312],{"type":68,"value":314},{"type":62,"tag":242,"props":6314,"children":6316},{"class":244,"line":6315},201,[6317,6321,6325,6329],{"type":62,"tag":242,"props":6318,"children":6319},{"style":281},[6320],{"type":68,"value":6010},{"type":62,"tag":242,"props":6322,"children":6323},{"style":271},[6324],{"type":68,"value":304},{"type":62,"tag":242,"props":6326,"children":6327},{"style":1452},[6328],{"type":68,"value":5909},{"type":62,"tag":242,"props":6330,"children":6331},{"style":271},[6332],{"type":68,"value":314},{"type":62,"tag":242,"props":6334,"children":6336},{"class":244,"line":6335},202,[6337,6341,6345,6349,6353,6357],{"type":62,"tag":242,"props":6338,"children":6339},{"style":281},[6340],{"type":68,"value":5513},{"type":62,"tag":242,"props":6342,"children":6343},{"style":271},[6344],{"type":68,"value":304},{"type":62,"tag":242,"props":6346,"children":6347},{"style":1452},[6348],{"type":68,"value":4292},{"type":62,"tag":242,"props":6350,"children":6351},{"style":271},[6352],{"type":68,"value":174},{"type":62,"tag":242,"props":6354,"children":6355},{"style":1452},[6356],{"type":68,"value":1403},{"type":62,"tag":242,"props":6358,"children":6359},{"style":271},[6360],{"type":68,"value":314},{"type":62,"tag":242,"props":6362,"children":6364},{"class":244,"line":6363},203,[6365,6369,6373,6377,6381,6385,6389,6393,6397],{"type":62,"tag":242,"props":6366,"children":6367},{"style":1724},[6368],{"type":68,"value":5542},{"type":62,"tag":242,"props":6370,"children":6371},{"style":271},[6372],{"type":68,"value":304},{"type":62,"tag":242,"props":6374,"children":6375},{"style":271},[6376],{"type":68,"value":5551},{"type":62,"tag":242,"props":6378,"children":6379},{"style":259},[6380],{"type":68,"value":4180},{"type":62,"tag":242,"props":6382,"children":6383},{"style":1452},[6384],{"type":68,"value":4292},{"type":62,"tag":242,"props":6386,"children":6387},{"style":271},[6388],{"type":68,"value":174},{"type":62,"tag":242,"props":6390,"children":6391},{"style":1724},[6392],{"type":68,"value":5568},{"type":62,"tag":242,"props":6394,"children":6395},{"style":281},[6396],{"type":68,"value":4158},{"type":62,"tag":242,"props":6398,"children":6399},{"style":271},[6400],{"type":68,"value":314},{"type":62,"tag":242,"props":6402,"children":6404},{"class":244,"line":6403},204,[6405,6409,6413,6417,6421,6425,6429,6433,6437],{"type":62,"tag":242,"props":6406,"children":6407},{"style":1724},[6408],{"type":68,"value":5585},{"type":62,"tag":242,"props":6410,"children":6411},{"style":271},[6412],{"type":68,"value":304},{"type":62,"tag":242,"props":6414,"children":6415},{"style":271},[6416],{"type":68,"value":5551},{"type":62,"tag":242,"props":6418,"children":6419},{"style":259},[6420],{"type":68,"value":4180},{"type":62,"tag":242,"props":6422,"children":6423},{"style":1452},[6424],{"type":68,"value":4292},{"type":62,"tag":242,"props":6426,"children":6427},{"style":271},[6428],{"type":68,"value":174},{"type":62,"tag":242,"props":6430,"children":6431},{"style":1724},[6432],{"type":68,"value":68},{"type":62,"tag":242,"props":6434,"children":6435},{"style":281},[6436],{"type":68,"value":4158},{"type":62,"tag":242,"props":6438,"children":6439},{"style":271},[6440],{"type":68,"value":314},{"type":62,"tag":242,"props":6442,"children":6444},{"class":244,"line":6443},205,[6445],{"type":62,"tag":242,"props":6446,"children":6447},{"style":271},[6448],{"type":68,"value":3928},{"type":62,"tag":242,"props":6450,"children":6452},{"class":244,"line":6451},206,[6453],{"type":62,"tag":242,"props":6454,"children":6455},{"style":271},[6456],{"type":68,"value":4021},{"type":62,"tag":242,"props":6458,"children":6460},{"class":244,"line":6459},207,[6461,6466,6470,6474,6478,6482,6487,6491,6495,6499,6504,6508],{"type":62,"tag":242,"props":6462,"children":6463},{"style":1441},[6464],{"type":68,"value":6465},"      throw",{"type":62,"tag":242,"props":6467,"children":6468},{"style":271},[6469],{"type":68,"value":2274},{"type":62,"tag":242,"props":6471,"children":6472},{"style":1724},[6473],{"type":68,"value":3864},{"type":62,"tag":242,"props":6475,"children":6476},{"style":281},[6477],{"type":68,"value":411},{"type":62,"tag":242,"props":6479,"children":6480},{"style":271},[6481],{"type":68,"value":3906},{"type":62,"tag":242,"props":6483,"children":6484},{"style":1482},[6485],{"type":68,"value":6486},"R2 object ",{"type":62,"tag":242,"props":6488,"children":6489},{"style":271},[6490],{"type":68,"value":3887},{"type":62,"tag":242,"props":6492,"children":6493},{"style":1452},[6494],{"type":68,"value":416},{"type":62,"tag":242,"props":6496,"children":6497},{"style":271},[6498],{"type":68,"value":3896},{"type":62,"tag":242,"props":6500,"children":6501},{"style":1482},[6502],{"type":68,"value":6503}," changed under every ranged read.",{"type":62,"tag":242,"props":6505,"children":6506},{"style":271},[6507],{"type":68,"value":3906},{"type":62,"tag":242,"props":6509,"children":6510},{"style":281},[6511],{"type":68,"value":2217},{"type":62,"tag":242,"props":6513,"children":6515},{"class":244,"line":6514},208,[6516],{"type":62,"tag":242,"props":6517,"children":6518},{"style":271},[6519],{"type":68,"value":5275},{"type":62,"tag":242,"props":6521,"children":6523},{"class":244,"line":6522},209,[6524],{"type":62,"tag":242,"props":6525,"children":6526},{"emptyLinePlaceholder":649},[6527],{"type":68,"value":652},{"type":62,"tag":242,"props":6529,"children":6531},{"class":244,"line":6530},210,[6532,6536,6540,6544,6548,6552],{"type":62,"tag":242,"props":6533,"children":6534},{"style":259},[6535],{"type":68,"value":4728},{"type":62,"tag":242,"props":6537,"children":6538},{"style":281},[6539],{"type":68,"value":5805},{"type":62,"tag":242,"props":6541,"children":6542},{"style":271},[6543],{"type":68,"value":411},{"type":62,"tag":242,"props":6545,"children":6546},{"style":296},[6547],{"type":68,"value":416},{"type":62,"tag":242,"props":6549,"children":6550},{"style":271},[6551],{"type":68,"value":2550},{"type":62,"tag":242,"props":6553,"children":6554},{"style":271},[6555],{"type":68,"value":274},{"type":62,"tag":242,"props":6557,"children":6559},{"class":244,"line":6558},211,[6560,6564,6568,6572,6576,6580,6584,6588,6592,6596],{"type":62,"tag":242,"props":6561,"children":6562},{"style":259},[6563],{"type":68,"value":3674},{"type":62,"tag":242,"props":6565,"children":6566},{"style":1452},[6567],{"type":68,"value":4292},{"type":62,"tag":242,"props":6569,"children":6570},{"style":271},[6571],{"type":68,"value":1920},{"type":62,"tag":242,"props":6573,"children":6574},{"style":1441},[6575],{"type":68,"value":2104},{"type":62,"tag":242,"props":6577,"children":6578},{"style":1452},[6579],{"type":68,"value":3091},{"type":62,"tag":242,"props":6581,"children":6582},{"style":271},[6583],{"type":68,"value":174},{"type":62,"tag":242,"props":6585,"children":6586},{"style":1724},[6587],{"type":68,"value":1387},{"type":62,"tag":242,"props":6589,"children":6590},{"style":281},[6591],{"type":68,"value":411},{"type":62,"tag":242,"props":6593,"children":6594},{"style":1452},[6595],{"type":68,"value":416},{"type":62,"tag":242,"props":6597,"children":6598},{"style":281},[6599],{"type":68,"value":2217},{"type":62,"tag":242,"props":6601,"children":6603},{"class":244,"line":6602},212,[6604,6608,6612,6616,6620,6624,6628,6632,6636],{"type":62,"tag":242,"props":6605,"children":6606},{"style":1441},[6607],{"type":68,"value":5250},{"type":62,"tag":242,"props":6609,"children":6610},{"style":1452},[6611],{"type":68,"value":4292},{"type":62,"tag":242,"props":6613,"children":6614},{"style":271},[6615],{"type":68,"value":1948},{"type":62,"tag":242,"props":6617,"children":6618},{"style":1724},[6619],{"type":68,"value":4240},{"type":62,"tag":242,"props":6621,"children":6622},{"style":281},[6623],{"type":68,"value":411},{"type":62,"tag":242,"props":6625,"children":6626},{"style":1452},[6627],{"type":68,"value":4249},{"type":62,"tag":242,"props":6629,"children":6630},{"style":281},[6631],{"type":68,"value":2059},{"type":62,"tag":242,"props":6633,"children":6634},{"style":271},[6635],{"type":68,"value":304},{"type":62,"tag":242,"props":6637,"children":6638},{"style":271},[6639],{"type":68,"value":5461},{"type":62,"tag":242,"props":6641,"children":6643},{"class":244,"line":6642},213,[6644],{"type":62,"tag":242,"props":6645,"children":6646},{"style":271},[6647],{"type":68,"value":5275},{"type":62,"tag":242,"props":6649,"children":6651},{"class":244,"line":6650},214,[6652],{"type":62,"tag":242,"props":6653,"children":6654},{"emptyLinePlaceholder":649},[6655],{"type":68,"value":652},{"type":62,"tag":242,"props":6657,"children":6659},{"class":244,"line":6658},215,[6660,6664,6669,6673,6677,6681],{"type":62,"tag":242,"props":6661,"children":6662},{"style":259},[6663],{"type":68,"value":4728},{"type":62,"tag":242,"props":6665,"children":6666},{"style":281},[6667],{"type":68,"value":6668}," delete",{"type":62,"tag":242,"props":6670,"children":6671},{"style":271},[6672],{"type":68,"value":411},{"type":62,"tag":242,"props":6674,"children":6675},{"style":296},[6676],{"type":68,"value":416},{"type":62,"tag":242,"props":6678,"children":6679},{"style":271},[6680],{"type":68,"value":2550},{"type":62,"tag":242,"props":6682,"children":6683},{"style":271},[6684],{"type":68,"value":274},{"type":62,"tag":242,"props":6686,"children":6688},{"class":244,"line":6687},216,[6689,6693,6697,6701,6706,6710,6714],{"type":62,"tag":242,"props":6690,"children":6691},{"style":1441},[6692],{"type":68,"value":3532},{"type":62,"tag":242,"props":6694,"children":6695},{"style":1452},[6696],{"type":68,"value":3091},{"type":62,"tag":242,"props":6698,"children":6699},{"style":271},[6700],{"type":68,"value":174},{"type":62,"tag":242,"props":6702,"children":6703},{"style":1724},[6704],{"type":68,"value":6705},"delete",{"type":62,"tag":242,"props":6707,"children":6708},{"style":281},[6709],{"type":68,"value":411},{"type":62,"tag":242,"props":6711,"children":6712},{"style":1452},[6713],{"type":68,"value":416},{"type":62,"tag":242,"props":6715,"children":6716},{"style":281},[6717],{"type":68,"value":2217},{"type":62,"tag":242,"props":6719,"children":6721},{"class":244,"line":6720},217,[6722],{"type":62,"tag":242,"props":6723,"children":6724},{"style":271},[6725],{"type":68,"value":5275},{"type":62,"tag":242,"props":6727,"children":6729},{"class":244,"line":6728},218,[6730],{"type":62,"tag":242,"props":6731,"children":6732},{"emptyLinePlaceholder":649},[6733],{"type":68,"value":652},{"type":62,"tag":242,"props":6735,"children":6737},{"class":244,"line":6736},219,[6738,6742,6747,6751,6755,6759],{"type":62,"tag":242,"props":6739,"children":6740},{"style":259},[6741],{"type":68,"value":4728},{"type":62,"tag":242,"props":6743,"children":6744},{"style":281},[6745],{"type":68,"value":6746}," list",{"type":62,"tag":242,"props":6748,"children":6749},{"style":271},[6750],{"type":68,"value":411},{"type":62,"tag":242,"props":6752,"children":6753},{"style":296},[6754],{"type":68,"value":603},{"type":62,"tag":242,"props":6756,"children":6757},{"style":271},[6758],{"type":68,"value":2550},{"type":62,"tag":242,"props":6760,"children":6761},{"style":271},[6762],{"type":68,"value":274},{"type":62,"tag":242,"props":6764,"children":6766},{"class":244,"line":6765},220,[6767],{"type":62,"tag":242,"props":6768,"children":6769},{"style":249},[6770],{"type":68,"value":6771},"      \u002F\u002F R2 reads `limit: 0` as \"use the default\", so short-circuit it.\n",{"type":62,"tag":242,"props":6773,"children":6775},{"class":244,"line":6774},221,[6776,6780,6784,6788,6792,6796,6801,6805,6809],{"type":62,"tag":242,"props":6777,"children":6778},{"style":1441},[6779],{"type":68,"value":3752},{"type":62,"tag":242,"props":6781,"children":6782},{"style":281},[6783],{"type":68,"value":2039},{"type":62,"tag":242,"props":6785,"children":6786},{"style":1452},[6787],{"type":68,"value":603},{"type":62,"tag":242,"props":6789,"children":6790},{"style":271},[6791],{"type":68,"value":4442},{"type":62,"tag":242,"props":6793,"children":6794},{"style":1452},[6795],{"type":68,"value":2588},{"type":62,"tag":242,"props":6797,"children":6798},{"style":271},[6799],{"type":68,"value":6800}," ===",{"type":62,"tag":242,"props":6802,"children":6803},{"style":1607},[6804],{"type":68,"value":1943},{"type":62,"tag":242,"props":6806,"children":6807},{"style":281},[6808],{"type":68,"value":2059},{"type":62,"tag":242,"props":6810,"children":6811},{"style":271},[6812],{"type":68,"value":2064},{"type":62,"tag":242,"props":6814,"children":6816},{"class":244,"line":6815},222,[6817,6821,6825,6830,6834,6839],{"type":62,"tag":242,"props":6818,"children":6819},{"style":1441},[6820],{"type":68,"value":5470},{"type":62,"tag":242,"props":6822,"children":6823},{"style":271},[6824],{"type":68,"value":1449},{"type":62,"tag":242,"props":6826,"children":6827},{"style":281},[6828],{"type":68,"value":6829}," objects",{"type":62,"tag":242,"props":6831,"children":6832},{"style":271},[6833],{"type":68,"value":304},{"type":62,"tag":242,"props":6835,"children":6836},{"style":281},[6837],{"type":68,"value":6838}," [] ",{"type":62,"tag":242,"props":6840,"children":6841},{"style":271},[6842],{"type":68,"value":642},{"type":62,"tag":242,"props":6844,"children":6846},{"class":244,"line":6845},223,[6847],{"type":62,"tag":242,"props":6848,"children":6849},{"style":271},[6850],{"type":68,"value":4021},{"type":62,"tag":242,"props":6852,"children":6854},{"class":244,"line":6853},224,[6855,6859,6864,6868,6872,6876,6880,6885,6889],{"type":62,"tag":242,"props":6856,"children":6857},{"style":259},[6858],{"type":68,"value":3674},{"type":62,"tag":242,"props":6860,"children":6861},{"style":1452},[6862],{"type":68,"value":6863}," page",{"type":62,"tag":242,"props":6865,"children":6866},{"style":271},[6867],{"type":68,"value":1920},{"type":62,"tag":242,"props":6869,"children":6870},{"style":1441},[6871],{"type":68,"value":2104},{"type":62,"tag":242,"props":6873,"children":6874},{"style":1452},[6875],{"type":68,"value":3091},{"type":62,"tag":242,"props":6877,"children":6878},{"style":271},[6879],{"type":68,"value":174},{"type":62,"tag":242,"props":6881,"children":6882},{"style":1724},[6883],{"type":68,"value":6884},"list",{"type":62,"tag":242,"props":6886,"children":6887},{"style":281},[6888],{"type":68,"value":411},{"type":62,"tag":242,"props":6890,"children":6891},{"style":271},[6892],{"type":68,"value":2064},{"type":62,"tag":242,"props":6894,"children":6896},{"class":244,"line":6895},225,[6897,6901,6905,6909,6913,6918,6922,6926,6930,6934,6939,6943,6947,6951,6955,6959,6963,6967,6971],{"type":62,"tag":242,"props":6898,"children":6899},{"style":271},[6900],{"type":68,"value":4795},{"type":62,"tag":242,"props":6902,"children":6903},{"style":281},[6904],{"type":68,"value":411},{"type":62,"tag":242,"props":6906,"children":6907},{"style":1452},[6908],{"type":68,"value":603},{"type":62,"tag":242,"props":6910,"children":6911},{"style":271},[6912],{"type":68,"value":4442},{"type":62,"tag":242,"props":6914,"children":6915},{"style":1452},[6916],{"type":68,"value":6917},"prefix",{"type":62,"tag":242,"props":6919,"children":6920},{"style":271},[6921],{"type":68,"value":3047},{"type":62,"tag":242,"props":6923,"children":6924},{"style":271},[6925],{"type":68,"value":2985},{"type":62,"tag":242,"props":6927,"children":6928},{"style":271},[6929],{"type":68,"value":1948},{"type":62,"tag":242,"props":6931,"children":6932},{"style":271},[6933],{"type":68,"value":1449},{"type":62,"tag":242,"props":6935,"children":6936},{"style":281},[6937],{"type":68,"value":6938}," prefix",{"type":62,"tag":242,"props":6940,"children":6941},{"style":271},[6942],{"type":68,"value":304},{"type":62,"tag":242,"props":6944,"children":6945},{"style":1452},[6946],{"type":68,"value":434},{"type":62,"tag":242,"props":6948,"children":6949},{"style":271},[6950],{"type":68,"value":174},{"type":62,"tag":242,"props":6952,"children":6953},{"style":1452},[6954],{"type":68,"value":6917},{"type":62,"tag":242,"props":6956,"children":6957},{"style":271},[6958],{"type":68,"value":1469},{"type":62,"tag":242,"props":6960,"children":6961},{"style":271},[6962],{"type":68,"value":4578},{"type":62,"tag":242,"props":6964,"children":6965},{"style":271},[6966],{"type":68,"value":4508},{"type":62,"tag":242,"props":6968,"children":6969},{"style":281},[6970],{"type":68,"value":2550},{"type":62,"tag":242,"props":6972,"children":6973},{"style":271},[6974],{"type":68,"value":314},{"type":62,"tag":242,"props":6976,"children":6978},{"class":244,"line":6977},226,[6979,6983,6987,6991,6995,7000,7004,7008,7012,7016,7021,7025,7029,7033,7037,7041,7045,7049,7053],{"type":62,"tag":242,"props":6980,"children":6981},{"style":271},[6982],{"type":68,"value":4795},{"type":62,"tag":242,"props":6984,"children":6985},{"style":281},[6986],{"type":68,"value":411},{"type":62,"tag":242,"props":6988,"children":6989},{"style":1452},[6990],{"type":68,"value":603},{"type":62,"tag":242,"props":6992,"children":6993},{"style":271},[6994],{"type":68,"value":4442},{"type":62,"tag":242,"props":6996,"children":6997},{"style":1452},[6998],{"type":68,"value":6999},"cursor",{"type":62,"tag":242,"props":7001,"children":7002},{"style":271},[7003],{"type":68,"value":3047},{"type":62,"tag":242,"props":7005,"children":7006},{"style":271},[7007],{"type":68,"value":2985},{"type":62,"tag":242,"props":7009,"children":7010},{"style":271},[7011],{"type":68,"value":1948},{"type":62,"tag":242,"props":7013,"children":7014},{"style":271},[7015],{"type":68,"value":1449},{"type":62,"tag":242,"props":7017,"children":7018},{"style":281},[7019],{"type":68,"value":7020}," cursor",{"type":62,"tag":242,"props":7022,"children":7023},{"style":271},[7024],{"type":68,"value":304},{"type":62,"tag":242,"props":7026,"children":7027},{"style":1452},[7028],{"type":68,"value":434},{"type":62,"tag":242,"props":7030,"children":7031},{"style":271},[7032],{"type":68,"value":174},{"type":62,"tag":242,"props":7034,"children":7035},{"style":1452},[7036],{"type":68,"value":6999},{"type":62,"tag":242,"props":7038,"children":7039},{"style":271},[7040],{"type":68,"value":1469},{"type":62,"tag":242,"props":7042,"children":7043},{"style":271},[7044],{"type":68,"value":4578},{"type":62,"tag":242,"props":7046,"children":7047},{"style":271},[7048],{"type":68,"value":4508},{"type":62,"tag":242,"props":7050,"children":7051},{"style":281},[7052],{"type":68,"value":2550},{"type":62,"tag":242,"props":7054,"children":7055},{"style":271},[7056],{"type":68,"value":314},{"type":62,"tag":242,"props":7058,"children":7060},{"class":244,"line":7059},227,[7061,7065,7069,7073,7077,7081,7085,7089,7093,7097,7101,7105,7109,7113,7117,7121,7125,7129,7133],{"type":62,"tag":242,"props":7062,"children":7063},{"style":271},[7064],{"type":68,"value":4795},{"type":62,"tag":242,"props":7066,"children":7067},{"style":281},[7068],{"type":68,"value":411},{"type":62,"tag":242,"props":7070,"children":7071},{"style":1452},[7072],{"type":68,"value":603},{"type":62,"tag":242,"props":7074,"children":7075},{"style":271},[7076],{"type":68,"value":4442},{"type":62,"tag":242,"props":7078,"children":7079},{"style":1452},[7080],{"type":68,"value":2588},{"type":62,"tag":242,"props":7082,"children":7083},{"style":271},[7084],{"type":68,"value":3047},{"type":62,"tag":242,"props":7086,"children":7087},{"style":271},[7088],{"type":68,"value":2985},{"type":62,"tag":242,"props":7090,"children":7091},{"style":271},[7092],{"type":68,"value":1948},{"type":62,"tag":242,"props":7094,"children":7095},{"style":271},[7096],{"type":68,"value":1449},{"type":62,"tag":242,"props":7098,"children":7099},{"style":281},[7100],{"type":68,"value":2054},{"type":62,"tag":242,"props":7102,"children":7103},{"style":271},[7104],{"type":68,"value":304},{"type":62,"tag":242,"props":7106,"children":7107},{"style":1452},[7108],{"type":68,"value":434},{"type":62,"tag":242,"props":7110,"children":7111},{"style":271},[7112],{"type":68,"value":174},{"type":62,"tag":242,"props":7114,"children":7115},{"style":1452},[7116],{"type":68,"value":2588},{"type":62,"tag":242,"props":7118,"children":7119},{"style":271},[7120],{"type":68,"value":1469},{"type":62,"tag":242,"props":7122,"children":7123},{"style":271},[7124],{"type":68,"value":4578},{"type":62,"tag":242,"props":7126,"children":7127},{"style":271},[7128],{"type":68,"value":4508},{"type":62,"tag":242,"props":7130,"children":7131},{"style":281},[7132],{"type":68,"value":2550},{"type":62,"tag":242,"props":7134,"children":7135},{"style":271},[7136],{"type":68,"value":314},{"type":62,"tag":242,"props":7138,"children":7140},{"class":244,"line":7139},228,[7141],{"type":62,"tag":242,"props":7142,"children":7143},{"style":249},[7144],{"type":68,"value":7145},"        \u002F\u002F R2 omits httpMetadata\u002FcustomMetadata from list rows unless asked.\n",{"type":62,"tag":242,"props":7147,"children":7149},{"class":244,"line":7148},229,[7150,7155,7159,7163,7167,7171,7175,7179,7183,7187,7191,7196],{"type":62,"tag":242,"props":7151,"children":7152},{"style":281},[7153],{"type":68,"value":7154},"        include",{"type":62,"tag":242,"props":7156,"children":7157},{"style":271},[7158],{"type":68,"value":304},{"type":62,"tag":242,"props":7160,"children":7161},{"style":281},[7162],{"type":68,"value":1953},{"type":62,"tag":242,"props":7164,"children":7165},{"style":271},[7166],{"type":68,"value":6218},{"type":62,"tag":242,"props":7168,"children":7169},{"style":1482},[7170],{"type":68,"value":4437},{"type":62,"tag":242,"props":7172,"children":7173},{"style":271},[7174],{"type":68,"value":6218},{"type":62,"tag":242,"props":7176,"children":7177},{"style":271},[7178],{"type":68,"value":429},{"type":62,"tag":242,"props":7180,"children":7181},{"style":271},[7182],{"type":68,"value":1479},{"type":62,"tag":242,"props":7184,"children":7185},{"style":1482},[7186],{"type":68,"value":1326},{"type":62,"tag":242,"props":7188,"children":7189},{"style":271},[7190],{"type":68,"value":6218},{"type":62,"tag":242,"props":7192,"children":7193},{"style":281},[7194],{"type":68,"value":7195},"]",{"type":62,"tag":242,"props":7197,"children":7198},{"style":271},[7199],{"type":68,"value":314},{"type":62,"tag":242,"props":7201,"children":7203},{"class":244,"line":7202},230,[7204,7209],{"type":62,"tag":242,"props":7205,"children":7206},{"style":271},[7207],{"type":68,"value":7208},"      }",{"type":62,"tag":242,"props":7210,"children":7211},{"style":281},[7212],{"type":68,"value":2217},{"type":62,"tag":242,"props":7214,"children":7216},{"class":244,"line":7215},231,[7217,7221],{"type":62,"tag":242,"props":7218,"children":7219},{"style":1441},[7220],{"type":68,"value":5250},{"type":62,"tag":242,"props":7222,"children":7223},{"style":271},[7224],{"type":68,"value":274},{"type":62,"tag":242,"props":7226,"children":7228},{"class":244,"line":7227},232,[7229,7234,7238,7242,7246,7251,7255,7260,7264,7268,7272],{"type":62,"tag":242,"props":7230,"children":7231},{"style":281},[7232],{"type":68,"value":7233},"        objects",{"type":62,"tag":242,"props":7235,"children":7236},{"style":271},[7237],{"type":68,"value":304},{"type":62,"tag":242,"props":7239,"children":7240},{"style":1452},[7241],{"type":68,"value":6863},{"type":62,"tag":242,"props":7243,"children":7244},{"style":271},[7245],{"type":68,"value":174},{"type":62,"tag":242,"props":7247,"children":7248},{"style":1452},[7249],{"type":68,"value":7250},"objects",{"type":62,"tag":242,"props":7252,"children":7253},{"style":271},[7254],{"type":68,"value":174},{"type":62,"tag":242,"props":7256,"children":7257},{"style":1724},[7258],{"type":68,"value":7259},"map",{"type":62,"tag":242,"props":7261,"children":7262},{"style":281},[7263],{"type":68,"value":411},{"type":62,"tag":242,"props":7265,"children":7266},{"style":1452},[7267],{"type":68,"value":5488},{"type":62,"tag":242,"props":7269,"children":7270},{"style":281},[7271],{"type":68,"value":2550},{"type":62,"tag":242,"props":7273,"children":7274},{"style":271},[7275],{"type":68,"value":314},{"type":62,"tag":242,"props":7277,"children":7279},{"class":244,"line":7278},233,[7280,7284,7288,7293,7297,7302,7306,7310,7314,7318,7322,7326,7330,7334,7339,7343,7348,7352,7356,7360,7364],{"type":62,"tag":242,"props":7281,"children":7282},{"style":271},[7283],{"type":68,"value":4795},{"type":62,"tag":242,"props":7285,"children":7286},{"style":281},[7287],{"type":68,"value":411},{"type":62,"tag":242,"props":7289,"children":7290},{"style":1452},[7291],{"type":68,"value":7292},"page",{"type":62,"tag":242,"props":7294,"children":7295},{"style":271},[7296],{"type":68,"value":174},{"type":62,"tag":242,"props":7298,"children":7299},{"style":1452},[7300],{"type":68,"value":7301},"truncated",{"type":62,"tag":242,"props":7303,"children":7304},{"style":271},[7305],{"type":68,"value":1948},{"type":62,"tag":242,"props":7307,"children":7308},{"style":271},[7309],{"type":68,"value":1449},{"type":62,"tag":242,"props":7311,"children":7312},{"style":281},[7313],{"type":68,"value":7020},{"type":62,"tag":242,"props":7315,"children":7316},{"style":271},[7317],{"type":68,"value":304},{"type":62,"tag":242,"props":7319,"children":7320},{"style":1452},[7321],{"type":68,"value":6863},{"type":62,"tag":242,"props":7323,"children":7324},{"style":271},[7325],{"type":68,"value":174},{"type":62,"tag":242,"props":7327,"children":7328},{"style":1452},[7329],{"type":68,"value":6999},{"type":62,"tag":242,"props":7331,"children":7332},{"style":271},[7333],{"type":68,"value":429},{"type":62,"tag":242,"props":7335,"children":7336},{"style":281},[7337],{"type":68,"value":7338}," truncated",{"type":62,"tag":242,"props":7340,"children":7341},{"style":271},[7342],{"type":68,"value":304},{"type":62,"tag":242,"props":7344,"children":7345},{"style":2022},[7346],{"type":68,"value":7347}," true",{"type":62,"tag":242,"props":7349,"children":7350},{"style":271},[7351],{"type":68,"value":1469},{"type":62,"tag":242,"props":7353,"children":7354},{"style":271},[7355],{"type":68,"value":4578},{"type":62,"tag":242,"props":7357,"children":7358},{"style":271},[7359],{"type":68,"value":4508},{"type":62,"tag":242,"props":7361,"children":7362},{"style":281},[7363],{"type":68,"value":2550},{"type":62,"tag":242,"props":7365,"children":7366},{"style":271},[7367],{"type":68,"value":314},{"type":62,"tag":242,"props":7369,"children":7371},{"class":244,"line":7370},234,[7372],{"type":62,"tag":242,"props":7373,"children":7374},{"style":271},[7375],{"type":68,"value":4021},{"type":62,"tag":242,"props":7377,"children":7379},{"class":244,"line":7378},235,[7380],{"type":62,"tag":242,"props":7381,"children":7382},{"style":271},[7383],{"type":68,"value":5275},{"type":62,"tag":242,"props":7385,"children":7387},{"class":244,"line":7386},236,[7388,7392],{"type":62,"tag":242,"props":7389,"children":7390},{"style":271},[7391],{"type":68,"value":4109},{"type":62,"tag":242,"props":7393,"children":7394},{"style":281},[7395],{"type":68,"value":2217},{"type":62,"tag":242,"props":7397,"children":7399},{"class":244,"line":7398},237,[7400],{"type":62,"tag":242,"props":7401,"children":7402},{"style":271},[7403],{"type":68,"value":642},{"type":62,"tag":71,"props":7405,"children":7406},{},[7407],{"type":68,"value":7408},"Invariants that matter (asserted by the conformance testkit):",{"type":62,"tag":7410,"props":7411,"children":7412},"ul",{},[7413,7445,7461,7500,7547],{"type":62,"tag":7414,"props":7415,"children":7416},"li",{},[7417,7422,7423,7428,7430,7436,7438,7443],{"type":62,"tag":75,"props":7418,"children":7420},{"className":7419},[],[7421],{"type":68,"value":1379},{"type":68,"value":166},{"type":62,"tag":75,"props":7424,"children":7426},{"className":7425},[],[7427],{"type":68,"value":1387},{"type":68,"value":7429}," return ",{"type":62,"tag":75,"props":7431,"children":7433},{"className":7432},[],[7434],{"type":68,"value":7435},"null",{"type":68,"value":7437}," for a missing key; ",{"type":62,"tag":75,"props":7439,"children":7441},{"className":7440},[],[7442],{"type":68,"value":6705},{"type":68,"value":7444}," is a silent no-op.",{"type":62,"tag":7414,"props":7446,"children":7447},{},[7448,7453,7454,7459],{"type":62,"tag":75,"props":7449,"children":7451},{"className":7450},[],[7452],{"type":68,"value":988},{"type":68,"value":106},{"type":62,"tag":100,"props":7455,"children":7456},{},[7457],{"type":68,"value":7458},"overwrites",{"type":68,"value":7460}," an existing key.",{"type":62,"tag":7414,"props":7462,"children":7463},{},[7464,7469,7471,7476,7478,7483,7485,7490,7492,7498],{"type":62,"tag":75,"props":7465,"children":7467},{"className":7466},[],[7468],{"type":68,"value":988},{"type":68,"value":7470}," accepts a ",{"type":62,"tag":75,"props":7472,"children":7474},{"className":7473},[],[7475],{"type":68,"value":973},{"type":68,"value":7477}," body with ",{"type":62,"tag":100,"props":7479,"children":7480},{},[7481],{"type":68,"value":7482},"no declared length",{"type":68,"value":7484}," — the\nmiddleware streams URL-fetched artifacts as exactly that. This is where the\nnaive \"pass the body straight to ",{"type":62,"tag":75,"props":7486,"children":7488},{"className":7487},[],[7489],{"type":68,"value":1020},{"type":68,"value":7491},"\" recipe fails at runtime\n(workerd requires a known length), which is what ",{"type":62,"tag":75,"props":7493,"children":7495},{"className":7494},[],[7496],{"type":68,"value":7497},"putStream",{"type":68,"value":7499}," above handles.",{"type":62,"tag":7414,"props":7501,"children":7502},{},[7503,7508,7510,7516,7518,7523,7525,7530,7532,7537,7539,7545],{"type":62,"tag":75,"props":7504,"children":7506},{"className":7505},[],[7507],{"type":68,"value":1379},{"type":68,"value":7509}," honours ",{"type":62,"tag":75,"props":7511,"children":7513},{"className":7512},[],[7514],{"type":68,"value":7515},"options.range",{"type":68,"value":7517},": it returns ",{"type":62,"tag":100,"props":7519,"children":7520},{},[7521],{"type":68,"value":7522},"only",{"type":68,"value":7524}," that slice, reports it as\n",{"type":62,"tag":75,"props":7526,"children":7528},{"className":7527},[],[7529],{"type":68,"value":1253},{"type":68,"value":7531},", and keeps ",{"type":62,"tag":75,"props":7533,"children":7535},{"className":7534},[],[7536],{"type":68,"value":1304},{"type":68,"value":7538}," on the whole object. That is the ",{"type":62,"tag":75,"props":7540,"children":7542},{"className":7541},[],[7543],{"type":68,"value":7544},"206",{"type":68,"value":7546}," a video\nplayer's seeking depends on, and R2 slices in the bucket so the bytes never\ncross the Worker.",{"type":62,"tag":7414,"props":7548,"children":7549},{},[7550,7555,7557,7562,7564,7569,7571,7576,7578,7584,7586,7591,7593,7599],{"type":62,"tag":75,"props":7551,"children":7553},{"className":7552},[],[7554],{"type":68,"value":6884},{"type":68,"value":7556}," filters by ",{"type":62,"tag":75,"props":7558,"children":7560},{"className":7559},[],[7561],{"type":68,"value":6917},{"type":68,"value":7563}," literally (R2 prefix is a literal byte prefix — no\nglob), returns keys in ascending order, and pages via the opaque ",{"type":62,"tag":75,"props":7565,"children":7567},{"className":7566},[],[7568],{"type":68,"value":6999},{"type":68,"value":7570}," when\n",{"type":62,"tag":75,"props":7572,"children":7574},{"className":7573},[],[7575],{"type":68,"value":7301},{"type":68,"value":7577},". R2's own cursor is opaque and satisfies this directly. ",{"type":62,"tag":75,"props":7579,"children":7581},{"className":7580},[],[7582],{"type":68,"value":7583},"limit: 0",{"type":68,"value":7585},"\nmust yield an empty, untruncated page — R2 treats ",{"type":62,"tag":75,"props":7587,"children":7589},{"className":7588},[],[7590],{"type":68,"value":7583},{"type":68,"value":7592}," as \"use the\ndefault\", so special-case it: ",{"type":62,"tag":75,"props":7594,"children":7596},{"className":7595},[],[7597],{"type":68,"value":7598},"if (options?.limit === 0) return { objects: [] }",{"type":68,"value":174},{"type":62,"tag":196,"props":7601,"children":7603},{"id":7602},"_2-artifactstore-backed-by-d1",[7604],{"type":68,"value":7605},"2. ArtifactStore backed by D1",{"type":62,"tag":71,"props":7607,"children":7608},{},[7609,7614,7615,7621,7622,7627,7629,7635,7637,7643,7645,7650],{"type":62,"tag":75,"props":7610,"children":7612},{"className":7611},[],[7613],{"type":68,"value":128},{"type":68,"value":951},{"type":62,"tag":75,"props":7616,"children":7618},{"className":7617},[],[7619],{"type":68,"value":7620},"{ artifactId, runId, threadId, name, mimeType, size, sourceUrl?, createdAt }",{"type":68,"value":2039},{"type":62,"tag":75,"props":7623,"children":7625},{"className":7624},[],[7626],{"type":68,"value":1357},{"type":68,"value":7628}," epoch ms). One flat table, keyed by\n",{"type":62,"tag":75,"props":7630,"children":7632},{"className":7631},[],[7633],{"type":68,"value":7634},"artifact_id",{"type":68,"value":7636},", indexed by ",{"type":62,"tag":75,"props":7638,"children":7640},{"className":7639},[],[7641],{"type":68,"value":7642},"run_id",{"type":68,"value":7644}," for ",{"type":62,"tag":75,"props":7646,"children":7648},{"className":7647},[],[7649],{"type":68,"value":6884},{"type":68,"value":174},{"type":62,"tag":231,"props":7652,"children":7656},{"className":7653,"code":7654,"language":7655,"meta":236,"style":236},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","CREATE TABLE IF NOT EXISTS generation_artifacts (\n  artifact_id  text PRIMARY KEY NOT NULL,\n  run_id       text NOT NULL,\n  thread_id    text NOT NULL,\n  blob_key     text,\n  name         text NOT NULL,\n  mime_type    text NOT NULL,\n  size         integer NOT NULL,\n  source_url   text,\n  created_at   integer NOT NULL\n);\nCREATE INDEX IF NOT EXISTS generation_artifacts_run ON generation_artifacts (run_id);\n","sql",[7657],{"type":62,"tag":75,"props":7658,"children":7659},{"__ignoreMap":236},[7660,7668,7676,7684,7692,7700,7708,7716,7724,7732,7740,7748],{"type":62,"tag":242,"props":7661,"children":7662},{"class":244,"line":245},[7663],{"type":62,"tag":242,"props":7664,"children":7665},{},[7666],{"type":68,"value":7667},"CREATE TABLE IF NOT EXISTS generation_artifacts (\n",{"type":62,"tag":242,"props":7669,"children":7670},{"class":244,"line":255},[7671],{"type":62,"tag":242,"props":7672,"children":7673},{},[7674],{"type":68,"value":7675},"  artifact_id  text PRIMARY KEY NOT NULL,\n",{"type":62,"tag":242,"props":7677,"children":7678},{"class":244,"line":277},[7679],{"type":62,"tag":242,"props":7680,"children":7681},{},[7682],{"type":68,"value":7683},"  run_id       text NOT NULL,\n",{"type":62,"tag":242,"props":7685,"children":7686},{"class":244,"line":292},[7687],{"type":62,"tag":242,"props":7688,"children":7689},{},[7690],{"type":68,"value":7691},"  thread_id    text NOT NULL,\n",{"type":62,"tag":242,"props":7693,"children":7694},{"class":244,"line":317},[7695],{"type":62,"tag":242,"props":7696,"children":7697},{},[7698],{"type":68,"value":7699},"  blob_key     text,\n",{"type":62,"tag":242,"props":7701,"children":7702},{"class":244,"line":339},[7703],{"type":62,"tag":242,"props":7704,"children":7705},{},[7706],{"type":68,"value":7707},"  name         text NOT NULL,\n",{"type":62,"tag":242,"props":7709,"children":7710},{"class":244,"line":362},[7711],{"type":62,"tag":242,"props":7712,"children":7713},{},[7714],{"type":68,"value":7715},"  mime_type    text NOT NULL,\n",{"type":62,"tag":242,"props":7717,"children":7718},{"class":244,"line":391},[7719],{"type":62,"tag":242,"props":7720,"children":7721},{},[7722],{"type":68,"value":7723},"  size         integer NOT NULL,\n",{"type":62,"tag":242,"props":7725,"children":7726},{"class":244,"line":400},[7727],{"type":62,"tag":242,"props":7728,"children":7729},{},[7730],{"type":68,"value":7731},"  source_url   text,\n",{"type":62,"tag":242,"props":7733,"children":7734},{"class":244,"line":478},[7735],{"type":62,"tag":242,"props":7736,"children":7737},{},[7738],{"type":68,"value":7739},"  created_at   integer NOT NULL\n",{"type":62,"tag":242,"props":7741,"children":7742},{"class":244,"line":537},[7743],{"type":62,"tag":242,"props":7744,"children":7745},{},[7746],{"type":68,"value":7747},");\n",{"type":62,"tag":242,"props":7749,"children":7750},{"class":244,"line":588},[7751],{"type":62,"tag":242,"props":7752,"children":7753},{},[7754],{"type":68,"value":7755},"CREATE INDEX IF NOT EXISTS generation_artifacts_run ON generation_artifacts (run_id);\n",{"type":62,"tag":231,"props":7757,"children":7759},{"className":233,"code":7758,"language":235,"meta":1431,"style":236},"import { defineArtifactStore } from '@tanstack\u002Fai-persistence'\nimport type { ArtifactRecord } from '@tanstack\u002Fai-persistence'\n\ninterface ArtifactRow {\n  artifact_id: string\n  run_id: string\n  thread_id: string\n  blob_key: string | null\n  name: string\n  mime_type: string\n  size: number\n  source_url: string | null\n  created_at: number\n}\n\nfunction fromRow(row: ArtifactRow): ArtifactRecord {\n  return {\n    artifactId: row.artifact_id,\n    runId: row.run_id,\n    threadId: row.thread_id,\n    ...(row.blob_key != null ? { blobKey: row.blob_key } : {}),\n    name: row.name,\n    mimeType: row.mime_type,\n    size: row.size,\n    ...(row.source_url != null ? { sourceUrl: row.source_url } : {}),\n    createdAt: row.created_at,\n  }\n}\n\nexport function d1ArtifactStore(db: D1Database) {\n  return defineArtifactStore({\n    async save(record) {\n      \u002F\u002F Insert or overwrite (artifact ids are unique).\n      await db\n        .prepare(\n          `INSERT INTO generation_artifacts\n             (artifact_id, run_id, thread_id, blob_key, name, mime_type, size, source_url, created_at)\n           VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n           ON CONFLICT(artifact_id) DO UPDATE SET\n             run_id = excluded.run_id, thread_id = excluded.thread_id,\n             blob_key = excluded.blob_key, name = excluded.name,\n             mime_type = excluded.mime_type, size = excluded.size,\n             source_url = excluded.source_url, created_at = excluded.created_at`,\n        )\n        .bind(\n          record.artifactId,\n          record.runId,\n          record.threadId,\n          record.blobKey ?? null,\n          record.name,\n          record.mimeType,\n          record.size,\n          record.sourceUrl ?? null,\n          record.createdAt,\n        )\n        .run()\n    },\n\n    async get(artifactId) {\n      const row = await db\n        .prepare(`SELECT * FROM generation_artifacts WHERE artifact_id = ?`)\n        .bind(artifactId)\n        .first\u003CArtifactRow>()\n      return row ? fromRow(row) : null\n    },\n\n    async list(runId) {\n      const { results } = await db\n        .prepare(`SELECT * FROM generation_artifacts WHERE run_id = ?`)\n        .bind(runId)\n        .all\u003CArtifactRow>()\n      return results.map(fromRow)\n    },\n\n    async delete(artifactId) {\n      await db\n        .prepare(`DELETE FROM generation_artifacts WHERE artifact_id = ?`)\n        .bind(artifactId)\n        .run()\n    },\n\n    async deleteForRun(runId) {\n      await db\n        .prepare(`DELETE FROM generation_artifacts WHERE run_id = ?`)\n        .bind(runId)\n        .run()\n    },\n  })\n}\n",[7760],{"type":62,"tag":75,"props":7761,"children":7762},{"__ignoreMap":236},[7763,7799,7838,7845,7861,7878,7894,7910,7934,7950,7966,7983,8007,8023,8030,8037,8078,8089,8118,8146,8175,8257,8286,8315,8342,8423,8451,8458,8465,8472,8514,8533,8561,8569,8581,8598,8611,8619,8627,8635,8643,8651,8659,8675,8683,8699,8719,8738,8758,8784,8803,8823,8842,8866,8885,8892,8908,8915,8922,8949,8972,9004,9027,9055,9094,9101,9108,9135,9167,9199,9222,9250,9282,9289,9296,9323,9334,9366,9389,9404,9411,9418,9446,9457,9489,9512,9527,9534,9545],{"type":62,"tag":242,"props":7764,"children":7765},{"class":244,"line":245},[7766,7770,7774,7779,7783,7787,7791,7795],{"type":62,"tag":242,"props":7767,"children":7768},{"style":1441},[7769],{"type":68,"value":1444},{"type":62,"tag":242,"props":7771,"children":7772},{"style":271},[7773],{"type":68,"value":1449},{"type":62,"tag":242,"props":7775,"children":7776},{"style":1452},[7777],{"type":68,"value":7778}," defineArtifactStore",{"type":62,"tag":242,"props":7780,"children":7781},{"style":271},[7782],{"type":68,"value":1469},{"type":62,"tag":242,"props":7784,"children":7785},{"style":1441},[7786],{"type":68,"value":1474},{"type":62,"tag":242,"props":7788,"children":7789},{"style":271},[7790],{"type":68,"value":1479},{"type":62,"tag":242,"props":7792,"children":7793},{"style":1482},[7794],{"type":68,"value":212},{"type":62,"tag":242,"props":7796,"children":7797},{"style":271},[7798],{"type":68,"value":1489},{"type":62,"tag":242,"props":7800,"children":7801},{"class":244,"line":255},[7802,7806,7810,7814,7818,7822,7826,7830,7834],{"type":62,"tag":242,"props":7803,"children":7804},{"style":1441},[7805],{"type":68,"value":1444},{"type":62,"tag":242,"props":7807,"children":7808},{"style":1441},[7809],{"type":68,"value":1501},{"type":62,"tag":242,"props":7811,"children":7812},{"style":271},[7813],{"type":68,"value":1449},{"type":62,"tag":242,"props":7815,"children":7816},{"style":1452},[7817],{"type":68,"value":705},{"type":62,"tag":242,"props":7819,"children":7820},{"style":271},[7821],{"type":68,"value":1469},{"type":62,"tag":242,"props":7823,"children":7824},{"style":1441},[7825],{"type":68,"value":1474},{"type":62,"tag":242,"props":7827,"children":7828},{"style":271},[7829],{"type":68,"value":1479},{"type":62,"tag":242,"props":7831,"children":7832},{"style":1482},[7833],{"type":68,"value":212},{"type":62,"tag":242,"props":7835,"children":7836},{"style":271},[7837],{"type":68,"value":1489},{"type":62,"tag":242,"props":7839,"children":7840},{"class":244,"line":277},[7841],{"type":62,"tag":242,"props":7842,"children":7843},{"emptyLinePlaceholder":649},[7844],{"type":68,"value":652},{"type":62,"tag":242,"props":7846,"children":7847},{"class":244,"line":292},[7848,7852,7857],{"type":62,"tag":242,"props":7849,"children":7850},{"style":259},[7851],{"type":68,"value":262},{"type":62,"tag":242,"props":7853,"children":7854},{"style":265},[7855],{"type":68,"value":7856}," ArtifactRow",{"type":62,"tag":242,"props":7858,"children":7859},{"style":271},[7860],{"type":68,"value":274},{"type":62,"tag":242,"props":7862,"children":7863},{"class":244,"line":317},[7864,7869,7873],{"type":62,"tag":242,"props":7865,"children":7866},{"style":281},[7867],{"type":68,"value":7868},"  artifact_id",{"type":62,"tag":242,"props":7870,"children":7871},{"style":271},[7872],{"type":68,"value":304},{"type":62,"tag":242,"props":7874,"children":7875},{"style":265},[7876],{"type":68,"value":7877}," string\n",{"type":62,"tag":242,"props":7879,"children":7880},{"class":244,"line":339},[7881,7886,7890],{"type":62,"tag":242,"props":7882,"children":7883},{"style":281},[7884],{"type":68,"value":7885},"  run_id",{"type":62,"tag":242,"props":7887,"children":7888},{"style":271},[7889],{"type":68,"value":304},{"type":62,"tag":242,"props":7891,"children":7892},{"style":265},[7893],{"type":68,"value":7877},{"type":62,"tag":242,"props":7895,"children":7896},{"class":244,"line":362},[7897,7902,7906],{"type":62,"tag":242,"props":7898,"children":7899},{"style":281},[7900],{"type":68,"value":7901},"  thread_id",{"type":62,"tag":242,"props":7903,"children":7904},{"style":271},[7905],{"type":68,"value":304},{"type":62,"tag":242,"props":7907,"children":7908},{"style":265},[7909],{"type":68,"value":7877},{"type":62,"tag":242,"props":7911,"children":7912},{"class":244,"line":391},[7913,7918,7922,7926,7930],{"type":62,"tag":242,"props":7914,"children":7915},{"style":281},[7916],{"type":68,"value":7917},"  blob_key",{"type":62,"tag":242,"props":7919,"children":7920},{"style":271},[7921],{"type":68,"value":304},{"type":62,"tag":242,"props":7923,"children":7924},{"style":265},[7925],{"type":68,"value":309},{"type":62,"tag":242,"props":7927,"children":7928},{"style":271},[7929],{"type":68,"value":466},{"type":62,"tag":242,"props":7931,"children":7932},{"style":265},[7933],{"type":68,"value":5461},{"type":62,"tag":242,"props":7935,"children":7936},{"class":244,"line":400},[7937,7942,7946],{"type":62,"tag":242,"props":7938,"children":7939},{"style":281},[7940],{"type":68,"value":7941},"  name",{"type":62,"tag":242,"props":7943,"children":7944},{"style":271},[7945],{"type":68,"value":304},{"type":62,"tag":242,"props":7947,"children":7948},{"style":265},[7949],{"type":68,"value":7877},{"type":62,"tag":242,"props":7951,"children":7952},{"class":244,"line":478},[7953,7958,7962],{"type":62,"tag":242,"props":7954,"children":7955},{"style":281},[7956],{"type":68,"value":7957},"  mime_type",{"type":62,"tag":242,"props":7959,"children":7960},{"style":271},[7961],{"type":68,"value":304},{"type":62,"tag":242,"props":7963,"children":7964},{"style":265},[7965],{"type":68,"value":7877},{"type":62,"tag":242,"props":7967,"children":7968},{"class":244,"line":537},[7969,7974,7978],{"type":62,"tag":242,"props":7970,"children":7971},{"style":281},[7972],{"type":68,"value":7973},"  size",{"type":62,"tag":242,"props":7975,"children":7976},{"style":271},[7977],{"type":68,"value":304},{"type":62,"tag":242,"props":7979,"children":7980},{"style":265},[7981],{"type":68,"value":7982}," number\n",{"type":62,"tag":242,"props":7984,"children":7985},{"class":244,"line":588},[7986,7991,7995,7999,8003],{"type":62,"tag":242,"props":7987,"children":7988},{"style":281},[7989],{"type":68,"value":7990},"  source_url",{"type":62,"tag":242,"props":7992,"children":7993},{"style":271},[7994],{"type":68,"value":304},{"type":62,"tag":242,"props":7996,"children":7997},{"style":265},[7998],{"type":68,"value":309},{"type":62,"tag":242,"props":8000,"children":8001},{"style":271},[8002],{"type":68,"value":466},{"type":62,"tag":242,"props":8004,"children":8005},{"style":265},[8006],{"type":68,"value":5461},{"type":62,"tag":242,"props":8008,"children":8009},{"class":244,"line":636},[8010,8015,8019],{"type":62,"tag":242,"props":8011,"children":8012},{"style":281},[8013],{"type":68,"value":8014},"  created_at",{"type":62,"tag":242,"props":8016,"children":8017},{"style":271},[8018],{"type":68,"value":304},{"type":62,"tag":242,"props":8020,"children":8021},{"style":265},[8022],{"type":68,"value":7982},{"type":62,"tag":242,"props":8024,"children":8025},{"class":244,"line":645},[8026],{"type":62,"tag":242,"props":8027,"children":8028},{"style":271},[8029],{"type":68,"value":642},{"type":62,"tag":242,"props":8031,"children":8032},{"class":244,"line":655},[8033],{"type":62,"tag":242,"props":8034,"children":8035},{"emptyLinePlaceholder":649},[8036],{"type":68,"value":652},{"type":62,"tag":242,"props":8038,"children":8039},{"class":244,"line":664},[8040,8044,8049,8053,8058,8062,8066,8070,8074],{"type":62,"tag":242,"props":8041,"children":8042},{"style":259},[8043],{"type":68,"value":4235},{"type":62,"tag":242,"props":8045,"children":8046},{"style":1724},[8047],{"type":68,"value":8048}," fromRow",{"type":62,"tag":242,"props":8050,"children":8051},{"style":271},[8052],{"type":68,"value":411},{"type":62,"tag":242,"props":8054,"children":8055},{"style":296},[8056],{"type":68,"value":8057},"row",{"type":62,"tag":242,"props":8059,"children":8060},{"style":271},[8061],{"type":68,"value":304},{"type":62,"tag":242,"props":8063,"children":8064},{"style":265},[8065],{"type":68,"value":7856},{"type":62,"tag":242,"props":8067,"children":8068},{"style":271},[8069],{"type":68,"value":448},{"type":62,"tag":242,"props":8071,"children":8072},{"style":265},[8073],{"type":68,"value":705},{"type":62,"tag":242,"props":8075,"children":8076},{"style":271},[8077],{"type":68,"value":274},{"type":62,"tag":242,"props":8079,"children":8080},{"class":244,"line":681},[8081,8085],{"type":62,"tag":242,"props":8082,"children":8083},{"style":1441},[8084],{"type":68,"value":2633},{"type":62,"tag":242,"props":8086,"children":8087},{"style":271},[8088],{"type":68,"value":274},{"type":62,"tag":242,"props":8090,"children":8091},{"class":244,"line":733},[8092,8097,8101,8106,8110,8114],{"type":62,"tag":242,"props":8093,"children":8094},{"style":281},[8095],{"type":68,"value":8096},"    artifactId",{"type":62,"tag":242,"props":8098,"children":8099},{"style":271},[8100],{"type":68,"value":304},{"type":62,"tag":242,"props":8102,"children":8103},{"style":1452},[8104],{"type":68,"value":8105}," row",{"type":62,"tag":242,"props":8107,"children":8108},{"style":271},[8109],{"type":68,"value":174},{"type":62,"tag":242,"props":8111,"children":8112},{"style":1452},[8113],{"type":68,"value":7634},{"type":62,"tag":242,"props":8115,"children":8116},{"style":271},[8117],{"type":68,"value":314},{"type":62,"tag":242,"props":8119,"children":8120},{"class":244,"line":786},[8121,8126,8130,8134,8138,8142],{"type":62,"tag":242,"props":8122,"children":8123},{"style":281},[8124],{"type":68,"value":8125},"    runId",{"type":62,"tag":242,"props":8127,"children":8128},{"style":271},[8129],{"type":68,"value":304},{"type":62,"tag":242,"props":8131,"children":8132},{"style":1452},[8133],{"type":68,"value":8105},{"type":62,"tag":242,"props":8135,"children":8136},{"style":271},[8137],{"type":68,"value":174},{"type":62,"tag":242,"props":8139,"children":8140},{"style":1452},[8141],{"type":68,"value":7642},{"type":62,"tag":242,"props":8143,"children":8144},{"style":271},[8145],{"type":68,"value":314},{"type":62,"tag":242,"props":8147,"children":8148},{"class":244,"line":846},[8149,8154,8158,8162,8166,8171],{"type":62,"tag":242,"props":8150,"children":8151},{"style":281},[8152],{"type":68,"value":8153},"    threadId",{"type":62,"tag":242,"props":8155,"children":8156},{"style":271},[8157],{"type":68,"value":304},{"type":62,"tag":242,"props":8159,"children":8160},{"style":1452},[8161],{"type":68,"value":8105},{"type":62,"tag":242,"props":8163,"children":8164},{"style":271},[8165],{"type":68,"value":174},{"type":62,"tag":242,"props":8167,"children":8168},{"style":1452},[8169],{"type":68,"value":8170},"thread_id",{"type":62,"tag":242,"props":8172,"children":8173},{"style":271},[8174],{"type":68,"value":314},{"type":62,"tag":242,"props":8176,"children":8177},{"class":244,"line":890},[8178,8182,8186,8190,8194,8199,8204,8208,8212,8216,8221,8225,8229,8233,8237,8241,8245,8249,8253],{"type":62,"tag":242,"props":8179,"children":8180},{"style":271},[8181],{"type":68,"value":4420},{"type":62,"tag":242,"props":8183,"children":8184},{"style":281},[8185],{"type":68,"value":411},{"type":62,"tag":242,"props":8187,"children":8188},{"style":1452},[8189],{"type":68,"value":8057},{"type":62,"tag":242,"props":8191,"children":8192},{"style":271},[8193],{"type":68,"value":174},{"type":62,"tag":242,"props":8195,"children":8196},{"style":1452},[8197],{"type":68,"value":8198},"blob_key",{"type":62,"tag":242,"props":8200,"children":8201},{"style":271},[8202],{"type":68,"value":8203}," !=",{"type":62,"tag":242,"props":8205,"children":8206},{"style":271},[8207],{"type":68,"value":471},{"type":62,"tag":242,"props":8209,"children":8210},{"style":271},[8211],{"type":68,"value":1948},{"type":62,"tag":242,"props":8213,"children":8214},{"style":271},[8215],{"type":68,"value":1449},{"type":62,"tag":242,"props":8217,"children":8218},{"style":281},[8219],{"type":68,"value":8220}," blobKey",{"type":62,"tag":242,"props":8222,"children":8223},{"style":271},[8224],{"type":68,"value":304},{"type":62,"tag":242,"props":8226,"children":8227},{"style":1452},[8228],{"type":68,"value":8105},{"type":62,"tag":242,"props":8230,"children":8231},{"style":271},[8232],{"type":68,"value":174},{"type":62,"tag":242,"props":8234,"children":8235},{"style":1452},[8236],{"type":68,"value":8198},{"type":62,"tag":242,"props":8238,"children":8239},{"style":271},[8240],{"type":68,"value":1469},{"type":62,"tag":242,"props":8242,"children":8243},{"style":271},[8244],{"type":68,"value":4578},{"type":62,"tag":242,"props":8246,"children":8247},{"style":271},[8248],{"type":68,"value":4508},{"type":62,"tag":242,"props":8250,"children":8251},{"style":281},[8252],{"type":68,"value":2550},{"type":62,"tag":242,"props":8254,"children":8255},{"style":271},[8256],{"type":68,"value":314},{"type":62,"tag":242,"props":8258,"children":8259},{"class":244,"line":935},[8260,8265,8269,8273,8277,8282],{"type":62,"tag":242,"props":8261,"children":8262},{"style":281},[8263],{"type":68,"value":8264},"    name",{"type":62,"tag":242,"props":8266,"children":8267},{"style":271},[8268],{"type":68,"value":304},{"type":62,"tag":242,"props":8270,"children":8271},{"style":1452},[8272],{"type":68,"value":8105},{"type":62,"tag":242,"props":8274,"children":8275},{"style":271},[8276],{"type":68,"value":174},{"type":62,"tag":242,"props":8278,"children":8279},{"style":1452},[8280],{"type":68,"value":8281},"name",{"type":62,"tag":242,"props":8283,"children":8284},{"style":271},[8285],{"type":68,"value":314},{"type":62,"tag":242,"props":8287,"children":8288},{"class":244,"line":1786},[8289,8294,8298,8302,8306,8311],{"type":62,"tag":242,"props":8290,"children":8291},{"style":281},[8292],{"type":68,"value":8293},"    mimeType",{"type":62,"tag":242,"props":8295,"children":8296},{"style":271},[8297],{"type":68,"value":304},{"type":62,"tag":242,"props":8299,"children":8300},{"style":1452},[8301],{"type":68,"value":8105},{"type":62,"tag":242,"props":8303,"children":8304},{"style":271},[8305],{"type":68,"value":174},{"type":62,"tag":242,"props":8307,"children":8308},{"style":1452},[8309],{"type":68,"value":8310},"mime_type",{"type":62,"tag":242,"props":8312,"children":8313},{"style":271},[8314],{"type":68,"value":314},{"type":62,"tag":242,"props":8316,"children":8317},{"class":244,"line":1808},[8318,8322,8326,8330,8334,8338],{"type":62,"tag":242,"props":8319,"children":8320},{"style":281},[8321],{"type":68,"value":4362},{"type":62,"tag":242,"props":8323,"children":8324},{"style":271},[8325],{"type":68,"value":304},{"type":62,"tag":242,"props":8327,"children":8328},{"style":1452},[8329],{"type":68,"value":8105},{"type":62,"tag":242,"props":8331,"children":8332},{"style":271},[8333],{"type":68,"value":174},{"type":62,"tag":242,"props":8335,"children":8336},{"style":1452},[8337],{"type":68,"value":1304},{"type":62,"tag":242,"props":8339,"children":8340},{"style":271},[8341],{"type":68,"value":314},{"type":62,"tag":242,"props":8343,"children":8344},{"class":244,"line":1883},[8345,8349,8353,8357,8361,8366,8370,8374,8378,8382,8387,8391,8395,8399,8403,8407,8411,8415,8419],{"type":62,"tag":242,"props":8346,"children":8347},{"style":271},[8348],{"type":68,"value":4420},{"type":62,"tag":242,"props":8350,"children":8351},{"style":281},[8352],{"type":68,"value":411},{"type":62,"tag":242,"props":8354,"children":8355},{"style":1452},[8356],{"type":68,"value":8057},{"type":62,"tag":242,"props":8358,"children":8359},{"style":271},[8360],{"type":68,"value":174},{"type":62,"tag":242,"props":8362,"children":8363},{"style":1452},[8364],{"type":68,"value":8365},"source_url",{"type":62,"tag":242,"props":8367,"children":8368},{"style":271},[8369],{"type":68,"value":8203},{"type":62,"tag":242,"props":8371,"children":8372},{"style":271},[8373],{"type":68,"value":471},{"type":62,"tag":242,"props":8375,"children":8376},{"style":271},[8377],{"type":68,"value":1948},{"type":62,"tag":242,"props":8379,"children":8380},{"style":271},[8381],{"type":68,"value":1449},{"type":62,"tag":242,"props":8383,"children":8384},{"style":281},[8385],{"type":68,"value":8386}," sourceUrl",{"type":62,"tag":242,"props":8388,"children":8389},{"style":271},[8390],{"type":68,"value":304},{"type":62,"tag":242,"props":8392,"children":8393},{"style":1452},[8394],{"type":68,"value":8105},{"type":62,"tag":242,"props":8396,"children":8397},{"style":271},[8398],{"type":68,"value":174},{"type":62,"tag":242,"props":8400,"children":8401},{"style":1452},[8402],{"type":68,"value":8365},{"type":62,"tag":242,"props":8404,"children":8405},{"style":271},[8406],{"type":68,"value":1469},{"type":62,"tag":242,"props":8408,"children":8409},{"style":271},[8410],{"type":68,"value":4578},{"type":62,"tag":242,"props":8412,"children":8413},{"style":271},[8414],{"type":68,"value":4508},{"type":62,"tag":242,"props":8416,"children":8417},{"style":281},[8418],{"type":68,"value":2550},{"type":62,"tag":242,"props":8420,"children":8421},{"style":271},[8422],{"type":68,"value":314},{"type":62,"tag":242,"props":8424,"children":8425},{"class":244,"line":1975},[8426,8430,8434,8438,8442,8447],{"type":62,"tag":242,"props":8427,"children":8428},{"style":281},[8429],{"type":68,"value":4599},{"type":62,"tag":242,"props":8431,"children":8432},{"style":271},[8433],{"type":68,"value":304},{"type":62,"tag":242,"props":8435,"children":8436},{"style":1452},[8437],{"type":68,"value":8105},{"type":62,"tag":242,"props":8439,"children":8440},{"style":271},[8441],{"type":68,"value":174},{"type":62,"tag":242,"props":8443,"children":8444},{"style":1452},[8445],{"type":68,"value":8446},"created_at",{"type":62,"tag":242,"props":8448,"children":8449},{"style":271},[8450],{"type":68,"value":314},{"type":62,"tag":242,"props":8452,"children":8453},{"class":244,"line":2006},[8454],{"type":62,"tag":242,"props":8455,"children":8456},{"style":271},[8457],{"type":68,"value":2252},{"type":62,"tag":242,"props":8459,"children":8460},{"class":244,"line":2028},[8461],{"type":62,"tag":242,"props":8462,"children":8463},{"style":271},[8464],{"type":68,"value":642},{"type":62,"tag":242,"props":8466,"children":8467},{"class":244,"line":2067},[8468],{"type":62,"tag":242,"props":8469,"children":8470},{"emptyLinePlaceholder":649},[8471],{"type":68,"value":652},{"type":62,"tag":242,"props":8473,"children":8474},{"class":244,"line":2126},[8475,8479,8483,8488,8492,8497,8501,8506,8510],{"type":62,"tag":242,"props":8476,"children":8477},{"style":1441},[8478],{"type":68,"value":4665},{"type":62,"tag":242,"props":8480,"children":8481},{"style":259},[8482],{"type":68,"value":1721},{"type":62,"tag":242,"props":8484,"children":8485},{"style":1724},[8486],{"type":68,"value":8487}," d1ArtifactStore",{"type":62,"tag":242,"props":8489,"children":8490},{"style":271},[8491],{"type":68,"value":411},{"type":62,"tag":242,"props":8493,"children":8494},{"style":296},[8495],{"type":68,"value":8496},"db",{"type":62,"tag":242,"props":8498,"children":8499},{"style":271},[8500],{"type":68,"value":304},{"type":62,"tag":242,"props":8502,"children":8503},{"style":265},[8504],{"type":68,"value":8505}," D1Database",{"type":62,"tag":242,"props":8507,"children":8508},{"style":271},[8509],{"type":68,"value":2550},{"type":62,"tag":242,"props":8511,"children":8512},{"style":271},[8513],{"type":68,"value":274},{"type":62,"tag":242,"props":8515,"children":8516},{"class":244,"line":2152},[8517,8521,8525,8529],{"type":62,"tag":242,"props":8518,"children":8519},{"style":1441},[8520],{"type":68,"value":2633},{"type":62,"tag":242,"props":8522,"children":8523},{"style":1724},[8524],{"type":68,"value":7778},{"type":62,"tag":242,"props":8526,"children":8527},{"style":281},[8528],{"type":68,"value":411},{"type":62,"tag":242,"props":8530,"children":8531},{"style":271},[8532],{"type":68,"value":2064},{"type":62,"tag":242,"props":8534,"children":8535},{"class":244,"line":2170},[8536,8540,8545,8549,8553,8557],{"type":62,"tag":242,"props":8537,"children":8538},{"style":259},[8539],{"type":68,"value":4728},{"type":62,"tag":242,"props":8541,"children":8542},{"style":281},[8543],{"type":68,"value":8544}," save",{"type":62,"tag":242,"props":8546,"children":8547},{"style":271},[8548],{"type":68,"value":411},{"type":62,"tag":242,"props":8550,"children":8551},{"style":296},[8552],{"type":68,"value":696},{"type":62,"tag":242,"props":8554,"children":8555},{"style":271},[8556],{"type":68,"value":2550},{"type":62,"tag":242,"props":8558,"children":8559},{"style":271},[8560],{"type":68,"value":274},{"type":62,"tag":242,"props":8562,"children":8563},{"class":244,"line":2179},[8564],{"type":62,"tag":242,"props":8565,"children":8566},{"style":249},[8567],{"type":68,"value":8568},"      \u002F\u002F Insert or overwrite (artifact ids are unique).\n",{"type":62,"tag":242,"props":8570,"children":8571},{"class":244,"line":2188},[8572,8576],{"type":62,"tag":242,"props":8573,"children":8574},{"style":1441},[8575],{"type":68,"value":3532},{"type":62,"tag":242,"props":8577,"children":8578},{"style":1452},[8579],{"type":68,"value":8580}," db\n",{"type":62,"tag":242,"props":8582,"children":8583},{"class":244,"line":2220},[8584,8589,8594],{"type":62,"tag":242,"props":8585,"children":8586},{"style":271},[8587],{"type":68,"value":8588},"        .",{"type":62,"tag":242,"props":8590,"children":8591},{"style":1724},[8592],{"type":68,"value":8593},"prepare",{"type":62,"tag":242,"props":8595,"children":8596},{"style":281},[8597],{"type":68,"value":289},{"type":62,"tag":242,"props":8599,"children":8600},{"class":244,"line":2246},[8601,8606],{"type":62,"tag":242,"props":8602,"children":8603},{"style":271},[8604],{"type":68,"value":8605},"          `",{"type":62,"tag":242,"props":8607,"children":8608},{"style":1482},[8609],{"type":68,"value":8610},"INSERT INTO generation_artifacts\n",{"type":62,"tag":242,"props":8612,"children":8613},{"class":244,"line":2255},[8614],{"type":62,"tag":242,"props":8615,"children":8616},{"style":1482},[8617],{"type":68,"value":8618},"             (artifact_id, run_id, thread_id, blob_key, name, mime_type, size, source_url, created_at)\n",{"type":62,"tag":242,"props":8620,"children":8621},{"class":244,"line":2293},[8622],{"type":62,"tag":242,"props":8623,"children":8624},{"style":1482},[8625],{"type":68,"value":8626},"           VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n",{"type":62,"tag":242,"props":8628,"children":8629},{"class":244,"line":2315},[8630],{"type":62,"tag":242,"props":8631,"children":8632},{"style":1482},[8633],{"type":68,"value":8634},"           ON CONFLICT(artifact_id) DO UPDATE SET\n",{"type":62,"tag":242,"props":8636,"children":8637},{"class":244,"line":2354},[8638],{"type":62,"tag":242,"props":8639,"children":8640},{"style":1482},[8641],{"type":68,"value":8642},"             run_id = excluded.run_id, thread_id = excluded.thread_id,\n",{"type":62,"tag":242,"props":8644,"children":8645},{"class":244,"line":2393},[8646],{"type":62,"tag":242,"props":8647,"children":8648},{"style":1482},[8649],{"type":68,"value":8650},"             blob_key = excluded.blob_key, name = excluded.name,\n",{"type":62,"tag":242,"props":8652,"children":8653},{"class":244,"line":2418},[8654],{"type":62,"tag":242,"props":8655,"children":8656},{"style":1482},[8657],{"type":68,"value":8658},"             mime_type = excluded.mime_type, size = excluded.size,\n",{"type":62,"tag":242,"props":8660,"children":8661},{"class":244,"line":2426},[8662,8667,8671],{"type":62,"tag":242,"props":8663,"children":8664},{"style":1482},[8665],{"type":68,"value":8666},"             source_url = excluded.source_url, created_at = excluded.created_at",{"type":62,"tag":242,"props":8668,"children":8669},{"style":271},[8670],{"type":68,"value":3906},{"type":62,"tag":242,"props":8672,"children":8673},{"style":271},[8674],{"type":68,"value":314},{"type":62,"tag":242,"props":8676,"children":8677},{"class":244,"line":2435},[8678],{"type":62,"tag":242,"props":8679,"children":8680},{"style":281},[8681],{"type":68,"value":8682},"        )\n",{"type":62,"tag":242,"props":8684,"children":8685},{"class":244,"line":2444},[8686,8690,8695],{"type":62,"tag":242,"props":8687,"children":8688},{"style":271},[8689],{"type":68,"value":8588},{"type":62,"tag":242,"props":8691,"children":8692},{"style":1724},[8693],{"type":68,"value":8694},"bind",{"type":62,"tag":242,"props":8696,"children":8697},{"style":281},[8698],{"type":68,"value":289},{"type":62,"tag":242,"props":8700,"children":8701},{"class":244,"line":2492},[8702,8707,8711,8715],{"type":62,"tag":242,"props":8703,"children":8704},{"style":1452},[8705],{"type":68,"value":8706},"          record",{"type":62,"tag":242,"props":8708,"children":8709},{"style":271},[8710],{"type":68,"value":174},{"type":62,"tag":242,"props":8712,"children":8713},{"style":1452},[8714],{"type":68,"value":747},{"type":62,"tag":242,"props":8716,"children":8717},{"style":271},[8718],{"type":68,"value":314},{"type":62,"tag":242,"props":8720,"children":8721},{"class":244,"line":2505},[8722,8726,8730,8734],{"type":62,"tag":242,"props":8723,"children":8724},{"style":1452},[8725],{"type":68,"value":8706},{"type":62,"tag":242,"props":8727,"children":8728},{"style":271},[8729],{"type":68,"value":174},{"type":62,"tag":242,"props":8731,"children":8732},{"style":1452},[8733],{"type":68,"value":800},{"type":62,"tag":242,"props":8735,"children":8736},{"style":271},[8737],{"type":68,"value":314},{"type":62,"tag":242,"props":8739,"children":8740},{"class":244,"line":2557},[8741,8745,8749,8754],{"type":62,"tag":242,"props":8742,"children":8743},{"style":1452},[8744],{"type":68,"value":8706},{"type":62,"tag":242,"props":8746,"children":8747},{"style":271},[8748],{"type":68,"value":174},{"type":62,"tag":242,"props":8750,"children":8751},{"style":1452},[8752],{"type":68,"value":8753},"threadId",{"type":62,"tag":242,"props":8755,"children":8756},{"style":271},[8757],{"type":68,"value":314},{"type":62,"tag":242,"props":8759,"children":8760},{"class":244,"line":2599},[8761,8765,8769,8774,8779],{"type":62,"tag":242,"props":8762,"children":8763},{"style":1452},[8764],{"type":68,"value":8706},{"type":62,"tag":242,"props":8766,"children":8767},{"style":271},[8768],{"type":68,"value":174},{"type":62,"tag":242,"props":8770,"children":8771},{"style":1452},[8772],{"type":68,"value":8773},"blobKey",{"type":62,"tag":242,"props":8775,"children":8776},{"style":271},[8777],{"type":68,"value":8778}," ??",{"type":62,"tag":242,"props":8780,"children":8781},{"style":271},[8782],{"type":68,"value":8783}," null,\n",{"type":62,"tag":242,"props":8785,"children":8786},{"class":244,"line":2611},[8787,8791,8795,8799],{"type":62,"tag":242,"props":8788,"children":8789},{"style":1452},[8790],{"type":68,"value":8706},{"type":62,"tag":242,"props":8792,"children":8793},{"style":271},[8794],{"type":68,"value":174},{"type":62,"tag":242,"props":8796,"children":8797},{"style":1452},[8798],{"type":68,"value":8281},{"type":62,"tag":242,"props":8800,"children":8801},{"style":271},[8802],{"type":68,"value":314},{"type":62,"tag":242,"props":8804,"children":8805},{"class":244,"line":2619},[8806,8810,8814,8819],{"type":62,"tag":242,"props":8807,"children":8808},{"style":1452},[8809],{"type":68,"value":8706},{"type":62,"tag":242,"props":8811,"children":8812},{"style":271},[8813],{"type":68,"value":174},{"type":62,"tag":242,"props":8815,"children":8816},{"style":1452},[8817],{"type":68,"value":8818},"mimeType",{"type":62,"tag":242,"props":8820,"children":8821},{"style":271},[8822],{"type":68,"value":314},{"type":62,"tag":242,"props":8824,"children":8825},{"class":244,"line":2627},[8826,8830,8834,8838],{"type":62,"tag":242,"props":8827,"children":8828},{"style":1452},[8829],{"type":68,"value":8706},{"type":62,"tag":242,"props":8831,"children":8832},{"style":271},[8833],{"type":68,"value":174},{"type":62,"tag":242,"props":8835,"children":8836},{"style":1452},[8837],{"type":68,"value":1304},{"type":62,"tag":242,"props":8839,"children":8840},{"style":271},[8841],{"type":68,"value":314},{"type":62,"tag":242,"props":8843,"children":8844},{"class":244,"line":2697},[8845,8849,8853,8858,8862],{"type":62,"tag":242,"props":8846,"children":8847},{"style":1452},[8848],{"type":68,"value":8706},{"type":62,"tag":242,"props":8850,"children":8851},{"style":271},[8852],{"type":68,"value":174},{"type":62,"tag":242,"props":8854,"children":8855},{"style":1452},[8856],{"type":68,"value":8857},"sourceUrl",{"type":62,"tag":242,"props":8859,"children":8860},{"style":271},[8861],{"type":68,"value":8778},{"type":62,"tag":242,"props":8863,"children":8864},{"style":271},[8865],{"type":68,"value":8783},{"type":62,"tag":242,"props":8867,"children":8868},{"class":244,"line":2705},[8869,8873,8877,8881],{"type":62,"tag":242,"props":8870,"children":8871},{"style":1452},[8872],{"type":68,"value":8706},{"type":62,"tag":242,"props":8874,"children":8875},{"style":271},[8876],{"type":68,"value":174},{"type":62,"tag":242,"props":8878,"children":8879},{"style":1452},[8880],{"type":68,"value":1357},{"type":62,"tag":242,"props":8882,"children":8883},{"style":271},[8884],{"type":68,"value":314},{"type":62,"tag":242,"props":8886,"children":8887},{"class":244,"line":2713},[8888],{"type":62,"tag":242,"props":8889,"children":8890},{"style":281},[8891],{"type":68,"value":8682},{"type":62,"tag":242,"props":8893,"children":8894},{"class":244,"line":2722},[8895,8899,8904],{"type":62,"tag":242,"props":8896,"children":8897},{"style":271},[8898],{"type":68,"value":8588},{"type":62,"tag":242,"props":8900,"children":8901},{"style":1724},[8902],{"type":68,"value":8903},"run",{"type":62,"tag":242,"props":8905,"children":8906},{"style":281},[8907],{"type":68,"value":2123},{"type":62,"tag":242,"props":8909,"children":8910},{"class":244,"line":2731},[8911],{"type":62,"tag":242,"props":8912,"children":8913},{"style":271},[8914],{"type":68,"value":5275},{"type":62,"tag":242,"props":8916,"children":8917},{"class":244,"line":2777},[8918],{"type":62,"tag":242,"props":8919,"children":8920},{"emptyLinePlaceholder":649},[8921],{"type":68,"value":652},{"type":62,"tag":242,"props":8923,"children":8924},{"class":244,"line":2785},[8925,8929,8933,8937,8941,8945],{"type":62,"tag":242,"props":8926,"children":8927},{"style":259},[8928],{"type":68,"value":4728},{"type":62,"tag":242,"props":8930,"children":8931},{"style":281},[8932],{"type":68,"value":5296},{"type":62,"tag":242,"props":8934,"children":8935},{"style":271},[8936],{"type":68,"value":411},{"type":62,"tag":242,"props":8938,"children":8939},{"style":296},[8940],{"type":68,"value":747},{"type":62,"tag":242,"props":8942,"children":8943},{"style":271},[8944],{"type":68,"value":2550},{"type":62,"tag":242,"props":8946,"children":8947},{"style":271},[8948],{"type":68,"value":274},{"type":62,"tag":242,"props":8950,"children":8951},{"class":244,"line":2793},[8952,8956,8960,8964,8968],{"type":62,"tag":242,"props":8953,"children":8954},{"style":259},[8955],{"type":68,"value":3674},{"type":62,"tag":242,"props":8957,"children":8958},{"style":1452},[8959],{"type":68,"value":8105},{"type":62,"tag":242,"props":8961,"children":8962},{"style":271},[8963],{"type":68,"value":1920},{"type":62,"tag":242,"props":8965,"children":8966},{"style":1441},[8967],{"type":68,"value":2104},{"type":62,"tag":242,"props":8969,"children":8970},{"style":1452},[8971],{"type":68,"value":8580},{"type":62,"tag":242,"props":8973,"children":8974},{"class":244,"line":2802},[8975,8979,8983,8987,8991,8996,9000],{"type":62,"tag":242,"props":8976,"children":8977},{"style":271},[8978],{"type":68,"value":8588},{"type":62,"tag":242,"props":8980,"children":8981},{"style":1724},[8982],{"type":68,"value":8593},{"type":62,"tag":242,"props":8984,"children":8985},{"style":281},[8986],{"type":68,"value":411},{"type":62,"tag":242,"props":8988,"children":8989},{"style":271},[8990],{"type":68,"value":3906},{"type":62,"tag":242,"props":8992,"children":8993},{"style":1482},[8994],{"type":68,"value":8995},"SELECT * FROM generation_artifacts WHERE artifact_id = ?",{"type":62,"tag":242,"props":8997,"children":8998},{"style":271},[8999],{"type":68,"value":3906},{"type":62,"tag":242,"props":9001,"children":9002},{"style":281},[9003],{"type":68,"value":2217},{"type":62,"tag":242,"props":9005,"children":9006},{"class":244,"line":2811},[9007,9011,9015,9019,9023],{"type":62,"tag":242,"props":9008,"children":9009},{"style":271},[9010],{"type":68,"value":8588},{"type":62,"tag":242,"props":9012,"children":9013},{"style":1724},[9014],{"type":68,"value":8694},{"type":62,"tag":242,"props":9016,"children":9017},{"style":281},[9018],{"type":68,"value":411},{"type":62,"tag":242,"props":9020,"children":9021},{"style":1452},[9022],{"type":68,"value":747},{"type":62,"tag":242,"props":9024,"children":9025},{"style":281},[9026],{"type":68,"value":2217},{"type":62,"tag":242,"props":9028,"children":9029},{"class":244,"line":2820},[9030,9034,9038,9042,9047,9051],{"type":62,"tag":242,"props":9031,"children":9032},{"style":271},[9033],{"type":68,"value":8588},{"type":62,"tag":242,"props":9035,"children":9036},{"style":1724},[9037],{"type":68,"value":3323},{"type":62,"tag":242,"props":9039,"children":9040},{"style":271},[9041],{"type":68,"value":378},{"type":62,"tag":242,"props":9043,"children":9044},{"style":265},[9045],{"type":68,"value":9046},"ArtifactRow",{"type":62,"tag":242,"props":9048,"children":9049},{"style":271},[9050],{"type":68,"value":529},{"type":62,"tag":242,"props":9052,"children":9053},{"style":281},[9054],{"type":68,"value":2123},{"type":62,"tag":242,"props":9056,"children":9057},{"class":244,"line":2829},[9058,9062,9066,9070,9074,9078,9082,9086,9090],{"type":62,"tag":242,"props":9059,"children":9060},{"style":1441},[9061],{"type":68,"value":5250},{"type":62,"tag":242,"props":9063,"children":9064},{"style":1452},[9065],{"type":68,"value":8105},{"type":62,"tag":242,"props":9067,"children":9068},{"style":271},[9069],{"type":68,"value":1948},{"type":62,"tag":242,"props":9071,"children":9072},{"style":1724},[9073],{"type":68,"value":8048},{"type":62,"tag":242,"props":9075,"children":9076},{"style":281},[9077],{"type":68,"value":411},{"type":62,"tag":242,"props":9079,"children":9080},{"style":1452},[9081],{"type":68,"value":8057},{"type":62,"tag":242,"props":9083,"children":9084},{"style":281},[9085],{"type":68,"value":2059},{"type":62,"tag":242,"props":9087,"children":9088},{"style":271},[9089],{"type":68,"value":304},{"type":62,"tag":242,"props":9091,"children":9092},{"style":271},[9093],{"type":68,"value":5461},{"type":62,"tag":242,"props":9095,"children":9096},{"class":244,"line":2838},[9097],{"type":62,"tag":242,"props":9098,"children":9099},{"style":271},[9100],{"type":68,"value":5275},{"type":62,"tag":242,"props":9102,"children":9103},{"class":244,"line":2846},[9104],{"type":62,"tag":242,"props":9105,"children":9106},{"emptyLinePlaceholder":649},[9107],{"type":68,"value":652},{"type":62,"tag":242,"props":9109,"children":9110},{"class":244,"line":2867},[9111,9115,9119,9123,9127,9131],{"type":62,"tag":242,"props":9112,"children":9113},{"style":259},[9114],{"type":68,"value":4728},{"type":62,"tag":242,"props":9116,"children":9117},{"style":281},[9118],{"type":68,"value":6746},{"type":62,"tag":242,"props":9120,"children":9121},{"style":271},[9122],{"type":68,"value":411},{"type":62,"tag":242,"props":9124,"children":9125},{"style":296},[9126],{"type":68,"value":800},{"type":62,"tag":242,"props":9128,"children":9129},{"style":271},[9130],{"type":68,"value":2550},{"type":62,"tag":242,"props":9132,"children":9133},{"style":271},[9134],{"type":68,"value":274},{"type":62,"tag":242,"props":9136,"children":9137},{"class":244,"line":2889},[9138,9142,9146,9151,9155,9159,9163],{"type":62,"tag":242,"props":9139,"children":9140},{"style":259},[9141],{"type":68,"value":3674},{"type":62,"tag":242,"props":9143,"children":9144},{"style":271},[9145],{"type":68,"value":1449},{"type":62,"tag":242,"props":9147,"children":9148},{"style":1452},[9149],{"type":68,"value":9150}," results",{"type":62,"tag":242,"props":9152,"children":9153},{"style":271},[9154],{"type":68,"value":1469},{"type":62,"tag":242,"props":9156,"children":9157},{"style":271},[9158],{"type":68,"value":1920},{"type":62,"tag":242,"props":9160,"children":9161},{"style":1441},[9162],{"type":68,"value":2104},{"type":62,"tag":242,"props":9164,"children":9165},{"style":1452},[9166],{"type":68,"value":8580},{"type":62,"tag":242,"props":9168,"children":9169},{"class":244,"line":2910},[9170,9174,9178,9182,9186,9191,9195],{"type":62,"tag":242,"props":9171,"children":9172},{"style":271},[9173],{"type":68,"value":8588},{"type":62,"tag":242,"props":9175,"children":9176},{"style":1724},[9177],{"type":68,"value":8593},{"type":62,"tag":242,"props":9179,"children":9180},{"style":281},[9181],{"type":68,"value":411},{"type":62,"tag":242,"props":9183,"children":9184},{"style":271},[9185],{"type":68,"value":3906},{"type":62,"tag":242,"props":9187,"children":9188},{"style":1482},[9189],{"type":68,"value":9190},"SELECT * FROM generation_artifacts WHERE run_id = ?",{"type":62,"tag":242,"props":9192,"children":9193},{"style":271},[9194],{"type":68,"value":3906},{"type":62,"tag":242,"props":9196,"children":9197},{"style":281},[9198],{"type":68,"value":2217},{"type":62,"tag":242,"props":9200,"children":9201},{"class":244,"line":2940},[9202,9206,9210,9214,9218],{"type":62,"tag":242,"props":9203,"children":9204},{"style":271},[9205],{"type":68,"value":8588},{"type":62,"tag":242,"props":9207,"children":9208},{"style":1724},[9209],{"type":68,"value":8694},{"type":62,"tag":242,"props":9211,"children":9212},{"style":281},[9213],{"type":68,"value":411},{"type":62,"tag":242,"props":9215,"children":9216},{"style":1452},[9217],{"type":68,"value":800},{"type":62,"tag":242,"props":9219,"children":9220},{"style":281},[9221],{"type":68,"value":2217},{"type":62,"tag":242,"props":9223,"children":9224},{"class":244,"line":2962},[9225,9229,9234,9238,9242,9246],{"type":62,"tag":242,"props":9226,"children":9227},{"style":271},[9228],{"type":68,"value":8588},{"type":62,"tag":242,"props":9230,"children":9231},{"style":1724},[9232],{"type":68,"value":9233},"all",{"type":62,"tag":242,"props":9235,"children":9236},{"style":271},[9237],{"type":68,"value":378},{"type":62,"tag":242,"props":9239,"children":9240},{"style":265},[9241],{"type":68,"value":9046},{"type":62,"tag":242,"props":9243,"children":9244},{"style":271},[9245],{"type":68,"value":529},{"type":62,"tag":242,"props":9247,"children":9248},{"style":281},[9249],{"type":68,"value":2123},{"type":62,"tag":242,"props":9251,"children":9252},{"class":244,"line":2992},[9253,9257,9261,9265,9269,9273,9278],{"type":62,"tag":242,"props":9254,"children":9255},{"style":1441},[9256],{"type":68,"value":5250},{"type":62,"tag":242,"props":9258,"children":9259},{"style":1452},[9260],{"type":68,"value":9150},{"type":62,"tag":242,"props":9262,"children":9263},{"style":271},[9264],{"type":68,"value":174},{"type":62,"tag":242,"props":9266,"children":9267},{"style":1724},[9268],{"type":68,"value":7259},{"type":62,"tag":242,"props":9270,"children":9271},{"style":281},[9272],{"type":68,"value":411},{"type":62,"tag":242,"props":9274,"children":9275},{"style":1452},[9276],{"type":68,"value":9277},"fromRow",{"type":62,"tag":242,"props":9279,"children":9280},{"style":281},[9281],{"type":68,"value":2217},{"type":62,"tag":242,"props":9283,"children":9284},{"class":244,"line":3028},[9285],{"type":62,"tag":242,"props":9286,"children":9287},{"style":271},[9288],{"type":68,"value":5275},{"type":62,"tag":242,"props":9290,"children":9291},{"class":244,"line":3081},[9292],{"type":62,"tag":242,"props":9293,"children":9294},{"emptyLinePlaceholder":649},[9295],{"type":68,"value":652},{"type":62,"tag":242,"props":9297,"children":9298},{"class":244,"line":3106},[9299,9303,9307,9311,9315,9319],{"type":62,"tag":242,"props":9300,"children":9301},{"style":259},[9302],{"type":68,"value":4728},{"type":62,"tag":242,"props":9304,"children":9305},{"style":281},[9306],{"type":68,"value":6668},{"type":62,"tag":242,"props":9308,"children":9309},{"style":271},[9310],{"type":68,"value":411},{"type":62,"tag":242,"props":9312,"children":9313},{"style":296},[9314],{"type":68,"value":747},{"type":62,"tag":242,"props":9316,"children":9317},{"style":271},[9318],{"type":68,"value":2550},{"type":62,"tag":242,"props":9320,"children":9321},{"style":271},[9322],{"type":68,"value":274},{"type":62,"tag":242,"props":9324,"children":9325},{"class":244,"line":3119},[9326,9330],{"type":62,"tag":242,"props":9327,"children":9328},{"style":1441},[9329],{"type":68,"value":3532},{"type":62,"tag":242,"props":9331,"children":9332},{"style":1452},[9333],{"type":68,"value":8580},{"type":62,"tag":242,"props":9335,"children":9336},{"class":244,"line":3168},[9337,9341,9345,9349,9353,9358,9362],{"type":62,"tag":242,"props":9338,"children":9339},{"style":271},[9340],{"type":68,"value":8588},{"type":62,"tag":242,"props":9342,"children":9343},{"style":1724},[9344],{"type":68,"value":8593},{"type":62,"tag":242,"props":9346,"children":9347},{"style":281},[9348],{"type":68,"value":411},{"type":62,"tag":242,"props":9350,"children":9351},{"style":271},[9352],{"type":68,"value":3906},{"type":62,"tag":242,"props":9354,"children":9355},{"style":1482},[9356],{"type":68,"value":9357},"DELETE FROM generation_artifacts WHERE artifact_id = ?",{"type":62,"tag":242,"props":9359,"children":9360},{"style":271},[9361],{"type":68,"value":3906},{"type":62,"tag":242,"props":9363,"children":9364},{"style":281},[9365],{"type":68,"value":2217},{"type":62,"tag":242,"props":9367,"children":9368},{"class":244,"line":3181},[9369,9373,9377,9381,9385],{"type":62,"tag":242,"props":9370,"children":9371},{"style":271},[9372],{"type":68,"value":8588},{"type":62,"tag":242,"props":9374,"children":9375},{"style":1724},[9376],{"type":68,"value":8694},{"type":62,"tag":242,"props":9378,"children":9379},{"style":281},[9380],{"type":68,"value":411},{"type":62,"tag":242,"props":9382,"children":9383},{"style":1452},[9384],{"type":68,"value":747},{"type":62,"tag":242,"props":9386,"children":9387},{"style":281},[9388],{"type":68,"value":2217},{"type":62,"tag":242,"props":9390,"children":9391},{"class":244,"line":3190},[9392,9396,9400],{"type":62,"tag":242,"props":9393,"children":9394},{"style":271},[9395],{"type":68,"value":8588},{"type":62,"tag":242,"props":9397,"children":9398},{"style":1724},[9399],{"type":68,"value":8903},{"type":62,"tag":242,"props":9401,"children":9402},{"style":281},[9403],{"type":68,"value":2123},{"type":62,"tag":242,"props":9405,"children":9406},{"class":244,"line":3198},[9407],{"type":62,"tag":242,"props":9408,"children":9409},{"style":271},[9410],{"type":68,"value":5275},{"type":62,"tag":242,"props":9412,"children":9413},{"class":244,"line":3207},[9414],{"type":62,"tag":242,"props":9415,"children":9416},{"emptyLinePlaceholder":649},[9417],{"type":68,"value":652},{"type":62,"tag":242,"props":9419,"children":9420},{"class":244,"line":3241},[9421,9425,9430,9434,9438,9442],{"type":62,"tag":242,"props":9422,"children":9423},{"style":259},[9424],{"type":68,"value":4728},{"type":62,"tag":242,"props":9426,"children":9427},{"style":281},[9428],{"type":68,"value":9429}," deleteForRun",{"type":62,"tag":242,"props":9431,"children":9432},{"style":271},[9433],{"type":68,"value":411},{"type":62,"tag":242,"props":9435,"children":9436},{"style":296},[9437],{"type":68,"value":800},{"type":62,"tag":242,"props":9439,"children":9440},{"style":271},[9441],{"type":68,"value":2550},{"type":62,"tag":242,"props":9443,"children":9444},{"style":271},[9445],{"type":68,"value":274},{"type":62,"tag":242,"props":9447,"children":9448},{"class":244,"line":3309},[9449,9453],{"type":62,"tag":242,"props":9450,"children":9451},{"style":1441},[9452],{"type":68,"value":3532},{"type":62,"tag":242,"props":9454,"children":9455},{"style":1452},[9456],{"type":68,"value":8580},{"type":62,"tag":242,"props":9458,"children":9459},{"class":244,"line":3342},[9460,9464,9468,9472,9476,9481,9485],{"type":62,"tag":242,"props":9461,"children":9462},{"style":271},[9463],{"type":68,"value":8588},{"type":62,"tag":242,"props":9465,"children":9466},{"style":1724},[9467],{"type":68,"value":8593},{"type":62,"tag":242,"props":9469,"children":9470},{"style":281},[9471],{"type":68,"value":411},{"type":62,"tag":242,"props":9473,"children":9474},{"style":271},[9475],{"type":68,"value":3906},{"type":62,"tag":242,"props":9477,"children":9478},{"style":1482},[9479],{"type":68,"value":9480},"DELETE FROM generation_artifacts WHERE run_id = ?",{"type":62,"tag":242,"props":9482,"children":9483},{"style":271},[9484],{"type":68,"value":3906},{"type":62,"tag":242,"props":9486,"children":9487},{"style":281},[9488],{"type":68,"value":2217},{"type":62,"tag":242,"props":9490,"children":9491},{"class":244,"line":3351},[9492,9496,9500,9504,9508],{"type":62,"tag":242,"props":9493,"children":9494},{"style":271},[9495],{"type":68,"value":8588},{"type":62,"tag":242,"props":9497,"children":9498},{"style":1724},[9499],{"type":68,"value":8694},{"type":62,"tag":242,"props":9501,"children":9502},{"style":281},[9503],{"type":68,"value":411},{"type":62,"tag":242,"props":9505,"children":9506},{"style":1452},[9507],{"type":68,"value":800},{"type":62,"tag":242,"props":9509,"children":9510},{"style":281},[9511],{"type":68,"value":2217},{"type":62,"tag":242,"props":9513,"children":9514},{"class":244,"line":3408},[9515,9519,9523],{"type":62,"tag":242,"props":9516,"children":9517},{"style":271},[9518],{"type":68,"value":8588},{"type":62,"tag":242,"props":9520,"children":9521},{"style":1724},[9522],{"type":68,"value":8903},{"type":62,"tag":242,"props":9524,"children":9525},{"style":281},[9526],{"type":68,"value":2123},{"type":62,"tag":242,"props":9528,"children":9529},{"class":244,"line":3416},[9530],{"type":62,"tag":242,"props":9531,"children":9532},{"style":271},[9533],{"type":68,"value":5275},{"type":62,"tag":242,"props":9535,"children":9536},{"class":244,"line":3470},[9537,9541],{"type":62,"tag":242,"props":9538,"children":9539},{"style":271},[9540],{"type":68,"value":4109},{"type":62,"tag":242,"props":9542,"children":9543},{"style":281},[9544],{"type":68,"value":2217},{"type":62,"tag":242,"props":9546,"children":9547},{"class":244,"line":3483},[9548],{"type":62,"tag":242,"props":9549,"children":9550},{"style":271},[9551],{"type":68,"value":642},{"type":62,"tag":71,"props":9553,"children":9554},{},[9555,9557,9562,9563,9568,9570,9576,9578,9583,9585,9591,9593,9599,9601,9606,9608,9614,9616,9621,9623,9629,9631,9637,9639,9645,9647,9652,9654,9659],{"type":68,"value":9556},"Omitting ",{"type":62,"tag":75,"props":9558,"children":9560},{"className":9559},[],[9561],{"type":68,"value":8365},{"type":68,"value":166},{"type":62,"tag":75,"props":9564,"children":9566},{"className":9565},[],[9567],{"type":68,"value":8198},{"type":68,"value":9569}," from the record when the column is ",{"type":62,"tag":75,"props":9571,"children":9573},{"className":9572},[],[9574],{"type":68,"value":9575},"NULL",{"type":68,"value":9577},"\nkeeps records comparing cleanly against the reference in-memory store. Persist\n",{"type":62,"tag":75,"props":9579,"children":9581},{"className":9580},[],[9582],{"type":68,"value":8198},{"type":68,"value":9584}," verbatim: a ",{"type":62,"tag":75,"props":9586,"children":9588},{"className":9587},[],[9589],{"type":68,"value":9590},"storageKey",{"type":68,"value":9592}," mapper can put the bytes anywhere, so a\nreader cannot recompute the path — ",{"type":62,"tag":75,"props":9594,"children":9596},{"className":9595},[],[9597],{"type":68,"value":9598},"resolveArtifactBlobKey(record)",{"type":68,"value":9600}," falls back\nto the default convention only for rows written before the column existed.\n",{"type":62,"tag":100,"props":9602,"children":9603},{},[9604],{"type":68,"value":9605},"KV alternative:",{"type":68,"value":9607}," if\nyou have no D1, back ",{"type":62,"tag":75,"props":9609,"children":9611},{"className":9610},[],[9612],{"type":68,"value":9613},"save",{"type":68,"value":9615},"\u002F",{"type":62,"tag":75,"props":9617,"children":9619},{"className":9618},[],[9620],{"type":68,"value":1379},{"type":68,"value":9622}," with ",{"type":62,"tag":75,"props":9624,"children":9626},{"className":9625},[],[9627],{"type":68,"value":9628},"KV.put(artifactId, JSON.stringify(record))",{"type":68,"value":9630},"\n\u002F ",{"type":62,"tag":75,"props":9632,"children":9634},{"className":9633},[],[9635],{"type":68,"value":9636},"KV.get(artifactId, 'json')",{"type":68,"value":9638},", and maintain a ",{"type":62,"tag":75,"props":9640,"children":9642},{"className":9641},[],[9643],{"type":68,"value":9644},"run:\u003CrunId>",{"type":68,"value":9646}," index key (a JSON\narray of artifact ids) for ",{"type":62,"tag":75,"props":9648,"children":9650},{"className":9649},[],[9651],{"type":68,"value":6884},{"type":68,"value":9653}," — KV has no query, so ",{"type":62,"tag":75,"props":9655,"children":9657},{"className":9656},[],[9658],{"type":68,"value":6884},{"type":68,"value":9660}," needs that\nsecondary index.",{"type":62,"tag":196,"props":9662,"children":9664},{"id":9663},"_3-compose-and-wire",[9665],{"type":68,"value":9666},"3. Compose and wire",{"type":62,"tag":71,"props":9668,"children":9669},{},[9670,9672,9677,9679,9684,9685,9691,9693,9699],{"type":68,"value":9671},"Bindings are per-request on Workers, so export a ",{"type":62,"tag":100,"props":9673,"children":9674},{},[9675],{"type":68,"value":9676},"factory",{"type":68,"value":9678},". Combine the byte\nstores with a generation-run store (and, if this Worker also does chat, the chat stores).\nEither build the whole ",{"type":62,"tag":75,"props":9680,"children":9682},{"className":9681},[],[9683],{"type":68,"value":156},{"type":68,"value":9622},{"type":62,"tag":75,"props":9686,"children":9688},{"className":9687},[],[9689],{"type":68,"value":9690},"defineAIPersistence",{"type":68,"value":9692},", or layer the\nartifact stores onto an existing chat persistence with ",{"type":62,"tag":75,"props":9694,"children":9696},{"className":9695},[],[9697],{"type":68,"value":9698},"composePersistence",{"type":68,"value":304},{"type":62,"tag":231,"props":9701,"children":9703},{"className":233,"code":9702,"language":235,"meta":1431,"style":236},"import {\n  defineAIPersistence,\n  composePersistence,\n  withGenerationPersistence,\n} from '@tanstack\u002Fai-persistence'\nimport { r2BlobStore } from '.\u002Fr2-blob-store'\nimport { d1ArtifactStore } from '.\u002Fd1-artifact-store'\nimport { d1GenerationRunStore } from '.\u002Fd1-job-store' \u002F\u002F your GenerationRunStore\n\n\u002F** Call inside a request handler — bindings are not available at module scope. *\u002F\nexport function generationPersistence(env: Env) {\n  return defineAIPersistence({\n    stores: {\n      generationRuns: d1GenerationRunStore(env.DB),\n      artifacts: d1ArtifactStore(env.DB),\n      blobs: r2BlobStore(env.ARTIFACTS_BUCKET),\n    },\n  })\n}\n\n\u002F\u002F …or add bytes to a persistence that already has chat + generation runs:\n\u002F\u002F composePersistence(chatAndJobsPersistence(env), {\n\u002F\u002F   overrides: {\n\u002F\u002F     artifacts: d1ArtifactStore(env.DB),\n\u002F\u002F     blobs: r2BlobStore(env.ARTIFACTS_BUCKET),\n\u002F\u002F   },\n\u002F\u002F })\n",[9704],{"type":62,"tag":75,"props":9705,"children":9706},{"__ignoreMap":236},[9707,9718,9730,9742,9754,9777,9813,9849,9891,9898,9906,9948,9968,9984,10025,10065,10106,10113,10124,10131,10138,10146,10154,10162,10170,10178,10186],{"type":62,"tag":242,"props":9708,"children":9709},{"class":244,"line":245},[9710,9714],{"type":62,"tag":242,"props":9711,"children":9712},{"style":1441},[9713],{"type":68,"value":1444},{"type":62,"tag":242,"props":9715,"children":9716},{"style":271},[9717],{"type":68,"value":274},{"type":62,"tag":242,"props":9719,"children":9720},{"class":244,"line":255},[9721,9726],{"type":62,"tag":242,"props":9722,"children":9723},{"style":1452},[9724],{"type":68,"value":9725},"  defineAIPersistence",{"type":62,"tag":242,"props":9727,"children":9728},{"style":271},[9729],{"type":68,"value":314},{"type":62,"tag":242,"props":9731,"children":9732},{"class":244,"line":277},[9733,9738],{"type":62,"tag":242,"props":9734,"children":9735},{"style":1452},[9736],{"type":68,"value":9737},"  composePersistence",{"type":62,"tag":242,"props":9739,"children":9740},{"style":271},[9741],{"type":68,"value":314},{"type":62,"tag":242,"props":9743,"children":9744},{"class":244,"line":292},[9745,9750],{"type":62,"tag":242,"props":9746,"children":9747},{"style":1452},[9748],{"type":68,"value":9749},"  withGenerationPersistence",{"type":62,"tag":242,"props":9751,"children":9752},{"style":271},[9753],{"type":68,"value":314},{"type":62,"tag":242,"props":9755,"children":9756},{"class":244,"line":317},[9757,9761,9765,9769,9773],{"type":62,"tag":242,"props":9758,"children":9759},{"style":271},[9760],{"type":68,"value":3896},{"type":62,"tag":242,"props":9762,"children":9763},{"style":1441},[9764],{"type":68,"value":1474},{"type":62,"tag":242,"props":9766,"children":9767},{"style":271},[9768],{"type":68,"value":1479},{"type":62,"tag":242,"props":9770,"children":9771},{"style":1482},[9772],{"type":68,"value":212},{"type":62,"tag":242,"props":9774,"children":9775},{"style":271},[9776],{"type":68,"value":1489},{"type":62,"tag":242,"props":9778,"children":9779},{"class":244,"line":339},[9780,9784,9788,9792,9796,9800,9804,9809],{"type":62,"tag":242,"props":9781,"children":9782},{"style":1441},[9783],{"type":68,"value":1444},{"type":62,"tag":242,"props":9785,"children":9786},{"style":271},[9787],{"type":68,"value":1449},{"type":62,"tag":242,"props":9789,"children":9790},{"style":1452},[9791],{"type":68,"value":4674},{"type":62,"tag":242,"props":9793,"children":9794},{"style":271},[9795],{"type":68,"value":1469},{"type":62,"tag":242,"props":9797,"children":9798},{"style":1441},[9799],{"type":68,"value":1474},{"type":62,"tag":242,"props":9801,"children":9802},{"style":271},[9803],{"type":68,"value":1479},{"type":62,"tag":242,"props":9805,"children":9806},{"style":1482},[9807],{"type":68,"value":9808},".\u002Fr2-blob-store",{"type":62,"tag":242,"props":9810,"children":9811},{"style":271},[9812],{"type":68,"value":1489},{"type":62,"tag":242,"props":9814,"children":9815},{"class":244,"line":362},[9816,9820,9824,9828,9832,9836,9840,9845],{"type":62,"tag":242,"props":9817,"children":9818},{"style":1441},[9819],{"type":68,"value":1444},{"type":62,"tag":242,"props":9821,"children":9822},{"style":271},[9823],{"type":68,"value":1449},{"type":62,"tag":242,"props":9825,"children":9826},{"style":1452},[9827],{"type":68,"value":8487},{"type":62,"tag":242,"props":9829,"children":9830},{"style":271},[9831],{"type":68,"value":1469},{"type":62,"tag":242,"props":9833,"children":9834},{"style":1441},[9835],{"type":68,"value":1474},{"type":62,"tag":242,"props":9837,"children":9838},{"style":271},[9839],{"type":68,"value":1479},{"type":62,"tag":242,"props":9841,"children":9842},{"style":1482},[9843],{"type":68,"value":9844},".\u002Fd1-artifact-store",{"type":62,"tag":242,"props":9846,"children":9847},{"style":271},[9848],{"type":68,"value":1489},{"type":62,"tag":242,"props":9850,"children":9851},{"class":244,"line":391},[9852,9856,9860,9865,9869,9873,9877,9882,9886],{"type":62,"tag":242,"props":9853,"children":9854},{"style":1441},[9855],{"type":68,"value":1444},{"type":62,"tag":242,"props":9857,"children":9858},{"style":271},[9859],{"type":68,"value":1449},{"type":62,"tag":242,"props":9861,"children":9862},{"style":1452},[9863],{"type":68,"value":9864}," d1GenerationRunStore",{"type":62,"tag":242,"props":9866,"children":9867},{"style":271},[9868],{"type":68,"value":1469},{"type":62,"tag":242,"props":9870,"children":9871},{"style":1441},[9872],{"type":68,"value":1474},{"type":62,"tag":242,"props":9874,"children":9875},{"style":271},[9876],{"type":68,"value":1479},{"type":62,"tag":242,"props":9878,"children":9879},{"style":1482},[9880],{"type":68,"value":9881},".\u002Fd1-job-store",{"type":62,"tag":242,"props":9883,"children":9884},{"style":271},[9885],{"type":68,"value":6218},{"type":62,"tag":242,"props":9887,"children":9888},{"style":249},[9889],{"type":68,"value":9890}," \u002F\u002F your GenerationRunStore\n",{"type":62,"tag":242,"props":9892,"children":9893},{"class":244,"line":400},[9894],{"type":62,"tag":242,"props":9895,"children":9896},{"emptyLinePlaceholder":649},[9897],{"type":68,"value":652},{"type":62,"tag":242,"props":9899,"children":9900},{"class":244,"line":478},[9901],{"type":62,"tag":242,"props":9902,"children":9903},{"style":249},[9904],{"type":68,"value":9905},"\u002F** Call inside a request handler — bindings are not available at module scope. *\u002F\n",{"type":62,"tag":242,"props":9907,"children":9908},{"class":244,"line":537},[9909,9913,9917,9922,9926,9931,9935,9940,9944],{"type":62,"tag":242,"props":9910,"children":9911},{"style":1441},[9912],{"type":68,"value":4665},{"type":62,"tag":242,"props":9914,"children":9915},{"style":259},[9916],{"type":68,"value":1721},{"type":62,"tag":242,"props":9918,"children":9919},{"style":1724},[9920],{"type":68,"value":9921}," generationPersistence",{"type":62,"tag":242,"props":9923,"children":9924},{"style":271},[9925],{"type":68,"value":411},{"type":62,"tag":242,"props":9927,"children":9928},{"style":296},[9929],{"type":68,"value":9930},"env",{"type":62,"tag":242,"props":9932,"children":9933},{"style":271},[9934],{"type":68,"value":304},{"type":62,"tag":242,"props":9936,"children":9937},{"style":265},[9938],{"type":68,"value":9939}," Env",{"type":62,"tag":242,"props":9941,"children":9942},{"style":271},[9943],{"type":68,"value":2550},{"type":62,"tag":242,"props":9945,"children":9946},{"style":271},[9947],{"type":68,"value":274},{"type":62,"tag":242,"props":9949,"children":9950},{"class":244,"line":588},[9951,9955,9960,9964],{"type":62,"tag":242,"props":9952,"children":9953},{"style":1441},[9954],{"type":68,"value":2633},{"type":62,"tag":242,"props":9956,"children":9957},{"style":1724},[9958],{"type":68,"value":9959}," defineAIPersistence",{"type":62,"tag":242,"props":9961,"children":9962},{"style":281},[9963],{"type":68,"value":411},{"type":62,"tag":242,"props":9965,"children":9966},{"style":271},[9967],{"type":68,"value":2064},{"type":62,"tag":242,"props":9969,"children":9970},{"class":244,"line":636},[9971,9976,9980],{"type":62,"tag":242,"props":9972,"children":9973},{"style":281},[9974],{"type":68,"value":9975},"    stores",{"type":62,"tag":242,"props":9977,"children":9978},{"style":271},[9979],{"type":68,"value":304},{"type":62,"tag":242,"props":9981,"children":9982},{"style":271},[9983],{"type":68,"value":274},{"type":62,"tag":242,"props":9985,"children":9986},{"class":244,"line":645},[9987,9992,9996,10000,10004,10008,10012,10017,10021],{"type":62,"tag":242,"props":9988,"children":9989},{"style":281},[9990],{"type":68,"value":9991},"      generationRuns",{"type":62,"tag":242,"props":9993,"children":9994},{"style":271},[9995],{"type":68,"value":304},{"type":62,"tag":242,"props":9997,"children":9998},{"style":1724},[9999],{"type":68,"value":9864},{"type":62,"tag":242,"props":10001,"children":10002},{"style":281},[10003],{"type":68,"value":411},{"type":62,"tag":242,"props":10005,"children":10006},{"style":1452},[10007],{"type":68,"value":9930},{"type":62,"tag":242,"props":10009,"children":10010},{"style":271},[10011],{"type":68,"value":174},{"type":62,"tag":242,"props":10013,"children":10014},{"style":1452},[10015],{"type":68,"value":10016},"DB",{"type":62,"tag":242,"props":10018,"children":10019},{"style":281},[10020],{"type":68,"value":2550},{"type":62,"tag":242,"props":10022,"children":10023},{"style":271},[10024],{"type":68,"value":314},{"type":62,"tag":242,"props":10026,"children":10027},{"class":244,"line":655},[10028,10033,10037,10041,10045,10049,10053,10057,10061],{"type":62,"tag":242,"props":10029,"children":10030},{"style":281},[10031],{"type":68,"value":10032},"      artifacts",{"type":62,"tag":242,"props":10034,"children":10035},{"style":271},[10036],{"type":68,"value":304},{"type":62,"tag":242,"props":10038,"children":10039},{"style":1724},[10040],{"type":68,"value":8487},{"type":62,"tag":242,"props":10042,"children":10043},{"style":281},[10044],{"type":68,"value":411},{"type":62,"tag":242,"props":10046,"children":10047},{"style":1452},[10048],{"type":68,"value":9930},{"type":62,"tag":242,"props":10050,"children":10051},{"style":271},[10052],{"type":68,"value":174},{"type":62,"tag":242,"props":10054,"children":10055},{"style":1452},[10056],{"type":68,"value":10016},{"type":62,"tag":242,"props":10058,"children":10059},{"style":281},[10060],{"type":68,"value":2550},{"type":62,"tag":242,"props":10062,"children":10063},{"style":271},[10064],{"type":68,"value":314},{"type":62,"tag":242,"props":10066,"children":10067},{"class":244,"line":664},[10068,10073,10077,10081,10085,10089,10093,10098,10102],{"type":62,"tag":242,"props":10069,"children":10070},{"style":281},[10071],{"type":68,"value":10072},"      blobs",{"type":62,"tag":242,"props":10074,"children":10075},{"style":271},[10076],{"type":68,"value":304},{"type":62,"tag":242,"props":10078,"children":10079},{"style":1724},[10080],{"type":68,"value":4674},{"type":62,"tag":242,"props":10082,"children":10083},{"style":281},[10084],{"type":68,"value":411},{"type":62,"tag":242,"props":10086,"children":10087},{"style":1452},[10088],{"type":68,"value":9930},{"type":62,"tag":242,"props":10090,"children":10091},{"style":271},[10092],{"type":68,"value":174},{"type":62,"tag":242,"props":10094,"children":10095},{"style":1452},[10096],{"type":68,"value":10097},"ARTIFACTS_BUCKET",{"type":62,"tag":242,"props":10099,"children":10100},{"style":281},[10101],{"type":68,"value":2550},{"type":62,"tag":242,"props":10103,"children":10104},{"style":271},[10105],{"type":68,"value":314},{"type":62,"tag":242,"props":10107,"children":10108},{"class":244,"line":681},[10109],{"type":62,"tag":242,"props":10110,"children":10111},{"style":271},[10112],{"type":68,"value":5275},{"type":62,"tag":242,"props":10114,"children":10115},{"class":244,"line":733},[10116,10120],{"type":62,"tag":242,"props":10117,"children":10118},{"style":271},[10119],{"type":68,"value":4109},{"type":62,"tag":242,"props":10121,"children":10122},{"style":281},[10123],{"type":68,"value":2217},{"type":62,"tag":242,"props":10125,"children":10126},{"class":244,"line":786},[10127],{"type":62,"tag":242,"props":10128,"children":10129},{"style":271},[10130],{"type":68,"value":642},{"type":62,"tag":242,"props":10132,"children":10133},{"class":244,"line":846},[10134],{"type":62,"tag":242,"props":10135,"children":10136},{"emptyLinePlaceholder":649},[10137],{"type":68,"value":652},{"type":62,"tag":242,"props":10139,"children":10140},{"class":244,"line":890},[10141],{"type":62,"tag":242,"props":10142,"children":10143},{"style":249},[10144],{"type":68,"value":10145},"\u002F\u002F …or add bytes to a persistence that already has chat + generation runs:\n",{"type":62,"tag":242,"props":10147,"children":10148},{"class":244,"line":935},[10149],{"type":62,"tag":242,"props":10150,"children":10151},{"style":249},[10152],{"type":68,"value":10153},"\u002F\u002F composePersistence(chatAndJobsPersistence(env), {\n",{"type":62,"tag":242,"props":10155,"children":10156},{"class":244,"line":1786},[10157],{"type":62,"tag":242,"props":10158,"children":10159},{"style":249},[10160],{"type":68,"value":10161},"\u002F\u002F   overrides: {\n",{"type":62,"tag":242,"props":10163,"children":10164},{"class":244,"line":1808},[10165],{"type":62,"tag":242,"props":10166,"children":10167},{"style":249},[10168],{"type":68,"value":10169},"\u002F\u002F     artifacts: d1ArtifactStore(env.DB),\n",{"type":62,"tag":242,"props":10171,"children":10172},{"class":244,"line":1883},[10173],{"type":62,"tag":242,"props":10174,"children":10175},{"style":249},[10176],{"type":68,"value":10177},"\u002F\u002F     blobs: r2BlobStore(env.ARTIFACTS_BUCKET),\n",{"type":62,"tag":242,"props":10179,"children":10180},{"class":244,"line":1975},[10181],{"type":62,"tag":242,"props":10182,"children":10183},{"style":249},[10184],{"type":68,"value":10185},"\u002F\u002F   },\n",{"type":62,"tag":242,"props":10187,"children":10188},{"class":244,"line":2006},[10189],{"type":62,"tag":242,"props":10190,"children":10191},{"style":249},[10192],{"type":68,"value":10193},"\u002F\u002F })\n",{"type":62,"tag":71,"props":10195,"children":10196},{},[10197,10203,10205,10211,10212,10218],{"type":62,"tag":75,"props":10198,"children":10200},{"className":10199},[],[10201],{"type":68,"value":10202},"withGenerationPersistence",{"type":68,"value":10204}," throws if exactly one of ",{"type":62,"tag":75,"props":10206,"children":10208},{"className":10207},[],[10209],{"type":68,"value":10210},"artifacts",{"type":68,"value":166},{"type":62,"tag":75,"props":10213,"children":10215},{"className":10214},[],[10216],{"type":68,"value":10217},"blobs",{"type":68,"value":10219}," is\npresent — provide both or neither. Wire it as generation middleware:",{"type":62,"tag":231,"props":10221,"children":10223},{"className":233,"code":10222,"language":235,"meta":1431,"style":236},"import { generateImage, toServerSentEventsResponse } from '@tanstack\u002Fai'\nimport { openaiImage } from '@tanstack\u002Fai-openai'\nimport { withGenerationPersistence } from '@tanstack\u002Fai-persistence'\nimport { generationPersistence } from '.\u002Flib\u002Fgeneration-persistence'\n\nexport default {\n  async fetch(request: Request, env: Env) {\n    const { prompt, threadId } = await request.json()\n    const stream = generateImage({\n      adapter: openaiImage('gpt-image-1'),\n      prompt,\n      threadId, \u002F\u002F the slot recorded on the job + artifacts\n      stream: true,\n      middleware: [\n        \u002F\u002F Nothing is buffered: the artifact streams from the provider CDN\n        \u002F\u002F into R2. Add `maxArtifactBytes: false` if you want no ceiling at\n        \u002F\u002F all on what an origin can stream into your bucket (the default is\n        \u002F\u002F 1 GiB); it is not needed for the streaming itself.\n        withGenerationPersistence(generationPersistence(env), { threadId }),\n      ],\n    })\n    return toServerSentEventsResponse(stream)\n  },\n}\n",[10224],{"type":62,"tag":75,"props":10225,"children":10226},{"__ignoreMap":236},[10227,10273,10310,10346,10382,10389,10405,10461,10516,10544,10585,10597,10614,10634,10650,10658,10666,10674,10682,10735,10747,10759,10783,10791],{"type":62,"tag":242,"props":10228,"children":10229},{"class":244,"line":245},[10230,10234,10238,10243,10247,10252,10256,10260,10264,10269],{"type":62,"tag":242,"props":10231,"children":10232},{"style":1441},[10233],{"type":68,"value":1444},{"type":62,"tag":242,"props":10235,"children":10236},{"style":271},[10237],{"type":68,"value":1449},{"type":62,"tag":242,"props":10239,"children":10240},{"style":1452},[10241],{"type":68,"value":10242}," generateImage",{"type":62,"tag":242,"props":10244,"children":10245},{"style":271},[10246],{"type":68,"value":429},{"type":62,"tag":242,"props":10248,"children":10249},{"style":1452},[10250],{"type":68,"value":10251}," toServerSentEventsResponse",{"type":62,"tag":242,"props":10253,"children":10254},{"style":271},[10255],{"type":68,"value":1469},{"type":62,"tag":242,"props":10257,"children":10258},{"style":1441},[10259],{"type":68,"value":1474},{"type":62,"tag":242,"props":10261,"children":10262},{"style":271},[10263],{"type":68,"value":1479},{"type":62,"tag":242,"props":10265,"children":10266},{"style":1482},[10267],{"type":68,"value":10268},"@tanstack\u002Fai",{"type":62,"tag":242,"props":10270,"children":10271},{"style":271},[10272],{"type":68,"value":1489},{"type":62,"tag":242,"props":10274,"children":10275},{"class":244,"line":255},[10276,10280,10284,10289,10293,10297,10301,10306],{"type":62,"tag":242,"props":10277,"children":10278},{"style":1441},[10279],{"type":68,"value":1444},{"type":62,"tag":242,"props":10281,"children":10282},{"style":271},[10283],{"type":68,"value":1449},{"type":62,"tag":242,"props":10285,"children":10286},{"style":1452},[10287],{"type":68,"value":10288}," openaiImage",{"type":62,"tag":242,"props":10290,"children":10291},{"style":271},[10292],{"type":68,"value":1469},{"type":62,"tag":242,"props":10294,"children":10295},{"style":1441},[10296],{"type":68,"value":1474},{"type":62,"tag":242,"props":10298,"children":10299},{"style":271},[10300],{"type":68,"value":1479},{"type":62,"tag":242,"props":10302,"children":10303},{"style":1482},[10304],{"type":68,"value":10305},"@tanstack\u002Fai-openai",{"type":62,"tag":242,"props":10307,"children":10308},{"style":271},[10309],{"type":68,"value":1489},{"type":62,"tag":242,"props":10311,"children":10312},{"class":244,"line":277},[10313,10317,10321,10326,10330,10334,10338,10342],{"type":62,"tag":242,"props":10314,"children":10315},{"style":1441},[10316],{"type":68,"value":1444},{"type":62,"tag":242,"props":10318,"children":10319},{"style":271},[10320],{"type":68,"value":1449},{"type":62,"tag":242,"props":10322,"children":10323},{"style":1452},[10324],{"type":68,"value":10325}," withGenerationPersistence",{"type":62,"tag":242,"props":10327,"children":10328},{"style":271},[10329],{"type":68,"value":1469},{"type":62,"tag":242,"props":10331,"children":10332},{"style":1441},[10333],{"type":68,"value":1474},{"type":62,"tag":242,"props":10335,"children":10336},{"style":271},[10337],{"type":68,"value":1479},{"type":62,"tag":242,"props":10339,"children":10340},{"style":1482},[10341],{"type":68,"value":212},{"type":62,"tag":242,"props":10343,"children":10344},{"style":271},[10345],{"type":68,"value":1489},{"type":62,"tag":242,"props":10347,"children":10348},{"class":244,"line":292},[10349,10353,10357,10361,10365,10369,10373,10378],{"type":62,"tag":242,"props":10350,"children":10351},{"style":1441},[10352],{"type":68,"value":1444},{"type":62,"tag":242,"props":10354,"children":10355},{"style":271},[10356],{"type":68,"value":1449},{"type":62,"tag":242,"props":10358,"children":10359},{"style":1452},[10360],{"type":68,"value":9921},{"type":62,"tag":242,"props":10362,"children":10363},{"style":271},[10364],{"type":68,"value":1469},{"type":62,"tag":242,"props":10366,"children":10367},{"style":1441},[10368],{"type":68,"value":1474},{"type":62,"tag":242,"props":10370,"children":10371},{"style":271},[10372],{"type":68,"value":1479},{"type":62,"tag":242,"props":10374,"children":10375},{"style":1482},[10376],{"type":68,"value":10377},".\u002Flib\u002Fgeneration-persistence",{"type":62,"tag":242,"props":10379,"children":10380},{"style":271},[10381],{"type":68,"value":1489},{"type":62,"tag":242,"props":10383,"children":10384},{"class":244,"line":317},[10385],{"type":62,"tag":242,"props":10386,"children":10387},{"emptyLinePlaceholder":649},[10388],{"type":68,"value":652},{"type":62,"tag":242,"props":10390,"children":10391},{"class":244,"line":339},[10392,10396,10401],{"type":62,"tag":242,"props":10393,"children":10394},{"style":1441},[10395],{"type":68,"value":4665},{"type":62,"tag":242,"props":10397,"children":10398},{"style":1441},[10399],{"type":68,"value":10400}," default",{"type":62,"tag":242,"props":10402,"children":10403},{"style":271},[10404],{"type":68,"value":274},{"type":62,"tag":242,"props":10406,"children":10407},{"class":244,"line":362},[10408,10413,10418,10422,10427,10431,10436,10440,10445,10449,10453,10457],{"type":62,"tag":242,"props":10409,"children":10410},{"style":259},[10411],{"type":68,"value":10412},"  async",{"type":62,"tag":242,"props":10414,"children":10415},{"style":281},[10416],{"type":68,"value":10417}," fetch",{"type":62,"tag":242,"props":10419,"children":10420},{"style":271},[10421],{"type":68,"value":411},{"type":62,"tag":242,"props":10423,"children":10424},{"style":296},[10425],{"type":68,"value":10426},"request",{"type":62,"tag":242,"props":10428,"children":10429},{"style":271},[10430],{"type":68,"value":304},{"type":62,"tag":242,"props":10432,"children":10433},{"style":265},[10434],{"type":68,"value":10435}," Request",{"type":62,"tag":242,"props":10437,"children":10438},{"style":271},[10439],{"type":68,"value":429},{"type":62,"tag":242,"props":10441,"children":10442},{"style":296},[10443],{"type":68,"value":10444}," env",{"type":62,"tag":242,"props":10446,"children":10447},{"style":271},[10448],{"type":68,"value":304},{"type":62,"tag":242,"props":10450,"children":10451},{"style":265},[10452],{"type":68,"value":9939},{"type":62,"tag":242,"props":10454,"children":10455},{"style":271},[10456],{"type":68,"value":2550},{"type":62,"tag":242,"props":10458,"children":10459},{"style":271},[10460],{"type":68,"value":274},{"type":62,"tag":242,"props":10462,"children":10463},{"class":244,"line":391},[10464,10468,10472,10477,10481,10486,10490,10494,10498,10503,10507,10512],{"type":62,"tag":242,"props":10465,"children":10466},{"style":259},[10467],{"type":68,"value":2073},{"type":62,"tag":242,"props":10469,"children":10470},{"style":271},[10471],{"type":68,"value":1449},{"type":62,"tag":242,"props":10473,"children":10474},{"style":1452},[10475],{"type":68,"value":10476}," prompt",{"type":62,"tag":242,"props":10478,"children":10479},{"style":271},[10480],{"type":68,"value":429},{"type":62,"tag":242,"props":10482,"children":10483},{"style":1452},[10484],{"type":68,"value":10485}," threadId",{"type":62,"tag":242,"props":10487,"children":10488},{"style":271},[10489],{"type":68,"value":1469},{"type":62,"tag":242,"props":10491,"children":10492},{"style":271},[10493],{"type":68,"value":1920},{"type":62,"tag":242,"props":10495,"children":10496},{"style":1441},[10497],{"type":68,"value":2104},{"type":62,"tag":242,"props":10499,"children":10500},{"style":1452},[10501],{"type":68,"value":10502}," request",{"type":62,"tag":242,"props":10504,"children":10505},{"style":271},[10506],{"type":68,"value":174},{"type":62,"tag":242,"props":10508,"children":10509},{"style":1724},[10510],{"type":68,"value":10511},"json",{"type":62,"tag":242,"props":10513,"children":10514},{"style":281},[10515],{"type":68,"value":2123},{"type":62,"tag":242,"props":10517,"children":10518},{"class":244,"line":400},[10519,10523,10528,10532,10536,10540],{"type":62,"tag":242,"props":10520,"children":10521},{"style":259},[10522],{"type":68,"value":2073},{"type":62,"tag":242,"props":10524,"children":10525},{"style":1452},[10526],{"type":68,"value":10527}," stream",{"type":62,"tag":242,"props":10529,"children":10530},{"style":271},[10531],{"type":68,"value":1920},{"type":62,"tag":242,"props":10533,"children":10534},{"style":1724},[10535],{"type":68,"value":10242},{"type":62,"tag":242,"props":10537,"children":10538},{"style":281},[10539],{"type":68,"value":411},{"type":62,"tag":242,"props":10541,"children":10542},{"style":271},[10543],{"type":68,"value":2064},{"type":62,"tag":242,"props":10545,"children":10546},{"class":244,"line":478},[10547,10552,10556,10560,10564,10568,10573,10577,10581],{"type":62,"tag":242,"props":10548,"children":10549},{"style":281},[10550],{"type":68,"value":10551},"      adapter",{"type":62,"tag":242,"props":10553,"children":10554},{"style":271},[10555],{"type":68,"value":304},{"type":62,"tag":242,"props":10557,"children":10558},{"style":1724},[10559],{"type":68,"value":10288},{"type":62,"tag":242,"props":10561,"children":10562},{"style":281},[10563],{"type":68,"value":411},{"type":62,"tag":242,"props":10565,"children":10566},{"style":271},[10567],{"type":68,"value":6218},{"type":62,"tag":242,"props":10569,"children":10570},{"style":1482},[10571],{"type":68,"value":10572},"gpt-image-1",{"type":62,"tag":242,"props":10574,"children":10575},{"style":271},[10576],{"type":68,"value":6218},{"type":62,"tag":242,"props":10578,"children":10579},{"style":281},[10580],{"type":68,"value":2550},{"type":62,"tag":242,"props":10582,"children":10583},{"style":271},[10584],{"type":68,"value":314},{"type":62,"tag":242,"props":10586,"children":10587},{"class":244,"line":537},[10588,10593],{"type":62,"tag":242,"props":10589,"children":10590},{"style":1452},[10591],{"type":68,"value":10592},"      prompt",{"type":62,"tag":242,"props":10594,"children":10595},{"style":271},[10596],{"type":68,"value":314},{"type":62,"tag":242,"props":10598,"children":10599},{"class":244,"line":588},[10600,10605,10609],{"type":62,"tag":242,"props":10601,"children":10602},{"style":1452},[10603],{"type":68,"value":10604},"      threadId",{"type":62,"tag":242,"props":10606,"children":10607},{"style":271},[10608],{"type":68,"value":429},{"type":62,"tag":242,"props":10610,"children":10611},{"style":249},[10612],{"type":68,"value":10613}," \u002F\u002F the slot recorded on the job + artifacts\n",{"type":62,"tag":242,"props":10615,"children":10616},{"class":244,"line":636},[10617,10622,10626,10630],{"type":62,"tag":242,"props":10618,"children":10619},{"style":281},[10620],{"type":68,"value":10621},"      stream",{"type":62,"tag":242,"props":10623,"children":10624},{"style":271},[10625],{"type":68,"value":304},{"type":62,"tag":242,"props":10627,"children":10628},{"style":2022},[10629],{"type":68,"value":7347},{"type":62,"tag":242,"props":10631,"children":10632},{"style":271},[10633],{"type":68,"value":314},{"type":62,"tag":242,"props":10635,"children":10636},{"class":244,"line":645},[10637,10642,10646],{"type":62,"tag":242,"props":10638,"children":10639},{"style":281},[10640],{"type":68,"value":10641},"      middleware",{"type":62,"tag":242,"props":10643,"children":10644},{"style":271},[10645],{"type":68,"value":304},{"type":62,"tag":242,"props":10647,"children":10648},{"style":281},[10649],{"type":68,"value":3523},{"type":62,"tag":242,"props":10651,"children":10652},{"class":244,"line":655},[10653],{"type":62,"tag":242,"props":10654,"children":10655},{"style":249},[10656],{"type":68,"value":10657},"        \u002F\u002F Nothing is buffered: the artifact streams from the provider CDN\n",{"type":62,"tag":242,"props":10659,"children":10660},{"class":244,"line":664},[10661],{"type":62,"tag":242,"props":10662,"children":10663},{"style":249},[10664],{"type":68,"value":10665},"        \u002F\u002F into R2. Add `maxArtifactBytes: false` if you want no ceiling at\n",{"type":62,"tag":242,"props":10667,"children":10668},{"class":244,"line":681},[10669],{"type":62,"tag":242,"props":10670,"children":10671},{"style":249},[10672],{"type":68,"value":10673},"        \u002F\u002F all on what an origin can stream into your bucket (the default is\n",{"type":62,"tag":242,"props":10675,"children":10676},{"class":244,"line":733},[10677],{"type":62,"tag":242,"props":10678,"children":10679},{"style":249},[10680],{"type":68,"value":10681},"        \u002F\u002F 1 GiB); it is not needed for the streaming itself.\n",{"type":62,"tag":242,"props":10683,"children":10684},{"class":244,"line":786},[10685,10690,10694,10699,10703,10707,10711,10715,10719,10723,10727,10731],{"type":62,"tag":242,"props":10686,"children":10687},{"style":1724},[10688],{"type":68,"value":10689},"        withGenerationPersistence",{"type":62,"tag":242,"props":10691,"children":10692},{"style":281},[10693],{"type":68,"value":411},{"type":62,"tag":242,"props":10695,"children":10696},{"style":1724},[10697],{"type":68,"value":10698},"generationPersistence",{"type":62,"tag":242,"props":10700,"children":10701},{"style":281},[10702],{"type":68,"value":411},{"type":62,"tag":242,"props":10704,"children":10705},{"style":1452},[10706],{"type":68,"value":9930},{"type":62,"tag":242,"props":10708,"children":10709},{"style":281},[10710],{"type":68,"value":2550},{"type":62,"tag":242,"props":10712,"children":10713},{"style":271},[10714],{"type":68,"value":429},{"type":62,"tag":242,"props":10716,"children":10717},{"style":271},[10718],{"type":68,"value":1449},{"type":62,"tag":242,"props":10720,"children":10721},{"style":1452},[10722],{"type":68,"value":10485},{"type":62,"tag":242,"props":10724,"children":10725},{"style":271},[10726],{"type":68,"value":1469},{"type":62,"tag":242,"props":10728,"children":10729},{"style":281},[10730],{"type":68,"value":2550},{"type":62,"tag":242,"props":10732,"children":10733},{"style":271},[10734],{"type":68,"value":314},{"type":62,"tag":242,"props":10736,"children":10737},{"class":244,"line":846},[10738,10743],{"type":62,"tag":242,"props":10739,"children":10740},{"style":281},[10741],{"type":68,"value":10742},"      ]",{"type":62,"tag":242,"props":10744,"children":10745},{"style":271},[10746],{"type":68,"value":314},{"type":62,"tag":242,"props":10748,"children":10749},{"class":244,"line":890},[10750,10755],{"type":62,"tag":242,"props":10751,"children":10752},{"style":271},[10753],{"type":68,"value":10754},"    }",{"type":62,"tag":242,"props":10756,"children":10757},{"style":281},[10758],{"type":68,"value":2217},{"type":62,"tag":242,"props":10760,"children":10761},{"class":244,"line":935},[10762,10766,10770,10774,10779],{"type":62,"tag":242,"props":10763,"children":10764},{"style":1441},[10765],{"type":68,"value":2498},{"type":62,"tag":242,"props":10767,"children":10768},{"style":1724},[10769],{"type":68,"value":10251},{"type":62,"tag":242,"props":10771,"children":10772},{"style":281},[10773],{"type":68,"value":411},{"type":62,"tag":242,"props":10775,"children":10776},{"style":1452},[10777],{"type":68,"value":10778},"stream",{"type":62,"tag":242,"props":10780,"children":10781},{"style":281},[10782],{"type":68,"value":2217},{"type":62,"tag":242,"props":10784,"children":10785},{"class":244,"line":1786},[10786],{"type":62,"tag":242,"props":10787,"children":10788},{"style":271},[10789],{"type":68,"value":10790},"  },\n",{"type":62,"tag":242,"props":10792,"children":10793},{"class":244,"line":1808},[10794],{"type":62,"tag":242,"props":10795,"children":10796},{"style":271},[10797],{"type":68,"value":642},{"type":62,"tag":196,"props":10799,"children":10801},{"id":10800},"_4-serve-the-bytes-back",[10802],{"type":68,"value":10803},"4. Serve the bytes back",{"type":62,"tag":71,"props":10805,"children":10806},{},[10807,10809,10814,10816,10821,10823,10828,10830,10835,10837,10842,10843,10848,10850,10855],{"type":68,"value":10808},"A GET route resolves an ",{"type":62,"tag":75,"props":10810,"children":10812},{"className":10811},[],[10813],{"type":68,"value":747},{"type":68,"value":10815}," to its record and its stored bytes.\n",{"type":62,"tag":75,"props":10817,"children":10819},{"className":10818},[],[10820],{"type":68,"value":164},{"type":68,"value":10822}," returns the ",{"type":62,"tag":75,"props":10824,"children":10826},{"className":10825},[],[10827],{"type":68,"value":128},{"type":68,"value":10829}," (or ",{"type":62,"tag":75,"props":10831,"children":10833},{"className":10832},[],[10834],{"type":68,"value":7435},{"type":68,"value":10836}," → 404);\n",{"type":62,"tag":75,"props":10838,"children":10840},{"className":10839},[],[10841],{"type":68,"value":172},{"type":68,"value":10822},{"type":62,"tag":75,"props":10844,"children":10846},{"className":10845},[],[10847],{"type":68,"value":461},{"type":68,"value":10849}," (metadata + a streamable ",{"type":62,"tag":75,"props":10851,"children":10853},{"className":10852},[],[10854],{"type":68,"value":1403},{"type":68,"value":10856},"). Both\nresolve the blob key from the record internally, so you never build the key\nyourself.",{"type":62,"tag":71,"props":10858,"children":10859},{},[10860,10862,10868,10870,10876,10878,10883,10884,10890,10892,10897,10899,10904,10906,10911],{"type":68,"value":10861},"Honour ",{"type":62,"tag":75,"props":10863,"children":10865},{"className":10864},[],[10866],{"type":68,"value":10867},"Range",{"type":68,"value":10869}," requests: ",{"type":62,"tag":75,"props":10871,"children":10873},{"className":10872},[],[10874],{"type":68,"value":10875},"\u003Cvideo>",{"type":68,"value":10877}," seeking is built on ",{"type":62,"tag":75,"props":10879,"children":10881},{"className":10880},[],[10882],{"type":68,"value":7544},{"type":68,"value":166},{"type":62,"tag":75,"props":10885,"children":10887},{"className":10886},[],[10888],{"type":68,"value":10889},"Content-Range",{"type":68,"value":10891},",\nand Safari refuses to play a source that ignores ",{"type":62,"tag":75,"props":10893,"children":10895},{"className":10894},[],[10896],{"type":68,"value":10867},{"type":68,"value":10898}," entirely. Images never\nnotice; a few-hundred-MB clip is unwatchable without it. Pass ",{"type":62,"tag":75,"props":10900,"children":10902},{"className":10901},[],[10903],{"type":68,"value":1253},{"type":68,"value":10905}," to\n",{"type":62,"tag":75,"props":10907,"children":10909},{"className":10908},[],[10910],{"type":68,"value":172},{"type":68,"value":10912}," — the store slices in R2 — rather than reaching into the bucket\nbinding from the route, which would tie the route to R2 and bypass the store's\nown key resolution.",{"type":62,"tag":231,"props":10914,"children":10916},{"className":233,"code":10915,"language":235,"meta":1431,"style":236},"import {\n  parseRangeHeader,\n  retrieveArtifact,\n  retrieveBlob,\n} from '@tanstack\u002Fai-persistence'\nimport { generationPersistence } from '.\u002Flib\u002Fgeneration-persistence'\n\nexport async function GET(request: Request, env: Env) {\n  const artifactId = new URL(request.url).searchParams.get('id') ?? ''\n  const persistence = generationPersistence(env)\n\n  \u002F\u002F Authorize before serving — derive the owner from the session, never trust\n  \u002F\u002F a client-supplied id. (The record carries runId\u002FthreadId to check against.)\n  const record = await retrieveArtifact(persistence, artifactId)\n  if (!record) return new Response('Not found', { status: 404 })\n\n  \u002F\u002F `parseRangeHeader` resolves the header against the size on the record —\n  \u002F\u002F suffix ranges included — so an unsatisfiable range is a 416 here and the\n  \u002F\u002F store only ever sees a range it can serve.\n  const range = parseRangeHeader(request.headers.get('range'), record.size)\n  if (range === 'unsatisfiable') {\n    return new Response('Range not satisfiable', {\n      status: 416,\n      headers: { 'content-range': `bytes *\u002F${record.size}` },\n    })\n  }\n\n  \u002F\u002F Pass the record, not the id: no second metadata lookup.\n  const blob = await retrieveBlob(\n    persistence,\n    record,\n    range ? { range } : undefined,\n  )\n  if (!blob?.body) return new Response('Not found', { status: 404 })\n\n  \u002F\u002F `accept-ranges` on every response, including the whole-file one: it is how\n  \u002F\u002F a player learns it may seek at all.\n  const headers = {\n    'content-type': record.mimeType,\n    'accept-ranges': 'bytes',\n  }\n  if (!blob.range) {\n    return new Response(blob.body, {\n      headers: { ...headers, 'content-length': String(record.size) },\n    })\n  }\n  const { offset, length } = blob.range\n  return new Response(blob.body, {\n    status: 206,\n    headers: {\n      ...headers,\n      'content-length': String(length),\n      'content-range': `bytes ${offset}-${offset + length - 1}\u002F${record.size}`,\n    },\n  })\n}\n",[10917],{"type":62,"tag":75,"props":10918,"children":10919},{"__ignoreMap":236},[10920,10931,10943,10955,10967,10990,11025,11032,11093,11187,11219,11226,11234,11242,11288,11371,11378,11386,11394,11402,11488,11528,11568,11589,11656,11667,11674,11681,11689,11718,11730,11742,11775,11783,11871,11878,11886,11894,11914,11951,11987,11994,12029,12068,12142,12153,12160,12204,12243,12264,12280,12296,12336,12441,12448,12459],{"type":62,"tag":242,"props":10921,"children":10922},{"class":244,"line":245},[10923,10927],{"type":62,"tag":242,"props":10924,"children":10925},{"style":1441},[10926],{"type":68,"value":1444},{"type":62,"tag":242,"props":10928,"children":10929},{"style":271},[10930],{"type":68,"value":274},{"type":62,"tag":242,"props":10932,"children":10933},{"class":244,"line":255},[10934,10939],{"type":62,"tag":242,"props":10935,"children":10936},{"style":1452},[10937],{"type":68,"value":10938},"  parseRangeHeader",{"type":62,"tag":242,"props":10940,"children":10941},{"style":271},[10942],{"type":68,"value":314},{"type":62,"tag":242,"props":10944,"children":10945},{"class":244,"line":277},[10946,10951],{"type":62,"tag":242,"props":10947,"children":10948},{"style":1452},[10949],{"type":68,"value":10950},"  retrieveArtifact",{"type":62,"tag":242,"props":10952,"children":10953},{"style":271},[10954],{"type":68,"value":314},{"type":62,"tag":242,"props":10956,"children":10957},{"class":244,"line":292},[10958,10963],{"type":62,"tag":242,"props":10959,"children":10960},{"style":1452},[10961],{"type":68,"value":10962},"  retrieveBlob",{"type":62,"tag":242,"props":10964,"children":10965},{"style":271},[10966],{"type":68,"value":314},{"type":62,"tag":242,"props":10968,"children":10969},{"class":244,"line":317},[10970,10974,10978,10982,10986],{"type":62,"tag":242,"props":10971,"children":10972},{"style":271},[10973],{"type":68,"value":3896},{"type":62,"tag":242,"props":10975,"children":10976},{"style":1441},[10977],{"type":68,"value":1474},{"type":62,"tag":242,"props":10979,"children":10980},{"style":271},[10981],{"type":68,"value":1479},{"type":62,"tag":242,"props":10983,"children":10984},{"style":1482},[10985],{"type":68,"value":212},{"type":62,"tag":242,"props":10987,"children":10988},{"style":271},[10989],{"type":68,"value":1489},{"type":62,"tag":242,"props":10991,"children":10992},{"class":244,"line":339},[10993,10997,11001,11005,11009,11013,11017,11021],{"type":62,"tag":242,"props":10994,"children":10995},{"style":1441},[10996],{"type":68,"value":1444},{"type":62,"tag":242,"props":10998,"children":10999},{"style":271},[11000],{"type":68,"value":1449},{"type":62,"tag":242,"props":11002,"children":11003},{"style":1452},[11004],{"type":68,"value":9921},{"type":62,"tag":242,"props":11006,"children":11007},{"style":271},[11008],{"type":68,"value":1469},{"type":62,"tag":242,"props":11010,"children":11011},{"style":1441},[11012],{"type":68,"value":1474},{"type":62,"tag":242,"props":11014,"children":11015},{"style":271},[11016],{"type":68,"value":1479},{"type":62,"tag":242,"props":11018,"children":11019},{"style":1482},[11020],{"type":68,"value":10377},{"type":62,"tag":242,"props":11022,"children":11023},{"style":271},[11024],{"type":68,"value":1489},{"type":62,"tag":242,"props":11026,"children":11027},{"class":244,"line":362},[11028],{"type":62,"tag":242,"props":11029,"children":11030},{"emptyLinePlaceholder":649},[11031],{"type":68,"value":652},{"type":62,"tag":242,"props":11033,"children":11034},{"class":244,"line":391},[11035,11039,11044,11048,11053,11057,11061,11065,11069,11073,11077,11081,11085,11089],{"type":62,"tag":242,"props":11036,"children":11037},{"style":1441},[11038],{"type":68,"value":4665},{"type":62,"tag":242,"props":11040,"children":11041},{"style":259},[11042],{"type":68,"value":11043}," async",{"type":62,"tag":242,"props":11045,"children":11046},{"style":259},[11047],{"type":68,"value":1721},{"type":62,"tag":242,"props":11049,"children":11050},{"style":1724},[11051],{"type":68,"value":11052}," GET",{"type":62,"tag":242,"props":11054,"children":11055},{"style":271},[11056],{"type":68,"value":411},{"type":62,"tag":242,"props":11058,"children":11059},{"style":296},[11060],{"type":68,"value":10426},{"type":62,"tag":242,"props":11062,"children":11063},{"style":271},[11064],{"type":68,"value":304},{"type":62,"tag":242,"props":11066,"children":11067},{"style":265},[11068],{"type":68,"value":10435},{"type":62,"tag":242,"props":11070,"children":11071},{"style":271},[11072],{"type":68,"value":429},{"type":62,"tag":242,"props":11074,"children":11075},{"style":296},[11076],{"type":68,"value":10444},{"type":62,"tag":242,"props":11078,"children":11079},{"style":271},[11080],{"type":68,"value":304},{"type":62,"tag":242,"props":11082,"children":11083},{"style":265},[11084],{"type":68,"value":9939},{"type":62,"tag":242,"props":11086,"children":11087},{"style":271},[11088],{"type":68,"value":2550},{"type":62,"tag":242,"props":11090,"children":11091},{"style":271},[11092],{"type":68,"value":274},{"type":62,"tag":242,"props":11094,"children":11095},{"class":244,"line":400},[11096,11100,11105,11109,11113,11118,11122,11126,11130,11135,11139,11143,11148,11152,11156,11160,11164,11169,11173,11177,11182],{"type":62,"tag":242,"props":11097,"children":11098},{"style":259},[11099],{"type":68,"value":1889},{"type":62,"tag":242,"props":11101,"children":11102},{"style":1452},[11103],{"type":68,"value":11104}," artifactId",{"type":62,"tag":242,"props":11106,"children":11107},{"style":271},[11108],{"type":68,"value":1920},{"type":62,"tag":242,"props":11110,"children":11111},{"style":271},[11112],{"type":68,"value":2274},{"type":62,"tag":242,"props":11114,"children":11115},{"style":1724},[11116],{"type":68,"value":11117}," URL",{"type":62,"tag":242,"props":11119,"children":11120},{"style":281},[11121],{"type":68,"value":411},{"type":62,"tag":242,"props":11123,"children":11124},{"style":1452},[11125],{"type":68,"value":10426},{"type":62,"tag":242,"props":11127,"children":11128},{"style":271},[11129],{"type":68,"value":174},{"type":62,"tag":242,"props":11131,"children":11132},{"style":1452},[11133],{"type":68,"value":11134},"url",{"type":62,"tag":242,"props":11136,"children":11137},{"style":281},[11138],{"type":68,"value":2550},{"type":62,"tag":242,"props":11140,"children":11141},{"style":271},[11142],{"type":68,"value":174},{"type":62,"tag":242,"props":11144,"children":11145},{"style":1452},[11146],{"type":68,"value":11147},"searchParams",{"type":62,"tag":242,"props":11149,"children":11150},{"style":271},[11151],{"type":68,"value":174},{"type":62,"tag":242,"props":11153,"children":11154},{"style":1724},[11155],{"type":68,"value":1379},{"type":62,"tag":242,"props":11157,"children":11158},{"style":281},[11159],{"type":68,"value":411},{"type":62,"tag":242,"props":11161,"children":11162},{"style":271},[11163],{"type":68,"value":6218},{"type":62,"tag":242,"props":11165,"children":11166},{"style":1482},[11167],{"type":68,"value":11168},"id",{"type":62,"tag":242,"props":11170,"children":11171},{"style":271},[11172],{"type":68,"value":6218},{"type":62,"tag":242,"props":11174,"children":11175},{"style":281},[11176],{"type":68,"value":2059},{"type":62,"tag":242,"props":11178,"children":11179},{"style":271},[11180],{"type":68,"value":11181},"??",{"type":62,"tag":242,"props":11183,"children":11184},{"style":271},[11185],{"type":68,"value":11186}," ''\n",{"type":62,"tag":242,"props":11188,"children":11189},{"class":244,"line":478},[11190,11194,11199,11203,11207,11211,11215],{"type":62,"tag":242,"props":11191,"children":11192},{"style":259},[11193],{"type":68,"value":1889},{"type":62,"tag":242,"props":11195,"children":11196},{"style":1452},[11197],{"type":68,"value":11198}," persistence",{"type":62,"tag":242,"props":11200,"children":11201},{"style":271},[11202],{"type":68,"value":1920},{"type":62,"tag":242,"props":11204,"children":11205},{"style":1724},[11206],{"type":68,"value":9921},{"type":62,"tag":242,"props":11208,"children":11209},{"style":281},[11210],{"type":68,"value":411},{"type":62,"tag":242,"props":11212,"children":11213},{"style":1452},[11214],{"type":68,"value":9930},{"type":62,"tag":242,"props":11216,"children":11217},{"style":281},[11218],{"type":68,"value":2217},{"type":62,"tag":242,"props":11220,"children":11221},{"class":244,"line":537},[11222],{"type":62,"tag":242,"props":11223,"children":11224},{"emptyLinePlaceholder":649},[11225],{"type":68,"value":652},{"type":62,"tag":242,"props":11227,"children":11228},{"class":244,"line":588},[11229],{"type":62,"tag":242,"props":11230,"children":11231},{"style":249},[11232],{"type":68,"value":11233},"  \u002F\u002F Authorize before serving — derive the owner from the session, never trust\n",{"type":62,"tag":242,"props":11235,"children":11236},{"class":244,"line":636},[11237],{"type":62,"tag":242,"props":11238,"children":11239},{"style":249},[11240],{"type":68,"value":11241},"  \u002F\u002F a client-supplied id. (The record carries runId\u002FthreadId to check against.)\n",{"type":62,"tag":242,"props":11243,"children":11244},{"class":244,"line":645},[11245,11249,11254,11258,11262,11267,11271,11276,11280,11284],{"type":62,"tag":242,"props":11246,"children":11247},{"style":259},[11248],{"type":68,"value":1889},{"type":62,"tag":242,"props":11250,"children":11251},{"style":1452},[11252],{"type":68,"value":11253}," record",{"type":62,"tag":242,"props":11255,"children":11256},{"style":271},[11257],{"type":68,"value":1920},{"type":62,"tag":242,"props":11259,"children":11260},{"style":1441},[11261],{"type":68,"value":2104},{"type":62,"tag":242,"props":11263,"children":11264},{"style":1724},[11265],{"type":68,"value":11266}," retrieveArtifact",{"type":62,"tag":242,"props":11268,"children":11269},{"style":281},[11270],{"type":68,"value":411},{"type":62,"tag":242,"props":11272,"children":11273},{"style":1452},[11274],{"type":68,"value":11275},"persistence",{"type":62,"tag":242,"props":11277,"children":11278},{"style":271},[11279],{"type":68,"value":429},{"type":62,"tag":242,"props":11281,"children":11282},{"style":1452},[11283],{"type":68,"value":11104},{"type":62,"tag":242,"props":11285,"children":11286},{"style":281},[11287],{"type":68,"value":2217},{"type":62,"tag":242,"props":11289,"children":11290},{"class":244,"line":655},[11291,11295,11299,11303,11307,11311,11315,11319,11324,11328,11332,11337,11341,11345,11349,11354,11358,11363,11367],{"type":62,"tag":242,"props":11292,"children":11293},{"style":1441},[11294],{"type":68,"value":2450},{"type":62,"tag":242,"props":11296,"children":11297},{"style":281},[11298],{"type":68,"value":2039},{"type":62,"tag":242,"props":11300,"children":11301},{"style":271},[11302],{"type":68,"value":2459},{"type":62,"tag":242,"props":11304,"children":11305},{"style":1452},[11306],{"type":68,"value":696},{"type":62,"tag":242,"props":11308,"children":11309},{"style":281},[11310],{"type":68,"value":2059},{"type":62,"tag":242,"props":11312,"children":11313},{"style":1441},[11314],{"type":68,"value":5456},{"type":62,"tag":242,"props":11316,"children":11317},{"style":271},[11318],{"type":68,"value":2274},{"type":62,"tag":242,"props":11320,"children":11321},{"style":1724},[11322],{"type":68,"value":11323}," Response",{"type":62,"tag":242,"props":11325,"children":11326},{"style":281},[11327],{"type":68,"value":411},{"type":62,"tag":242,"props":11329,"children":11330},{"style":271},[11331],{"type":68,"value":6218},{"type":62,"tag":242,"props":11333,"children":11334},{"style":1482},[11335],{"type":68,"value":11336},"Not found",{"type":62,"tag":242,"props":11338,"children":11339},{"style":271},[11340],{"type":68,"value":6218},{"type":62,"tag":242,"props":11342,"children":11343},{"style":271},[11344],{"type":68,"value":429},{"type":62,"tag":242,"props":11346,"children":11347},{"style":271},[11348],{"type":68,"value":1449},{"type":62,"tag":242,"props":11350,"children":11351},{"style":281},[11352],{"type":68,"value":11353}," status",{"type":62,"tag":242,"props":11355,"children":11356},{"style":271},[11357],{"type":68,"value":304},{"type":62,"tag":242,"props":11359,"children":11360},{"style":1607},[11361],{"type":68,"value":11362}," 404",{"type":62,"tag":242,"props":11364,"children":11365},{"style":271},[11366],{"type":68,"value":1469},{"type":62,"tag":242,"props":11368,"children":11369},{"style":281},[11370],{"type":68,"value":2217},{"type":62,"tag":242,"props":11372,"children":11373},{"class":244,"line":664},[11374],{"type":62,"tag":242,"props":11375,"children":11376},{"emptyLinePlaceholder":649},[11377],{"type":68,"value":652},{"type":62,"tag":242,"props":11379,"children":11380},{"class":244,"line":681},[11381],{"type":62,"tag":242,"props":11382,"children":11383},{"style":249},[11384],{"type":68,"value":11385},"  \u002F\u002F `parseRangeHeader` resolves the header against the size on the record —\n",{"type":62,"tag":242,"props":11387,"children":11388},{"class":244,"line":733},[11389],{"type":62,"tag":242,"props":11390,"children":11391},{"style":249},[11392],{"type":68,"value":11393},"  \u002F\u002F suffix ranges included — so an unsatisfiable range is a 416 here and the\n",{"type":62,"tag":242,"props":11395,"children":11396},{"class":244,"line":786},[11397],{"type":62,"tag":242,"props":11398,"children":11399},{"style":249},[11400],{"type":68,"value":11401},"  \u002F\u002F store only ever sees a range it can serve.\n",{"type":62,"tag":242,"props":11403,"children":11404},{"class":244,"line":846},[11405,11409,11414,11418,11423,11427,11431,11435,11440,11444,11448,11452,11456,11460,11464,11468,11472,11476,11480,11484],{"type":62,"tag":242,"props":11406,"children":11407},{"style":259},[11408],{"type":68,"value":1889},{"type":62,"tag":242,"props":11410,"children":11411},{"style":1452},[11412],{"type":68,"value":11413}," range",{"type":62,"tag":242,"props":11415,"children":11416},{"style":271},[11417],{"type":68,"value":1920},{"type":62,"tag":242,"props":11419,"children":11420},{"style":1724},[11421],{"type":68,"value":11422}," parseRangeHeader",{"type":62,"tag":242,"props":11424,"children":11425},{"style":281},[11426],{"type":68,"value":411},{"type":62,"tag":242,"props":11428,"children":11429},{"style":1452},[11430],{"type":68,"value":10426},{"type":62,"tag":242,"props":11432,"children":11433},{"style":271},[11434],{"type":68,"value":174},{"type":62,"tag":242,"props":11436,"children":11437},{"style":1452},[11438],{"type":68,"value":11439},"headers",{"type":62,"tag":242,"props":11441,"children":11442},{"style":271},[11443],{"type":68,"value":174},{"type":62,"tag":242,"props":11445,"children":11446},{"style":1724},[11447],{"type":68,"value":1379},{"type":62,"tag":242,"props":11449,"children":11450},{"style":281},[11451],{"type":68,"value":411},{"type":62,"tag":242,"props":11453,"children":11454},{"style":271},[11455],{"type":68,"value":6218},{"type":62,"tag":242,"props":11457,"children":11458},{"style":1482},[11459],{"type":68,"value":1253},{"type":62,"tag":242,"props":11461,"children":11462},{"style":271},[11463],{"type":68,"value":6218},{"type":62,"tag":242,"props":11465,"children":11466},{"style":281},[11467],{"type":68,"value":2550},{"type":62,"tag":242,"props":11469,"children":11470},{"style":271},[11471],{"type":68,"value":429},{"type":62,"tag":242,"props":11473,"children":11474},{"style":1452},[11475],{"type":68,"value":11253},{"type":62,"tag":242,"props":11477,"children":11478},{"style":271},[11479],{"type":68,"value":174},{"type":62,"tag":242,"props":11481,"children":11482},{"style":1452},[11483],{"type":68,"value":1304},{"type":62,"tag":242,"props":11485,"children":11486},{"style":281},[11487],{"type":68,"value":2217},{"type":62,"tag":242,"props":11489,"children":11490},{"class":244,"line":890},[11491,11495,11499,11503,11507,11511,11516,11520,11524],{"type":62,"tag":242,"props":11492,"children":11493},{"style":1441},[11494],{"type":68,"value":2450},{"type":62,"tag":242,"props":11496,"children":11497},{"style":281},[11498],{"type":68,"value":2039},{"type":62,"tag":242,"props":11500,"children":11501},{"style":1452},[11502],{"type":68,"value":1253},{"type":62,"tag":242,"props":11504,"children":11505},{"style":271},[11506],{"type":68,"value":6800},{"type":62,"tag":242,"props":11508,"children":11509},{"style":271},[11510],{"type":68,"value":1479},{"type":62,"tag":242,"props":11512,"children":11513},{"style":1482},[11514],{"type":68,"value":11515},"unsatisfiable",{"type":62,"tag":242,"props":11517,"children":11518},{"style":271},[11519],{"type":68,"value":6218},{"type":62,"tag":242,"props":11521,"children":11522},{"style":281},[11523],{"type":68,"value":2059},{"type":62,"tag":242,"props":11525,"children":11526},{"style":271},[11527],{"type":68,"value":2064},{"type":62,"tag":242,"props":11529,"children":11530},{"class":244,"line":935},[11531,11535,11539,11543,11547,11551,11556,11560,11564],{"type":62,"tag":242,"props":11532,"children":11533},{"style":1441},[11534],{"type":68,"value":2498},{"type":62,"tag":242,"props":11536,"children":11537},{"style":271},[11538],{"type":68,"value":2274},{"type":62,"tag":242,"props":11540,"children":11541},{"style":1724},[11542],{"type":68,"value":11323},{"type":62,"tag":242,"props":11544,"children":11545},{"style":281},[11546],{"type":68,"value":411},{"type":62,"tag":242,"props":11548,"children":11549},{"style":271},[11550],{"type":68,"value":6218},{"type":62,"tag":242,"props":11552,"children":11553},{"style":1482},[11554],{"type":68,"value":11555},"Range not satisfiable",{"type":62,"tag":242,"props":11557,"children":11558},{"style":271},[11559],{"type":68,"value":6218},{"type":62,"tag":242,"props":11561,"children":11562},{"style":271},[11563],{"type":68,"value":429},{"type":62,"tag":242,"props":11565,"children":11566},{"style":271},[11567],{"type":68,"value":274},{"type":62,"tag":242,"props":11569,"children":11570},{"class":244,"line":1786},[11571,11576,11580,11585],{"type":62,"tag":242,"props":11572,"children":11573},{"style":281},[11574],{"type":68,"value":11575},"      status",{"type":62,"tag":242,"props":11577,"children":11578},{"style":271},[11579],{"type":68,"value":304},{"type":62,"tag":242,"props":11581,"children":11582},{"style":1607},[11583],{"type":68,"value":11584}," 416",{"type":62,"tag":242,"props":11586,"children":11587},{"style":271},[11588],{"type":68,"value":314},{"type":62,"tag":242,"props":11590,"children":11591},{"class":244,"line":1808},[11592,11597,11601,11605,11609,11614,11618,11622,11627,11632,11636,11640,11644,11648,11652],{"type":62,"tag":242,"props":11593,"children":11594},{"style":281},[11595],{"type":68,"value":11596},"      headers",{"type":62,"tag":242,"props":11598,"children":11599},{"style":271},[11600],{"type":68,"value":304},{"type":62,"tag":242,"props":11602,"children":11603},{"style":271},[11604],{"type":68,"value":1449},{"type":62,"tag":242,"props":11606,"children":11607},{"style":271},[11608],{"type":68,"value":1479},{"type":62,"tag":242,"props":11610,"children":11611},{"style":281},[11612],{"type":68,"value":11613},"content-range",{"type":62,"tag":242,"props":11615,"children":11616},{"style":271},[11617],{"type":68,"value":6218},{"type":62,"tag":242,"props":11619,"children":11620},{"style":271},[11621],{"type":68,"value":304},{"type":62,"tag":242,"props":11623,"children":11624},{"style":271},[11625],{"type":68,"value":11626}," `",{"type":62,"tag":242,"props":11628,"children":11629},{"style":1482},[11630],{"type":68,"value":11631},"bytes *\u002F",{"type":62,"tag":242,"props":11633,"children":11634},{"style":271},[11635],{"type":68,"value":3887},{"type":62,"tag":242,"props":11637,"children":11638},{"style":1452},[11639],{"type":68,"value":696},{"type":62,"tag":242,"props":11641,"children":11642},{"style":271},[11643],{"type":68,"value":174},{"type":62,"tag":242,"props":11645,"children":11646},{"style":1452},[11647],{"type":68,"value":1304},{"type":62,"tag":242,"props":11649,"children":11650},{"style":271},[11651],{"type":68,"value":5237},{"type":62,"tag":242,"props":11653,"children":11654},{"style":271},[11655],{"type":68,"value":6070},{"type":62,"tag":242,"props":11657,"children":11658},{"class":244,"line":1883},[11659,11663],{"type":62,"tag":242,"props":11660,"children":11661},{"style":271},[11662],{"type":68,"value":10754},{"type":62,"tag":242,"props":11664,"children":11665},{"style":281},[11666],{"type":68,"value":2217},{"type":62,"tag":242,"props":11668,"children":11669},{"class":244,"line":1975},[11670],{"type":62,"tag":242,"props":11671,"children":11672},{"style":271},[11673],{"type":68,"value":2252},{"type":62,"tag":242,"props":11675,"children":11676},{"class":244,"line":2006},[11677],{"type":62,"tag":242,"props":11678,"children":11679},{"emptyLinePlaceholder":649},[11680],{"type":68,"value":652},{"type":62,"tag":242,"props":11682,"children":11683},{"class":244,"line":2028},[11684],{"type":62,"tag":242,"props":11685,"children":11686},{"style":249},[11687],{"type":68,"value":11688},"  \u002F\u002F Pass the record, not the id: no second metadata lookup.\n",{"type":62,"tag":242,"props":11690,"children":11691},{"class":244,"line":2067},[11692,11696,11701,11705,11709,11714],{"type":62,"tag":242,"props":11693,"children":11694},{"style":259},[11695],{"type":68,"value":1889},{"type":62,"tag":242,"props":11697,"children":11698},{"style":1452},[11699],{"type":68,"value":11700}," blob",{"type":62,"tag":242,"props":11702,"children":11703},{"style":271},[11704],{"type":68,"value":1920},{"type":62,"tag":242,"props":11706,"children":11707},{"style":1441},[11708],{"type":68,"value":2104},{"type":62,"tag":242,"props":11710,"children":11711},{"style":1724},[11712],{"type":68,"value":11713}," retrieveBlob",{"type":62,"tag":242,"props":11715,"children":11716},{"style":281},[11717],{"type":68,"value":289},{"type":62,"tag":242,"props":11719,"children":11720},{"class":244,"line":2126},[11721,11726],{"type":62,"tag":242,"props":11722,"children":11723},{"style":1452},[11724],{"type":68,"value":11725},"    persistence",{"type":62,"tag":242,"props":11727,"children":11728},{"style":271},[11729],{"type":68,"value":314},{"type":62,"tag":242,"props":11731,"children":11732},{"class":244,"line":2152},[11733,11738],{"type":62,"tag":242,"props":11734,"children":11735},{"style":1452},[11736],{"type":68,"value":11737},"    record",{"type":62,"tag":242,"props":11739,"children":11740},{"style":271},[11741],{"type":68,"value":314},{"type":62,"tag":242,"props":11743,"children":11744},{"class":244,"line":2170},[11745,11750,11754,11758,11762,11766,11770],{"type":62,"tag":242,"props":11746,"children":11747},{"style":1452},[11748],{"type":68,"value":11749},"    range",{"type":62,"tag":242,"props":11751,"children":11752},{"style":271},[11753],{"type":68,"value":1948},{"type":62,"tag":242,"props":11755,"children":11756},{"style":271},[11757],{"type":68,"value":1449},{"type":62,"tag":242,"props":11759,"children":11760},{"style":1452},[11761],{"type":68,"value":11413},{"type":62,"tag":242,"props":11763,"children":11764},{"style":271},[11765],{"type":68,"value":1469},{"type":62,"tag":242,"props":11767,"children":11768},{"style":271},[11769],{"type":68,"value":4578},{"type":62,"tag":242,"props":11771,"children":11772},{"style":271},[11773],{"type":68,"value":11774}," undefined,\n",{"type":62,"tag":242,"props":11776,"children":11777},{"class":244,"line":2179},[11778],{"type":62,"tag":242,"props":11779,"children":11780},{"style":281},[11781],{"type":68,"value":11782},"  )\n",{"type":62,"tag":242,"props":11784,"children":11785},{"class":244,"line":2188},[11786,11790,11794,11798,11803,11807,11811,11815,11819,11823,11827,11831,11835,11839,11843,11847,11851,11855,11859,11863,11867],{"type":62,"tag":242,"props":11787,"children":11788},{"style":1441},[11789],{"type":68,"value":2450},{"type":62,"tag":242,"props":11791,"children":11792},{"style":281},[11793],{"type":68,"value":2039},{"type":62,"tag":242,"props":11795,"children":11796},{"style":271},[11797],{"type":68,"value":2459},{"type":62,"tag":242,"props":11799,"children":11800},{"style":1452},[11801],{"type":68,"value":11802},"blob",{"type":62,"tag":242,"props":11804,"children":11805},{"style":271},[11806],{"type":68,"value":4442},{"type":62,"tag":242,"props":11808,"children":11809},{"style":1452},[11810],{"type":68,"value":1403},{"type":62,"tag":242,"props":11812,"children":11813},{"style":281},[11814],{"type":68,"value":2059},{"type":62,"tag":242,"props":11816,"children":11817},{"style":1441},[11818],{"type":68,"value":5456},{"type":62,"tag":242,"props":11820,"children":11821},{"style":271},[11822],{"type":68,"value":2274},{"type":62,"tag":242,"props":11824,"children":11825},{"style":1724},[11826],{"type":68,"value":11323},{"type":62,"tag":242,"props":11828,"children":11829},{"style":281},[11830],{"type":68,"value":411},{"type":62,"tag":242,"props":11832,"children":11833},{"style":271},[11834],{"type":68,"value":6218},{"type":62,"tag":242,"props":11836,"children":11837},{"style":1482},[11838],{"type":68,"value":11336},{"type":62,"tag":242,"props":11840,"children":11841},{"style":271},[11842],{"type":68,"value":6218},{"type":62,"tag":242,"props":11844,"children":11845},{"style":271},[11846],{"type":68,"value":429},{"type":62,"tag":242,"props":11848,"children":11849},{"style":271},[11850],{"type":68,"value":1449},{"type":62,"tag":242,"props":11852,"children":11853},{"style":281},[11854],{"type":68,"value":11353},{"type":62,"tag":242,"props":11856,"children":11857},{"style":271},[11858],{"type":68,"value":304},{"type":62,"tag":242,"props":11860,"children":11861},{"style":1607},[11862],{"type":68,"value":11362},{"type":62,"tag":242,"props":11864,"children":11865},{"style":271},[11866],{"type":68,"value":1469},{"type":62,"tag":242,"props":11868,"children":11869},{"style":281},[11870],{"type":68,"value":2217},{"type":62,"tag":242,"props":11872,"children":11873},{"class":244,"line":2220},[11874],{"type":62,"tag":242,"props":11875,"children":11876},{"emptyLinePlaceholder":649},[11877],{"type":68,"value":652},{"type":62,"tag":242,"props":11879,"children":11880},{"class":244,"line":2246},[11881],{"type":62,"tag":242,"props":11882,"children":11883},{"style":249},[11884],{"type":68,"value":11885},"  \u002F\u002F `accept-ranges` on every response, including the whole-file one: it is how\n",{"type":62,"tag":242,"props":11887,"children":11888},{"class":244,"line":2255},[11889],{"type":62,"tag":242,"props":11890,"children":11891},{"style":249},[11892],{"type":68,"value":11893},"  \u002F\u002F a player learns it may seek at all.\n",{"type":62,"tag":242,"props":11895,"children":11896},{"class":244,"line":2293},[11897,11901,11906,11910],{"type":62,"tag":242,"props":11898,"children":11899},{"style":259},[11900],{"type":68,"value":1889},{"type":62,"tag":242,"props":11902,"children":11903},{"style":1452},[11904],{"type":68,"value":11905}," headers",{"type":62,"tag":242,"props":11907,"children":11908},{"style":271},[11909],{"type":68,"value":1920},{"type":62,"tag":242,"props":11911,"children":11912},{"style":271},[11913],{"type":68,"value":274},{"type":62,"tag":242,"props":11915,"children":11916},{"class":244,"line":2315},[11917,11922,11927,11931,11935,11939,11943,11947],{"type":62,"tag":242,"props":11918,"children":11919},{"style":271},[11920],{"type":68,"value":11921},"    '",{"type":62,"tag":242,"props":11923,"children":11924},{"style":281},[11925],{"type":68,"value":11926},"content-type",{"type":62,"tag":242,"props":11928,"children":11929},{"style":271},[11930],{"type":68,"value":6218},{"type":62,"tag":242,"props":11932,"children":11933},{"style":271},[11934],{"type":68,"value":304},{"type":62,"tag":242,"props":11936,"children":11937},{"style":1452},[11938],{"type":68,"value":11253},{"type":62,"tag":242,"props":11940,"children":11941},{"style":271},[11942],{"type":68,"value":174},{"type":62,"tag":242,"props":11944,"children":11945},{"style":1452},[11946],{"type":68,"value":8818},{"type":62,"tag":242,"props":11948,"children":11949},{"style":271},[11950],{"type":68,"value":314},{"type":62,"tag":242,"props":11952,"children":11953},{"class":244,"line":2354},[11954,11958,11963,11967,11971,11975,11979,11983],{"type":62,"tag":242,"props":11955,"children":11956},{"style":271},[11957],{"type":68,"value":11921},{"type":62,"tag":242,"props":11959,"children":11960},{"style":281},[11961],{"type":68,"value":11962},"accept-ranges",{"type":62,"tag":242,"props":11964,"children":11965},{"style":271},[11966],{"type":68,"value":6218},{"type":62,"tag":242,"props":11968,"children":11969},{"style":271},[11970],{"type":68,"value":304},{"type":62,"tag":242,"props":11972,"children":11973},{"style":271},[11974],{"type":68,"value":1479},{"type":62,"tag":242,"props":11976,"children":11977},{"style":1482},[11978],{"type":68,"value":3393},{"type":62,"tag":242,"props":11980,"children":11981},{"style":271},[11982],{"type":68,"value":6218},{"type":62,"tag":242,"props":11984,"children":11985},{"style":271},[11986],{"type":68,"value":314},{"type":62,"tag":242,"props":11988,"children":11989},{"class":244,"line":2393},[11990],{"type":62,"tag":242,"props":11991,"children":11992},{"style":271},[11993],{"type":68,"value":2252},{"type":62,"tag":242,"props":11995,"children":11996},{"class":244,"line":2418},[11997,12001,12005,12009,12013,12017,12021,12025],{"type":62,"tag":242,"props":11998,"children":11999},{"style":1441},[12000],{"type":68,"value":2450},{"type":62,"tag":242,"props":12002,"children":12003},{"style":281},[12004],{"type":68,"value":2039},{"type":62,"tag":242,"props":12006,"children":12007},{"style":271},[12008],{"type":68,"value":2459},{"type":62,"tag":242,"props":12010,"children":12011},{"style":1452},[12012],{"type":68,"value":11802},{"type":62,"tag":242,"props":12014,"children":12015},{"style":271},[12016],{"type":68,"value":174},{"type":62,"tag":242,"props":12018,"children":12019},{"style":1452},[12020],{"type":68,"value":1253},{"type":62,"tag":242,"props":12022,"children":12023},{"style":281},[12024],{"type":68,"value":2059},{"type":62,"tag":242,"props":12026,"children":12027},{"style":271},[12028],{"type":68,"value":2064},{"type":62,"tag":242,"props":12030,"children":12031},{"class":244,"line":2426},[12032,12036,12040,12044,12048,12052,12056,12060,12064],{"type":62,"tag":242,"props":12033,"children":12034},{"style":1441},[12035],{"type":68,"value":2498},{"type":62,"tag":242,"props":12037,"children":12038},{"style":271},[12039],{"type":68,"value":2274},{"type":62,"tag":242,"props":12041,"children":12042},{"style":1724},[12043],{"type":68,"value":11323},{"type":62,"tag":242,"props":12045,"children":12046},{"style":281},[12047],{"type":68,"value":411},{"type":62,"tag":242,"props":12049,"children":12050},{"style":1452},[12051],{"type":68,"value":11802},{"type":62,"tag":242,"props":12053,"children":12054},{"style":271},[12055],{"type":68,"value":174},{"type":62,"tag":242,"props":12057,"children":12058},{"style":1452},[12059],{"type":68,"value":1403},{"type":62,"tag":242,"props":12061,"children":12062},{"style":271},[12063],{"type":68,"value":429},{"type":62,"tag":242,"props":12065,"children":12066},{"style":271},[12067],{"type":68,"value":274},{"type":62,"tag":242,"props":12069,"children":12070},{"class":244,"line":2435},[12071,12075,12079,12083,12088,12092,12096,12100,12104,12108,12112,12117,12121,12125,12129,12133,12137],{"type":62,"tag":242,"props":12072,"children":12073},{"style":281},[12074],{"type":68,"value":11596},{"type":62,"tag":242,"props":12076,"children":12077},{"style":271},[12078],{"type":68,"value":304},{"type":62,"tag":242,"props":12080,"children":12081},{"style":271},[12082],{"type":68,"value":1449},{"type":62,"tag":242,"props":12084,"children":12085},{"style":271},[12086],{"type":68,"value":12087}," ...",{"type":62,"tag":242,"props":12089,"children":12090},{"style":1452},[12091],{"type":68,"value":11439},{"type":62,"tag":242,"props":12093,"children":12094},{"style":271},[12095],{"type":68,"value":429},{"type":62,"tag":242,"props":12097,"children":12098},{"style":271},[12099],{"type":68,"value":1479},{"type":62,"tag":242,"props":12101,"children":12102},{"style":281},[12103],{"type":68,"value":1097},{"type":62,"tag":242,"props":12105,"children":12106},{"style":271},[12107],{"type":68,"value":6218},{"type":62,"tag":242,"props":12109,"children":12110},{"style":271},[12111],{"type":68,"value":304},{"type":62,"tag":242,"props":12113,"children":12114},{"style":1724},[12115],{"type":68,"value":12116}," String",{"type":62,"tag":242,"props":12118,"children":12119},{"style":281},[12120],{"type":68,"value":411},{"type":62,"tag":242,"props":12122,"children":12123},{"style":1452},[12124],{"type":68,"value":696},{"type":62,"tag":242,"props":12126,"children":12127},{"style":271},[12128],{"type":68,"value":174},{"type":62,"tag":242,"props":12130,"children":12131},{"style":1452},[12132],{"type":68,"value":1304},{"type":62,"tag":242,"props":12134,"children":12135},{"style":281},[12136],{"type":68,"value":2059},{"type":62,"tag":242,"props":12138,"children":12139},{"style":271},[12140],{"type":68,"value":12141},"},\n",{"type":62,"tag":242,"props":12143,"children":12144},{"class":244,"line":2444},[12145,12149],{"type":62,"tag":242,"props":12146,"children":12147},{"style":271},[12148],{"type":68,"value":10754},{"type":62,"tag":242,"props":12150,"children":12151},{"style":281},[12152],{"type":68,"value":2217},{"type":62,"tag":242,"props":12154,"children":12155},{"class":244,"line":2492},[12156],{"type":62,"tag":242,"props":12157,"children":12158},{"style":271},[12159],{"type":68,"value":2252},{"type":62,"tag":242,"props":12161,"children":12162},{"class":244,"line":2505},[12163,12167,12171,12175,12179,12183,12187,12191,12195,12199],{"type":62,"tag":242,"props":12164,"children":12165},{"style":259},[12166],{"type":68,"value":1889},{"type":62,"tag":242,"props":12168,"children":12169},{"style":271},[12170],{"type":68,"value":1449},{"type":62,"tag":242,"props":12172,"children":12173},{"style":1452},[12174],{"type":68,"value":2303},{"type":62,"tag":242,"props":12176,"children":12177},{"style":271},[12178],{"type":68,"value":429},{"type":62,"tag":242,"props":12180,"children":12181},{"style":1452},[12182],{"type":68,"value":6048},{"type":62,"tag":242,"props":12184,"children":12185},{"style":271},[12186],{"type":68,"value":1469},{"type":62,"tag":242,"props":12188,"children":12189},{"style":271},[12190],{"type":68,"value":1920},{"type":62,"tag":242,"props":12192,"children":12193},{"style":1452},[12194],{"type":68,"value":11700},{"type":62,"tag":242,"props":12196,"children":12197},{"style":271},[12198],{"type":68,"value":174},{"type":62,"tag":242,"props":12200,"children":12201},{"style":1452},[12202],{"type":68,"value":12203},"range\n",{"type":62,"tag":242,"props":12205,"children":12206},{"class":244,"line":2557},[12207,12211,12215,12219,12223,12227,12231,12235,12239],{"type":62,"tag":242,"props":12208,"children":12209},{"style":1441},[12210],{"type":68,"value":2633},{"type":62,"tag":242,"props":12212,"children":12213},{"style":271},[12214],{"type":68,"value":2274},{"type":62,"tag":242,"props":12216,"children":12217},{"style":1724},[12218],{"type":68,"value":11323},{"type":62,"tag":242,"props":12220,"children":12221},{"style":281},[12222],{"type":68,"value":411},{"type":62,"tag":242,"props":12224,"children":12225},{"style":1452},[12226],{"type":68,"value":11802},{"type":62,"tag":242,"props":12228,"children":12229},{"style":271},[12230],{"type":68,"value":174},{"type":62,"tag":242,"props":12232,"children":12233},{"style":1452},[12234],{"type":68,"value":1403},{"type":62,"tag":242,"props":12236,"children":12237},{"style":271},[12238],{"type":68,"value":429},{"type":62,"tag":242,"props":12240,"children":12241},{"style":271},[12242],{"type":68,"value":274},{"type":62,"tag":242,"props":12244,"children":12245},{"class":244,"line":2599},[12246,12251,12255,12260],{"type":62,"tag":242,"props":12247,"children":12248},{"style":281},[12249],{"type":68,"value":12250},"    status",{"type":62,"tag":242,"props":12252,"children":12253},{"style":271},[12254],{"type":68,"value":304},{"type":62,"tag":242,"props":12256,"children":12257},{"style":1607},[12258],{"type":68,"value":12259}," 206",{"type":62,"tag":242,"props":12261,"children":12262},{"style":271},[12263],{"type":68,"value":314},{"type":62,"tag":242,"props":12265,"children":12266},{"class":244,"line":2611},[12267,12272,12276],{"type":62,"tag":242,"props":12268,"children":12269},{"style":281},[12270],{"type":68,"value":12271},"    headers",{"type":62,"tag":242,"props":12273,"children":12274},{"style":271},[12275],{"type":68,"value":304},{"type":62,"tag":242,"props":12277,"children":12278},{"style":271},[12279],{"type":68,"value":274},{"type":62,"tag":242,"props":12281,"children":12282},{"class":244,"line":2619},[12283,12288,12292],{"type":62,"tag":242,"props":12284,"children":12285},{"style":271},[12286],{"type":68,"value":12287},"      ...",{"type":62,"tag":242,"props":12289,"children":12290},{"style":1452},[12291],{"type":68,"value":11439},{"type":62,"tag":242,"props":12293,"children":12294},{"style":271},[12295],{"type":68,"value":314},{"type":62,"tag":242,"props":12297,"children":12298},{"class":244,"line":2627},[12299,12304,12308,12312,12316,12320,12324,12328,12332],{"type":62,"tag":242,"props":12300,"children":12301},{"style":271},[12302],{"type":68,"value":12303},"      '",{"type":62,"tag":242,"props":12305,"children":12306},{"style":281},[12307],{"type":68,"value":1097},{"type":62,"tag":242,"props":12309,"children":12310},{"style":271},[12311],{"type":68,"value":6218},{"type":62,"tag":242,"props":12313,"children":12314},{"style":271},[12315],{"type":68,"value":304},{"type":62,"tag":242,"props":12317,"children":12318},{"style":1724},[12319],{"type":68,"value":12116},{"type":62,"tag":242,"props":12321,"children":12322},{"style":281},[12323],{"type":68,"value":411},{"type":62,"tag":242,"props":12325,"children":12326},{"style":1452},[12327],{"type":68,"value":6065},{"type":62,"tag":242,"props":12329,"children":12330},{"style":281},[12331],{"type":68,"value":2550},{"type":62,"tag":242,"props":12333,"children":12334},{"style":271},[12335],{"type":68,"value":314},{"type":62,"tag":242,"props":12337,"children":12338},{"class":244,"line":2697},[12339,12343,12347,12351,12355,12359,12364,12368,12372,12376,12381,12385,12390,12395,12400,12404,12409,12413,12417,12421,12425,12429,12433,12437],{"type":62,"tag":242,"props":12340,"children":12341},{"style":271},[12342],{"type":68,"value":12303},{"type":62,"tag":242,"props":12344,"children":12345},{"style":281},[12346],{"type":68,"value":11613},{"type":62,"tag":242,"props":12348,"children":12349},{"style":271},[12350],{"type":68,"value":6218},{"type":62,"tag":242,"props":12352,"children":12353},{"style":271},[12354],{"type":68,"value":304},{"type":62,"tag":242,"props":12356,"children":12357},{"style":271},[12358],{"type":68,"value":11626},{"type":62,"tag":242,"props":12360,"children":12361},{"style":1482},[12362],{"type":68,"value":12363},"bytes ",{"type":62,"tag":242,"props":12365,"children":12366},{"style":271},[12367],{"type":68,"value":3887},{"type":62,"tag":242,"props":12369,"children":12370},{"style":1452},[12371],{"type":68,"value":6039},{"type":62,"tag":242,"props":12373,"children":12374},{"style":271},[12375],{"type":68,"value":3896},{"type":62,"tag":242,"props":12377,"children":12378},{"style":1482},[12379],{"type":68,"value":12380},"-",{"type":62,"tag":242,"props":12382,"children":12383},{"style":271},[12384],{"type":68,"value":3887},{"type":62,"tag":242,"props":12386,"children":12387},{"style":1452},[12388],{"type":68,"value":12389},"offset ",{"type":62,"tag":242,"props":12391,"children":12392},{"style":271},[12393],{"type":68,"value":12394},"+",{"type":62,"tag":242,"props":12396,"children":12397},{"style":1452},[12398],{"type":68,"value":12399}," length ",{"type":62,"tag":242,"props":12401,"children":12402},{"style":271},[12403],{"type":68,"value":12380},{"type":62,"tag":242,"props":12405,"children":12406},{"style":1607},[12407],{"type":68,"value":12408}," 1",{"type":62,"tag":242,"props":12410,"children":12411},{"style":271},[12412],{"type":68,"value":3896},{"type":62,"tag":242,"props":12414,"children":12415},{"style":1482},[12416],{"type":68,"value":9615},{"type":62,"tag":242,"props":12418,"children":12419},{"style":271},[12420],{"type":68,"value":3887},{"type":62,"tag":242,"props":12422,"children":12423},{"style":1452},[12424],{"type":68,"value":696},{"type":62,"tag":242,"props":12426,"children":12427},{"style":271},[12428],{"type":68,"value":174},{"type":62,"tag":242,"props":12430,"children":12431},{"style":1452},[12432],{"type":68,"value":1304},{"type":62,"tag":242,"props":12434,"children":12435},{"style":271},[12436],{"type":68,"value":5237},{"type":62,"tag":242,"props":12438,"children":12439},{"style":271},[12440],{"type":68,"value":314},{"type":62,"tag":242,"props":12442,"children":12443},{"class":244,"line":2705},[12444],{"type":62,"tag":242,"props":12445,"children":12446},{"style":271},[12447],{"type":68,"value":5275},{"type":62,"tag":242,"props":12449,"children":12450},{"class":244,"line":2713},[12451,12455],{"type":62,"tag":242,"props":12452,"children":12453},{"style":271},[12454],{"type":68,"value":4109},{"type":62,"tag":242,"props":12456,"children":12457},{"style":281},[12458],{"type":68,"value":2217},{"type":62,"tag":242,"props":12460,"children":12461},{"class":244,"line":2722},[12462],{"type":62,"tag":242,"props":12463,"children":12464},{"style":271},[12465],{"type":68,"value":642},{"type":62,"tag":71,"props":12467,"children":12468},{},[12469,12471,12476,12477,12483,12485,12490,12492,12498,12500,12506,12507,12513,12515,12521],{"type":68,"value":12470},"To hydrate a ",{"type":62,"tag":100,"props":12472,"children":12473},{},[12474],{"type":68,"value":12475},"server-driven generation client",{"type":68,"value":2039},{"type":62,"tag":75,"props":12478,"children":12480},{"className":12479},[],[12481],{"type":68,"value":12482},"persistence: true",{"type":68,"value":12484}," + a stable\n",{"type":62,"tag":75,"props":12486,"children":12488},{"className":12487},[],[12489],{"type":68,"value":8753},{"type":68,"value":12491},") on mount, also expose ",{"type":62,"tag":75,"props":12493,"children":12495},{"className":12494},[],[12496],{"type":68,"value":12497},"reconstructGeneration(persistence, request)",{"type":68,"value":12499},"\non a GET that reads ",{"type":62,"tag":75,"props":12501,"children":12503},{"className":12502},[],[12504],{"type":68,"value":12505},"?threadId=",{"type":68,"value":166},{"type":62,"tag":75,"props":12508,"children":12510},{"className":12509},[],[12511],{"type":68,"value":12512},"?runId=",{"type":68,"value":12514}," — see ",{"type":62,"tag":75,"props":12516,"children":12518},{"className":12517},[],[12519],{"type":68,"value":12520},"ai-core\u002Fclient-persistence",{"type":68,"value":174},{"type":62,"tag":196,"props":12523,"children":12525},{"id":12524},"other-backends-the-contract-is-tiny-heres-how-each-maps",[12526],{"type":68,"value":12527},"Other backends — the contract is tiny, here's how each maps",{"type":62,"tag":71,"props":12529,"children":12530},{},[12531,12537,12539,12544,12546,12551,12553,12558,12559,12564,12565,12570,12571,12576,12578,12583,12585,12590],{"type":62,"tag":75,"props":12532,"children":12534},{"className":12533},[],[12535],{"type":68,"value":12536},"BlobStore",{"type":68,"value":12538}," is five methods over an object store. Any of these backs it; swap the\nfactory, keep everything else. ",{"type":62,"tag":75,"props":12540,"children":12542},{"className":12541},[],[12543],{"type":68,"value":988},{"type":68,"value":12545}," maps to the SDK's upload, ",{"type":62,"tag":75,"props":12547,"children":12549},{"className":12548},[],[12550],{"type":68,"value":1379},{"type":68,"value":12552}," to a\ndownload that exposes ",{"type":62,"tag":75,"props":12554,"children":12556},{"className":12555},[],[12557],{"type":68,"value":1403},{"type":68,"value":9615},{"type":62,"tag":75,"props":12560,"children":12562},{"className":12561},[],[12563],{"type":68,"value":5568},{"type":68,"value":9615},{"type":62,"tag":75,"props":12566,"children":12568},{"className":12567},[],[12569],{"type":68,"value":68},{"type":68,"value":1306},{"type":62,"tag":75,"props":12572,"children":12574},{"className":12573},[],[12575],{"type":68,"value":1387},{"type":68,"value":12577}," to a metadata fetch,\n",{"type":62,"tag":75,"props":12579,"children":12581},{"className":12580},[],[12582],{"type":68,"value":6705},{"type":68,"value":12584}," to a delete, ",{"type":62,"tag":75,"props":12586,"children":12588},{"className":12587},[],[12589],{"type":68,"value":6884},{"type":68,"value":12591}," to a prefixed, cursor-paged list.",{"type":62,"tag":1049,"props":12593,"children":12594},{},[12595,12615],{"type":62,"tag":1053,"props":12596,"children":12597},{},[12598],{"type":62,"tag":1057,"props":12599,"children":12600},{},[12601,12605,12610],{"type":62,"tag":1061,"props":12602,"children":12603},{},[12604],{"type":68,"value":14},{"type":62,"tag":1061,"props":12606,"children":12607},{},[12608],{"type":68,"value":12609},"npm",{"type":62,"tag":1061,"props":12611,"children":12612},{},[12613],{"type":68,"value":12614},"One-line sketch",{"type":62,"tag":1082,"props":12616,"children":12617},{},[12618,12784,12895,13012,13142],{"type":62,"tag":1057,"props":12619,"children":12620},{},[12621,12629,12638],{"type":62,"tag":1089,"props":12622,"children":12623},{},[12624],{"type":62,"tag":100,"props":12625,"children":12626},{},[12627],{"type":68,"value":12628},"AWS S3",{"type":62,"tag":1089,"props":12630,"children":12631},{},[12632],{"type":62,"tag":75,"props":12633,"children":12635},{"className":12634},[],[12636],{"type":68,"value":12637},"@aws-sdk\u002Fclient-s3",{"type":62,"tag":1089,"props":12639,"children":12640},{},[12641,12646,12648,12654,12655,12660,12661,12667,12668,12674,12676,12681,12682,12688,12689,12695,12697,12702,12703,12709,12710,12715,12716,12722,12723,12728,12729,12735,12736,12742,12743,12749,12751,12756,12757,12763,12764,12769,12770,12776,12777,12782],{"type":62,"tag":75,"props":12642,"children":12644},{"className":12643},[],[12645],{"type":68,"value":988},{"type":68,"value":12647},"→",{"type":62,"tag":75,"props":12649,"children":12651},{"className":12650},[],[12652],{"type":68,"value":12653},"PutObjectCommand",{"type":68,"value":1232},{"type":62,"tag":75,"props":12656,"children":12658},{"className":12657},[],[12659],{"type":68,"value":1379},{"type":68,"value":12647},{"type":62,"tag":75,"props":12662,"children":12664},{"className":12663},[],[12665],{"type":68,"value":12666},"GetObjectCommand",{"type":68,"value":2039},{"type":62,"tag":75,"props":12669,"children":12671},{"className":12670},[],[12672],{"type":68,"value":12673},"Body",{"type":68,"value":12675}," is a stream → ",{"type":62,"tag":75,"props":12677,"children":12679},{"className":12678},[],[12680],{"type":68,"value":1403},{"type":68,"value":1306},{"type":62,"tag":75,"props":12683,"children":12685},{"className":12684},[],[12686],{"type":68,"value":12687},".transformToByteArray()",{"type":68,"value":9615},{"type":62,"tag":75,"props":12690,"children":12692},{"className":12691},[],[12693],{"type":68,"value":12694},".transformToString()",{"type":68,"value":12696},"); ",{"type":62,"tag":75,"props":12698,"children":12700},{"className":12699},[],[12701],{"type":68,"value":1387},{"type":68,"value":12647},{"type":62,"tag":75,"props":12704,"children":12706},{"className":12705},[],[12707],{"type":68,"value":12708},"HeadObjectCommand",{"type":68,"value":1232},{"type":62,"tag":75,"props":12711,"children":12713},{"className":12712},[],[12714],{"type":68,"value":6705},{"type":68,"value":12647},{"type":62,"tag":75,"props":12717,"children":12719},{"className":12718},[],[12720],{"type":68,"value":12721},"DeleteObjectCommand",{"type":68,"value":1232},{"type":62,"tag":75,"props":12724,"children":12726},{"className":12725},[],[12727],{"type":68,"value":6884},{"type":68,"value":12647},{"type":62,"tag":75,"props":12730,"children":12732},{"className":12731},[],[12733],{"type":68,"value":12734},"ListObjectsV2Command",{"type":68,"value":2039},{"type":62,"tag":75,"props":12737,"children":12739},{"className":12738},[],[12740],{"type":68,"value":12741},"Prefix",{"type":68,"value":1306},{"type":62,"tag":75,"props":12744,"children":12746},{"className":12745},[],[12747],{"type":68,"value":12748},"ContinuationToken",{"type":68,"value":12750},"↔",{"type":62,"tag":75,"props":12752,"children":12754},{"className":12753},[],[12755],{"type":68,"value":6999},{"type":68,"value":1306},{"type":62,"tag":75,"props":12758,"children":12760},{"className":12759},[],[12761],{"type":68,"value":12762},"MaxKeys",{"type":68,"value":12750},{"type":62,"tag":75,"props":12765,"children":12767},{"className":12766},[],[12768],{"type":68,"value":2588},{"type":68,"value":1306},{"type":62,"tag":75,"props":12771,"children":12773},{"className":12772},[],[12774],{"type":68,"value":12775},"IsTruncated",{"type":68,"value":12750},{"type":62,"tag":75,"props":12778,"children":12780},{"className":12779},[],[12781],{"type":68,"value":7301},{"type":68,"value":12783},").",{"type":62,"tag":1057,"props":12785,"children":12786},{},[12787,12795,12804],{"type":62,"tag":1089,"props":12788,"children":12789},{},[12790],{"type":62,"tag":100,"props":12791,"children":12792},{},[12793],{"type":68,"value":12794},"Google Cloud Storage",{"type":62,"tag":1089,"props":12796,"children":12797},{},[12798],{"type":62,"tag":75,"props":12799,"children":12801},{"className":12800},[],[12802],{"type":68,"value":12803},"@google-cloud\u002Fstorage",{"type":62,"tag":1089,"props":12805,"children":12806},{},[12807,12813,12815,12820,12821,12827,12828,12833,12834,12840,12841,12846,12848,12854,12856,12861,12862,12868,12869,12874,12875,12881,12882,12887,12888,12894],{"type":62,"tag":75,"props":12808,"children":12810},{"className":12809},[],[12811],{"type":68,"value":12812},"bucket.file(key)",{"type":68,"value":12814},": ",{"type":62,"tag":75,"props":12816,"children":12818},{"className":12817},[],[12819],{"type":68,"value":988},{"type":68,"value":12647},{"type":62,"tag":75,"props":12822,"children":12824},{"className":12823},[],[12825],{"type":68,"value":12826},".save(body, { contentType, metadata })",{"type":68,"value":1232},{"type":62,"tag":75,"props":12829,"children":12831},{"className":12830},[],[12832],{"type":68,"value":1379},{"type":68,"value":12647},{"type":62,"tag":75,"props":12835,"children":12837},{"className":12836},[],[12838],{"type":68,"value":12839},".createReadStream()",{"type":68,"value":7644},{"type":62,"tag":75,"props":12842,"children":12844},{"className":12843},[],[12845],{"type":68,"value":1403},{"type":68,"value":12847}," + ",{"type":62,"tag":75,"props":12849,"children":12851},{"className":12850},[],[12852],{"type":68,"value":12853},".download()",{"type":68,"value":12855}," for bytes; ",{"type":62,"tag":75,"props":12857,"children":12859},{"className":12858},[],[12860],{"type":68,"value":1387},{"type":68,"value":12647},{"type":62,"tag":75,"props":12863,"children":12865},{"className":12864},[],[12866],{"type":68,"value":12867},".getMetadata()",{"type":68,"value":1232},{"type":62,"tag":75,"props":12870,"children":12872},{"className":12871},[],[12873],{"type":68,"value":6705},{"type":68,"value":12647},{"type":62,"tag":75,"props":12876,"children":12878},{"className":12877},[],[12879],{"type":68,"value":12880},".delete({ ignoreNotFound: true })",{"type":68,"value":1232},{"type":62,"tag":75,"props":12883,"children":12885},{"className":12884},[],[12886],{"type":68,"value":6884},{"type":68,"value":12647},{"type":62,"tag":75,"props":12889,"children":12891},{"className":12890},[],[12892],{"type":68,"value":12893},"bucket.getFiles({ prefix, maxResults, pageToken })",{"type":68,"value":174},{"type":62,"tag":1057,"props":12896,"children":12897},{},[12898,12906,12915],{"type":62,"tag":1089,"props":12899,"children":12900},{},[12901],{"type":62,"tag":100,"props":12902,"children":12903},{},[12904],{"type":68,"value":12905},"Vercel Blob",{"type":62,"tag":1089,"props":12907,"children":12908},{},[12909],{"type":62,"tag":75,"props":12910,"children":12912},{"className":12911},[],[12913],{"type":68,"value":12914},"@vercel\u002Fblob",{"type":62,"tag":1089,"props":12916,"children":12917},{},[12918,12923,12924,12930,12931,12936,12937,12943,12945,12951,12952,12957,12958,12964,12966,12971,12973,12978,12979,12985,12986,12991,12992,12998,12999,13005,13006,13011],{"type":62,"tag":75,"props":12919,"children":12921},{"className":12920},[],[12922],{"type":68,"value":988},{"type":68,"value":12647},{"type":62,"tag":75,"props":12925,"children":12927},{"className":12926},[],[12928],{"type":68,"value":12929},"put(key, body, { access: 'public', contentType })",{"type":68,"value":1232},{"type":62,"tag":75,"props":12932,"children":12934},{"className":12933},[],[12935],{"type":68,"value":1379},{"type":68,"value":12647},{"type":62,"tag":75,"props":12938,"children":12940},{"className":12939},[],[12941],{"type":68,"value":12942},"fetch(head(key).url)",{"type":68,"value":12944}," (stream ",{"type":62,"tag":75,"props":12946,"children":12948},{"className":12947},[],[12949],{"type":68,"value":12950},"res.body",{"type":68,"value":12696},{"type":62,"tag":75,"props":12953,"children":12955},{"className":12954},[],[12956],{"type":68,"value":1387},{"type":68,"value":12647},{"type":62,"tag":75,"props":12959,"children":12961},{"className":12960},[],[12962],{"type":68,"value":12963},"head(key)",{"type":68,"value":12965}," (returns ",{"type":62,"tag":75,"props":12967,"children":12969},{"className":12968},[],[12970],{"type":68,"value":7435},{"type":68,"value":12972},"→catch as absent); ",{"type":62,"tag":75,"props":12974,"children":12976},{"className":12975},[],[12977],{"type":68,"value":6705},{"type":68,"value":12647},{"type":62,"tag":75,"props":12980,"children":12982},{"className":12981},[],[12983],{"type":68,"value":12984},"del(key)",{"type":68,"value":1232},{"type":62,"tag":75,"props":12987,"children":12989},{"className":12988},[],[12990],{"type":68,"value":6884},{"type":68,"value":12647},{"type":62,"tag":75,"props":12993,"children":12995},{"className":12994},[],[12996],{"type":68,"value":12997},"list({ prefix, cursor, limit })",{"type":68,"value":2039},{"type":62,"tag":75,"props":13000,"children":13002},{"className":13001},[],[13003],{"type":68,"value":13004},"hasMore",{"type":68,"value":12750},{"type":62,"tag":75,"props":13007,"children":13009},{"className":13008},[],[13010],{"type":68,"value":7301},{"type":68,"value":12783},{"type":62,"tag":1057,"props":13013,"children":13014},{},[13015,13023,13032],{"type":62,"tag":1089,"props":13016,"children":13017},{},[13018],{"type":62,"tag":100,"props":13019,"children":13020},{},[13021],{"type":68,"value":13022},"Supabase Storage",{"type":62,"tag":1089,"props":13024,"children":13025},{},[13026],{"type":62,"tag":75,"props":13027,"children":13029},{"className":13028},[],[13030],{"type":68,"value":13031},"@supabase\u002Fsupabase-js",{"type":62,"tag":1089,"props":13033,"children":13034},{},[13035,13041,13042,13047,13048,13054,13055,13060,13061,13067,13069,13075,13077,13082,13083,13088,13089,13094,13095,13100,13101,13107,13109,13114,13115,13121,13122,13127,13128,13134,13136,13141],{"type":62,"tag":75,"props":13036,"children":13038},{"className":13037},[],[13039],{"type":68,"value":13040},"storage.from(bucket)",{"type":68,"value":12814},{"type":62,"tag":75,"props":13043,"children":13045},{"className":13044},[],[13046],{"type":68,"value":988},{"type":68,"value":12647},{"type":62,"tag":75,"props":13049,"children":13051},{"className":13050},[],[13052],{"type":68,"value":13053},".upload(key, body, { contentType, upsert: true })",{"type":68,"value":1232},{"type":62,"tag":75,"props":13056,"children":13058},{"className":13057},[],[13059],{"type":68,"value":1379},{"type":68,"value":12647},{"type":62,"tag":75,"props":13062,"children":13064},{"className":13063},[],[13065],{"type":68,"value":13066},".download(key)",{"type":68,"value":13068}," (returns a ",{"type":62,"tag":75,"props":13070,"children":13072},{"className":13071},[],[13073],{"type":68,"value":13074},"Blob",{"type":68,"value":13076}," → ",{"type":62,"tag":75,"props":13078,"children":13080},{"className":13079},[],[13081],{"type":68,"value":1403},{"type":68,"value":9615},{"type":62,"tag":75,"props":13084,"children":13086},{"className":13085},[],[13087],{"type":68,"value":5568},{"type":68,"value":9615},{"type":62,"tag":75,"props":13090,"children":13092},{"className":13091},[],[13093],{"type":68,"value":68},{"type":68,"value":12696},{"type":62,"tag":75,"props":13096,"children":13098},{"className":13097},[],[13099],{"type":68,"value":1387},{"type":68,"value":12647},{"type":62,"tag":75,"props":13102,"children":13104},{"className":13103},[],[13105],{"type":68,"value":13106},".info(key)",{"type":68,"value":13108}," or list-one; ",{"type":62,"tag":75,"props":13110,"children":13112},{"className":13111},[],[13113],{"type":68,"value":6705},{"type":68,"value":12647},{"type":62,"tag":75,"props":13116,"children":13118},{"className":13117},[],[13119],{"type":68,"value":13120},".remove([key])",{"type":68,"value":1232},{"type":62,"tag":75,"props":13123,"children":13125},{"className":13124},[],[13126],{"type":68,"value":6884},{"type":68,"value":12647},{"type":62,"tag":75,"props":13129,"children":13131},{"className":13130},[],[13132],{"type":68,"value":13133},".list(prefix, { limit })",{"type":68,"value":13135}," (offset\u002Flimit paging → synthesize a ",{"type":62,"tag":75,"props":13137,"children":13139},{"className":13138},[],[13140],{"type":68,"value":6999},{"type":68,"value":12783},{"type":62,"tag":1057,"props":13143,"children":13144},{},[13145,13153,13162],{"type":62,"tag":1089,"props":13146,"children":13147},{},[13148],{"type":62,"tag":100,"props":13149,"children":13150},{},[13151],{"type":68,"value":13152},"Filesystem (dev only)",{"type":62,"tag":1089,"props":13154,"children":13155},{},[13156],{"type":62,"tag":75,"props":13157,"children":13159},{"className":13158},[],[13160],{"type":68,"value":13161},"node:fs\u002Fpromises",{"type":62,"tag":1089,"props":13163,"children":13164},{},[13165,13167,13172,13173,13179,13180,13186,13187,13192,13193,13199,13200,13205,13206,13212,13213,13218,13219,13225,13226,13231,13232,13238,13239,13244,13245,13250,13251,13257,13258,13263,13265,13271,13273,13278],{"type":68,"value":13166},"Root each key under a dir: ",{"type":62,"tag":75,"props":13168,"children":13170},{"className":13169},[],[13171],{"type":68,"value":988},{"type":68,"value":12647},{"type":62,"tag":75,"props":13174,"children":13176},{"className":13175},[],[13177],{"type":68,"value":13178},"mkdir(dirname, { recursive: true })",{"type":68,"value":12847},{"type":62,"tag":75,"props":13181,"children":13183},{"className":13182},[],[13184],{"type":68,"value":13185},"writeFile",{"type":68,"value":1232},{"type":62,"tag":75,"props":13188,"children":13190},{"className":13189},[],[13191],{"type":68,"value":1379},{"type":68,"value":12647},{"type":62,"tag":75,"props":13194,"children":13196},{"className":13195},[],[13197],{"type":68,"value":13198},"createReadStream",{"type":68,"value":7644},{"type":62,"tag":75,"props":13201,"children":13203},{"className":13202},[],[13204],{"type":68,"value":1403},{"type":68,"value":12847},{"type":62,"tag":75,"props":13207,"children":13209},{"className":13208},[],[13210],{"type":68,"value":13211},"readFile",{"type":68,"value":1232},{"type":62,"tag":75,"props":13214,"children":13216},{"className":13215},[],[13217],{"type":68,"value":1387},{"type":68,"value":12647},{"type":62,"tag":75,"props":13220,"children":13222},{"className":13221},[],[13223],{"type":68,"value":13224},"stat",{"type":68,"value":2039},{"type":62,"tag":75,"props":13227,"children":13229},{"className":13228},[],[13230],{"type":68,"value":1304},{"type":68,"value":1306},{"type":62,"tag":75,"props":13233,"children":13235},{"className":13234},[],[13236],{"type":68,"value":13237},"mtimeMs",{"type":68,"value":12647},{"type":62,"tag":75,"props":13240,"children":13242},{"className":13241},[],[13243],{"type":68,"value":1364},{"type":68,"value":12696},{"type":62,"tag":75,"props":13246,"children":13248},{"className":13247},[],[13249],{"type":68,"value":6705},{"type":68,"value":12647},{"type":62,"tag":75,"props":13252,"children":13254},{"className":13253},[],[13255],{"type":68,"value":13256},"rm(path, { force: true })",{"type":68,"value":1232},{"type":62,"tag":75,"props":13259,"children":13261},{"className":13260},[],[13262],{"type":68,"value":6884},{"type":68,"value":13264},"→recursive ",{"type":62,"tag":75,"props":13266,"children":13268},{"className":13267},[],[13269],{"type":68,"value":13270},"readdir",{"type":68,"value":13272}," filtered by prefix, sorted, sliced by ",{"type":62,"tag":75,"props":13274,"children":13276},{"className":13275},[],[13277],{"type":68,"value":2588},{"type":68,"value":13279},", cursor = last key. Not for production — no concurrency guarantees.",{"type":62,"tag":71,"props":13281,"children":13282},{},[13283,13285,13290,13292,13297,13299,13305,13306,13311,13313,13318,13320,13325,13326,13331],{"type":68,"value":13284},"For each: ",{"type":62,"tag":75,"props":13286,"children":13288},{"className":13287},[],[13289],{"type":68,"value":4490},{"type":68,"value":13291}," and ",{"type":62,"tag":75,"props":13293,"children":13295},{"className":13294},[],[13296],{"type":68,"value":1326},{"type":68,"value":13298}," ride the SDK's own metadata fields;\n",{"type":62,"tag":75,"props":13300,"children":13302},{"className":13301},[],[13303],{"type":68,"value":13304},"BlobRecord.createdAt",{"type":68,"value":9615},{"type":62,"tag":75,"props":13307,"children":13309},{"className":13308},[],[13310],{"type":68,"value":1364},{"type":68,"value":13312}," come from the object's stored timestamps\n(epoch ms); return ",{"type":62,"tag":75,"props":13314,"children":13316},{"className":13315},[],[13317],{"type":68,"value":7435},{"type":68,"value":13319}," from ",{"type":62,"tag":75,"props":13321,"children":13323},{"className":13322},[],[13324],{"type":68,"value":1379},{"type":68,"value":9615},{"type":62,"tag":75,"props":13327,"children":13329},{"className":13328},[],[13330],{"type":68,"value":1387},{"type":68,"value":13332}," on a not-found rather than throwing.",{"type":62,"tag":196,"props":13334,"children":13336},{"id":13335},"verify",[13337],{"type":68,"value":13338},"Verify",{"type":62,"tag":71,"props":13340,"children":13341},{},[13342,13344,13350,13352,13358,13359,13364,13365,13370],{"type":68,"value":13343},"The shared ",{"type":62,"tag":75,"props":13345,"children":13347},{"className":13346},[],[13348],{"type":68,"value":13349},"runPersistenceConformance",{"type":68,"value":13351}," testkit covers all seven stores, including\n",{"type":62,"tag":75,"props":13353,"children":13355},{"className":13354},[],[13356],{"type":68,"value":13357},"generationRuns",{"type":68,"value":1306},{"type":62,"tag":75,"props":13360,"children":13362},{"className":13361},[],[13363],{"type":68,"value":10210},{"type":68,"value":1412},{"type":62,"tag":75,"props":13366,"children":13368},{"className":13367},[],[13369],{"type":68,"value":10217},{"type":68,"value":13371}," — point it at your factory rather than\nhand-writing these assertions:",{"type":62,"tag":231,"props":13373,"children":13375},{"className":233,"code":13374,"language":235,"meta":1431,"style":236},"import { runPersistenceConformance } from '@tanstack\u002Fai-persistence\u002Ftestkit'\nimport { env } from 'cloudflare:test'\nimport { generationPersistence } from '..\u002Fsrc\u002Flib\u002Fgeneration-persistence'\n\n\u002F\u002F A generation-only Worker declares the chat state stores it does not provide.\nrunPersistenceConformance('app-r2', () => generationPersistence(env), {\n  skip: ['messages', 'runs', 'interrupts', 'metadata'],\n})\n",[13376],{"type":62,"tag":75,"props":13377,"children":13378},{"__ignoreMap":236},[13379,13416,13452,13488,13495,13503,13556,13644],{"type":62,"tag":242,"props":13380,"children":13381},{"class":244,"line":245},[13382,13386,13390,13395,13399,13403,13407,13412],{"type":62,"tag":242,"props":13383,"children":13384},{"style":1441},[13385],{"type":68,"value":1444},{"type":62,"tag":242,"props":13387,"children":13388},{"style":271},[13389],{"type":68,"value":1449},{"type":62,"tag":242,"props":13391,"children":13392},{"style":1452},[13393],{"type":68,"value":13394}," runPersistenceConformance",{"type":62,"tag":242,"props":13396,"children":13397},{"style":271},[13398],{"type":68,"value":1469},{"type":62,"tag":242,"props":13400,"children":13401},{"style":1441},[13402],{"type":68,"value":1474},{"type":62,"tag":242,"props":13404,"children":13405},{"style":271},[13406],{"type":68,"value":1479},{"type":62,"tag":242,"props":13408,"children":13409},{"style":1482},[13410],{"type":68,"value":13411},"@tanstack\u002Fai-persistence\u002Ftestkit",{"type":62,"tag":242,"props":13413,"children":13414},{"style":271},[13415],{"type":68,"value":1489},{"type":62,"tag":242,"props":13417,"children":13418},{"class":244,"line":255},[13419,13423,13427,13431,13435,13439,13443,13448],{"type":62,"tag":242,"props":13420,"children":13421},{"style":1441},[13422],{"type":68,"value":1444},{"type":62,"tag":242,"props":13424,"children":13425},{"style":271},[13426],{"type":68,"value":1449},{"type":62,"tag":242,"props":13428,"children":13429},{"style":1452},[13430],{"type":68,"value":10444},{"type":62,"tag":242,"props":13432,"children":13433},{"style":271},[13434],{"type":68,"value":1469},{"type":62,"tag":242,"props":13436,"children":13437},{"style":1441},[13438],{"type":68,"value":1474},{"type":62,"tag":242,"props":13440,"children":13441},{"style":271},[13442],{"type":68,"value":1479},{"type":62,"tag":242,"props":13444,"children":13445},{"style":1482},[13446],{"type":68,"value":13447},"cloudflare:test",{"type":62,"tag":242,"props":13449,"children":13450},{"style":271},[13451],{"type":68,"value":1489},{"type":62,"tag":242,"props":13453,"children":13454},{"class":244,"line":277},[13455,13459,13463,13467,13471,13475,13479,13484],{"type":62,"tag":242,"props":13456,"children":13457},{"style":1441},[13458],{"type":68,"value":1444},{"type":62,"tag":242,"props":13460,"children":13461},{"style":271},[13462],{"type":68,"value":1449},{"type":62,"tag":242,"props":13464,"children":13465},{"style":1452},[13466],{"type":68,"value":9921},{"type":62,"tag":242,"props":13468,"children":13469},{"style":271},[13470],{"type":68,"value":1469},{"type":62,"tag":242,"props":13472,"children":13473},{"style":1441},[13474],{"type":68,"value":1474},{"type":62,"tag":242,"props":13476,"children":13477},{"style":271},[13478],{"type":68,"value":1479},{"type":62,"tag":242,"props":13480,"children":13481},{"style":1482},[13482],{"type":68,"value":13483},"..\u002Fsrc\u002Flib\u002Fgeneration-persistence",{"type":62,"tag":242,"props":13485,"children":13486},{"style":271},[13487],{"type":68,"value":1489},{"type":62,"tag":242,"props":13489,"children":13490},{"class":244,"line":292},[13491],{"type":62,"tag":242,"props":13492,"children":13493},{"emptyLinePlaceholder":649},[13494],{"type":68,"value":652},{"type":62,"tag":242,"props":13496,"children":13497},{"class":244,"line":317},[13498],{"type":62,"tag":242,"props":13499,"children":13500},{"style":249},[13501],{"type":68,"value":13502},"\u002F\u002F A generation-only Worker declares the chat state stores it does not provide.\n",{"type":62,"tag":242,"props":13504,"children":13505},{"class":244,"line":339},[13506,13510,13514,13518,13523,13527,13531,13535,13539,13543,13548,13552],{"type":62,"tag":242,"props":13507,"children":13508},{"style":1724},[13509],{"type":68,"value":13349},{"type":62,"tag":242,"props":13511,"children":13512},{"style":1452},[13513],{"type":68,"value":411},{"type":62,"tag":242,"props":13515,"children":13516},{"style":271},[13517],{"type":68,"value":6218},{"type":62,"tag":242,"props":13519,"children":13520},{"style":1482},[13521],{"type":68,"value":13522},"app-r2",{"type":62,"tag":242,"props":13524,"children":13525},{"style":271},[13526],{"type":68,"value":6218},{"type":62,"tag":242,"props":13528,"children":13529},{"style":271},[13530],{"type":68,"value":429},{"type":62,"tag":242,"props":13532,"children":13533},{"style":271},[13534],{"type":68,"value":5551},{"type":62,"tag":242,"props":13536,"children":13537},{"style":259},[13538],{"type":68,"value":4180},{"type":62,"tag":242,"props":13540,"children":13541},{"style":1724},[13542],{"type":68,"value":9921},{"type":62,"tag":242,"props":13544,"children":13545},{"style":1452},[13546],{"type":68,"value":13547},"(env)",{"type":62,"tag":242,"props":13549,"children":13550},{"style":271},[13551],{"type":68,"value":429},{"type":62,"tag":242,"props":13553,"children":13554},{"style":271},[13555],{"type":68,"value":274},{"type":62,"tag":242,"props":13557,"children":13558},{"class":244,"line":362},[13559,13564,13568,13572,13576,13581,13585,13589,13593,13598,13602,13606,13610,13615,13619,13623,13627,13632,13636,13640],{"type":62,"tag":242,"props":13560,"children":13561},{"style":281},[13562],{"type":68,"value":13563},"  skip",{"type":62,"tag":242,"props":13565,"children":13566},{"style":271},[13567],{"type":68,"value":304},{"type":62,"tag":242,"props":13569,"children":13570},{"style":1452},[13571],{"type":68,"value":1953},{"type":62,"tag":242,"props":13573,"children":13574},{"style":271},[13575],{"type":68,"value":6218},{"type":62,"tag":242,"props":13577,"children":13578},{"style":1482},[13579],{"type":68,"value":13580},"messages",{"type":62,"tag":242,"props":13582,"children":13583},{"style":271},[13584],{"type":68,"value":6218},{"type":62,"tag":242,"props":13586,"children":13587},{"style":271},[13588],{"type":68,"value":429},{"type":62,"tag":242,"props":13590,"children":13591},{"style":271},[13592],{"type":68,"value":1479},{"type":62,"tag":242,"props":13594,"children":13595},{"style":1482},[13596],{"type":68,"value":13597},"runs",{"type":62,"tag":242,"props":13599,"children":13600},{"style":271},[13601],{"type":68,"value":6218},{"type":62,"tag":242,"props":13603,"children":13604},{"style":271},[13605],{"type":68,"value":429},{"type":62,"tag":242,"props":13607,"children":13608},{"style":271},[13609],{"type":68,"value":1479},{"type":62,"tag":242,"props":13611,"children":13612},{"style":1482},[13613],{"type":68,"value":13614},"interrupts",{"type":62,"tag":242,"props":13616,"children":13617},{"style":271},[13618],{"type":68,"value":6218},{"type":62,"tag":242,"props":13620,"children":13621},{"style":271},[13622],{"type":68,"value":429},{"type":62,"tag":242,"props":13624,"children":13625},{"style":271},[13626],{"type":68,"value":1479},{"type":62,"tag":242,"props":13628,"children":13629},{"style":1482},[13630],{"type":68,"value":13631},"metadata",{"type":62,"tag":242,"props":13633,"children":13634},{"style":271},[13635],{"type":68,"value":6218},{"type":62,"tag":242,"props":13637,"children":13638},{"style":1452},[13639],{"type":68,"value":7195},{"type":62,"tag":242,"props":13641,"children":13642},{"style":271},[13643],{"type":68,"value":314},{"type":62,"tag":242,"props":13645,"children":13646},{"class":244,"line":391},[13647,13651],{"type":62,"tag":242,"props":13648,"children":13649},{"style":271},[13650],{"type":68,"value":3896},{"type":62,"tag":242,"props":13652,"children":13653},{"style":1452},[13654],{"type":68,"value":2217},{"type":62,"tag":71,"props":13656,"children":13657},{},[13658,13660,13664,13666,13671],{"type":68,"value":13659},"Run it against a Miniflare R2 + D1 binding with the migration applied, reset\nbetween runs (see ",{"type":62,"tag":100,"props":13661,"children":13662},{},[13663],{"type":68,"value":184},{"type":68,"value":13665}," for the\n",{"type":62,"tag":75,"props":13667,"children":13669},{"className":13668},[],[13670],{"type":68,"value":13447},{"type":68,"value":13672}," harness pattern). It exercises, among the rest:",{"type":62,"tag":7410,"props":13674,"children":13675},{},[13676,13719,13742,13786,13808,13850,13912],{"type":62,"tag":7414,"props":13677,"children":13678},{},[13679,13684,13686,13691,13693,13698,13699,13704,13705,13710,13712,13717],{"type":62,"tag":75,"props":13680,"children":13682},{"className":13681},[],[13683],{"type":68,"value":988},{"type":68,"value":13685}," then ",{"type":62,"tag":75,"props":13687,"children":13689},{"className":13688},[],[13690],{"type":68,"value":1379},{"type":68,"value":13692}," round-trips bytes and metadata; ",{"type":62,"tag":75,"props":13694,"children":13696},{"className":13695},[],[13697],{"type":68,"value":1379},{"type":68,"value":9615},{"type":62,"tag":75,"props":13700,"children":13702},{"className":13701},[],[13703],{"type":68,"value":1387},{"type":68,"value":7429},{"type":62,"tag":75,"props":13706,"children":13708},{"className":13707},[],[13709],{"type":68,"value":7435},{"type":68,"value":13711}," for\na missing key; ",{"type":62,"tag":75,"props":13713,"children":13715},{"className":13714},[],[13716],{"type":68,"value":6705},{"type":68,"value":13718}," is a silent no-op on an absent key.",{"type":62,"tag":7414,"props":13720,"children":13721},{},[13722,13727,13728,13733,13735,13740],{"type":62,"tag":75,"props":13723,"children":13725},{"className":13724},[],[13726],{"type":68,"value":988},{"type":68,"value":7470},{"type":62,"tag":75,"props":13729,"children":13731},{"className":13730},[],[13732],{"type":68,"value":973},{"type":68,"value":13734}," body with no declared length (a\n",{"type":62,"tag":75,"props":13736,"children":13738},{"className":13737},[],[13739],{"type":68,"value":1012},{"type":68,"value":13741},"-wrapped stream) and records the real drained size — the\nshape every URL-fetched artifact arrives in.",{"type":62,"tag":7414,"props":13743,"children":13744},{},[13745,13750,13752,13757,13759,13764,13766,13771,13773,13778,13779,13784],{"type":62,"tag":75,"props":13746,"children":13748},{"className":13747},[],[13749],{"type":68,"value":1379},{"type":68,"value":13751}," with a ",{"type":62,"tag":75,"props":13753,"children":13755},{"className":13754},[],[13756],{"type":68,"value":1253},{"type":68,"value":13758}," returns just that slice, reports it as ",{"type":62,"tag":75,"props":13760,"children":13762},{"className":13761},[],[13763],{"type":68,"value":1253},{"type":68,"value":13765},", and\nstill reports the whole object's ",{"type":62,"tag":75,"props":13767,"children":13769},{"className":13768},[],[13770],{"type":68,"value":1304},{"type":68,"value":13772}," — what a ",{"type":62,"tag":75,"props":13774,"children":13776},{"className":13775},[],[13777],{"type":68,"value":7544},{"type":68,"value":166},{"type":62,"tag":75,"props":13780,"children":13782},{"className":13781},[],[13783],{"type":68,"value":10889},{"type":68,"value":13785},"\nresponse is built from.",{"type":62,"tag":7414,"props":13787,"children":13788},{},[13789,13794,13796,13801,13802,13807],{"type":62,"tag":75,"props":13790,"children":13792},{"className":13791},[],[13793],{"type":68,"value":988},{"type":68,"value":13795}," overwrites an existing key (and its ",{"type":62,"tag":75,"props":13797,"children":13799},{"className":13798},[],[13800],{"type":68,"value":4490},{"type":68,"value":9615},{"type":62,"tag":75,"props":13803,"children":13805},{"className":13804},[],[13806],{"type":68,"value":1326},{"type":68,"value":12783},{"type":62,"tag":7414,"props":13809,"children":13810},{},[13811,13816,13817,13822,13823,13828,13830,13835,13837,13842,13844,13849],{"type":62,"tag":75,"props":13812,"children":13814},{"className":13813},[],[13815],{"type":68,"value":6884},{"type":68,"value":7556},{"type":62,"tag":75,"props":13818,"children":13820},{"className":13819},[],[13821],{"type":68,"value":6917},{"type":68,"value":106},{"type":62,"tag":100,"props":13824,"children":13825},{},[13826],{"type":68,"value":13827},"literally and case-sensitively",{"type":68,"value":13829},", returns\nascending keys, pages through the ",{"type":62,"tag":75,"props":13831,"children":13833},{"className":13832},[],[13834],{"type":68,"value":6999},{"type":68,"value":13836}," when ",{"type":62,"tag":75,"props":13838,"children":13840},{"className":13839},[],[13841],{"type":68,"value":7301},{"type":68,"value":13843}," without gaps or\nrepeats, and returns an empty untruncated page for ",{"type":62,"tag":75,"props":13845,"children":13847},{"className":13846},[],[13848],{"type":68,"value":7583},{"type":68,"value":174},{"type":62,"tag":7414,"props":13851,"children":13852},{},[13853,13855,13861,13862,13867,13869,13874,13876,13881,13883,13889,13890,13896,13898,13903,13904,13910],{"type":68,"value":13854},"The ",{"type":62,"tag":75,"props":13856,"children":13858},{"className":13857},[],[13859],{"type":68,"value":13860},"ArtifactStore",{"type":68,"value":12814},{"type":62,"tag":75,"props":13863,"children":13865},{"className":13864},[],[13866],{"type":68,"value":9613},{"type":68,"value":13868}," is insert-or-overwrite, ",{"type":62,"tag":75,"props":13870,"children":13872},{"className":13871},[],[13873],{"type":68,"value":1379},{"type":68,"value":13875}," returns ",{"type":62,"tag":75,"props":13877,"children":13879},{"className":13878},[],[13880],{"type":68,"value":7435},{"type":68,"value":13882}," when\nabsent, ",{"type":62,"tag":75,"props":13884,"children":13886},{"className":13885},[],[13887],{"type":68,"value":13888},"list(runId)",{"type":68,"value":13875},{"type":62,"tag":75,"props":13891,"children":13893},{"className":13892},[],[13894],{"type":68,"value":13895},"[]",{"type":68,"value":13897}," for an unknown run, and ",{"type":62,"tag":75,"props":13899,"children":13901},{"className":13900},[],[13902],{"type":68,"value":6705},{"type":68,"value":1381},{"type":62,"tag":75,"props":13905,"children":13907},{"className":13906},[],[13908],{"type":68,"value":13909},"deleteForRun",{"type":68,"value":13911}," remove exactly the expected rows.",{"type":62,"tag":7414,"props":13913,"children":13914},{},[13915,13916,13922,13923,13929,13931,13937,13939,13945],{"type":68,"value":13854},{"type":62,"tag":75,"props":13917,"children":13919},{"className":13918},[],[13920],{"type":68,"value":13921},"GenerationRunStore",{"type":68,"value":12814},{"type":62,"tag":75,"props":13924,"children":13926},{"className":13925},[],[13927],{"type":68,"value":13928},"createOrResume",{"type":68,"value":13930}," idempotency, no-op ",{"type":62,"tag":75,"props":13932,"children":13934},{"className":13933},[],[13935],{"type":68,"value":13936},"update",{"type":68,"value":13938}," on an\nunknown id, and ",{"type":62,"tag":75,"props":13940,"children":13942},{"className":13941},[],[13943],{"type":68,"value":13944},"findLatestForThread",{"type":68,"value":13946}," returning the most recently started\nlinked run (terminal ones included).",{"type":62,"tag":71,"props":13948,"children":13949},{},[13950,13952,13958,13960,13966,13968,13973,13974,13979],{"type":68,"value":13951},"An end-to-end check is the strongest signal: run ",{"type":62,"tag":75,"props":13953,"children":13955},{"className":13954},[],[13956],{"type":68,"value":13957},"generateImage",{"type":68,"value":13959}," through\n",{"type":62,"tag":75,"props":13961,"children":13963},{"className":13962},[],[13964],{"type":68,"value":13965},"withGenerationPersistence(generationPersistence(env), { threadId })",{"type":68,"value":13967},", then confirm the blob\nexists at ",{"type":62,"tag":75,"props":13969,"children":13971},{"className":13970},[],[13972],{"type":68,"value":120},{"type":68,"value":13291},{"type":62,"tag":75,"props":13975,"children":13977},{"className":13976},[],[13978],{"type":68,"value":172},{"type":68,"value":13980}," streams it back.",{"type":62,"tag":13982,"props":13983,"children":13984},"style",{},[13985],{"type":68,"value":13986},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":13988,"total":4593},[13989,14005,14017,14029,14042,14057,14067,14077,14087,14100,14110,14121],{"slug":13990,"name":13990,"fn":13991,"description":13992,"org":13993,"tags":13994,"stars":14002,"repoUrl":14003,"updatedAt":14004},"aggregation","perform data aggregation in TanStack Table","Aggregate TanStack Table columns independently of grouping, including grand totals, caller-selected row totals, multiple keyed aggregations, custom context-based definitions, grouped merges, manual values, and worker constraints.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[13995,13998,14001],{"name":13996,"slug":13997,"type":16},"Data Analysis","data-analysis",{"name":13999,"slug":14000,"type":16},"Frontend","frontend",{"name":10,"slug":9,"type":16},28175,"https:\u002F\u002Fgithub.com\u002FTanStack\u002Ftable","2026-08-02T05:44:33.993007",{"slug":14006,"name":14006,"fn":14007,"description":14008,"org":14009,"tags":14010,"stars":14002,"repoUrl":14003,"updatedAt":14016},"api-not-found","diagnose TanStack Table API errors","Diagnose missing TanStack Table v9 exports, options, state slices, and instance methods. Load before inventing an API when code sees a type error, undefined feature method, absent object key, adapter mismatch, or v8-shaped example.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14011,14014,14015],{"name":14012,"slug":14013,"type":16},"Debugging","debugging",{"name":13999,"slug":14000,"type":16},{"name":10,"slug":9,"type":16},"2026-08-02T05:44:40.224235",{"slug":14018,"name":14018,"fn":14019,"description":14020,"org":14021,"tags":14022,"stars":14002,"repoUrl":14003,"updatedAt":14028},"cell-selection","select rectangular cell ranges in tables","Select, add, and subtract rectangular cell ranges with cellSelectionFeature: ordered include\u002Fexclude operations keyed by row and column id, modifier dragging, final positive bounds, selection edges, render-order resolution under pinning, and autoResetCellSelection. Load for spreadsheet-style selection, “select all except” behavior, unexpected range changes after sorting or reordering, drag performance, or copy-to-clipboard.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14023,14024,14025],{"name":13996,"slug":13997,"type":16},{"name":10,"slug":9,"type":16},{"name":14026,"slug":14027,"type":16},"UI Components","ui-components","2026-08-02T05:44:13.012665",{"slug":14030,"name":14030,"fn":14031,"description":14032,"org":14033,"tags":14034,"stars":14002,"repoUrl":14003,"updatedAt":14041},"cell-spanning","configure cell spanning in TanStack Table","Merge adjacent body cells with cellSpanningFeature: value-based rowSpan opt-in per column via spanRows, per-row colSpan via spanColumns, and the covered-cell convention where a span of 0 means skip the cell. Load for merged data grids, spans that disappear after sorting or paginating, ragged table rows, or a cell that unexpectedly merges down the whole tbody.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14035,14038,14039,14040],{"name":14036,"slug":14037,"type":16},"Data Visualization","data-visualization",{"name":13999,"slug":14000,"type":16},{"name":10,"slug":9,"type":16},{"name":14026,"slug":14027,"type":16},"2026-08-02T06:09:08.730518",{"slug":14043,"name":14043,"fn":14044,"description":14045,"org":14046,"tags":14047,"stars":14002,"repoUrl":14003,"updatedAt":14056},"client-vs-server","manage TanStack Table data pipelines","Choose client or server ownership for filtering, grouping, sorting, expanding, and pagination in TanStack Table v9. Load for manual* flags, mixed pipelines, server counts, or deciding which dataset each row-model stage receives.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14048,14051,14052,14055],{"name":14049,"slug":14050,"type":16},"Data Pipeline","data-pipeline",{"name":13999,"slug":14000,"type":16},{"name":14053,"slug":14054,"type":16},"Performance","performance",{"name":10,"slug":9,"type":16},"2026-08-02T05:44:20.06065",{"slug":14058,"name":14058,"fn":14059,"description":14060,"org":14061,"tags":14062,"stars":14002,"repoUrl":14003,"updatedAt":14066},"column-faceting","build faceted filter UIs","Build faceted filter UIs with columnFacetingFeature, facetedRowModel, facetedUniqueValues, and facetedMinMaxValues. Load for facet counts, numeric ranges, own-filter exclusion, or server-page facet completeness.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14063,14064,14065],{"name":14036,"slug":14037,"type":16},{"name":13999,"slug":14000,"type":16},{"name":10,"slug":9,"type":16},"2026-08-02T05:44:15.988781",{"slug":14068,"name":14068,"fn":14069,"description":14070,"org":14071,"tags":14072,"stars":14002,"repoUrl":14003,"updatedAt":14076},"column-filtering","implement column filtering in TanStack Table","Filter columns with columnFilteringFeature, filteredRowModel, filterFns, filterMeta, nested-row direction, and manualFiltering. Load for accessor compatibility, controlled filter updaters, fuzzy metadata, or client\u002Fserver ownership.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14073,14074,14075],{"name":13996,"slug":13997,"type":16},{"name":13999,"slug":14000,"type":16},{"name":10,"slug":9,"type":16},"2026-08-02T05:44:28.012616",{"slug":14078,"name":14078,"fn":14079,"description":14080,"org":14081,"tags":14082,"stars":14002,"repoUrl":14003,"updatedAt":14086},"column-ordering","manage TanStack Table column ordering","Control TanStack Table v9 leaf columnOrder with stable IDs while accounting for pinning regions, visibility, and groupedColumnMode precedence. Load for drag-and-drop columns or rendered order that differs from state.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14083,14084,14085],{"name":13999,"slug":14000,"type":16},{"name":10,"slug":9,"type":16},{"name":14026,"slug":14027,"type":16},"2026-08-02T05:44:38.006667",{"slug":14088,"name":14088,"fn":14089,"description":14090,"org":14091,"tags":14092,"stars":14002,"repoUrl":14003,"updatedAt":14099},"column-pinning","configure column pinning in TanStack Table","Pin columns into logical start, center, and end regions with columnPinningFeature and renderer-owned sticky CSS. Load for RTL offsets, z-index, backgrounds, overflow, widths, gaps, or overlaps.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14093,14096,14097,14098],{"name":14094,"slug":14095,"type":16},"CSS","css",{"name":13999,"slug":14000,"type":16},{"name":10,"slug":9,"type":16},{"name":14026,"slug":14027,"type":16},"2026-08-02T05:44:30.016065",{"slug":14101,"name":14101,"fn":14102,"description":14103,"org":14104,"tags":14105,"stars":14002,"repoUrl":14003,"updatedAt":14109},"column-resizing","implement column resizing in TanStack Table","Wire columnResizingFeature, header.getResizeHandler, resize mode and direction, pointer or touch events, and performant CSS-variable updates. Load when resize state changes but widths do not, or large tables resize slowly.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14106,14107,14108],{"name":13999,"slug":14000,"type":16},{"name":10,"slug":9,"type":16},{"name":14026,"slug":14027,"type":16},"2026-08-02T05:44:25.995072",{"slug":14111,"name":14111,"fn":14112,"description":14113,"org":14114,"tags":14115,"stars":14002,"repoUrl":14003,"updatedAt":14120},"column-sizing","configure column sizing in TanStack Table","Use columnSizingFeature numeric size, minSize, maxSize, getSize, getStart, getAfter, and total-size APIs in table, grid, or flex CSS. Load for auto or percentage misconceptions and sizing\u002Fpinning layout mismatch.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14116,14117,14118,14119],{"name":14094,"slug":14095,"type":16},{"name":13999,"slug":14000,"type":16},{"name":10,"slug":9,"type":16},{"name":14026,"slug":14027,"type":16},"2026-08-02T05:44:23.013991",{"slug":14122,"name":14122,"fn":14123,"description":14124,"org":14125,"tags":14126,"stars":14002,"repoUrl":14003,"updatedAt":14130},"column-visibility","manage column visibility in TanStack Table","Hide columns with columnVisibilityFeature while rendering visibility-aware header, column, and cell collections. Load when hidden columns remain in the DOM, false-versus-absent state is confused, or enableHiding is misunderstood.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14127,14128,14129],{"name":13999,"slug":14000,"type":16},{"name":10,"slug":9,"type":16},{"name":14026,"slug":14027,"type":16},"2026-08-02T05:44:21.993645",{"items":14132,"total":2028},[14133,14151,14165,14180,14193,14205,14217],{"slug":14134,"name":14134,"fn":14135,"description":14136,"org":14137,"tags":14138,"stars":27,"repoUrl":28,"updatedAt":14150},"ai-code-mode","execute sandboxed TypeScript code with LLMs","LLM-generated TypeScript execution in sandboxed environments: createCodeModeTool() with isolate drivers (createNodeIsolateDriver, createQuickJSIsolateDriver, createCloudflareIsolateDriver), codeModeWithSkills() for persistent skill libraries, trust strategies, skill storage (FileSystem, LocalStorage, InMemory, Mongo), client-side execution progress via code_mode:* custom events in useChat.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14139,14141,14144,14147,14148],{"name":14140,"slug":34,"type":16},"AI SDK",{"name":14142,"slug":14143,"type":16},"Code Execution","code-execution",{"name":14145,"slug":14146,"type":16},"Sandboxing","sandboxing",{"name":10,"slug":9,"type":16},{"name":14149,"slug":48,"type":16},"TypeScript","2026-07-16T06:04:13.597905",{"slug":14152,"name":14152,"fn":14153,"description":14154,"org":14155,"tags":14156,"stars":27,"repoUrl":28,"updatedAt":14164},"ai-core","configure TanStack AI agent features","Entry point for TanStack AI skills. Routes to chat-experience, tool-calling, media-generation, structured-outputs, adapter-configuration, ag-ui-protocol, middleware, locks, custom-backend-integration, and debug-logging, plus the skills shipped by companion packages (@tanstack\u002Fai-persistence, @tanstack\u002Fai-code-mode). Use chat() not streamText(), openaiText() not createOpenAI(), toServerSentEventsResponse() not manual SSE, middleware hooks not onEnd callbacks.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14157,14160,14161],{"name":14158,"slug":14159,"type":16},"Agents","agents",{"name":21,"slug":22,"type":16},{"name":14162,"slug":14163,"type":16},"Middleware","middleware","2026-07-30T05:26:10.404565",{"slug":14166,"name":14167,"fn":14168,"description":14169,"org":14170,"tags":14171,"stars":27,"repoUrl":28,"updatedAt":14179},"ai-coreadapter-configuration","ai-core\u002Fadapter-configuration","configure AI provider adapters","Provider adapter selection and configuration: openaiText, anthropicText, geminiText, ollamaText, grokText, groqText, openRouterText, bedrockText, openaiCompatible. Per-model type safety with modelOptions, reasoning\u002Fthinking configuration, runtime adapter switching, extendAdapter() for custom models, createModel(). Generic OpenAI-compatible providers (DeepSeek, Together, Fireworks, etc.) via openaiCompatible({ baseURL, apiKey, models }) from @tanstack\u002Fai-openai\u002Fcompatible. API key env vars: OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY\u002FGEMINI_API_KEY, XAI_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY, OLLAMA_HOST, BEDROCK_API_KEY (or AWS_BEARER_TOKEN_BEDROCK).\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14172,14173,14176,14178],{"name":14140,"slug":34,"type":16},{"name":14174,"slug":14175,"type":16},"Configuration","configuration",{"name":14177,"slug":40,"type":16},"LLM",{"name":10,"slug":9,"type":16},"2026-07-16T06:04:17.82075",{"slug":14181,"name":14182,"fn":14183,"description":14184,"org":14185,"tags":14186,"stars":27,"repoUrl":28,"updatedAt":14192},"ai-coreag-ui-protocol","ai-core\u002Fag-ui-protocol","implement TanStack AI streaming protocol","Server-side AG-UI streaming protocol implementation: StreamChunk event types (RUN_STARTED, TEXT_MESSAGE_START\u002FCONTENT\u002FEND, TOOL_CALL_START\u002FARGS\u002FEND, RUN_FINISHED, RUN_ERROR, STEP_STARTED\u002FSTEP_FINISHED, STATE_SNAPSHOT\u002FDELTA, CUSTOM), toServerSentEventsStream() for SSE format, toHttpStream() for NDJSON format. For backends serving AG-UI events without client packages.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14187,14190,14191],{"name":14188,"slug":14189,"type":16},"API Development","api-development",{"name":14177,"slug":40,"type":16},{"name":10,"slug":9,"type":16},"2026-07-16T06:04:10.093367",{"slug":14194,"name":14195,"fn":14196,"description":14197,"org":14198,"tags":14199,"stars":27,"repoUrl":28,"updatedAt":14204},"ai-corechat-experience","ai-core\u002Fchat-experience","implement chat experiences with TanStack AI","End-to-end chat implementation: server endpoint with chat() and toServerSentEventsResponse(), client-side useChat hook with fetchServerSentEvents(), message rendering with UIMessage parts, multimodal content, thinking\u002Freasoning display. Covers streaming states, connection adapters, and message format conversions. NOT Vercel AI SDK — uses chat() not streamText().\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14200,14201,14202,14203],{"name":14188,"slug":14189,"type":16},{"name":13999,"slug":14000,"type":16},{"name":14177,"slug":40,"type":16},{"name":10,"slug":9,"type":16},"2026-07-30T05:26:11.505241",{"slug":14206,"name":12520,"fn":14207,"description":14208,"org":14209,"tags":14210,"stars":27,"repoUrl":28,"updatedAt":14216},"ai-coreclient-persistence","implement browser chat persistence for TanStack AI","Browser chat persistence on useChat \u002F ChatClient: localStoragePersistence, sessionStoragePersistence, indexedDBPersistence. Client-authoritative (adapter, full transcript) vs server-authoritative (persistence: true, no client cache). Reload restore, pending interrupts, mid-stream rejoin with delivery durability. Use for SPA reload durability — NOT server history alone. Also covers generation hooks (useGenerateImage etc.), which take only the server-driven mode: persistence: true hydrates the last generation for the (REQUIRED) threadId from the server on mount and repaints status\u002Fresult\u002Ferror, nothing is cached in the browser. No extra package: the adapters ship in the framework packages.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14211,14212,14213,14215],{"name":21,"slug":22,"type":16},{"name":13999,"slug":14000,"type":16},{"name":14214,"slug":11275,"type":16},"Persistence",{"name":10,"slug":9,"type":16},"2026-08-02T05:42:41.847424",{"slug":14218,"name":14219,"fn":14220,"description":14221,"org":14222,"tags":14223,"stars":27,"repoUrl":28,"updatedAt":14228},"ai-corecustom-backend-integration","ai-core\u002Fcustom-backend-integration","integrate custom backends with TanStack AI","Connect useChat to a non-TanStack-AI backend through custom connection adapters. ConnectConnectionAdapter (single async iterable) vs SubscribeConnectionAdapter (separate subscribe\u002Fsend). Customize fetchServerSentEvents() and fetchHttpStream() with auth headers, custom URLs, and request options. Import from framework package, not @tanstack\u002Fai-client.\n",{"slug":9,"name":10,"logoUrl":11,"githubOrg":10},[14224,14225,14226,14227],{"name":21,"slug":22,"type":16},{"name":14188,"slug":14189,"type":16},{"name":14,"slug":15,"type":16},{"name":10,"slug":9,"type":16},"2026-07-17T06:06:39.855351"]