@cogenta/schema 0.2.0 → 0.4.1
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/define-collection.d.ts.map +1 -1
- package/dist/define-collection.js +53 -3
- package/dist/define-collection.js.map +1 -1
- package/dist/generate-types.d.ts.map +1 -1
- package/dist/generate-types.js +6 -1
- package/dist/generate-types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/media-usage.d.ts +56 -0
- package/dist/media-usage.d.ts.map +1 -0
- package/dist/media-usage.js +89 -0
- package/dist/media-usage.js.map +1 -0
- package/dist/rich-text.d.ts +28 -2
- package/dist/rich-text.d.ts.map +1 -1
- package/dist/rich-text.js +26 -3
- package/dist/rich-text.js.map +1 -1
- package/dist/routing/index.d.ts +5 -1
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +2 -0
- package/dist/routing/index.js.map +1 -1
- package/dist/routing/not-found-log.d.ts +78 -0
- package/dist/routing/not-found-log.d.ts.map +1 -0
- package/dist/routing/not-found-log.js +153 -0
- package/dist/routing/not-found-log.js.map +1 -0
- package/dist/routing/redirect-patterns.d.ts +61 -0
- package/dist/routing/redirect-patterns.d.ts.map +1 -0
- package/dist/routing/redirect-patterns.js +173 -0
- package/dist/routing/redirect-patterns.js.map +1 -0
- package/dist/routing/redirects.d.ts +27 -4
- package/dist/routing/redirects.d.ts.map +1 -1
- package/dist/routing/redirects.js +160 -48
- package/dist/routing/redirects.js.map +1 -1
- package/dist/scheduling/index.d.ts +2 -0
- package/dist/scheduling/index.d.ts.map +1 -1
- package/dist/scheduling/index.js +1 -0
- package/dist/scheduling/index.js.map +1 -1
- package/dist/scheduling/registry.d.ts +147 -0
- package/dist/scheduling/registry.d.ts.map +1 -0
- package/dist/scheduling/registry.js +318 -0
- package/dist/scheduling/registry.js.map +1 -0
- package/dist/search/extract.d.ts +24 -0
- package/dist/search/extract.d.ts.map +1 -1
- package/dist/search/extract.js +63 -8
- package/dist/search/extract.js.map +1 -1
- package/dist/search/index.d.ts +2 -1
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +1 -9
- package/dist/search/index.js.map +1 -1
- package/dist/store/admin-theme-store.d.ts +26 -0
- package/dist/store/admin-theme-store.d.ts.map +1 -0
- package/dist/store/admin-theme-store.js +81 -0
- package/dist/store/admin-theme-store.js.map +1 -0
- package/dist/store/admin-theme-tables.d.ts +24 -0
- package/dist/store/admin-theme-tables.d.ts.map +1 -0
- package/dist/store/admin-theme-tables.js +41 -0
- package/dist/store/admin-theme-tables.js.map +1 -0
- package/dist/store/admin-theme-templates.d.ts +135 -0
- package/dist/store/admin-theme-templates.d.ts.map +1 -0
- package/dist/store/admin-theme-templates.js +217 -0
- package/dist/store/admin-theme-templates.js.map +1 -0
- package/dist/store/columns.d.ts.map +1 -1
- package/dist/store/columns.js +8 -2
- package/dist/store/columns.js.map +1 -1
- package/dist/store/diff.d.ts +40 -0
- package/dist/store/diff.d.ts.map +1 -1
- package/dist/store/diff.js +148 -0
- package/dist/store/diff.js.map +1 -1
- package/dist/store/index.d.ts +47 -4
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +26 -2
- package/dist/store/index.js.map +1 -1
- package/dist/store/maintenance-store.d.ts +34 -0
- package/dist/store/maintenance-store.d.ts.map +1 -0
- package/dist/store/maintenance-store.js +92 -0
- package/dist/store/maintenance-store.js.map +1 -0
- package/dist/store/menu-store.d.ts +146 -0
- package/dist/store/menu-store.d.ts.map +1 -0
- package/dist/store/menu-store.js +565 -0
- package/dist/store/menu-store.js.map +1 -0
- package/dist/store/menu-tables.d.ts +38 -0
- package/dist/store/menu-tables.d.ts.map +1 -0
- package/dist/store/menu-tables.js +117 -0
- package/dist/store/menu-tables.js.map +1 -0
- package/dist/store/naming.d.ts +1 -1
- package/dist/store/naming.d.ts.map +1 -1
- package/dist/store/naming.js +2 -0
- package/dist/store/naming.js.map +1 -1
- package/dist/store/pattern-store.d.ts +75 -0
- package/dist/store/pattern-store.d.ts.map +1 -0
- package/dist/store/pattern-store.js +118 -0
- package/dist/store/pattern-store.js.map +1 -0
- package/dist/store/pattern-tables.d.ts +29 -0
- package/dist/store/pattern-tables.d.ts.map +1 -0
- package/dist/store/pattern-tables.js +53 -0
- package/dist/store/pattern-tables.js.map +1 -0
- package/dist/store/read-only.d.ts +3 -3
- package/dist/store/read-only.d.ts.map +1 -1
- package/dist/store/read-only.js +4 -3
- package/dist/store/read-only.js.map +1 -1
- package/dist/store/redirect-tracking.d.ts +50 -0
- package/dist/store/redirect-tracking.d.ts.map +1 -0
- package/dist/store/redirect-tracking.js +91 -0
- package/dist/store/redirect-tracking.js.map +1 -0
- package/dist/store/review-transitions.d.ts +34 -0
- package/dist/store/review-transitions.d.ts.map +1 -0
- package/dist/store/review-transitions.js +51 -0
- package/dist/store/review-transitions.js.map +1 -0
- package/dist/store/role-permission-export.d.ts +22 -0
- package/dist/store/role-permission-export.d.ts.map +1 -0
- package/dist/store/role-permission-export.js +0 -0
- package/dist/store/role-permission-export.js.map +1 -0
- package/dist/store/role-permission-overlay.d.ts +27 -0
- package/dist/store/role-permission-overlay.d.ts.map +1 -0
- package/dist/store/role-permission-overlay.js +0 -0
- package/dist/store/role-permission-overlay.js.map +1 -0
- package/dist/store/role-permission-store.d.ts +72 -0
- package/dist/store/role-permission-store.d.ts.map +1 -0
- package/dist/store/role-permission-store.js +148 -0
- package/dist/store/role-permission-store.js.map +1 -0
- package/dist/store/role-permission-tables.d.ts +27 -0
- package/dist/store/role-permission-tables.d.ts.map +1 -0
- package/dist/store/role-permission-tables.js +52 -0
- package/dist/store/role-permission-tables.js.map +1 -0
- package/dist/store/scheduled-publish-enqueue.d.ts +37 -0
- package/dist/store/scheduled-publish-enqueue.d.ts.map +1 -0
- package/dist/store/scheduled-publish-enqueue.js +51 -0
- package/dist/store/scheduled-publish-enqueue.js.map +1 -0
- package/dist/store/scheduled-publish-failures.d.ts +36 -0
- package/dist/store/scheduled-publish-failures.d.ts.map +1 -0
- package/dist/store/scheduled-publish-failures.js +67 -0
- package/dist/store/scheduled-publish-failures.js.map +1 -0
- package/dist/store/schema-2-1-migration.d.ts +29 -0
- package/dist/store/schema-2-1-migration.d.ts.map +1 -0
- package/dist/store/schema-2-1-migration.js +71 -0
- package/dist/store/schema-2-1-migration.js.map +1 -0
- package/dist/store/search-console-store.d.ts +44 -0
- package/dist/store/search-console-store.d.ts.map +1 -0
- package/dist/store/search-console-store.js +90 -0
- package/dist/store/search-console-store.js.map +1 -0
- package/dist/store/search-console-tables.d.ts +14 -0
- package/dist/store/search-console-tables.d.ts.map +1 -0
- package/dist/store/search-console-tables.js +29 -0
- package/dist/store/search-console-tables.js.map +1 -0
- package/dist/store/search-indexing.d.ts +36 -0
- package/dist/store/search-indexing.d.ts.map +1 -1
- package/dist/store/search-indexing.js +33 -0
- package/dist/store/search-indexing.js.map +1 -1
- package/dist/store/site-settings-registry.d.ts +164 -0
- package/dist/store/site-settings-registry.d.ts.map +1 -0
- package/dist/store/site-settings-registry.js +1160 -0
- package/dist/store/site-settings-registry.js.map +1 -0
- package/dist/store/site-settings-store.d.ts +42 -0
- package/dist/store/site-settings-store.d.ts.map +1 -0
- package/dist/store/site-settings-store.js +97 -0
- package/dist/store/site-settings-store.js.map +1 -0
- package/dist/store/site-settings-tables.d.ts +29 -0
- package/dist/store/site-settings-tables.d.ts.map +1 -0
- package/dist/store/site-settings-tables.js +48 -0
- package/dist/store/site-settings-tables.js.map +1 -0
- package/dist/store/store.d.ts +57 -2
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +278 -37
- package/dist/store/store.js.map +1 -1
- package/dist/store/tables.d.ts.map +1 -1
- package/dist/store/tables.js +11 -0
- package/dist/store/tables.js.map +1 -1
- package/dist/store/taxonomy-store.d.ts.map +1 -1
- package/dist/store/taxonomy-store.js +90 -39
- package/dist/store/taxonomy-store.js.map +1 -1
- package/dist/store/taxonomy-usage.d.ts +47 -0
- package/dist/store/taxonomy-usage.d.ts.map +1 -0
- package/dist/store/taxonomy-usage.js +101 -0
- package/dist/store/taxonomy-usage.js.map +1 -0
- package/dist/store/theme-store.d.ts +73 -0
- package/dist/store/theme-store.d.ts.map +1 -0
- package/dist/store/theme-store.js +193 -0
- package/dist/store/theme-store.js.map +1 -0
- package/dist/store/types.d.ts +36 -1
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/values.d.ts.map +1 -1
- package/dist/store/values.js +28 -1
- package/dist/store/values.js.map +1 -1
- package/dist/system-fields.d.ts +8 -1
- package/dist/system-fields.d.ts.map +1 -1
- package/dist/system-fields.js +14 -1
- package/dist/system-fields.js.map +1 -1
- package/dist/types.d.ts +54 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +21 -0
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-store.d.ts","sourceRoot":"","sources":["../../src/store/theme-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAKpB,MAAM,eAAe,CAAA;AAGtB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,eAAO,MAAM,WAAW,kBAAkB,CAAA;AAI1C,MAAM,WAAW,mBAAmB;IAClC,gGAAgG;IAChG,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvD,2HAA2H;IAC3H,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IACzC;;;;;;;;;OASG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACxD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAA;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACnC,GAAG,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAChE,0FAA0F;IAC1F,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;CAC9D;AAaD,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BxE;AAiCD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAkJvE"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { identifier, sql, } from '@cogenta/core';
|
|
2
|
+
import { jsonColumn, textColumn, timestampColumn } from './columns.js';
|
|
3
|
+
/**
|
|
4
|
+
* Theme overrides (fiche 14 task 0-4): the DB half of the two-source-of-truth
|
|
5
|
+
* design the fiche's task 0 settles on. `theme.tokens.json` next to the
|
|
6
|
+
* config stays the versioned default a project ships with; this table is
|
|
7
|
+
* where a signed-in `admin` changes the live site's appearance without a
|
|
8
|
+
* terminal, a redeploy, or a write to a source file the running process may
|
|
9
|
+
* not even be allowed to touch (a read-only container filesystem, most
|
|
10
|
+
* hosts). `cogenta serve` overlays this row on top of the file's tokens on
|
|
11
|
+
* every request — see `theme-render.ts` — which is what makes a change show
|
|
12
|
+
* up without a restart, the same promise contract D's hot-swappable skin
|
|
13
|
+
* already made for the file alone.
|
|
14
|
+
*
|
|
15
|
+
* One row, updated in place — the same shape `MaintenanceState` already
|
|
16
|
+
* uses: no locale, no version, no trash, because this is a feature flag's
|
|
17
|
+
* worth of state, not content (contract A).
|
|
18
|
+
*
|
|
19
|
+
* `tokenOverrides` is a *partial* token tree (`SkinTokenOverrides` in
|
|
20
|
+
* `@cogenta/render`) — only the keys an editor actually changed — kept as
|
|
21
|
+
* opaque JSON here on purpose: this package does not depend on
|
|
22
|
+
* `@cogenta/render`, so nothing here parses or validates the shape. That is
|
|
23
|
+
* the caller's job (the theme router, with the real `validateSkin`), every
|
|
24
|
+
* single time a value is about to be written or served — this store never
|
|
25
|
+
* decides what a valid skin looks like, only where the bytes live.
|
|
26
|
+
*/
|
|
27
|
+
export const THEME_TABLE = 'cogenta_theme';
|
|
28
|
+
const ROW_ID = 'site';
|
|
29
|
+
const EMPTY_STATE = {
|
|
30
|
+
tokenOverrides: null,
|
|
31
|
+
additionalCss: null,
|
|
32
|
+
logoMediaId: null,
|
|
33
|
+
logoDarkMediaId: null,
|
|
34
|
+
faviconMediaId: null,
|
|
35
|
+
shareImageMediaId: null,
|
|
36
|
+
activeTheme: null,
|
|
37
|
+
updatedBy: null,
|
|
38
|
+
};
|
|
39
|
+
export async function ensureThemeTable(db) {
|
|
40
|
+
const dialect = db.dialect;
|
|
41
|
+
const table = identifier(THEME_TABLE, dialect);
|
|
42
|
+
const statement = sql `create table if not exists ${table} (
|
|
43
|
+
${identifier('id', dialect)} ${textColumn(dialect, 16)} not null primary key,
|
|
44
|
+
${identifier('token_overrides', dialect)} ${jsonColumn()},
|
|
45
|
+
${identifier('additional_css', dialect)} ${jsonColumn()},
|
|
46
|
+
${identifier('logo_media_id', dialect)} ${textColumn(dialect, 64)},
|
|
47
|
+
${identifier('logo_dark_media_id', dialect)} ${textColumn(dialect, 64)},
|
|
48
|
+
${identifier('favicon_media_id', dialect)} ${textColumn(dialect, 64)},
|
|
49
|
+
${identifier('share_image_media_id', dialect)} ${textColumn(dialect, 64)},
|
|
50
|
+
${identifier('active_theme', dialect)} ${textColumn(dialect, 200)},
|
|
51
|
+
${identifier('updated_at', dialect)} ${timestampColumn(dialect)} not null,
|
|
52
|
+
${identifier('updated_by', dialect)} ${textColumn(dialect, 128)}
|
|
53
|
+
)`;
|
|
54
|
+
await db.query(statement);
|
|
55
|
+
// A database whose table predates `active_theme`: `create table if not
|
|
56
|
+
// exists` above is a no-op for it, so the column is added the same way
|
|
57
|
+
// every other in-place table growth in this codebase is
|
|
58
|
+
// (`menu-tables.ts`'s own `location`/`target_taxonomy` columns do the
|
|
59
|
+
// same). Failure here means the column already exists — the only realistic
|
|
60
|
+
// cause on a table this function has already run against — so it is
|
|
61
|
+
// swallowed exactly like that precedent.
|
|
62
|
+
await db
|
|
63
|
+
.query(sql `alter table ${table} add column ${identifier('active_theme', dialect)} ${textColumn(dialect, 200)}`)
|
|
64
|
+
.catch(() => undefined);
|
|
65
|
+
}
|
|
66
|
+
function text(value) {
|
|
67
|
+
return typeof value === 'string' ? value : String(value);
|
|
68
|
+
}
|
|
69
|
+
function nullableText(value) {
|
|
70
|
+
return value === null || value === undefined ? null : text(value);
|
|
71
|
+
}
|
|
72
|
+
function nullableJson(value) {
|
|
73
|
+
if (value === null || value === undefined)
|
|
74
|
+
return null;
|
|
75
|
+
const raw = text(value);
|
|
76
|
+
if (raw === '')
|
|
77
|
+
return null;
|
|
78
|
+
return JSON.parse(raw);
|
|
79
|
+
}
|
|
80
|
+
function toState(row) {
|
|
81
|
+
return {
|
|
82
|
+
tokenOverrides: nullableJson(row.token_overrides),
|
|
83
|
+
additionalCss: nullableText(row.additional_css),
|
|
84
|
+
logoMediaId: nullableText(row.logo_media_id),
|
|
85
|
+
logoDarkMediaId: nullableText(row.logo_dark_media_id),
|
|
86
|
+
faviconMediaId: nullableText(row.favicon_media_id),
|
|
87
|
+
shareImageMediaId: nullableText(row.share_image_media_id),
|
|
88
|
+
activeTheme: nullableText(row.active_theme),
|
|
89
|
+
updatedAt: text(row.updated_at),
|
|
90
|
+
updatedBy: nullableText(row.updated_by),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export function createThemeStore(options) {
|
|
94
|
+
const { db } = options;
|
|
95
|
+
const dialect = db.dialect;
|
|
96
|
+
const now = options.now ?? (() => new Date());
|
|
97
|
+
const table = identifier(THEME_TABLE, dialect);
|
|
98
|
+
const idColumn = identifier('id', dialect);
|
|
99
|
+
async function rowOf(tx) {
|
|
100
|
+
const found = await tx.query(sql `select * from ${table} where ${idColumn} = ${ROW_ID}`);
|
|
101
|
+
return found.rows[0] ?? null;
|
|
102
|
+
}
|
|
103
|
+
async function write(tx, existing, next, at) {
|
|
104
|
+
const tokenOverridesJson = next.tokenOverrides === null ? null : JSON.stringify(next.tokenOverrides);
|
|
105
|
+
if (existing === null) {
|
|
106
|
+
await tx.query(sql `insert into ${table} (
|
|
107
|
+
${idColumn}, ${identifier('token_overrides', dialect)}, ${identifier('additional_css', dialect)},
|
|
108
|
+
${identifier('logo_media_id', dialect)}, ${identifier('logo_dark_media_id', dialect)},
|
|
109
|
+
${identifier('favicon_media_id', dialect)}, ${identifier('share_image_media_id', dialect)},
|
|
110
|
+
${identifier('active_theme', dialect)},
|
|
111
|
+
${identifier('updated_at', dialect)}, ${identifier('updated_by', dialect)}
|
|
112
|
+
) values (
|
|
113
|
+
${ROW_ID}, ${tokenOverridesJson}, ${next.additionalCss},
|
|
114
|
+
${next.logoMediaId}, ${next.logoDarkMediaId},
|
|
115
|
+
${next.faviconMediaId}, ${next.shareImageMediaId},
|
|
116
|
+
${next.activeTheme},
|
|
117
|
+
${at}, ${next.updatedBy}
|
|
118
|
+
)`);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
await tx.query(sql `update ${table}
|
|
122
|
+
set ${identifier('token_overrides', dialect)} = ${tokenOverridesJson},
|
|
123
|
+
${identifier('additional_css', dialect)} = ${next.additionalCss},
|
|
124
|
+
${identifier('logo_media_id', dialect)} = ${next.logoMediaId},
|
|
125
|
+
${identifier('logo_dark_media_id', dialect)} = ${next.logoDarkMediaId},
|
|
126
|
+
${identifier('favicon_media_id', dialect)} = ${next.faviconMediaId},
|
|
127
|
+
${identifier('share_image_media_id', dialect)} = ${next.shareImageMediaId},
|
|
128
|
+
${identifier('active_theme', dialect)} = ${next.activeTheme},
|
|
129
|
+
${identifier('updated_at', dialect)} = ${at},
|
|
130
|
+
${identifier('updated_by', dialect)} = ${next.updatedBy}
|
|
131
|
+
where ${idColumn} = ${ROW_ID}`);
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
tokenOverrides: next.tokenOverrides,
|
|
135
|
+
additionalCss: next.additionalCss,
|
|
136
|
+
logoMediaId: next.logoMediaId,
|
|
137
|
+
logoDarkMediaId: next.logoDarkMediaId,
|
|
138
|
+
faviconMediaId: next.faviconMediaId,
|
|
139
|
+
shareImageMediaId: next.shareImageMediaId,
|
|
140
|
+
activeTheme: next.activeTheme,
|
|
141
|
+
updatedAt: at,
|
|
142
|
+
updatedBy: next.updatedBy,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
get: async () => {
|
|
147
|
+
const row = await rowOf(db);
|
|
148
|
+
if (row === null)
|
|
149
|
+
return { ...EMPTY_STATE, updatedAt: now().toISOString() };
|
|
150
|
+
return toState(row);
|
|
151
|
+
},
|
|
152
|
+
set: async (input) => db.transaction(async (tx) => {
|
|
153
|
+
const existing = await rowOf(tx);
|
|
154
|
+
const current = existing === null ? { ...EMPTY_STATE, updatedAt: '' } : toState(existing);
|
|
155
|
+
const at = now().toISOString();
|
|
156
|
+
return write(tx, existing, {
|
|
157
|
+
tokenOverrides: input.tokenOverrides === undefined ? current.tokenOverrides : input.tokenOverrides,
|
|
158
|
+
additionalCss: input.additionalCss === undefined ? current.additionalCss : input.additionalCss,
|
|
159
|
+
logoMediaId: input.logoMediaId === undefined ? current.logoMediaId : input.logoMediaId,
|
|
160
|
+
logoDarkMediaId: input.logoDarkMediaId === undefined
|
|
161
|
+
? current.logoDarkMediaId
|
|
162
|
+
: input.logoDarkMediaId,
|
|
163
|
+
faviconMediaId: input.faviconMediaId === undefined ? current.faviconMediaId : input.faviconMediaId,
|
|
164
|
+
shareImageMediaId: input.shareImageMediaId === undefined
|
|
165
|
+
? current.shareImageMediaId
|
|
166
|
+
: input.shareImageMediaId,
|
|
167
|
+
activeTheme: input.activeTheme === undefined ? current.activeTheme : input.activeTheme,
|
|
168
|
+
updatedBy: input.updatedBy ?? null,
|
|
169
|
+
}, at);
|
|
170
|
+
}, { immediate: true }),
|
|
171
|
+
clear: async (updatedBy) => db.transaction(async (tx) => {
|
|
172
|
+
const existing = await rowOf(tx);
|
|
173
|
+
// `activeTheme` is deliberately *not* one of the fields this reset
|
|
174
|
+
// touches: "reset to file" is the appearance screen's skin-only
|
|
175
|
+
// undo, and it must not silently switch a site back to the
|
|
176
|
+
// default theme as a side effect of an editor discarding their
|
|
177
|
+
// colour changes.
|
|
178
|
+
const activeTheme = existing === null ? null : toState(existing).activeTheme;
|
|
179
|
+
const at = now().toISOString();
|
|
180
|
+
return write(tx, existing, {
|
|
181
|
+
tokenOverrides: null,
|
|
182
|
+
additionalCss: null,
|
|
183
|
+
logoMediaId: null,
|
|
184
|
+
logoDarkMediaId: null,
|
|
185
|
+
faviconMediaId: null,
|
|
186
|
+
shareImageMediaId: null,
|
|
187
|
+
activeTheme,
|
|
188
|
+
updatedBy,
|
|
189
|
+
}, at);
|
|
190
|
+
}, { immediate: true }),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=theme-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-store.js","sourceRoot":"","sources":["../../src/store/theme-store.ts"],"names":[],"mappings":"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"}
|
package/dist/store/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ContentStatus, Provenance, SystemFields } from '../types.js';
|
|
1
|
+
import type { ContentStatus, Provenance, ReviewState, SystemFields } from '../types.js';
|
|
2
2
|
/** The user-declared fields of an entry, keyed by field name. */
|
|
3
3
|
export type ContentValues = Readonly<Record<string, unknown>>;
|
|
4
4
|
/**
|
|
@@ -89,6 +89,16 @@ export interface UpdateInput<TValues extends ContentValues = ContentValues> exte
|
|
|
89
89
|
/** Replaces the whole zone. A zone left out is untouched. */
|
|
90
90
|
readonly blocks?: BlockZones;
|
|
91
91
|
readonly updatedBy?: string | null;
|
|
92
|
+
/**
|
|
93
|
+
* The `updatedAt` this write was loaded against (fiche 02 task 7).
|
|
94
|
+
*
|
|
95
|
+
* Optimistic concurrency by detection, not by locking: absent, this write
|
|
96
|
+
* behaves exactly as before (last write wins, silently). Present, `update()`
|
|
97
|
+
* refuses with `CONTENT_STALE_WRITE` when the live row's `updatedAt` no
|
|
98
|
+
* longer matches — somebody else's write landed first — rather than
|
|
99
|
+
* overwriting it without a word.
|
|
100
|
+
*/
|
|
101
|
+
readonly expectedUpdatedAt?: string;
|
|
92
102
|
}
|
|
93
103
|
export interface PublishInput {
|
|
94
104
|
readonly publishedBy?: string | null;
|
|
@@ -105,6 +115,12 @@ export interface ListOptions extends TrashOptions {
|
|
|
105
115
|
readonly state?: EntryState;
|
|
106
116
|
readonly locale?: string;
|
|
107
117
|
readonly status?: ContentStatus;
|
|
118
|
+
/** Filters on the editorial workflow's state (`schema@2.1`, ADR-0027). */
|
|
119
|
+
readonly reviewState?: ReviewState;
|
|
120
|
+
/** Filters on who is assigned to review next. `null` means "unassigned". */
|
|
121
|
+
readonly assignedReviewer?: string | null;
|
|
122
|
+
/** Filters on the entry's author — "my own submissions" in the review queue. */
|
|
123
|
+
readonly createdBy?: string | null;
|
|
108
124
|
readonly translationOf?: string | null;
|
|
109
125
|
/** Equality on declared fields. Richer filters belong to the API layer (L1/13). */
|
|
110
126
|
readonly where?: Readonly<Record<string, unknown>>;
|
|
@@ -118,6 +134,25 @@ export interface Page<T> {
|
|
|
118
134
|
readonly nextCursor: string | null;
|
|
119
135
|
readonly hasMore: boolean;
|
|
120
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Per-status row counts for one collection, live rows and trash apart.
|
|
139
|
+
*
|
|
140
|
+
* The one shared implementation fiche 01 tâche 4 (per-collection status tabs)
|
|
141
|
+
* and fiche 22 tâche 1 (the dashboard's content summary widget) both build
|
|
142
|
+
* on: a `GROUP BY status` and a trash count, never a page scanned client-side
|
|
143
|
+
* — the piège both fiches name ("un compteur sur la page courante serait
|
|
144
|
+
* faux dès la deuxième page").
|
|
145
|
+
*/
|
|
146
|
+
export interface StatusCounts {
|
|
147
|
+
readonly draft: number;
|
|
148
|
+
readonly scheduled: number;
|
|
149
|
+
readonly published: number;
|
|
150
|
+
readonly archived: number;
|
|
151
|
+
/** Rows with `deletedAt` set — orthogonal to `status` (`schema@2.0`, ADR-0022). */
|
|
152
|
+
readonly trashed: number;
|
|
153
|
+
/** `draft + scheduled + published + archived`. Trash is excluded, the same default every other read applies. */
|
|
154
|
+
readonly total: number;
|
|
155
|
+
}
|
|
121
156
|
export interface VersionSummary {
|
|
122
157
|
readonly version: number;
|
|
123
158
|
readonly status: ContentStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/store/values.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/store/values.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAiCzE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,OAAO,GACb,OAAO,CAiDT;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAmBnF;AAED,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;IACrD,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,oBAAoB,EAChC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,gBAAgB,GACxB,gBAAgB,CA2FlB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,oBAAoB,EAChC,KAAK,EAAE,UAAU,EACjB,MAAM,GAAE,MAAM,MAAe,GAC5B,MAAM,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,CAsCzC"}
|
package/dist/store/values.js
CHANGED
|
@@ -9,12 +9,31 @@ import { newId as uuidv7 } from '../id.js';
|
|
|
9
9
|
* have parsed for us and another would not.
|
|
10
10
|
*/
|
|
11
11
|
const JSON_KINDS = new Set(['richText', 'json', 'geo']);
|
|
12
|
+
/**
|
|
13
|
+
* `media`/`select` with `many: true`: several values, but — unlike a to-many
|
|
14
|
+
* `relation` or `taxonomy` field — nothing on the other end that a foreign
|
|
15
|
+
* key could point at (a media asset lives in its own subsystem, a select
|
|
16
|
+
* choice references nothing at all). So the ordered array is JSON-encoded
|
|
17
|
+
* straight into its own column, the same trick `richText`/`json`/`geo`
|
|
18
|
+
* already use, rather than a join table `relationsOf` has no reason to build
|
|
19
|
+
* for either kind.
|
|
20
|
+
*/
|
|
21
|
+
function isJsonEncodedArray(definition) {
|
|
22
|
+
return ((definition.kind === 'media' || definition.kind === 'select') &&
|
|
23
|
+
definition.options['many'] === true);
|
|
24
|
+
}
|
|
12
25
|
function invalid(message, hint, details) {
|
|
13
26
|
return new CogentaError({ code: 'CONTENT_INVALID', message, hint, details });
|
|
14
27
|
}
|
|
15
28
|
export function encodeFieldValue(field, definition, value) {
|
|
16
29
|
if (value === undefined || value === null)
|
|
17
30
|
return null;
|
|
31
|
+
if (isJsonEncodedArray(definition)) {
|
|
32
|
+
if (!Array.isArray(value)) {
|
|
33
|
+
throw invalid(`"${field}" holds several values, so it expects an array.`, 'Pass an array — of media ids for a media field, of choice values for a select field.', { field, kind: definition.kind });
|
|
34
|
+
}
|
|
35
|
+
return JSON.stringify(value);
|
|
36
|
+
}
|
|
18
37
|
if (JSON_KINDS.has(definition.kind))
|
|
19
38
|
return JSON.stringify(value);
|
|
20
39
|
if (definition.kind === 'boolean')
|
|
@@ -43,7 +62,7 @@ export function encodeFieldValue(field, definition, value) {
|
|
|
43
62
|
export function decodeFieldValue(definition, raw) {
|
|
44
63
|
if (raw === undefined || raw === null)
|
|
45
64
|
return null;
|
|
46
|
-
if (JSON_KINDS.has(definition.kind)) {
|
|
65
|
+
if (JSON_KINDS.has(definition.kind) || isJsonEncodedArray(definition)) {
|
|
47
66
|
if (typeof raw !== 'string')
|
|
48
67
|
return raw;
|
|
49
68
|
try {
|
|
@@ -96,6 +115,14 @@ export function normaliseValues(collection, input, options) {
|
|
|
96
115
|
relations[name] = [];
|
|
97
116
|
values[name] = [];
|
|
98
117
|
}
|
|
118
|
+
else if (isJsonEncodedArray(definition)) {
|
|
119
|
+
// Same rule as a joined to-many field's empty case (ADR-0022): `[]`,
|
|
120
|
+
// never `null` — a `media`/`select` field with `many: true` has no
|
|
121
|
+
// join table to be absent from, but it is still "several values",
|
|
122
|
+
// and "zero of them" is not the same state as "unset".
|
|
123
|
+
columns[name] = encodeFieldValue(name, definition, []);
|
|
124
|
+
values[name] = [];
|
|
125
|
+
}
|
|
99
126
|
else {
|
|
100
127
|
columns[name] = null;
|
|
101
128
|
values[name] = null;
|
package/dist/store/values.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/store/values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAI1C;;;;;;;GAOG;AAEH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AAEvD,SAAS,OAAO,CAAC,OAAe,EAAE,IAAY,EAAE,OAAgC;IAC9E,OAAO,IAAI,YAAY,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,UAA2B,EAC3B,KAAc;IAEd,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAEtD,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAEjE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA;IAExD,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,OAAO,CACX,IAAI,KAAK,qBAAqB,EAC9B,mDAAmD,EACnD,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,KAAK,EAAE,CAClC,CAAA;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjE,0EAA0E;QAC1E,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACpE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,CAAC,IAAI,KAAK,yBAAyB,EAAE,oCAAoC,EAAE;gBACtF,KAAK;aACN,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IAC1F,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,CACX,IAAI,KAAK,2BAA2B,OAAO,KAAK,GAAG,EACnD,6EAA6E,EAC7E,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CACjC,CAAA;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAA2B,EAAE,GAAY;IACxE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAElD,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/store/values.ts"],"names":[],"mappings":"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"}
|
package/dist/system-fields.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { z } from 'zod';
|
|
|
11
11
|
* validated against user options — describing them as ordinary fields would let
|
|
12
12
|
* a collection redeclare one, which is exactly what `defineCollection` refuses.
|
|
13
13
|
*/
|
|
14
|
-
export declare const SYSTEM_FIELD_NAMES: readonly ['id', 'createdAt', 'updatedAt', 'createdBy', 'updatedBy', 'status', 'deletedAt', 'locale', 'translationOf', 'version', 'provenance', 'provenanceDetail'];
|
|
14
|
+
export declare const SYSTEM_FIELD_NAMES: readonly ['id', 'createdAt', 'updatedAt', 'createdBy', 'updatedBy', 'status', 'deletedAt', 'reviewState', 'assignedReviewer', 'locale', 'translationOf', 'version', 'provenance', 'provenanceDetail'];
|
|
15
15
|
export type SystemFieldName = (typeof SYSTEM_FIELD_NAMES)[number];
|
|
16
16
|
export declare function isSystemFieldName(name: string): name is SystemFieldName;
|
|
17
17
|
export declare const provenanceDetailSchema: z.ZodObject<{
|
|
@@ -33,6 +33,13 @@ export declare const systemFieldsSchema: z.ZodObject<{
|
|
|
33
33
|
scheduled: "scheduled";
|
|
34
34
|
}>;
|
|
35
35
|
deletedAt: z.ZodNullable<z.ZodISODateTime>;
|
|
36
|
+
reviewState: z.ZodEnum<{
|
|
37
|
+
approved: "approved";
|
|
38
|
+
"changes-requested": "changes-requested";
|
|
39
|
+
none: "none";
|
|
40
|
+
pending: "pending";
|
|
41
|
+
}>;
|
|
42
|
+
assignedReviewer: z.ZodNullable<z.ZodString>;
|
|
36
43
|
locale: z.ZodString;
|
|
37
44
|
translationOf: z.ZodNullable<z.ZodString>;
|
|
38
45
|
version: z.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-fields.d.ts","sourceRoot":"","sources":["../src/system-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,kBAAkB,YAC7B,IAAI,EACJ,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,eAAe,EACf,SAAS,EACT,YAAY,EACZ,kBAAkB,CACV,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAIjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,eAAe,CAEvE;AAED,eAAO,MAAM,sBAAsB;;;;;kBAMjC,CAAA;AAEF,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"system-fields.d.ts","sourceRoot":"","sources":["../src/system-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,kBAAkB,YAC7B,IAAI,EACJ,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,SAAS,EACT,YAAY,EACZ,kBAAkB,CACV,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAIjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,eAAe,CAEvE;AAED,eAAO,MAAM,sBAAsB;;;;;kBAMjC,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmB7B,CAAA;AAEF,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;IACxE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED,eAAO,MAAM,wBAAwB,EAAE,SAAS,qBAAqB,EA2BpE,CAAA"}
|
package/dist/system-fields.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { CONTENT_STATUSES, PROVENANCE_KINDS } from './types.js';
|
|
2
|
+
import { CONTENT_STATUSES, PROVENANCE_KINDS, REVIEW_STATES } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Contract A § "Champs système". Present on every entry of every collection,
|
|
5
5
|
* never declared by the author, never optional.
|
|
@@ -20,6 +20,8 @@ export const SYSTEM_FIELD_NAMES = [
|
|
|
20
20
|
'updatedBy',
|
|
21
21
|
'status',
|
|
22
22
|
'deletedAt',
|
|
23
|
+
'reviewState',
|
|
24
|
+
'assignedReviewer',
|
|
23
25
|
'locale',
|
|
24
26
|
'translationOf',
|
|
25
27
|
'version',
|
|
@@ -46,6 +48,9 @@ export const systemFieldsSchema = z.object({
|
|
|
46
48
|
status: z.enum(CONTENT_STATUSES),
|
|
47
49
|
/** Contract A § "Champs système" (`schema@2.0`): orthogonal to `status`. */
|
|
48
50
|
deletedAt: z.iso.datetime({ offset: true }).nullable(),
|
|
51
|
+
/** Contract A § "Champs système" (`schema@2.1`, ADR-0027): orthogonal to `status`. */
|
|
52
|
+
reviewState: z.enum(REVIEW_STATES),
|
|
53
|
+
assignedReviewer: z.string().min(1).nullable(),
|
|
49
54
|
/** Contract A § i18n: one entry per locale (ADR-0014). */
|
|
50
55
|
locale: z.string().min(1),
|
|
51
56
|
/** The source entry of a translation family, or `null` on the source itself. */
|
|
@@ -62,6 +67,14 @@ export const SYSTEM_FIELD_DESCRIPTORS = [
|
|
|
62
67
|
{ name: 'updatedBy', type: 'id', nullable: true, readOnly: true },
|
|
63
68
|
{ name: 'status', type: 'enum', nullable: false, readOnly: true, values: CONTENT_STATUSES },
|
|
64
69
|
{ name: 'deletedAt', type: 'datetime', nullable: true, readOnly: true },
|
|
70
|
+
{
|
|
71
|
+
name: 'reviewState',
|
|
72
|
+
type: 'enum',
|
|
73
|
+
nullable: false,
|
|
74
|
+
readOnly: true,
|
|
75
|
+
values: REVIEW_STATES,
|
|
76
|
+
},
|
|
77
|
+
{ name: 'assignedReviewer', type: 'id', nullable: true, readOnly: true },
|
|
65
78
|
{ name: 'locale', type: 'string', nullable: false, readOnly: true },
|
|
66
79
|
{ name: 'translationOf', type: 'id', nullable: true, readOnly: true },
|
|
67
80
|
{ name: 'version', type: 'number', nullable: false, readOnly: true },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-fields.js","sourceRoot":"","sources":["../src/system-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"system-fields.js","sourceRoot":"","sources":["../src/system-fields.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -22,6 +22,19 @@ export declare const CONTENT_ACTIONS: readonly ['read', 'create', 'update', 'del
|
|
|
22
22
|
export type ContentAction = (typeof CONTENT_ACTIONS)[number];
|
|
23
23
|
export declare const CONTENT_STATUSES: readonly ['draft', 'scheduled', 'published', 'archived'];
|
|
24
24
|
export type ContentStatus = (typeof CONTENT_STATUSES)[number];
|
|
25
|
+
/**
|
|
26
|
+
* The editorial workflow's state, orthogonal to `status` (`schema@2.1`,
|
|
27
|
+
* ADR-0027) — exactly as `deletedAt` is orthogonal to it since ADR-0022.
|
|
28
|
+
*
|
|
29
|
+
* `approved` is **not** `published`: approving authorises, publishing is
|
|
30
|
+
* still the `publish` action. Confounding the two would publish by surprise
|
|
31
|
+
* and would remove the control the `publish` permission grants.
|
|
32
|
+
*/
|
|
33
|
+
export declare const REVIEW_STATES: readonly ['none', 'pending', 'changes-requested', 'approved'];
|
|
34
|
+
export type ReviewState = (typeof REVIEW_STATES)[number];
|
|
35
|
+
/** The three transitions the server-side table recognises. Closed set. */
|
|
36
|
+
export declare const REVIEW_TRANSITIONS: readonly ['submit', 'approve', 'requestChanges'];
|
|
37
|
+
export type ReviewTransition = (typeof REVIEW_TRANSITIONS)[number];
|
|
25
38
|
export declare const PROVENANCE_KINDS: readonly ['human', 'assisted', 'generated'];
|
|
26
39
|
export type Provenance = (typeof PROVENANCE_KINDS)[number];
|
|
27
40
|
/** What the admin needs to render a field, and nothing the engine needs. */
|
|
@@ -81,7 +94,36 @@ export interface CollectionTrash {
|
|
|
81
94
|
}
|
|
82
95
|
/** Days a trashed entry is kept when the collection says nothing. */
|
|
83
96
|
export declare const DEFAULT_TRASH_RETAIN_DAYS = 30;
|
|
84
|
-
|
|
97
|
+
/**
|
|
98
|
+
* One action's grant.
|
|
99
|
+
*
|
|
100
|
+
* The plain array form is the whole of contract A before `schema@2.1` and
|
|
101
|
+
* stays valid: this is a strictly additive change (ADR-0027), the same
|
|
102
|
+
* nature as `tools@1.1`'s `document.extract`. The object form adds `own`,
|
|
103
|
+
* for "this role may act on its own entries only" — a real clause in the
|
|
104
|
+
* block rather than a `'author:own'` role-name convention, which would
|
|
105
|
+
* reproduce the class of silent typo bug the L10 sitemap 500 was.
|
|
106
|
+
*/
|
|
107
|
+
export type CollectionPermissionRule = readonly string[] | {
|
|
108
|
+
readonly roles: readonly string[];
|
|
109
|
+
readonly own?: boolean;
|
|
110
|
+
};
|
|
111
|
+
export type CollectionPermissions = Readonly<Partial<Record<ContentAction, CollectionPermissionRule>>>;
|
|
112
|
+
/** `CollectionPermissionRule`, always read back out as `{ roles, own }`. */
|
|
113
|
+
export interface NormalisedPermissionRule {
|
|
114
|
+
readonly roles: readonly string[];
|
|
115
|
+
readonly own: boolean;
|
|
116
|
+
}
|
|
117
|
+
/** The one place either form of a `CollectionPermissionRule` is unpacked. */
|
|
118
|
+
export declare function normalisePermissionRule(rule: CollectionPermissionRule | undefined): NormalisedPermissionRule;
|
|
119
|
+
/**
|
|
120
|
+
* The editorial workflow, opt-in per collection (`schema@2.1`, ADR-0027) —
|
|
121
|
+
* never a global switch, so it stays consistent with permissions already
|
|
122
|
+
* being declared per collection, and a single-editor site sees nothing new.
|
|
123
|
+
*/
|
|
124
|
+
export interface CollectionWorkflow {
|
|
125
|
+
readonly enabled: boolean;
|
|
126
|
+
}
|
|
85
127
|
export interface CollectionDefinition {
|
|
86
128
|
readonly name: string;
|
|
87
129
|
readonly labels: {
|
|
@@ -95,6 +137,8 @@ export interface CollectionDefinition {
|
|
|
95
137
|
* all, so `delete()` is the hard delete `purge()` performs.
|
|
96
138
|
*/
|
|
97
139
|
readonly trash?: CollectionTrash | false;
|
|
140
|
+
/** Absent or `{ enabled: false }` means no workflow: `submit`/`approve`/`requestChanges` all refuse. */
|
|
141
|
+
readonly workflow?: CollectionWorkflow;
|
|
98
142
|
readonly fields: Readonly<Record<string, FieldDefinition>>;
|
|
99
143
|
readonly indexes?: readonly (readonly string[])[];
|
|
100
144
|
readonly permissions: CollectionPermissions;
|
|
@@ -169,6 +213,15 @@ export interface SystemFields {
|
|
|
169
213
|
* in the repository stays exhaustive.
|
|
170
214
|
*/
|
|
171
215
|
readonly deletedAt: string | null;
|
|
216
|
+
/**
|
|
217
|
+
* The editorial workflow's state, `'none'` while it was never entered
|
|
218
|
+
* (`schema@2.1`, ADR-0027). Orthogonal to `status`, exactly as `deletedAt`
|
|
219
|
+
* is — a client written before this field existed reads exactly the
|
|
220
|
+
* `status` values it always did, unaware `reviewState` exists at all.
|
|
221
|
+
*/
|
|
222
|
+
readonly reviewState: ReviewState;
|
|
223
|
+
/** Who is expected to review this entry next, or `null`. Set at submission or chosen by an editor. */
|
|
224
|
+
readonly assignedReviewer: string | null;
|
|
172
225
|
readonly locale: string;
|
|
173
226
|
readonly translationOf: string | null;
|
|
174
227
|
readonly version: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -35,7 +35,28 @@ export const FIELD_KINDS = [
|
|
|
35
35
|
/** Contract A, "Permissions". Actions are fixed; role names are an open set. */
|
|
36
36
|
export const CONTENT_ACTIONS = ['read', 'create', 'update', 'delete', 'publish'];
|
|
37
37
|
export const CONTENT_STATUSES = ['draft', 'scheduled', 'published', 'archived'];
|
|
38
|
+
/**
|
|
39
|
+
* The editorial workflow's state, orthogonal to `status` (`schema@2.1`,
|
|
40
|
+
* ADR-0027) — exactly as `deletedAt` is orthogonal to it since ADR-0022.
|
|
41
|
+
*
|
|
42
|
+
* `approved` is **not** `published`: approving authorises, publishing is
|
|
43
|
+
* still the `publish` action. Confounding the two would publish by surprise
|
|
44
|
+
* and would remove the control the `publish` permission grants.
|
|
45
|
+
*/
|
|
46
|
+
export const REVIEW_STATES = ['none', 'pending', 'changes-requested', 'approved'];
|
|
47
|
+
/** The three transitions the server-side table recognises. Closed set. */
|
|
48
|
+
export const REVIEW_TRANSITIONS = ['submit', 'approve', 'requestChanges'];
|
|
38
49
|
export const PROVENANCE_KINDS = ['human', 'assisted', 'generated'];
|
|
39
50
|
/** Days a trashed entry is kept when the collection says nothing. */
|
|
40
51
|
export const DEFAULT_TRASH_RETAIN_DAYS = 30;
|
|
52
|
+
const EMPTY_RULE = { roles: [], own: false };
|
|
53
|
+
/** The one place either form of a `CollectionPermissionRule` is unpacked. */
|
|
54
|
+
export function normalisePermissionRule(rule) {
|
|
55
|
+
if (rule === undefined)
|
|
56
|
+
return EMPTY_RULE;
|
|
57
|
+
if (Array.isArray(rule))
|
|
58
|
+
return { roles: rule, own: false };
|
|
59
|
+
const object = rule;
|
|
60
|
+
return { roles: object.roles, own: object.own === true };
|
|
61
|
+
}
|
|
41
62
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,UAAU;IACV,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;IACR,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,UAAU;CACF,CAAA;AAIV,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA;AAIzF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAU,CAAA;AAIxF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAU,CAAA;AA+D3E,qEAAqE;AACrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,UAAU;IACV,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;IACR,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,UAAU;CACF,CAAA;AAIV,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA;AAIzF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAU,CAAA;AAIxF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,UAAU,CAAU,CAAA;AAI1F,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAU,CAAA;AAIlF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAU,CAAA;AA+D3E,qEAAqE;AACrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AA0B3C,MAAM,UAAU,GAA6B,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;AAEtE,6EAA6E;AAC7E,MAAM,UAAU,uBAAuB,CACrC,IAA0C;IAE1C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,UAAU,CAAA;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;IAC3D,MAAM,MAAM,GAAG,IAAqE,CAAA;IACpF,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,EAAE,CAAA;AAC1D,CAAC"}
|