@caretcms/cloudflare 0.2.0 → 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
|
@@ -41,6 +41,7 @@ bindings/secrets (`wrangler secret put …` or `[vars]` in `wrangler.toml`):
|
|
|
41
41
|
| --- | --- |
|
|
42
42
|
| `CMS_KV` | KV namespace for content storage (name configurable via `binding`). |
|
|
43
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. |
|
|
44
45
|
| `CARET_EDIT_PASSWORD` | Editor login password. Without it the editor stays locked. |
|
|
45
46
|
| `CARET_SESSION_SECRET` | HMAC secret for session cookies. **Required** in production — generate with `openssl rand -base64 32`. |
|
|
46
47
|
| `CARET_DEMO_MODE` | `"true"` to enable the per-visitor demo sandbox. |
|
|
@@ -48,6 +49,12 @@ bindings/secrets (`wrangler secret put …` or `[vars]` in `wrangler.toml`):
|
|
|
48
49
|
The auth layer reads `CARET_EDIT_PASSWORD` / `CARET_SESSION_SECRET` from the Worker
|
|
49
50
|
env when they aren't in `process.env`, so a binding-only deployment works.
|
|
50
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
|
+
|
|
51
58
|
## Concurrency: single-writer only
|
|
52
59
|
|
|
53
60
|
> **Important.** The KV adapter provides best-effort optimistic concurrency, but
|
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
55
|
+
"@caretcms/core": "^0.3.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@types/node": "25.6.0",
|