@caretcms/core 0.1.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -13
- package/dist/contracts.d.ts +1 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +1 -0
- package/dist/contracts.js.map +1 -1
- package/dist/index.d.ts +31 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +146 -30
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +17 -6
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +57 -14
- package/dist/loader.js.map +1 -1
- package/dist/markdown/block-context.d.ts +21 -0
- package/dist/markdown/block-context.d.ts.map +1 -0
- package/dist/markdown/block-context.js +27 -0
- package/dist/markdown/block-context.js.map +1 -0
- package/dist/markdown/canonical-body.d.ts +30 -0
- package/dist/markdown/canonical-body.d.ts.map +1 -0
- package/dist/markdown/canonical-body.js +54 -0
- package/dist/markdown/canonical-body.js.map +1 -0
- package/dist/markdown/contracts.d.ts +66 -0
- package/dist/markdown/contracts.d.ts.map +1 -0
- package/dist/markdown/contracts.js +102 -0
- package/dist/markdown/contracts.js.map +1 -0
- package/dist/markdown/html-to-snodes.d.ts +26 -0
- package/dist/markdown/html-to-snodes.d.ts.map +1 -0
- package/dist/markdown/html-to-snodes.js +118 -0
- package/dist/markdown/html-to-snodes.js.map +1 -0
- package/dist/markdown/remark.d.ts +35 -0
- package/dist/markdown/remark.d.ts.map +1 -0
- package/dist/markdown/remark.js +66 -0
- package/dist/markdown/remark.js.map +1 -0
- package/dist/markdown/satteri.d.ts +19 -0
- package/dist/markdown/satteri.d.ts.map +1 -0
- package/dist/markdown/satteri.js +144 -0
- package/dist/markdown/satteri.js.map +1 -0
- package/dist/markdown/serialize.d.ts +60 -0
- package/dist/markdown/serialize.d.ts.map +1 -0
- package/dist/markdown/serialize.js +264 -0
- package/dist/markdown/serialize.js.map +1 -0
- package/dist/markdown/splice.d.ts +32 -0
- package/dist/markdown/splice.d.ts.map +1 -0
- package/dist/markdown/splice.js +44 -0
- package/dist/markdown/splice.js.map +1 -0
- package/dist/markdown/stamp.d.ts +68 -0
- package/dist/markdown/stamp.d.ts.map +1 -0
- package/dist/markdown/stamp.js +131 -0
- package/dist/markdown/stamp.js.map +1 -0
- package/dist/runtime/auth/rate-limiter.d.ts.map +1 -1
- package/dist/runtime/auth/rate-limiter.js +5 -0
- package/dist/runtime/auth/rate-limiter.js.map +1 -1
- package/dist/runtime/auth/session.d.ts +3 -3
- package/dist/runtime/auth/session.d.ts.map +1 -1
- package/dist/runtime/auth/session.js +68 -21
- package/dist/runtime/auth/session.js.map +1 -1
- package/dist/runtime/config.d.ts +3 -0
- package/dist/runtime/config.d.ts.map +1 -1
- package/dist/runtime/config.js +4 -1
- package/dist/runtime/config.js.map +1 -1
- package/dist/runtime/content.d.ts.map +1 -1
- package/dist/runtime/content.js +4 -2
- package/dist/runtime/content.js.map +1 -1
- package/dist/runtime/i18n.d.ts +86 -0
- package/dist/runtime/i18n.d.ts.map +1 -0
- package/dist/runtime/i18n.js +168 -0
- package/dist/runtime/i18n.js.map +1 -0
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/runtime/middleware.js +61 -6
- package/dist/runtime/middleware.js.map +1 -1
- package/dist/runtime/mutations/contracts.d.ts +28 -1
- package/dist/runtime/mutations/contracts.d.ts.map +1 -1
- package/dist/runtime/mutations/contracts.js +76 -0
- package/dist/runtime/mutations/contracts.js.map +1 -1
- package/dist/runtime/mutations/engine.d.ts +6 -1
- package/dist/runtime/mutations/engine.d.ts.map +1 -1
- package/dist/runtime/mutations/engine.js +271 -51
- package/dist/runtime/mutations/engine.js.map +1 -1
- package/dist/runtime/providers.d.ts +2 -1
- package/dist/runtime/providers.d.ts.map +1 -1
- package/dist/runtime/providers.js +7 -1
- package/dist/runtime/providers.js.map +1 -1
- package/dist/runtime/publish.d.ts +13 -1
- package/dist/runtime/publish.d.ts.map +1 -1
- package/dist/runtime/publish.js +80 -4
- package/dist/runtime/publish.js.map +1 -1
- package/dist/runtime/request-context.d.ts +14 -2
- package/dist/runtime/request-context.d.ts.map +1 -1
- package/dist/runtime/request-context.js +7 -1
- package/dist/runtime/request-context.js.map +1 -1
- package/dist/runtime/rewrite.d.ts.map +1 -1
- package/dist/runtime/rewrite.js +109 -3
- package/dist/runtime/rewrite.js.map +1 -1
- package/dist/runtime/rich-allowlist.d.ts.map +1 -1
- package/dist/runtime/rich-allowlist.js +5 -1
- package/dist/runtime/rich-allowlist.js.map +1 -1
- package/dist/runtime/routes/admin-entry.d.ts.map +1 -1
- package/dist/runtime/routes/admin-entry.js +114 -18
- package/dist/runtime/routes/admin-entry.js.map +1 -1
- package/dist/runtime/routes/admin.d.ts.map +1 -1
- package/dist/runtime/routes/admin.js +33 -15
- package/dist/runtime/routes/admin.js.map +1 -1
- package/dist/runtime/routes/auth-login.d.ts.map +1 -1
- package/dist/runtime/routes/auth-login.js +4 -0
- package/dist/runtime/routes/auth-login.js.map +1 -1
- package/dist/runtime/routes/auth-logout.d.ts.map +1 -1
- package/dist/runtime/routes/auth-logout.js +7 -2
- package/dist/runtime/routes/auth-logout.js.map +1 -1
- package/dist/runtime/routes/auth-session.d.ts.map +1 -1
- package/dist/runtime/routes/auth-session.js +4 -2
- package/dist/runtime/routes/auth-session.js.map +1 -1
- package/dist/runtime/routes/collection-list.d.ts.map +1 -1
- package/dist/runtime/routes/collection-list.js +64 -41
- package/dist/runtime/routes/collection-list.js.map +1 -1
- package/dist/runtime/routes/entries.d.ts.map +1 -1
- package/dist/runtime/routes/entries.js +16 -6
- package/dist/runtime/routes/entries.js.map +1 -1
- package/dist/runtime/routes/history.d.ts.map +1 -1
- package/dist/runtime/routes/history.js +50 -22
- package/dist/runtime/routes/history.js.map +1 -1
- package/dist/runtime/routes/mutate.d.ts.map +1 -1
- package/dist/runtime/routes/mutate.js +40 -6
- package/dist/runtime/routes/mutate.js.map +1 -1
- package/dist/runtime/routes/publish.d.ts.map +1 -1
- package/dist/runtime/routes/publish.js +5 -2
- package/dist/runtime/routes/publish.js.map +1 -1
- package/dist/runtime/routes/schema.d.ts.map +1 -1
- package/dist/runtime/routes/schema.js +11 -3
- package/dist/runtime/routes/schema.js.map +1 -1
- package/dist/runtime/routes/studio-home.d.ts.map +1 -1
- package/dist/runtime/routes/studio-home.js +38 -19
- package/dist/runtime/routes/studio-home.js.map +1 -1
- package/dist/runtime/routes/theme-stylesheet.d.ts.map +1 -1
- package/dist/runtime/routes/theme-stylesheet.js +11 -1
- package/dist/runtime/routes/theme-stylesheet.js.map +1 -1
- package/dist/runtime/schema-registry.d.ts +8 -1
- package/dist/runtime/schema-registry.d.ts.map +1 -1
- package/dist/runtime/schema-registry.js +47 -3
- package/dist/runtime/schema-registry.js.map +1 -1
- package/dist/runtime/storage/atomic-write.d.ts.map +1 -1
- package/dist/runtime/storage/atomic-write.js +8 -3
- package/dist/runtime/storage/atomic-write.js.map +1 -1
- package/dist/runtime/storage/markdown-adapter.d.ts +19 -0
- package/dist/runtime/storage/markdown-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/markdown-adapter.js +41 -0
- package/dist/runtime/storage/markdown-adapter.js.map +1 -1
- package/dist/runtime/storage/session-overlay-adapter.d.ts +8 -0
- package/dist/runtime/storage/session-overlay-adapter.d.ts.map +1 -1
- package/dist/runtime/storage/session-overlay-adapter.js +24 -2
- package/dist/runtime/storage/session-overlay-adapter.js.map +1 -1
- package/dist/runtime/themes/preset-tokens.js +4 -4
- package/dist/runtime/themes/preset-tokens.js.map +1 -1
- package/dist/runtime/utils.d.ts +10 -0
- package/dist/runtime/utils.d.ts.map +1 -1
- package/dist/runtime/utils.js +16 -0
- package/dist/runtime/utils.js.map +1 -1
- package/dist/runtime/views/studio-layout.d.ts +3 -0
- package/dist/runtime/views/studio-layout.d.ts.map +1 -1
- package/dist/runtime/views/studio-layout.js +36 -13
- package/dist/runtime/views/studio-layout.js.map +1 -1
- package/dist/schema-utils.d.ts +7 -0
- package/dist/schema-utils.d.ts.map +1 -1
- package/dist/schema-utils.js +143 -0
- package/dist/schema-utils.js.map +1 -1
- package/dist/types.d.ts +83 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/static/cms/admin-entry.css +135 -13
- package/static/cms/admin-entry.js +509 -86
- package/static/cms/editor/guards.js +1 -1
- package/static/cms/editor/image-edit.js +42 -11
- package/static/cms/editor/image.css +7 -1
- package/static/cms/editor/md-block-edit.js +176 -0
- package/static/cms/editor/md-serialize.js +301 -0
- package/static/cms/editor/panel.css +69 -25
- package/static/cms/editor/panel.js +58 -1
- package/static/cms/editor/rich-toolbar.js +4 -3
- package/static/cms/editor/sanitize.js +2 -1
- package/static/cms/editor/sync.js +277 -56
- package/static/cms/editor/text-edit.js +68 -17
- package/static/cms/editor/text-link-interactions.js +4 -4
- package/static/cms/editor/toast.css +114 -2
- package/static/cms/editor/toast.js +121 -22
- package/static/cms/editor/tokens-and-text.css +73 -3
- package/static/cms/editor/toolbar.css +19 -6
- package/static/cms/editor/toolbar.js +64 -23
- package/static/cms/editor.css +1 -1
- package/static/cms/editor.js +14 -3
- package/static/cms/studio-tokens.css +4 -4
- package/static/cms/studio.css +24 -0
|
@@ -2,6 +2,8 @@ export const prerender = false;
|
|
|
2
2
|
import { isEditorAuthenticated } from "../auth/session.js";
|
|
3
3
|
import { getRuntimeConfig } from "../config.js";
|
|
4
4
|
import { resolveAdapter } from "./_helpers.js";
|
|
5
|
+
import { isKnownStudioCollection, resolveCollectionStudioConfig, } from "../schema-registry.js";
|
|
6
|
+
import { getRequestContext } from "../request-context.js";
|
|
5
7
|
import { escapeHtml, htmlResponse, redirectResponse, renderStudioPage, } from "../views/studio-layout.js";
|
|
6
8
|
function humanize(name) {
|
|
7
9
|
return name.replace(/[-_]+/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
|
|
@@ -18,27 +20,49 @@ export async function GET(context) {
|
|
|
18
20
|
return redirectResponse(`${runtime.mountPath}/cms`);
|
|
19
21
|
}
|
|
20
22
|
const adapter = await resolveAdapter();
|
|
21
|
-
|
|
22
|
-
if (!known.includes(collection)) {
|
|
23
|
+
if (!(await isKnownStudioCollection(adapter, collection))) {
|
|
23
24
|
return redirectResponse(`${runtime.mountPath}/cms`);
|
|
24
25
|
}
|
|
25
|
-
const
|
|
26
|
+
const collectionConfig = await resolveCollectionStudioConfig(adapter, collection);
|
|
27
|
+
if (collectionConfig.singletonId && id !== collectionConfig.singletonId) {
|
|
28
|
+
return redirectResponse(`${runtime.mountPath}/cms/${encodeURIComponent(collection)}/${encodeURIComponent(collectionConfig.singletonId)}`);
|
|
29
|
+
}
|
|
30
|
+
const label = collectionConfig.label || humanize(collection);
|
|
31
|
+
const deletable = collectionConfig.deletable !== false && !collectionConfig.singletonId;
|
|
32
|
+
const savingToPreview = getRequestContext()?.overlayActive === true;
|
|
33
|
+
const messages = runtime.messages;
|
|
26
34
|
const config = {
|
|
27
35
|
apiBasePath: runtime.apiBasePath,
|
|
28
36
|
mountPath: runtime.mountPath,
|
|
29
37
|
collection,
|
|
30
38
|
id,
|
|
39
|
+
isNew: context.url.searchParams.get("new") === "1",
|
|
40
|
+
initializeIfMissing: collectionConfig.singletonId === id,
|
|
41
|
+
deletable,
|
|
42
|
+
saveTarget: savingToPreview ? "preview" : "live",
|
|
43
|
+
messages,
|
|
31
44
|
};
|
|
32
|
-
const extraStyles = `@import "/__caret/admin-entry.css";
|
|
45
|
+
const extraStyles = `@import "/__caret/admin-entry.css?v=studio-upstream-20260819";
|
|
33
46
|
.editor-action-bar {
|
|
34
47
|
display: flex;
|
|
35
48
|
align-items: center;
|
|
36
49
|
justify-content: space-between;
|
|
37
50
|
gap: 1rem;
|
|
38
51
|
flex-wrap: wrap;
|
|
52
|
+
position: sticky;
|
|
53
|
+
top: 0;
|
|
54
|
+
z-index: 8;
|
|
55
|
+
padding: 0.875rem 1rem;
|
|
56
|
+
margin: -0.875rem -1rem 1.5rem;
|
|
39
57
|
margin-bottom: 1.5rem;
|
|
58
|
+
border: 1px solid var(--studio-border);
|
|
59
|
+
border-radius: var(--radius-theme-sm);
|
|
60
|
+
background: var(--studio-bg);
|
|
61
|
+
background: color-mix(in srgb, var(--studio-bg) 92%, transparent);
|
|
62
|
+
box-shadow: 0 10px 28px rgba(0, 0, 0, 0.16);
|
|
63
|
+
backdrop-filter: blur(14px);
|
|
40
64
|
}
|
|
41
|
-
.editor-action-bar
|
|
65
|
+
.editor-action-bar h1 {
|
|
42
66
|
font-family: var(--studio-font-heading);
|
|
43
67
|
font-size: 1.25rem;
|
|
44
68
|
font-weight: 500;
|
|
@@ -55,6 +79,33 @@ export async function GET(context) {
|
|
|
55
79
|
display: flex;
|
|
56
80
|
align-items: center;
|
|
57
81
|
gap: 0.75rem;
|
|
82
|
+
flex-wrap: wrap;
|
|
83
|
+
justify-content: flex-end;
|
|
84
|
+
}
|
|
85
|
+
#btn-save {
|
|
86
|
+
min-width: 7.5rem;
|
|
87
|
+
min-height: 2.5rem;
|
|
88
|
+
}
|
|
89
|
+
#btn-save.studio-save-dirty {
|
|
90
|
+
box-shadow: 0 8px 24px var(--studio-accent-soft);
|
|
91
|
+
}
|
|
92
|
+
@media (max-width: 640px) {
|
|
93
|
+
.editor-action-bar {
|
|
94
|
+
align-items: flex-start;
|
|
95
|
+
padding: 0.75rem;
|
|
96
|
+
margin-inline: -0.5rem;
|
|
97
|
+
}
|
|
98
|
+
.editor-actions {
|
|
99
|
+
width: 100%;
|
|
100
|
+
justify-content: flex-start;
|
|
101
|
+
gap: 0.5rem;
|
|
102
|
+
}
|
|
103
|
+
#status-msg {
|
|
104
|
+
width: 100%;
|
|
105
|
+
}
|
|
106
|
+
#btn-save {
|
|
107
|
+
margin-left: auto;
|
|
108
|
+
}
|
|
58
109
|
}
|
|
59
110
|
.modal-backdrop {
|
|
60
111
|
position: fixed;
|
|
@@ -100,6 +151,39 @@ export async function GET(context) {
|
|
|
100
151
|
border-bottom: 1px solid var(--studio-border);
|
|
101
152
|
}
|
|
102
153
|
.history-panel-body { padding: 1rem; }
|
|
154
|
+
.editor-guide {
|
|
155
|
+
display: grid;
|
|
156
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
157
|
+
gap: 0.75rem;
|
|
158
|
+
margin-bottom: 1.5rem;
|
|
159
|
+
padding: 1rem;
|
|
160
|
+
border: 1px solid var(--studio-border);
|
|
161
|
+
border-radius: var(--radius-theme-sm);
|
|
162
|
+
background: var(--studio-accent-soft);
|
|
163
|
+
}
|
|
164
|
+
.editor-guide-icon {
|
|
165
|
+
display: grid;
|
|
166
|
+
place-items: center;
|
|
167
|
+
width: 1.75rem;
|
|
168
|
+
height: 1.75rem;
|
|
169
|
+
border-radius: 50%;
|
|
170
|
+
background: var(--studio-accent);
|
|
171
|
+
color: var(--studio-bg);
|
|
172
|
+
font-size: 0.75rem;
|
|
173
|
+
font-weight: 700;
|
|
174
|
+
}
|
|
175
|
+
.editor-guide strong {
|
|
176
|
+
display: block;
|
|
177
|
+
margin-bottom: 0.25rem;
|
|
178
|
+
color: var(--studio-text);
|
|
179
|
+
font-size: 0.8rem;
|
|
180
|
+
}
|
|
181
|
+
.editor-guide p {
|
|
182
|
+
margin: 0;
|
|
183
|
+
color: var(--studio-text-muted);
|
|
184
|
+
font-size: 0.72rem;
|
|
185
|
+
line-height: 1.6;
|
|
186
|
+
}
|
|
103
187
|
`;
|
|
104
188
|
const body = `<div class="studio-fade-in" style="max-width:48rem;margin:0 auto;" id="cms-entry-page" data-collection="${escapeHtml(collection)}" data-id="${escapeHtml(id)}">
|
|
105
189
|
<div id="loading" style="display:flex;justify-content:center;padding:5rem 0;">
|
|
@@ -107,28 +191,40 @@ export async function GET(context) {
|
|
|
107
191
|
</div>
|
|
108
192
|
|
|
109
193
|
<div id="not-found" hidden style="text-align:center;padding:5rem 0;color:var(--studio-text-dim);">
|
|
110
|
-
<p
|
|
111
|
-
<a href="${escapeHtml(`${runtime.mountPath}/cms/${collection}`)}" style="margin-top:1rem;display:inline-block;font-size:0.75rem;color:var(--studio-accent);text-decoration:underline;"
|
|
194
|
+
<p>${escapeHtml(messages["entry.notFound"])}</p>
|
|
195
|
+
<a href="${escapeHtml(`${runtime.mountPath}/cms/${collection}`)}" style="margin-top:1rem;display:inline-block;font-size:0.75rem;color:var(--studio-accent);text-decoration:underline;">${escapeHtml(messages["entry.goBack"])}</a>
|
|
112
196
|
</div>
|
|
113
197
|
|
|
114
198
|
<div id="editor" hidden>
|
|
115
199
|
<div class="editor-action-bar">
|
|
116
200
|
<div>
|
|
117
|
-
<
|
|
201
|
+
<h1 id="entry-title">…</h1>
|
|
118
202
|
<p class="meta">${escapeHtml(collection)} / ${escapeHtml(id)}</p>
|
|
119
203
|
</div>
|
|
120
204
|
<div class="editor-actions">
|
|
205
|
+
<span id="save-target" style="font-size:0.68rem;color:var(--studio-text-dim);">${escapeHtml(savingToPreview ? messages["entry.savingPreview"] : messages["entry.savingLive"])}</span>
|
|
121
206
|
<span id="status-msg" hidden style="font-size:0.75rem;"></span>
|
|
122
|
-
<
|
|
123
|
-
<button id="btn-
|
|
124
|
-
|
|
207
|
+
<a id="btn-preview" class="studio-btn-ghost" href="${escapeHtml(runtime.editorHome)}" target="_blank" rel="noopener">${escapeHtml(messages["entry.preview"])}</a>
|
|
208
|
+
<button id="btn-history" type="button" class="studio-btn-ghost">${escapeHtml(messages["entry.history"])}</button>
|
|
209
|
+
${deletable ? `<button id="btn-delete" type="button" class="studio-btn-danger">${escapeHtml(messages["entry.delete"])}</button>` : ""}
|
|
210
|
+
<button id="btn-save" type="button" class="studio-save-clean" disabled style="padding:8px 18px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;border:none;border-radius:var(--radius-theme-xs);font-family:var(--studio-font);">${escapeHtml(savingToPreview ? messages["entry.saveDraft"] : messages["entry.saveLive"])}</button>
|
|
125
211
|
</div>
|
|
126
212
|
</div>
|
|
127
213
|
|
|
214
|
+
<div class="editor-guide" id="editor-guide">
|
|
215
|
+
<span class="editor-guide-icon">i</span>
|
|
216
|
+
<div>
|
|
217
|
+
<strong id="editor-guide-title">${escapeHtml(messages["entry.guideTitle"])}</strong>
|
|
218
|
+
<p id="editor-guide-copy">${escapeHtml(messages["entry.guideCopy"])}</p>
|
|
219
|
+
</div>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
<div id="validation-warning" role="alert" hidden style="margin-bottom:1.5rem;padding:1rem;border:1px solid var(--studio-red);background:rgba(239,68,68,0.08);color:var(--studio-text);font-size:0.75rem;"></div>
|
|
223
|
+
|
|
128
224
|
<div id="history-panel" class="history-panel" hidden>
|
|
129
225
|
<div class="history-panel-header">
|
|
130
|
-
<span class="studio-label" style="margin:0;"
|
|
131
|
-
<button id="btn-history-close" type="button" class="studio-btn-ghost"
|
|
226
|
+
<span class="studio-label" style="margin:0;">${escapeHtml(messages["entry.versionHistory"])}</span>
|
|
227
|
+
<button id="btn-history-close" type="button" class="studio-btn-ghost">${escapeHtml(messages["common.close"])}</button>
|
|
132
228
|
</div>
|
|
133
229
|
<div id="history-list" class="history-panel-body">
|
|
134
230
|
<p style="font-size:0.75rem;color:var(--studio-text-dim);margin:0;">Loading…</p>
|
|
@@ -146,17 +242,17 @@ export async function GET(context) {
|
|
|
146
242
|
<path stroke-linecap="round" stroke-linejoin="round" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"/>
|
|
147
243
|
</svg>
|
|
148
244
|
</div>
|
|
149
|
-
<h3
|
|
150
|
-
<p
|
|
245
|
+
<h3>${escapeHtml(messages["entry.deleteTitle"])}</h3>
|
|
246
|
+
<p>${escapeHtml(messages["entry.deleteCopy"])} <strong id="delete-entry-name" style="color:var(--studio-text);"></strong></p>
|
|
151
247
|
<div style="display:flex;justify-content:center;gap:0.75rem;">
|
|
152
|
-
<button id="btn-delete-cancel" type="button" class="studio-btn-ghost"
|
|
153
|
-
<button id="btn-delete-confirm" type="button" class="studio-btn-danger" style="background:var(--studio-red);color:white;"
|
|
248
|
+
<button id="btn-delete-cancel" type="button" class="studio-btn-ghost">${escapeHtml(messages["common.cancel"])}</button>
|
|
249
|
+
<button id="btn-delete-confirm" type="button" class="studio-btn-danger" style="background:var(--studio-red);color:white;">${escapeHtml(messages["entry.delete"])}</button>
|
|
154
250
|
</div>
|
|
155
251
|
</div>
|
|
156
252
|
</div>
|
|
157
253
|
|
|
158
254
|
<script type="application/json" id="caret-entry-config">${JSON.stringify(config).replace(/</g, "\\u003c")}</script>
|
|
159
|
-
<script src="/__caret/admin-entry.js" defer></script>`;
|
|
255
|
+
<script src="/__caret/admin-entry.js?v=studio-upstream-20260819" defer></script>`;
|
|
160
256
|
return htmlResponse(renderStudioPage({
|
|
161
257
|
runtime,
|
|
162
258
|
title: `Edit ${id}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-entry.js","sourceRoot":"","sources":["../../../src/runtime/routes/admin-entry.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAG/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAmB;IAC3C,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,GAAG,OAAO,CAAC,SAAS,aAAa,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAElG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC;QACvB,OAAO,gBAAgB,CAAC,GAAG,OAAO,CAAC,SAAS,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;IACvC,
|
|
1
|
+
{"version":3,"file":"admin-entry.js","sourceRoot":"","sources":["../../../src/runtime/routes/admin-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/admin.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/admin.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAqQxC,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+ChE"}
|
|
@@ -2,6 +2,7 @@ export const prerender = false;
|
|
|
2
2
|
import { hasConfiguredEditorPassword, isDevEditorPasswordActive, isEditorAuthenticated, } from "../auth/session.js";
|
|
3
3
|
import { sanitizeRedirect } from "../auth/cookie-utils.js";
|
|
4
4
|
import { getRuntimeConfig } from "../config.js";
|
|
5
|
+
import { getRuntimeServices } from "../providers.js";
|
|
5
6
|
function escapeHtml(value) {
|
|
6
7
|
return value
|
|
7
8
|
.replace(/&/g, "&")
|
|
@@ -10,6 +11,9 @@ function escapeHtml(value) {
|
|
|
10
11
|
.replace(/"/g, """)
|
|
11
12
|
.replace(/'/g, "'");
|
|
12
13
|
}
|
|
14
|
+
function serializeJsonForScript(value) {
|
|
15
|
+
return JSON.stringify(value).replace(/</g, "\\u003c");
|
|
16
|
+
}
|
|
13
17
|
function renderBrandMark(logoUrl) {
|
|
14
18
|
if (logoUrl) {
|
|
15
19
|
return `<img src="${escapeHtml(logoUrl)}" alt="" class="studio-login-mark" style="object-fit: contain;" />`;
|
|
@@ -21,15 +25,15 @@ function renderBrandMark(logoUrl) {
|
|
|
21
25
|
</div>`;
|
|
22
26
|
}
|
|
23
27
|
function renderLogin(opts) {
|
|
24
|
-
const { hasPassword, devActive, apiBasePath, redirectTo, editorHome, brandName, brandLogo, faviconUrl, themeCssHref, studioCssHref, loginCssHref, } = opts;
|
|
28
|
+
const { hasPassword, devActive, apiBasePath, redirectTo, editorHome, brandName, brandLogo, faviconUrl, themeCssHref, studioCssHref, loginCssHref, showError, locale, messages, } = opts;
|
|
25
29
|
const safeBrand = escapeHtml(brandName);
|
|
26
30
|
const safeRedirect = escapeHtml(redirectTo);
|
|
27
31
|
const safeEditorHome = escapeHtml(editorHome);
|
|
28
32
|
const statusNote = !hasPassword
|
|
29
|
-
? "
|
|
33
|
+
? messages["login.noPassword"]
|
|
30
34
|
: devActive
|
|
31
|
-
? "
|
|
32
|
-
: "
|
|
35
|
+
? messages["login.devPassword"]
|
|
36
|
+
: messages["login.status"];
|
|
33
37
|
// When no password is configured the form is disabled, so give the developer
|
|
34
38
|
// an actionable setup guide instead of a dead end. When a dev fallback is
|
|
35
39
|
// active the form works — just nudge them toward a permanent password.
|
|
@@ -63,11 +67,11 @@ function renderLogin(opts) {
|
|
|
63
67
|
? `<link rel="icon" href="${escapeHtml(faviconUrl)}" />`
|
|
64
68
|
: "";
|
|
65
69
|
return `<!doctype html>
|
|
66
|
-
<html lang="
|
|
70
|
+
<html lang="${escapeHtml(locale)}">
|
|
67
71
|
<head>
|
|
68
72
|
<meta charset="utf-8" />
|
|
69
73
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
70
|
-
<title>${safeBrand} —
|
|
74
|
+
<title>${safeBrand} — ${escapeHtml(messages["login.title"])}</title>
|
|
71
75
|
${favicon}
|
|
72
76
|
<link rel="stylesheet" href="${themeCssHref}" />
|
|
73
77
|
<link rel="stylesheet" href="${studioCssHref}" />
|
|
@@ -78,7 +82,7 @@ function renderLogin(opts) {
|
|
|
78
82
|
<div class="studio-login-grid"></div>
|
|
79
83
|
<div class="studio-login-accent-top"></div>
|
|
80
84
|
|
|
81
|
-
<
|
|
85
|
+
<main class="studio-login-card">
|
|
82
86
|
<div class="studio-login-card-glow"></div>
|
|
83
87
|
|
|
84
88
|
<div class="studio-login-card-body">
|
|
@@ -97,18 +101,18 @@ function renderLogin(opts) {
|
|
|
97
101
|
<p class="studio-login-tagline">${escapeHtml(statusNote)}</p>
|
|
98
102
|
</div>
|
|
99
103
|
|
|
100
|
-
<div id="login-error" class="studio-login-error" hidden>
|
|
104
|
+
<div id="login-error" class="studio-login-error" role="alert"${showError ? "" : " hidden"}>
|
|
101
105
|
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
|
102
106
|
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>
|
|
103
107
|
</svg>
|
|
104
|
-
<span id="login-error-text"
|
|
108
|
+
<span id="login-error-text">${escapeHtml(messages["login.invalid"])}</span>
|
|
105
109
|
</div>
|
|
106
110
|
|
|
107
111
|
<form id="login-form" class="studio-login-form" method="POST" action="${escapeHtml(`${apiBasePath}/auth/login`)}">
|
|
108
112
|
<input type="hidden" name="redirect" value="${safeRedirect}" />
|
|
109
113
|
|
|
110
114
|
<div class="studio-login-field">
|
|
111
|
-
<label for="password"
|
|
115
|
+
<label for="password">${escapeHtml(messages["login.password"])}</label>
|
|
112
116
|
<div class="studio-login-input-wrap">
|
|
113
117
|
<input
|
|
114
118
|
type="password"
|
|
@@ -117,7 +121,7 @@ function renderLogin(opts) {
|
|
|
117
121
|
required
|
|
118
122
|
autocomplete="current-password"
|
|
119
123
|
class="studio-login-input"
|
|
120
|
-
placeholder="
|
|
124
|
+
placeholder="${escapeHtml(messages["login.placeholder"])}"
|
|
121
125
|
${hasPassword ? "" : "disabled"}
|
|
122
126
|
/>
|
|
123
127
|
<svg class="studio-login-input-icon" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" aria-hidden="true">
|
|
@@ -128,7 +132,7 @@ function renderLogin(opts) {
|
|
|
128
132
|
|
|
129
133
|
<button type="submit" class="studio-login-submit" ${hasPassword ? "" : "disabled"}>
|
|
130
134
|
<span class="studio-login-submit-content">
|
|
131
|
-
<span
|
|
135
|
+
<span>${escapeHtml(messages["login.submit"])}</span>
|
|
132
136
|
<svg class="studio-login-submit-arrow" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
|
133
137
|
<path stroke-linecap="round" stroke-linejoin="round" d="M14 5l7 7m0 0l-7 7m7-7H3"/>
|
|
134
138
|
</svg>
|
|
@@ -138,10 +142,10 @@ function renderLogin(opts) {
|
|
|
138
142
|
${helperBlock}
|
|
139
143
|
|
|
140
144
|
<div class="studio-login-footer">
|
|
141
|
-
<a href="${safeEditorHome}"
|
|
145
|
+
<a href="${safeEditorHome}">${escapeHtml(messages["login.back"])}</a>
|
|
142
146
|
</div>
|
|
143
147
|
</div>
|
|
144
|
-
</
|
|
148
|
+
</main>
|
|
145
149
|
|
|
146
150
|
<script>
|
|
147
151
|
(function () {
|
|
@@ -179,7 +183,7 @@ function renderLogin(opts) {
|
|
|
179
183
|
credentials: 'same-origin'
|
|
180
184
|
})
|
|
181
185
|
.then(function (res) {
|
|
182
|
-
return res.json().catch(function () { return { error:
|
|
186
|
+
return res.json().catch(function () { return { error: ${serializeJsonForScript(messages["login.failed"])} }; })
|
|
183
187
|
.then(function (data) { return { ok: res.ok, data: data }; });
|
|
184
188
|
})
|
|
185
189
|
.then(function (result) {
|
|
@@ -224,6 +228,14 @@ export async function GET(context) {
|
|
|
224
228
|
headers: { Location: redirectTarget },
|
|
225
229
|
});
|
|
226
230
|
}
|
|
231
|
+
const identityAdapter = (await getRuntimeServices()).identityAdapter;
|
|
232
|
+
if (identityAdapter) {
|
|
233
|
+
const location = await identityAdapter.loginUrl({
|
|
234
|
+
request: context.request,
|
|
235
|
+
redirectTo: redirectTarget,
|
|
236
|
+
});
|
|
237
|
+
return new Response(null, { status: 302, headers: { Location: location } });
|
|
238
|
+
}
|
|
227
239
|
return html(renderLogin({
|
|
228
240
|
hasPassword: hasConfiguredEditorPassword(),
|
|
229
241
|
devActive: isDevEditorPasswordActive(),
|
|
@@ -236,6 +248,12 @@ export async function GET(context) {
|
|
|
236
248
|
themeCssHref: `${runtime.apiBasePath}/theme.css`,
|
|
237
249
|
studioCssHref: "/__caret/studio.css",
|
|
238
250
|
loginCssHref: "/__caret/studio-login.css",
|
|
251
|
+
// Render the error banner server-side for the no-JS path: a failed native
|
|
252
|
+
// form login redirects here with ?error=invalid, and without this the JS
|
|
253
|
+
// handler is the only thing that would ever reveal the banner.
|
|
254
|
+
showError: context.url.searchParams.get("error") === "invalid",
|
|
255
|
+
locale: runtime.locale,
|
|
256
|
+
messages: runtime.messages,
|
|
239
257
|
}));
|
|
240
258
|
}
|
|
241
259
|
//# sourceMappingURL=admin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/runtime/routes/admin.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAG/B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../src/runtime/routes/admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-login.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/auth-login.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-login.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/auth-login.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAmCxC,wBAAsB,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6EjE;AAED,wBAAsB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAQ7C"}
|
|
@@ -4,6 +4,7 @@ import { sanitizeRedirect } from "../auth/cookie-utils.js";
|
|
|
4
4
|
import { checkLoginRateLimit, clearLoginAttempts, extractRateLimitKey, recordLoginFailure, } from "../auth/rate-limiter.js";
|
|
5
5
|
import { getRuntimeConfig } from "../config.js";
|
|
6
6
|
import { enforceContentLength, MAX_JSON_BODY_BYTES } from "./_helpers.js";
|
|
7
|
+
import { getRuntimeServices } from "../providers.js";
|
|
7
8
|
function redirect(pathname, setCookie) {
|
|
8
9
|
const headers = { Location: pathname };
|
|
9
10
|
if (setCookie)
|
|
@@ -19,6 +20,9 @@ function json(body, status = 200, extraHeaders) {
|
|
|
19
20
|
}
|
|
20
21
|
export async function POST(context) {
|
|
21
22
|
const runtime = getRuntimeConfig();
|
|
23
|
+
if ((await getRuntimeServices()).identityAdapter) {
|
|
24
|
+
return json({ error: "Password login is disabled by the configured identity adapter." }, 409);
|
|
25
|
+
}
|
|
22
26
|
if (!hasConfiguredEditorPassword()) {
|
|
23
27
|
return json({ error: "Editor password is not configured." }, 500);
|
|
24
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-login.js","sourceRoot":"","sources":["../../../src/runtime/routes/auth-login.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAG/B,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-login.js","sourceRoot":"","sources":["../../../src/runtime/routes/auth-login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-logout.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/auth-logout.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-logout.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/auth-logout.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAyBxC,wBAAsB,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgCjE;AAED,wBAAsB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAQ7C"}
|
|
@@ -3,6 +3,7 @@ import { clearEditorSessionCookie } from "../auth/session.js";
|
|
|
3
3
|
import { sanitizeRedirect } from "../auth/cookie-utils.js";
|
|
4
4
|
import { getRuntimeConfig } from "../config.js";
|
|
5
5
|
import { enforceContentLength, MAX_JSON_BODY_BYTES } from "./_helpers.js";
|
|
6
|
+
import { getRuntimeServices } from "../providers.js";
|
|
6
7
|
function redirect(pathname, setCookie) {
|
|
7
8
|
const headers = { Location: pathname };
|
|
8
9
|
if (setCookie)
|
|
@@ -39,9 +40,13 @@ export async function POST(context) {
|
|
|
39
40
|
: redirectTo;
|
|
40
41
|
}
|
|
41
42
|
const safeRedirect = sanitizeRedirect(redirectTo, runtime.mountPath);
|
|
43
|
+
const identityAdapter = (await getRuntimeServices()).identityAdapter;
|
|
44
|
+
const finalRedirect = identityAdapter?.logoutUrl
|
|
45
|
+
? await identityAdapter.logoutUrl({ request: context.request, redirectTo: safeRedirect })
|
|
46
|
+
: safeRedirect;
|
|
42
47
|
if (isJson)
|
|
43
|
-
return json({ ok: true, redirect:
|
|
44
|
-
return redirect(
|
|
48
|
+
return json({ ok: true, redirect: finalRedirect }, 200, cookie);
|
|
49
|
+
return redirect(finalRedirect, cookie);
|
|
45
50
|
}
|
|
46
51
|
export async function GET() {
|
|
47
52
|
return json({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-logout.js","sourceRoot":"","sources":["../../../src/runtime/routes/auth-logout.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAG/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-logout.js","sourceRoot":"","sources":["../../../src/runtime/routes/auth-logout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-session.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/auth-session.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAIxC,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"auth-session.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/auth-session.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAIxC,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAMhE"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export const prerender = false;
|
|
2
|
-
import { isEditorAuthenticated } from "../auth/session.js";
|
|
2
|
+
import { getEditorIdentity, isEditorAuthenticated } from "../auth/session.js";
|
|
3
3
|
import { json } from "./_helpers.js";
|
|
4
4
|
export async function GET(context) {
|
|
5
|
+
const authenticated = isEditorAuthenticated(context);
|
|
5
6
|
return json({
|
|
6
|
-
authenticated
|
|
7
|
+
authenticated,
|
|
8
|
+
identity: authenticated ? getEditorIdentity(context) : null,
|
|
7
9
|
});
|
|
8
10
|
}
|
|
9
11
|
//# sourceMappingURL=auth-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-session.js","sourceRoot":"","sources":["../../../src/runtime/routes/auth-session.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAG/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-session.js","sourceRoot":"","sources":["../../../src/runtime/routes/auth-session.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAG/B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAmB;IAC3C,MAAM,aAAa,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;QACV,aAAa;QACb,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;KAC5D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-list.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/collection-list.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"collection-list.d.ts","sourceRoot":"","sources":["../../../src/runtime/routes/collection-list.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAoBxC,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6bhE"}
|