@cogenta/schema 0.3.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 +44 -6
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +24 -3
- 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 +48 -1
- package/dist/store/menu-store.d.ts.map +1 -1
- package/dist/store/menu-store.js +151 -4
- package/dist/store/menu-store.js.map +1 -1
- package/dist/store/menu-tables.d.ts +12 -0
- package/dist/store/menu-tables.d.ts.map +1 -1
- package/dist/store/menu-tables.js +38 -0
- package/dist/store/menu-tables.js.map +1 -1
- 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-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 +48 -1
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +231 -39
- 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
package/dist/store/diff.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/store/diff.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/store/diff.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEzE;;;;;;;GAOG;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAA;AAExD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,+EAA+E;IAC/E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAA;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAoBhE;AAOD,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,WAAW,EAAE,CAcrF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,KAAK,EAAE,SAAS,YAAY,EAAE,GAC7B,WAAW,EAAE,CAgEf;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAGnF;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,EACvE,KAAK,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACrE,WAAW,CAIb;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;AAElD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AA0BD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE,CAyD9E;AAMD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAmB9D;AAkBD,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,CAM9D"}
|
package/dist/store/diff.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CogentaError } from '@cogenta/core';
|
|
1
2
|
/**
|
|
2
3
|
* Structural equality, without a dependency (rule R9).
|
|
3
4
|
*
|
|
@@ -121,4 +122,151 @@ export function diffContent(before, after) {
|
|
|
121
122
|
const blocks = diffBlockZones(before.blocks, after.blocks);
|
|
122
123
|
return { fields, blocks, changed: fields.length > 0 || blocks.length > 0 };
|
|
123
124
|
}
|
|
125
|
+
function tokenizeWords(text) {
|
|
126
|
+
return text.match(/\s+|\S+/gu) ?? [];
|
|
127
|
+
}
|
|
128
|
+
/** Bounds are the loop invariant's job here, not the type checker's — this is
|
|
129
|
+
* the one place that turns "the invariant holds" into a value the compiler
|
|
130
|
+
* accepts, without a non-null assertion (R9's neighbour rule: no unchecked
|
|
131
|
+
* escape hatch in library code). */
|
|
132
|
+
function wordAt(words, index) {
|
|
133
|
+
const word = words[index];
|
|
134
|
+
if (word === undefined) {
|
|
135
|
+
throw new CogentaError({
|
|
136
|
+
code: 'INTERNAL',
|
|
137
|
+
message: 'diffWords walked past the end of a tokenised side.',
|
|
138
|
+
hint: 'This is a bug in diffWords — its own loop bounds should make this unreachable.',
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return word;
|
|
142
|
+
}
|
|
143
|
+
function lcsLength(table, i, j) {
|
|
144
|
+
return table[i]?.[j] ?? 0;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Longest common subsequence of words, walked into a left-to-right script of
|
|
148
|
+
* equal/removed/added runs. Plain dynamic programming, ~30 lines — R9: no
|
|
149
|
+
* diff library for this.
|
|
150
|
+
*/
|
|
151
|
+
export function diffWords(before, after) {
|
|
152
|
+
const a = tokenizeWords(before);
|
|
153
|
+
const b = tokenizeWords(after);
|
|
154
|
+
const n = a.length;
|
|
155
|
+
const m = b.length;
|
|
156
|
+
// lcs[i][j] = length of the LCS of a[i:] and b[j:]. One row per position in
|
|
157
|
+
// `a`, so each row is a flat, single-indexed `Int32Array` — no 2D access
|
|
158
|
+
// ever needs its own non-null assertion.
|
|
159
|
+
const lcs = Array.from({ length: n + 1 }, () => new Int32Array(m + 1));
|
|
160
|
+
for (let i = n - 1; i >= 0; i--) {
|
|
161
|
+
const row = lcs[i];
|
|
162
|
+
for (let j = m - 1; j >= 0; j--) {
|
|
163
|
+
row[j] =
|
|
164
|
+
a[i] === b[j]
|
|
165
|
+
? lcsLength(lcs, i + 1, j + 1) + 1
|
|
166
|
+
: Math.max(lcsLength(lcs, i + 1, j), lcsLength(lcs, i, j + 1));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const ops = [];
|
|
170
|
+
let i = 0;
|
|
171
|
+
let j = 0;
|
|
172
|
+
while (i < n && j < m) {
|
|
173
|
+
if (a[i] === b[j]) {
|
|
174
|
+
ops.push({ op: 'equal', text: wordAt(a, i) });
|
|
175
|
+
i++;
|
|
176
|
+
j++;
|
|
177
|
+
}
|
|
178
|
+
else if (lcsLength(lcs, i + 1, j) >= lcsLength(lcs, i, j + 1)) {
|
|
179
|
+
ops.push({ op: 'removed', text: wordAt(a, i) });
|
|
180
|
+
i++;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
ops.push({ op: 'added', text: wordAt(b, j) });
|
|
184
|
+
j++;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
while (i < n) {
|
|
188
|
+
ops.push({ op: 'removed', text: wordAt(a, i) });
|
|
189
|
+
i++;
|
|
190
|
+
}
|
|
191
|
+
while (j < m) {
|
|
192
|
+
ops.push({ op: 'added', text: wordAt(b, j) });
|
|
193
|
+
j++;
|
|
194
|
+
}
|
|
195
|
+
// Merge adjacent same-op runs, so "un mot" -> "un gros mot" reports one
|
|
196
|
+
// insertion of "gros " rather than a token at a time.
|
|
197
|
+
const merged = [];
|
|
198
|
+
for (const op of ops) {
|
|
199
|
+
const last = merged.at(-1);
|
|
200
|
+
if (last !== undefined && last.op === op.op) {
|
|
201
|
+
merged[merged.length - 1] = { op: last.op, text: last.text + op.text };
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
merged.push(op);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return merged;
|
|
208
|
+
}
|
|
209
|
+
function isRecord(value) {
|
|
210
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Plain text out of a `text` field (a string, returned as-is) or a `richText`
|
|
214
|
+
* document (contract A: an array of `block`/`media`/`hr` nodes — the last
|
|
215
|
+
* since fiche 42 task 2 — `@cogenta/blocks`'s `richTextDocumentSchema`).
|
|
216
|
+
* Returns `null` for anything else, including a
|
|
217
|
+
* shape that merely looks like a document — the piège this file's own
|
|
218
|
+
* comment warns about: "le portable-text est un arbre; comparer
|
|
219
|
+
* `JSON.stringify` produit du bruit", so an unrecognised node refuses rather
|
|
220
|
+
* than guesses.
|
|
221
|
+
*/
|
|
222
|
+
export function extractPlainText(value) {
|
|
223
|
+
if (typeof value === 'string')
|
|
224
|
+
return value;
|
|
225
|
+
if (!Array.isArray(value))
|
|
226
|
+
return null;
|
|
227
|
+
const parts = [];
|
|
228
|
+
for (const node of value) {
|
|
229
|
+
if (!isRecord(node))
|
|
230
|
+
return null;
|
|
231
|
+
if (node._type === 'media')
|
|
232
|
+
continue;
|
|
233
|
+
// A thematic break (fiche 42 task 2) carries no text, same as `media`.
|
|
234
|
+
if (node._type === 'hr')
|
|
235
|
+
continue;
|
|
236
|
+
if (node._type !== 'block' || !Array.isArray(node.children))
|
|
237
|
+
return null;
|
|
238
|
+
for (const child of node.children) {
|
|
239
|
+
if (!isRecord(child) || typeof child.text !== 'string')
|
|
240
|
+
return null;
|
|
241
|
+
parts.push(child.text);
|
|
242
|
+
}
|
|
243
|
+
parts.push('\n');
|
|
244
|
+
}
|
|
245
|
+
return parts.join('');
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Attaches a word-level diff to every `changed` field whose two sides both
|
|
249
|
+
* extract to plain text — never to `added`/`removed` fields (there is only
|
|
250
|
+
* one side to show) and never in place: `diffValues`/`diffContent` stay
|
|
251
|
+
* exactly as every existing caller already relies on them being.
|
|
252
|
+
*/
|
|
253
|
+
function enrichFieldChanges(fields) {
|
|
254
|
+
return fields.map((change) => {
|
|
255
|
+
if (change.change !== 'changed')
|
|
256
|
+
return change;
|
|
257
|
+
const before = extractPlainText(change.before);
|
|
258
|
+
const after = extractPlainText(change.after);
|
|
259
|
+
if (before === null || after === null || before === after)
|
|
260
|
+
return change;
|
|
261
|
+
return { ...change, words: diffWords(before, after) };
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
/** Same enrichment, walked into every block's own field changes as well. */
|
|
265
|
+
export function enrichWordDiffs(diff) {
|
|
266
|
+
return {
|
|
267
|
+
...diff,
|
|
268
|
+
fields: enrichFieldChanges(diff.fields),
|
|
269
|
+
blocks: diff.blocks.map((block) => ({ ...block, fields: enrichFieldChanges(block.fields) })),
|
|
270
|
+
};
|
|
271
|
+
}
|
|
124
272
|
//# sourceMappingURL=diff.js.map
|
package/dist/store/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/store/diff.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/store/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/store/index.d.ts
CHANGED
|
@@ -5,24 +5,58 @@
|
|
|
5
5
|
* going through `DatabaseHandle` from `@cogenta/core`. No dialect difference
|
|
6
6
|
* leaks past this folder, and no SQL is written outside it.
|
|
7
7
|
*/
|
|
8
|
+
export type { AdminThemeRecord, AdminThemeStore, AdminThemeStoreOptions, } from './admin-theme-store.js';
|
|
9
|
+
export { createAdminThemeStore } from './admin-theme-store.js';
|
|
10
|
+
export { ADMIN_THEME_OVERRIDES_LENGTH, ADMIN_THEME_SINGLETON_ID, ADMIN_THEME_TABLE, ensureAdminThemeTable, } from './admin-theme-tables.js';
|
|
11
|
+
export type { AdminThemeColorTokens, AdminThemeFontOption, AdminThemeOverrides, AdminThemeRadiusTokens, AdminThemeTemplate, AdminThemeTemplateId, } from './admin-theme-templates.js';
|
|
12
|
+
export { ADMIN_THEME_FONTS, ADMIN_THEME_TEMPLATE_IDS, ADMIN_THEME_TEMPLATES, adminThemeFontById, adminThemeOverridesSchema, adminThemeTemplateById, DEFAULT_ADMIN_THEME_TEMPLATE_ID, } from './admin-theme-templates.js';
|
|
8
13
|
export { booleanColumn, columnTypeFor, integerColumn, isColumnless, jsonColumn, onDeleteClause, textColumn, timestampColumn, uuidColumn, } from './columns.js';
|
|
9
14
|
export type { Cursor } from './cursor.js';
|
|
10
15
|
export { decodeCursor, encodeCursor } from './cursor.js';
|
|
11
|
-
export type { BlockChange, ChangeKind, ContentDiff, FieldChange } from './diff.js';
|
|
12
|
-
export { deepEqual, diffBlocks, diffBlockZones, diffContent, diffValues } from './diff.js';
|
|
16
|
+
export type { BlockChange, ChangeKind, ContentDiff, FieldChange, WordChange, WordOp, } from './diff.js';
|
|
17
|
+
export { deepEqual, diffBlocks, diffBlockZones, diffContent, diffValues, diffWords, enrichWordDiffs, extractPlainText, } from './diff.js';
|
|
13
18
|
export type { ContentLifecycleEvent, ContentLifecycleEventName, LifecycleEventsOptions, } from './lifecycle-events.js';
|
|
14
19
|
export { withLifecycleEvents } from './lifecycle-events.js';
|
|
15
|
-
export type {
|
|
20
|
+
export type { MaintenanceState, MaintenanceStore, MaintenanceStoreOptions, SetMaintenanceInput, } from './maintenance-store.js';
|
|
21
|
+
export { createMaintenanceStore, ensureMaintenanceTable, MAINTENANCE_TABLE, } from './maintenance-store.js';
|
|
22
|
+
export type { CreateMenuInput, CreateMenuItemInput, ListMenusOptions, Menu, MenuItem, MenuItemKind, MenuStore, MenuStoreOptions, ReorderUpdate as MenuReorderUpdate, UpdateMenuInput, UpdateMenuItemInput, } from './menu-store.js';
|
|
16
23
|
export { createMenuStore, MAX_MENU_DEPTH } from './menu-store.js';
|
|
17
|
-
export { ensureMenuTables, MENU_ITEM_PATH_LENGTH, MENU_TABLES } from './menu-tables.js';
|
|
24
|
+
export { ensureMenuTables, MENU_ITEM_PATH_LENGTH, MENU_LOCATION_LENGTH, MENU_TABLES, } from './menu-tables.js';
|
|
18
25
|
export { blocksTable, columnFor, entriesTable, isSystemColumn, relationTable, SYSTEM_COLUMNS, taxonomyTable, toSnakeCase, versionsTable, } from './naming.js';
|
|
26
|
+
export type { CreatePatternInput, ListPatternsOptions, Pattern, PatternBlock, PatternProvenanceDetail, PatternStore, PatternStoreOptions, UpdatePatternInput, } from './pattern-store.js';
|
|
27
|
+
export { createPatternStore } from './pattern-store.js';
|
|
28
|
+
export type { PatternKind } from './pattern-tables.js';
|
|
29
|
+
export { ensurePatternTables, PATTERN_CATEGORY_LENGTH, PATTERN_KINDS, PATTERN_NAME_LENGTH, PATTERN_TABLE, } from './pattern-tables.js';
|
|
19
30
|
export { withReadOnlyStore } from './read-only.js';
|
|
31
|
+
export type { RedirectTrackingOptions } from './redirect-tracking.js';
|
|
32
|
+
export { withRedirectTracking } from './redirect-tracking.js';
|
|
33
|
+
export type { ReviewTransitionRule } from './review-transitions.js';
|
|
34
|
+
export { nextReviewState, REVIEW_TRANSITION_TABLE } from './review-transitions.js';
|
|
35
|
+
export type { RolePermissionExportFile, RolePermissionExportRow, } from './role-permission-export.js';
|
|
36
|
+
export { parseRolePermissionExport, ROLE_PERMISSION_EXPORT_VERSION, serialiseRolePermissionExport, } from './role-permission-export.js';
|
|
37
|
+
export type { RolePermissionOverlay, RolePermissionOverrides } from './role-permission-overlay.js';
|
|
38
|
+
export { createRolePermissionOverlay } from './role-permission-overlay.js';
|
|
39
|
+
export type { RolePermissionOverrideRecord, RolePermissionStore, RolePermissionStoreOptions, RolePermissionTargetType, SetRolePermissionInput, } from './role-permission-store.js';
|
|
40
|
+
export { createRolePermissionStore } from './role-permission-store.js';
|
|
41
|
+
export { ensureRolePermissionTable, ROLE_PERMISSIONS_TABLE } from './role-permission-tables.js';
|
|
20
42
|
export type { ScheduledPublishEnqueueOptions } from './scheduled-publish-enqueue.js';
|
|
21
43
|
export { withScheduledPublishEnqueue } from './scheduled-publish-enqueue.js';
|
|
44
|
+
export type { ScheduledPublishFailure, ScheduledPublishFailureStore, } from './scheduled-publish-failures.js';
|
|
45
|
+
export { createScheduledPublishFailureStore, SCHEDULED_PUBLISH_FAILURES_TABLE, } from './scheduled-publish-failures.js';
|
|
46
|
+
export type { Schema21MigrationOptions } from './schema-2-1-migration.js';
|
|
47
|
+
export { schema21Migration } from './schema-2-1-migration.js';
|
|
22
48
|
export type { Schema2MigrationOptions } from './schema-2-migration.js';
|
|
23
49
|
export { schema2Migration } from './schema-2-migration.js';
|
|
50
|
+
export type { ConnectSearchConsoleInput, SearchConsoleConnectionStore, SearchConsoleConnectionStoreOptions, SearchConsoleConnectionSummary, } from './search-console-store.js';
|
|
51
|
+
export { createSearchConsoleConnectionStore } from './search-console-store.js';
|
|
52
|
+
export { ensureSearchConsoleConnectionTable, SEARCH_CONSOLE_CONNECTION_ID, SEARCH_CONSOLE_CONNECTION_TABLE, } from './search-console-tables.js';
|
|
24
53
|
export type { SearchIndexingOptions } from './search-indexing.js';
|
|
25
|
-
export { withSearchIndexing } from './search-indexing.js';
|
|
54
|
+
export { reindexAll, reindexEntry, withSearchIndexing } from './search-indexing.js';
|
|
55
|
+
export type { SiteSettingDefinition, SiteSettingGroup, SiteSettingScope, SiteSettingUiType, } from './site-settings-registry.js';
|
|
56
|
+
export { SITE_SETTING_GROUPS, SITE_SETTING_SCOPES, SITE_SETTING_UI_TYPES, SITE_SETTINGS_REGISTRY, siteSettingByKey, } from './site-settings-registry.js';
|
|
57
|
+
export type { SiteSettingRecord, SiteSettingsStore, SiteSettingsStoreOptions, } from './site-settings-store.js';
|
|
58
|
+
export { createSiteSettingsStore } from './site-settings-store.js';
|
|
59
|
+
export { ensureSiteSettingsTables, SITE_SETTING_VALUE_LENGTH, SITE_SETTINGS_SITE_SCOPE, SITE_SETTINGS_TABLE, } from './site-settings-tables.js';
|
|
26
60
|
export type { ContentStore, ContentStoreOptions } from './store.js';
|
|
27
61
|
export { createContentStore } from './store.js';
|
|
28
62
|
export type { RelationTarget } from './tables.js';
|
|
@@ -30,7 +64,11 @@ export { assertUsableFields, createSchemaTables, dropSchemaTables, orderByDepend
|
|
|
30
64
|
export { assertDepth, childPath, depthOf, isBelow, isWithin, MAX_TAXONOMY_DEPTH, rebasedPath, TAXONOMY_PATH_LENGTH, } from './taxonomy-path.js';
|
|
31
65
|
export type { CreateTermInput, ListTermsOptions, TaxonomyStore, TaxonomyStoreOptions, UpdateTermInput, } from './taxonomy-store.js';
|
|
32
66
|
export { createTaxonomyStore } from './taxonomy-store.js';
|
|
33
|
-
export type {
|
|
67
|
+
export type { CountTaxonomyUsageOptions, TermUsage } from './taxonomy-usage.js';
|
|
68
|
+
export { countTaxonomyUsage } from './taxonomy-usage.js';
|
|
69
|
+
export type { SetThemeOverridesInput, ThemeOverridesState, ThemeStore, ThemeStoreOptions, } from './theme-store.js';
|
|
70
|
+
export { createThemeStore, ensureThemeTable, THEME_TABLE } from './theme-store.js';
|
|
71
|
+
export type { BlockZones, ContentBlock, ContentEntry, ContentValues, CreateInput, DuplicateInput, EntryState, ListOptions, LocaleFallback, LocaleResolution, Page, PublishInput, PurgeReport, ReadOptions, ResolveLocaleOptions, SortField, SortOrder, StatusCounts, TrashFilter, TrashOptions, UpdateInput, VersionSummary, } from './types.js';
|
|
34
72
|
export type { NormalisedValues, NormaliseOptions } from './values.js';
|
|
35
73
|
export { decodeFieldValue, encodeFieldValue, normaliseBlocks, normaliseValues } from './values.js';
|
|
36
74
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,sBAAsB,GACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,yBAAyB,EACzB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,GACP,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,GACjB,MAAM,WAAW,CAAA;AAClB,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,aAAa,IAAI,iBAAiB,EAClC,eAAe,EACf,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,GACZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,aAAa,CAAA;AACpB,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZ,uBAAuB,EACvB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACb,mBAAmB,EACnB,aAAa,GACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAClF,YAAY,EACV,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,6BAA6B,CAAA;AACpC,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAA;AAC1E,YAAY,EACV,4BAA4B,EAC5B,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAC/F,YAAY,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAA;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAC5E,YAAY,EACV,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,kCAAkC,EAClC,gCAAgC,GACjC,MAAM,iCAAiC,CAAA;AACxC,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,YAAY,EACV,yBAAyB,EACzB,4BAA4B,EAC5B,mCAAmC,EACnC,8BAA8B,GAC/B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EACL,kCAAkC,EAClC,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,4BAA4B,CAAA;AACnC,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACnF,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,6BAA6B,CAAA;AACpC,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,WAAW,EACX,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,YAAY,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,UAAU,EACV,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAClF,YAAY,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/store/index.js
CHANGED
|
@@ -5,20 +5,41 @@
|
|
|
5
5
|
* going through `DatabaseHandle` from `@cogenta/core`. No dialect difference
|
|
6
6
|
* leaks past this folder, and no SQL is written outside it.
|
|
7
7
|
*/
|
|
8
|
+
export { createAdminThemeStore } from './admin-theme-store.js';
|
|
9
|
+
export { ADMIN_THEME_OVERRIDES_LENGTH, ADMIN_THEME_SINGLETON_ID, ADMIN_THEME_TABLE, ensureAdminThemeTable, } from './admin-theme-tables.js';
|
|
10
|
+
export { ADMIN_THEME_FONTS, ADMIN_THEME_TEMPLATE_IDS, ADMIN_THEME_TEMPLATES, adminThemeFontById, adminThemeOverridesSchema, adminThemeTemplateById, DEFAULT_ADMIN_THEME_TEMPLATE_ID, } from './admin-theme-templates.js';
|
|
8
11
|
export { booleanColumn, columnTypeFor, integerColumn, isColumnless, jsonColumn, onDeleteClause, textColumn, timestampColumn, uuidColumn, } from './columns.js';
|
|
9
12
|
export { decodeCursor, encodeCursor } from './cursor.js';
|
|
10
|
-
export { deepEqual, diffBlocks, diffBlockZones, diffContent, diffValues } from './diff.js';
|
|
13
|
+
export { deepEqual, diffBlocks, diffBlockZones, diffContent, diffValues, diffWords, enrichWordDiffs, extractPlainText, } from './diff.js';
|
|
11
14
|
export { withLifecycleEvents } from './lifecycle-events.js';
|
|
15
|
+
export { createMaintenanceStore, ensureMaintenanceTable, MAINTENANCE_TABLE, } from './maintenance-store.js';
|
|
12
16
|
export { createMenuStore, MAX_MENU_DEPTH } from './menu-store.js';
|
|
13
|
-
export { ensureMenuTables, MENU_ITEM_PATH_LENGTH, MENU_TABLES } from './menu-tables.js';
|
|
17
|
+
export { ensureMenuTables, MENU_ITEM_PATH_LENGTH, MENU_LOCATION_LENGTH, MENU_TABLES, } from './menu-tables.js';
|
|
14
18
|
export { blocksTable, columnFor, entriesTable, isSystemColumn, relationTable, SYSTEM_COLUMNS, taxonomyTable, toSnakeCase, versionsTable, } from './naming.js';
|
|
19
|
+
export { createPatternStore } from './pattern-store.js';
|
|
20
|
+
export { ensurePatternTables, PATTERN_CATEGORY_LENGTH, PATTERN_KINDS, PATTERN_NAME_LENGTH, PATTERN_TABLE, } from './pattern-tables.js';
|
|
15
21
|
export { withReadOnlyStore } from './read-only.js';
|
|
22
|
+
export { withRedirectTracking } from './redirect-tracking.js';
|
|
23
|
+
export { nextReviewState, REVIEW_TRANSITION_TABLE } from './review-transitions.js';
|
|
24
|
+
export { parseRolePermissionExport, ROLE_PERMISSION_EXPORT_VERSION, serialiseRolePermissionExport, } from './role-permission-export.js';
|
|
25
|
+
export { createRolePermissionOverlay } from './role-permission-overlay.js';
|
|
26
|
+
export { createRolePermissionStore } from './role-permission-store.js';
|
|
27
|
+
export { ensureRolePermissionTable, ROLE_PERMISSIONS_TABLE } from './role-permission-tables.js';
|
|
16
28
|
export { withScheduledPublishEnqueue } from './scheduled-publish-enqueue.js';
|
|
29
|
+
export { createScheduledPublishFailureStore, SCHEDULED_PUBLISH_FAILURES_TABLE, } from './scheduled-publish-failures.js';
|
|
30
|
+
export { schema21Migration } from './schema-2-1-migration.js';
|
|
17
31
|
export { schema2Migration } from './schema-2-migration.js';
|
|
18
|
-
export {
|
|
32
|
+
export { createSearchConsoleConnectionStore } from './search-console-store.js';
|
|
33
|
+
export { ensureSearchConsoleConnectionTable, SEARCH_CONSOLE_CONNECTION_ID, SEARCH_CONSOLE_CONNECTION_TABLE, } from './search-console-tables.js';
|
|
34
|
+
export { reindexAll, reindexEntry, withSearchIndexing } from './search-indexing.js';
|
|
35
|
+
export { SITE_SETTING_GROUPS, SITE_SETTING_SCOPES, SITE_SETTING_UI_TYPES, SITE_SETTINGS_REGISTRY, siteSettingByKey, } from './site-settings-registry.js';
|
|
36
|
+
export { createSiteSettingsStore } from './site-settings-store.js';
|
|
37
|
+
export { ensureSiteSettingsTables, SITE_SETTING_VALUE_LENGTH, SITE_SETTINGS_SITE_SCOPE, SITE_SETTINGS_TABLE, } from './site-settings-tables.js';
|
|
19
38
|
export { createContentStore } from './store.js';
|
|
20
39
|
export { assertUsableFields, createSchemaTables, dropSchemaTables, orderByDependency, relationsOf, } from './tables.js';
|
|
21
40
|
export { assertDepth, childPath, depthOf, isBelow, isWithin, MAX_TAXONOMY_DEPTH, rebasedPath, TAXONOMY_PATH_LENGTH, } from './taxonomy-path.js';
|
|
22
41
|
export { createTaxonomyStore } from './taxonomy-store.js';
|
|
42
|
+
export { countTaxonomyUsage } from './taxonomy-usage.js';
|
|
43
|
+
export { createThemeStore, ensureThemeTable, THEME_TABLE } from './theme-store.js';
|
|
23
44
|
export { decodeFieldValue, encodeFieldValue, normaliseBlocks, normaliseValues } from './values.js';
|
|
24
45
|
//# sourceMappingURL=index.js.map
|
package/dist/store/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type DatabaseHandle } from '@cogenta/core';
|
|
2
|
+
/**
|
|
3
|
+
* Maintenance mode (fiche 24 task 5).
|
|
4
|
+
*
|
|
5
|
+
* One row, updated in place — the same shape as a feature flag, not content
|
|
6
|
+
* (contract A): no locale, no version, no trash. `cogenta serve`'s request
|
|
7
|
+
* handler reads it on every request before anything else runs, which is why
|
|
8
|
+
* `get()` is a single read by primary key rather than a query that could
|
|
9
|
+
* ever return more than one row.
|
|
10
|
+
*/
|
|
11
|
+
export declare const MAINTENANCE_TABLE = "cogenta_maintenance";
|
|
12
|
+
export interface MaintenanceState {
|
|
13
|
+
readonly enabled: boolean;
|
|
14
|
+
/** Shown on the public wait page. `null` uses the built-in default text. */
|
|
15
|
+
readonly message: string | null;
|
|
16
|
+
readonly updatedAt: string;
|
|
17
|
+
readonly updatedBy: string | null;
|
|
18
|
+
}
|
|
19
|
+
export interface SetMaintenanceInput {
|
|
20
|
+
readonly enabled: boolean;
|
|
21
|
+
readonly message?: string | null;
|
|
22
|
+
readonly updatedBy?: string | null;
|
|
23
|
+
}
|
|
24
|
+
export interface MaintenanceStoreOptions {
|
|
25
|
+
readonly db: DatabaseHandle;
|
|
26
|
+
readonly now?: () => Date;
|
|
27
|
+
}
|
|
28
|
+
export interface MaintenanceStore {
|
|
29
|
+
get(): Promise<MaintenanceState>;
|
|
30
|
+
set(input: SetMaintenanceInput): Promise<MaintenanceState>;
|
|
31
|
+
}
|
|
32
|
+
export declare function ensureMaintenanceTable(db: DatabaseHandle): Promise<void>;
|
|
33
|
+
export declare function createMaintenanceStore(options: MaintenanceStoreOptions): MaintenanceStore;
|
|
34
|
+
//# sourceMappingURL=maintenance-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintenance-store.d.ts","sourceRoot":"","sources":["../../src/store/maintenance-store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAKpB,MAAM,eAAe,CAAA;AAGtB;;;;;;;;GAQG;AAEH,eAAO,MAAM,iBAAiB,wBAAwB,CAAA;AAItD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAA;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAChC,GAAG,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAC3D;AAQD,wBAAsB,sBAAsB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAY9E;AAyBD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,gBAAgB,CAsDzF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { identifier, sql, } from '@cogenta/core';
|
|
2
|
+
import { booleanColumn, textColumn, timestampColumn } from './columns.js';
|
|
3
|
+
/**
|
|
4
|
+
* Maintenance mode (fiche 24 task 5).
|
|
5
|
+
*
|
|
6
|
+
* One row, updated in place — the same shape as a feature flag, not content
|
|
7
|
+
* (contract A): no locale, no version, no trash. `cogenta serve`'s request
|
|
8
|
+
* handler reads it on every request before anything else runs, which is why
|
|
9
|
+
* `get()` is a single read by primary key rather than a query that could
|
|
10
|
+
* ever return more than one row.
|
|
11
|
+
*/
|
|
12
|
+
export const MAINTENANCE_TABLE = 'cogenta_maintenance';
|
|
13
|
+
const ROW_ID = 'site';
|
|
14
|
+
const DEFAULT_STATE = {
|
|
15
|
+
enabled: false,
|
|
16
|
+
message: null,
|
|
17
|
+
updatedBy: null,
|
|
18
|
+
};
|
|
19
|
+
export async function ensureMaintenanceTable(db) {
|
|
20
|
+
const dialect = db.dialect;
|
|
21
|
+
const table = identifier(MAINTENANCE_TABLE, dialect);
|
|
22
|
+
const statement = sql `create table if not exists ${table} (
|
|
23
|
+
${identifier('id', dialect)} ${textColumn(dialect, 16)} not null primary key,
|
|
24
|
+
${identifier('enabled', dialect)} ${booleanColumn(dialect)} not null,
|
|
25
|
+
${identifier('message', dialect)} ${textColumn(dialect, 2000)},
|
|
26
|
+
${identifier('updated_at', dialect)} ${timestampColumn(dialect)} not null,
|
|
27
|
+
${identifier('updated_by', dialect)} ${textColumn(dialect, 128)}
|
|
28
|
+
)`;
|
|
29
|
+
await db.query(statement);
|
|
30
|
+
}
|
|
31
|
+
function text(value) {
|
|
32
|
+
return typeof value === 'string' ? value : String(value);
|
|
33
|
+
}
|
|
34
|
+
function nullableText(value) {
|
|
35
|
+
return value === null || value === undefined ? null : text(value);
|
|
36
|
+
}
|
|
37
|
+
function toBool(value) {
|
|
38
|
+
return value === true || value === 'true' || value === 1 || value === '1';
|
|
39
|
+
}
|
|
40
|
+
function toState(row) {
|
|
41
|
+
return {
|
|
42
|
+
enabled: toBool(row['enabled']),
|
|
43
|
+
message: nullableText(row['message']),
|
|
44
|
+
updatedAt: text(row['updated_at']),
|
|
45
|
+
updatedBy: nullableText(row['updated_by']),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function createMaintenanceStore(options) {
|
|
49
|
+
const { db } = options;
|
|
50
|
+
const dialect = db.dialect;
|
|
51
|
+
const now = options.now ?? (() => new Date());
|
|
52
|
+
const table = identifier(MAINTENANCE_TABLE, dialect);
|
|
53
|
+
const idColumn = identifier('id', dialect);
|
|
54
|
+
async function rowOf(tx) {
|
|
55
|
+
const found = await tx.query(sql `select * from ${table} where ${idColumn} = ${ROW_ID}`);
|
|
56
|
+
return found.rows[0] ?? null;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
get: async () => {
|
|
60
|
+
const row = await rowOf(db);
|
|
61
|
+
if (row === null)
|
|
62
|
+
return { ...DEFAULT_STATE, updatedAt: now().toISOString() };
|
|
63
|
+
return toState(row);
|
|
64
|
+
},
|
|
65
|
+
set: async (input) => db.transaction(async (tx) => {
|
|
66
|
+
const at = now().toISOString();
|
|
67
|
+
const existing = await rowOf(tx);
|
|
68
|
+
const enabledValue = input.enabled ? 'true' : 'false';
|
|
69
|
+
const message = input.message === undefined ? null : input.message;
|
|
70
|
+
const updatedBy = input.updatedBy ?? null;
|
|
71
|
+
if (existing === null) {
|
|
72
|
+
await tx.query(sql `insert into ${table} (
|
|
73
|
+
${idColumn}, ${identifier('enabled', dialect)}, ${identifier('message', dialect)},
|
|
74
|
+
${identifier('updated_at', dialect)}, ${identifier('updated_by', dialect)}
|
|
75
|
+
) values (${ROW_ID}, ${enabledValue}, ${message}, ${at}, ${updatedBy})`);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
await tx.query(sql `update ${table}
|
|
79
|
+
set ${identifier('enabled', dialect)} = ${enabledValue},
|
|
80
|
+
${identifier('message', dialect)} = ${message},
|
|
81
|
+
${identifier('updated_at', dialect)} = ${at},
|
|
82
|
+
${identifier('updated_by', dialect)} = ${updatedBy}
|
|
83
|
+
where ${idColumn} = ${ROW_ID}`);
|
|
84
|
+
}
|
|
85
|
+
const after = await rowOf(tx);
|
|
86
|
+
return after === null
|
|
87
|
+
? { ...DEFAULT_STATE, enabled: input.enabled, updatedAt: at }
|
|
88
|
+
: toState(after);
|
|
89
|
+
}, { immediate: true }),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=maintenance-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintenance-store.js","sourceRoot":"","sources":["../../src/store/maintenance-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,13 @@ import { type DatabaseHandle } from '@cogenta/core';
|
|
|
8
8
|
* `TaxonomyStore`: a menu is not declared in the site's schema, it is created
|
|
9
9
|
* and edited at runtime from the admin, so it gets one fixed pair of tables
|
|
10
10
|
* (`menu-tables.ts`) rather than a table per declared name.
|
|
11
|
+
*
|
|
12
|
+
* A menu is deliberately **not** content (contract A): it carries a `locale`
|
|
13
|
+
* and nothing else contract A gives an entry — no `version`, no trash, no
|
|
14
|
+
* `translationOf`. Grafting that model on by symmetry would be solving a
|
|
15
|
+
* problem navigation does not have.
|
|
11
16
|
*/
|
|
12
|
-
export type MenuItemKind = 'entry' | 'url' | 'submenu-placeholder';
|
|
17
|
+
export type MenuItemKind = 'entry' | 'url' | 'submenu-placeholder' | 'taxonomy' | 'home';
|
|
13
18
|
/** Deep enough for any real navigation; the path column is bounded to match. */
|
|
14
19
|
export declare const MAX_MENU_DEPTH = 8;
|
|
15
20
|
export interface Menu {
|
|
@@ -17,6 +22,16 @@ export interface Menu {
|
|
|
17
22
|
readonly name: string;
|
|
18
23
|
readonly locale: string;
|
|
19
24
|
readonly label: string;
|
|
25
|
+
/**
|
|
26
|
+
* Where this menu renders on the public site (`primary`, `footer`, …), or
|
|
27
|
+
* `null` while it is not slotted anywhere (fiche 09, task 3). An arbitrary
|
|
28
|
+
* string the *menu* carries, not a value drawn from a vocabulary this
|
|
29
|
+
* package or contract D declares — a theme decides what locations it
|
|
30
|
+
* offers and a site assigns menus to them from the admin; a second theme
|
|
31
|
+
* with a different set of locations needs no migration, since nothing here
|
|
32
|
+
* ever validates this string against a known set.
|
|
33
|
+
*/
|
|
34
|
+
readonly location: string | null;
|
|
20
35
|
readonly createdAt: string;
|
|
21
36
|
readonly updatedAt: string;
|
|
22
37
|
}
|
|
@@ -28,7 +43,13 @@ export interface MenuItem {
|
|
|
28
43
|
readonly kind: MenuItemKind;
|
|
29
44
|
readonly targetCollection: string | null;
|
|
30
45
|
readonly targetEntryId: string | null;
|
|
46
|
+
/** The taxonomy a `kind: 'taxonomy'` item links to. */
|
|
47
|
+
readonly targetTaxonomy: string | null;
|
|
48
|
+
/** The term a `kind: 'taxonomy'` item links to. */
|
|
49
|
+
readonly targetTermId: string | null;
|
|
31
50
|
readonly url: string | null;
|
|
51
|
+
/** The HTML `title` attribute — a tooltip, never this item's `label`. */
|
|
52
|
+
readonly title: string | null;
|
|
32
53
|
readonly position: number;
|
|
33
54
|
readonly depth: number;
|
|
34
55
|
readonly openInNewTab: boolean;
|
|
@@ -40,9 +61,12 @@ export interface CreateMenuInput {
|
|
|
40
61
|
readonly name: string;
|
|
41
62
|
readonly locale: string;
|
|
42
63
|
readonly label: string;
|
|
64
|
+
readonly location?: string | null;
|
|
43
65
|
}
|
|
44
66
|
export interface UpdateMenuInput {
|
|
45
67
|
readonly label?: string;
|
|
68
|
+
/** Absent leaves it untouched; `null` clears it; a string reassigns it. */
|
|
69
|
+
readonly location?: string | null;
|
|
46
70
|
}
|
|
47
71
|
export interface ListMenusOptions {
|
|
48
72
|
readonly locale?: string;
|
|
@@ -54,7 +78,10 @@ export interface CreateMenuItemInput {
|
|
|
54
78
|
readonly parent?: string | null;
|
|
55
79
|
readonly targetCollection?: string | null;
|
|
56
80
|
readonly targetEntryId?: string | null;
|
|
81
|
+
readonly targetTaxonomy?: string | null;
|
|
82
|
+
readonly targetTermId?: string | null;
|
|
57
83
|
readonly url?: string | null;
|
|
84
|
+
readonly title?: string | null;
|
|
58
85
|
readonly position?: number;
|
|
59
86
|
readonly openInNewTab?: boolean;
|
|
60
87
|
}
|
|
@@ -63,9 +90,18 @@ export interface UpdateMenuItemInput {
|
|
|
63
90
|
readonly kind?: MenuItemKind;
|
|
64
91
|
readonly targetCollection?: string | null;
|
|
65
92
|
readonly targetEntryId?: string | null;
|
|
93
|
+
readonly targetTaxonomy?: string | null;
|
|
94
|
+
readonly targetTermId?: string | null;
|
|
66
95
|
readonly url?: string | null;
|
|
96
|
+
readonly title?: string | null;
|
|
67
97
|
readonly openInNewTab?: boolean;
|
|
68
98
|
}
|
|
99
|
+
/** One item's place in the tree, as `reorderItems` accepts it. */
|
|
100
|
+
export interface ReorderUpdate {
|
|
101
|
+
readonly id: string;
|
|
102
|
+
readonly parent: string | null;
|
|
103
|
+
readonly position: number;
|
|
104
|
+
}
|
|
69
105
|
export interface MenuStoreOptions {
|
|
70
106
|
readonly db: DatabaseHandle;
|
|
71
107
|
/** Injectable so tests can pin time; nothing else should pass it. */
|
|
@@ -76,6 +112,8 @@ export interface MenuStore {
|
|
|
76
112
|
create(input: CreateMenuInput): Promise<Menu>;
|
|
77
113
|
read(id: string): Promise<Menu | null>;
|
|
78
114
|
byName(name: string, locale: string): Promise<Menu | null>;
|
|
115
|
+
/** The menu assigned to this location, for this locale — at most one, enforced at write time. */
|
|
116
|
+
byLocation(location: string, locale: string): Promise<Menu | null>;
|
|
79
117
|
update(id: string, input: UpdateMenuInput): Promise<Menu>;
|
|
80
118
|
/** Refuses while the menu still has items, unless `cascade` is asked for. */
|
|
81
119
|
delete(id: string, options?: {
|
|
@@ -89,6 +127,15 @@ export interface MenuStore {
|
|
|
89
127
|
moveItem(id: string, parent: string | null): Promise<MenuItem>;
|
|
90
128
|
/** Swaps this item's position with the sibling immediately before/after it. */
|
|
91
129
|
reorderItem(id: string, direction: 'up' | 'down'): Promise<MenuItem>;
|
|
130
|
+
/**
|
|
131
|
+
* Rewrites `parent`/`position` for any number of items of this menu, in
|
|
132
|
+
* one transaction — the batch form task 2 asks for, so a drag-and-drop
|
|
133
|
+
* session (possibly touching a moved item, its old siblings and its new
|
|
134
|
+
* siblings at once) commits or fails as a single unit. An item of the
|
|
135
|
+
* menu left out of `updates` keeps its own `parent`/`position`, but its
|
|
136
|
+
* stored `path` is still rewritten if one of its ancestors moved.
|
|
137
|
+
*/
|
|
138
|
+
reorderItems(menuId: string, updates: readonly ReorderUpdate[]): Promise<readonly MenuItem[]>;
|
|
92
139
|
deleteItem(id: string, options?: {
|
|
93
140
|
readonly cascade?: boolean;
|
|
94
141
|
}): Promise<boolean>;
|