@cogenta/schema 0.1.1 → 0.2.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.
- package/dist/define-collection.d.ts.map +1 -1
- package/dist/define-collection.js +32 -0
- package/dist/define-collection.js.map +1 -1
- package/dist/define-taxonomy.d.ts +9 -0
- package/dist/define-taxonomy.d.ts.map +1 -0
- package/dist/define-taxonomy.js +144 -0
- package/dist/define-taxonomy.js.map +1 -0
- package/dist/fields.d.ts +20 -0
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +14 -0
- package/dist/fields.js.map +1 -1
- package/dist/generate-schema-json.d.ts +28 -4
- package/dist/generate-schema-json.d.ts.map +1 -1
- package/dist/generate-schema-json.js +25 -4
- package/dist/generate-schema-json.js.map +1 -1
- package/dist/generate-types.js +1 -0
- package/dist/generate-types.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/links/check.d.ts +76 -0
- package/dist/links/check.d.ts.map +1 -0
- package/dist/links/check.js +169 -0
- package/dist/links/check.js.map +1 -0
- package/dist/links/extract.d.ts +36 -0
- package/dist/links/extract.d.ts.map +1 -0
- package/dist/links/extract.js +69 -0
- package/dist/links/extract.js.map +1 -0
- package/dist/links/index.d.ts +10 -0
- package/dist/links/index.d.ts.map +1 -0
- package/dist/links/index.js +8 -0
- package/dist/links/index.js.map +1 -0
- package/dist/store/columns.d.ts.map +1 -1
- package/dist/store/columns.js +5 -2
- package/dist/store/columns.js.map +1 -1
- package/dist/store/index.d.ts +11 -2
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +6 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/lifecycle-events.d.ts +72 -0
- package/dist/store/lifecycle-events.d.ts.map +1 -0
- package/dist/store/lifecycle-events.js +73 -0
- package/dist/store/lifecycle-events.js.map +1 -0
- package/dist/store/naming.d.ts +11 -2
- package/dist/store/naming.d.ts.map +1 -1
- package/dist/store/naming.js +13 -1
- package/dist/store/naming.js.map +1 -1
- package/dist/store/read-only.d.ts +9 -3
- package/dist/store/read-only.d.ts.map +1 -1
- package/dist/store/read-only.js +13 -3
- package/dist/store/read-only.js.map +1 -1
- package/dist/store/schema-2-migration.d.ts +32 -0
- package/dist/store/schema-2-migration.d.ts.map +1 -0
- package/dist/store/schema-2-migration.js +136 -0
- package/dist/store/schema-2-migration.js.map +1 -0
- package/dist/store/search-indexing.d.ts +34 -0
- package/dist/store/search-indexing.d.ts.map +1 -0
- package/dist/store/search-indexing.js +65 -0
- package/dist/store/search-indexing.js.map +1 -0
- package/dist/store/store.d.ts +36 -7
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +348 -58
- package/dist/store/store.js.map +1 -1
- package/dist/store/tables.d.ts +15 -3
- package/dist/store/tables.d.ts.map +1 -1
- package/dist/store/tables.js +98 -6
- package/dist/store/tables.js.map +1 -1
- package/dist/store/taxonomy-path.d.ts +25 -0
- package/dist/store/taxonomy-path.d.ts.map +1 -0
- package/dist/store/taxonomy-path.js +64 -0
- package/dist/store/taxonomy-path.js.map +1 -0
- package/dist/store/taxonomy-store.d.ts +62 -0
- package/dist/store/taxonomy-store.d.ts.map +1 -0
- package/dist/store/taxonomy-store.js +292 -0
- package/dist/store/taxonomy-store.js.map +1 -0
- package/dist/store/types.d.ts +42 -2
- package/dist/store/types.d.ts.map +1 -1
- package/dist/store/values.d.ts.map +1 -1
- package/dist/store/values.js +4 -1
- package/dist/store/values.js.map +1 -1
- package/dist/system-fields.d.ts +2 -1
- package/dist/system-fields.d.ts.map +1 -1
- package/dist/system-fields.js +4 -0
- package/dist/system-fields.js.map +1 -1
- package/dist/types.d.ts +86 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +12 -3
- package/dist/types.js.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +5 -1
- package/dist/validation.js.map +1 -1
- package/package.json +2 -2
- package/dist/routing/ids.d.ts +0 -18
- package/dist/routing/ids.d.ts.map +0 -1
- package/dist/routing/ids.js +0 -41
- package/dist/routing/ids.js.map +0 -1
- package/dist/store/uuid.d.ts +0 -6
- package/dist/store/uuid.d.ts.map +0 -1
- package/dist/store/uuid.js +0 -64
- package/dist/store/uuid.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
* `@cogenta/api`: it declares what a field and a collection *are*, so the three
|
|
6
6
|
* packages can be built against the same shapes rather than against each other.
|
|
7
7
|
*
|
|
8
|
-
* It implements contract A, frozen at `schema@
|
|
9
|
-
* departure from the contract text is a bug in this file, not a liberty.
|
|
8
|
+
* It implements contract A, frozen at `schema@2.0` on 2026-08-16 (ADR-0022).
|
|
9
|
+
* Every departure from the contract text is a bug in this file, not a liberty.
|
|
10
10
|
*/
|
|
11
|
-
/**
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Contract A, "Types de champ". Closed set: adding one is a minor version.
|
|
13
|
+
*
|
|
14
|
+
* `taxonomy` joined the set in `schema@2.0` (ADR-0022) alongside
|
|
15
|
+
* `defineTaxonomy()`. It is not a `relation` with a different target: a
|
|
16
|
+
* relation points at a collection, and a taxonomy term is not content.
|
|
17
|
+
*/
|
|
18
|
+
export declare const FIELD_KINDS: readonly ['text', 'richText', 'slug', 'number', 'boolean', 'date', 'datetime', 'media', 'relation', 'select', 'json', 'geo', 'color', 'blocks', 'taxonomy'];
|
|
13
19
|
export type FieldKind = (typeof FIELD_KINDS)[number];
|
|
14
20
|
/** Contract A, "Permissions". Actions are fixed; role names are an open set. */
|
|
15
21
|
export declare const CONTENT_ACTIONS: readonly ['read', 'create', 'update', 'delete', 'publish'];
|
|
@@ -62,6 +68,19 @@ export interface CollectionVersioning {
|
|
|
62
68
|
/** Versions kept per entry. Unlimited history is a slow leak, not a feature. */
|
|
63
69
|
readonly keep?: number;
|
|
64
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* The purge window of a collection's trash (`schema@2.0`, ADR-0022).
|
|
73
|
+
*
|
|
74
|
+
* Declared on the model of `versioning.keep`: a bound, not a promise of
|
|
75
|
+
* forever. `trash: false` on the collection restores the pre-2.0 behaviour —
|
|
76
|
+
* `delete()` is an immediate hard delete, with nothing kept.
|
|
77
|
+
*/
|
|
78
|
+
export interface CollectionTrash {
|
|
79
|
+
/** Days a trashed entry is kept before `purgeExpired()` may remove it. */
|
|
80
|
+
readonly retainDays: number;
|
|
81
|
+
}
|
|
82
|
+
/** Days a trashed entry is kept when the collection says nothing. */
|
|
83
|
+
export declare const DEFAULT_TRASH_RETAIN_DAYS = 30;
|
|
65
84
|
export type CollectionPermissions = Readonly<Partial<Record<ContentAction, readonly string[]>>>;
|
|
66
85
|
export interface CollectionDefinition {
|
|
67
86
|
readonly name: string;
|
|
@@ -71,10 +90,63 @@ export interface CollectionDefinition {
|
|
|
71
90
|
};
|
|
72
91
|
readonly routing?: CollectionRouting;
|
|
73
92
|
readonly versioning?: CollectionVersioning;
|
|
93
|
+
/**
|
|
94
|
+
* Trash window. Absent means the default window; `false` means no trash at
|
|
95
|
+
* all, so `delete()` is the hard delete `purge()` performs.
|
|
96
|
+
*/
|
|
97
|
+
readonly trash?: CollectionTrash | false;
|
|
74
98
|
readonly fields: Readonly<Record<string, FieldDefinition>>;
|
|
75
99
|
readonly indexes?: readonly (readonly string[])[];
|
|
76
100
|
readonly permissions: CollectionPermissions;
|
|
77
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* A taxonomy, contract A § "Taxonomies" (`schema@2.0`, ADR-0022).
|
|
104
|
+
*
|
|
105
|
+
* A second top-level declarable object, beside `defineCollection()`. Its terms
|
|
106
|
+
* are **not content**: no `status`, no `version`, no `translationOf`. "Cuisine"
|
|
107
|
+
* and "Cooking" are one concept of classification, not two contents in a
|
|
108
|
+
* translation family — which is why labels are indexed by locale rather than
|
|
109
|
+
* split across rows the way ADR-0014 splits content.
|
|
110
|
+
*/
|
|
111
|
+
export interface TaxonomyDefinition {
|
|
112
|
+
readonly name: string;
|
|
113
|
+
/** Indexed by locale, exactly like a term's own labels. */
|
|
114
|
+
readonly labels: {
|
|
115
|
+
readonly singular: Readonly<Record<string, string>>;
|
|
116
|
+
readonly plural?: Readonly<Record<string, string>>;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Whether terms may be nested. A flat taxonomy (tags) refuses a parent
|
|
120
|
+
* outright rather than allowing a tree nobody renders.
|
|
121
|
+
*/
|
|
122
|
+
readonly hierarchical?: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Who may do what to the **terms**. The action vocabulary is the frozen one
|
|
125
|
+
* of contract A; `publish` has no meaning on a term and is refused.
|
|
126
|
+
*/
|
|
127
|
+
readonly permissions: CollectionPermissions;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* One term of a taxonomy.
|
|
131
|
+
*
|
|
132
|
+
* `path` is the materialised path (ADR-0022): the ids of every ancestor and of
|
|
133
|
+
* the term itself, slash-separated and slash-terminated, so "everything under
|
|
134
|
+
* this term" is a `like` the three dialects answer identically — never a
|
|
135
|
+
* recursive CTE, whose support diverges (ADR-0006).
|
|
136
|
+
*/
|
|
137
|
+
export interface TaxonomyTerm {
|
|
138
|
+
readonly id: string;
|
|
139
|
+
readonly taxonomy: string;
|
|
140
|
+
readonly parent: string | null;
|
|
141
|
+
readonly slug: string;
|
|
142
|
+
readonly labels: Readonly<Record<string, string>>;
|
|
143
|
+
readonly position: number;
|
|
144
|
+
readonly path: string;
|
|
145
|
+
/** 0 at the root. Derived from `path`, never stored twice by hand. */
|
|
146
|
+
readonly depth: number;
|
|
147
|
+
readonly createdAt: string;
|
|
148
|
+
readonly updatedAt: string;
|
|
149
|
+
}
|
|
78
150
|
/**
|
|
79
151
|
* Contract A, "Champs système". Present on every entry, never declared by the
|
|
80
152
|
* user, never optional — `provenance` least of all: the European AI framework
|
|
@@ -87,6 +159,16 @@ export interface SystemFields {
|
|
|
87
159
|
readonly createdBy: string | null;
|
|
88
160
|
readonly updatedBy: string | null;
|
|
89
161
|
readonly status: ContentStatus;
|
|
162
|
+
/**
|
|
163
|
+
* When this entry went to the trash, `null` while it has not (`schema@2.0`,
|
|
164
|
+
* ADR-0022).
|
|
165
|
+
*
|
|
166
|
+
* **Orthogonal to `status`, never a value of it.** A published article in the
|
|
167
|
+
* trash is still `published`, so `untrash()` gives back what was taken rather
|
|
168
|
+
* than quietly demoting it to a draft — and every `switch` on `ContentStatus`
|
|
169
|
+
* in the repository stays exhaustive.
|
|
170
|
+
*/
|
|
171
|
+
readonly deletedAt: string | null;
|
|
90
172
|
readonly locale: string;
|
|
91
173
|
readonly translationOf: string | null;
|
|
92
174
|
readonly version: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -5,10 +5,16 @@
|
|
|
5
5
|
* `@cogenta/api`: it declares what a field and a collection *are*, so the three
|
|
6
6
|
* packages can be built against the same shapes rather than against each other.
|
|
7
7
|
*
|
|
8
|
-
* It implements contract A, frozen at `schema@
|
|
9
|
-
* departure from the contract text is a bug in this file, not a liberty.
|
|
8
|
+
* It implements contract A, frozen at `schema@2.0` on 2026-08-16 (ADR-0022).
|
|
9
|
+
* Every departure from the contract text is a bug in this file, not a liberty.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Contract A, "Types de champ". Closed set: adding one is a minor version.
|
|
13
|
+
*
|
|
14
|
+
* `taxonomy` joined the set in `schema@2.0` (ADR-0022) alongside
|
|
15
|
+
* `defineTaxonomy()`. It is not a `relation` with a different target: a
|
|
16
|
+
* relation points at a collection, and a taxonomy term is not content.
|
|
10
17
|
*/
|
|
11
|
-
/** Contract A, "Types de champ (v1)". Closed set: adding one is a minor version. */
|
|
12
18
|
export const FIELD_KINDS = [
|
|
13
19
|
'text',
|
|
14
20
|
'richText',
|
|
@@ -24,9 +30,12 @@ export const FIELD_KINDS = [
|
|
|
24
30
|
'geo',
|
|
25
31
|
'color',
|
|
26
32
|
'blocks',
|
|
33
|
+
'taxonomy',
|
|
27
34
|
];
|
|
28
35
|
/** Contract A, "Permissions". Actions are fixed; role names are an open set. */
|
|
29
36
|
export const CONTENT_ACTIONS = ['read', 'create', 'update', 'delete', 'publish'];
|
|
30
37
|
export const CONTENT_STATUSES = ['draft', 'scheduled', 'published', 'archived'];
|
|
31
38
|
export const PROVENANCE_KINDS = ['human', 'assisted', 'generated'];
|
|
39
|
+
/** Days a trashed entry is kept when the collection says nothing. */
|
|
40
|
+
export const DEFAULT_TRASH_RETAIN_DAYS = 30;
|
|
32
41
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,UAAU;IACV,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,OAAO;IACP,UAAU;IACV,QAAQ;IACR,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,UAAU;CACF,CAAA;AAIV,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAA;AAIzF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAU,CAAA;AAIxF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAU,CAAA;AA+D3E,qEAAqE;AACrE,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA"}
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEvE;;;;;;GAMG;AAEH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEhC;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAShD,CAAA;AAED,eAAO,MAAM,cAAc;;;;kBAIzB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD,gFAAgF;AAChF,eAAO,MAAM,YAAY,QAA+B,CAAA;AAExD,kFAAkF;AAClF,eAAO,MAAM,aAAa,QAAwD,CAAA;AAElF,eAAO,MAAM,kBAAkB;;;iBAI7B,CAAA;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAiC9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEvE;;;;;;GAMG;AAEH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEhC;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAShD,CAAA;AAED,eAAO,MAAM,cAAc;;;;kBAIzB,CAAA;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD,gFAAgF;AAChF,eAAO,MAAM,YAAY,QAA+B,CAAA;AAExD,kFAAkF;AAClF,eAAO,MAAM,aAAa,QAAwD,CAAA;AAElF,eAAO,MAAM,kBAAkB;;;iBAI7B,CAAA;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAiC9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAQlE;AA0ED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,CAAC,CAAC,OAAO,CAoB7D;AAED,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,oBAAoB,GAAG,CAAC,CAAC,OAAO,CAQjF;AAED,4DAA4D;AAC5D,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,oBAAoB,GAAG,CAAC,CAAC,OAAO,CAMjF"}
|
package/dist/validation.js
CHANGED
|
@@ -58,7 +58,10 @@ function manyOf(item, field) {
|
|
|
58
58
|
export function isCollectionValued(field) {
|
|
59
59
|
if (field.kind === 'blocks')
|
|
60
60
|
return true;
|
|
61
|
-
const isManyKind = field.kind === 'media' ||
|
|
61
|
+
const isManyKind = field.kind === 'media' ||
|
|
62
|
+
field.kind === 'relation' ||
|
|
63
|
+
field.kind === 'select' ||
|
|
64
|
+
field.kind === 'taxonomy';
|
|
62
65
|
return isManyKind && field.options.many === true;
|
|
63
66
|
}
|
|
64
67
|
function baseSchemaFor(field) {
|
|
@@ -100,6 +103,7 @@ function baseSchemaFor(field) {
|
|
|
100
103
|
return z.iso.datetime({ offset: true });
|
|
101
104
|
case 'media':
|
|
102
105
|
case 'relation':
|
|
106
|
+
case 'taxonomy':
|
|
103
107
|
return field.options.many === true ? manyOf(idSchema(), field) : idSchema();
|
|
104
108
|
case 'select': {
|
|
105
109
|
const choice = z.enum(selectValues(field));
|
package/dist/validation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogenta/schema",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Content schema in code: collections, field types, generated types and migrations.",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"zod": "^4.4.3",
|
|
31
|
-
"@cogenta/core": "0.
|
|
31
|
+
"@cogenta/core": "0.3.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"typescript": "^7.0.2",
|
package/dist/routing/ids.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UUIDv7, generated by the application (ADR-0015).
|
|
3
|
-
*
|
|
4
|
-
* `node:crypto` ships `randomUUID` for v4 only, and v4 is exactly what ADR-0015
|
|
5
|
-
* rules out: random keys fragment a B-tree on insert, which degrades writes as
|
|
6
|
-
* the table grows. v7 puts a 48-bit millisecond timestamp first, so new rows
|
|
7
|
-
* land at the end of the index.
|
|
8
|
-
*
|
|
9
|
-
* Layout, per RFC 9562 §5.7:
|
|
10
|
-
*
|
|
11
|
-
* 0 1 2 3
|
|
12
|
-
* | unix_ts_ms (48 bits) | ver | rand_a | var | rand_b |
|
|
13
|
-
*
|
|
14
|
-
* Same-millisecond ordering is not guaranteed and is not needed: nothing here
|
|
15
|
-
* sorts by identifier for correctness, only for index locality.
|
|
16
|
-
*/
|
|
17
|
-
export declare function uuidv7(): string;
|
|
18
|
-
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/routing/ids.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,IAAI,MAAM,CA0B/B"}
|
package/dist/routing/ids.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { randomFillSync } from 'node:crypto';
|
|
2
|
-
/**
|
|
3
|
-
* UUIDv7, generated by the application (ADR-0015).
|
|
4
|
-
*
|
|
5
|
-
* `node:crypto` ships `randomUUID` for v4 only, and v4 is exactly what ADR-0015
|
|
6
|
-
* rules out: random keys fragment a B-tree on insert, which degrades writes as
|
|
7
|
-
* the table grows. v7 puts a 48-bit millisecond timestamp first, so new rows
|
|
8
|
-
* land at the end of the index.
|
|
9
|
-
*
|
|
10
|
-
* Layout, per RFC 9562 §5.7:
|
|
11
|
-
*
|
|
12
|
-
* 0 1 2 3
|
|
13
|
-
* | unix_ts_ms (48 bits) | ver | rand_a | var | rand_b |
|
|
14
|
-
*
|
|
15
|
-
* Same-millisecond ordering is not guaranteed and is not needed: nothing here
|
|
16
|
-
* sorts by identifier for correctness, only for index locality.
|
|
17
|
-
*/
|
|
18
|
-
export function uuidv7() {
|
|
19
|
-
const bytes = new Uint8Array(16);
|
|
20
|
-
randomFillSync(bytes);
|
|
21
|
-
const milliseconds = Date.now();
|
|
22
|
-
// Big-endian 48-bit timestamp. `Math.floor(ms / 2 ** 32)` rather than a shift:
|
|
23
|
-
// bitwise operators in JavaScript truncate to 32 bits and would drop the top.
|
|
24
|
-
bytes[0] = Math.floor(milliseconds / 2 ** 40) & 0xff;
|
|
25
|
-
bytes[1] = Math.floor(milliseconds / 2 ** 32) & 0xff;
|
|
26
|
-
bytes[2] = Math.floor(milliseconds / 2 ** 24) & 0xff;
|
|
27
|
-
bytes[3] = Math.floor(milliseconds / 2 ** 16) & 0xff;
|
|
28
|
-
bytes[4] = Math.floor(milliseconds / 2 ** 8) & 0xff;
|
|
29
|
-
bytes[5] = milliseconds & 0xff;
|
|
30
|
-
bytes[6] = ((bytes[6] ?? 0) & 0x0f) | 0x70; // version 7
|
|
31
|
-
bytes[8] = ((bytes[8] ?? 0) & 0x3f) | 0x80; // variant 10
|
|
32
|
-
const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
33
|
-
return [
|
|
34
|
-
hex.slice(0, 8),
|
|
35
|
-
hex.slice(8, 12),
|
|
36
|
-
hex.slice(12, 16),
|
|
37
|
-
hex.slice(16, 20),
|
|
38
|
-
hex.slice(20, 32),
|
|
39
|
-
].join('-');
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=ids.js.map
|
package/dist/routing/ids.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/routing/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,MAAM;IACpB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IAChC,cAAc,CAAC,KAAK,CAAC,CAAA;IAErB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC/B,+EAA+E;IAC/E,8EAA8E;IAC9E,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACpD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACpD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACpD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACpD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;IACnD,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAA;IAE9B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA,CAAC,YAAY;IACvD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA,CAAC,aAAa;IAExD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEpF,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;KAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACb,CAAC"}
|
package/dist/store/uuid.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
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
|
package/dist/store/uuid.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
package/dist/store/uuid.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
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
|
package/dist/store/uuid.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|