@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 @@
|
|
|
1
|
+
{"version":3,"file":"fronts-publish-intent.js","sourceRoot":"","sources":["../../src/engine/fronts-publish-intent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ContentType, FrontsPublishStatus } from '../schema/types.js';
|
|
2
|
+
import type { D1Database } from './d1.js';
|
|
3
|
+
/** The five lifecycle states foundryd reports for a Fronts publish intent. */
|
|
4
|
+
export declare const FRONTS_PUBLISH_STATUSES: readonly FrontsPublishStatus[];
|
|
5
|
+
export declare function isFrontsPublishStatus(value: unknown): value is FrontsPublishStatus;
|
|
6
|
+
/**
|
|
7
|
+
* Feature flag — a ROLLBACK LEVER, not a graduation gate. Default ENABLED; the
|
|
8
|
+
* additive Fronts publish endpoints only go dark when the host explicitly sets
|
|
9
|
+
* FRONTS_PUBLISH_ENABLED to a falsy string ('0' | 'false' | 'off' | 'no') or the
|
|
10
|
+
* boolean false. When off, foundryd's polls/callbacks are refused loudly (503)
|
|
11
|
+
* and the untouched D1 cron path owns publishing.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isFrontsPublishEnabled(env: Record<string, unknown> | undefined): boolean;
|
|
14
|
+
export interface FrontsScheduleItem {
|
|
15
|
+
id: string;
|
|
16
|
+
type: ContentType;
|
|
17
|
+
slug: string;
|
|
18
|
+
title: string;
|
|
19
|
+
channel: string | null;
|
|
20
|
+
/** Scheduled publish time, unix epoch seconds. */
|
|
21
|
+
publishAt: number;
|
|
22
|
+
/** Current lifecycle marker (null until foundryd first acknowledges it). */
|
|
23
|
+
frontsPublishStatus: FrontsPublishStatus | null;
|
|
24
|
+
/** publish_at is at or before `now` — foundryd is late on this one. */
|
|
25
|
+
overdue: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface ListFrontsPublishScheduleOptions {
|
|
28
|
+
/** Window upper bound, unix epoch seconds. Items due at/before this are returned. */
|
|
29
|
+
toSeconds: number;
|
|
30
|
+
/** Reference time for the `overdue` flag, unix epoch seconds. Defaults to Date.now(). */
|
|
31
|
+
nowSeconds?: number;
|
|
32
|
+
/** Hard cap on rows returned. Default 200, max 1000. */
|
|
33
|
+
limit?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* List `scheduled` items due at or before the window end. Includes overdue
|
|
37
|
+
* items (publish_at < window start) — the window's lower bound is intentionally
|
|
38
|
+
* not applied, matching foundryd's "next window + any overdue" contract. Ordered
|
|
39
|
+
* by publish_at ascending so the most-overdue item is published first.
|
|
40
|
+
*/
|
|
41
|
+
export declare function listFrontsPublishSchedule(db: D1Database, options: ListFrontsPublishScheduleOptions): Promise<FrontsScheduleItem[]>;
|
|
42
|
+
export interface FrontsPublishReceipt {
|
|
43
|
+
published_urls?: string[] | null;
|
|
44
|
+
platform_post_ids?: string[] | null;
|
|
45
|
+
sha256?: string | null;
|
|
46
|
+
}
|
|
47
|
+
export interface FrontsPublishCallbackInput {
|
|
48
|
+
eventId: string;
|
|
49
|
+
intentId?: string | null;
|
|
50
|
+
contentId: string;
|
|
51
|
+
version?: number | null;
|
|
52
|
+
correlationId?: string | null;
|
|
53
|
+
status: FrontsPublishStatus;
|
|
54
|
+
/** ISO-8601 string or unix epoch seconds; used as the published_at on `live`. */
|
|
55
|
+
occurredAt?: string | number | null;
|
|
56
|
+
receipt?: FrontsPublishReceipt | null;
|
|
57
|
+
error?: string | null;
|
|
58
|
+
/** Reference time (unix seconds), for tests. Defaults to Date.now(). */
|
|
59
|
+
now?: number;
|
|
60
|
+
}
|
|
61
|
+
export interface FrontsPublishCallbackResult {
|
|
62
|
+
ok: boolean;
|
|
63
|
+
/** True when this event_id was already processed — no state change this call. */
|
|
64
|
+
deduped: boolean;
|
|
65
|
+
status: FrontsPublishStatus;
|
|
66
|
+
/** True when the item is published (flipped by this call, or already was). */
|
|
67
|
+
published: boolean;
|
|
68
|
+
/** The content_publication_attempts ledger row id, when this call published. */
|
|
69
|
+
attemptId: string | null;
|
|
70
|
+
contentFound: boolean;
|
|
71
|
+
/** Set when a `live` callback could not be committed through the ledger. */
|
|
72
|
+
ledgerError: string | null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Apply one foundryd publish-callback. Idempotent by `event_id`: a repeat
|
|
76
|
+
* delivery returns the stored outcome without re-applying. See the module
|
|
77
|
+
* header for the state-transition contract.
|
|
78
|
+
*/
|
|
79
|
+
export declare function applyFrontsPublishCallback(db: D1Database, input: FrontsPublishCallbackInput): Promise<FrontsPublishCallbackResult>;
|
|
80
|
+
//# sourceMappingURL=fronts-publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fronts-publish.d.ts","sourceRoot":"","sources":["../../src/engine/fronts-publish.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,EAAE,SAAS,mBAAmB,EAMxD,CAAA;AAEV,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,OAAO,CASxF;AAID,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAA;IACjB,4EAA4E;IAC5E,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAC/C,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,gCAAgC;IAChD,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAA;IACjB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC9C,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,gCAAgC,GACvC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAiC/B;AAID,MAAM,WAAW,oBAAoB;IACpC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IAChC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,0BAA0B;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,EAAE,mBAAmB,CAAA;IAC3B,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACnC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,2BAA2B;IAC3C,EAAE,EAAE,OAAO,CAAA;IACX,iFAAiF;IACjF,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,mBAAmB,CAAA;IAC3B,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAA;IAClB,gFAAgF;IAChF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AA2BD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC/C,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,0BAA0B,GAC/B,OAAO,CAAC,2BAA2B,CAAC,CAoJtC"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
// Fronts publish path — the additive, flag-gated, out-of-process publish flow
|
|
2
|
+
// (increment: cms/Masthead side).
|
|
3
|
+
//
|
|
4
|
+
// TWO seams, both driven by the external Fronts publish worker (foundryd):
|
|
5
|
+
//
|
|
6
|
+
// 1. listFrontsPublishSchedule — the poll surface. Returns `scheduled` items
|
|
7
|
+
// whose `publish_at` has arrived or is arriving within the caller's window
|
|
8
|
+
// (plus any overdue), so foundryd knows what to publish. Mirrors the
|
|
9
|
+
// `runScheduledPublish` (engine/cron.ts) due-predicate — `content_items`
|
|
10
|
+
// scheduling columns are INTEGER unix seconds, so the window is compared in
|
|
11
|
+
// seconds (NOT the D1 `datetime('now')` TEXT format; there is no
|
|
12
|
+
// space-vs-T comparison trap on this column).
|
|
13
|
+
//
|
|
14
|
+
// 2. applyFrontsPublishCallback — the receiver. Records foundryd's outbound
|
|
15
|
+
// callback (idempotent by `event_id`), reflects the lifecycle status onto
|
|
16
|
+
// `content_items.fronts_publish_status`, and — ONLY on a confirmed `live`
|
|
17
|
+
// with a receipt — drives the item to published THROUGH the existing
|
|
18
|
+
// `content_publication_attempts` 2PC ledger via `publishOne`. A
|
|
19
|
+
// `queued`/`publishing`/`late`/`failed` callback (or a `live` with no
|
|
20
|
+
// receipt) never flips the item to published.
|
|
21
|
+
//
|
|
22
|
+
// The legacy D1 cron publish path (engine/cron.ts `runScheduledPublish` + the
|
|
23
|
+
// site's cron) is UNTOUCHED and remains the rollback lever; this path is purely
|
|
24
|
+
// additive and gated by FRONTS_PUBLISH_ENABLED (default ON — a rollback lever,
|
|
25
|
+
// not a dark-staging gate).
|
|
26
|
+
import { publishOne } from './publication.js';
|
|
27
|
+
/** The five lifecycle states foundryd reports for a Fronts publish intent. */
|
|
28
|
+
export const FRONTS_PUBLISH_STATUSES = [
|
|
29
|
+
'queued',
|
|
30
|
+
'publishing',
|
|
31
|
+
'live',
|
|
32
|
+
'late',
|
|
33
|
+
'failed',
|
|
34
|
+
];
|
|
35
|
+
export function isFrontsPublishStatus(value) {
|
|
36
|
+
return typeof value === 'string' && FRONTS_PUBLISH_STATUSES.includes(value);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Feature flag — a ROLLBACK LEVER, not a graduation gate. Default ENABLED; the
|
|
40
|
+
* additive Fronts publish endpoints only go dark when the host explicitly sets
|
|
41
|
+
* FRONTS_PUBLISH_ENABLED to a falsy string ('0' | 'false' | 'off' | 'no') or the
|
|
42
|
+
* boolean false. When off, foundryd's polls/callbacks are refused loudly (503)
|
|
43
|
+
* and the untouched D1 cron path owns publishing.
|
|
44
|
+
*/
|
|
45
|
+
export function isFrontsPublishEnabled(env) {
|
|
46
|
+
const raw = env?.FRONTS_PUBLISH_ENABLED;
|
|
47
|
+
if (raw === undefined || raw === null)
|
|
48
|
+
return true;
|
|
49
|
+
if (typeof raw === 'boolean')
|
|
50
|
+
return raw;
|
|
51
|
+
if (typeof raw === 'number')
|
|
52
|
+
return raw !== 0;
|
|
53
|
+
if (typeof raw === 'string') {
|
|
54
|
+
return !['0', 'false', 'off', 'no'].includes(raw.trim().toLowerCase());
|
|
55
|
+
}
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* List `scheduled` items due at or before the window end. Includes overdue
|
|
60
|
+
* items (publish_at < window start) — the window's lower bound is intentionally
|
|
61
|
+
* not applied, matching foundryd's "next window + any overdue" contract. Ordered
|
|
62
|
+
* by publish_at ascending so the most-overdue item is published first.
|
|
63
|
+
*/
|
|
64
|
+
export async function listFrontsPublishSchedule(db, options) {
|
|
65
|
+
const now = options.nowSeconds ?? Math.floor(Date.now() / 1_000);
|
|
66
|
+
const limit = Math.min(Math.max(1, Math.floor(options.limit ?? 200)), 1000);
|
|
67
|
+
const result = await db
|
|
68
|
+
.prepare(`SELECT id, type, slug, title, channel, publish_at, fronts_publish_status
|
|
69
|
+
FROM content_items
|
|
70
|
+
WHERE status = 'scheduled'
|
|
71
|
+
AND publish_at IS NOT NULL
|
|
72
|
+
AND publish_at <= ?
|
|
73
|
+
ORDER BY publish_at ASC
|
|
74
|
+
LIMIT ?`)
|
|
75
|
+
.bind(options.toSeconds, limit)
|
|
76
|
+
.all();
|
|
77
|
+
return (result.results ?? []).map((row) => ({
|
|
78
|
+
id: row.id,
|
|
79
|
+
type: row.type,
|
|
80
|
+
slug: row.slug,
|
|
81
|
+
title: row.title,
|
|
82
|
+
channel: row.channel,
|
|
83
|
+
publishAt: row.publish_at,
|
|
84
|
+
frontsPublishStatus: row.fronts_publish_status,
|
|
85
|
+
overdue: row.publish_at <= now,
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
function hasReceipt(receipt) {
|
|
89
|
+
if (!receipt)
|
|
90
|
+
return false;
|
|
91
|
+
const urls = Array.isArray(receipt.published_urls) && receipt.published_urls.length > 0;
|
|
92
|
+
const ids = Array.isArray(receipt.platform_post_ids) && receipt.platform_post_ids.length > 0;
|
|
93
|
+
const sha = typeof receipt.sha256 === 'string' && receipt.sha256.trim().length > 0;
|
|
94
|
+
return urls || ids || sha;
|
|
95
|
+
}
|
|
96
|
+
/** Resolve occurred_at to a bounded, non-future unix-seconds value (or null). */
|
|
97
|
+
function resolveOccurredAtSeconds(occurredAt, now) {
|
|
98
|
+
let seconds = null;
|
|
99
|
+
if (typeof occurredAt === 'number' && Number.isFinite(occurredAt)) {
|
|
100
|
+
seconds = Math.floor(occurredAt);
|
|
101
|
+
}
|
|
102
|
+
else if (typeof occurredAt === 'string' && occurredAt.trim()) {
|
|
103
|
+
const ms = Date.parse(occurredAt);
|
|
104
|
+
if (!Number.isNaN(ms))
|
|
105
|
+
seconds = Math.floor(ms / 1_000);
|
|
106
|
+
}
|
|
107
|
+
if (seconds === null || !Number.isSafeInteger(seconds) || seconds < 0)
|
|
108
|
+
return null;
|
|
109
|
+
// publishOne rejects a published_at later than `now`; clamp for clock skew.
|
|
110
|
+
return Math.min(seconds, now);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Apply one foundryd publish-callback. Idempotent by `event_id`: a repeat
|
|
114
|
+
* delivery returns the stored outcome without re-applying. See the module
|
|
115
|
+
* header for the state-transition contract.
|
|
116
|
+
*/
|
|
117
|
+
export async function applyFrontsPublishCallback(db, input) {
|
|
118
|
+
const now = input.now ?? Math.floor(Date.now() / 1_000);
|
|
119
|
+
// 1. Idempotency — replay the stored outcome for a known event_id.
|
|
120
|
+
const existing = await readStoredOutcome(db, input.eventId);
|
|
121
|
+
if (existing)
|
|
122
|
+
return existing;
|
|
123
|
+
// 2. Resolve the target item. A missing item is NOT recorded, so a retry can
|
|
124
|
+
// still land once the item exists.
|
|
125
|
+
const item = await db
|
|
126
|
+
.prepare('SELECT id, status, fronts_publish_status FROM content_items WHERE id = ? LIMIT 1')
|
|
127
|
+
.bind(input.contentId)
|
|
128
|
+
.first();
|
|
129
|
+
if (!item) {
|
|
130
|
+
return {
|
|
131
|
+
ok: false,
|
|
132
|
+
deduped: false,
|
|
133
|
+
status: input.status,
|
|
134
|
+
published: false,
|
|
135
|
+
attemptId: null,
|
|
136
|
+
contentFound: false,
|
|
137
|
+
ledgerError: null,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
// 3. On a confirmed `live` WITH a receipt, drive the publish through the 2PC
|
|
141
|
+
// ledger — record attempt + commit — flipping the item to published.
|
|
142
|
+
// A `live` on an already-published item just confirms it (no re-publish,
|
|
143
|
+
// so we never race the cron path into a duplicate revision).
|
|
144
|
+
let published = item.status === 'published';
|
|
145
|
+
let attemptId = null;
|
|
146
|
+
let ledgerError = null;
|
|
147
|
+
const shouldPublish = input.status === 'live' && hasReceipt(input.receipt);
|
|
148
|
+
if (shouldPublish && item.status !== 'published') {
|
|
149
|
+
try {
|
|
150
|
+
const receiptSummary = summarizeReceipt(input.receipt);
|
|
151
|
+
const surface = {
|
|
152
|
+
name: 'fronts',
|
|
153
|
+
async prepare() {
|
|
154
|
+
return { name: 'fronts', status: 'ok', phase: 'prepare' };
|
|
155
|
+
},
|
|
156
|
+
async commit() {
|
|
157
|
+
return { name: 'fronts', status: 'ok', phase: 'commit', message: receiptSummary };
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
const publishedAt = resolveOccurredAtSeconds(input.occurredAt, now);
|
|
161
|
+
const receipt = await publishOne(db, {
|
|
162
|
+
contentId: input.contentId,
|
|
163
|
+
now,
|
|
164
|
+
...(publishedAt !== null ? { publishedAt } : {}),
|
|
165
|
+
createdBy: 'foundry.fronts-publish',
|
|
166
|
+
surfaces: [surface],
|
|
167
|
+
});
|
|
168
|
+
attemptId = receipt.attemptId;
|
|
169
|
+
published = true;
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
// publishOne can throw when a concurrent/superseding publish already
|
|
173
|
+
// moved the canonical pointer (the item ends up published anyway) — treat
|
|
174
|
+
// that as success. Any other failure is recorded and surfaced loudly.
|
|
175
|
+
const reread = await db
|
|
176
|
+
.prepare('SELECT status FROM content_items WHERE id = ? LIMIT 1')
|
|
177
|
+
.bind(input.contentId)
|
|
178
|
+
.first();
|
|
179
|
+
if (reread?.status === 'published') {
|
|
180
|
+
published = true;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
ledgerError = error instanceof Error ? error.message : String(error);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const incomingOccurredAt = resolveOccurredAtSeconds(input.occurredAt, now);
|
|
188
|
+
// 4. Reflect the lifecycle marker onto the item — but NEVER regress it. A
|
|
189
|
+
// retried/out-of-order `publishing`/`failed` arriving after `live` must not
|
|
190
|
+
// make a published item read as publishing/failed, so gate on occurred_at
|
|
191
|
+
// ordering and the terminal `live`/published state.
|
|
192
|
+
const latestSeenRow = await db
|
|
193
|
+
.prepare('SELECT MAX(occurred_at) AS latest FROM fronts_publish_events WHERE content_id = ? AND occurred_at IS NOT NULL')
|
|
194
|
+
.bind(input.contentId)
|
|
195
|
+
.first();
|
|
196
|
+
if (shouldApplyFrontsMarker(item.status, item.fronts_publish_status, input.status, incomingOccurredAt, latestSeenRow?.latest ?? null)) {
|
|
197
|
+
await db
|
|
198
|
+
.prepare('UPDATE content_items SET fronts_publish_status = ?, updated_at = unixepoch() WHERE id = ?')
|
|
199
|
+
.bind(input.status, input.contentId)
|
|
200
|
+
.run();
|
|
201
|
+
}
|
|
202
|
+
// 5. Record the durable, idempotent event row (the "processed" marker). The
|
|
203
|
+
// dedupe SELECT (step 1) and this INSERT are not one transaction, so two
|
|
204
|
+
// concurrent same-event_id deliveries can both reach here — ON CONFLICT DO
|
|
205
|
+
// NOTHING makes the loser a no-op (never a spurious PK-violation 500), and
|
|
206
|
+
// we then replay the winner's stored outcome. publishOne's own CAS already
|
|
207
|
+
// prevents a double publish.
|
|
208
|
+
const insertResult = await db
|
|
209
|
+
.prepare(`INSERT INTO fronts_publish_events
|
|
210
|
+
(event_id, intent_id, content_id, version, correlation_id, status, occurred_at,
|
|
211
|
+
receipt_json, error, published, attempt_id, received_at)
|
|
212
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
213
|
+
ON CONFLICT(event_id) DO NOTHING`)
|
|
214
|
+
.bind(input.eventId, input.intentId ?? null, input.contentId, typeof input.version === 'number' && Number.isFinite(input.version)
|
|
215
|
+
? Math.floor(input.version)
|
|
216
|
+
: null, input.correlationId ?? null, input.status, incomingOccurredAt, input.receipt ? JSON.stringify(input.receipt) : null, ledgerError, published ? 1 : 0, attemptId, now)
|
|
217
|
+
.run();
|
|
218
|
+
const changes = insertResult.meta?.changes;
|
|
219
|
+
if (typeof changes === 'number' && changes === 0) {
|
|
220
|
+
// A concurrent callback with the same event_id won the PK race.
|
|
221
|
+
const winner = await readStoredOutcome(db, input.eventId);
|
|
222
|
+
if (winner)
|
|
223
|
+
return winner;
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
ok: ledgerError === null,
|
|
227
|
+
deduped: false,
|
|
228
|
+
status: input.status,
|
|
229
|
+
published,
|
|
230
|
+
attemptId,
|
|
231
|
+
contentFound: true,
|
|
232
|
+
ledgerError,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
/** Replay a stored callback outcome by event_id, or null when not yet recorded. */
|
|
236
|
+
async function readStoredOutcome(db, eventId) {
|
|
237
|
+
const row = await db
|
|
238
|
+
.prepare('SELECT status, published, attempt_id, error FROM fronts_publish_events WHERE event_id = ? LIMIT 1')
|
|
239
|
+
.bind(eventId)
|
|
240
|
+
.first();
|
|
241
|
+
if (!row)
|
|
242
|
+
return null;
|
|
243
|
+
return {
|
|
244
|
+
ok: !row.error,
|
|
245
|
+
deduped: true,
|
|
246
|
+
status: row.status,
|
|
247
|
+
published: row.published === 1,
|
|
248
|
+
attemptId: row.attempt_id,
|
|
249
|
+
contentFound: true,
|
|
250
|
+
ledgerError: row.error,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Whether an incoming callback may overwrite `content_items.fronts_publish_status`.
|
|
255
|
+
* `live` is the authoritative terminal-success marker (always reflected, never
|
|
256
|
+
* downgraded); older-by-occurred_at callbacks may not regress a newer marker.
|
|
257
|
+
*/
|
|
258
|
+
function shouldApplyFrontsMarker(itemStatus, currentMarker, incomingStatus, incomingOccurredAt, latestSeenOccurredAt) {
|
|
259
|
+
if (incomingStatus === 'live')
|
|
260
|
+
return true;
|
|
261
|
+
if (itemStatus === 'published' || currentMarker === 'live')
|
|
262
|
+
return false;
|
|
263
|
+
if (incomingOccurredAt !== null &&
|
|
264
|
+
latestSeenOccurredAt !== null &&
|
|
265
|
+
incomingOccurredAt < latestSeenOccurredAt) {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
/** Bounded, human-readable receipt digest recorded on the ledger surface receipt. */
|
|
271
|
+
function summarizeReceipt(receipt) {
|
|
272
|
+
if (!receipt)
|
|
273
|
+
return 'fronts:live';
|
|
274
|
+
const parts = [];
|
|
275
|
+
if (Array.isArray(receipt.published_urls) && receipt.published_urls.length > 0) {
|
|
276
|
+
parts.push(`urls=${receipt.published_urls.length}`);
|
|
277
|
+
}
|
|
278
|
+
if (Array.isArray(receipt.platform_post_ids) && receipt.platform_post_ids.length > 0) {
|
|
279
|
+
parts.push(`posts=${receipt.platform_post_ids.length}`);
|
|
280
|
+
}
|
|
281
|
+
if (typeof receipt.sha256 === 'string' && receipt.sha256.trim()) {
|
|
282
|
+
parts.push(`sha256=${receipt.sha256.trim().slice(0, 64)}`);
|
|
283
|
+
}
|
|
284
|
+
return `fronts:live ${parts.join(' ')}`.trim().slice(0, 500);
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=fronts-publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fronts-publish.js","sourceRoot":"","sources":["../../src/engine/fronts-publish.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/index.d.ts
CHANGED
|
@@ -9,12 +9,18 @@ export { type ContributorInput, type ContributorRecord, listContributors, setCon
|
|
|
9
9
|
export { runScheduledPublish, type ScheduledPublishResult } from './cron.js';
|
|
10
10
|
export type { D1Database, D1DatabaseSession, D1PreparedStatement, D1Result } from './d1.js';
|
|
11
11
|
export { applyFoundryCallback, type CallbackInput, type DispatchResult, dispatchToFoundry, type ProcessingState, verifyHmac, } from './foundry-dispatch.js';
|
|
12
|
+
export { applyFrontsPublishCallback, FRONTS_PUBLISH_STATUSES, type FrontsPublishCallbackInput, type FrontsPublishCallbackResult, type FrontsPublishReceipt, type FrontsScheduleItem, isFrontsPublishEnabled, isFrontsPublishStatus, type ListFrontsPublishScheduleOptions, listFrontsPublishSchedule, } from './fronts-publish.js';
|
|
13
|
+
export { armFrontsPublishTriggerToken, type FrontsPublishContentRefs, type FrontsPublishIntent, FrontsPublishIntentError, type FrontsPublishIntentErrorCode, type FrontsPublishIntentFailure, frontsPublishTriggerTokenHash, type HydrateFrontsPublishIntentsResult, hydrateFrontsPublishIntents, setFrontsChannelTargets, } from './fronts-publish-intent.js';
|
|
12
14
|
export { htmlToMarkdown, type ParsedImportItem, parseGhost, parseMarkdown, parseSubstackCsv, } from './import-parsers.js';
|
|
13
15
|
export { type AcceptInviteInput, acceptInvite, type CreateInviteInput, type CreateInviteResult, createInvite, hashInviteToken, type InviteRecord, loadInviteByToken, } from './invites.js';
|
|
14
16
|
export { listMembers, loadMembership, type MemberListEntry, type MembershipRecord, removeMember, setRole, type UpsertMastheadUserInput, upsertMastheadUser, } from './members.js';
|
|
15
17
|
export { canChangeMemberRole, canRemoveMember, type MemberActionDecision, type MembershipSummary, ownerCount, } from './membership-rules.js';
|
|
16
18
|
export { buildOgCardSpec, type OgCardSpec, type OgCardSpecOpts, type OgImageRenderer, } from './og-render.js';
|
|
17
19
|
export { ContentArchiveImportLimitError, type ContentArchiveInput, type ContentArchiveItem, DEFAULT_PENDING_PUBLICATION_ATTEMPT_LIMIT, DEFAULT_PUBLICATION_SURFACE_HOOK_TIMEOUT_MS, type ImportContentArchiveOptions, type ImportContentArchiveResult, type ImportedArchiveItem, importContentArchive, type ListPendingPublicationAttemptsOptions, listPendingPublicationAttempts, MAX_PENDING_PUBLICATION_ATTEMPT_LIMIT, MAX_PUBLICATION_SURFACE_HOOK_TIMEOUT_MS, type PublicationAttempt, type PublicationAttemptState, PublicationInputError, PublicationNotFoundError, type PublicationOperation, PublicationPointerMoveError, type PublicationReconciler, PublicationReconciliationError, type PublicationReconciliationInput, type PublicationSurfaceCommitStatus, type PublicationSurfacePhase, type PublicationSurfaceReceipt, PublicationSurfaceRequirementError, type PublicationSurfaceStatus, type PublishOneInput, type PublishOneReceipt, publishOne, type RetryPublicationSurfacesInput, type RetryPublicationSurfacesReceipt, type RollbackPublicationInput, type RollbackPublicationReceipt, retryPublicationSurfaces, rollbackPublication, type SkippedArchiveItem, } from './publication.js';
|
|
20
|
+
export { acceptsProbeStatus, type ContinuityArchiveItem, type ContinuityDrift, type ContinuityDriftField, type ContinuityPublishedRow, isRetiredItem, payloadDrift, } from './publication-continuity.js';
|
|
21
|
+
export { CanonicalJsonError, canonicalJson, canonicalJsonBytes, canonicalJsonSha256, type JsonValue, } from './publication-receipt/canonical-json.js';
|
|
22
|
+
export { canonicalizeReceiptBody, PublicationReceiptError, SITE_PUBLICATION_RECEIPT_AUDIENCE, SITE_PUBLICATION_RECEIPT_SCHEMA, type SitePublicationReceiptBody, sitePublicationReceiptBodySchema, } from './publication-receipt/receipt.js';
|
|
23
|
+
export { type SignedPublicationReceipt, signPublicationReceipt, verifyPublicationReceipt, } from './publication-receipt/signature.js';
|
|
18
24
|
export { evaluateArticleBody, type PublishGuardOptions, type PublishGuardOutcome, publishGuardResponseOrNull, } from './publish-guard.js';
|
|
19
25
|
export { getPublishedContentById, getPublishedContentBySlug, type ListPublishedContentOptions, listPublishedContent, MAX_PUBLISHED_CONTENT_PAGE_BYTES, MAX_PUBLISHED_CONTENT_PAGE_SIZE, MAX_PUBLISHED_CONTENT_PAYLOAD_BYTES, type PublishedContent, type PublishedContentCursor, type PublishedContentPage, PublishedContentReadError, type PublishedContentReadErrorCode, } from './published-content.js';
|
|
20
26
|
export { type ArticleInput, assertContentBodyValidForPublish, type BaseContentInput, type ContentItemRecord, type CreateContentInput, claimScheduledForPublish, countWords, createContent, createRevision, duplicateContentItem, ensureUniqueSlug, estimateReadTime, evaluateContentBodyForPublish, getContentItem, getContentRelations, getContentSnapshot, getContentTagPairs, MAX_ITEM_TAG_COUNT, MAX_ITEM_TAGS_TOTAL_BYTES, MAX_TAG_LABEL_BYTES, type NewsletterInput, type PodcastInput, PublishContentValidationError, publishContent, scheduleContent, setContentRelations, setContentTags, TagInputError, type UpdateContentInput, unpublishContent, updateContentItem, VerifiedMediaDurationConflictError, type VideoInput, } from './publisher.js';
|
|
@@ -27,6 +33,7 @@ export { type SeoCheck, type SeoScoreInput, type SeoScoreResult, scoreDraft, } f
|
|
|
27
33
|
export { buildContentPath, ensureTrailingSlash, normalizeSlug, slugify, stripTrailingSlash, } from './slug.js';
|
|
28
34
|
export { applySlugRenameRedirects, clearSlugRedirect, recordSlugRedirect, } from './slug-redirects.js';
|
|
29
35
|
export { listActiveIds, purgeContent, restoreContent, softDeleteContent, } from './soft-delete.js';
|
|
36
|
+
export { normalizeSourceSections, type SourceSectionNormalization, } from './source-sections.js';
|
|
30
37
|
export { createTag, deleteTag, listTags, renameTag, searchTags, type TagSummary, } from './tags.js';
|
|
31
38
|
export { type TaxonomyTag, utf8ByteLength, validateDeclaredTagList, validateRevisionTaxonomy, validateSingleDeclaredTag, validateStoredTaxonomyRows, } from './taxonomy.js';
|
|
32
39
|
export { type UrlGuardResult, validateWebhookUrl } from './url-guard.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/index.js
CHANGED
|
@@ -21,6 +21,11 @@ export { listContributors, setContributors, } from './contributors.js';
|
|
|
21
21
|
export { runScheduledPublish } from './cron.js';
|
|
22
22
|
// Foundry dispatch + HMAC callback engine (P3 Task 5 / bead-08).
|
|
23
23
|
export { applyFoundryCallback, dispatchToFoundry, verifyHmac, } from './foundry-dispatch.js';
|
|
24
|
+
// Fronts publish path — schedule poll + publish-callback receiver (additive, flag-gated).
|
|
25
|
+
export { applyFrontsPublishCallback, FRONTS_PUBLISH_STATUSES, isFrontsPublishEnabled, isFrontsPublishStatus, listFrontsPublishSchedule, } from './fronts-publish.js';
|
|
26
|
+
// Canonical Fronts publish INTENT contract — the CMS-owned canonical values a
|
|
27
|
+
// pull consumer needs to build a complete publish intent (packages#500).
|
|
28
|
+
export { armFrontsPublishTriggerToken, FrontsPublishIntentError, frontsPublishTriggerTokenHash, hydrateFrontsPublishIntents, setFrontsChannelTargets, } from './fronts-publish-intent.js';
|
|
24
29
|
// Import parsers — pure string→struct transforms for Markdown/Ghost/Substack.
|
|
25
30
|
export { htmlToMarkdown, parseGhost, parseMarkdown, parseSubstackCsv, } from './import-parsers.js';
|
|
26
31
|
// Invite engine — workspace_invites (P7 Task 5).
|
|
@@ -33,6 +38,10 @@ export { canChangeMemberRole, canRemoveMember, ownerCount, } from './membership-
|
|
|
33
38
|
export { buildOgCardSpec, } from './og-render.js';
|
|
34
39
|
// Bounded one-item publication kernel.
|
|
35
40
|
export { ContentArchiveImportLimitError, DEFAULT_PENDING_PUBLICATION_ATTEMPT_LIMIT, DEFAULT_PUBLICATION_SURFACE_HOOK_TIMEOUT_MS, importContentArchive, listPendingPublicationAttempts, MAX_PENDING_PUBLICATION_ATTEMPT_LIMIT, MAX_PUBLICATION_SURFACE_HOOK_TIMEOUT_MS, PublicationInputError, PublicationNotFoundError, PublicationPointerMoveError, PublicationReconciliationError, PublicationSurfaceRequirementError, publishOne, retryPublicationSurfaces, rollbackPublication, } from './publication.js';
|
|
41
|
+
export { acceptsProbeStatus, isRetiredItem, payloadDrift, } from './publication-continuity.js';
|
|
42
|
+
export { CanonicalJsonError, canonicalJson, canonicalJsonBytes, canonicalJsonSha256, } from './publication-receipt/canonical-json.js';
|
|
43
|
+
export { canonicalizeReceiptBody, PublicationReceiptError, SITE_PUBLICATION_RECEIPT_AUDIENCE, SITE_PUBLICATION_RECEIPT_SCHEMA, sitePublicationReceiptBodySchema, } from './publication-receipt/receipt.js';
|
|
44
|
+
export { signPublicationReceipt, verifyPublicationReceipt, } from './publication-receipt/signature.js';
|
|
36
45
|
// Pre-publish body validation guard.
|
|
37
46
|
export { evaluateArticleBody, publishGuardResponseOrNull, } from './publish-guard.js';
|
|
38
47
|
// Bounded, pointer-selected public content read model.
|
|
@@ -56,6 +65,7 @@ export { buildContentPath, ensureTrailingSlash, normalizeSlug, slugify, stripTra
|
|
|
56
65
|
export { applySlugRenameRedirects, clearSlugRedirect, recordSlugRedirect, } from './slug-redirects.js';
|
|
57
66
|
// Soft-delete engine — softDeleteContent / restoreContent / purgeContent / listActiveIds.
|
|
58
67
|
export { listActiveIds, purgeContent, restoreContent, softDeleteContent, } from './soft-delete.js';
|
|
68
|
+
export { normalizeSourceSections, } from './source-sections.js';
|
|
59
69
|
// Tag CRUD engine — listTags / searchTags / renameTag / deleteTag.
|
|
60
70
|
export { createTag, deleteTag, listTags, renameTag, searchTags, } from './tags.js';
|
|
61
71
|
export { utf8ByteLength, validateDeclaredTagList, validateRevisionTaxonomy, validateSingleDeclaredTag, validateStoredTaxonomyRows, } from './taxonomy.js';
|
package/dist/engine/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/** The archive-side fields a continuity run compares. */
|
|
2
|
+
export interface ContinuityArchiveItem {
|
|
3
|
+
title?: string | null;
|
|
4
|
+
description?: string | null;
|
|
5
|
+
featured?: boolean | null;
|
|
6
|
+
heroImageId?: string | null;
|
|
7
|
+
visibility?: string | null;
|
|
8
|
+
/** The archive's name for what the engine stores as `channel`. */
|
|
9
|
+
primaryCategory?: string | null;
|
|
10
|
+
bodyMarkdown?: string | null;
|
|
11
|
+
metadata?: {
|
|
12
|
+
originalStatus?: string | null;
|
|
13
|
+
} | null;
|
|
14
|
+
}
|
|
15
|
+
/** The joined `content_items` + published-revision row, as the engine stores it. */
|
|
16
|
+
export interface ContinuityPublishedRow {
|
|
17
|
+
rev_title?: string | null;
|
|
18
|
+
rev_description?: string | null;
|
|
19
|
+
rev_featured?: number | null;
|
|
20
|
+
rev_hero_image_id?: string | null;
|
|
21
|
+
rev_visibility?: string | null;
|
|
22
|
+
rev_channel?: string | null;
|
|
23
|
+
rev_body_markdown?: string | null;
|
|
24
|
+
}
|
|
25
|
+
export type ContinuityDriftField = 'title' | 'description' | 'featured' | 'heroImage' | 'visibility' | 'channel' | 'body';
|
|
26
|
+
export interface ContinuityDrift {
|
|
27
|
+
drifted: boolean;
|
|
28
|
+
fields: ContinuityDriftField[];
|
|
29
|
+
title: string;
|
|
30
|
+
description: string | null;
|
|
31
|
+
/** `content_items.featured` is INTEGER; the archive item carries a boolean. */
|
|
32
|
+
featured: 0 | 1;
|
|
33
|
+
heroImageId: string | null;
|
|
34
|
+
visibility: 'free' | 'premium';
|
|
35
|
+
channel: string | null;
|
|
36
|
+
body: string;
|
|
37
|
+
bodyDrifted: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** An item the archive has taken down rather than published. */
|
|
40
|
+
export declare function isRetiredItem(item: ContinuityArchiveItem | null | undefined): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Compare the fields a reader actually sees against the published revision.
|
|
43
|
+
*
|
|
44
|
+
* The site renders from the published revision payload, so an edit to any field
|
|
45
|
+
* this does not examine is classified "already in sync", skipped, and never
|
|
46
|
+
* reaches a reader — while the run reports success. That has stranded real work
|
|
47
|
+
* twice: fourteen restored article bodies, and a `featured` flag flip, both
|
|
48
|
+
* merged, both reporting `failed=0`, neither ever visible.
|
|
49
|
+
*
|
|
50
|
+
* Comparison is exact rather than a length or prefix heuristic. The entire class
|
|
51
|
+
* of bug being prevented is a cheap test that silently misses a real edit: a
|
|
52
|
+
* false "stale" costs one idempotent republish, a false "in sync" loses the edit.
|
|
53
|
+
*
|
|
54
|
+
* NOT COMPARED: tags. The revision stores them canonicalized and sorted while
|
|
55
|
+
* the archive carries raw frontmatter strings, and the engine exports no
|
|
56
|
+
* canonicalizer to reuse. Detecting a field this cannot also REPAIR would be
|
|
57
|
+
* worse than not detecting it — tag writes go through the engine, so a tag-only
|
|
58
|
+
* drift would republish unchanged and stay stale on every run, forever.
|
|
59
|
+
*/
|
|
60
|
+
export declare function payloadDrift(item: ContinuityArchiveItem, row: ContinuityPublishedRow): ContinuityDrift;
|
|
61
|
+
/**
|
|
62
|
+
* Whether a live probe response means the publication succeeded.
|
|
63
|
+
*
|
|
64
|
+
* LIVE → 200 only.
|
|
65
|
+
* RETIRED → 301/308 (redirected to a surviving twin) or 404 (gone, with no
|
|
66
|
+
* honest target to redirect to).
|
|
67
|
+
*
|
|
68
|
+
* The invariant: **a retired article must never answer 200.** That is the
|
|
69
|
+
* stale-row symptom a teardown exists to remove, and it is the only status this
|
|
70
|
+
* rejects for a retirement. Demanding 200 for retirements instead would fail the
|
|
71
|
+
* run forever on exactly the articles the archive deliberately took down.
|
|
72
|
+
*
|
|
73
|
+
* 301 and 308 are both permanent; a server may answer GET with one and other
|
|
74
|
+
* methods with the other, so both are accepted.
|
|
75
|
+
*/
|
|
76
|
+
export declare function acceptsProbeStatus(status: number, retired: boolean): boolean;
|
|
77
|
+
//# sourceMappingURL=publication-continuity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publication-continuity.d.ts","sourceRoot":"","sources":["../../src/engine/publication-continuity.ts"],"names":[],"mappings":"AAUA,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,kEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;CACpD;AAED,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACtC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,MAAM,oBAAoB,GAC7B,OAAO,GACP,aAAa,GACb,UAAU,GACV,WAAW,GACX,YAAY,GACZ,SAAS,GACT,MAAM,CAAA;AAET,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,oBAAoB,EAAE,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;CACpB;AAED,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAErF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,qBAAqB,EAC3B,GAAG,EAAE,sBAAsB,GACzB,eAAe,CAmCjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAG5E"}
|