@growth-labs/cms 0.5.29 → 0.5.31
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/dist/engine/foundry-dispatch.d.ts +7 -2
- package/dist/engine/foundry-dispatch.d.ts.map +1 -1
- package/dist/engine/foundry-dispatch.js +24 -6
- package/dist/engine/foundry-dispatch.js.map +1 -1
- package/dist/engine/fronts-publish-intent.d.ts +174 -0
- package/dist/engine/fronts-publish-intent.d.ts.map +1 -0
- package/dist/engine/fronts-publish-intent.js +352 -0
- package/dist/engine/fronts-publish-intent.js.map +1 -0
- package/dist/engine/fronts-publish.d.ts +80 -0
- package/dist/engine/fronts-publish.d.ts.map +1 -0
- package/dist/engine/fronts-publish.js +286 -0
- package/dist/engine/fronts-publish.js.map +1 -0
- package/dist/engine/index.d.ts +7 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +10 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/publication-continuity.d.ts +77 -0
- package/dist/engine/publication-continuity.d.ts.map +1 -0
- package/dist/engine/publication-continuity.js +94 -0
- package/dist/engine/publication-continuity.js.map +1 -0
- package/dist/engine/publication-receipt/canonical-json.d.ts +34 -0
- package/dist/engine/publication-receipt/canonical-json.d.ts.map +1 -0
- package/dist/engine/publication-receipt/canonical-json.js +100 -0
- package/dist/engine/publication-receipt/canonical-json.js.map +1 -0
- package/dist/engine/publication-receipt/receipt.d.ts +316 -0
- package/dist/engine/publication-receipt/receipt.d.ts.map +1 -0
- package/dist/engine/publication-receipt/receipt.js +131 -0
- package/dist/engine/publication-receipt/receipt.js.map +1 -0
- package/dist/engine/publication-receipt/signature.d.ts +36 -0
- package/dist/engine/publication-receipt/signature.d.ts.map +1 -0
- package/dist/engine/publication-receipt/signature.js +79 -0
- package/dist/engine/publication-receipt/signature.js.map +1 -0
- package/dist/engine/publication.d.ts.map +1 -1
- package/dist/engine/publication.js +2 -0
- package/dist/engine/publication.js.map +1 -1
- package/dist/engine/publisher.d.ts.map +1 -1
- package/dist/engine/publisher.js +23 -1
- package/dist/engine/publisher.js.map +1 -1
- package/dist/engine/source-sections.d.ts +20 -0
- package/dist/engine/source-sections.d.ts.map +1 -0
- package/dist/engine/source-sections.js +130 -0
- package/dist/engine/source-sections.js.map +1 -0
- package/dist/engine/validator/checks/source-section-diagnostics.d.ts +7 -0
- package/dist/engine/validator/checks/source-section-diagnostics.d.ts.map +1 -0
- package/dist/engine/validator/checks/source-section-diagnostics.js +120 -0
- package/dist/engine/validator/checks/source-section-diagnostics.js.map +1 -0
- package/dist/engine/validator/index.d.ts +10 -0
- package/dist/engine/validator/index.d.ts.map +1 -1
- package/dist/engine/validator/index.js +4 -0
- package/dist/engine/validator/index.js.map +1 -1
- package/dist/engine/validator/types.d.ts +1 -1
- package/dist/engine/validator/types.d.ts.map +1 -1
- package/dist/engine/validator/types.js +10 -0
- package/dist/engine/validator/types.js.map +1 -1
- package/dist/integration/index.d.ts.map +1 -1
- package/dist/integration/index.js +10 -0
- package/dist/integration/index.js.map +1 -1
- package/dist/providers/types.d.ts +1 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/routes/content.d.ts.map +1 -1
- package/dist/routes/content.js +22 -2
- package/dist/routes/content.js.map +1 -1
- package/dist/routes/fronts-publish.d.ts +10 -0
- package/dist/routes/fronts-publish.d.ts.map +1 -0
- package/dist/routes/fronts-publish.js +250 -0
- package/dist/routes/fronts-publish.js.map +1 -0
- package/dist/routes/index.d.ts +3 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +4 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/surveys.d.ts.map +1 -1
- package/dist/routes/surveys.js +13 -1
- package/dist/routes/surveys.js.map +1 -1
- package/dist/schema/insights-ingest.d.ts +28 -28
- package/dist/schema/layout.d.ts +2 -2
- package/dist/schema/migrations.d.ts.map +1 -1
- package/dist/schema/migrations.js +36 -0
- package/dist/schema/migrations.js.map +1 -1
- package/dist/schema/portable-text.d.ts +2 -2
- package/dist/schema/tables.d.ts +1 -1
- package/dist/schema/tables.d.ts.map +1 -1
- package/dist/schema/tables.js +2 -0
- package/dist/schema/tables.js.map +1 -1
- package/dist/schema/types.d.ts +59 -0
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js.map +1 -1
- package/dist/surveys/access.d.ts +2 -0
- package/dist/surveys/access.d.ts.map +1 -1
- package/dist/surveys/access.js +7 -0
- package/dist/surveys/access.js.map +1 -1
- package/dist/surveys/errors.d.ts +8 -0
- package/dist/surveys/errors.d.ts.map +1 -1
- package/dist/surveys/errors.js +12 -0
- package/dist/surveys/errors.js.map +1 -1
- package/dist/surveys/schema.d.ts +129 -54
- package/dist/surveys/schema.d.ts.map +1 -1
- package/dist/surveys/schema.js +45 -0
- package/dist/surveys/schema.js.map +1 -1
- package/dist/ui/api/fronts/publish-callback.d.ts +3 -0
- package/dist/ui/api/fronts/publish-callback.d.ts.map +1 -0
- package/dist/ui/api/fronts/publish-callback.js +8 -0
- package/dist/ui/api/fronts/publish-callback.js.map +1 -0
- package/dist/ui/api/fronts/schedule.d.ts +3 -0
- package/dist/ui/api/fronts/schedule.d.ts.map +1 -0
- package/dist/ui/api/fronts/schedule.js +8 -0
- package/dist/ui/api/fronts/schedule.js.map +1 -0
- package/dist/ui/editor/ContentForm.d.ts.map +1 -1
- package/dist/ui/editor/ContentForm.js +52 -1
- package/dist/ui/editor/ContentForm.js.map +1 -1
- package/dist/ui/editor/body-warnings.d.ts +27 -0
- package/dist/ui/editor/body-warnings.d.ts.map +1 -0
- package/dist/ui/editor/body-warnings.js +58 -0
- package/dist/ui/editor/body-warnings.js.map +1 -0
- package/dist/ui/screens/SurveyResponsesScreen.d.ts +7 -1
- package/dist/ui/screens/SurveyResponsesScreen.d.ts.map +1 -1
- package/dist/ui/screens/SurveyResponsesScreen.js +141 -32
- package/dist/ui/screens/SurveyResponsesScreen.js.map +1 -1
- package/migrations/0026_fronts_publish.sql +31 -0
- package/migrations/0027_fronts_publish_intent.sql +44 -0
- package/package.json +1 -1
- package/src/engine/foundry-dispatch.ts +22 -6
- package/src/engine/fronts-publish-intent.ts +676 -0
- package/src/engine/fronts-publish.ts +417 -0
- package/src/engine/index.ts +60 -0
- package/src/engine/publication-continuity.ts +140 -0
- package/src/engine/publication-receipt/canonical-json.ts +123 -0
- package/src/engine/publication-receipt/receipt.ts +160 -0
- package/src/engine/publication-receipt/signature.ts +112 -0
- package/src/engine/publication.ts +2 -0
- package/src/engine/publisher.ts +23 -1
- package/src/engine/source-sections.ts +153 -0
- package/src/engine/validator/checks/source-section-diagnostics.ts +187 -0
- package/src/engine/validator/index.ts +12 -0
- package/src/engine/validator/types.ts +19 -0
- package/src/integration/index.ts +10 -0
- package/src/providers/types.ts +1 -1
- package/src/routes/content.ts +23 -2
- package/src/routes/fronts-publish.ts +292 -0
- package/src/routes/index.ts +8 -0
- package/src/routes/surveys.ts +12 -1
- package/src/schema/migrations.ts +36 -0
- package/src/schema/tables.ts +2 -0
- package/src/schema/types.ts +61 -0
- package/src/surveys/access.ts +9 -0
- package/src/surveys/errors.ts +12 -0
- package/src/surveys/schema.ts +47 -0
- package/src/ui/api/fronts/publish-callback.ts +18 -0
- package/src/ui/api/fronts/schedule.ts +18 -0
- package/src/ui/editor/ContentForm.tsx +93 -0
- package/src/ui/editor/body-warnings.ts +78 -0
- package/src/ui/screens/SurveyResponsesScreen.tsx +369 -121
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
// Fronts publish routes (cms/Masthead side) — the two machine-to-machine seams
|
|
2
|
+
// the out-of-process Fronts publish worker (foundryd) drives:
|
|
3
|
+
//
|
|
4
|
+
// GET /admin/api/fronts/schedule?window=<from>..<to> — the poll surface.
|
|
5
|
+
// POST /admin/api/fronts/publish-callback — the callback receiver.
|
|
6
|
+
//
|
|
7
|
+
// AUTH reuses the existing M2M primitive (`verifyHmac` + `X-Foundry-Signature`
|
|
8
|
+
// against `ctx.env.FOUNDRY_HMAC_SECRET` — a per-Worker secret string OR a Secrets
|
|
9
|
+
// Store binding `{ get() }`; no new auth scheme, no shared secret in code/D1),
|
|
10
|
+
// hardened against replay with a REQUIRED `X-Foundry-Timestamp`:
|
|
11
|
+
//
|
|
12
|
+
// X-Foundry-Timestamp: <unix seconds, within ±300s of now>
|
|
13
|
+
// X-Foundry-Signature: sha256=HMAC(secret, `${timestamp}\n${payload}`)
|
|
14
|
+
//
|
|
15
|
+
// where payload is the raw query string (`url.search`) for the GET poll and the
|
|
16
|
+
// raw body for the POST callback. Binding the signature to a fresh timestamp
|
|
17
|
+
// stops replay: without it a no-`window` GET would sign HMAC(secret,"") — a
|
|
18
|
+
// CONSTANT — so one captured URL+header pair would be a permanent bearer
|
|
19
|
+
// credential for the pre-publication embargo schedule.
|
|
20
|
+
//
|
|
21
|
+
// Both endpoints ship ENABLED behind FRONTS_PUBLISH_ENABLED (a rollback lever,
|
|
22
|
+
// default ON). Failures are loud: bad/stale HMAC → 401 + warn log; a `live`
|
|
23
|
+
// callback that cannot commit through the ledger → 500 + error log; disabled → 503.
|
|
24
|
+
import { z } from 'zod';
|
|
25
|
+
import { verifyHmac } from '../engine/foundry-dispatch.js';
|
|
26
|
+
import { applyFrontsPublishCallback, isFrontsPublishEnabled, listFrontsPublishSchedule, } from '../engine/fronts-publish.js';
|
|
27
|
+
import { hydrateFrontsPublishIntents } from '../engine/fronts-publish-intent.js';
|
|
28
|
+
import { publicUrlFor } from '../ui/screens/public-url.js';
|
|
29
|
+
import { resolveConfig } from './config.js';
|
|
30
|
+
import { json } from './context.js';
|
|
31
|
+
/**
|
|
32
|
+
* Resolve the Foundry HMAC secret from ctx.env.FOUNDRY_HMAC_SECRET — the SAME
|
|
33
|
+
* binding the existing foundry-callback route uses. Supports a plain string
|
|
34
|
+
* (test injection / per-Worker secret) or a Secrets Store binding `{ get() }`.
|
|
35
|
+
* Returns null → the route answers 500 "not configured".
|
|
36
|
+
*/
|
|
37
|
+
async function resolveFoundryHmacSecret(env) {
|
|
38
|
+
const raw = env?.FOUNDRY_HMAC_SECRET;
|
|
39
|
+
if (typeof raw === 'string')
|
|
40
|
+
return raw || null;
|
|
41
|
+
if (raw && typeof raw.get === 'function') {
|
|
42
|
+
try {
|
|
43
|
+
const val = await raw.get();
|
|
44
|
+
return typeof val === 'string' && val.length > 0 ? val : null;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
/** Max clock skew (seconds) tolerated on X-Foundry-Timestamp — the replay window. */
|
|
53
|
+
const SIGNATURE_MAX_SKEW_SECONDS = 300;
|
|
54
|
+
/** Parse the X-Foundry-Timestamp header (strict unix epoch seconds) or null. */
|
|
55
|
+
function parseTimestampSeconds(raw) {
|
|
56
|
+
const trimmed = raw.trim();
|
|
57
|
+
// Strict integer seconds so the exact header bytes are what foundryd signs.
|
|
58
|
+
if (!/^\d{1,15}$/.test(trimmed))
|
|
59
|
+
return null;
|
|
60
|
+
const seconds = Number.parseInt(trimmed, 10);
|
|
61
|
+
return Number.isSafeInteger(seconds) ? seconds : null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Verify a foundryd-signed M2M request: a fresh `X-Foundry-Timestamp` (unix
|
|
65
|
+
* seconds within ±{@link SIGNATURE_MAX_SKEW_SECONDS}) plus `X-Foundry-Signature`
|
|
66
|
+
* = HMAC over `${timestamp}\n${payload}`. Returns null when authentic, or a 401
|
|
67
|
+
* Response (with a loud warn log) to short-circuit the handler.
|
|
68
|
+
*/
|
|
69
|
+
async function verifyFoundrySignedRequest(request, secret, payload, label) {
|
|
70
|
+
const tsRaw = (request.headers.get('X-Foundry-Timestamp') ?? '').trim();
|
|
71
|
+
const ts = parseTimestampSeconds(tsRaw);
|
|
72
|
+
if (ts === null) {
|
|
73
|
+
console.warn(`[cms] ${label} rejected: missing or invalid X-Foundry-Timestamp`);
|
|
74
|
+
return json({ error: 'Missing or invalid X-Foundry-Timestamp' }, 401);
|
|
75
|
+
}
|
|
76
|
+
const now = Math.floor(Date.now() / 1_000);
|
|
77
|
+
if (Math.abs(now - ts) > SIGNATURE_MAX_SKEW_SECONDS) {
|
|
78
|
+
console.warn(`[cms] ${label} rejected: stale X-Foundry-Timestamp (skew ${now - ts}s)`);
|
|
79
|
+
return json({ error: 'Stale or future X-Foundry-Timestamp' }, 401);
|
|
80
|
+
}
|
|
81
|
+
const signature = request.headers.get('X-Foundry-Signature') ?? '';
|
|
82
|
+
const valid = await verifyHmac(secret, `${tsRaw}\n${payload}`, signature);
|
|
83
|
+
if (!valid) {
|
|
84
|
+
console.warn(`[cms] ${label} rejected: invalid X-Foundry-Signature`);
|
|
85
|
+
return json({ error: 'Invalid signature' }, 401);
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
const ReceiptSchema = z.object({
|
|
90
|
+
published_urls: z.array(z.string()).nullish(),
|
|
91
|
+
platform_post_ids: z.array(z.string()).nullish(),
|
|
92
|
+
sha256: z.string().nullish(),
|
|
93
|
+
});
|
|
94
|
+
const CallbackSchema = z
|
|
95
|
+
.object({
|
|
96
|
+
event_id: z.string().min(1).optional(),
|
|
97
|
+
intent_id: z.string().min(1).nullish(),
|
|
98
|
+
content_id: z.string().min(1),
|
|
99
|
+
version: z.number().int().nullish(),
|
|
100
|
+
correlation_id: z.string().min(1).nullish(),
|
|
101
|
+
status: z.enum(['queued', 'publishing', 'live', 'late', 'failed']),
|
|
102
|
+
occurred_at: z.union([z.string(), z.number()]).nullish(),
|
|
103
|
+
receipt: ReceiptSchema.nullish(),
|
|
104
|
+
error: z.string().nullish(),
|
|
105
|
+
})
|
|
106
|
+
.strip();
|
|
107
|
+
/** Parse `window=<from>..<to>` into unix-seconds bounds; defaults to now..now+1h. */
|
|
108
|
+
function parseWindow(value, nowSeconds) {
|
|
109
|
+
if (!value)
|
|
110
|
+
return { fromSeconds: nowSeconds, toSeconds: nowSeconds + 3600 };
|
|
111
|
+
const parts = value.split('..');
|
|
112
|
+
if (parts.length !== 2)
|
|
113
|
+
return { error: 'window must be "<from>..<to>"' };
|
|
114
|
+
const parseBound = (raw) => {
|
|
115
|
+
const trimmed = raw.trim();
|
|
116
|
+
if (!trimmed)
|
|
117
|
+
return null;
|
|
118
|
+
if (/^\d+$/.test(trimmed))
|
|
119
|
+
return Number.parseInt(trimmed, 10);
|
|
120
|
+
const ms = Date.parse(trimmed);
|
|
121
|
+
return Number.isNaN(ms) ? null : Math.floor(ms / 1_000);
|
|
122
|
+
};
|
|
123
|
+
const fromSeconds = parseBound(parts[0]);
|
|
124
|
+
const toSeconds = parseBound(parts[1]);
|
|
125
|
+
if (fromSeconds === null || toSeconds === null) {
|
|
126
|
+
return { error: 'window bounds must be ISO-8601 timestamps or unix seconds' };
|
|
127
|
+
}
|
|
128
|
+
if (toSeconds < fromSeconds)
|
|
129
|
+
return { error: 'window end precedes its start' };
|
|
130
|
+
return { fromSeconds, toSeconds };
|
|
131
|
+
}
|
|
132
|
+
export function createFrontsPublishRoutes(config) {
|
|
133
|
+
const resolved = resolveConfig(config);
|
|
134
|
+
return {
|
|
135
|
+
async schedule(ctx) {
|
|
136
|
+
const hmacSecret = await resolveFoundryHmacSecret(ctx.env);
|
|
137
|
+
if (!hmacSecret)
|
|
138
|
+
return json({ error: 'FOUNDRY_HMAC_SECRET is not configured' }, 500);
|
|
139
|
+
const url = new URL(ctx.request.url);
|
|
140
|
+
// The GET poll has no body; the payload is the exact query string
|
|
141
|
+
// foundryd sent (leading '?' included, or '' when empty), bound to the
|
|
142
|
+
// required timestamp so an empty-window poll can't sign a constant.
|
|
143
|
+
const denied = await verifyFoundrySignedRequest(ctx.request, hmacSecret, url.search, 'fronts/schedule');
|
|
144
|
+
if (denied)
|
|
145
|
+
return denied;
|
|
146
|
+
if (!isFrontsPublishEnabled(ctx.env)) {
|
|
147
|
+
return json({ error: 'fronts_publish_disabled' }, 503);
|
|
148
|
+
}
|
|
149
|
+
const now = Math.floor(Date.now() / 1_000);
|
|
150
|
+
const window = parseWindow(url.searchParams.get('window'), now);
|
|
151
|
+
if ('error' in window)
|
|
152
|
+
return json({ error: window.error }, 400);
|
|
153
|
+
// `items` is the UNCHANGED 0026 legacy schedule shape — an existing
|
|
154
|
+
// consumer keeps working byte-for-byte. `intents` is the canonical
|
|
155
|
+
// publish-intent contract (packages#500) hydrated over the SAME due
|
|
156
|
+
// predicate, and `incomplete` names every due item that cannot form a
|
|
157
|
+
// complete intent, so a missing canonical field is an explicit, visible
|
|
158
|
+
// contract error rather than a silently short `intents` array.
|
|
159
|
+
const items = await listFrontsPublishSchedule(ctx.db, {
|
|
160
|
+
toSeconds: window.toSeconds,
|
|
161
|
+
nowSeconds: now,
|
|
162
|
+
});
|
|
163
|
+
const hydrated = await hydrateFrontsPublishIntents(ctx.db, {
|
|
164
|
+
toSeconds: window.toSeconds,
|
|
165
|
+
nowSeconds: now,
|
|
166
|
+
mediaPublicDomain: resolved.mediaPublicDomain,
|
|
167
|
+
// Site-RELATIVE paths: the CMS does not know the site origin, and the
|
|
168
|
+
// consumer joins its own trusted configured origin. A host-supplied
|
|
169
|
+
// origin is deliberately deferred (packages-docs/cms.md).
|
|
170
|
+
resolveContentUrl: (row) => publicUrlFor(row),
|
|
171
|
+
});
|
|
172
|
+
return json({
|
|
173
|
+
ok: true,
|
|
174
|
+
now,
|
|
175
|
+
window: { from: window.fromSeconds, to: window.toSeconds },
|
|
176
|
+
count: items.length,
|
|
177
|
+
items,
|
|
178
|
+
intents: hydrated.intents,
|
|
179
|
+
incomplete: hydrated.incomplete,
|
|
180
|
+
});
|
|
181
|
+
},
|
|
182
|
+
async publishCallback(ctx) {
|
|
183
|
+
const hmacSecret = await resolveFoundryHmacSecret(ctx.env);
|
|
184
|
+
if (!hmacSecret)
|
|
185
|
+
return json({ error: 'FOUNDRY_HMAC_SECRET is not configured' }, 500);
|
|
186
|
+
let rawBody;
|
|
187
|
+
try {
|
|
188
|
+
rawBody = await ctx.request.text();
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return json({ error: 'Failed to read request body' }, 400);
|
|
192
|
+
}
|
|
193
|
+
const denied = await verifyFoundrySignedRequest(ctx.request, hmacSecret, rawBody, 'fronts/publish-callback');
|
|
194
|
+
if (denied)
|
|
195
|
+
return denied;
|
|
196
|
+
if (!isFrontsPublishEnabled(ctx.env)) {
|
|
197
|
+
return json({ error: 'fronts_publish_disabled' }, 503);
|
|
198
|
+
}
|
|
199
|
+
let raw;
|
|
200
|
+
try {
|
|
201
|
+
raw = JSON.parse(rawBody);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return json({ error: 'Invalid JSON body' }, 400);
|
|
205
|
+
}
|
|
206
|
+
const parsed = CallbackSchema.safeParse(raw);
|
|
207
|
+
if (!parsed.success) {
|
|
208
|
+
return json({ error: 'Invalid payload', details: parsed.error.flatten() }, 400);
|
|
209
|
+
}
|
|
210
|
+
// Idempotency key: body event_id, else the Idempotency-Key header.
|
|
211
|
+
const eventId = parsed.data.event_id ?? ctx.request.headers.get('Idempotency-Key') ?? null;
|
|
212
|
+
if (!eventId) {
|
|
213
|
+
return json({ error: 'Missing event_id / Idempotency-Key' }, 400);
|
|
214
|
+
}
|
|
215
|
+
const result = await applyFrontsPublishCallback(ctx.db, {
|
|
216
|
+
eventId,
|
|
217
|
+
intentId: parsed.data.intent_id ?? null,
|
|
218
|
+
contentId: parsed.data.content_id,
|
|
219
|
+
version: parsed.data.version ?? null,
|
|
220
|
+
correlationId: parsed.data.correlation_id ?? null,
|
|
221
|
+
status: parsed.data.status,
|
|
222
|
+
occurredAt: parsed.data.occurred_at ?? null,
|
|
223
|
+
receipt: parsed.data.receipt ?? null,
|
|
224
|
+
error: parsed.data.error ?? null,
|
|
225
|
+
});
|
|
226
|
+
if (!result.contentFound) {
|
|
227
|
+
return json({ error: 'content_not_found', contentId: parsed.data.content_id }, 404);
|
|
228
|
+
}
|
|
229
|
+
if (result.ledgerError) {
|
|
230
|
+
// A confirmed `live` that could not be committed through the ledger is a
|
|
231
|
+
// hard, loud failure — never a silent zero.
|
|
232
|
+
console.error(`[cms] fronts/publish-callback ledger commit failed for content ${parsed.data.content_id}: ${result.ledgerError}`);
|
|
233
|
+
return json({
|
|
234
|
+
ok: false,
|
|
235
|
+
error: 'ledger_publish_failed',
|
|
236
|
+
detail: result.ledgerError,
|
|
237
|
+
status: result.status,
|
|
238
|
+
}, 500);
|
|
239
|
+
}
|
|
240
|
+
return json({
|
|
241
|
+
ok: true,
|
|
242
|
+
deduped: result.deduped,
|
|
243
|
+
status: result.status,
|
|
244
|
+
published: result.published,
|
|
245
|
+
attemptId: result.attemptId,
|
|
246
|
+
});
|
|
247
|
+
},
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=fronts-publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fronts-publish.js","sourceRoot":"","sources":["../../src/routes/fronts-publish.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export { type ContentInsightsRouteConfig, type ContentInsightsRouteHandlers, cre
|
|
|
11
11
|
export { type Authz, type CmsRole, type CmsUser, json, type R2BucketLike, type R2HeadResult, type R2MultipartUpload, type R2UploadedPart, type RouteContext, requireId, } from './context.js';
|
|
12
12
|
export { type CronRouteHandlers, createCronRoutes } from './cron.js';
|
|
13
13
|
export { createDashboardRoutes, type DashboardRouteConfig, type DashboardRouteHandlers, } from './dashboard.js';
|
|
14
|
+
export { createFrontsPublishRoutes, type FrontsPublishRouteHandlers, } from './fronts-publish.js';
|
|
14
15
|
export { createImportRoutes, type ImportRouteHandlers } from './imports.js';
|
|
15
16
|
export { createMediaRoutes, type MediaRouteHandlers } from './media.js';
|
|
16
17
|
export { buildImageAssetKey, buildVideoSourceKey, contentTypeForVideoFileName, deleteStagedVideoSource, EDITOR_VIDEO_PART_SIZE, EDITORIAL_IMAGE_MAX_HERO_WIDTH, EDITORIAL_IMAGE_MAX_INLINE_WIDTH, getImageVariantUrl, getMediaPublicDomain, insertMediaAsset, isAllowedVideoSource, isVideoSourceKey, isVideoSourceKeyForVideoId, MAX_EDITOR_VIDEO_SOURCE_BYTES, type MediaAssetInsert, type MediaAssetStatus, type MediaAssetType, mediaKey, normalizeVideoFileExtension, normalizeVideoSourceContentType, parseVideoIdSlug, publicUrlFor, VIDEO_SOURCE_PREFIX, videoSourceKeyFromPublicUrl, } from './media-lib.js';
|
|
@@ -32,6 +33,7 @@ import { type ContentRouteConfig, type ContentRouteHandlers } from './content.js
|
|
|
32
33
|
import { type ContentInsightsRouteHandlers } from './content-insights.js';
|
|
33
34
|
import { type CronRouteHandlers } from './cron.js';
|
|
34
35
|
import { type DashboardRouteHandlers } from './dashboard.js';
|
|
36
|
+
import { type FrontsPublishRouteHandlers } from './fronts-publish.js';
|
|
35
37
|
import { type ImportRouteHandlers } from './imports.js';
|
|
36
38
|
import { type MediaRouteHandlers } from './media.js';
|
|
37
39
|
import { type PreviewRouteHandlers } from './preview.js';
|
|
@@ -60,6 +62,7 @@ export interface CmsRoutes {
|
|
|
60
62
|
apiKeys: ApiKeyRouteHandlers;
|
|
61
63
|
webhooks: WebhookRouteHandlers;
|
|
62
64
|
contentInsights: ContentInsightsRouteHandlers;
|
|
65
|
+
frontsPublish: FrontsPublishRouteHandlers;
|
|
63
66
|
}
|
|
64
67
|
/**
|
|
65
68
|
* Build the full set of CMS route handlers from one config object. The
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAeA,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,OAAO,EAAE,KAAK,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE9D,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,qBAAqB,GACrB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,eAAe,GACf,MAAM,eAAe,CAAA;AAEtB,OAAO,EACN,KAAK,mBAAmB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,GACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,eAAe,EACf,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,OAAO,GACP,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACN,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,oBAAoB,GACpB,MAAM,eAAe,CAAA;AAEtB,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,aAAa,GACb,MAAM,aAAa,CAAA;AAGpB,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GACzB,MAAM,cAAc,CAAA;AAErB,OAAO,EACN,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,2BAA2B,GAC3B,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACN,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,IAAI,EACJ,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,SAAS,GACT,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,KAAK,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEpE,OAAO,EACN,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAGvE,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,6BAA6B,EAC7B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,QAAQ,EACR,2BAA2B,EAC3B,+BAA+B,EAC/B,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACN,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,kBAAkB,GAClB,MAAM,cAAc,CAAA;AAErB,OAAO,EACN,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,iBAAiB,GACtB,MAAM,WAAW,CAAA;AAElB,OAAO,EACN,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACxB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACN,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC7B,MAAM,YAAY,CAAA;AAEnB,OAAO,EACN,yBAAyB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,GAC/B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACN,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,GACxB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAElE,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAExE,OAAO,EACN,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GACzB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,KAAK,sBAAsB,EAAyB,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAE,KAAK,mBAAmB,EAAsB,MAAM,eAAe,CAAA;AAC5E,OAAO,EAAE,KAAK,mBAAmB,EAAsB,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,KAAK,qBAAqB,EAAwB,MAAM,eAAe,CAAA;AAEhF,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAEzB,MAAM,cAAc,CAAA;AACrB,OAAO,EACN,KAAK,4BAA4B,EAEjC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,WAAW,CAAA;AACpE,OAAO,EAAyB,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAsB,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACvE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAC7E,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACpE,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,MAAM,YAAY,CAAA;AACnB,OAAO,EAA6B,KAAK,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAC/F,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAE9E,MAAM,WAAW,SAAS;IACzB,OAAO,EAAE,oBAAoB,CAAA;IAC7B,OAAO,EAAE,mBAAmB,CAAA;IAC5B,KAAK,EAAE,kBAAkB,CAAA;IACzB,IAAI,EAAE,iBAAiB,CAAA;IACvB,KAAK,EAAE,kBAAkB,CAAA;IACzB,OAAO,EAAE,mBAAmB,CAAA;IAC5B,OAAO,EAAE,oBAAoB,CAAA;IAC7B,IAAI,EAAE,gBAAgB,CAAA;IACtB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,EAAE,EAAE,eAAe,CAAA;IACnB,SAAS,EAAE,sBAAsB,CAAA;IACjC,SAAS,EAAE,sBAAsB,CAAA;IACjC,aAAa,EAAE,0BAA0B,CAAA;IACzC,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,IAAI,EAAE,iBAAiB,CAAA;IACvB,OAAO,EAAE,mBAAmB,CAAA;IAC5B,QAAQ,EAAE,oBAAoB,CAAA;IAC9B,eAAe,EAAE,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/index.js
CHANGED
|
@@ -36,6 +36,8 @@ export { json, requireId, } from './context.js';
|
|
|
36
36
|
export { createCronRoutes } from './cron.js';
|
|
37
37
|
// Dashboard summary route (P5 Task 4).
|
|
38
38
|
export { createDashboardRoutes, } from './dashboard.js';
|
|
39
|
+
// Fronts publish surface — the HMAC schedule poll + publish-callback receiver.
|
|
40
|
+
export { createFrontsPublishRoutes, } from './fronts-publish.js';
|
|
39
41
|
// Import routes — two-step parse→confirm pipeline.
|
|
40
42
|
export { createImportRoutes } from './imports.js';
|
|
41
43
|
// Media routes.
|
|
@@ -70,6 +72,7 @@ import { createContentRoutes, } from './content.js';
|
|
|
70
72
|
import { createContentInsightsRoutes, } from './content-insights.js';
|
|
71
73
|
import { createCronRoutes } from './cron.js';
|
|
72
74
|
import { createDashboardRoutes } from './dashboard.js';
|
|
75
|
+
import { createFrontsPublishRoutes } from './fronts-publish.js';
|
|
73
76
|
import { createImportRoutes } from './imports.js';
|
|
74
77
|
import { createMediaRoutes } from './media.js';
|
|
75
78
|
import { createPreviewRoutes } from './preview.js';
|
|
@@ -138,6 +141,7 @@ export function createCmsRoutes(config) {
|
|
|
138
141
|
authz: config.authz,
|
|
139
142
|
activeWorkspaceId: config.activeWorkspaceId,
|
|
140
143
|
}),
|
|
144
|
+
frontsPublish: createFrontsPublishRoutes(base),
|
|
141
145
|
};
|
|
142
146
|
}
|
|
143
147
|
//# sourceMappingURL=index.js.map
|
package/dist/routes/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,iFAAiF;AACjF,+EAA+E;AAC/E,4EAA4E;AAC5E,6CAA6C;AAC7C,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAC9E,4EAA4E;AAC5E,8CAA8C;AAI9C,gDAAgD;AAChD,OAAO,EAAwB,cAAc,EAAE,MAAM,SAAS,CAAA;AAC9D,gEAAgE;AAChE,OAAO,EAGN,qBAAqB,GACrB,MAAM,gBAAgB,CAAA;AACvB,6FAA6F;AAC7F,OAAO,EAGN,kBAAkB,EAClB,eAAe,GACf,MAAM,eAAe,CAAA;AACtB,uCAAuC;AACvC,OAAO,EAEN,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,GACpB,MAAM,cAAc,CAAA;AACrB,2EAA2E;AAC3E,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EAIjB,eAAe,EACf,uBAAuB,EAEvB,OAAO,GACP,MAAM,mBAAmB,CAAA;AAC1B,wCAAwC;AACxC,OAAO,EAIN,oBAAoB,GACpB,MAAM,eAAe,CAAA;AACtB,qEAAqE;AACrE,OAAO,EAGN,aAAa,GACb,MAAM,aAAa,CAAA;AACpB,mEAAmE;AACnE,mFAAmF;AACnF,OAAO,EAGN,mBAAmB,GAInB,MAAM,cAAc,CAAA;AACrB,sFAAsF;AACtF,OAAO,EAGN,2BAA2B,GAC3B,MAAM,uBAAuB,CAAA;AAC9B,6CAA6C;AAC7C,OAAO,EAIN,IAAI,EAMJ,SAAS,GACT,MAAM,cAAc,CAAA;AACrB,cAAc;AACd,OAAO,EAA0B,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACpE,uCAAuC;AACvC,OAAO,EACN,qBAAqB,GAGrB,MAAM,gBAAgB,CAAA;AACvB,mDAAmD;AACnD,OAAO,EAAE,kBAAkB,EAA4B,MAAM,cAAc,CAAA;AAC3E,gBAAgB;AAChB,OAAO,EAAE,iBAAiB,EAA2B,MAAM,YAAY,CAAA;AACvE,gFAAgF;AAChF,gFAAgF;AAChF,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,0BAA0B,EAC1B,6BAA6B,EAI7B,QAAQ,EACR,2BAA2B,EAC3B,+BAA+B,EAC/B,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AACvB,0EAA0E;AAC1E,OAAO,EACN,mBAAmB,EAEnB,kBAAkB,GAClB,MAAM,cAAc,CAAA;AACrB,qEAAqE;AACrE,OAAO,EACN,gBAAgB,GAGhB,MAAM,WAAW,CAAA;AAClB,iFAAiF;AACjF,OAAO,EACN,kBAAkB,GAGlB,MAAM,mBAAmB,CAAA;AAC1B,oCAAoC;AACpC,OAAO,EACN,iBAAiB,GAIjB,MAAM,YAAY,CAAA;AACnB,wEAAwE;AACxE,OAAO,EACN,yBAAyB,GAGzB,MAAM,oBAAoB,CAAA;AAC3B,6FAA6F;AAC7F,OAAO,EACN,kBAAkB,GAGlB,MAAM,cAAc,CAAA;AACrB,iFAAiF;AACjF,OAAO,EAAE,eAAe,EAAyB,MAAM,WAAW,CAAA;AAClE,qDAAqD;AACrD,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAA;AACxE,0EAA0E;AAC1E,OAAO,EACN,mBAAmB,GAInB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAwB,cAAc,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAA+B,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAA4B,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,EAA4B,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAA8B,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEhF,OAAO,EAGN,mBAAmB,GACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EAEN,2BAA2B,GAC3B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAA0B,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAA+B,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAA4B,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAA2B,MAAM,YAAY,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAA6B,MAAM,cAAc,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAA0B,MAAM,WAAW,CAAA;AACpE,OAAO,EACN,iBAAiB,GAGjB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,yBAAyB,EAAmC,MAAM,oBAAoB,CAAA;AAC/F,OAAO,EAAE,eAAe,EAAyB,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAA6B,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surveys.d.ts","sourceRoot":"","sources":["../../src/routes/surveys.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,uBAAuB,CAAA;AAQ5E,OAAO,KAAK,EAAE,KAAK,EAAc,YAAY,EAAE,MAAM,cAAc,CAAA;AAEnE,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7C,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACzC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"surveys.d.ts","sourceRoot":"","sources":["../../src/routes/surveys.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,uBAAuB,CAAA;AAQ5E,OAAO,KAAK,EAAE,KAAK,EAAc,YAAY,EAAE,MAAM,cAAc,CAAA;AAEnE,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7C,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACzC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,CA8CjF"}
|
package/dist/routes/surveys.js
CHANGED
|
@@ -12,8 +12,11 @@ export function createSurveyRoutes(config) {
|
|
|
12
12
|
const surveyId = parseSurveyId(ctx);
|
|
13
13
|
if (!surveyId)
|
|
14
14
|
return surveyErrorResponse('survey_invalid_request');
|
|
15
|
+
const offset = parseOffset(ctx);
|
|
16
|
+
if (offset === null)
|
|
17
|
+
return surveyErrorResponse('survey_invalid_request');
|
|
15
18
|
try {
|
|
16
|
-
const parsed = SurveyResultsSchema.safeParse(await providers.surveys?.getResults({ surveyId }));
|
|
19
|
+
const parsed = SurveyResultsSchema.safeParse(await providers.surveys?.getResults({ surveyId, offset }));
|
|
17
20
|
if (!parsed.success || parsed.data.survey.id !== surveyId) {
|
|
18
21
|
return surveyErrorResponse('survey_provider_malformed');
|
|
19
22
|
}
|
|
@@ -53,6 +56,13 @@ async function requireSurveyAccess(authz, ctx) {
|
|
|
53
56
|
return surveyErrorResponse('survey_internal_failure');
|
|
54
57
|
return authz.requireRole('view_survey_responses', ctx);
|
|
55
58
|
}
|
|
59
|
+
function parseOffset(ctx) {
|
|
60
|
+
const raw = new URL(ctx.request.url).searchParams.get('offset');
|
|
61
|
+
if (raw === null)
|
|
62
|
+
return 0;
|
|
63
|
+
const value = Number(raw);
|
|
64
|
+
return Number.isInteger(value) && value >= 0 ? value : null;
|
|
65
|
+
}
|
|
56
66
|
function parseSurveyId(ctx) {
|
|
57
67
|
const value = ctx.params.surveyId ?? ctx.params.id;
|
|
58
68
|
const parsed = SurveyIdSchema.safeParse(value);
|
|
@@ -83,6 +93,8 @@ const ProviderFailureAllowlist = new Map([
|
|
|
83
93
|
['404:survey_not_found', 'survey_not_found'],
|
|
84
94
|
['500:survey_internal_failure', 'survey_internal_failure'],
|
|
85
95
|
['502:survey_upstream_failure', 'survey_upstream_failure'],
|
|
96
|
+
['502:survey_upstream_auth_failed', 'survey_upstream_auth_failed'],
|
|
97
|
+
['502:survey_invalid_response', 'survey_invalid_response'],
|
|
86
98
|
['503:survey_provider_unavailable', 'survey_provider_unavailable'],
|
|
87
99
|
['503:survey_upstream_unavailable', 'survey_upstream_unavailable'],
|
|
88
100
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surveys.js","sourceRoot":"","sources":["../../src/routes/surveys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAqB,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EAExB,eAAe,GACf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAajG,MAAM,UAAU,kBAAkB,CAAC,MAAyB;IAC3D,MAAM,SAAS,GAAiB,EAAE,GAAG,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAA;IAEjF,OAAO;QACN,KAAK,CAAC,OAAO,CAAC,GAAG;YAChB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC3D,IAAI,MAAM;gBAAE,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;YACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,QAAQ;gBAAE,OAAO,mBAAmB,CAAC,wBAAwB,CAAC,CAAA;YACnE,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAC3C,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"surveys.js","sourceRoot":"","sources":["../../src/routes/surveys.ts"],"names":[],"mappings":"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"}
|
|
@@ -1024,12 +1024,12 @@ export declare const InsightBriefSchema: z.ZodObject<{
|
|
|
1024
1024
|
canonical: string;
|
|
1025
1025
|
spokes: string[];
|
|
1026
1026
|
};
|
|
1027
|
-
why_now: string;
|
|
1028
|
-
angle: string;
|
|
1029
1027
|
sources: {
|
|
1030
1028
|
title: string;
|
|
1031
1029
|
url: string;
|
|
1032
1030
|
}[];
|
|
1031
|
+
why_now: string;
|
|
1032
|
+
angle: string;
|
|
1033
1033
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
1034
1034
|
content_outline?: {
|
|
1035
1035
|
question: string;
|
|
@@ -1053,12 +1053,12 @@ export declare const InsightBriefSchema: z.ZodObject<{
|
|
|
1053
1053
|
canonical: string;
|
|
1054
1054
|
spokes: string[];
|
|
1055
1055
|
};
|
|
1056
|
-
why_now: string;
|
|
1057
|
-
angle: string;
|
|
1058
1056
|
sources: {
|
|
1059
1057
|
title: string;
|
|
1060
1058
|
url: string;
|
|
1061
1059
|
}[];
|
|
1060
|
+
why_now: string;
|
|
1061
|
+
angle: string;
|
|
1062
1062
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
1063
1063
|
content_outline?: {
|
|
1064
1064
|
question: string;
|
|
@@ -1573,12 +1573,12 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
|
|
|
1573
1573
|
canonical: string;
|
|
1574
1574
|
spokes: string[];
|
|
1575
1575
|
};
|
|
1576
|
-
why_now: string;
|
|
1577
|
-
angle: string;
|
|
1578
1576
|
sources: {
|
|
1579
1577
|
title: string;
|
|
1580
1578
|
url: string;
|
|
1581
1579
|
}[];
|
|
1580
|
+
why_now: string;
|
|
1581
|
+
angle: string;
|
|
1582
1582
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
1583
1583
|
content_outline?: {
|
|
1584
1584
|
question: string;
|
|
@@ -1602,12 +1602,12 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
|
|
|
1602
1602
|
canonical: string;
|
|
1603
1603
|
spokes: string[];
|
|
1604
1604
|
};
|
|
1605
|
-
why_now: string;
|
|
1606
|
-
angle: string;
|
|
1607
1605
|
sources: {
|
|
1608
1606
|
title: string;
|
|
1609
1607
|
url: string;
|
|
1610
1608
|
}[];
|
|
1609
|
+
why_now: string;
|
|
1610
|
+
angle: string;
|
|
1611
1611
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
1612
1612
|
content_outline?: {
|
|
1613
1613
|
question: string;
|
|
@@ -1725,12 +1725,12 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
|
|
|
1725
1725
|
canonical: string;
|
|
1726
1726
|
spokes: string[];
|
|
1727
1727
|
};
|
|
1728
|
-
why_now: string;
|
|
1729
|
-
angle: string;
|
|
1730
1728
|
sources: {
|
|
1731
1729
|
title: string;
|
|
1732
1730
|
url: string;
|
|
1733
1731
|
}[];
|
|
1732
|
+
why_now: string;
|
|
1733
|
+
angle: string;
|
|
1734
1734
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
1735
1735
|
content_outline?: {
|
|
1736
1736
|
question: string;
|
|
@@ -1848,12 +1848,12 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
|
|
|
1848
1848
|
canonical: string;
|
|
1849
1849
|
spokes: string[];
|
|
1850
1850
|
};
|
|
1851
|
-
why_now: string;
|
|
1852
|
-
angle: string;
|
|
1853
1851
|
sources: {
|
|
1854
1852
|
title: string;
|
|
1855
1853
|
url: string;
|
|
1856
1854
|
}[];
|
|
1855
|
+
why_now: string;
|
|
1856
|
+
angle: string;
|
|
1857
1857
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
1858
1858
|
content_outline?: {
|
|
1859
1859
|
question: string;
|
|
@@ -2470,12 +2470,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2470
2470
|
canonical: string;
|
|
2471
2471
|
spokes: string[];
|
|
2472
2472
|
};
|
|
2473
|
-
why_now: string;
|
|
2474
|
-
angle: string;
|
|
2475
2473
|
sources: {
|
|
2476
2474
|
title: string;
|
|
2477
2475
|
url: string;
|
|
2478
2476
|
}[];
|
|
2477
|
+
why_now: string;
|
|
2478
|
+
angle: string;
|
|
2479
2479
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
2480
2480
|
content_outline?: {
|
|
2481
2481
|
question: string;
|
|
@@ -2499,12 +2499,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2499
2499
|
canonical: string;
|
|
2500
2500
|
spokes: string[];
|
|
2501
2501
|
};
|
|
2502
|
-
why_now: string;
|
|
2503
|
-
angle: string;
|
|
2504
2502
|
sources: {
|
|
2505
2503
|
title: string;
|
|
2506
2504
|
url: string;
|
|
2507
2505
|
}[];
|
|
2506
|
+
why_now: string;
|
|
2507
|
+
angle: string;
|
|
2508
2508
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
2509
2509
|
content_outline?: {
|
|
2510
2510
|
question: string;
|
|
@@ -2622,12 +2622,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2622
2622
|
canonical: string;
|
|
2623
2623
|
spokes: string[];
|
|
2624
2624
|
};
|
|
2625
|
-
why_now: string;
|
|
2626
|
-
angle: string;
|
|
2627
2625
|
sources: {
|
|
2628
2626
|
title: string;
|
|
2629
2627
|
url: string;
|
|
2630
2628
|
}[];
|
|
2629
|
+
why_now: string;
|
|
2630
|
+
angle: string;
|
|
2631
2631
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
2632
2632
|
content_outline?: {
|
|
2633
2633
|
question: string;
|
|
@@ -2745,12 +2745,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2745
2745
|
canonical: string;
|
|
2746
2746
|
spokes: string[];
|
|
2747
2747
|
};
|
|
2748
|
-
why_now: string;
|
|
2749
|
-
angle: string;
|
|
2750
2748
|
sources: {
|
|
2751
2749
|
title: string;
|
|
2752
2750
|
url: string;
|
|
2753
2751
|
}[];
|
|
2752
|
+
why_now: string;
|
|
2753
|
+
angle: string;
|
|
2754
2754
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
2755
2755
|
content_outline?: {
|
|
2756
2756
|
question: string;
|
|
@@ -2870,12 +2870,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2870
2870
|
canonical: string;
|
|
2871
2871
|
spokes: string[];
|
|
2872
2872
|
};
|
|
2873
|
-
why_now: string;
|
|
2874
|
-
angle: string;
|
|
2875
2873
|
sources: {
|
|
2876
2874
|
title: string;
|
|
2877
2875
|
url: string;
|
|
2878
2876
|
}[];
|
|
2877
|
+
why_now: string;
|
|
2878
|
+
angle: string;
|
|
2879
2879
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
2880
2880
|
content_outline?: {
|
|
2881
2881
|
question: string;
|
|
@@ -3010,12 +3010,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3010
3010
|
canonical: string;
|
|
3011
3011
|
spokes: string[];
|
|
3012
3012
|
};
|
|
3013
|
-
why_now: string;
|
|
3014
|
-
angle: string;
|
|
3015
3013
|
sources: {
|
|
3016
3014
|
title: string;
|
|
3017
3015
|
url: string;
|
|
3018
3016
|
}[];
|
|
3017
|
+
why_now: string;
|
|
3018
|
+
angle: string;
|
|
3019
3019
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
3020
3020
|
content_outline?: {
|
|
3021
3021
|
question: string;
|
|
@@ -3150,12 +3150,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3150
3150
|
canonical: string;
|
|
3151
3151
|
spokes: string[];
|
|
3152
3152
|
};
|
|
3153
|
-
why_now: string;
|
|
3154
|
-
angle: string;
|
|
3155
3153
|
sources: {
|
|
3156
3154
|
title: string;
|
|
3157
3155
|
url: string;
|
|
3158
3156
|
}[];
|
|
3157
|
+
why_now: string;
|
|
3158
|
+
angle: string;
|
|
3159
3159
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
3160
3160
|
content_outline?: {
|
|
3161
3161
|
question: string;
|
|
@@ -3290,12 +3290,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3290
3290
|
canonical: string;
|
|
3291
3291
|
spokes: string[];
|
|
3292
3292
|
};
|
|
3293
|
-
why_now: string;
|
|
3294
|
-
angle: string;
|
|
3295
3293
|
sources: {
|
|
3296
3294
|
title: string;
|
|
3297
3295
|
url: string;
|
|
3298
3296
|
}[];
|
|
3297
|
+
why_now: string;
|
|
3298
|
+
angle: string;
|
|
3299
3299
|
format?: "cornerstone" | "pillar" | "standalone" | undefined;
|
|
3300
3300
|
content_outline?: {
|
|
3301
3301
|
question: string;
|