@cogenta/schema 0.1.0

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 (169) hide show
  1. package/dist/define-collection.d.ts +8 -0
  2. package/dist/define-collection.d.ts.map +1 -0
  3. package/dist/define-collection.js +311 -0
  4. package/dist/define-collection.js.map +1 -0
  5. package/dist/errors.d.ts +16 -0
  6. package/dist/errors.d.ts.map +1 -0
  7. package/dist/errors.js +18 -0
  8. package/dist/errors.js.map +1 -0
  9. package/dist/fields.d.ts +117 -0
  10. package/dist/fields.d.ts.map +1 -0
  11. package/dist/fields.js +107 -0
  12. package/dist/fields.js.map +1 -0
  13. package/dist/generate-schema-json.d.ts +61 -0
  14. package/dist/generate-schema-json.d.ts.map +1 -0
  15. package/dist/generate-schema-json.js +128 -0
  16. package/dist/generate-schema-json.js.map +1 -0
  17. package/dist/generate-types.d.ts +5 -0
  18. package/dist/generate-types.d.ts.map +1 -0
  19. package/dist/generate-types.js +220 -0
  20. package/dist/generate-types.js.map +1 -0
  21. package/dist/id.d.ts +8 -0
  22. package/dist/id.d.ts.map +1 -0
  23. package/dist/id.js +8 -0
  24. package/dist/id.js.map +1 -0
  25. package/dist/index.d.ts +28 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +22 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/rich-text.d.ts +164 -0
  30. package/dist/rich-text.d.ts.map +1 -0
  31. package/dist/rich-text.js +97 -0
  32. package/dist/rich-text.js.map +1 -0
  33. package/dist/routing/ids.d.ts +18 -0
  34. package/dist/routing/ids.d.ts.map +1 -0
  35. package/dist/routing/ids.js +41 -0
  36. package/dist/routing/ids.js.map +1 -0
  37. package/dist/routing/index.d.ts +13 -0
  38. package/dist/routing/index.d.ts.map +1 -0
  39. package/dist/routing/index.js +7 -0
  40. package/dist/routing/index.js.map +1 -0
  41. package/dist/routing/redirects.d.ts +76 -0
  42. package/dist/routing/redirects.d.ts.map +1 -0
  43. package/dist/routing/redirects.js +237 -0
  44. package/dist/routing/redirects.js.map +1 -0
  45. package/dist/routing/resolve.d.ts +38 -0
  46. package/dist/routing/resolve.d.ts.map +1 -0
  47. package/dist/routing/resolve.js +23 -0
  48. package/dist/routing/resolve.js.map +1 -0
  49. package/dist/routing/router.d.ts +51 -0
  50. package/dist/routing/router.d.ts.map +1 -0
  51. package/dist/routing/router.js +132 -0
  52. package/dist/routing/router.js.map +1 -0
  53. package/dist/routing/slug-change.d.ts +39 -0
  54. package/dist/routing/slug-change.d.ts.map +1 -0
  55. package/dist/routing/slug-change.js +44 -0
  56. package/dist/routing/slug-change.js.map +1 -0
  57. package/dist/routing/slug.d.ts +82 -0
  58. package/dist/routing/slug.d.ts.map +1 -0
  59. package/dist/routing/slug.js +124 -0
  60. package/dist/routing/slug.js.map +1 -0
  61. package/dist/routing/slugify.d.ts +29 -0
  62. package/dist/routing/slugify.d.ts.map +1 -0
  63. package/dist/routing/slugify.js +104 -0
  64. package/dist/routing/slugify.js.map +1 -0
  65. package/dist/scheduling/index.d.ts +3 -0
  66. package/dist/scheduling/index.d.ts.map +1 -0
  67. package/dist/scheduling/index.js +2 -0
  68. package/dist/scheduling/index.js.map +1 -0
  69. package/dist/scheduling/publish.d.ts +71 -0
  70. package/dist/scheduling/publish.d.ts.map +1 -0
  71. package/dist/scheduling/publish.js +122 -0
  72. package/dist/scheduling/publish.js.map +1 -0
  73. package/dist/search/extract.d.ts +25 -0
  74. package/dist/search/extract.d.ts.map +1 -0
  75. package/dist/search/extract.js +188 -0
  76. package/dist/search/extract.js.map +1 -0
  77. package/dist/search/index.d.ts +36 -0
  78. package/dist/search/index.d.ts.map +1 -0
  79. package/dist/search/index.js +44 -0
  80. package/dist/search/index.js.map +1 -0
  81. package/dist/search/mysql.d.ts +7 -0
  82. package/dist/search/mysql.d.ts.map +1 -0
  83. package/dist/search/mysql.js +121 -0
  84. package/dist/search/mysql.js.map +1 -0
  85. package/dist/search/postgres.d.ts +9 -0
  86. package/dist/search/postgres.d.ts.map +1 -0
  87. package/dist/search/postgres.js +167 -0
  88. package/dist/search/postgres.js.map +1 -0
  89. package/dist/search/query.d.ts +35 -0
  90. package/dist/search/query.d.ts.map +1 -0
  91. package/dist/search/query.js +116 -0
  92. package/dist/search/query.js.map +1 -0
  93. package/dist/search/sqlite.d.ts +16 -0
  94. package/dist/search/sqlite.d.ts.map +1 -0
  95. package/dist/search/sqlite.js +166 -0
  96. package/dist/search/sqlite.js.map +1 -0
  97. package/dist/search/table.d.ts +49 -0
  98. package/dist/search/table.d.ts.map +1 -0
  99. package/dist/search/table.js +86 -0
  100. package/dist/search/table.js.map +1 -0
  101. package/dist/search/text.d.ts +42 -0
  102. package/dist/search/text.d.ts.map +1 -0
  103. package/dist/search/text.js +56 -0
  104. package/dist/search/text.js.map +1 -0
  105. package/dist/search/types.d.ts +98 -0
  106. package/dist/search/types.d.ts.map +1 -0
  107. package/dist/search/types.js +2 -0
  108. package/dist/search/types.js.map +1 -0
  109. package/dist/store/columns.d.ts +33 -0
  110. package/dist/store/columns.d.ts.map +1 -0
  111. package/dist/store/columns.js +113 -0
  112. package/dist/store/columns.js.map +1 -0
  113. package/dist/store/cursor.d.ts +23 -0
  114. package/dist/store/cursor.d.ts.map +1 -0
  115. package/dist/store/cursor.js +36 -0
  116. package/dist/store/cursor.js.map +1 -0
  117. package/dist/store/diff.d.ts +59 -0
  118. package/dist/store/diff.d.ts.map +1 -0
  119. package/dist/store/diff.js +124 -0
  120. package/dist/store/diff.js.map +1 -0
  121. package/dist/store/fragments.d.ts +13 -0
  122. package/dist/store/fragments.d.ts.map +1 -0
  123. package/dist/store/fragments.js +25 -0
  124. package/dist/store/fragments.js.map +1 -0
  125. package/dist/store/index.d.ts +22 -0
  126. package/dist/store/index.d.ts.map +1 -0
  127. package/dist/store/index.js +16 -0
  128. package/dist/store/index.js.map +1 -0
  129. package/dist/store/naming.d.ts +25 -0
  130. package/dist/store/naming.d.ts.map +1 -0
  131. package/dist/store/naming.js +80 -0
  132. package/dist/store/naming.js.map +1 -0
  133. package/dist/store/read-only.d.ts +16 -0
  134. package/dist/store/read-only.d.ts.map +1 -0
  135. package/dist/store/read-only.js +36 -0
  136. package/dist/store/read-only.js.map +1 -0
  137. package/dist/store/store.d.ts +52 -0
  138. package/dist/store/store.d.ts.map +1 -0
  139. package/dist/store/store.js +706 -0
  140. package/dist/store/store.js.map +1 -0
  141. package/dist/store/tables.d.ts +40 -0
  142. package/dist/store/tables.d.ts.map +1 -0
  143. package/dist/store/tables.js +267 -0
  144. package/dist/store/tables.js.map +1 -0
  145. package/dist/store/types.d.ts +105 -0
  146. package/dist/store/types.d.ts.map +1 -0
  147. package/dist/store/types.js +2 -0
  148. package/dist/store/types.js.map +1 -0
  149. package/dist/store/uuid.d.ts +6 -0
  150. package/dist/store/uuid.d.ts.map +1 -0
  151. package/dist/store/uuid.js +64 -0
  152. package/dist/store/uuid.js.map +1 -0
  153. package/dist/store/values.d.ts +40 -0
  154. package/dist/store/values.d.ts.map +1 -0
  155. package/dist/store/values.js +160 -0
  156. package/dist/store/values.js.map +1 -0
  157. package/dist/system-fields.d.ts +60 -0
  158. package/dist/system-fields.d.ts.map +1 -0
  159. package/dist/system-fields.js +73 -0
  160. package/dist/system-fields.js.map +1 -0
  161. package/dist/types.d.ts +101 -0
  162. package/dist/types.d.ts.map +1 -0
  163. package/dist/types.js +32 -0
  164. package/dist/types.js.map +1 -0
  165. package/dist/validation.d.ts +54 -0
  166. package/dist/validation.d.ts.map +1 -0
  167. package/dist/validation.js +183 -0
  168. package/dist/validation.js.map +1 -0
  169. package/package.json +43 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { type DatabaseHandle } from '@cogenta/core';
2
+ import type { CollectionDefinition, OnDelete } from '../types.js';
3
+ /**
4
+ * The physical shape of a collection.
5
+ *
6
+ * This is the schema the migration generator (L1, task 3) will emit; the store
7
+ * and the tests use it directly so that both are proven against the same DDL
8
+ * rather than against two descriptions that drift.
9
+ *
10
+ * Three tables per collection, plus one per to-many relation:
11
+ *
12
+ * - `<t>` — one row per entry **per locale** (ADR-0014). It holds the live
13
+ * state: what the public renderer reads.
14
+ * - `<t>_versions` — one row per version, holding a snapshot of the field
15
+ * values. The working draft of a published entry is the newest of these.
16
+ * - `<t>_blocks` — one row per block, per version, ordered, with its `_key`.
17
+ * - `<t>_<field>` — the join table of a `many: true` relation.
18
+ */
19
+ export interface RelationTarget {
20
+ readonly field: string;
21
+ readonly to: string;
22
+ readonly onDelete: OnDelete;
23
+ readonly many: boolean;
24
+ }
25
+ export declare function relationsOf(collection: CollectionDefinition): RelationTarget[];
26
+ /** Rejects a schema whose fields would collide with the engine's own columns. */
27
+ export declare function assertUsableFields(collection: CollectionDefinition): void;
28
+ /**
29
+ * Creates the tables of a set of collections, targets first.
30
+ *
31
+ * A foreign key is declared inside `create table` rather than added afterwards,
32
+ * because SQLite has no `alter table add constraint` at all. That makes the
33
+ * order matter, hence the sort — and makes a cycle between two collections
34
+ * something to report rather than to half-create.
35
+ */
36
+ export declare function createSchemaTables(db: DatabaseHandle, collections: readonly CollectionDefinition[]): Promise<void>;
37
+ export declare function orderByDependency(collections: readonly CollectionDefinition[]): CollectionDefinition[];
38
+ /** Drops a collection's tables, dependents first. For tests and for a rollback. */
39
+ export declare function dropSchemaTables(db: DatabaseHandle, collections: readonly CollectionDefinition[]): Promise<void>;
40
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/store/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAKpB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,oBAAoB,EAAmB,QAAQ,EAAE,MAAM,aAAa,CAAA;AAsBlF;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,oBAAoB,GAAG,cAAc,EAAE,CAgC9E;AAED,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAYzE;AAsMD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,cAAc,EAClB,WAAW,EAAE,SAAS,oBAAoB,EAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,SAAS,oBAAoB,EAAE,GAC3C,oBAAoB,EAAE,CAgCxB;AAED,mFAAmF;AACnF,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,cAAc,EAClB,WAAW,EAAE,SAAS,oBAAoB,EAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -0,0 +1,267 @@
1
+ import { CogentaError, identifier, sql, } from '@cogenta/core';
2
+ import { columnTypeFor, integerColumn, isColumnless, jsonColumn, onDeleteClause, textColumn, timestampColumn, uuidColumn, } from './columns.js';
3
+ import { joinFragments } from './fragments.js';
4
+ import { blocksTable, columnFor, entriesTable, indexName, isSystemColumn, relationTable, versionsTable, } from './naming.js';
5
+ export function relationsOf(collection) {
6
+ const relations = [];
7
+ for (const [name, field] of Object.entries(collection.fields)) {
8
+ if (field.kind !== 'relation')
9
+ continue;
10
+ const to = field.options['to'];
11
+ if (typeof to !== 'string' || to.length === 0) {
12
+ throw new CogentaError({
13
+ code: 'CONFIG_INVALID',
14
+ message: `The relation field "${name}" of "${collection.name}" has no target collection.`,
15
+ hint: "Give it a target: f.relation({ to: 'author' }).",
16
+ details: { collection: collection.name, field: name },
17
+ });
18
+ }
19
+ const many = field.options['many'] === true;
20
+ const onDelete = field.options['onDelete'] ?? 'restrict';
21
+ if (many && onDelete === 'setNull') {
22
+ throw new CogentaError({
23
+ code: 'CONFIG_INVALID',
24
+ message: `The relation "${name}" of "${collection.name}" is to-many, so onDelete: 'setNull' has no meaning.`,
25
+ hint: "A join row has nothing to null out. Use 'restrict' or 'cascade'.",
26
+ details: { collection: collection.name, field: name },
27
+ });
28
+ }
29
+ relations.push({ field: name, to, onDelete, many });
30
+ }
31
+ return relations;
32
+ }
33
+ /** Rejects a schema whose fields would collide with the engine's own columns. */
34
+ export function assertUsableFields(collection) {
35
+ for (const name of Object.keys(collection.fields)) {
36
+ const column = columnFor(name);
37
+ if (!isSystemColumn(column))
38
+ continue;
39
+ throw new CogentaError({
40
+ code: 'CONFIG_INVALID',
41
+ message: `"${name}" is a system field and cannot be declared on "${collection.name}".`,
42
+ hint: 'id, createdAt, updatedAt, createdBy, updatedBy, status, locale, translationOf, version and provenance are maintained by the engine.',
43
+ details: { collection: collection.name, field: name },
44
+ });
45
+ }
46
+ }
47
+ /**
48
+ * Every field column is nullable, `required` included.
49
+ *
50
+ * `required` is a content rule, checked on write. A NOT NULL column would make
51
+ * it impossible to save an incomplete draft — which is the normal state of a
52
+ * piece being written — and would turn an editorial rule into a migration.
53
+ */
54
+ function fieldColumn(name, field, dialect) {
55
+ return sql `${identifier(columnFor(name), dialect)} ${columnTypeFor(field, dialect)}`;
56
+ }
57
+ function systemColumns(dialect) {
58
+ return [
59
+ sql `${identifier('id', dialect)} ${uuidColumn(dialect)} not null primary key`,
60
+ sql `${identifier('created_at', dialect)} ${timestampColumn(dialect)} not null`,
61
+ sql `${identifier('updated_at', dialect)} ${timestampColumn(dialect)} not null`,
62
+ sql `${identifier('created_by', dialect)} ${textColumn(dialect, 64)}`,
63
+ sql `${identifier('updated_by', dialect)} ${textColumn(dialect, 64)}`,
64
+ sql `${identifier('status', dialect)} ${textColumn(dialect, 16)} not null`,
65
+ sql `${identifier('locale', dialect)} ${textColumn(dialect, 16)} not null`,
66
+ sql `${identifier('translation_of', dialect)} ${uuidColumn(dialect)}`,
67
+ sql `${identifier('version', dialect)} ${integerColumn()} not null`,
68
+ sql `${identifier('provenance', dialect)} ${textColumn(dialect, 16)} not null`,
69
+ sql `${identifier('provenance_detail', dialect)} ${jsonColumn()}`,
70
+ ];
71
+ }
72
+ function entriesDdl(collection, dialect) {
73
+ const table = identifier(entriesTable(collection.name), dialect);
74
+ const parts = systemColumns(dialect);
75
+ for (const [name, field] of Object.entries(collection.fields)) {
76
+ if (isColumnless(field))
77
+ continue;
78
+ parts.push(fieldColumn(name, field, dialect));
79
+ }
80
+ // A translation points at its source entry. Deleting the source leaves the
81
+ // translations standing, orphaned rather than destroyed: losing a language
82
+ // because someone removed the original is never the intent.
83
+ parts.push(sql `constraint ${identifier(indexName(entriesTable(collection.name), 'source_fk'), dialect)}
84
+ foreign key (${identifier('translation_of', dialect)})
85
+ references ${table} (${identifier('id', dialect)}) on delete set null`);
86
+ for (const relation of relationsOf(collection)) {
87
+ if (relation.many)
88
+ continue;
89
+ parts.push(sql `constraint ${identifier(indexName(entriesTable(collection.name), `${columnFor(relation.field)}_fk`), dialect)}
90
+ foreign key (${identifier(columnFor(relation.field), dialect)})
91
+ references ${identifier(entriesTable(relation.to), dialect)} (${identifier('id', dialect)})
92
+ ${onDeleteClause(relation.onDelete)}`);
93
+ }
94
+ return sql `create table if not exists ${table} (${joinFragments(parts, ', ')})`;
95
+ }
96
+ function versionsDdl(collection, dialect) {
97
+ const table = identifier(versionsTable(collection.name), dialect);
98
+ const entries = identifier(entriesTable(collection.name), dialect);
99
+ return sql `create table if not exists ${table} (
100
+ ${identifier('id', dialect)} ${uuidColumn(dialect)} not null primary key,
101
+ ${identifier('entry_id', dialect)} ${uuidColumn(dialect)} not null,
102
+ ${identifier('version', dialect)} ${integerColumn()} not null,
103
+ ${identifier('status', dialect)} ${textColumn(dialect, 16)} not null,
104
+ ${identifier('data', dialect)} ${jsonColumn()} not null,
105
+ ${identifier('created_at', dialect)} ${timestampColumn(dialect)} not null,
106
+ ${identifier('created_by', dialect)} ${textColumn(dialect, 64)},
107
+ constraint ${identifier(indexName(versionsTable(collection.name), 'entry_fk'), dialect)}
108
+ foreign key (${identifier('entry_id', dialect)})
109
+ references ${entries} (${identifier('id', dialect)}) on delete cascade,
110
+ constraint ${identifier(indexName(versionsTable(collection.name), 'unique'), dialect)}
111
+ unique (${identifier('entry_id', dialect)}, ${identifier('version', dialect)})
112
+ )`;
113
+ }
114
+ function blocksDdl(collection, dialect) {
115
+ const table = identifier(blocksTable(collection.name), dialect);
116
+ const entries = identifier(entriesTable(collection.name), dialect);
117
+ return sql `create table if not exists ${table} (
118
+ ${identifier('id', dialect)} ${uuidColumn(dialect)} not null primary key,
119
+ ${identifier('entry_id', dialect)} ${uuidColumn(dialect)} not null,
120
+ ${identifier('version', dialect)} ${integerColumn()} not null,
121
+ ${identifier('zone', dialect)} ${textColumn(dialect, 64)} not null,
122
+ ${identifier('position', dialect)} ${integerColumn()} not null,
123
+ ${identifier('block_key', dialect)} ${textColumn(dialect, 64)} not null,
124
+ ${identifier('block_type', dialect)} ${textColumn(dialect, 64)} not null,
125
+ ${identifier('data', dialect)} ${jsonColumn()} not null,
126
+ constraint ${identifier(indexName(blocksTable(collection.name), 'entry_fk'), dialect)}
127
+ foreign key (${identifier('entry_id', dialect)})
128
+ references ${entries} (${identifier('id', dialect)}) on delete cascade,
129
+ constraint ${identifier(indexName(blocksTable(collection.name), 'unique'), dialect)}
130
+ unique (${identifier('entry_id', dialect)}, ${identifier('version', dialect)},
131
+ ${identifier('zone', dialect)}, ${identifier('block_key', dialect)})
132
+ )`;
133
+ }
134
+ function joinDdl(collection, relation, dialect) {
135
+ const table = identifier(relationTable(collection.name, relation.field), dialect);
136
+ return sql `create table if not exists ${table} (
137
+ ${identifier('entry_id', dialect)} ${uuidColumn(dialect)} not null,
138
+ ${identifier('target_id', dialect)} ${uuidColumn(dialect)} not null,
139
+ ${identifier('position', dialect)} ${integerColumn()} not null,
140
+ primary key (${identifier('entry_id', dialect)}, ${identifier('target_id', dialect)}),
141
+ constraint ${identifier(indexName(relationTable(collection.name, relation.field), 'entry_fk'), dialect)}
142
+ foreign key (${identifier('entry_id', dialect)})
143
+ references ${identifier(entriesTable(collection.name), dialect)} (${identifier('id', dialect)})
144
+ on delete cascade,
145
+ constraint ${identifier(indexName(relationTable(collection.name, relation.field), 'target_fk'), dialect)}
146
+ foreign key (${identifier('target_id', dialect)})
147
+ references ${identifier(entriesTable(relation.to), dialect)} (${identifier('id', dialect)})
148
+ ${onDeleteClause(relation.onDelete)}
149
+ )`;
150
+ }
151
+ const DIRECTIONS = new Set(['asc', 'desc']);
152
+ /**
153
+ * The indexes every collection gets, plus the ones it declares.
154
+ *
155
+ * `create index` has no portable `if not exists` (MySQL 8 has none), so a
156
+ * failure is swallowed: the only realistic cause is that the index is already
157
+ * there. The same trade-off the queue driver makes.
158
+ */
159
+ function indexStatements(collection, dialect) {
160
+ const name = entriesTable(collection.name);
161
+ const table = identifier(name, dialect);
162
+ const statements = [
163
+ sql `create index ${identifier(indexName(name, 'locale_status'), dialect)}
164
+ on ${table} (${identifier('locale', dialect)}, ${identifier('status', dialect)})`,
165
+ sql `create index ${identifier(indexName(name, 'translation'), dialect)}
166
+ on ${table} (${identifier('translation_of', dialect)})`,
167
+ ];
168
+ for (const [field, definition] of Object.entries(collection.fields)) {
169
+ if (definition.unique !== true || isColumnless(definition))
170
+ continue;
171
+ // Unique **per locale**: with one entry per language (ADR-0014), a slug
172
+ // unique across the table would forbid the same slug in French and English,
173
+ // which is the normal case, not an error.
174
+ statements.push(sql `create unique index ${identifier(indexName(name, `${columnFor(field)}_unique`), dialect)}
175
+ on ${table} (${identifier('locale', dialect)}, ${identifier(columnFor(field), dialect)})`);
176
+ }
177
+ for (const [position, declared] of (collection.indexes ?? []).entries()) {
178
+ const columns = [...declared];
179
+ const last = columns.at(-1);
180
+ // Contract A writes `['publishedAt', 'desc']`: a trailing 'asc'/'desc' that
181
+ // is not itself a field is the direction, not a second column.
182
+ if (last !== undefined && DIRECTIONS.has(last) && collection.fields[last] === undefined) {
183
+ columns.pop();
184
+ }
185
+ if (columns.length === 0)
186
+ continue;
187
+ statements.push(sql `create index ${identifier(indexName(name, `idx_${position}`), dialect)}
188
+ on ${table} (${joinFragments(columns.map((column) => identifier(columnFor(column), dialect)), ', ')})`);
189
+ }
190
+ return statements;
191
+ }
192
+ async function createOne(executor, collection) {
193
+ assertUsableFields(collection);
194
+ const dialect = executor.dialect;
195
+ await executor.query(entriesDdl(collection, dialect));
196
+ await executor.query(versionsDdl(collection, dialect));
197
+ await executor.query(blocksDdl(collection, dialect));
198
+ for (const relation of relationsOf(collection)) {
199
+ if (!relation.many)
200
+ continue;
201
+ await executor.query(joinDdl(collection, relation, dialect));
202
+ }
203
+ for (const statement of indexStatements(collection, dialect)) {
204
+ await executor.query(statement).catch(() => undefined);
205
+ }
206
+ }
207
+ /**
208
+ * Creates the tables of a set of collections, targets first.
209
+ *
210
+ * A foreign key is declared inside `create table` rather than added afterwards,
211
+ * because SQLite has no `alter table add constraint` at all. That makes the
212
+ * order matter, hence the sort — and makes a cycle between two collections
213
+ * something to report rather than to half-create.
214
+ */
215
+ export async function createSchemaTables(db, collections) {
216
+ for (const collection of orderByDependency(collections)) {
217
+ await createOne(db, collection);
218
+ }
219
+ }
220
+ export function orderByDependency(collections) {
221
+ const byName = new Map(collections.map((collection) => [collection.name, collection]));
222
+ const ordered = [];
223
+ const done = new Set();
224
+ const visiting = new Set();
225
+ const visit = (collection, trail) => {
226
+ if (done.has(collection.name))
227
+ return;
228
+ if (visiting.has(collection.name)) {
229
+ throw new CogentaError({
230
+ code: 'CONFIG_INVALID',
231
+ message: `The collections ${[...trail, collection.name].join(' → ')} reference each other in a cycle.`,
232
+ hint: 'SQLite cannot add a foreign key after the fact, so one of the two relations has to be optional and created in a later migration.',
233
+ details: { cycle: [...trail, collection.name] },
234
+ });
235
+ }
236
+ visiting.add(collection.name);
237
+ for (const relation of relationsOf(collection)) {
238
+ // A self-reference is fine: the table exists by the time the row is written.
239
+ if (relation.to === collection.name)
240
+ continue;
241
+ const target = byName.get(relation.to);
242
+ if (target !== undefined)
243
+ visit(target, [...trail, collection.name]);
244
+ }
245
+ visiting.delete(collection.name);
246
+ done.add(collection.name);
247
+ ordered.push(collection);
248
+ };
249
+ for (const collection of collections)
250
+ visit(collection, []);
251
+ return ordered;
252
+ }
253
+ /** Drops a collection's tables, dependents first. For tests and for a rollback. */
254
+ export async function dropSchemaTables(db, collections) {
255
+ const dialect = db.dialect;
256
+ for (const collection of orderByDependency(collections).reverse()) {
257
+ for (const relation of relationsOf(collection)) {
258
+ if (!relation.many)
259
+ continue;
260
+ await db.query(sql `drop table if exists ${identifier(relationTable(collection.name, relation.field), dialect)}`);
261
+ }
262
+ await db.query(sql `drop table if exists ${identifier(blocksTable(collection.name), dialect)}`);
263
+ await db.query(sql `drop table if exists ${identifier(versionsTable(collection.name), dialect)}`);
264
+ await db.query(sql `drop table if exists ${identifier(entriesTable(collection.name), dialect)}`);
265
+ }
266
+ }
267
+ //# sourceMappingURL=tables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../src/store/tables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import type { ContentStatus, Provenance, SystemFields } from '../types.js';
2
+ /** The user-declared fields of an entry, keyed by field name. */
3
+ export type ContentValues = Readonly<Record<string, unknown>>;
4
+ /**
5
+ * One block of a block zone.
6
+ *
7
+ * `key` is contract A's `_key`: stable across edits, which is what makes a
8
+ * block-by-block diff, a comment anchored to a block and an incremental RAG
9
+ * re-index possible. It is minted once, never recomputed from the position.
10
+ */
11
+ export interface ContentBlock {
12
+ readonly key: string;
13
+ readonly type: string;
14
+ readonly data: Readonly<Record<string, unknown>>;
15
+ }
16
+ /** Block zones of an entry, keyed by the name of the `blocks` field. */
17
+ export type BlockZones = Readonly<Record<string, readonly ContentBlock[]>>;
18
+ /**
19
+ * Which of the two faces of an entry to read.
20
+ *
21
+ * `published` is what the public renderer sees, always. `working` is the draft
22
+ * the admin and preview tokens see — the same thing when nothing is pending.
23
+ */
24
+ export type EntryState = 'published' | 'working';
25
+ export interface ContentEntry<TValues extends ContentValues = ContentValues> extends SystemFields {
26
+ /** When this entry went public, per language. Null while it never has. */
27
+ readonly publishedAt: string | null;
28
+ readonly state: EntryState;
29
+ readonly values: TValues;
30
+ readonly blocks: BlockZones;
31
+ }
32
+ export interface ProvenanceInput {
33
+ readonly provenance?: Provenance;
34
+ readonly provenanceDetail?: SystemFields['provenanceDetail'];
35
+ }
36
+ export interface CreateInput<TValues extends ContentValues = ContentValues> extends ProvenanceInput {
37
+ /** Supply one to import content that already has an identity elsewhere. */
38
+ readonly id?: string;
39
+ readonly locale?: string;
40
+ /** The source entry this is a translation of (ADR-0014). */
41
+ readonly translationOf?: string | null;
42
+ readonly status?: ContentStatus;
43
+ readonly createdBy?: string | null;
44
+ readonly values: Partial<TValues>;
45
+ readonly blocks?: BlockZones;
46
+ }
47
+ export interface UpdateInput<TValues extends ContentValues = ContentValues> extends ProvenanceInput {
48
+ readonly values?: Partial<TValues>;
49
+ /** Replaces the whole zone. A zone left out is untouched. */
50
+ readonly blocks?: BlockZones;
51
+ readonly updatedBy?: string | null;
52
+ }
53
+ export interface PublishInput {
54
+ readonly publishedBy?: string | null;
55
+ /** Recorded as the publication instant. Defaults to now. */
56
+ readonly at?: Date;
57
+ }
58
+ /** Ordering is limited to columns that are never null, so a cursor is total. */
59
+ export type SortField = 'id' | 'createdAt' | 'updatedAt';
60
+ export interface SortOrder {
61
+ readonly field: SortField;
62
+ readonly direction: 'asc' | 'desc';
63
+ }
64
+ export interface ListOptions {
65
+ readonly state?: EntryState;
66
+ readonly locale?: string;
67
+ readonly status?: ContentStatus;
68
+ readonly translationOf?: string | null;
69
+ /** Equality on declared fields. Richer filters belong to the API layer (L1/13). */
70
+ readonly where?: Readonly<Record<string, unknown>>;
71
+ readonly sort?: SortOrder;
72
+ readonly limit?: number;
73
+ /** Opaque; produced by a previous page. Never an offset (see `cursor.ts`). */
74
+ readonly cursor?: string;
75
+ }
76
+ export interface Page<T> {
77
+ readonly items: readonly T[];
78
+ readonly nextCursor: string | null;
79
+ readonly hasMore: boolean;
80
+ }
81
+ export interface VersionSummary {
82
+ readonly version: number;
83
+ readonly status: ContentStatus;
84
+ readonly createdAt: string;
85
+ readonly createdBy: string | null;
86
+ /** True for the version the live row currently holds. */
87
+ readonly live: boolean;
88
+ }
89
+ /** How a locale that has no entry is rendered. Always an explicit choice. */
90
+ export type LocaleFallback = 'original' | 'hide' | 'notFound';
91
+ export type LocaleResolution<TValues extends ContentValues = ContentValues> = {
92
+ readonly outcome: 'found';
93
+ readonly entry: ContentEntry<TValues>;
94
+ /** True when the entry returned is not in the locale that was asked for. */
95
+ readonly fellBack: boolean;
96
+ } | {
97
+ readonly outcome: 'hidden';
98
+ } | {
99
+ readonly outcome: 'notFound';
100
+ };
101
+ export interface ResolveLocaleOptions {
102
+ readonly fallback: LocaleFallback;
103
+ readonly state?: EntryState;
104
+ }
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/store/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export declare function uuidv7(): string;
2
+ /** True for a syntactically valid UUID. `version` narrows it to one layout. */
3
+ export declare function isUuid(value: string, version?: number): boolean;
4
+ /** The millisecond timestamp a v7 was minted at. Null for any other layout. */
5
+ export declare function uuidv7Timestamp(value: string): number | null;
6
+ //# sourceMappingURL=uuid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../src/store/uuid.ts"],"names":[],"mappings":"AAqBA,wBAAgB,MAAM,IAAI,MAAM,CAiC/B;AAID,+EAA+E;AAC/E,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAI/D;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG5D"}
@@ -0,0 +1,64 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ /**
3
+ * UUIDv7, generated by the application (ADR-0015).
4
+ *
5
+ * Node ships `randomUUID()`, but that is a v4: random, and therefore a B-tree
6
+ * index that fragments a little more with every insert. A v7 carries its
7
+ * millisecond timestamp in the high bits, so ids sort in creation order and rows
8
+ * written together land together on disk.
9
+ *
10
+ * There is no dependency here on purpose (rule R9): the layout is 48 bits of
11
+ * Unix milliseconds, 4 bits of version, 12 bits of counter, 2 bits of variant
12
+ * and 62 bits of randomness — small enough to write than to justify a package.
13
+ */
14
+ /** The counter occupies 12 bits, so it wraps after 4096 ids in one millisecond. */
15
+ const MAX_COUNTER = 0xfff;
16
+ let lastTimestamp = 0;
17
+ let counter = 0;
18
+ export function uuidv7() {
19
+ const now = Date.now();
20
+ if (now > lastTimestamp) {
21
+ lastTimestamp = now;
22
+ // Seeded low, and randomly: low so a burst inside a single millisecond
23
+ // cannot overflow the twelve bits, random so one id does not give away the
24
+ // next. A fixed zero would make consecutive ids guessable.
25
+ counter = randomBytes(1).readUInt8(0);
26
+ }
27
+ else {
28
+ counter += 1;
29
+ if (counter > MAX_COUNTER) {
30
+ // Borrow from the next millisecond rather than emit a duplicate. Ordering
31
+ // survives, and the id is at most a few milliseconds ahead of the clock.
32
+ lastTimestamp += 1;
33
+ counter = 0;
34
+ }
35
+ }
36
+ const time = lastTimestamp.toString(16).padStart(12, '0');
37
+ const random = randomBytes(8).toString('hex');
38
+ // RFC 9562 variant: the top two bits of octet 8 must be `10`.
39
+ const variant = ((Number.parseInt(random.slice(0, 2), 16) & 0x3f) | 0x80)
40
+ .toString(16)
41
+ .padStart(2, '0');
42
+ return [
43
+ time.slice(0, 8),
44
+ time.slice(8, 12),
45
+ `7${counter.toString(16).padStart(3, '0')}`,
46
+ `${variant}${random.slice(2, 4)}`,
47
+ random.slice(4, 16),
48
+ ].join('-');
49
+ }
50
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-([0-9a-f])[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
51
+ /** True for a syntactically valid UUID. `version` narrows it to one layout. */
52
+ export function isUuid(value, version) {
53
+ const match = UUID.exec(value);
54
+ if (match === null)
55
+ return false;
56
+ return version === undefined || match[1] === version.toString(16);
57
+ }
58
+ /** The millisecond timestamp a v7 was minted at. Null for any other layout. */
59
+ export function uuidv7Timestamp(value) {
60
+ if (!isUuid(value, 7))
61
+ return null;
62
+ return Number.parseInt(value.slice(0, 8) + value.slice(9, 13), 16);
63
+ }
64
+ //# sourceMappingURL=uuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/store/uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC;;;;;;;;;;;GAWG;AAEH,mFAAmF;AACnF,MAAM,WAAW,GAAG,KAAK,CAAA;AAEzB,IAAI,aAAa,GAAG,CAAC,CAAA;AACrB,IAAI,OAAO,GAAG,CAAC,CAAA;AAEf,MAAM,UAAU,MAAM;IACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEtB,IAAI,GAAG,GAAG,aAAa,EAAE,CAAC;QACxB,aAAa,GAAG,GAAG,CAAA;QACnB,uEAAuE;QACvE,2EAA2E;QAC3E,2DAA2D;QAC3D,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,CAAA;QACZ,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;YAC1B,0EAA0E;YAC1E,yEAAyE;YACzE,aAAa,IAAI,CAAC,CAAA;YAClB,OAAO,GAAG,CAAC,CAAA;QACb,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,8DAA8D;IAC9D,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;SACtE,QAAQ,CAAC,EAAE,CAAC;SACZ,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAEnB,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QAC3C,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;KACpB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC;AAED,MAAM,IAAI,GAAG,iFAAiF,CAAA;AAE9F,+EAA+E;AAC/E,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,OAAgB;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAChC,OAAO,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AACnE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;AACpE,CAAC"}