@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.
Files changed (193) hide show
  1. package/dist/define-collection.d.ts.map +1 -1
  2. package/dist/define-collection.js +53 -3
  3. package/dist/define-collection.js.map +1 -1
  4. package/dist/generate-types.d.ts.map +1 -1
  5. package/dist/generate-types.js +6 -1
  6. package/dist/generate-types.js.map +1 -1
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/media-usage.d.ts +56 -0
  12. package/dist/media-usage.d.ts.map +1 -0
  13. package/dist/media-usage.js +89 -0
  14. package/dist/media-usage.js.map +1 -0
  15. package/dist/rich-text.d.ts +28 -2
  16. package/dist/rich-text.d.ts.map +1 -1
  17. package/dist/rich-text.js +26 -3
  18. package/dist/rich-text.js.map +1 -1
  19. package/dist/routing/index.d.ts +5 -1
  20. package/dist/routing/index.d.ts.map +1 -1
  21. package/dist/routing/index.js +2 -0
  22. package/dist/routing/index.js.map +1 -1
  23. package/dist/routing/not-found-log.d.ts +78 -0
  24. package/dist/routing/not-found-log.d.ts.map +1 -0
  25. package/dist/routing/not-found-log.js +153 -0
  26. package/dist/routing/not-found-log.js.map +1 -0
  27. package/dist/routing/redirect-patterns.d.ts +61 -0
  28. package/dist/routing/redirect-patterns.d.ts.map +1 -0
  29. package/dist/routing/redirect-patterns.js +173 -0
  30. package/dist/routing/redirect-patterns.js.map +1 -0
  31. package/dist/routing/redirects.d.ts +27 -4
  32. package/dist/routing/redirects.d.ts.map +1 -1
  33. package/dist/routing/redirects.js +160 -48
  34. package/dist/routing/redirects.js.map +1 -1
  35. package/dist/scheduling/index.d.ts +2 -0
  36. package/dist/scheduling/index.d.ts.map +1 -1
  37. package/dist/scheduling/index.js +1 -0
  38. package/dist/scheduling/index.js.map +1 -1
  39. package/dist/scheduling/registry.d.ts +147 -0
  40. package/dist/scheduling/registry.d.ts.map +1 -0
  41. package/dist/scheduling/registry.js +318 -0
  42. package/dist/scheduling/registry.js.map +1 -0
  43. package/dist/search/extract.d.ts +24 -0
  44. package/dist/search/extract.d.ts.map +1 -1
  45. package/dist/search/extract.js +63 -8
  46. package/dist/search/extract.js.map +1 -1
  47. package/dist/search/index.d.ts +2 -1
  48. package/dist/search/index.d.ts.map +1 -1
  49. package/dist/search/index.js +1 -9
  50. package/dist/search/index.js.map +1 -1
  51. package/dist/store/admin-theme-store.d.ts +26 -0
  52. package/dist/store/admin-theme-store.d.ts.map +1 -0
  53. package/dist/store/admin-theme-store.js +81 -0
  54. package/dist/store/admin-theme-store.js.map +1 -0
  55. package/dist/store/admin-theme-tables.d.ts +24 -0
  56. package/dist/store/admin-theme-tables.d.ts.map +1 -0
  57. package/dist/store/admin-theme-tables.js +41 -0
  58. package/dist/store/admin-theme-tables.js.map +1 -0
  59. package/dist/store/admin-theme-templates.d.ts +135 -0
  60. package/dist/store/admin-theme-templates.d.ts.map +1 -0
  61. package/dist/store/admin-theme-templates.js +217 -0
  62. package/dist/store/admin-theme-templates.js.map +1 -0
  63. package/dist/store/columns.d.ts.map +1 -1
  64. package/dist/store/columns.js +8 -2
  65. package/dist/store/columns.js.map +1 -1
  66. package/dist/store/diff.d.ts +40 -0
  67. package/dist/store/diff.d.ts.map +1 -1
  68. package/dist/store/diff.js +148 -0
  69. package/dist/store/diff.js.map +1 -1
  70. package/dist/store/index.d.ts +47 -4
  71. package/dist/store/index.d.ts.map +1 -1
  72. package/dist/store/index.js +26 -2
  73. package/dist/store/index.js.map +1 -1
  74. package/dist/store/maintenance-store.d.ts +34 -0
  75. package/dist/store/maintenance-store.d.ts.map +1 -0
  76. package/dist/store/maintenance-store.js +92 -0
  77. package/dist/store/maintenance-store.js.map +1 -0
  78. package/dist/store/menu-store.d.ts +146 -0
  79. package/dist/store/menu-store.d.ts.map +1 -0
  80. package/dist/store/menu-store.js +565 -0
  81. package/dist/store/menu-store.js.map +1 -0
  82. package/dist/store/menu-tables.d.ts +38 -0
  83. package/dist/store/menu-tables.d.ts.map +1 -0
  84. package/dist/store/menu-tables.js +117 -0
  85. package/dist/store/menu-tables.js.map +1 -0
  86. package/dist/store/naming.d.ts +1 -1
  87. package/dist/store/naming.d.ts.map +1 -1
  88. package/dist/store/naming.js +2 -0
  89. package/dist/store/naming.js.map +1 -1
  90. package/dist/store/pattern-store.d.ts +75 -0
  91. package/dist/store/pattern-store.d.ts.map +1 -0
  92. package/dist/store/pattern-store.js +118 -0
  93. package/dist/store/pattern-store.js.map +1 -0
  94. package/dist/store/pattern-tables.d.ts +29 -0
  95. package/dist/store/pattern-tables.d.ts.map +1 -0
  96. package/dist/store/pattern-tables.js +53 -0
  97. package/dist/store/pattern-tables.js.map +1 -0
  98. package/dist/store/read-only.d.ts +3 -3
  99. package/dist/store/read-only.d.ts.map +1 -1
  100. package/dist/store/read-only.js +4 -3
  101. package/dist/store/read-only.js.map +1 -1
  102. package/dist/store/redirect-tracking.d.ts +50 -0
  103. package/dist/store/redirect-tracking.d.ts.map +1 -0
  104. package/dist/store/redirect-tracking.js +91 -0
  105. package/dist/store/redirect-tracking.js.map +1 -0
  106. package/dist/store/review-transitions.d.ts +34 -0
  107. package/dist/store/review-transitions.d.ts.map +1 -0
  108. package/dist/store/review-transitions.js +51 -0
  109. package/dist/store/review-transitions.js.map +1 -0
  110. package/dist/store/role-permission-export.d.ts +22 -0
  111. package/dist/store/role-permission-export.d.ts.map +1 -0
  112. package/dist/store/role-permission-export.js +0 -0
  113. package/dist/store/role-permission-export.js.map +1 -0
  114. package/dist/store/role-permission-overlay.d.ts +27 -0
  115. package/dist/store/role-permission-overlay.d.ts.map +1 -0
  116. package/dist/store/role-permission-overlay.js +0 -0
  117. package/dist/store/role-permission-overlay.js.map +1 -0
  118. package/dist/store/role-permission-store.d.ts +72 -0
  119. package/dist/store/role-permission-store.d.ts.map +1 -0
  120. package/dist/store/role-permission-store.js +148 -0
  121. package/dist/store/role-permission-store.js.map +1 -0
  122. package/dist/store/role-permission-tables.d.ts +27 -0
  123. package/dist/store/role-permission-tables.d.ts.map +1 -0
  124. package/dist/store/role-permission-tables.js +52 -0
  125. package/dist/store/role-permission-tables.js.map +1 -0
  126. package/dist/store/scheduled-publish-enqueue.d.ts +37 -0
  127. package/dist/store/scheduled-publish-enqueue.d.ts.map +1 -0
  128. package/dist/store/scheduled-publish-enqueue.js +51 -0
  129. package/dist/store/scheduled-publish-enqueue.js.map +1 -0
  130. package/dist/store/scheduled-publish-failures.d.ts +36 -0
  131. package/dist/store/scheduled-publish-failures.d.ts.map +1 -0
  132. package/dist/store/scheduled-publish-failures.js +67 -0
  133. package/dist/store/scheduled-publish-failures.js.map +1 -0
  134. package/dist/store/schema-2-1-migration.d.ts +29 -0
  135. package/dist/store/schema-2-1-migration.d.ts.map +1 -0
  136. package/dist/store/schema-2-1-migration.js +71 -0
  137. package/dist/store/schema-2-1-migration.js.map +1 -0
  138. package/dist/store/search-console-store.d.ts +44 -0
  139. package/dist/store/search-console-store.d.ts.map +1 -0
  140. package/dist/store/search-console-store.js +90 -0
  141. package/dist/store/search-console-store.js.map +1 -0
  142. package/dist/store/search-console-tables.d.ts +14 -0
  143. package/dist/store/search-console-tables.d.ts.map +1 -0
  144. package/dist/store/search-console-tables.js +29 -0
  145. package/dist/store/search-console-tables.js.map +1 -0
  146. package/dist/store/search-indexing.d.ts +36 -0
  147. package/dist/store/search-indexing.d.ts.map +1 -1
  148. package/dist/store/search-indexing.js +33 -0
  149. package/dist/store/search-indexing.js.map +1 -1
  150. package/dist/store/site-settings-registry.d.ts +164 -0
  151. package/dist/store/site-settings-registry.d.ts.map +1 -0
  152. package/dist/store/site-settings-registry.js +1160 -0
  153. package/dist/store/site-settings-registry.js.map +1 -0
  154. package/dist/store/site-settings-store.d.ts +42 -0
  155. package/dist/store/site-settings-store.d.ts.map +1 -0
  156. package/dist/store/site-settings-store.js +97 -0
  157. package/dist/store/site-settings-store.js.map +1 -0
  158. package/dist/store/site-settings-tables.d.ts +29 -0
  159. package/dist/store/site-settings-tables.d.ts.map +1 -0
  160. package/dist/store/site-settings-tables.js +48 -0
  161. package/dist/store/site-settings-tables.js.map +1 -0
  162. package/dist/store/store.d.ts +57 -2
  163. package/dist/store/store.d.ts.map +1 -1
  164. package/dist/store/store.js +278 -37
  165. package/dist/store/store.js.map +1 -1
  166. package/dist/store/tables.d.ts.map +1 -1
  167. package/dist/store/tables.js +11 -0
  168. package/dist/store/tables.js.map +1 -1
  169. package/dist/store/taxonomy-store.d.ts.map +1 -1
  170. package/dist/store/taxonomy-store.js +90 -39
  171. package/dist/store/taxonomy-store.js.map +1 -1
  172. package/dist/store/taxonomy-usage.d.ts +47 -0
  173. package/dist/store/taxonomy-usage.d.ts.map +1 -0
  174. package/dist/store/taxonomy-usage.js +101 -0
  175. package/dist/store/taxonomy-usage.js.map +1 -0
  176. package/dist/store/theme-store.d.ts +73 -0
  177. package/dist/store/theme-store.d.ts.map +1 -0
  178. package/dist/store/theme-store.js +193 -0
  179. package/dist/store/theme-store.js.map +1 -0
  180. package/dist/store/types.d.ts +36 -1
  181. package/dist/store/types.d.ts.map +1 -1
  182. package/dist/store/values.d.ts.map +1 -1
  183. package/dist/store/values.js +28 -1
  184. package/dist/store/values.js.map +1 -1
  185. package/dist/system-fields.d.ts +8 -1
  186. package/dist/system-fields.d.ts.map +1 -1
  187. package/dist/system-fields.js +14 -1
  188. package/dist/system-fields.js.map +1 -1
  189. package/dist/types.d.ts +54 -1
  190. package/dist/types.d.ts.map +1 -1
  191. package/dist/types.js +21 -0
  192. package/dist/types.js.map +1 -1
  193. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/store/diff.ts"],"names":[],"mappings":"AAAA,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;CACxB;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"}
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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/store/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/store/diff.ts"],"names":[],"mappings":"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"}
@@ -5,19 +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';
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';
23
+ export { createMenuStore, MAX_MENU_DEPTH } from './menu-store.js';
24
+ export { ensureMenuTables, MENU_ITEM_PATH_LENGTH, MENU_LOCATION_LENGTH, MENU_TABLES, } from './menu-tables.js';
15
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';
16
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';
42
+ export type { ScheduledPublishEnqueueOptions } from './scheduled-publish-enqueue.js';
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';
17
48
  export type { Schema2MigrationOptions } from './schema-2-migration.js';
18
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';
19
53
  export type { SearchIndexingOptions } from './search-indexing.js';
20
- 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';
21
60
  export type { ContentStore, ContentStoreOptions } from './store.js';
22
61
  export { createContentStore } from './store.js';
23
62
  export type { RelationTarget } from './tables.js';
@@ -25,7 +64,11 @@ export { assertUsableFields, createSchemaTables, dropSchemaTables, orderByDepend
25
64
  export { assertDepth, childPath, depthOf, isBelow, isWithin, MAX_TAXONOMY_DEPTH, rebasedPath, TAXONOMY_PATH_LENGTH, } from './taxonomy-path.js';
26
65
  export type { CreateTermInput, ListTermsOptions, TaxonomyStore, TaxonomyStoreOptions, UpdateTermInput, } from './taxonomy-store.js';
27
66
  export { createTaxonomyStore } from './taxonomy-store.js';
28
- export type { BlockZones, ContentBlock, ContentEntry, ContentValues, CreateInput, DuplicateInput, EntryState, ListOptions, LocaleFallback, LocaleResolution, Page, PublishInput, PurgeReport, ReadOptions, ResolveLocaleOptions, SortField, SortOrder, TrashFilter, TrashOptions, UpdateInput, VersionSummary, } from './types.js';
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';
29
72
  export type { NormalisedValues, NormaliseOptions } from './values.js';
30
73
  export { decodeFieldValue, encodeFieldValue, normaliseBlocks, normaliseValues } from './values.js';
31
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,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAClF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC1F,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,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,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,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"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"}
@@ -5,17 +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';
16
+ export { createMenuStore, MAX_MENU_DEPTH } from './menu-store.js';
17
+ export { ensureMenuTables, MENU_ITEM_PATH_LENGTH, MENU_LOCATION_LENGTH, MENU_TABLES, } from './menu-tables.js';
12
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';
13
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';
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';
14
31
  export { schema2Migration } from './schema-2-migration.js';
15
- export { withSearchIndexing } from './search-indexing.js';
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';
16
38
  export { createContentStore } from './store.js';
17
39
  export { assertUsableFields, createSchemaTables, dropSchemaTables, orderByDependency, relationsOf, } from './tables.js';
18
40
  export { assertDepth, childPath, depthOf, isBelow, isWithin, MAX_TAXONOMY_DEPTH, rebasedPath, TAXONOMY_PATH_LENGTH, } from './taxonomy-path.js';
19
41
  export { createTaxonomyStore } from './taxonomy-store.js';
42
+ export { countTaxonomyUsage } from './taxonomy-usage.js';
43
+ export { createThemeStore, ensureThemeTable, THEME_TABLE } from './theme-store.js';
20
44
  export { decodeFieldValue, encodeFieldValue, normaliseBlocks, normaliseValues } from './values.js';
21
45
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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;AAErB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAM1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE/C,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;AAQ3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAyBzD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
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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"}