@caretcms/core 0.1.0 → 0.1.2
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 +182 -6
- package/dist/browser-runtime.d.ts +16 -0
- package/dist/browser-runtime.d.ts.map +1 -1
- package/dist/browser-runtime.js +42 -23
- package/dist/browser-runtime.js.map +1 -1
- package/dist/contracts.d.ts +14 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +14 -0
- package/dist/contracts.js.map +1 -0
- package/dist/editable.d.ts +28 -0
- package/dist/editable.d.ts.map +1 -0
- package/dist/editable.js +122 -0
- package/dist/editable.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +274 -4
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +45 -3
- package/dist/loader.js.map +1 -1
- package/dist/providers/storage/markdown.d.ts +7 -0
- package/dist/providers/storage/markdown.d.ts.map +1 -0
- package/dist/providers/storage/markdown.js +6 -0
- package/dist/providers/storage/markdown.js.map +1 -0
- package/dist/runtime/auth/cookie-utils.d.ts +1 -0
- package/dist/runtime/auth/cookie-utils.d.ts.map +1 -1
- package/dist/runtime/auth/cookie-utils.js +1 -1
- package/dist/runtime/auth/cookie-utils.js.map +1 -1
- package/dist/runtime/auth/rate-limiter.d.ts.map +1 -1
- package/dist/runtime/auth/rate-limiter.js +19 -13
- package/dist/runtime/auth/rate-limiter.js.map +1 -1
- package/dist/runtime/auth/session.d.ts +8 -0
- package/dist/runtime/auth/session.d.ts.map +1 -1
- package/dist/runtime/auth/session.js +72 -11
- package/dist/runtime/auth/session.js.map +1 -1
- package/dist/runtime/config.d.ts +1 -0
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +2 -1
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/git-journal.d.ts +19 -0
- package/dist/runtime/git-journal.d.ts.map +1 -0
- package/dist/runtime/git-journal.js +64 -0
- package/dist/runtime/git-journal.js.map +1 -0
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/runtime/middleware.js +125 -8
- package/dist/runtime/middleware.js.map +1 -1
- package/dist/runtime/mutations/contracts.d.ts.map +1 -1
- package/dist/runtime/mutations/contracts.js +7 -4
- package/dist/runtime/mutations/contracts.js.map +1 -1
- package/dist/runtime/mutations/engine.d.ts +7 -0
- package/dist/runtime/mutations/engine.d.ts.map +1 -1
- package/dist/runtime/mutations/engine.js +30 -17
- package/dist/runtime/mutations/engine.js.map +1 -1
- package/dist/runtime/providers.d.ts +16 -0
- package/dist/runtime/providers.d.ts.map +1 -1
- package/dist/runtime/providers.js +16 -0
- package/dist/runtime/providers.js.map +1 -1
- package/dist/runtime/publish.d.ts +40 -0
- package/dist/runtime/publish.d.ts.map +1 -0
- package/dist/runtime/publish.js +75 -0
- package/dist/runtime/publish.js.map +1 -0
- package/dist/runtime/rebuild-webhook.d.ts +29 -0
- package/dist/runtime/rebuild-webhook.d.ts.map +1 -0
- package/dist/runtime/rebuild-webhook.js +37 -0
- package/dist/runtime/rebuild-webhook.js.map +1 -0
- package/dist/runtime/request-context.d.ts +19 -0
- package/dist/runtime/request-context.d.ts.map +1 -1
- package/dist/runtime/request-context.js.map +1 -1
- package/dist/runtime/rewrite.d.ts +29 -1
- package/dist/runtime/rewrite.d.ts.map +1 -1
- package/dist/runtime/rewrite.js +30 -16
- package/dist/runtime/rewrite.js.map +1 -1
- package/dist/runtime/rich-allowlist.d.ts +29 -0
- package/dist/runtime/rich-allowlist.d.ts.map +1 -0
- package/dist/runtime/rich-allowlist.js +49 -0
- package/dist/runtime/rich-allowlist.js.map +1 -0
- package/dist/runtime/routes/_helpers.d.ts +33 -0
- package/dist/runtime/routes/_helpers.d.ts.map +1 -1
- package/dist/runtime/routes/_helpers.js +117 -1
- package/dist/runtime/routes/_helpers.js.map +1 -1
- package/dist/runtime/routes/admin-entry.d.ts +1 -0
- package/dist/runtime/routes/admin-entry.d.ts.map +1 -1
- package/dist/runtime/routes/admin-entry.js +3 -2
- package/dist/runtime/routes/admin-entry.js.map +1 -1
- package/dist/runtime/routes/admin.d.ts +1 -0
- package/dist/runtime/routes/admin.d.ts.map +1 -1
- package/dist/runtime/routes/admin.js +61 -9
- package/dist/runtime/routes/admin.js.map +1 -1
- package/dist/runtime/routes/auth-login.d.ts +1 -0
- package/dist/runtime/routes/auth-login.d.ts.map +1 -1
- package/dist/runtime/routes/auth-login.js +26 -8
- package/dist/runtime/routes/auth-login.js.map +1 -1
- package/dist/runtime/routes/auth-logout.d.ts +1 -0
- package/dist/runtime/routes/auth-logout.d.ts.map +1 -1
- package/dist/runtime/routes/auth-logout.js +5 -0
- package/dist/runtime/routes/auth-logout.js.map +1 -1
- package/dist/runtime/routes/auth-session.d.ts +1 -0
- package/dist/runtime/routes/auth-session.d.ts.map +1 -1
- package/dist/runtime/routes/auth-session.js +1 -0
- package/dist/runtime/routes/auth-session.js.map +1 -1
- package/dist/runtime/routes/collection-list.d.ts +1 -0
- package/dist/runtime/routes/collection-list.d.ts.map +1 -1
- package/dist/runtime/routes/collection-list.js +3 -2
- package/dist/runtime/routes/collection-list.js.map +1 -1
- package/dist/runtime/routes/collections-metadata.d.ts +1 -0
- package/dist/runtime/routes/collections-metadata.d.ts.map +1 -1
- package/dist/runtime/routes/collections-metadata.js +7 -4
- package/dist/runtime/routes/collections-metadata.js.map +1 -1
- package/dist/runtime/routes/draft.d.ts +13 -0
- package/dist/runtime/routes/draft.d.ts.map +1 -0
- package/dist/runtime/routes/draft.js +55 -0
- package/dist/runtime/routes/draft.js.map +1 -0
- package/dist/runtime/routes/editor-assets.d.ts +1 -0
- package/dist/runtime/routes/editor-assets.d.ts.map +1 -1
- package/dist/runtime/routes/editor-assets.js +1 -0
- package/dist/runtime/routes/editor-assets.js.map +1 -1
- package/dist/runtime/routes/entries.d.ts +1 -0
- package/dist/runtime/routes/entries.d.ts.map +1 -1
- package/dist/runtime/routes/entries.js +3 -2
- package/dist/runtime/routes/entries.js.map +1 -1
- package/dist/runtime/routes/history.d.ts +1 -0
- package/dist/runtime/routes/history.d.ts.map +1 -1
- package/dist/runtime/routes/history.js +24 -10
- package/dist/runtime/routes/history.js.map +1 -1
- package/dist/runtime/routes/mutate.d.ts +1 -0
- package/dist/runtime/routes/mutate.d.ts.map +1 -1
- package/dist/runtime/routes/mutate.js +7 -10
- package/dist/runtime/routes/mutate.js.map +1 -1
- package/dist/runtime/routes/publish.d.ts +10 -0
- package/dist/runtime/routes/publish.d.ts.map +1 -0
- package/dist/runtime/routes/publish.js +75 -0
- package/dist/runtime/routes/publish.js.map +1 -0
- package/dist/runtime/routes/schema.d.ts +1 -0
- package/dist/runtime/routes/schema.d.ts.map +1 -1
- package/dist/runtime/routes/schema.js +7 -4
- package/dist/runtime/routes/schema.js.map +1 -1
- package/dist/runtime/routes/studio-home.d.ts +1 -0
- package/dist/runtime/routes/studio-home.d.ts.map +1 -1
- package/dist/runtime/routes/studio-home.js +10 -9
- package/dist/runtime/routes/studio-home.js.map +1 -1
- package/dist/runtime/routes/theme-stylesheet.d.ts +1 -0
- package/dist/runtime/routes/theme-stylesheet.d.ts.map +1 -1
- package/dist/runtime/routes/theme-stylesheet.js +1 -0
- package/dist/runtime/routes/theme-stylesheet.js.map +1 -1
- package/dist/runtime/routes/upload.d.ts +1 -0
- package/dist/runtime/routes/upload.d.ts.map +1 -1
- package/dist/runtime/routes/upload.js +17 -3
- package/dist/runtime/routes/upload.js.map +1 -1
- package/dist/runtime/sanitize-html.d.ts +8 -2
- package/dist/runtime/sanitize-html.d.ts.map +1 -1
- package/dist/runtime/sanitize-html.js +57 -38
- package/dist/runtime/sanitize-html.js.map +1 -1
- package/dist/runtime/static-bake.d.ts +20 -0
- package/dist/runtime/static-bake.d.ts.map +1 -0
- package/dist/runtime/static-bake.js +58 -0
- package/dist/runtime/static-bake.js.map +1 -0
- package/dist/runtime/stega.d.ts +38 -0
- package/dist/runtime/stega.d.ts.map +1 -0
- package/dist/runtime/stega.js +98 -0
- package/dist/runtime/stega.js.map +1 -0
- package/dist/runtime/storage/atomic-write.d.ts +22 -0
- package/dist/runtime/storage/atomic-write.d.ts.map +1 -0
- package/dist/runtime/storage/atomic-write.js +44 -0
- package/dist/runtime/storage/atomic-write.js.map +1 -0
- package/dist/runtime/storage/filesystem-adapter.d.ts +14 -11
- package/dist/runtime/storage/filesystem-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/filesystem-adapter.js +71 -201
- package/dist/runtime/storage/filesystem-adapter.js.map +1 -1
- package/dist/runtime/storage/frontmatter-codec.d.ts +47 -0
- package/dist/runtime/storage/frontmatter-codec.d.ts.map +1 -0
- package/dist/runtime/storage/frontmatter-codec.js +523 -0
- package/dist/runtime/storage/frontmatter-codec.js.map +1 -0
- package/dist/runtime/storage/fs-runtime.d.ts +8 -0
- package/dist/runtime/storage/fs-runtime.d.ts.map +1 -0
- package/dist/runtime/storage/fs-runtime.js +40 -0
- package/dist/runtime/storage/fs-runtime.js.map +1 -0
- package/dist/runtime/storage/id-contracts.d.ts +22 -0
- package/dist/runtime/storage/id-contracts.d.ts.map +1 -0
- package/dist/runtime/storage/id-contracts.js +27 -0
- package/dist/runtime/storage/id-contracts.js.map +1 -0
- package/dist/runtime/storage/image-validation.d.ts +10 -0
- package/dist/runtime/storage/image-validation.d.ts.map +1 -1
- package/dist/runtime/storage/image-validation.js +17 -4
- package/dist/runtime/storage/image-validation.js.map +1 -1
- package/dist/runtime/storage/in-memory-adapter.d.ts +4 -0
- package/dist/runtime/storage/in-memory-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/in-memory-adapter.js +11 -0
- package/dist/runtime/storage/in-memory-adapter.js.map +1 -1
- package/dist/runtime/storage/markdown-adapter.d.ts +63 -0
- package/dist/runtime/storage/markdown-adapter.d.ts.map +1 -0
- package/dist/runtime/storage/markdown-adapter.js +227 -0
- package/dist/runtime/storage/markdown-adapter.js.map +1 -0
- package/dist/runtime/storage/quota-upload-handler.d.ts +2 -0
- package/dist/runtime/storage/quota-upload-handler.d.ts.map +1 -1
- package/dist/runtime/storage/quota-upload-handler.js +34 -8
- package/dist/runtime/storage/quota-upload-handler.js.map +1 -1
- package/dist/runtime/storage/session-overlay-adapter.d.ts +3 -0
- package/dist/runtime/storage/session-overlay-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/session-overlay-adapter.js +3 -1
- package/dist/runtime/storage/session-overlay-adapter.js.map +1 -1
- package/dist/runtime/storage/sidecar-meta-store.d.ts +51 -0
- package/dist/runtime/storage/sidecar-meta-store.d.ts.map +1 -0
- package/dist/runtime/storage/sidecar-meta-store.js +209 -0
- package/dist/runtime/storage/sidecar-meta-store.js.map +1 -0
- package/dist/runtime/themes/preset-tokens.d.ts +0 -1
- package/dist/runtime/themes/preset-tokens.d.ts.map +1 -1
- package/dist/runtime/themes/preset-tokens.js +1 -1
- package/dist/runtime/themes/preset-tokens.js.map +1 -1
- package/dist/runtime/utils.d.ts +9 -1
- package/dist/runtime/utils.d.ts.map +1 -1
- package/dist/runtime/utils.js +21 -1
- package/dist/runtime/utils.js.map +1 -1
- package/dist/runtime/views/studio-layout.d.ts.map +1 -1
- package/dist/runtime/views/studio-layout.js +11 -10
- package/dist/runtime/views/studio-layout.js.map +1 -1
- package/dist/schema-utils.d.ts.map +1 -1
- package/dist/schema-utils.js +1 -0
- package/dist/schema-utils.js.map +1 -1
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -1
- package/static/cms/dev-toolbar/app.js +265 -0
- package/static/cms/editor/config.js +10 -0
- package/static/cms/editor/helpers.js +5 -1
- package/static/cms/editor/highlight.js +44 -0
- package/static/cms/editor/sanitize.js +56 -9
- package/static/cms/editor/stega-hydrate.js +80 -0
- package/static/cms/editor/text-edit.js +22 -0
- package/static/cms/editor/tokens-and-text.css +1 -1
- package/static/cms/editor/toolbar.css +101 -4
- package/static/cms/editor/toolbar.js +171 -21
- package/static/cms/editor.js +18 -1
- package/static/cms/signin-hint.css +74 -0
- package/static/cms/studio-login.css +70 -0
- package/static/cms/studio.css +80 -13
- package/dist/runtime/schema/template.d.ts +0 -15
- package/dist/runtime/schema/template.d.ts.map +0 -1
- package/dist/runtime/schema/template.js +0 -38
- package/dist/runtime/schema/template.js.map +0 -1
|
@@ -1,105 +1,54 @@
|
|
|
1
|
-
import { mkdir, readFile, readdir, rm, unlink
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Return a human-readable runtime name if filesystem storage cannot work here,
|
|
9
|
-
* or null when a real Node filesystem is available.
|
|
10
|
-
*
|
|
11
|
-
* Astro 6's dev server runs on the same workerd runtime as production, so a
|
|
12
|
-
* Workers-targeted project has no filesystem in dev *or* prod — the failure
|
|
13
|
-
* would otherwise surface as silently-empty reads and cryptic write errors.
|
|
14
|
-
*/
|
|
15
|
-
function detectUnsupportedRuntime() {
|
|
16
|
-
const g = globalThis;
|
|
17
|
-
// navigator.userAgent === "Cloudflare-Workers" only when the `global_navigator`
|
|
18
|
-
// compat flag is on, so also check WebSocketPair — a workerd global present
|
|
19
|
-
// regardless of compat flags — to detect Workers even on an old compat date.
|
|
20
|
-
if (g.navigator?.userAgent === WORKERD_USER_AGENT || typeof g.WebSocketPair === "function") {
|
|
21
|
-
return "Cloudflare Workers (workerd)";
|
|
22
|
-
}
|
|
23
|
-
if (typeof process === "undefined" || typeof process.cwd !== "function") {
|
|
24
|
-
return "a non-Node runtime";
|
|
25
|
-
}
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
function assertFilesystemRuntime() {
|
|
29
|
-
const runtime = detectUnsupportedRuntime();
|
|
30
|
-
if (!runtime)
|
|
31
|
-
return;
|
|
32
|
-
throw new Error(`[caretcms] Filesystem storage is not available on ${runtime}.\n` +
|
|
33
|
-
`Astro 6's dev server also runs on workerd, so this fails in dev as well as production.\n\n` +
|
|
34
|
-
`Targeting Cloudflare Workers? Use the KV adapter from @caretcms/cloudflare in BOTH dev and prod:\n\n` +
|
|
35
|
-
` import { cloudflareStorage } from '@caretcms/cloudflare';\n` +
|
|
36
|
-
` // caret({ storage: cloudflareStorage(), ... })\n\n` +
|
|
37
|
-
`Targeting a Node host? Filesystem storage works there — make sure you are not building for an edge runtime.`);
|
|
38
|
-
}
|
|
1
|
+
import { mkdir, readFile, readdir, rm, unlink } from "node:fs/promises";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { atomicWrite } from "./atomic-write.js";
|
|
4
|
+
import { assertFilesystemRuntime } from "./fs-runtime.js";
|
|
5
|
+
import { SidecarMetaStore, listCollectionDirs } from "./sidecar-meta-store.js";
|
|
6
|
+
import { COLLECTION_NAME_RE, ENTRY_ID_RE, assertSafeEditorId } from "./id-contracts.js";
|
|
39
7
|
function asObjectRecord(value) {
|
|
40
8
|
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
41
9
|
return null;
|
|
42
10
|
return value;
|
|
43
11
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Number.isFinite(obj.ts) &&
|
|
50
|
-
typeof obj.action === "string" &&
|
|
51
|
-
"data" in obj);
|
|
52
|
-
}
|
|
53
|
-
function isValidRevision(value) {
|
|
54
|
-
return typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
55
|
-
}
|
|
56
|
-
const revisionWriteChains = new Map();
|
|
57
|
-
function serializeRevisionWrite(filePath, task) {
|
|
58
|
-
const previous = revisionWriteChains.get(filePath) ?? Promise.resolve();
|
|
59
|
-
const next = previous.then(task, task);
|
|
60
|
-
revisionWriteChains.set(filePath, next.finally(() => {
|
|
61
|
-
if (revisionWriteChains.get(filePath) === next) {
|
|
62
|
-
revisionWriteChains.delete(filePath);
|
|
63
|
-
}
|
|
64
|
-
}));
|
|
65
|
-
return next;
|
|
66
|
-
}
|
|
12
|
+
/**
|
|
13
|
+
* Reference StorageAdapter that stores each entry as a JSON file under
|
|
14
|
+
* `.caret/data/<collection>/<id>.json`, delegating all revision, history, and
|
|
15
|
+
* collection-metadata concerns to a shared `SidecarMetaStore` (`.caretcms/`).
|
|
16
|
+
*/
|
|
67
17
|
export class FilesystemAdapter {
|
|
68
18
|
dataRoot;
|
|
69
|
-
|
|
19
|
+
meta;
|
|
20
|
+
draftsRoot;
|
|
70
21
|
constructor(options) {
|
|
71
22
|
assertFilesystemRuntime();
|
|
72
23
|
this.dataRoot = options?.dataRoot ?? join(process.cwd(), ".caret", "data");
|
|
73
|
-
|
|
24
|
+
const metaRoot = options?.metaRoot ?? join(process.cwd(), ".caretcms");
|
|
25
|
+
this.meta = new SidecarMetaStore({ metaRoot });
|
|
26
|
+
// Per-editor draft overlays live as sibling JSON stores under `<.caret>/drafts/`.
|
|
27
|
+
this.draftsRoot = options?.draftsRoot ?? join(dirname(this.dataRoot), "drafts");
|
|
74
28
|
}
|
|
75
29
|
collectionDir(collection) {
|
|
76
30
|
return join(this.dataRoot, collection);
|
|
77
31
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
32
|
+
/** The data root — what git stages for commit-on-publish (a no-op if it's
|
|
33
|
+
* gitignored, e.g. the default `.caret/data`). */
|
|
34
|
+
committablePath() {
|
|
35
|
+
return this.dataRoot;
|
|
36
|
+
}
|
|
37
|
+
/** A persistent draft overlay for one editor, as a sibling JSON store under
|
|
38
|
+
* `<.caret>/drafts/<editorId>/`. Same id → same on-disk store. */
|
|
39
|
+
async makeEditorOverlay(editorId) {
|
|
40
|
+
const safe = assertSafeEditorId(editorId);
|
|
41
|
+
return new FilesystemAdapter({
|
|
42
|
+
dataRoot: join(this.draftsRoot, safe, "data"),
|
|
43
|
+
metaRoot: join(this.draftsRoot, safe, "meta"),
|
|
44
|
+
draftsRoot: join(this.draftsRoot, safe, "nested-drafts"),
|
|
45
|
+
});
|
|
86
46
|
}
|
|
87
47
|
// --- Collections ---
|
|
88
|
-
async discoverFromDir(dir) {
|
|
89
|
-
try {
|
|
90
|
-
const entries = await readdir(dir, { withFileTypes: true });
|
|
91
|
-
return entries
|
|
92
|
-
.filter((e) => e.isDirectory() && COLLECTION_NAME_RE.test(e.name))
|
|
93
|
-
.map((e) => e.name);
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
return [];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
48
|
async discoverCollections() {
|
|
100
49
|
const [fromData, fromMeta] = await Promise.all([
|
|
101
|
-
|
|
102
|
-
this.
|
|
50
|
+
listCollectionDirs(this.dataRoot),
|
|
51
|
+
this.meta.listHistoryCollections(),
|
|
103
52
|
]);
|
|
104
53
|
const merged = new Set([...fromData, ...fromMeta]);
|
|
105
54
|
return [...merged].sort((a, b) => a.localeCompare(b));
|
|
@@ -112,6 +61,14 @@ export class FilesystemAdapter {
|
|
|
112
61
|
}
|
|
113
62
|
// --- Entries ---
|
|
114
63
|
async getEntry(collection, id) {
|
|
64
|
+
// Defense in depth, mirroring the markdown adapter: the mutation engine
|
|
65
|
+
// validates before writes, but READS arrive straight from data-caret
|
|
66
|
+
// attributes via the rewrite engine. An unvalidated id here both joins
|
|
67
|
+
// arbitrary segments into a path and lets case-insensitive filesystems
|
|
68
|
+
// (macOS dev) resolve ids that a case-sensitive deploy (Linux) won't —
|
|
69
|
+
// a works-in-dev, breaks-in-prod trap.
|
|
70
|
+
if (!COLLECTION_NAME_RE.test(collection) || !ENTRY_ID_RE.test(id))
|
|
71
|
+
return null;
|
|
115
72
|
const filePath = join(this.collectionDir(collection), `${id}.json`);
|
|
116
73
|
try {
|
|
117
74
|
const raw = await readFile(filePath, "utf8");
|
|
@@ -126,11 +83,14 @@ export class FilesystemAdapter {
|
|
|
126
83
|
}
|
|
127
84
|
}
|
|
128
85
|
async listEntryIds(collection) {
|
|
86
|
+
if (!COLLECTION_NAME_RE.test(collection))
|
|
87
|
+
return [];
|
|
129
88
|
try {
|
|
130
89
|
const files = await readdir(this.collectionDir(collection), { withFileTypes: true });
|
|
131
90
|
return files
|
|
132
91
|
.filter((item) => item.isFile() && item.name.endsWith(".json"))
|
|
133
92
|
.map((item) => item.name.slice(0, -".json".length))
|
|
93
|
+
.filter((stem) => ENTRY_ID_RE.test(stem))
|
|
134
94
|
.sort((a, b) => a.localeCompare(b));
|
|
135
95
|
}
|
|
136
96
|
catch {
|
|
@@ -143,12 +103,17 @@ export class FilesystemAdapter {
|
|
|
143
103
|
return entries.filter((entry) => Boolean(entry));
|
|
144
104
|
}
|
|
145
105
|
async writeEntry(collection, id, data) {
|
|
106
|
+
if (!COLLECTION_NAME_RE.test(collection) || !ENTRY_ID_RE.test(id)) {
|
|
107
|
+
throw new Error(`[caretcms] invalid entry path ${collection}/${id}`);
|
|
108
|
+
}
|
|
146
109
|
const dir = this.collectionDir(collection);
|
|
147
110
|
await mkdir(dir, { recursive: true });
|
|
148
111
|
const filePath = join(dir, `${id}.json`);
|
|
149
|
-
await
|
|
112
|
+
await atomicWrite(filePath, `${JSON.stringify(data, null, 2)}\n`);
|
|
150
113
|
}
|
|
151
114
|
async deleteEntry(collection, id) {
|
|
115
|
+
if (!COLLECTION_NAME_RE.test(collection) || !ENTRY_ID_RE.test(id))
|
|
116
|
+
return;
|
|
152
117
|
const filePath = join(this.collectionDir(collection), `${id}.json`);
|
|
153
118
|
try {
|
|
154
119
|
await unlink(filePath);
|
|
@@ -160,132 +125,37 @@ export class FilesystemAdapter {
|
|
|
160
125
|
throw error;
|
|
161
126
|
}
|
|
162
127
|
}
|
|
163
|
-
// --- Revisions ---
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
try {
|
|
167
|
-
const raw = await readFile(filePath, "utf8");
|
|
168
|
-
const parsed = JSON.parse(raw);
|
|
169
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
170
|
-
return {};
|
|
171
|
-
const map = parsed;
|
|
172
|
-
const out = {};
|
|
173
|
-
Object.entries(map).forEach(([key, value]) => {
|
|
174
|
-
if (isValidRevision(value)) {
|
|
175
|
-
out[key] = value;
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
return out;
|
|
179
|
-
}
|
|
180
|
-
catch {
|
|
181
|
-
return {};
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
async writeRevisionMap(map) {
|
|
185
|
-
const filePath = this.revisionStorePath();
|
|
186
|
-
await mkdir(this.metaRoot, { recursive: true });
|
|
187
|
-
await writeFile(filePath, `${JSON.stringify(map, null, 2)}\n`, "utf8");
|
|
128
|
+
// --- Revisions (delegated) ---
|
|
129
|
+
getRevision(collection, id) {
|
|
130
|
+
return this.meta.getRevision(collection, id);
|
|
188
131
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const value = map[this.revisionMapKey(collection, id)];
|
|
192
|
-
return isValidRevision(value) ? value : 0;
|
|
132
|
+
bumpRevision(collection, id) {
|
|
133
|
+
return this.meta.bumpRevision(collection, id);
|
|
193
134
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
const key = this.revisionMapKey(collection, id);
|
|
198
|
-
const current = isValidRevision(map[key]) ? map[key] : 0;
|
|
199
|
-
const next = current + 1;
|
|
200
|
-
map[key] = next;
|
|
201
|
-
await this.writeRevisionMap(map);
|
|
202
|
-
return next;
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
// --- History ---
|
|
206
|
-
async readHistoryFile(collection, id) {
|
|
207
|
-
const filePath = this.historyFilePath(collection, id);
|
|
208
|
-
try {
|
|
209
|
-
const raw = await readFile(filePath, "utf8");
|
|
210
|
-
const parsed = JSON.parse(raw);
|
|
211
|
-
if (!Array.isArray(parsed))
|
|
212
|
-
return [];
|
|
213
|
-
return parsed.filter(isHistoryEntry);
|
|
214
|
-
}
|
|
215
|
-
catch {
|
|
216
|
-
return [];
|
|
217
|
-
}
|
|
135
|
+
// --- History (delegated) ---
|
|
136
|
+
getHistory(collection, id) {
|
|
137
|
+
return this.meta.getHistory(collection, id);
|
|
218
138
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
await mkdir(join(this.metaRoot, "history", collection), { recursive: true });
|
|
222
|
-
await writeFile(filePath, `${JSON.stringify(entries, null, 2)}\n`, "utf8");
|
|
223
|
-
}
|
|
224
|
-
async getHistory(collection, id) {
|
|
225
|
-
return this.readHistoryFile(collection, id);
|
|
226
|
-
}
|
|
227
|
-
async appendHistory(collection, id, entry) {
|
|
228
|
-
const current = await this.readHistoryFile(collection, id);
|
|
229
|
-
const next = [entry, ...current].slice(0, HISTORY_LIMIT);
|
|
230
|
-
await this.writeHistoryFile(collection, id, next);
|
|
231
|
-
}
|
|
232
|
-
// --- Collection Management ---
|
|
233
|
-
collectionsMetaDir() {
|
|
234
|
-
return join(this.metaRoot, "collections");
|
|
235
|
-
}
|
|
236
|
-
collectionMetaPath(collection) {
|
|
237
|
-
return join(this.collectionsMetaDir(), `${collection}.json`);
|
|
139
|
+
appendHistory(collection, id, entry) {
|
|
140
|
+
return this.meta.appendHistory(collection, id, entry);
|
|
238
141
|
}
|
|
142
|
+
// --- Collection management ---
|
|
239
143
|
async createCollection(metadata) {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
await writeFile(filePath, `${JSON.stringify(metadata, null, 2)}\n`, "utf8");
|
|
244
|
-
// Create empty collection directory
|
|
245
|
-
const collectionDir = this.collectionDir(metadata.id);
|
|
246
|
-
await mkdir(collectionDir, { recursive: true });
|
|
144
|
+
await this.meta.createCollection(metadata);
|
|
145
|
+
// The JSON adapter owns its data directory, so create it eagerly.
|
|
146
|
+
await mkdir(this.collectionDir(metadata.id), { recursive: true });
|
|
247
147
|
}
|
|
248
148
|
async deleteCollection(collection) {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
await unlink(metaPath);
|
|
253
|
-
}
|
|
254
|
-
catch (error) {
|
|
255
|
-
const maybeErr = error;
|
|
256
|
-
if (maybeErr?.code !== "ENOENT")
|
|
257
|
-
throw error;
|
|
258
|
-
}
|
|
259
|
-
// rm({ force: true }) is a no-op on missing paths and still throws real errors.
|
|
149
|
+
await this.meta.deleteCollection(collection);
|
|
150
|
+
// The JSON adapter owns its entry files, so removing the collection removes
|
|
151
|
+
// its data directory too.
|
|
260
152
|
await rm(this.collectionDir(collection), { recursive: true, force: true });
|
|
261
|
-
await rm(join(this.metaRoot, "history", collection), { recursive: true, force: true });
|
|
262
153
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
try {
|
|
266
|
-
const raw = await readFile(filePath, "utf8");
|
|
267
|
-
const parsed = JSON.parse(raw);
|
|
268
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
269
|
-
return null;
|
|
270
|
-
return parsed;
|
|
271
|
-
}
|
|
272
|
-
catch {
|
|
273
|
-
return null;
|
|
274
|
-
}
|
|
154
|
+
getCollectionMetadata(collection) {
|
|
155
|
+
return this.meta.getCollectionMetadata(collection);
|
|
275
156
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
try {
|
|
279
|
-
const files = await readdir(dir, { withFileTypes: true });
|
|
280
|
-
const metadataFiles = files
|
|
281
|
-
.filter((item) => item.isFile() && item.name.endsWith(".json"))
|
|
282
|
-
.map((item) => item.name.slice(0, -".json".length));
|
|
283
|
-
const metadata = await Promise.all(metadataFiles.map((name) => this.getCollectionMetadata(name)));
|
|
284
|
-
return metadata.filter((m) => Boolean(m));
|
|
285
|
-
}
|
|
286
|
-
catch {
|
|
287
|
-
return [];
|
|
288
|
-
}
|
|
157
|
+
listCollectionMetadata() {
|
|
158
|
+
return this.meta.listCollectionMetadata();
|
|
289
159
|
}
|
|
290
160
|
}
|
|
291
161
|
//# sourceMappingURL=filesystem-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem-adapter.js","sourceRoot":"","sources":["../../../src/runtime/storage/filesystem-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filesystem-adapter.js","sourceRoot":"","sources":["../../../src/runtime/storage/filesystem-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zero-dependency YAML-frontmatter codec for the markdown StorageAdapter.
|
|
3
|
+
*
|
|
4
|
+
* Core ships no runtime dependencies, so this is a hand-rolled parser/serializer
|
|
5
|
+
* for the SUBSET of YAML that appears in Astro content-collection frontmatter:
|
|
6
|
+
* block mappings, block sequences (of scalars or mappings), and scalars
|
|
7
|
+
* (quoted/plain strings, integers, floats, booleans, null), plus empty/scalar
|
|
8
|
+
* flow collections (`[]`, `{}`, `[a, b]`, `{a: b}`).
|
|
9
|
+
*
|
|
10
|
+
* Design rules:
|
|
11
|
+
* - **Fail loud, never lossy.** `parseFrontmatter` returns `{ ok: false }` for
|
|
12
|
+
* any construct it cannot faithfully represent (anchors, aliases, tags, block
|
|
13
|
+
* scalars `|`/`>`, tab indentation). The adapter turns that into a thrown
|
|
14
|
+
* error so a later whole-entry `writeEntry` can never silently drop the
|
|
15
|
+
* frontmatter it failed to read.
|
|
16
|
+
* - **Round-trip safe by construction.** A value is emitted as a plain scalar
|
|
17
|
+
* only when re-parsing that exact text yields the identical string; anything
|
|
18
|
+
* else is double-quoted with JSON escapes (valid YAML double-quote escapes),
|
|
19
|
+
* so `parse(serialize(x))` deep-equals `x` for every supported value.
|
|
20
|
+
* - **Comments are not preserved** on write (preserving them needs a full CST).
|
|
21
|
+
* Documented and accepted for v1; the markdown BODY, by contrast, is never
|
|
22
|
+
* touched — the adapter splices it back verbatim using `bodyStart`.
|
|
23
|
+
*/
|
|
24
|
+
export type ParseResult = {
|
|
25
|
+
ok: true;
|
|
26
|
+
data: Record<string, unknown>;
|
|
27
|
+
bodyStart: number;
|
|
28
|
+
} | {
|
|
29
|
+
ok: false;
|
|
30
|
+
reason: string;
|
|
31
|
+
};
|
|
32
|
+
export type SerializeResult = {
|
|
33
|
+
ok: true;
|
|
34
|
+
content: string;
|
|
35
|
+
} | {
|
|
36
|
+
ok: false;
|
|
37
|
+
reason: string;
|
|
38
|
+
};
|
|
39
|
+
export declare function parseFrontmatter(source: string): ParseResult;
|
|
40
|
+
/**
|
|
41
|
+
* Serialize a data record into a YAML frontmatter block (WITHOUT the `---`
|
|
42
|
+
* fences; the adapter composes those around it). Returns `{ ok: false }` if any
|
|
43
|
+
* value cannot be safely represented (non-finite number, Date, function, …) so
|
|
44
|
+
* the write is rejected before touching the file.
|
|
45
|
+
*/
|
|
46
|
+
export declare function serializeFrontmatter(data: Record<string, unknown>): SerializeResult;
|
|
47
|
+
//# sourceMappingURL=frontmatter-codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter-codec.d.ts","sourceRoot":"","sources":["../../../src/runtime/storage/frontmatter-codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAsX5F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAW5D;AA2ED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAWnF"}
|