@caretcms/core 0.1.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/LICENSE +21 -0
- package/README.md +191 -0
- package/dist/browser-runtime.d.ts +12 -0
- package/dist/browser-runtime.d.ts.map +1 -0
- package/dist/browser-runtime.js +298 -0
- package/dist/browser-runtime.js.map +1 -0
- package/dist/index.d.ts +81 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +343 -0
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +61 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +80 -0
- package/dist/loader.js.map +1 -0
- package/dist/providers/storage/filesystem.d.ts +7 -0
- package/dist/providers/storage/filesystem.d.ts.map +1 -0
- package/dist/providers/storage/filesystem.js +6 -0
- package/dist/providers/storage/filesystem.js.map +1 -0
- package/dist/providers/uploads/local.d.ts +6 -0
- package/dist/providers/uploads/local.d.ts.map +1 -0
- package/dist/providers/uploads/local.js +6 -0
- package/dist/providers/uploads/local.js.map +1 -0
- package/dist/runtime/auth/cookie-utils.d.ts +3 -0
- package/dist/runtime/auth/cookie-utils.d.ts.map +1 -0
- package/dist/runtime/auth/cookie-utils.js +33 -0
- package/dist/runtime/auth/cookie-utils.js.map +1 -0
- package/dist/runtime/auth/demo-session.d.ts +24 -0
- package/dist/runtime/auth/demo-session.d.ts.map +1 -0
- package/dist/runtime/auth/demo-session.js +42 -0
- package/dist/runtime/auth/demo-session.js.map +1 -0
- package/dist/runtime/auth/rate-limiter.d.ts +26 -0
- package/dist/runtime/auth/rate-limiter.d.ts.map +1 -0
- package/dist/runtime/auth/rate-limiter.js +65 -0
- package/dist/runtime/auth/rate-limiter.js.map +1 -0
- package/dist/runtime/auth/session.d.ts +14 -0
- package/dist/runtime/auth/session.d.ts.map +1 -0
- package/dist/runtime/auth/session.js +128 -0
- package/dist/runtime/auth/session.js.map +1 -0
- package/dist/runtime/bind.d.ts +14 -0
- package/dist/runtime/bind.d.ts.map +1 -0
- package/dist/runtime/bind.js +19 -0
- package/dist/runtime/bind.js.map +1 -0
- package/dist/runtime/config.d.ts +20 -0
- package/dist/runtime/config.d.ts.map +1 -0
- package/dist/runtime/config.js +40 -0
- package/dist/runtime/config.js.map +1 -0
- package/dist/runtime/content.d.ts +28 -0
- package/dist/runtime/content.d.ts.map +1 -0
- package/dist/runtime/content.js +37 -0
- package/dist/runtime/content.js.map +1 -0
- package/dist/runtime/index.d.ts +14 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +16 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/middleware.d.ts +14 -0
- package/dist/runtime/middleware.d.ts.map +1 -0
- package/dist/runtime/middleware.js +80 -0
- package/dist/runtime/middleware.js.map +1 -0
- package/dist/runtime/mutations/contracts.d.ts +91 -0
- package/dist/runtime/mutations/contracts.d.ts.map +1 -0
- package/dist/runtime/mutations/contracts.js +320 -0
- package/dist/runtime/mutations/contracts.js.map +1 -0
- package/dist/runtime/mutations/engine.d.ts +23 -0
- package/dist/runtime/mutations/engine.d.ts.map +1 -0
- package/dist/runtime/mutations/engine.js +255 -0
- package/dist/runtime/mutations/engine.js.map +1 -0
- package/dist/runtime/providers.d.ts +9 -0
- package/dist/runtime/providers.d.ts.map +1 -0
- package/dist/runtime/providers.js +44 -0
- package/dist/runtime/providers.js.map +1 -0
- package/dist/runtime/request-context.d.ts +11 -0
- package/dist/runtime/request-context.d.ts.map +1 -0
- package/dist/runtime/request-context.js +16 -0
- package/dist/runtime/request-context.js.map +1 -0
- package/dist/runtime/rewrite.d.ts +13 -0
- package/dist/runtime/rewrite.d.ts.map +1 -0
- package/dist/runtime/rewrite.js +253 -0
- package/dist/runtime/rewrite.js.map +1 -0
- package/dist/runtime/routes/_helpers.d.ts +17 -0
- package/dist/runtime/routes/_helpers.d.ts.map +1 -0
- package/dist/runtime/routes/_helpers.js +38 -0
- package/dist/runtime/routes/_helpers.js.map +1 -0
- package/dist/runtime/routes/admin-entry.d.ts +3 -0
- package/dist/runtime/routes/admin-entry.d.ts.map +1 -0
- package/dist/runtime/routes/admin-entry.js +170 -0
- package/dist/runtime/routes/admin-entry.js.map +1 -0
- package/dist/runtime/routes/admin.d.ts +3 -0
- package/dist/runtime/routes/admin.d.ts.map +1 -0
- package/dist/runtime/routes/admin.js +189 -0
- package/dist/runtime/routes/admin.js.map +1 -0
- package/dist/runtime/routes/auth-login.d.ts +4 -0
- package/dist/runtime/routes/auth-login.d.ts.map +1 -0
- package/dist/runtime/routes/auth-login.js +71 -0
- package/dist/runtime/routes/auth-login.js.map +1 -0
- package/dist/runtime/routes/auth-logout.d.ts +4 -0
- package/dist/runtime/routes/auth-logout.d.ts.map +1 -0
- package/dist/runtime/routes/auth-logout.js +47 -0
- package/dist/runtime/routes/auth-logout.js.map +1 -0
- package/dist/runtime/routes/auth-session.d.ts +3 -0
- package/dist/runtime/routes/auth-session.d.ts.map +1 -0
- package/dist/runtime/routes/auth-session.js +8 -0
- package/dist/runtime/routes/auth-session.js.map +1 -0
- package/dist/runtime/routes/collection-list.d.ts +3 -0
- package/dist/runtime/routes/collection-list.d.ts.map +1 -0
- package/dist/runtime/routes/collection-list.js +420 -0
- package/dist/runtime/routes/collection-list.js.map +1 -0
- package/dist/runtime/routes/collections-metadata.d.ts +3 -0
- package/dist/runtime/routes/collections-metadata.d.ts.map +1 -0
- package/dist/runtime/routes/collections-metadata.js +17 -0
- package/dist/runtime/routes/collections-metadata.js.map +1 -0
- package/dist/runtime/routes/editor-assets.d.ts +3 -0
- package/dist/runtime/routes/editor-assets.d.ts.map +1 -0
- package/dist/runtime/routes/editor-assets.js +73 -0
- package/dist/runtime/routes/editor-assets.js.map +1 -0
- package/dist/runtime/routes/entries.d.ts +3 -0
- package/dist/runtime/routes/entries.d.ts.map +1 -0
- package/dist/runtime/routes/entries.js +96 -0
- package/dist/runtime/routes/entries.js.map +1 -0
- package/dist/runtime/routes/history.d.ts +4 -0
- package/dist/runtime/routes/history.d.ts.map +1 -0
- package/dist/runtime/routes/history.js +54 -0
- package/dist/runtime/routes/history.js.map +1 -0
- package/dist/runtime/routes/mutate.d.ts +4 -0
- package/dist/runtime/routes/mutate.d.ts.map +1 -0
- package/dist/runtime/routes/mutate.js +38 -0
- package/dist/runtime/routes/mutate.js.map +1 -0
- package/dist/runtime/routes/schema.d.ts +3 -0
- package/dist/runtime/routes/schema.d.ts.map +1 -0
- package/dist/runtime/routes/schema.js +58 -0
- package/dist/runtime/routes/schema.js.map +1 -0
- package/dist/runtime/routes/studio-home.d.ts +3 -0
- package/dist/runtime/routes/studio-home.d.ts.map +1 -0
- package/dist/runtime/routes/studio-home.js +99 -0
- package/dist/runtime/routes/studio-home.js.map +1 -0
- package/dist/runtime/routes/theme-stylesheet.d.ts +3 -0
- package/dist/runtime/routes/theme-stylesheet.d.ts.map +1 -0
- package/dist/runtime/routes/theme-stylesheet.js +32 -0
- package/dist/runtime/routes/theme-stylesheet.js.map +1 -0
- package/dist/runtime/routes/upload.d.ts +3 -0
- package/dist/runtime/routes/upload.d.ts.map +1 -0
- package/dist/runtime/routes/upload.js +33 -0
- package/dist/runtime/routes/upload.js.map +1 -0
- package/dist/runtime/sanitize-html.d.ts +8 -0
- package/dist/runtime/sanitize-html.d.ts.map +1 -0
- package/dist/runtime/sanitize-html.js +86 -0
- package/dist/runtime/sanitize-html.js.map +1 -0
- package/dist/runtime/schema/template.d.ts +15 -0
- package/dist/runtime/schema/template.d.ts.map +1 -0
- package/dist/runtime/schema/template.js +38 -0
- package/dist/runtime/schema/template.js.map +1 -0
- package/dist/runtime/schema-registry.d.ts +17 -0
- package/dist/runtime/schema-registry.d.ts.map +1 -0
- package/dist/runtime/schema-registry.js +16 -0
- package/dist/runtime/schema-registry.js.map +1 -0
- package/dist/runtime/storage/filesystem-adapter.d.ts +36 -0
- package/dist/runtime/storage/filesystem-adapter.d.ts.map +1 -0
- package/dist/runtime/storage/filesystem-adapter.js +291 -0
- package/dist/runtime/storage/filesystem-adapter.js.map +1 -0
- package/dist/runtime/storage/filesystem-upload-handler.d.ts +11 -0
- package/dist/runtime/storage/filesystem-upload-handler.d.ts.map +1 -0
- package/dist/runtime/storage/filesystem-upload-handler.js +20 -0
- package/dist/runtime/storage/filesystem-upload-handler.js.map +1 -0
- package/dist/runtime/storage/image-validation.d.ts +28 -0
- package/dist/runtime/storage/image-validation.d.ts.map +1 -0
- package/dist/runtime/storage/image-validation.js +94 -0
- package/dist/runtime/storage/image-validation.js.map +1 -0
- package/dist/runtime/storage/in-memory-adapter.d.ts +29 -0
- package/dist/runtime/storage/in-memory-adapter.d.ts.map +1 -0
- package/dist/runtime/storage/in-memory-adapter.js +110 -0
- package/dist/runtime/storage/in-memory-adapter.js.map +1 -0
- package/dist/runtime/storage/quota-upload-handler.d.ts +27 -0
- package/dist/runtime/storage/quota-upload-handler.d.ts.map +1 -0
- package/dist/runtime/storage/quota-upload-handler.js +34 -0
- package/dist/runtime/storage/quota-upload-handler.js.map +1 -0
- package/dist/runtime/storage/session-overlay-adapter.d.ts +33 -0
- package/dist/runtime/storage/session-overlay-adapter.d.ts.map +1 -0
- package/dist/runtime/storage/session-overlay-adapter.js +121 -0
- package/dist/runtime/storage/session-overlay-adapter.js.map +1 -0
- package/dist/runtime/themes/preset-tokens.d.ts +17 -0
- package/dist/runtime/themes/preset-tokens.d.ts.map +1 -0
- package/dist/runtime/themes/preset-tokens.js +47 -0
- package/dist/runtime/themes/preset-tokens.js.map +1 -0
- package/dist/runtime/utils.d.ts +6 -0
- package/dist/runtime/utils.d.ts.map +1 -0
- package/dist/runtime/utils.js +29 -0
- package/dist/runtime/utils.js.map +1 -0
- package/dist/runtime/views/studio-layout.d.ts +25 -0
- package/dist/runtime/views/studio-layout.d.ts.map +1 -0
- package/dist/runtime/views/studio-layout.js +108 -0
- package/dist/runtime/views/studio-layout.js.map +1 -0
- package/dist/schema-utils.d.ts +16 -0
- package/dist/schema-utils.d.ts.map +1 -0
- package/dist/schema-utils.js +62 -0
- package/dist/schema-utils.js.map +1 -0
- package/dist/types.d.ts +76 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/editor-runtime.d.ts +6 -0
- package/editor-runtime.js +2 -0
- package/package.json +88 -0
- package/static/cms/admin-entry.css +207 -0
- package/static/cms/admin-entry.js +1083 -0
- package/static/cms/editor/config.js +118 -0
- package/static/cms/editor/content-map.css +141 -0
- package/static/cms/editor/content-map.js +172 -0
- package/static/cms/editor/guards.js +72 -0
- package/static/cms/editor/helpers.js +51 -0
- package/static/cms/editor/image-edit.js +151 -0
- package/static/cms/editor/image-utils.js +84 -0
- package/static/cms/editor/image.css +133 -0
- package/static/cms/editor/link-follow.js +144 -0
- package/static/cms/editor/link-ui.css +199 -0
- package/static/cms/editor/linkify.js +55 -0
- package/static/cms/editor/panel.css +91 -0
- package/static/cms/editor/panel.js +70 -0
- package/static/cms/editor/rich-toolbar.css +67 -0
- package/static/cms/editor/rich-toolbar.js +200 -0
- package/static/cms/editor/sanitize.js +89 -0
- package/static/cms/editor/save-queue.js +166 -0
- package/static/cms/editor/section-controls/activation.js +10 -0
- package/static/cms/editor/section-controls/api.js +87 -0
- package/static/cms/editor/section-controls/constants.js +24 -0
- package/static/cms/editor/section-controls/index.js +622 -0
- package/static/cms/editor/section-controls/model.js +76 -0
- package/static/cms/editor/section-controls/mutations.js +112 -0
- package/static/cms/editor/section-controls/page-context.js +34 -0
- package/static/cms/editor/section-controls/pickers.js +196 -0
- package/static/cms/editor/section-controls/reorder.js +92 -0
- package/static/cms/editor/section-controls/selection.js +54 -0
- package/static/cms/editor/section-controls/spacing-drag.js +83 -0
- package/static/cms/editor/section-controls/ui-elements.js +54 -0
- package/static/cms/editor/section-controls/utils.js +35 -0
- package/static/cms/editor/section-controls.css +349 -0
- package/static/cms/editor/section-controls.js +1 -0
- package/static/cms/editor/security.js +48 -0
- package/static/cms/editor/sync.js +72 -0
- package/static/cms/editor/text-edit.js +151 -0
- package/static/cms/editor/text-link-interactions.js +254 -0
- package/static/cms/editor/toast.css +50 -0
- package/static/cms/editor/toast.js +29 -0
- package/static/cms/editor/tokens-and-text.css +93 -0
- package/static/cms/editor/toolbar.css +249 -0
- package/static/cms/editor/toolbar.js +117 -0
- package/static/cms/editor.css +12 -0
- package/static/cms/editor.js +116 -0
- package/static/cms/studio-login.css +300 -0
- package/static/cms/studio-tokens.css +85 -0
- package/static/cms/studio.css +437 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
export { FilesystemAdapter } from "./runtime/storage/filesystem-adapter.js";
|
|
2
|
+
export { InMemoryAdapter } from "./runtime/storage/in-memory-adapter.js";
|
|
3
|
+
export { FilesystemUploadHandler } from "./runtime/storage/filesystem-upload-handler.js";
|
|
4
|
+
export { bindEntry } from "./runtime/bind.js";
|
|
5
|
+
export { caretLoader, CaretLoaderError } from "./loader.js";
|
|
6
|
+
const VIRTUAL_PROVIDER_MODULE_ID = "virtual:caretcms/providers";
|
|
7
|
+
const RESOLVED_VIRTUAL_PROVIDER_MODULE_ID = `\0${VIRTUAL_PROVIDER_MODULE_ID}`;
|
|
8
|
+
const VIRTUAL_SCHEMAS_MODULE_ID = "virtual:caretcms/schemas";
|
|
9
|
+
const RESOLVED_VIRTUAL_SCHEMAS_MODULE_ID = `\0${VIRTUAL_SCHEMAS_MODULE_ID}`;
|
|
10
|
+
const FILESYSTEM_STORAGE_ENTRYPOINT = "@caretcms/core/providers/storage/filesystem";
|
|
11
|
+
const LOCAL_UPLOADS_ENTRYPOINT = "@caretcms/core/providers/uploads/local";
|
|
12
|
+
export function defineStorageProvider(options) {
|
|
13
|
+
return {
|
|
14
|
+
kind: "storage",
|
|
15
|
+
entrypoint: options.entrypoint,
|
|
16
|
+
exportName: options.exportName ?? "default",
|
|
17
|
+
options: options.options ?? null,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function defineUploadProvider(options) {
|
|
21
|
+
return {
|
|
22
|
+
kind: "uploads",
|
|
23
|
+
entrypoint: options.entrypoint,
|
|
24
|
+
exportName: options.exportName ?? "default",
|
|
25
|
+
options: options.options ?? null,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function filesystemStorage(options) {
|
|
29
|
+
return defineStorageProvider({
|
|
30
|
+
entrypoint: FILESYSTEM_STORAGE_ENTRYPOINT,
|
|
31
|
+
exportName: "filesystemStorageProvider",
|
|
32
|
+
options,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export function localUploads(options) {
|
|
36
|
+
return defineUploadProvider({
|
|
37
|
+
entrypoint: LOCAL_UPLOADS_ENTRYPOINT,
|
|
38
|
+
exportName: "localUploadsProvider",
|
|
39
|
+
options,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
import { normalizePath as normalizeMountPath } from "./runtime/config.js";
|
|
43
|
+
function normalizeMode(input) {
|
|
44
|
+
return input ?? "embedded";
|
|
45
|
+
}
|
|
46
|
+
function normalizeCloudOptions(input) {
|
|
47
|
+
const endpoint = input.endpoint.trim().replace(/\/$/, "");
|
|
48
|
+
const projectId = input.projectId.trim();
|
|
49
|
+
if (!endpoint) {
|
|
50
|
+
throw new Error("[caretcms] Cloud mode requires cloud.endpoint.");
|
|
51
|
+
}
|
|
52
|
+
if (!projectId) {
|
|
53
|
+
throw new Error("[caretcms] Cloud mode requires cloud.projectId.");
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
endpoint,
|
|
57
|
+
projectId,
|
|
58
|
+
contentPath: input.contentPath?.trim() || "/content",
|
|
59
|
+
publicToken: input.publicToken?.trim() || undefined,
|
|
60
|
+
environment: input.environment?.trim() || undefined,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function isProviderReference(value, kind) {
|
|
64
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
const candidate = value;
|
|
68
|
+
return (candidate.kind === kind &&
|
|
69
|
+
typeof candidate.entrypoint === "string" &&
|
|
70
|
+
candidate.entrypoint.trim().length > 0);
|
|
71
|
+
}
|
|
72
|
+
function defaultProviders(mode) {
|
|
73
|
+
if (mode === "cloud") {
|
|
74
|
+
return {
|
|
75
|
+
storage: null,
|
|
76
|
+
uploads: null,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
storage: filesystemStorage(),
|
|
81
|
+
uploads: localUploads(),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function resolveTheme(input) {
|
|
85
|
+
if (!input)
|
|
86
|
+
return { presetId: null, tokenOverrides: {} };
|
|
87
|
+
if (typeof input === "string") {
|
|
88
|
+
return { presetId: input, tokenOverrides: {} };
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
presetId: input.preset ?? null,
|
|
92
|
+
tokenOverrides: input.tokens ?? {},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function resolveBrand(input) {
|
|
96
|
+
return {
|
|
97
|
+
name: input?.name?.trim() || "Content Studio",
|
|
98
|
+
logo: input?.logo?.trim() || null,
|
|
99
|
+
faviconUrl: input?.faviconUrl?.trim() || null,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function resolveCaretOptions(options) {
|
|
103
|
+
const mode = normalizeMode(options.mode);
|
|
104
|
+
const defaults = defaultProviders(mode);
|
|
105
|
+
const cloud = mode === "cloud"
|
|
106
|
+
? normalizeCloudOptions(options.cloud)
|
|
107
|
+
: null;
|
|
108
|
+
return {
|
|
109
|
+
mountPath: normalizeMountPath(options.mountPath, "/admin"),
|
|
110
|
+
apiBasePath: normalizeMountPath(options.apiBasePath, "/api/cms"),
|
|
111
|
+
mode,
|
|
112
|
+
storage: isProviderReference(options.storage, "storage")
|
|
113
|
+
? options.storage
|
|
114
|
+
: defaults.storage,
|
|
115
|
+
uploads: isProviderReference(options.uploads, "uploads")
|
|
116
|
+
? options.uploads
|
|
117
|
+
: defaults.uploads,
|
|
118
|
+
enableAdmin: options.enableAdmin ?? mode !== "cloud",
|
|
119
|
+
enableInlineEditor: options.enableInlineEditor ?? mode !== "cloud",
|
|
120
|
+
cloud,
|
|
121
|
+
schemas: options.schemas ?? {},
|
|
122
|
+
theme: resolveTheme(options.theme),
|
|
123
|
+
brand: resolveBrand(options.brand),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function buildProviderLoader(functionName, reference) {
|
|
127
|
+
if (!reference) {
|
|
128
|
+
return `export async function ${functionName}(){return null;}`;
|
|
129
|
+
}
|
|
130
|
+
const importName = `__caret_${functionName}`;
|
|
131
|
+
return [
|
|
132
|
+
`import * as ${importName} from ${JSON.stringify(reference.entrypoint)};`,
|
|
133
|
+
`export async function ${functionName}(){`,
|
|
134
|
+
` const resolvedExport = ${importName}[${JSON.stringify(reference.exportName ?? "default")}] ?? ${importName}.default;`,
|
|
135
|
+
" if (resolvedExport == null) {",
|
|
136
|
+
` throw new Error(${JSON.stringify(`[caretcms] Could not resolve provider export "${reference.exportName ?? "default"}" from ${reference.entrypoint}.`)});`,
|
|
137
|
+
" }",
|
|
138
|
+
" return typeof resolvedExport === 'function'",
|
|
139
|
+
` ? await resolvedExport(${JSON.stringify(reference.options ?? null)})`,
|
|
140
|
+
" : resolvedExport;",
|
|
141
|
+
"}",
|
|
142
|
+
].join("\n");
|
|
143
|
+
}
|
|
144
|
+
function createRuntimeProvidersPlugin(resolved) {
|
|
145
|
+
const source = [
|
|
146
|
+
buildProviderLoader("loadConfiguredStorage", resolved.storage),
|
|
147
|
+
buildProviderLoader("loadConfiguredUploadHandler", resolved.uploads),
|
|
148
|
+
].join("\n\n");
|
|
149
|
+
return {
|
|
150
|
+
name: "caretcms:runtime-providers",
|
|
151
|
+
resolveId(id) {
|
|
152
|
+
if (id === VIRTUAL_PROVIDER_MODULE_ID) {
|
|
153
|
+
return RESOLVED_VIRTUAL_PROVIDER_MODULE_ID;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
},
|
|
157
|
+
load(id) {
|
|
158
|
+
if (id === RESOLVED_VIRTUAL_PROVIDER_MODULE_ID) {
|
|
159
|
+
return source;
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function createSchemasPlugin(schemas) {
|
|
166
|
+
const hasSchemas = Object.keys(schemas).length > 0;
|
|
167
|
+
const source = hasSchemas
|
|
168
|
+
? [
|
|
169
|
+
`import { registerCollectionSchema } from "@caretcms/core/schema-registry";`,
|
|
170
|
+
`import { buildTemplate } from "@caretcms/core/schema-utils";`,
|
|
171
|
+
`const schemas = ${JSON.stringify(schemas)};`,
|
|
172
|
+
`for (const [collection, schema] of Object.entries(schemas)) {`,
|
|
173
|
+
` registerCollectionSchema(collection, schema, buildTemplate(schema));`,
|
|
174
|
+
`}`,
|
|
175
|
+
`export const registered = true;`,
|
|
176
|
+
].join("\n")
|
|
177
|
+
: `export const registered = false;`;
|
|
178
|
+
return {
|
|
179
|
+
name: "caretcms:schemas",
|
|
180
|
+
resolveId(id) {
|
|
181
|
+
if (id === VIRTUAL_SCHEMAS_MODULE_ID) {
|
|
182
|
+
return RESOLVED_VIRTUAL_SCHEMAS_MODULE_ID;
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
},
|
|
186
|
+
load(id) {
|
|
187
|
+
if (id === RESOLVED_VIRTUAL_SCHEMAS_MODULE_ID) {
|
|
188
|
+
return source;
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function describeProvider(reference) {
|
|
195
|
+
if (!reference)
|
|
196
|
+
return "none";
|
|
197
|
+
return `${reference.entrypoint}#${reference.exportName ?? "default"}`;
|
|
198
|
+
}
|
|
199
|
+
function buildCloudBootstrapScript(clientConfig, cloud) {
|
|
200
|
+
return [
|
|
201
|
+
`window.__CARET__ = ${JSON.stringify(clientConfig)};`,
|
|
202
|
+
`import { bootstrapCloudCms, hasCloudCmsSession, redirectToCloudCmsLogin } from "@caretcms/core/browser-runtime";`,
|
|
203
|
+
`const __caretCloudConfig = ${JSON.stringify(cloud)};`,
|
|
204
|
+
`bootstrapCloudCms(__caretCloudConfig).then(async () => {`,
|
|
205
|
+
` const url = new URL(window.location.href);`,
|
|
206
|
+
` const wantsEditor = url.searchParams.get("cms") === "1";`,
|
|
207
|
+
` if (hasCloudCmsSession(__caretCloudConfig)) {`,
|
|
208
|
+
` await import("@caretcms/core/editor-runtime");`,
|
|
209
|
+
` return;`,
|
|
210
|
+
` }`,
|
|
211
|
+
` if (wantsEditor) {`,
|
|
212
|
+
` redirectToCloudCmsLogin(__caretCloudConfig, window.location.href);`,
|
|
213
|
+
` }`,
|
|
214
|
+
`}).catch((error) => {`,
|
|
215
|
+
` console.warn("[caretcms] Cloud runtime bootstrap failed.", error);`,
|
|
216
|
+
"});",
|
|
217
|
+
].join("\n");
|
|
218
|
+
}
|
|
219
|
+
export function caret(options = {}) {
|
|
220
|
+
const resolved = resolveCaretOptions(options);
|
|
221
|
+
return {
|
|
222
|
+
name: "caretcms",
|
|
223
|
+
hooks: {
|
|
224
|
+
"astro:config:setup": ({ config, logger, addMiddleware, injectRoute, injectScript, updateConfig }) => {
|
|
225
|
+
const isStaticOutput = config.output === "static";
|
|
226
|
+
updateConfig({
|
|
227
|
+
vite: {
|
|
228
|
+
define: {
|
|
229
|
+
__ASTRO_CARET_MOUNT_PATH__: JSON.stringify(resolved.mountPath),
|
|
230
|
+
__ASTRO_CARET_API_BASE_PATH__: JSON.stringify(resolved.apiBasePath),
|
|
231
|
+
__ASTRO_CARET_MODE__: JSON.stringify(resolved.mode),
|
|
232
|
+
__ASTRO_CARET_THEME_CONFIG__: JSON.stringify(JSON.stringify(resolved.theme)),
|
|
233
|
+
__ASTRO_CARET_BRAND_CONFIG__: JSON.stringify(JSON.stringify(resolved.brand)),
|
|
234
|
+
},
|
|
235
|
+
plugins: [
|
|
236
|
+
createRuntimeProvidersPlugin(resolved),
|
|
237
|
+
createSchemasPlugin(resolved.schemas),
|
|
238
|
+
],
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
const clientConfig = {
|
|
242
|
+
mode: resolved.mode,
|
|
243
|
+
mountPath: resolved.mountPath,
|
|
244
|
+
apiBasePath: resolved.apiBasePath,
|
|
245
|
+
cloud: resolved.cloud ?? undefined,
|
|
246
|
+
};
|
|
247
|
+
if (resolved.mode === "cloud") {
|
|
248
|
+
injectScript("page", buildCloudBootstrapScript(clientConfig, resolved.cloud));
|
|
249
|
+
logger.warn("[caretcms] mode: 'cloud' is alpha. The hosted control plane is not yet generally available — bootstrap requests will fail silently against placeholder endpoints. Use embedded mode for production today.");
|
|
250
|
+
logger.info(`[caretcms] cloud mode loaded (projectId=${resolved.cloud.projectId}, endpoint=${resolved.cloud.endpoint}, static=${isStaticOutput})`);
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
if (isStaticOutput) {
|
|
254
|
+
logger.warn(`[caretcms] ${resolved.mode} mode needs Astro server output for local editing routes. Static output detected, so embedded CMS middleware and routes were skipped.`);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
addMiddleware({
|
|
258
|
+
order: "pre",
|
|
259
|
+
entrypoint: new URL("./runtime/middleware.js", import.meta.url),
|
|
260
|
+
});
|
|
261
|
+
if (resolved.enableAdmin) {
|
|
262
|
+
injectRoute({
|
|
263
|
+
pattern: resolved.mountPath,
|
|
264
|
+
entrypoint: new URL("./runtime/routes/admin.js", import.meta.url),
|
|
265
|
+
});
|
|
266
|
+
injectRoute({
|
|
267
|
+
pattern: `${resolved.mountPath}/cms`,
|
|
268
|
+
entrypoint: new URL("./runtime/routes/studio-home.js", import.meta.url),
|
|
269
|
+
});
|
|
270
|
+
injectRoute({
|
|
271
|
+
pattern: `${resolved.mountPath}/cms/[collection]`,
|
|
272
|
+
entrypoint: new URL("./runtime/routes/collection-list.js", import.meta.url),
|
|
273
|
+
});
|
|
274
|
+
injectRoute({
|
|
275
|
+
pattern: `${resolved.mountPath}/cms/[collection]/[id]`,
|
|
276
|
+
entrypoint: new URL("./runtime/routes/admin-entry.js", import.meta.url),
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
injectRoute({
|
|
280
|
+
pattern: `${resolved.apiBasePath}/entries`,
|
|
281
|
+
entrypoint: new URL("./runtime/routes/entries.js", import.meta.url),
|
|
282
|
+
});
|
|
283
|
+
injectRoute({
|
|
284
|
+
pattern: `${resolved.apiBasePath}/mutate`,
|
|
285
|
+
entrypoint: new URL("./runtime/routes/mutate.js", import.meta.url),
|
|
286
|
+
});
|
|
287
|
+
injectRoute({
|
|
288
|
+
pattern: `${resolved.apiBasePath}/schema`,
|
|
289
|
+
entrypoint: new URL("./runtime/routes/schema.js", import.meta.url),
|
|
290
|
+
});
|
|
291
|
+
injectRoute({
|
|
292
|
+
pattern: `${resolved.apiBasePath}/collections-metadata`,
|
|
293
|
+
entrypoint: new URL("./runtime/routes/collections-metadata.js", import.meta.url),
|
|
294
|
+
});
|
|
295
|
+
injectRoute({
|
|
296
|
+
pattern: `${resolved.apiBasePath}/auth/login`,
|
|
297
|
+
entrypoint: new URL("./runtime/routes/auth-login.js", import.meta.url),
|
|
298
|
+
});
|
|
299
|
+
injectRoute({
|
|
300
|
+
pattern: `${resolved.apiBasePath}/auth/session`,
|
|
301
|
+
entrypoint: new URL("./runtime/routes/auth-session.js", import.meta.url),
|
|
302
|
+
});
|
|
303
|
+
injectRoute({
|
|
304
|
+
pattern: `${resolved.apiBasePath}/auth/logout`,
|
|
305
|
+
entrypoint: new URL("./runtime/routes/auth-logout.js", import.meta.url),
|
|
306
|
+
});
|
|
307
|
+
injectRoute({
|
|
308
|
+
pattern: `${resolved.apiBasePath}/theme.css`,
|
|
309
|
+
entrypoint: new URL("./runtime/routes/theme-stylesheet.js", import.meta.url),
|
|
310
|
+
});
|
|
311
|
+
injectRoute({
|
|
312
|
+
pattern: `${resolved.apiBasePath}/history`,
|
|
313
|
+
entrypoint: new URL("./runtime/routes/history.js", import.meta.url),
|
|
314
|
+
});
|
|
315
|
+
injectRoute({
|
|
316
|
+
pattern: `${resolved.apiBasePath}/upload`,
|
|
317
|
+
entrypoint: new URL("./runtime/routes/upload.js", import.meta.url),
|
|
318
|
+
});
|
|
319
|
+
if (resolved.enableInlineEditor) {
|
|
320
|
+
injectRoute({
|
|
321
|
+
pattern: "/__caret/[...path]",
|
|
322
|
+
entrypoint: new URL("./runtime/routes/editor-assets.js", import.meta.url),
|
|
323
|
+
});
|
|
324
|
+
injectScript("page", `(function(){
|
|
325
|
+
if(!document.querySelector('[data-caret]'))return;
|
|
326
|
+
fetch(${JSON.stringify(`${resolved.apiBasePath}/auth/session`)},{credentials:'same-origin'})
|
|
327
|
+
.then(function(response){return response.ok?response.json():null;})
|
|
328
|
+
.then(function(session){
|
|
329
|
+
if(!session||session.authenticated!==true)return;
|
|
330
|
+
var l=document.createElement('link');l.rel='stylesheet';l.href='/__caret/editor.css';document.head.appendChild(l);
|
|
331
|
+
window.__CARET__=${JSON.stringify(clientConfig)};
|
|
332
|
+
var s=document.createElement('script');s.type='module';s.src='/__caret/editor.js?v='+Date.now();document.head.appendChild(s);
|
|
333
|
+
})
|
|
334
|
+
.catch(function(){});
|
|
335
|
+
})();`);
|
|
336
|
+
}
|
|
337
|
+
logger.info(`[caretcms] core loaded (mode=${resolved.mode}, mountPath=${resolved.mountPath}, apiBasePath=${resolved.apiBasePath}, storage=${describeProvider(resolved.storage)}, uploads=${describeProvider(resolved.uploads)}, enableAdmin=${resolved.enableAdmin}, inlineEditor=${resolved.enableInlineEditor})`);
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
export default caret;
|
|
343
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/loader.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Astro LiveLoader backed by the configured StorageAdapter.
|
|
3
|
+
*
|
|
4
|
+
* Compatible with Astro 6 (stable live content collections) and Astro 5.10+
|
|
5
|
+
* (where the feature lives behind `experimental.liveContentCollections`).
|
|
6
|
+
*
|
|
7
|
+
* Usage in src/caret.config.ts:
|
|
8
|
+
*
|
|
9
|
+
* import { defineLiveCollection } from 'astro:content';
|
|
10
|
+
* import { caretLoader } from '@caretcms/core';
|
|
11
|
+
*
|
|
12
|
+
* const pages = defineLiveCollection({
|
|
13
|
+
* loader: caretLoader('pages'),
|
|
14
|
+
* });
|
|
15
|
+
* export const collections = { pages };
|
|
16
|
+
*/
|
|
17
|
+
export declare class CaretLoaderError extends Error {
|
|
18
|
+
constructor(message: string, cause?: unknown);
|
|
19
|
+
}
|
|
20
|
+
type CaretEntryFilter = {
|
|
21
|
+
id: string;
|
|
22
|
+
};
|
|
23
|
+
type CaretLiveDataEntry = {
|
|
24
|
+
id: string;
|
|
25
|
+
data: Record<string, unknown>;
|
|
26
|
+
};
|
|
27
|
+
type CaretLiveDataCollection = {
|
|
28
|
+
entries: CaretLiveDataEntry[];
|
|
29
|
+
};
|
|
30
|
+
type CaretLoadEntryContext = {
|
|
31
|
+
filter: CaretEntryFilter;
|
|
32
|
+
collection: string;
|
|
33
|
+
};
|
|
34
|
+
type CaretLoadCollectionContext = {
|
|
35
|
+
filter?: Record<string, unknown>;
|
|
36
|
+
collection: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Structural LiveLoader type that is compatible with Astro's LiveLoader
|
|
40
|
+
* interface (stable in 6.x, experimental in 5.10+) without importing it
|
|
41
|
+
* directly — avoids hard peer-dep coupling at the type level and lets a
|
|
42
|
+
* single build target both major versions.
|
|
43
|
+
*/
|
|
44
|
+
export type CaretLiveLoader = {
|
|
45
|
+
name: string;
|
|
46
|
+
loadEntry: (context: CaretLoadEntryContext) => Promise<CaretLiveDataEntry | undefined | {
|
|
47
|
+
error: CaretLoaderError;
|
|
48
|
+
}>;
|
|
49
|
+
loadCollection: (context: CaretLoadCollectionContext) => Promise<CaretLiveDataCollection | {
|
|
50
|
+
error: CaretLoaderError;
|
|
51
|
+
}>;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Create an Astro LiveLoader that reads from the configured StorageAdapter.
|
|
55
|
+
* Works on Astro 6 (stable) and Astro 5.10+ (experimental flag required).
|
|
56
|
+
*
|
|
57
|
+
* @param collection - The collection name (must be known to the adapter).
|
|
58
|
+
*/
|
|
59
|
+
export declare function caretLoader(collection: string): CaretLiveLoader;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAO7C;AAmBD,KAAK,gBAAgB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,KAAK,kBAAkB,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,KAAK,0BAA0B,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CACT,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,kBAAkB,GAAG,SAAS,GAAG;QAAE,KAAK,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IAC3E,cAAc,EAAE,CACd,OAAO,EAAE,0BAA0B,KAChC,OAAO,CAAC,uBAAuB,GAAG;QAAE,KAAK,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;CACrE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,GACjB,eAAe,CAyCjB"}
|
package/dist/loader.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Astro LiveLoader backed by the configured StorageAdapter.
|
|
3
|
+
*
|
|
4
|
+
* Compatible with Astro 6 (stable live content collections) and Astro 5.10+
|
|
5
|
+
* (where the feature lives behind `experimental.liveContentCollections`).
|
|
6
|
+
*
|
|
7
|
+
* Usage in src/caret.config.ts:
|
|
8
|
+
*
|
|
9
|
+
* import { defineLiveCollection } from 'astro:content';
|
|
10
|
+
* import { caretLoader } from '@caretcms/core';
|
|
11
|
+
*
|
|
12
|
+
* const pages = defineLiveCollection({
|
|
13
|
+
* loader: caretLoader('pages'),
|
|
14
|
+
* });
|
|
15
|
+
* export const collections = { pages };
|
|
16
|
+
*/
|
|
17
|
+
import { requireRequestContext } from "./runtime/request-context.js";
|
|
18
|
+
export class CaretLoaderError extends Error {
|
|
19
|
+
constructor(message, cause) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = "CaretLoaderError";
|
|
22
|
+
if (cause !== undefined) {
|
|
23
|
+
this.cause = cause;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function requireAdapter() {
|
|
28
|
+
try {
|
|
29
|
+
return requireRequestContext().adapter;
|
|
30
|
+
}
|
|
31
|
+
catch (cause) {
|
|
32
|
+
throw new CaretLoaderError("StorageAdapter not initialized. " +
|
|
33
|
+
"Ensure @caretcms/core middleware runs before page rendering " +
|
|
34
|
+
"(the integration registers it with order: 'pre').", cause);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create an Astro LiveLoader that reads from the configured StorageAdapter.
|
|
39
|
+
* Works on Astro 6 (stable) and Astro 5.10+ (experimental flag required).
|
|
40
|
+
*
|
|
41
|
+
* @param collection - The collection name (must be known to the adapter).
|
|
42
|
+
*/
|
|
43
|
+
export function caretLoader(collection) {
|
|
44
|
+
return {
|
|
45
|
+
name: `caret:${collection}`,
|
|
46
|
+
async loadEntry({ filter }) {
|
|
47
|
+
try {
|
|
48
|
+
const adapter = requireAdapter();
|
|
49
|
+
const id = filter.id;
|
|
50
|
+
const entry = await adapter.getEntry(collection, id);
|
|
51
|
+
if (!entry)
|
|
52
|
+
return undefined;
|
|
53
|
+
return { id: entry.id, data: entry.data };
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return {
|
|
57
|
+
error: new CaretLoaderError(`Failed to load entry ${collection}::${filter.id}`, error),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
async loadCollection() {
|
|
62
|
+
try {
|
|
63
|
+
const adapter = requireAdapter();
|
|
64
|
+
const allEntries = await adapter.listEntries(collection);
|
|
65
|
+
return {
|
|
66
|
+
entries: allEntries.map((entry) => ({
|
|
67
|
+
id: entry.id,
|
|
68
|
+
data: entry.data,
|
|
69
|
+
})),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
return {
|
|
74
|
+
error: new CaretLoaderError(`Failed to load collection ${collection}`, error),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACvB,IAAoC,CAAC,KAAK,GAAG,KAAK,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AAED,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,OAAO,qBAAqB,EAAE,CAAC,OAAO,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gBAAgB,CACxB,kCAAkC;YAChC,8DAA8D;YAC9D,mDAAmD,EACrD,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AA2CD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,UAAkB;IAElB,OAAO;QACL,IAAI,EAAE,SAAS,UAAU,EAAE;QAE3B,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE;YACxB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK;oBAAE,OAAO,SAAS,CAAC;gBAC7B,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YAC5C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,KAAK,EAAE,IAAI,gBAAgB,CACzB,wBAAwB,UAAU,KAAK,MAAM,CAAC,EAAE,EAAE,EAClD,KAAK,CACN;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,cAAc;YAClB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAgB,MAAM,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBACtE,OAAO;oBACL,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAClC,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;qBACjB,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,KAAK,EAAE,IAAI,gBAAgB,CACzB,6BAA6B,UAAU,EAAE,EACzC,KAAK,CACN;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FilesystemAdapter } from "../../runtime/storage/filesystem-adapter.js";
|
|
2
|
+
export declare function filesystemStorageProvider(options?: {
|
|
3
|
+
dataRoot?: string;
|
|
4
|
+
metaRoot?: string;
|
|
5
|
+
}): FilesystemAdapter;
|
|
6
|
+
export default filesystemStorageProvider;
|
|
7
|
+
//# sourceMappingURL=filesystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../src/providers/storage/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,iBAAiB,CAEpB;AAED,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/providers/storage/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,MAAM,UAAU,yBAAyB,CAAC,OAGzC;IACC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,eAAe,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FilesystemUploadHandler } from "../../runtime/storage/filesystem-upload-handler.js";
|
|
2
|
+
export declare function localUploadsProvider(options?: {
|
|
3
|
+
uploadsDir?: string;
|
|
4
|
+
}): FilesystemUploadHandler;
|
|
5
|
+
export default localUploadsProvider;
|
|
6
|
+
//# sourceMappingURL=local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../src/providers/uploads/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAE7F,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,uBAAuB,CAE1B;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../src/providers/uploads/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAE7F,MAAM,UAAU,oBAAoB,CAAC,OAEpC;IACC,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie-utils.d.ts","sourceRoot":"","sources":["../../../src/runtime/auth/cookie-utils.ts"],"names":[],"mappings":"AAOA,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAmBjE;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,QAAQ,EAAE,MAAM,GACf,MAAM,CAGR"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
function isProxyTrusted() {
|
|
2
|
+
const raw = process.env.CARET_TRUST_PROXY;
|
|
3
|
+
if (!raw)
|
|
4
|
+
return false;
|
|
5
|
+
const value = raw.trim().toLowerCase();
|
|
6
|
+
return value === "1" || value === "true" || value === "yes";
|
|
7
|
+
}
|
|
8
|
+
export function shouldUseSecureCookies(request) {
|
|
9
|
+
// Only honor X-Forwarded-Proto when the deployment has explicitly opted in
|
|
10
|
+
// via CARET_TRUST_PROXY. Otherwise any client could send
|
|
11
|
+
// `X-Forwarded-Proto: http` to suppress the Secure flag on the session
|
|
12
|
+
// cookie, leaking it on a TLS downgrade.
|
|
13
|
+
if (isProxyTrusted()) {
|
|
14
|
+
const forwarded = request?.headers.get("x-forwarded-proto")?.split(",")[0]?.trim();
|
|
15
|
+
if (forwarded)
|
|
16
|
+
return forwarded === "https";
|
|
17
|
+
}
|
|
18
|
+
if (request) {
|
|
19
|
+
try {
|
|
20
|
+
return new URL(request.url).protocol === "https:";
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// fall through to NODE_ENV
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return process.env.NODE_ENV === "production";
|
|
27
|
+
}
|
|
28
|
+
export function sanitizeRedirect(value, fallback) {
|
|
29
|
+
if (!value)
|
|
30
|
+
return fallback;
|
|
31
|
+
return value.startsWith("/") && !value.startsWith("//") ? value : fallback;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=cookie-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie-utils.js","sourceRoot":"","sources":["../../../src/runtime/auth/cookie-utils.ts"],"names":[],"mappings":"AAAA,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC1C,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAiB;IACtD,2EAA2E;IAC3E,yDAAyD;IACzD,uEAAuE;IACvE,yCAAyC;IACzC,IAAI,cAAc,EAAE,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACnF,IAAI,SAAS;YAAE,OAAO,SAAS,KAAK,OAAO,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAgC,EAChC,QAAgB;IAEhB,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
type CookieBag = {
|
|
2
|
+
cookies?: {
|
|
3
|
+
get: (name: string) => {
|
|
4
|
+
value: string;
|
|
5
|
+
} | undefined;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Detect demo mode from any available env source. Workers populate env via
|
|
10
|
+
* `context.locals.runtime.env` (Astro Cloudflare adapter); Node hosts use
|
|
11
|
+
* `process.env`. Pass `runtimeEnv` when available — falls back to process.env.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isDemoModeEnabled(runtimeEnv?: Record<string, unknown> | null): boolean;
|
|
14
|
+
export interface DemoSessionResolution {
|
|
15
|
+
sessionId: string;
|
|
16
|
+
setCookieHeader: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Read the demo session cookie or mint a new one. Always refreshes the TTL,
|
|
20
|
+
* giving us a sliding 2h window per active visitor.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveDemoSession(context: CookieBag, request: Request): DemoSessionResolution;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=demo-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-session.d.ts","sourceRoot":"","sources":["../../../src/runtime/auth/demo-session.ts"],"names":[],"mappings":"AAMA,KAAK,SAAS,GAAG;IACf,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAA;KAAE,CAAC;CACpE,CAAC;AAcF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC1C,OAAO,CAMT;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,OAAO,GACf,qBAAqB,CAOvB"}
|