@polintpro/proposit-core 0.8.4 → 0.8.5
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/lib/core/argument-engine.d.ts +3 -0
- package/dist/lib/core/argument-engine.d.ts.map +1 -1
- package/dist/lib/core/argument-engine.js +18 -35
- package/dist/lib/core/argument-engine.js.map +1 -1
- package/dist/lib/core/claim-library.d.ts +14 -22
- package/dist/lib/core/claim-library.d.ts.map +1 -1
- package/dist/lib/core/claim-library.js +10 -185
- package/dist/lib/core/claim-library.js.map +1 -1
- package/dist/lib/core/claim-source-library.d.ts +1 -0
- package/dist/lib/core/claim-source-library.d.ts.map +1 -1
- package/dist/lib/core/claim-source-library.js +1 -0
- package/dist/lib/core/claim-source-library.js.map +1 -1
- package/dist/lib/core/expression-manager.d.ts +22 -0
- package/dist/lib/core/expression-manager.d.ts.map +1 -1
- package/dist/lib/core/expression-manager.js +67 -151
- package/dist/lib/core/expression-manager.js.map +1 -1
- package/dist/lib/core/fork-library.d.ts +9 -0
- package/dist/lib/core/fork-library.d.ts.map +1 -1
- package/dist/lib/core/fork-library.js +9 -0
- package/dist/lib/core/fork-library.js.map +1 -1
- package/dist/lib/core/fork-namespace.d.ts +13 -0
- package/dist/lib/core/fork-namespace.d.ts.map +1 -1
- package/dist/lib/core/fork-namespace.js +13 -0
- package/dist/lib/core/fork-namespace.js.map +1 -1
- package/dist/lib/core/invariant-violation-error.d.ts +4 -0
- package/dist/lib/core/invariant-violation-error.d.ts.map +1 -1
- package/dist/lib/core/invariant-violation-error.js +4 -0
- package/dist/lib/core/invariant-violation-error.js.map +1 -1
- package/dist/lib/core/parser/formula.d.ts +1 -0
- package/dist/lib/core/parser/formula.d.ts.map +1 -1
- package/dist/lib/core/parser/formula.js +1 -0
- package/dist/lib/core/parser/formula.js.map +1 -1
- package/dist/lib/core/premise-engine.d.ts +2 -0
- package/dist/lib/core/premise-engine.d.ts.map +1 -1
- package/dist/lib/core/premise-engine.js +35 -100
- package/dist/lib/core/premise-engine.js.map +1 -1
- package/dist/lib/core/source-library.d.ts +14 -22
- package/dist/lib/core/source-library.d.ts.map +1 -1
- package/dist/lib/core/source-library.js +10 -185
- package/dist/lib/core/source-library.js.map +1 -1
- package/dist/lib/core/versioned-library.d.ts +52 -0
- package/dist/lib/core/versioned-library.d.ts.map +1 -0
- package/dist/lib/core/versioned-library.js +192 -0
- package/dist/lib/core/versioned-library.js.map +1 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parsing/schemata.d.ts +2 -0
- package/dist/lib/parsing/schemata.d.ts.map +1 -1
- package/dist/lib/parsing/schemata.js +2 -0
- package/dist/lib/parsing/schemata.js.map +1 -1
- package/dist/lib/schemata/shared.d.ts +3 -0
- package/dist/lib/schemata/shared.d.ts.map +1 -1
- package/dist/lib/schemata/shared.js +3 -0
- package/dist/lib/schemata/shared.js.map +1 -1
- package/dist/lib/utils/position.d.ts +1 -0
- package/dist/lib/utils/position.d.ts.map +1 -1
- package/dist/lib/utils/position.js +1 -0
- package/dist/lib/utils/position.js.map +1 -1
- package/package.json +4 -2
|
@@ -1,196 +1,21 @@
|
|
|
1
|
-
import { Value } from "typebox/value";
|
|
2
1
|
import { CoreSourceSchema } from "../schemata/source.js";
|
|
3
|
-
import { DEFAULT_CHECKSUM_CONFIG } from "../consts.js";
|
|
4
|
-
import { entityChecksum } from "./checksum.js";
|
|
5
2
|
import { SOURCE_SCHEMA_INVALID, SOURCE_FROZEN_NO_SUCCESSOR, } from "../types/validation.js";
|
|
6
|
-
import {
|
|
7
|
-
export class SourceLibrary {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
restoreFromSnapshot(snap) {
|
|
15
|
-
this.entities = new Map();
|
|
16
|
-
for (const entity of snap.sources) {
|
|
17
|
-
let versions = this.entities.get(entity.id);
|
|
18
|
-
if (!versions) {
|
|
19
|
-
versions = new Map();
|
|
20
|
-
this.entities.set(entity.id, versions);
|
|
21
|
-
}
|
|
22
|
-
versions.set(entity.version, entity);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
withValidation(fn) {
|
|
26
|
-
const snap = this.snapshot();
|
|
27
|
-
try {
|
|
28
|
-
const result = fn();
|
|
29
|
-
const validation = this.validate();
|
|
30
|
-
if (!validation.ok) {
|
|
31
|
-
this.restoreFromSnapshot(snap);
|
|
32
|
-
throw new InvariantViolationError(validation.violations);
|
|
33
|
-
}
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
if (!(e instanceof InvariantViolationError)) {
|
|
38
|
-
this.restoreFromSnapshot(snap);
|
|
39
|
-
}
|
|
40
|
-
throw e;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
create(source) {
|
|
44
|
-
return this.withValidation(() => {
|
|
45
|
-
if (this.entities.has(source.id)) {
|
|
46
|
-
throw new Error(`Source with ID "${source.id}" already exists.`);
|
|
47
|
-
}
|
|
48
|
-
const full = {
|
|
49
|
-
...source,
|
|
50
|
-
version: 0,
|
|
51
|
-
frozen: false,
|
|
52
|
-
checksum: "",
|
|
53
|
-
};
|
|
54
|
-
full.checksum = this.computeChecksum(full);
|
|
55
|
-
const versions = new Map();
|
|
56
|
-
versions.set(0, full);
|
|
57
|
-
this.entities.set(full.id, versions);
|
|
58
|
-
return full;
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
update(id, updates) {
|
|
62
|
-
return this.withValidation(() => {
|
|
63
|
-
const versions = this.entities.get(id);
|
|
64
|
-
if (!versions) {
|
|
65
|
-
throw new Error(`Source "${id}" does not exist.`);
|
|
66
|
-
}
|
|
67
|
-
const maxVersion = this.maxVersion(versions);
|
|
68
|
-
const current = versions.get(maxVersion);
|
|
69
|
-
if (current.frozen) {
|
|
70
|
-
throw new Error(`Source "${id}" version ${maxVersion} is frozen and cannot be updated.`);
|
|
71
|
-
}
|
|
72
|
-
const updated = {
|
|
73
|
-
...current,
|
|
74
|
-
...updates,
|
|
75
|
-
id: current.id,
|
|
76
|
-
version: current.version,
|
|
77
|
-
frozen: current.frozen,
|
|
78
|
-
checksum: "",
|
|
79
|
-
};
|
|
80
|
-
updated.checksum = this.computeChecksum(updated);
|
|
81
|
-
versions.set(maxVersion, updated);
|
|
82
|
-
return updated;
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
freeze(id) {
|
|
86
|
-
return this.withValidation(() => {
|
|
87
|
-
const versions = this.entities.get(id);
|
|
88
|
-
if (!versions) {
|
|
89
|
-
throw new Error(`Source "${id}" does not exist.`);
|
|
90
|
-
}
|
|
91
|
-
const maxVersion = this.maxVersion(versions);
|
|
92
|
-
const current = versions.get(maxVersion);
|
|
93
|
-
if (current.frozen) {
|
|
94
|
-
throw new Error(`Source "${id}" version ${maxVersion} is already frozen.`);
|
|
95
|
-
}
|
|
96
|
-
const frozenEntity = {
|
|
97
|
-
...current,
|
|
98
|
-
frozen: true,
|
|
99
|
-
checksum: "",
|
|
100
|
-
};
|
|
101
|
-
frozenEntity.checksum = this.computeChecksum(frozenEntity);
|
|
102
|
-
versions.set(maxVersion, frozenEntity);
|
|
103
|
-
const nextVersion = maxVersion + 1;
|
|
104
|
-
const nextEntity = {
|
|
105
|
-
...current,
|
|
106
|
-
version: nextVersion,
|
|
107
|
-
frozen: false,
|
|
108
|
-
checksum: "",
|
|
109
|
-
};
|
|
110
|
-
nextEntity.checksum = this.computeChecksum(nextEntity);
|
|
111
|
-
versions.set(nextVersion, nextEntity);
|
|
112
|
-
return { frozen: frozenEntity, current: nextEntity };
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
get(id, version) {
|
|
116
|
-
return this.entities.get(id)?.get(version);
|
|
117
|
-
}
|
|
118
|
-
getCurrent(id) {
|
|
119
|
-
const versions = this.entities.get(id);
|
|
120
|
-
if (!versions)
|
|
121
|
-
return undefined;
|
|
122
|
-
return versions.get(this.maxVersion(versions));
|
|
123
|
-
}
|
|
124
|
-
getAll() {
|
|
125
|
-
const result = [];
|
|
126
|
-
for (const versions of this.entities.values()) {
|
|
127
|
-
for (const entity of versions.values()) {
|
|
128
|
-
result.push(entity);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return result;
|
|
132
|
-
}
|
|
133
|
-
getVersions(id) {
|
|
134
|
-
const versions = this.entities.get(id);
|
|
135
|
-
if (!versions)
|
|
136
|
-
return [];
|
|
137
|
-
return Array.from(versions.values()).sort((a, b) => a.version - b.version);
|
|
138
|
-
}
|
|
3
|
+
import { VersionedLibrary } from "./versioned-library.js";
|
|
4
|
+
export class SourceLibrary extends VersionedLibrary {
|
|
5
|
+
entityLabel = "Source";
|
|
6
|
+
entityType = "source";
|
|
7
|
+
schema = CoreSourceSchema;
|
|
8
|
+
checksumFieldsKey = "sourceFields";
|
|
9
|
+
schemaInvalidCode = SOURCE_SCHEMA_INVALID;
|
|
10
|
+
frozenSuccessorCode = SOURCE_FROZEN_NO_SUCCESSOR;
|
|
139
11
|
snapshot() {
|
|
140
12
|
return { sources: this.getAll() };
|
|
141
13
|
}
|
|
14
|
+
/** Restores a source library from a previously captured snapshot. */
|
|
142
15
|
static fromSnapshot(snapshot, options) {
|
|
143
16
|
const lib = new SourceLibrary(options);
|
|
144
|
-
|
|
145
|
-
let versions = lib.entities.get(entity.id);
|
|
146
|
-
if (!versions) {
|
|
147
|
-
versions = new Map();
|
|
148
|
-
lib.entities.set(entity.id, versions);
|
|
149
|
-
}
|
|
150
|
-
versions.set(entity.version, entity);
|
|
151
|
-
}
|
|
17
|
+
lib.restoreFromEntities(snapshot.sources);
|
|
152
18
|
return lib;
|
|
153
19
|
}
|
|
154
|
-
validate() {
|
|
155
|
-
const violations = [];
|
|
156
|
-
for (const [id, versions] of this.entities) {
|
|
157
|
-
const sortedVersions = [...versions.entries()].sort(([a], [b]) => a - b);
|
|
158
|
-
for (const [version, source] of sortedVersions) {
|
|
159
|
-
if (!Value.Check(CoreSourceSchema, source)) {
|
|
160
|
-
violations.push({
|
|
161
|
-
code: SOURCE_SCHEMA_INVALID,
|
|
162
|
-
message: `Source "${id}" version ${version} does not conform to schema`,
|
|
163
|
-
entityType: "source",
|
|
164
|
-
entityId: id,
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
if (source.frozen) {
|
|
168
|
-
const maxVer = this.maxVersion(versions);
|
|
169
|
-
if (version < maxVer && !versions.has(version + 1)) {
|
|
170
|
-
violations.push({
|
|
171
|
-
code: SOURCE_FROZEN_NO_SUCCESSOR,
|
|
172
|
-
message: `Source "${id}" version ${version} is frozen but has no successor version`,
|
|
173
|
-
entityType: "source",
|
|
174
|
-
entityId: id,
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return { ok: violations.length === 0, violations };
|
|
181
|
-
}
|
|
182
|
-
maxVersion(versions) {
|
|
183
|
-
let max = -1;
|
|
184
|
-
for (const v of versions.keys()) {
|
|
185
|
-
if (v > max)
|
|
186
|
-
max = v;
|
|
187
|
-
}
|
|
188
|
-
return max;
|
|
189
|
-
}
|
|
190
|
-
computeChecksum(entity) {
|
|
191
|
-
const fields = this.checksumConfig?.sourceFields ??
|
|
192
|
-
DEFAULT_CHECKSUM_CONFIG.sourceFields;
|
|
193
|
-
return entityChecksum(entity, fields);
|
|
194
|
-
}
|
|
195
20
|
}
|
|
196
21
|
//# sourceMappingURL=source-library.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-library.js","sourceRoot":"","sources":["../../../src/lib/core/source-library.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"source-library.js","sourceRoot":"","sources":["../../../src/lib/core/source-library.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAMxD,OAAO,EACH,qBAAqB,EACrB,0BAA0B,GAC7B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,MAAM,OAAO,aACT,SAAQ,gBAAyB;IAGd,WAAW,GAAG,QAAQ,CAAA;IACtB,UAAU,GAAG,QAAiB,CAAA;IAC9B,MAAM,GAAG,gBAAgB,CAAA;IACzB,iBAAiB,GAAG,cAAuB,CAAA;IAC3C,iBAAiB,GAAG,qBAAqB,CAAA;IACzC,mBAAmB,GAAG,0BAA0B,CAAA;IAE5D,QAAQ;QACX,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAA;IACrC,CAAC;IAED,qEAAqE;IAC9D,MAAM,CAAC,YAAY,CACtB,QAAyC,EACzC,OAAkD;QAElD,MAAM,GAAG,GAAG,IAAI,aAAa,CAAU,OAAO,CAAC,CAAA;QAC/C,GAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACzC,OAAO,GAAG,CAAA;IACd,CAAC;CACJ"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { TSchema } from "typebox";
|
|
2
|
+
import type { TCoreChecksumConfig } from "../types/checksum.js";
|
|
3
|
+
import type { TInvariantValidationResult, TInvariantViolationEntityType } from "../types/validation.js";
|
|
4
|
+
/** Base shape for entities managed by {@link VersionedLibrary}. */
|
|
5
|
+
export type TVersionedEntity = {
|
|
6
|
+
id: string;
|
|
7
|
+
version: number;
|
|
8
|
+
frozen: boolean;
|
|
9
|
+
checksum: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Abstract base class for versioned, freezable entity libraries.
|
|
13
|
+
* Provides CRUD, freeze/unfreeze lifecycle, schema validation, and checksum
|
|
14
|
+
* computation. Subclasses supply the entity label, schema, and validation codes.
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class VersionedLibrary<TEntity extends TVersionedEntity> {
|
|
17
|
+
protected entities: Map<string, Map<number, TEntity>>;
|
|
18
|
+
protected checksumConfig?: TCoreChecksumConfig;
|
|
19
|
+
protected abstract readonly entityLabel: string;
|
|
20
|
+
protected abstract readonly entityType: TInvariantViolationEntityType;
|
|
21
|
+
protected abstract readonly schema: TSchema;
|
|
22
|
+
protected abstract readonly checksumFieldsKey: keyof TCoreChecksumConfig;
|
|
23
|
+
protected abstract readonly schemaInvalidCode: string;
|
|
24
|
+
protected abstract readonly frozenSuccessorCode: string;
|
|
25
|
+
constructor(options?: {
|
|
26
|
+
checksumConfig?: TCoreChecksumConfig;
|
|
27
|
+
});
|
|
28
|
+
protected restoreFromEntities(items: TEntity[]): void;
|
|
29
|
+
protected withValidation<T>(fn: () => T): T;
|
|
30
|
+
/** Creates a new entity at version 0. Throws if the ID already exists. */
|
|
31
|
+
create(entity: Omit<TEntity, "version" | "frozen" | "checksum">): TEntity;
|
|
32
|
+
/** Applies partial updates to the latest version of an entity. Throws if the entity is frozen. */
|
|
33
|
+
update(id: string, updates: Partial<Omit<TEntity, "id" | "version" | "frozen" | "checksum">>): TEntity;
|
|
34
|
+
/** Freezes the latest version and creates a new mutable successor. Returns both. */
|
|
35
|
+
freeze(id: string): {
|
|
36
|
+
frozen: TEntity;
|
|
37
|
+
current: TEntity;
|
|
38
|
+
};
|
|
39
|
+
/** Returns a specific version of an entity, or `undefined` if not found. */
|
|
40
|
+
get(id: string, version: number): TEntity | undefined;
|
|
41
|
+
/** Returns the latest (highest-version) entity for the given ID, or `undefined` if not found. */
|
|
42
|
+
getCurrent(id: string): TEntity | undefined;
|
|
43
|
+
/** Returns every entity across all IDs and versions. */
|
|
44
|
+
getAll(): TEntity[];
|
|
45
|
+
/** Returns all versions of an entity sorted ascending by version number. */
|
|
46
|
+
getVersions(id: string): TEntity[];
|
|
47
|
+
/** Validates all entities against the schema and checks that frozen versions have successors. */
|
|
48
|
+
validate(): TInvariantValidationResult;
|
|
49
|
+
private maxVersion;
|
|
50
|
+
private computeChecksum;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=versioned-library.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioned-library.d.ts","sourceRoot":"","sources":["../../../src/lib/core/versioned-library.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG/D,OAAO,KAAK,EACR,0BAA0B,EAE1B,6BAA6B,EAChC,MAAM,wBAAwB,CAAA;AAG/B,mEAAmE;AACnE,MAAM,MAAM,gBAAgB,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;GAIG;AACH,8BAAsB,gBAAgB,CAAC,OAAO,SAAS,gBAAgB;IACnE,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACrD,SAAS,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAA;IAE9C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC/C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAA;IACrE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IAC3C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;IACxE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IACrD,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;gBAE3C,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,mBAAmB,CAAA;KAAE;IAK9D,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;IAYrD,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IAkB3C,0EAA0E;IACnE,MAAM,CACT,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,GACzD,OAAO;IAsBV,kGAAkG;IAC3F,MAAM,CACT,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CACZ,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC,CAC1D,GACF,OAAO;IA2BV,oFAAoF;IAC7E,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAmChE,4EAA4E;IACrE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI5D,iGAAiG;IAC1F,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAMlD,wDAAwD;IACjD,MAAM,IAAI,OAAO,EAAE;IAU1B,4EAA4E;IACrE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,EAAE;IAQzC,iGAAiG;IAC1F,QAAQ,IAAI,0BAA0B;IA+B7C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,eAAe;CAS1B"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { Value } from "typebox/value";
|
|
2
|
+
import { DEFAULT_CHECKSUM_CONFIG } from "../consts.js";
|
|
3
|
+
import { entityChecksum } from "./checksum.js";
|
|
4
|
+
import { InvariantViolationError } from "./invariant-violation-error.js";
|
|
5
|
+
/**
|
|
6
|
+
* Abstract base class for versioned, freezable entity libraries.
|
|
7
|
+
* Provides CRUD, freeze/unfreeze lifecycle, schema validation, and checksum
|
|
8
|
+
* computation. Subclasses supply the entity label, schema, and validation codes.
|
|
9
|
+
*/
|
|
10
|
+
export class VersionedLibrary {
|
|
11
|
+
entities;
|
|
12
|
+
checksumConfig;
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this.entities = new Map();
|
|
15
|
+
this.checksumConfig = options?.checksumConfig;
|
|
16
|
+
}
|
|
17
|
+
restoreFromEntities(items) {
|
|
18
|
+
this.entities = new Map();
|
|
19
|
+
for (const entity of items) {
|
|
20
|
+
let versions = this.entities.get(entity.id);
|
|
21
|
+
if (!versions) {
|
|
22
|
+
versions = new Map();
|
|
23
|
+
this.entities.set(entity.id, versions);
|
|
24
|
+
}
|
|
25
|
+
versions.set(entity.version, entity);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
withValidation(fn) {
|
|
29
|
+
const all = this.getAll();
|
|
30
|
+
try {
|
|
31
|
+
const result = fn();
|
|
32
|
+
const validation = this.validate();
|
|
33
|
+
if (!validation.ok) {
|
|
34
|
+
this.restoreFromEntities(all);
|
|
35
|
+
throw new InvariantViolationError(validation.violations);
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
if (!(e instanceof InvariantViolationError)) {
|
|
41
|
+
this.restoreFromEntities(all);
|
|
42
|
+
}
|
|
43
|
+
throw e;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Creates a new entity at version 0. Throws if the ID already exists. */
|
|
47
|
+
create(entity) {
|
|
48
|
+
return this.withValidation(() => {
|
|
49
|
+
if (this.entities.has(entity.id)) {
|
|
50
|
+
throw new Error(`${this.entityLabel} with ID "${entity.id}" already exists.`);
|
|
51
|
+
}
|
|
52
|
+
const full = {
|
|
53
|
+
...entity,
|
|
54
|
+
version: 0,
|
|
55
|
+
frozen: false,
|
|
56
|
+
checksum: "",
|
|
57
|
+
};
|
|
58
|
+
full.checksum = this.computeChecksum(full);
|
|
59
|
+
const versions = new Map();
|
|
60
|
+
versions.set(0, full);
|
|
61
|
+
this.entities.set(full.id, versions);
|
|
62
|
+
return full;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/** Applies partial updates to the latest version of an entity. Throws if the entity is frozen. */
|
|
66
|
+
update(id, updates) {
|
|
67
|
+
return this.withValidation(() => {
|
|
68
|
+
const versions = this.entities.get(id);
|
|
69
|
+
if (!versions) {
|
|
70
|
+
throw new Error(`${this.entityLabel} "${id}" does not exist.`);
|
|
71
|
+
}
|
|
72
|
+
const maxVersion = this.maxVersion(versions);
|
|
73
|
+
const current = versions.get(maxVersion);
|
|
74
|
+
if (current.frozen) {
|
|
75
|
+
throw new Error(`${this.entityLabel} "${id}" version ${maxVersion} is frozen and cannot be updated.`);
|
|
76
|
+
}
|
|
77
|
+
const updated = {
|
|
78
|
+
...current,
|
|
79
|
+
...updates,
|
|
80
|
+
id: current.id,
|
|
81
|
+
version: current.version,
|
|
82
|
+
frozen: current.frozen,
|
|
83
|
+
checksum: "",
|
|
84
|
+
};
|
|
85
|
+
updated.checksum = this.computeChecksum(updated);
|
|
86
|
+
versions.set(maxVersion, updated);
|
|
87
|
+
return updated;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/** Freezes the latest version and creates a new mutable successor. Returns both. */
|
|
91
|
+
freeze(id) {
|
|
92
|
+
return this.withValidation(() => {
|
|
93
|
+
const versions = this.entities.get(id);
|
|
94
|
+
if (!versions) {
|
|
95
|
+
throw new Error(`${this.entityLabel} "${id}" does not exist.`);
|
|
96
|
+
}
|
|
97
|
+
const maxVersion = this.maxVersion(versions);
|
|
98
|
+
const current = versions.get(maxVersion);
|
|
99
|
+
if (current.frozen) {
|
|
100
|
+
throw new Error(`${this.entityLabel} "${id}" version ${maxVersion} is already frozen.`);
|
|
101
|
+
}
|
|
102
|
+
const frozenEntity = {
|
|
103
|
+
...current,
|
|
104
|
+
frozen: true,
|
|
105
|
+
checksum: "",
|
|
106
|
+
};
|
|
107
|
+
frozenEntity.checksum = this.computeChecksum(frozenEntity);
|
|
108
|
+
versions.set(maxVersion, frozenEntity);
|
|
109
|
+
const nextVersion = maxVersion + 1;
|
|
110
|
+
const nextEntity = {
|
|
111
|
+
...current,
|
|
112
|
+
version: nextVersion,
|
|
113
|
+
frozen: false,
|
|
114
|
+
checksum: "",
|
|
115
|
+
};
|
|
116
|
+
nextEntity.checksum = this.computeChecksum(nextEntity);
|
|
117
|
+
versions.set(nextVersion, nextEntity);
|
|
118
|
+
return { frozen: frozenEntity, current: nextEntity };
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/** Returns a specific version of an entity, or `undefined` if not found. */
|
|
122
|
+
get(id, version) {
|
|
123
|
+
return this.entities.get(id)?.get(version);
|
|
124
|
+
}
|
|
125
|
+
/** Returns the latest (highest-version) entity for the given ID, or `undefined` if not found. */
|
|
126
|
+
getCurrent(id) {
|
|
127
|
+
const versions = this.entities.get(id);
|
|
128
|
+
if (!versions)
|
|
129
|
+
return undefined;
|
|
130
|
+
return versions.get(this.maxVersion(versions));
|
|
131
|
+
}
|
|
132
|
+
/** Returns every entity across all IDs and versions. */
|
|
133
|
+
getAll() {
|
|
134
|
+
const result = [];
|
|
135
|
+
for (const versions of this.entities.values()) {
|
|
136
|
+
for (const entity of versions.values()) {
|
|
137
|
+
result.push(entity);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
/** Returns all versions of an entity sorted ascending by version number. */
|
|
143
|
+
getVersions(id) {
|
|
144
|
+
const versions = this.entities.get(id);
|
|
145
|
+
if (!versions)
|
|
146
|
+
return [];
|
|
147
|
+
return Array.from(versions.values()).sort((a, b) => a.version - b.version);
|
|
148
|
+
}
|
|
149
|
+
/** Validates all entities against the schema and checks that frozen versions have successors. */
|
|
150
|
+
validate() {
|
|
151
|
+
const violations = [];
|
|
152
|
+
for (const [id, versions] of this.entities) {
|
|
153
|
+
const sortedVersions = [...versions.entries()].sort(([a], [b]) => a - b);
|
|
154
|
+
for (const [version, entity] of sortedVersions) {
|
|
155
|
+
if (!Value.Check(this.schema, entity)) {
|
|
156
|
+
violations.push({
|
|
157
|
+
code: this.schemaInvalidCode,
|
|
158
|
+
message: `${this.entityLabel} "${id}" version ${version} does not conform to schema`,
|
|
159
|
+
entityType: this.entityType,
|
|
160
|
+
entityId: id,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
if (entity.frozen) {
|
|
164
|
+
const maxVer = this.maxVersion(versions);
|
|
165
|
+
if (version < maxVer && !versions.has(version + 1)) {
|
|
166
|
+
violations.push({
|
|
167
|
+
code: this.frozenSuccessorCode,
|
|
168
|
+
message: `${this.entityLabel} "${id}" version ${version} is frozen but has no successor version`,
|
|
169
|
+
entityType: this.entityType,
|
|
170
|
+
entityId: id,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return { ok: violations.length === 0, violations };
|
|
177
|
+
}
|
|
178
|
+
maxVersion(versions) {
|
|
179
|
+
let max = -1;
|
|
180
|
+
for (const v of versions.keys()) {
|
|
181
|
+
if (v > max)
|
|
182
|
+
max = v;
|
|
183
|
+
}
|
|
184
|
+
return max;
|
|
185
|
+
}
|
|
186
|
+
computeChecksum(entity) {
|
|
187
|
+
const fields = this.checksumConfig?.[this.checksumFieldsKey] ??
|
|
188
|
+
DEFAULT_CHECKSUM_CONFIG[this.checksumFieldsKey];
|
|
189
|
+
return entityChecksum(entity, fields);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=versioned-library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versioned-library.js","sourceRoot":"","sources":["../../../src/lib/core/versioned-library.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export type { TExpressionManagerSnapshot } from "./core/expression-manager.js";
|
|
|
12
12
|
export type { TVariableManagerSnapshot } from "./core/variable-manager.js";
|
|
13
13
|
export { ClaimLibrary } from "./core/claim-library.js";
|
|
14
14
|
export { SourceLibrary } from "./core/source-library.js";
|
|
15
|
+
export { VersionedLibrary } from "./core/versioned-library.js";
|
|
16
|
+
export type { TVersionedEntity } from "./core/versioned-library.js";
|
|
15
17
|
export { ClaimSourceLibrary } from "./core/claim-source-library.js";
|
|
16
18
|
export { ArgumentLibrary } from "./core/argument-library.js";
|
|
17
19
|
export type { TArgumentLibraryLibraries } from "./core/argument-library.js";
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7E,YAAY,EACR,mBAAmB,EACnB,uBAAuB,GAC1B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACtE,mBAAmB,4BAA4B,CAAA;AAC/C,YAAY,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAC9E,YAAY,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,YAAY,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnE,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,YAAY,EACR,oBAAoB,EACpB,sBAAsB,GACzB,MAAM,8BAA8B,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,GAC5B,MAAM,mBAAmB,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,OAAO,EACH,WAAW,EACX,kBAAkB,EAClB,cAAc,GACjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,GAC3B,MAAM,gBAAgB,CAAA;AACvB,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACH,2BAA2B,EAC3B,mBAAmB,GACtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACH,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GAC1B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,YAAY,EACR,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,GACpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,GACX,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export { ArgumentEngine, defaultGenerateId } from "./core/argument-engine.js";
|
|
|
7
7
|
export { PremiseEngine } from "./core/premise-engine.js";
|
|
8
8
|
export { ClaimLibrary } from "./core/claim-library.js";
|
|
9
9
|
export { SourceLibrary } from "./core/source-library.js";
|
|
10
|
+
export { VersionedLibrary } from "./core/versioned-library.js";
|
|
10
11
|
export { ClaimSourceLibrary } from "./core/claim-source-library.js";
|
|
11
12
|
export { ArgumentLibrary } from "./core/argument-library.js";
|
|
12
13
|
export { ForkNamespace } from "./core/fork-namespace.js";
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAK7E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAKxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAK9D,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAEtE,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,GAC5B,MAAM,mBAAmB,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,OAAO,EACH,WAAW,EACX,kBAAkB,EAClB,cAAc,GACjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,GAC3B,MAAM,gBAAgB,CAAA;AACvB,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACH,2BAA2B,EAC3B,mBAAmB,GACtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACH,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GAC1B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAOvD,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,GACX,MAAM,qBAAqB,CAAA;AAE5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAK7E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAKxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAK9D,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAEtE,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,GAC5B,MAAM,mBAAmB,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,OAAO,EACH,WAAW,EACX,kBAAkB,EAClB,cAAc,GACjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,GAC3B,MAAM,gBAAgB,CAAA;AACvB,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACH,2BAA2B,EAC3B,mBAAmB,GACtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACH,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,GAC1B,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAOvD,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,GACX,MAAM,qBAAqB,CAAA;AAE5B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA"}
|
|
@@ -72,6 +72,8 @@ export declare const ParsedArgumentResponseSchema: Type.TObject<{
|
|
|
72
72
|
failureText: Type.TUnion<[Type.TString, Type.TNull]>;
|
|
73
73
|
}>;
|
|
74
74
|
export type TParsedArgumentResponse = Static<typeof ParsedArgumentResponseSchema>;
|
|
75
|
+
/** Builds a composite response schema by merging optional per-entity schema extensions into the base parsing schemata. */
|
|
75
76
|
export declare function buildParsingResponseSchema(options?: TParsingSchemaOptions): TSchema;
|
|
77
|
+
/** Returns a plain JSON-serializable copy of the given schema (defaults to {@link ParsedArgumentResponseSchema}). */
|
|
76
78
|
export declare function getParsingResponseSchema(schema?: TSchema): Record<string, unknown>;
|
|
77
79
|
//# sourceMappingURL=schemata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemata.d.ts","sourceRoot":"","sources":["../../../src/lib/parsing/schemata.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,KAAK,MAAM,EAAgB,KAAK,OAAO,EAAE,MAAM,SAAS,CAAA;AAEvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,mBAAmB,qGAI9B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;EAU7B,CAAA;AACD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,eAAO,MAAM,oBAAoB;;;;EAOhC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,kBAAkB;;;EAM9B,CAAA;AACD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,mBAAmB;;;EAM/B,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;EAShC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;EAQxC,CAAA;AACD,MAAM,MAAM,uBAAuB,GAAG,MAAM,CACxC,OAAO,4BAA4B,CACtC,CAAA;AASD,wBAAgB,0BAA0B,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAgET;AAED,wBAAgB,wBAAwB,CACpC,MAAM,CAAC,EAAE,OAAO,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB"}
|
|
1
|
+
{"version":3,"file":"schemata.d.ts","sourceRoot":"","sources":["../../../src/lib/parsing/schemata.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,KAAK,MAAM,EAAgB,KAAK,OAAO,EAAE,MAAM,SAAS,CAAA;AAEvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,mBAAmB,qGAI9B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;EAU7B,CAAA;AACD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,eAAO,MAAM,oBAAoB;;;;EAOhC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,kBAAkB;;;EAM9B,CAAA;AACD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,mBAAmB;;;EAM/B,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;EAShC,CAAA;AACD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEjE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;EAQxC,CAAA;AACD,MAAM,MAAM,uBAAuB,GAAG,MAAM,CACxC,OAAO,4BAA4B,CACtC,CAAA;AASD,0HAA0H;AAC1H,wBAAgB,0BAA0B,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAChC,OAAO,CAgET;AAED,qHAAqH;AACrH,wBAAgB,wBAAwB,CACpC,MAAM,CAAC,EAAE,OAAO,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB"}
|
|
@@ -41,6 +41,7 @@ export const ParsedArgumentResponseSchema = Type.Object({
|
|
|
41
41
|
function mergeObjectSchemas(base, extension) {
|
|
42
42
|
return Type.Object({ ...base.properties, ...extension.properties }, { additionalProperties: true });
|
|
43
43
|
}
|
|
44
|
+
/** Builds a composite response schema by merging optional per-entity schema extensions into the base parsing schemata. */
|
|
44
45
|
export function buildParsingResponseSchema(options) {
|
|
45
46
|
if (!options)
|
|
46
47
|
return ParsedArgumentResponseSchema;
|
|
@@ -83,6 +84,7 @@ export function buildParsingResponseSchema(options) {
|
|
|
83
84
|
: Type.Object(baseResponseProps, { additionalProperties: true });
|
|
84
85
|
return responseSch;
|
|
85
86
|
}
|
|
87
|
+
/** Returns a plain JSON-serializable copy of the given schema (defaults to {@link ParsedArgumentResponseSchema}). */
|
|
86
88
|
export function getParsingResponseSchema(schema) {
|
|
87
89
|
const target = schema ?? ParsedArgumentResponseSchema;
|
|
88
90
|
return JSON.parse(JSON.stringify(target));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemata.js","sourceRoot":"","sources":["../../../src/lib/parsing/schemata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schemata.js","sourceRoot":"","sources":["../../../src/lib/parsing/schemata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Type, { type Static, type TSchema, type TSchemaOptions } from "typebox";
|
|
2
|
+
/** Custom TypeBox type that validates, converts, and clones `Date` values. */
|
|
2
3
|
export declare class TDateType extends Type.Base<Date> {
|
|
3
4
|
readonly type: DateConstructor;
|
|
4
5
|
Check(value: unknown): value is Date;
|
|
@@ -6,6 +7,7 @@ export declare class TDateType extends Type.Base<Date> {
|
|
|
6
7
|
Convert(value: unknown): Date;
|
|
7
8
|
Clone(): Type.Base<Date>;
|
|
8
9
|
}
|
|
10
|
+
/** Creates a new {@link TDateType} schema instance. */
|
|
9
11
|
export declare function dateType(): TDateType;
|
|
10
12
|
export declare const EncodableDate: TDateType;
|
|
11
13
|
export declare const JsonPrimitiveSchema: Type.TUnion<[Type.TString, Type.TNumber, Type.TBoolean, Type.TNull, TDateType]>;
|
|
@@ -22,6 +24,7 @@ export type TJsonValue = TJsonPrimitive | {
|
|
|
22
24
|
} | TJsonValue[];
|
|
23
25
|
export type TJsonObject = Record<string, TJsonValue>;
|
|
24
26
|
export type TJsonArray = TJsonValue[];
|
|
27
|
+
/** Wraps a TypeBox schema in a `Union([schema, Null()])` with `default: null`. */
|
|
25
28
|
export declare const Nullable: <T extends TSchema>(schema: T, options?: Omit<TSchemaOptions, "default">) => Type.TUnion<[T, Type.TNull]>;
|
|
26
29
|
export declare const UUID: Type.TString;
|
|
27
30
|
export type TUUID = Static<typeof UUID>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/lib/schemata/shared.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAK9E,qBAAa,SAAU,SAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1C,SAAgB,IAAI,kBAAO;IAEX,KAAK,CAAC,KAAK,EAAE,OAAO;IAGpB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE;IAIhC,OAAO,CAAC,KAAK,EAAE,OAAO;IAQtB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;CAG3C;AACD,wBAAgB,QAAQ,IAAI,SAAS,CAEpC;AACD,eAAO,MAAM,aAAa,WAAa,CAAA;AAKvC,eAAO,MAAM,mBAAmB,iFAM9B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,eAAe;;qBAa3B,CAAA;AAED,eAAO,MAAM,gBAAgB,iCAAyC,CAAA;AAEtE,eAAO,MAAM,eAAe;;sBAA8B,CAAA;AAI1D,MAAM,MAAM,UAAU,GAChB,cAAc,GACd;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,GAC7B,UAAU,EAAE,CAAA;AAClB,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACpD,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;AAKrC,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,OAAO,EACtC,QAAQ,CAAC,EACT,UAAU,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,iCAG5C,CAAA;AACD,eAAO,MAAM,IAAI,cAAgB,CAAA;AACjC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAA;AAEvC,kHAAkH;AAClH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,IAAI,IAAI,CAClE,CAAC,EACD,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CACzD,GACG,OAAO,CACH,IAAI,CACA,CAAC,EACD,OAAO,CACH,MAAM,CAAC,EACP,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CACzD,CACJ,CACJ,CAAA;AAEL,uGAAuG;AACvG,MAAM,MAAM,6BAA6B,CACrC,CAAC,SAAS;IACN,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,gBAAgB,EAAE,OAAO,CAAA;CAC5B,IACD,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/lib/schemata/shared.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAK9E,8EAA8E;AAC9E,qBAAa,SAAU,SAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1C,SAAgB,IAAI,kBAAO;IAEX,KAAK,CAAC,KAAK,EAAE,OAAO;IAGpB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE;IAIhC,OAAO,CAAC,KAAK,EAAE,OAAO;IAQtB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;CAG3C;AACD,uDAAuD;AACvD,wBAAgB,QAAQ,IAAI,SAAS,CAEpC;AACD,eAAO,MAAM,aAAa,WAAa,CAAA;AAKvC,eAAO,MAAM,mBAAmB,iFAM9B,CAAA;AACF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D,eAAO,MAAM,eAAe;;qBAa3B,CAAA;AAED,eAAO,MAAM,gBAAgB,iCAAyC,CAAA;AAEtE,eAAO,MAAM,eAAe;;sBAA8B,CAAA;AAI1D,MAAM,MAAM,UAAU,GAChB,cAAc,GACd;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,GAC7B,UAAU,EAAE,CAAA;AAClB,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AACpD,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;AAKrC,kFAAkF;AAClF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,OAAO,EACtC,QAAQ,CAAC,EACT,UAAU,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,iCAG5C,CAAA;AACD,eAAO,MAAM,IAAI,cAAgB,CAAA;AACjC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAA;AAEvC,kHAAkH;AAClH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,IAAI,IAAI,CAClE,CAAC,EACD,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CACzD,GACG,OAAO,CACH,IAAI,CACA,CAAC,EACD,OAAO,CACH,MAAM,CAAC,EACP,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CACzD,CACJ,CACJ,CAAA;AAEL,uGAAuG;AACvG,MAAM,MAAM,6BAA6B,CACrC,CAAC,SAAS;IACN,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,gBAAgB,EAAE,OAAO,CAAA;CAC5B,IACD,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,CAAC,CAAA"}
|
|
@@ -2,6 +2,7 @@ import Type, {} from "typebox";
|
|
|
2
2
|
// ---------------------------------------------------------------------------
|
|
3
3
|
// EncodableDate — custom TypeBox type for Date values
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
5
|
+
/** Custom TypeBox type that validates, converts, and clones `Date` values. */
|
|
5
6
|
export class TDateType extends Type.Base {
|
|
6
7
|
type = Date;
|
|
7
8
|
Check(value) {
|
|
@@ -26,6 +27,7 @@ export class TDateType extends Type.Base {
|
|
|
26
27
|
return new TDateType();
|
|
27
28
|
}
|
|
28
29
|
}
|
|
30
|
+
/** Creates a new {@link TDateType} schema instance. */
|
|
29
31
|
export function dateType() {
|
|
30
32
|
return new TDateType();
|
|
31
33
|
}
|
|
@@ -56,6 +58,7 @@ export const JsonArraySchema = Type.Array(JsonValueSchema);
|
|
|
56
58
|
// ---------------------------------------------------------------------------
|
|
57
59
|
// Helpers
|
|
58
60
|
// ---------------------------------------------------------------------------
|
|
61
|
+
/** Wraps a TypeBox schema in a `Union([schema, Null()])` with `default: null`. */
|
|
59
62
|
export const Nullable = (schema, options) => {
|
|
60
63
|
return Type.Union([schema, Type.Null()], { ...options, default: null });
|
|
61
64
|
};
|