@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
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { CollectionMetadata, HistoryEntry } from "../../types.js";
|
|
2
|
+
/** Directory names under `dir` that are valid collection names. */
|
|
3
|
+
export declare function listCollectionDirs(dir: string): Promise<string[]>;
|
|
4
|
+
/**
|
|
5
|
+
* Owns all `.caretcms/` sidecar I/O — the single shared revisions map, per-entry
|
|
6
|
+
* history files, and collection-metadata JSON. It knows nothing about how the
|
|
7
|
+
* entries themselves are stored, so any filesystem-backed StorageAdapter (JSON
|
|
8
|
+
* blobs, markdown files, …) can compose it for its revision/history/collection-
|
|
9
|
+
* metadata concerns rather than reimplementing this safety-critical logic.
|
|
10
|
+
*
|
|
11
|
+
* Crash-safe via `atomicWrite`; the revisions store is additionally serialized
|
|
12
|
+
* per-path via `serializeWrite` so concurrent `bumpRevision` calls never tear
|
|
13
|
+
* the read-increment-write sequence.
|
|
14
|
+
*/
|
|
15
|
+
export declare class SidecarMetaStore {
|
|
16
|
+
private readonly metaRoot;
|
|
17
|
+
constructor(options: {
|
|
18
|
+
metaRoot: string;
|
|
19
|
+
});
|
|
20
|
+
private revisionStorePath;
|
|
21
|
+
private revisionMapKey;
|
|
22
|
+
private historyFilePath;
|
|
23
|
+
private collectionsMetaDir;
|
|
24
|
+
private collectionMetaPath;
|
|
25
|
+
private readRevisionMap;
|
|
26
|
+
private writeRevisionMap;
|
|
27
|
+
getRevision(collection: string, id: string): Promise<number>;
|
|
28
|
+
bumpRevision(collection: string, id: string): Promise<number>;
|
|
29
|
+
private readHistoryFile;
|
|
30
|
+
private writeHistoryFile;
|
|
31
|
+
getHistory(collection: string, id: string): Promise<HistoryEntry[]>;
|
|
32
|
+
appendHistory(collection: string, id: string, entry: HistoryEntry): Promise<void>;
|
|
33
|
+
/** Collection names that have sidecar history recorded. */
|
|
34
|
+
listHistoryCollections(): Promise<string[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Persist a collection's metadata JSON. Sidecar-only: this never creates an
|
|
37
|
+
* entry-storage directory — that is the concrete adapter's concern (and for
|
|
38
|
+
* source-backed adapters, the directory is owned by the project, not the CMS).
|
|
39
|
+
*/
|
|
40
|
+
createCollection(metadata: CollectionMetadata): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Remove a collection's sidecar state (metadata JSON + history). It does NOT
|
|
43
|
+
* touch entry storage — the concrete adapter decides whether deleting a
|
|
44
|
+
* collection should remove its entries (the JSON adapter does; a source-file
|
|
45
|
+
* adapter must not destroy version-controlled content).
|
|
46
|
+
*/
|
|
47
|
+
deleteCollection(collection: string): Promise<void>;
|
|
48
|
+
getCollectionMetadata(collection: string): Promise<CollectionMetadata | null>;
|
|
49
|
+
listCollectionMetadata(): Promise<CollectionMetadata[]>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=sidecar-meta-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidecar-meta-store.d.ts","sourceRoot":"","sources":["../../../src/runtime/storage/sidecar-meta-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAuBvE,mEAAmE;AACnE,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CASvE;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE;IAIzC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,kBAAkB;YAMZ,eAAe;YAsCf,gBAAgB;IAMxB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5D,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAcrD,eAAe;YAYf,gBAAgB;IAUxB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAInE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvF,2DAA2D;IACrD,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMjD;;;;OAIG;IACG,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE;;;;;OAKG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnD,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAY7E,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAiB9D"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { mkdir, readFile, readdir, rm, unlink } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { atomicWrite, serializeWrite } from "./atomic-write.js";
|
|
4
|
+
import { COLLECTION_NAME_RE } from "./id-contracts.js";
|
|
5
|
+
const HISTORY_LIMIT = 50;
|
|
6
|
+
function isValidRevision(value) {
|
|
7
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
8
|
+
}
|
|
9
|
+
function isHistoryEntry(value) {
|
|
10
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
11
|
+
return false;
|
|
12
|
+
const obj = value;
|
|
13
|
+
return (typeof obj.ts === "number" &&
|
|
14
|
+
Number.isFinite(obj.ts) &&
|
|
15
|
+
typeof obj.action === "string" &&
|
|
16
|
+
"data" in obj);
|
|
17
|
+
}
|
|
18
|
+
/** Directory names under `dir` that are valid collection names. */
|
|
19
|
+
export async function listCollectionDirs(dir) {
|
|
20
|
+
try {
|
|
21
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
22
|
+
return entries
|
|
23
|
+
.filter((e) => e.isDirectory() && COLLECTION_NAME_RE.test(e.name))
|
|
24
|
+
.map((e) => e.name);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Owns all `.caretcms/` sidecar I/O — the single shared revisions map, per-entry
|
|
32
|
+
* history files, and collection-metadata JSON. It knows nothing about how the
|
|
33
|
+
* entries themselves are stored, so any filesystem-backed StorageAdapter (JSON
|
|
34
|
+
* blobs, markdown files, …) can compose it for its revision/history/collection-
|
|
35
|
+
* metadata concerns rather than reimplementing this safety-critical logic.
|
|
36
|
+
*
|
|
37
|
+
* Crash-safe via `atomicWrite`; the revisions store is additionally serialized
|
|
38
|
+
* per-path via `serializeWrite` so concurrent `bumpRevision` calls never tear
|
|
39
|
+
* the read-increment-write sequence.
|
|
40
|
+
*/
|
|
41
|
+
export class SidecarMetaStore {
|
|
42
|
+
metaRoot;
|
|
43
|
+
constructor(options) {
|
|
44
|
+
this.metaRoot = options.metaRoot;
|
|
45
|
+
}
|
|
46
|
+
revisionStorePath() {
|
|
47
|
+
return join(this.metaRoot, "revisions.json");
|
|
48
|
+
}
|
|
49
|
+
revisionMapKey(collection, id) {
|
|
50
|
+
return `${collection}::${id}`;
|
|
51
|
+
}
|
|
52
|
+
historyFilePath(collection, id) {
|
|
53
|
+
return join(this.metaRoot, "history", collection, `${id}.json`);
|
|
54
|
+
}
|
|
55
|
+
collectionsMetaDir() {
|
|
56
|
+
return join(this.metaRoot, "collections");
|
|
57
|
+
}
|
|
58
|
+
collectionMetaPath(collection) {
|
|
59
|
+
return join(this.collectionsMetaDir(), `${collection}.json`);
|
|
60
|
+
}
|
|
61
|
+
// --- Revisions ---
|
|
62
|
+
async readRevisionMap() {
|
|
63
|
+
const filePath = this.revisionStorePath();
|
|
64
|
+
let raw;
|
|
65
|
+
try {
|
|
66
|
+
raw = await readFile(filePath, "utf8");
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
// A missing file is the normal greenfield state: no revisions recorded
|
|
70
|
+
// yet, so every entry is at 0.
|
|
71
|
+
if (error?.code === "ENOENT")
|
|
72
|
+
return {};
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
let parsed;
|
|
76
|
+
try {
|
|
77
|
+
parsed = JSON.parse(raw);
|
|
78
|
+
}
|
|
79
|
+
catch (cause) {
|
|
80
|
+
// A corrupt revisions file must NOT silently read as "{}" → every entry
|
|
81
|
+
// at revision 0, which would let stale writers clobber newer data and
|
|
82
|
+
// defeat optimistic concurrency. Surface it so the operator can recover
|
|
83
|
+
// rather than losing edits silently. Atomic writes make this rare.
|
|
84
|
+
throw new Error(`[caretcms] revisions store is corrupt and could not be parsed: ${filePath}. ` +
|
|
85
|
+
`Repair or remove the file to recover.`, { cause });
|
|
86
|
+
}
|
|
87
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
88
|
+
return {};
|
|
89
|
+
const map = parsed;
|
|
90
|
+
const out = {};
|
|
91
|
+
Object.entries(map).forEach(([key, value]) => {
|
|
92
|
+
if (isValidRevision(value)) {
|
|
93
|
+
out[key] = value;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
98
|
+
async writeRevisionMap(map) {
|
|
99
|
+
const filePath = this.revisionStorePath();
|
|
100
|
+
await mkdir(this.metaRoot, { recursive: true });
|
|
101
|
+
await atomicWrite(filePath, `${JSON.stringify(map, null, 2)}\n`);
|
|
102
|
+
}
|
|
103
|
+
async getRevision(collection, id) {
|
|
104
|
+
const map = await this.readRevisionMap();
|
|
105
|
+
const value = map[this.revisionMapKey(collection, id)];
|
|
106
|
+
return isValidRevision(value) ? value : 0;
|
|
107
|
+
}
|
|
108
|
+
async bumpRevision(collection, id) {
|
|
109
|
+
return serializeWrite(this.revisionStorePath(), async () => {
|
|
110
|
+
const map = await this.readRevisionMap();
|
|
111
|
+
const key = this.revisionMapKey(collection, id);
|
|
112
|
+
const current = isValidRevision(map[key]) ? map[key] : 0;
|
|
113
|
+
const next = current + 1;
|
|
114
|
+
map[key] = next;
|
|
115
|
+
await this.writeRevisionMap(map);
|
|
116
|
+
return next;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
// --- History ---
|
|
120
|
+
async readHistoryFile(collection, id) {
|
|
121
|
+
const filePath = this.historyFilePath(collection, id);
|
|
122
|
+
try {
|
|
123
|
+
const raw = await readFile(filePath, "utf8");
|
|
124
|
+
const parsed = JSON.parse(raw);
|
|
125
|
+
if (!Array.isArray(parsed))
|
|
126
|
+
return [];
|
|
127
|
+
return parsed.filter(isHistoryEntry);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async writeHistoryFile(collection, id, entries) {
|
|
134
|
+
const filePath = this.historyFilePath(collection, id);
|
|
135
|
+
await mkdir(join(this.metaRoot, "history", collection), { recursive: true });
|
|
136
|
+
await atomicWrite(filePath, `${JSON.stringify(entries, null, 2)}\n`);
|
|
137
|
+
}
|
|
138
|
+
async getHistory(collection, id) {
|
|
139
|
+
return this.readHistoryFile(collection, id);
|
|
140
|
+
}
|
|
141
|
+
async appendHistory(collection, id, entry) {
|
|
142
|
+
const current = await this.readHistoryFile(collection, id);
|
|
143
|
+
const next = [entry, ...current].slice(0, HISTORY_LIMIT);
|
|
144
|
+
await this.writeHistoryFile(collection, id, next);
|
|
145
|
+
}
|
|
146
|
+
/** Collection names that have sidecar history recorded. */
|
|
147
|
+
async listHistoryCollections() {
|
|
148
|
+
return listCollectionDirs(join(this.metaRoot, "history"));
|
|
149
|
+
}
|
|
150
|
+
// --- Collection metadata ---
|
|
151
|
+
/**
|
|
152
|
+
* Persist a collection's metadata JSON. Sidecar-only: this never creates an
|
|
153
|
+
* entry-storage directory — that is the concrete adapter's concern (and for
|
|
154
|
+
* source-backed adapters, the directory is owned by the project, not the CMS).
|
|
155
|
+
*/
|
|
156
|
+
async createCollection(metadata) {
|
|
157
|
+
const dir = this.collectionsMetaDir();
|
|
158
|
+
await mkdir(dir, { recursive: true });
|
|
159
|
+
await atomicWrite(this.collectionMetaPath(metadata.id), `${JSON.stringify(metadata, null, 2)}\n`);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Remove a collection's sidecar state (metadata JSON + history). It does NOT
|
|
163
|
+
* touch entry storage — the concrete adapter decides whether deleting a
|
|
164
|
+
* collection should remove its entries (the JSON adapter does; a source-file
|
|
165
|
+
* adapter must not destroy version-controlled content).
|
|
166
|
+
*/
|
|
167
|
+
async deleteCollection(collection) {
|
|
168
|
+
// unlink has no `force` option, so guard the metadata file against ENOENT.
|
|
169
|
+
const metaPath = this.collectionMetaPath(collection);
|
|
170
|
+
try {
|
|
171
|
+
await unlink(metaPath);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const maybeErr = error;
|
|
175
|
+
if (maybeErr?.code !== "ENOENT")
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
// rm({ force: true }) is a no-op on missing paths and still throws real errors.
|
|
179
|
+
await rm(join(this.metaRoot, "history", collection), { recursive: true, force: true });
|
|
180
|
+
}
|
|
181
|
+
async getCollectionMetadata(collection) {
|
|
182
|
+
const filePath = this.collectionMetaPath(collection);
|
|
183
|
+
try {
|
|
184
|
+
const raw = await readFile(filePath, "utf8");
|
|
185
|
+
const parsed = JSON.parse(raw);
|
|
186
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
187
|
+
return null;
|
|
188
|
+
return parsed;
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
async listCollectionMetadata() {
|
|
195
|
+
const dir = this.collectionsMetaDir();
|
|
196
|
+
try {
|
|
197
|
+
const files = await readdir(dir, { withFileTypes: true });
|
|
198
|
+
const metadataFiles = files
|
|
199
|
+
.filter((item) => item.isFile() && item.name.endsWith(".json"))
|
|
200
|
+
.map((item) => item.name.slice(0, -".json".length));
|
|
201
|
+
const metadata = await Promise.all(metadataFiles.map((name) => this.getCollectionMetadata(name)));
|
|
202
|
+
return metadata.filter((m) => Boolean(m));
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=sidecar-meta-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidecar-meta-store.js","sourceRoot":"","sources":["../../../src/runtime/storage/sidecar-meta-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
* automatically.
|
|
12
12
|
*/
|
|
13
13
|
export type ThemeTokens = Record<string, string>;
|
|
14
|
-
export declare const PRESET_TOKENS: Record<string, ThemeTokens>;
|
|
15
14
|
export declare const DEFAULT_PRESET_ID = "studio";
|
|
16
15
|
export declare function getPresetTokens(themeId: string): ThemeTokens;
|
|
17
16
|
//# sourceMappingURL=preset-tokens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset-tokens.d.ts","sourceRoot":"","sources":["../../../src/runtime/themes/preset-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"preset-tokens.d.ts","sourceRoot":"","sources":["../../../src/runtime/themes/preset-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAkCjD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAE5D"}
|
|
@@ -37,7 +37,7 @@ const STUDIO = {
|
|
|
37
37
|
"--font-theme-body": "Inter, system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
38
38
|
"--font-theme-heading": "Inter, system-ui, -apple-system, 'Segoe UI', sans-serif",
|
|
39
39
|
};
|
|
40
|
-
|
|
40
|
+
const PRESET_TOKENS = {
|
|
41
41
|
studio: STUDIO,
|
|
42
42
|
};
|
|
43
43
|
export const DEFAULT_PRESET_ID = "studio";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset-tokens.js","sourceRoot":"","sources":["../../../src/runtime/themes/preset-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,MAAM,GAAgB;IAC1B,UAAU;IACV,uBAAuB,EAAE,SAAS;IAClC,uBAAuB,EAAE,SAAS;IAClC,gCAAgC,EAAE,SAAS;IAC3C,6BAA6B,EAAE,2BAA2B;IAC1D,SAAS;IACT,6BAA6B,EAAE,2BAA2B;IAC1D,sBAAsB,EAAE,2BAA2B;IACnD,iEAAiE;IACjE,sBAAsB,EAAE,SAAS;IACjC,2BAA2B,EAAE,0BAA0B;IACvD,6BAA6B,EAAE,0BAA0B;IACzD,yBAAyB,EAAE,SAAS;IACpC,OAAO;IACP,oBAAoB,EAAE,2BAA2B;IACjD,0BAA0B,EAAE,2BAA2B;IACvD,wBAAwB,EAAE,2BAA2B;IACrD,QAAQ;IACR,uBAAuB,EAAE,SAAS;IAClC,sBAAsB,EAAE,SAAS;IACjC,oBAAoB,EAAE,SAAS;IAC/B,uBAAuB,EAAE,SAAS;IAClC,+DAA+D;IAC/D,mBAAmB,EAAE,yDAAyD;IAC9E,sBAAsB,EAAE,yDAAyD;CAClF,CAAC;AAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"preset-tokens.js","sourceRoot":"","sources":["../../../src/runtime/themes/preset-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,MAAM,GAAgB;IAC1B,UAAU;IACV,uBAAuB,EAAE,SAAS;IAClC,uBAAuB,EAAE,SAAS;IAClC,gCAAgC,EAAE,SAAS;IAC3C,6BAA6B,EAAE,2BAA2B;IAC1D,SAAS;IACT,6BAA6B,EAAE,2BAA2B;IAC1D,sBAAsB,EAAE,2BAA2B;IACnD,iEAAiE;IACjE,sBAAsB,EAAE,SAAS;IACjC,2BAA2B,EAAE,0BAA0B;IACvD,6BAA6B,EAAE,0BAA0B;IACzD,yBAAyB,EAAE,SAAS;IACpC,OAAO;IACP,oBAAoB,EAAE,2BAA2B;IACjD,0BAA0B,EAAE,2BAA2B;IACvD,wBAAwB,EAAE,2BAA2B;IACrD,QAAQ;IACR,uBAAuB,EAAE,SAAS;IAClC,sBAAsB,EAAE,SAAS;IACjC,oBAAoB,EAAE,SAAS;IAC/B,uBAAuB,EAAE,SAAS;IAClC,+DAA+D;IAC/D,mBAAmB,EAAE,yDAAyD;IAC9E,sBAAsB,EAAE,yDAAyD;CAClF,CAAC;AAEF,MAAM,aAAa,GAAgC;IACjD,MAAM,EAAE,MAAM;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAE1C,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/runtime/utils.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared deep-value
|
|
2
|
+
* Shared deep-value helpers used by the bind/mutation engine, the rewrite
|
|
3
|
+
* engine, editable(), and the browser runtime. One definition of dot-path
|
|
4
|
+
* semantics: object keys and numeric array indices both traverse (the getter
|
|
5
|
+
* existed as three hand-rolled copies, one of which refused arrays — so
|
|
6
|
+
* `items.0.title` resolved server-side but not in the cloud live-sync path).
|
|
3
7
|
*/
|
|
4
8
|
/** Set a deeply nested value by dot-path. Mutates `obj` in place. */
|
|
5
9
|
export declare function setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void;
|
|
10
|
+
/** Read a deeply nested value by dot-path (object keys + numeric array
|
|
11
|
+
* indices). Counterpart to setNestedValue. The prototype-polluting keys it
|
|
12
|
+
* refuses make reads fail soft (undefined) where writes fail loud. */
|
|
13
|
+
export declare function getNestedValue(data: unknown, path: string): unknown;
|
|
6
14
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/runtime/utils.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/runtime/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,qEAAqE;AACrE,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,IAAI,CAmBN;AAED;;uEAEuE;AACvE,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CASnE"}
|
package/dist/runtime/utils.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared deep-value
|
|
2
|
+
* Shared deep-value helpers used by the bind/mutation engine, the rewrite
|
|
3
|
+
* engine, editable(), and the browser runtime. One definition of dot-path
|
|
4
|
+
* semantics: object keys and numeric array indices both traverse (the getter
|
|
5
|
+
* existed as three hand-rolled copies, one of which refused arrays — so
|
|
6
|
+
* `items.0.title` resolved server-side but not in the cloud live-sync path).
|
|
3
7
|
*/
|
|
4
8
|
const FORBIDDEN_KEYS = new Set(["__proto__", "prototype", "constructor"]);
|
|
5
9
|
function assertSafeKey(key) {
|
|
@@ -26,4 +30,20 @@ export function setNestedValue(obj, path, value) {
|
|
|
26
30
|
assertSafeKey(last);
|
|
27
31
|
current[last] = value;
|
|
28
32
|
}
|
|
33
|
+
/** Read a deeply nested value by dot-path (object keys + numeric array
|
|
34
|
+
* indices). Counterpart to setNestedValue. The prototype-polluting keys it
|
|
35
|
+
* refuses make reads fail soft (undefined) where writes fail loud. */
|
|
36
|
+
export function getNestedValue(data, path) {
|
|
37
|
+
if (!path)
|
|
38
|
+
return data;
|
|
39
|
+
let current = data;
|
|
40
|
+
for (const key of path.split(".")) {
|
|
41
|
+
if (FORBIDDEN_KEYS.has(key))
|
|
42
|
+
return undefined;
|
|
43
|
+
if (current === null || typeof current !== "object")
|
|
44
|
+
return undefined;
|
|
45
|
+
current = current[key];
|
|
46
|
+
}
|
|
47
|
+
return current;
|
|
48
|
+
}
|
|
29
49
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/runtime/utils.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/runtime/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;AAE1E,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAC5B,GAA4B,EAC5B,IAAY,EACZ,KAAc;IAEd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC7D,IAAI,OAAO,GAA4B,GAAG,CAAC;IAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,aAAa,CAAC,GAAG,CAAC,CAAC;QAEnB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,GAAG,CAA4B,CAAC;IACpD,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnC,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACxB,CAAC;AAED;;uEAEuE;AACvE,MAAM,UAAU,cAAc,CAAC,IAAa,EAAE,IAAY;IACxD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACtE,OAAO,GAAI,OAAmC,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studio-layout.d.ts","sourceRoot":"","sources":["../../../src/runtime/views/studio-layout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,MAAM,MAAM,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;
|
|
1
|
+
{"version":3,"file":"studio-layout.d.ts","sourceRoot":"","sources":["../../../src/runtime/views/studio-layout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,MAAM,MAAM,KAAK,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAmCF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAsDlE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,QAAQ,CAKpE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAK3D"}
|
|
@@ -19,7 +19,7 @@ function renderBrandMark(logo) {
|
|
|
19
19
|
<path d="M12 2L2 9l10 13 10-13L12 2zm0 3.84L18.26 9 12 17.65 5.74 9 12 5.84z"/>
|
|
20
20
|
</svg>`;
|
|
21
21
|
}
|
|
22
|
-
function renderBreadcrumb(
|
|
22
|
+
function renderBreadcrumb(crumbs) {
|
|
23
23
|
if (crumbs.length === 0)
|
|
24
24
|
return "";
|
|
25
25
|
const items = crumbs
|
|
@@ -32,10 +32,14 @@ function renderBreadcrumb(mountPath, crumbs) {
|
|
|
32
32
|
return `${sep}<a href="${escapeHtml(crumb.href)}">${escapeHtml(crumb.label)}</a>`;
|
|
33
33
|
})
|
|
34
34
|
.join("");
|
|
35
|
-
return `<nav class="studio-breadcrumb" aria-label="Breadcrumb"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
return `<nav class="studio-breadcrumb" aria-label="Breadcrumb">${items}</nav>`;
|
|
36
|
+
}
|
|
37
|
+
function renderHeaderNav(mountPath, studioActive) {
|
|
38
|
+
const activeClass = studioActive ? " active" : "";
|
|
39
|
+
return `<nav class="studio-header-nav" aria-label="Studio navigation">
|
|
40
|
+
<a href="${escapeHtml(`${mountPath}/cms`)}" class="studio-nav-link${activeClass}">Studio</a>
|
|
41
|
+
<button id="studio-logout-btn" class="studio-nav-link" type="button">Sign out</button>
|
|
42
|
+
</nav>`;
|
|
39
43
|
}
|
|
40
44
|
export function renderStudioPage(opts) {
|
|
41
45
|
const { runtime, title, breadcrumb = [], body, extraStyles = "", inlineScript = "" } = opts;
|
|
@@ -63,11 +67,8 @@ export function renderStudioPage(opts) {
|
|
|
63
67
|
${renderBrandMark(brand.logo)}
|
|
64
68
|
<span>${escapeHtml(brand.name)}</span>
|
|
65
69
|
</a>
|
|
66
|
-
${renderBreadcrumb(
|
|
67
|
-
|
|
68
|
-
<a href="${escapeHtml(`${runtime.mountPath}/cms`)}" class="studio-nav-link">Studio</a>
|
|
69
|
-
<button id="studio-logout-btn" class="studio-nav-link" type="button" style="border:none;cursor:pointer;background:transparent;font:inherit;">Sign Out</button>
|
|
70
|
-
</nav>
|
|
70
|
+
${renderBreadcrumb(breadcrumb)}
|
|
71
|
+
${renderHeaderNav(runtime.mountPath, breadcrumb.length === 0)}
|
|
71
72
|
</header>
|
|
72
73
|
<main class="studio-main studio-scroll">
|
|
73
74
|
${body}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studio-layout.js","sourceRoot":"","sources":["../../../src/runtime/views/studio-layout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAeD,SAAS,eAAe,CAAC,IAAmB;IAC1C,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,aAAa,UAAU,CAAC,IAAI,CAAC,oEAAoE,CAAC;IAC3G,CAAC;IACD,OAAO;;SAEA,CAAC;AACV,CAAC;AAED,SAAS,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"studio-layout.js","sourceRoot":"","sources":["../../../src/runtime/views/studio-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../src/schema-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA0B9D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"schema-utils.d.ts","sourceRoot":"","sources":["../src/schema-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA0B9D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA4B7E"}
|
package/dist/schema-utils.js
CHANGED
package/dist/schema-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../src/schema-utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../src/schema-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -57,6 +57,23 @@ export interface StorageAdapter {
|
|
|
57
57
|
* that don't support multi-tenant scoping can omit this.
|
|
58
58
|
*/
|
|
59
59
|
makeSessionOverlay?(sessionId: string): Promise<StorageAdapter>;
|
|
60
|
+
/**
|
|
61
|
+
* Optional: build a PERSISTENT, write-isolated overlay scoped to an editor id.
|
|
62
|
+
* Backs the drafts / preview-before-publish workflow: an editor's unpublished
|
|
63
|
+
* edits land in this overlay, the public site keeps reading the base, and
|
|
64
|
+
* "Publish" flushes the overlay back into the base. Distinct from
|
|
65
|
+
* `makeSessionOverlay`, which is ephemeral demo isolation (and may carry a TTL).
|
|
66
|
+
* The same `editorId` must return an overlay over the same backing store so a
|
|
67
|
+
* draft survives across requests. Adapters that can't isolate writes may omit it.
|
|
68
|
+
*/
|
|
69
|
+
makeEditorOverlay?(editorId: string): Promise<StorageAdapter>;
|
|
70
|
+
/**
|
|
71
|
+
* Optional: the on-disk directory holding this adapter's content, for the
|
|
72
|
+
* git-journal commit-on-publish feature. File-backed adapters return the path
|
|
73
|
+
* git should stage (e.g. the markdown content root); adapters with no
|
|
74
|
+
* filesystem presence (KV/R2, in-memory) omit it, so git-on-publish no-ops.
|
|
75
|
+
*/
|
|
76
|
+
committablePath?(): string;
|
|
60
77
|
}
|
|
61
78
|
export interface UploadContext {
|
|
62
79
|
sessionId?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AACtE,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AACzE,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAC7C,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtD,MAAM,MAAM,wBAAwB,CAAC,KAAK,SAAS,iBAAiB,GAAG,iBAAiB,IAAI;IAC1F,IAAI,EAAE,KAAK,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACpE,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACtD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACpE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGlF,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAC9E,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAExD;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAEhE;;;;;;;;OAQG;IACH,iBAAiB,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAE9D;;;;;OAKG;IACH,eAAe,CAAC,IAAI,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAElE;;;;;OAKG;IACH,kBAAkB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAChE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@caretcms/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Platform-neutral core for CaretCMS: attribute-first inline editing, mutation engine, studio admin, StorageAdapter interface.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,10 +41,18 @@
|
|
|
41
41
|
"types": "./dist/providers/storage/filesystem.d.ts",
|
|
42
42
|
"import": "./dist/providers/storage/filesystem.js"
|
|
43
43
|
},
|
|
44
|
+
"./providers/storage/markdown": {
|
|
45
|
+
"types": "./dist/providers/storage/markdown.d.ts",
|
|
46
|
+
"import": "./dist/providers/storage/markdown.js"
|
|
47
|
+
},
|
|
44
48
|
"./providers/uploads/local": {
|
|
45
49
|
"types": "./dist/providers/uploads/local.d.ts",
|
|
46
50
|
"import": "./dist/providers/uploads/local.js"
|
|
47
51
|
},
|
|
52
|
+
"./contracts": {
|
|
53
|
+
"types": "./dist/contracts.d.ts",
|
|
54
|
+
"import": "./dist/contracts.js"
|
|
55
|
+
},
|
|
48
56
|
"./schema-registry": {
|
|
49
57
|
"types": "./dist/runtime/schema-registry.d.ts",
|
|
50
58
|
"import": "./dist/runtime/schema-registry.js"
|