@caretcms/cloudflare 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -30,3 +30,44 @@ export default defineConfig({
30
30
  - `r2UploadsProvider()`
31
31
  - `R2UploadHandler`
32
32
  - `getCloudflareRuntimeEnv()`
33
+
34
+ ## Worker environment / bindings
35
+
36
+ On Cloudflare, values are read from the Worker `env` (via
37
+ `context.locals.runtime.env`), not just `process.env`. Provide these as Worker
38
+ bindings/secrets (`wrangler secret put …` or `[vars]` in `wrangler.toml`):
39
+
40
+ | Binding | Purpose |
41
+ | --- | --- |
42
+ | `CMS_KV` | KV namespace for content storage (name configurable via `binding`). |
43
+ | `CMS_R2` | R2 bucket for uploads (name configurable via `binding`). |
44
+ | `R2_PUBLIC_DOMAIN` | Public R2 hostname (for example `assets.example.com` or the bucket's enabled `r2.dev` hostname). Required for uploads unless `publicBaseUrl` is configured explicitly. |
45
+ | `CARET_EDIT_PASSWORD` | Editor login password. Without it the editor stays locked. |
46
+ | `CARET_SESSION_SECRET` | HMAC secret for session cookies. **Required** in production — generate with `openssl rand -base64 32`. |
47
+ | `CARET_DEMO_MODE` | `"true"` to enable the per-visitor demo sandbox. |
48
+
49
+ The auth layer reads `CARET_EDIT_PASSWORD` / `CARET_SESSION_SECRET` from the Worker
50
+ env when they aren't in `process.env`, so a binding-only deployment works.
51
+
52
+ R2 objects are not served by Caret's API routes. `r2Uploads()` therefore rejects
53
+ an upload before writing when neither `publicBaseUrl` nor `R2_PUBLIC_DOMAIN` is
54
+ available; it never returns a relative URL that points at a nonexistent proxy.
55
+ `devServePath` is an explicit escape hatch only for hosts that mount their own
56
+ matching local image route.
57
+
58
+ ## Concurrency: single-writer only
59
+
60
+ > **Important.** The KV adapter provides best-effort optimistic concurrency, but
61
+ > it **cannot guarantee** conflict detection across concurrent writers.
62
+
63
+ CaretCMS serializes writes with an in-process lock and detects conflicts with a
64
+ revision counter. On Workers that lock is per-isolate (isolates are numerous and
65
+ ephemeral), and KV has no compare-and-swap and is eventually consistent. So two
66
+ editors saving the same entry — or two saves to different entries in the same
67
+ collection — can read the same revision/index, both pass the check, and the
68
+ later write silently wins (a lost update). A durable fix would require Durable
69
+ Objects (a compare-and-swap coordinator), which this adapter does not use.
70
+
71
+ **Guidance:** treat KV-backed deployments as **single-writer** (one editor at a
72
+ time, or the demo/preview overlay which is per-session and isolated). Don't run
73
+ multi-editor concurrent editorial workflows against the shared KV store.
@@ -1,7 +1,9 @@
1
1
  import type { UploadContext, UploadHandler } from "@caretcms/core";
2
2
  export interface R2UploadHandlerOptions extends Record<string, unknown> {
3
3
  binding?: string;
4
+ /** Public origin for returned object URLs. Falls back to R2_PUBLIC_DOMAIN. */
4
5
  publicBaseUrl?: string;
6
+ /** Explicit host-mounted development proxy path; Caret does not mount one. */
5
7
  devServePath?: string;
6
8
  /**
7
9
  * KV binding used to track per-session upload byte totals when demo mode is
@@ -1 +1 @@
1
- {"version":3,"file":"r2-upload.d.ts","sourceRoot":"","sources":["../../src/adapters/r2-upload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA6FnE,MAAM,WAAW,sBAAuB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wEAAwE;IACxE,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,eAAgB,YAAW,aAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;gBAEpC,OAAO,GAAE,sBAA2B;IAS1C,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAS9D,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAgCxE"}
1
+ {"version":3,"file":"r2-upload.d.ts","sourceRoot":"","sources":["../../src/adapters/r2-upload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA8FnE,MAAM,WAAW,sBAAuB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wEAAwE;IACxE,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,eAAgB,YAAW,aAAa;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;gBAEpC,OAAO,GAAE,sBAA2B;IAW1C,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAS9D,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAoCxE"}
@@ -1,4 +1,4 @@
1
- import { IMAGE_KIND_TO_EXT, QuotaUploadHandler, readAndValidateImage, sanitizeImageBaseName, } from "@caretcms/core/runtime";
1
+ import { IMAGE_KIND_TO_EXT, QuotaUploadHandler, UploadError, readAndValidateImage, sanitizeImageBaseName, } from "@caretcms/core/runtime";
2
2
  import { getCloudflareRuntimeEnv } from "../runtime/env.js";
3
3
  const KIND_TO_CONTENT_TYPE = {
4
4
  jpeg: "image/jpeg",
@@ -70,7 +70,9 @@ export class R2UploadHandler {
70
70
  constructor(options = {}) {
71
71
  this.binding = options.binding ?? "CMS_R2";
72
72
  this.publicBaseUrl = options.publicBaseUrl?.replace(/\/$/, "") ?? null;
73
- this.devServePath = options.devServePath ?? "/api/cms/image";
73
+ // A relative URL is only safe when the host explicitly mounted a matching
74
+ // proxy. Core does not provide an R2 image route, so never invent one.
75
+ this.devServePath = options.devServePath?.replace(/\/$/, "") ?? null;
74
76
  this.quotaBinding = options.quotaBinding ?? "CMS_KV";
75
77
  this.sandboxPerFileBytes = options.sandboxPerFileBytes ?? 5 * 1024 * 1024;
76
78
  this.sandboxPerSessionBytes = options.sandboxPerSessionBytes ?? 25 * 1024 * 1024;
@@ -87,6 +89,12 @@ export class R2UploadHandler {
87
89
  // Buffer + magic-byte verify before touching R2 so a spoofed
88
90
  // Content-Type can't land an HTML/SVG payload under an image/* MIME.
89
91
  const { kind, bytes } = await readAndValidateImage(file);
92
+ const publicBaseUrl = await resolvePublicBaseUrl(this.publicBaseUrl);
93
+ const servedBaseUrl = publicBaseUrl ?? this.devServePath;
94
+ if (!servedBaseUrl) {
95
+ throw new UploadError("R2 uploads require publicBaseUrl or R2_PUBLIC_DOMAIN. " +
96
+ "For a custom local proxy, configure devServePath explicitly.");
97
+ }
90
98
  const bucket = await getBucket(this.binding);
91
99
  if (!bucket) {
92
100
  throw new Error(`[caretcms] Cloudflare R2 binding "${this.binding}" is not available.`);
@@ -102,11 +110,7 @@ export class R2UploadHandler {
102
110
  await bucket.put(key, bytes, {
103
111
  httpMetadata: { contentType: verifiedContentType },
104
112
  });
105
- const publicBaseUrl = await resolvePublicBaseUrl(this.publicBaseUrl);
106
- if (import.meta.env.DEV || !publicBaseUrl) {
107
- return { url: `${this.devServePath}/${key}` };
108
- }
109
- return { url: `${publicBaseUrl}/${key}` };
113
+ return { url: `${servedBaseUrl}/${key}` };
110
114
  }
111
115
  }
112
116
  //# sourceMappingURL=r2-upload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"r2-upload.js","sourceRoot":"","sources":["../../src/adapters/r2-upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"r2-upload.js","sourceRoot":"","sources":["../../src/adapters/r2-upload.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caretcms/cloudflare",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Cloudflare-native storage (KV) and uploads (R2) adapters for CaretCMS.",
6
6
  "license": "MIT",
@@ -52,7 +52,7 @@
52
52
  "access": "public"
53
53
  },
54
54
  "peerDependencies": {
55
- "@caretcms/core": "^0.1.1"
55
+ "@caretcms/core": "^0.3.0"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@types/node": "25.6.0",