edinburgh 0.4.5 → 0.5.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/README.md +268 -374
- package/build/src/datapack.js +1 -1
- package/build/src/datapack.js.map +1 -1
- package/build/src/edinburgh.d.ts +5 -5
- package/build/src/edinburgh.js +8 -7
- package/build/src/edinburgh.js.map +1 -1
- package/build/src/indexes.d.ts +46 -116
- package/build/src/indexes.js +148 -180
- package/build/src/indexes.js.map +1 -1
- package/build/src/migrate.js +11 -31
- package/build/src/migrate.js.map +1 -1
- package/build/src/models.d.ts +74 -49
- package/build/src/models.js +112 -165
- package/build/src/models.js.map +1 -1
- package/build/src/types.d.ts +30 -21
- package/build/src/types.js +16 -30
- package/build/src/types.js.map +1 -1
- package/package.json +1 -3
- package/skill/BaseIndex_batchProcess.md +1 -1
- package/skill/BaseIndex_find.md +2 -2
- package/skill/BaseIndex_find_2.md +7 -0
- package/skill/BaseIndex_find_3.md +7 -0
- package/skill/BaseIndex_find_4.md +7 -0
- package/skill/Model.md +5 -7
- package/skill/Model_batchProcess.md +8 -0
- package/skill/Model_delete.md +1 -1
- package/skill/Model_migrate.md +2 -4
- package/skill/Model_preCommit.md +2 -4
- package/skill/Model_preventPersist.md +1 -1
- package/skill/Model_replaceInto.md +2 -2
- package/skill/NonPrimaryIndex.md +10 -0
- package/skill/SKILL.md +146 -144
- package/skill/SecondaryIndex.md +2 -2
- package/skill/UniqueIndex.md +2 -2
- package/skill/defineModel.md +22 -0
- package/skill/field.md +2 -2
- package/skill/link.md +11 -9
- package/skill/transact.md +2 -2
- package/src/datapack.ts +1 -1
- package/src/edinburgh.ts +8 -9
- package/src/indexes.ts +157 -276
- package/src/migrate.ts +9 -30
- package/src/models.ts +188 -174
- package/src/types.ts +31 -26
- package/skill/Model_findAll.md +0 -12
- package/skill/PrimaryIndex.md +0 -8
- package/skill/PrimaryIndex_get.md +0 -17
- package/skill/PrimaryIndex_getLazy.md +0 -13
- package/skill/UniqueIndex_get.md +0 -17
- package/skill/index.md +0 -32
- package/skill/primary.md +0 -26
- package/skill/registerModel.md +0 -26
- package/skill/unique.md +0 -32
package/build/src/models.js
CHANGED
|
@@ -19,8 +19,8 @@ export function currentTxn() {
|
|
|
19
19
|
throw new DatabaseError("No active transaction. Operations must be performed within a transact() callback.", 'NO_TRANSACTION');
|
|
20
20
|
return txn;
|
|
21
21
|
}
|
|
22
|
-
import { PrimaryIndex } from "./indexes.js";
|
|
23
|
-
import { addErrorPath,
|
|
22
|
+
import { PrimaryIndex, UniqueIndex, SecondaryIndex } from "./indexes.js";
|
|
23
|
+
import { addErrorPath, dbGet, hashBytes } from "./utils.js";
|
|
24
24
|
/**
|
|
25
25
|
* Create a field definition for a model property.
|
|
26
26
|
*
|
|
@@ -35,10 +35,10 @@ import { addErrorPath, logLevel, dbGet, hashBytes, bytesEqual } from "./utils.js
|
|
|
35
35
|
*
|
|
36
36
|
* @example
|
|
37
37
|
* ```typescript
|
|
38
|
-
*
|
|
38
|
+
* const User = E.defineModel(class {
|
|
39
39
|
* name = E.field(E.string, {description: "User's full name"});
|
|
40
40
|
* age = E.field(E.opt(E.number), {description: "User's age", default: 25});
|
|
41
|
-
* }
|
|
41
|
+
* });
|
|
42
42
|
* ```
|
|
43
43
|
*/
|
|
44
44
|
export function field(type, options = {}) {
|
|
@@ -54,76 +54,90 @@ function isObjectEmpty(obj) {
|
|
|
54
54
|
}
|
|
55
55
|
return true;
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
*/
|
|
74
|
-
export function registerModel(MyModel) {
|
|
75
|
-
const MockModel = getMockModel(MyModel);
|
|
76
|
-
// Copy own static methods/properties
|
|
77
|
-
for (const name of Object.getOwnPropertyNames(MyModel)) {
|
|
78
|
-
if (name !== 'length' && name !== 'prototype' && name !== 'name' && name !== 'mock' && name !== 'override') {
|
|
79
|
-
MockModel[name] = MyModel[name];
|
|
57
|
+
let autoTableNameId = 0;
|
|
58
|
+
export function defineModel(cls, opts) {
|
|
59
|
+
Object.setPrototypeOf(cls.prototype, Model.prototype);
|
|
60
|
+
const MockModel = function (initial, txn = currentTxn()) {
|
|
61
|
+
this._txn = txn;
|
|
62
|
+
txn.instances.add(this);
|
|
63
|
+
if (initial)
|
|
64
|
+
Object.assign(this, initial);
|
|
65
|
+
};
|
|
66
|
+
cls.prototype.constructor = MockModel;
|
|
67
|
+
Object.setPrototypeOf(MockModel, Model);
|
|
68
|
+
MockModel.prototype = cls.prototype;
|
|
69
|
+
MockModel._original = cls;
|
|
70
|
+
for (const name of Object.getOwnPropertyNames(cls)) {
|
|
71
|
+
if (name !== 'length' && name !== 'prototype' && name !== 'name') {
|
|
72
|
+
MockModel[name] = cls[name];
|
|
80
73
|
}
|
|
81
74
|
}
|
|
82
|
-
MockModel.tableName
|
|
83
|
-
// Register the constructor by name
|
|
75
|
+
MockModel.tableName = opts?.tableName || cls.name || `Model${++autoTableNameId}`;
|
|
84
76
|
if (MockModel.tableName in modelRegistry) {
|
|
85
|
-
if (!
|
|
77
|
+
if (!opts?.override) {
|
|
86
78
|
throw new DatabaseError(`Model with table name '${MockModel.tableName}' already registered`, 'INIT_ERROR');
|
|
87
79
|
}
|
|
88
80
|
delete modelRegistry[MockModel.tableName];
|
|
89
81
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
82
|
+
const instance = new cls();
|
|
83
|
+
if (!opts?.pk && !instance.id) {
|
|
84
|
+
instance.id = { type: identifier };
|
|
85
|
+
}
|
|
86
|
+
MockModel.fields = {};
|
|
87
|
+
for (const key in instance) {
|
|
88
|
+
const value = instance[key];
|
|
89
|
+
if (value && value.type instanceof TypeWrapper) {
|
|
90
|
+
MockModel.fields[key] = value;
|
|
91
|
+
const defObj = value.default === undefined ? value.type : value;
|
|
92
|
+
const def = defObj.default;
|
|
93
|
+
if (typeof def === 'function') {
|
|
94
|
+
Object.defineProperty(MockModel.prototype, key, {
|
|
95
|
+
get() {
|
|
96
|
+
return (this[key] = def.call(defObj, this));
|
|
97
|
+
},
|
|
98
|
+
set(val) {
|
|
99
|
+
Object.defineProperty(this, key, {
|
|
100
|
+
value: val,
|
|
101
|
+
configurable: true,
|
|
102
|
+
writable: true,
|
|
103
|
+
enumerable: true,
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
configurable: true,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
else if (def !== undefined) {
|
|
110
|
+
MockModel.prototype[key] = def;
|
|
111
|
+
}
|
|
106
112
|
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
}
|
|
114
|
+
if (opts?.pk) {
|
|
115
|
+
new PrimaryIndex(MockModel, Array.isArray(opts.pk) ? opts.pk : [opts.pk]);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
new PrimaryIndex(MockModel, ['id']);
|
|
119
|
+
}
|
|
120
|
+
const normalizeSpec = (spec) => typeof spec === 'string' ? [spec] : spec;
|
|
121
|
+
if (opts?.unique) {
|
|
122
|
+
for (const [name, spec] of Object.entries(opts.unique)) {
|
|
123
|
+
MockModel[name] = new UniqueIndex(MockModel, normalizeSpec(spec));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (opts?.index) {
|
|
127
|
+
for (const [name, spec] of Object.entries(opts.index)) {
|
|
128
|
+
MockModel[name] = new SecondaryIndex(MockModel, normalizeSpec(spec));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
modelRegistry[MockModel.tableName] = MockModel;
|
|
116
132
|
scheduleInit();
|
|
117
133
|
return MockModel;
|
|
118
134
|
}
|
|
119
|
-
// Model base class and related symbols/state
|
|
120
|
-
const INIT_INSTANCE_SYMBOL = Symbol();
|
|
121
135
|
/**
|
|
122
136
|
* Base class for all database models in the Edinburgh ORM.
|
|
123
137
|
*
|
|
124
138
|
* Models represent database entities with typed fields, automatic serialization,
|
|
125
|
-
* change tracking, and relationship management.
|
|
126
|
-
*
|
|
139
|
+
* change tracking, and relationship management. Model classes are created using
|
|
140
|
+
* `E.defineModel()`.
|
|
127
141
|
*
|
|
128
142
|
* ### Schema Evolution
|
|
129
143
|
*
|
|
@@ -159,16 +173,14 @@ const INIT_INSTANCE_SYMBOL = Symbol();
|
|
|
159
173
|
*
|
|
160
174
|
* @example
|
|
161
175
|
* ```typescript
|
|
162
|
-
*
|
|
163
|
-
* class User extends E.Model<User> {
|
|
164
|
-
* static pk = E.primary(User, "id");
|
|
165
|
-
*
|
|
176
|
+
* const User = E.defineModel(class {
|
|
166
177
|
* id = E.field(E.identifier);
|
|
167
178
|
* name = E.field(E.string);
|
|
168
179
|
* email = E.field(E.string);
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
* }
|
|
180
|
+
* }, {
|
|
181
|
+
* pk: "id",
|
|
182
|
+
* unique: { byEmail: "email" },
|
|
183
|
+
* });
|
|
172
184
|
* ```
|
|
173
185
|
*/
|
|
174
186
|
export class Model {
|
|
@@ -177,10 +189,16 @@ export class Model {
|
|
|
177
189
|
static _secondaries;
|
|
178
190
|
/** The database table name (defaults to class name). */
|
|
179
191
|
static tableName;
|
|
180
|
-
/** When true,
|
|
192
|
+
/** When true, defineModel replaces an existing model with the same tableName. */
|
|
181
193
|
static override;
|
|
182
194
|
/** Field configuration metadata. */
|
|
183
195
|
static fields;
|
|
196
|
+
// Alias statics that delegate to _primary, used by migrate.ts
|
|
197
|
+
static get _indexId() { return this._primary?._indexId; }
|
|
198
|
+
static get _currentVersion() { return this._primary._currentVersion; }
|
|
199
|
+
static get _pkFieldTypes() { return this._primary._fieldTypes; }
|
|
200
|
+
static _loadVersionInfo(txnId, version) { return this._primary._loadVersionInfo(txnId, version); }
|
|
201
|
+
static _writePrimary(txn, pk, data) { this._primary._write(txn, pk, data); }
|
|
184
202
|
/*
|
|
185
203
|
* IMPORTANT: We cannot use instance property initializers here, because we will be
|
|
186
204
|
* initializing the class through a fake constructor that will skip these. This is
|
|
@@ -197,76 +215,19 @@ export class Model {
|
|
|
197
215
|
_primaryKeyHash;
|
|
198
216
|
_txn;
|
|
199
217
|
constructor(initial = {}) {
|
|
200
|
-
|
|
201
|
-
// be created by the 'fake' constructor. The typing for `initial` *is* important though.
|
|
202
|
-
if (initial === INIT_INSTANCE_SYMBOL)
|
|
203
|
-
return;
|
|
204
|
-
throw new DatabaseError("The model needs a @E.registerModel decorator", 'INIT_ERROR');
|
|
218
|
+
throw new DatabaseError("Use defineModel() to create model classes", 'INIT_ERROR');
|
|
205
219
|
}
|
|
206
|
-
static
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
// First-time init: gather field configs from a temporary instance of the original class.
|
|
216
|
-
const OrgModel = MockModel._original || this;
|
|
217
|
-
const instance = new OrgModel(INIT_INSTANCE_SYMBOL);
|
|
218
|
-
// If no primary key exists, create one using 'id' field
|
|
219
|
-
if (!MockModel._primary) {
|
|
220
|
-
if (!instance.id) {
|
|
221
|
-
instance.id = { type: identifier };
|
|
222
|
-
}
|
|
223
|
-
// @ts-ignore-next-line - `id` is not part of the type, but the user probably shouldn't touch it anyhow
|
|
224
|
-
new PrimaryIndex(MockModel, ['id']);
|
|
225
|
-
}
|
|
226
|
-
MockModel.fields = {};
|
|
227
|
-
for (const key in instance) {
|
|
228
|
-
const value = instance[key];
|
|
229
|
-
// Check if this property contains field metadata
|
|
230
|
-
if (value && value.type instanceof TypeWrapper) {
|
|
231
|
-
// Set the configuration on the constructor's `fields` property
|
|
232
|
-
MockModel.fields[key] = value;
|
|
233
|
-
// Set default value on the prototype
|
|
234
|
-
const defObj = value.default === undefined ? value.type : value;
|
|
235
|
-
const def = defObj.default;
|
|
236
|
-
if (typeof def === 'function') {
|
|
237
|
-
// The default is a function. We'll define a getter on the property in the model prototype,
|
|
238
|
-
// and once it is read, we'll run the function and set the value as a plain old property
|
|
239
|
-
// on the instance object.
|
|
240
|
-
Object.defineProperty(MockModel.prototype, key, {
|
|
241
|
-
get() {
|
|
242
|
-
// This will call set(), which will define the property on the instance.
|
|
243
|
-
return (this[key] = def.call(defObj, this));
|
|
244
|
-
},
|
|
245
|
-
set(val) {
|
|
246
|
-
Object.defineProperty(this, key, {
|
|
247
|
-
value: val,
|
|
248
|
-
configurable: true,
|
|
249
|
-
writable: true,
|
|
250
|
-
enumerable: true,
|
|
251
|
-
});
|
|
252
|
-
},
|
|
253
|
-
configurable: true,
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
else if (def !== undefined) {
|
|
257
|
-
MockModel.prototype[key] = def;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
if (logLevel >= 1) {
|
|
262
|
-
console.log(`[edinburgh] Registered model ${MockModel.tableName} with fields: ${Object.keys(MockModel.fields).join(' ')}`);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
// Always run index inits (idempotent, skip if already initialized)
|
|
266
|
-
await MockModel._primary._delayedInit();
|
|
267
|
-
for (const sec of MockModel._secondaries || [])
|
|
220
|
+
static _resetIndexes() {
|
|
221
|
+
this._primary._indexId = undefined;
|
|
222
|
+
this._primary._versions.clear();
|
|
223
|
+
for (const sec of this._secondaries || [])
|
|
224
|
+
sec._indexId = undefined;
|
|
225
|
+
}
|
|
226
|
+
static async _loadCreateIndexes() {
|
|
227
|
+
await this._primary._delayedInit();
|
|
228
|
+
for (const sec of this._secondaries || [])
|
|
268
229
|
await sec._delayedInit();
|
|
269
|
-
await
|
|
230
|
+
await this._primary._initVersioning();
|
|
270
231
|
}
|
|
271
232
|
_setLoadedField(fieldName, value) {
|
|
272
233
|
const oldValues = this._oldValues;
|
|
@@ -288,7 +249,7 @@ export class Model {
|
|
|
288
249
|
getPrimaryKey() {
|
|
289
250
|
let key = this._primaryKey;
|
|
290
251
|
if (key === undefined) {
|
|
291
|
-
key = this.constructor._primary.
|
|
252
|
+
key = this.constructor._primary._serializeKey(this).toUint8Array();
|
|
292
253
|
this._setPrimaryKey(key);
|
|
293
254
|
}
|
|
294
255
|
return key;
|
|
@@ -341,8 +302,8 @@ export class Model {
|
|
|
341
302
|
// We're doing an update. Note that we may still be in a lazy state, and we don't want to load
|
|
342
303
|
// the whole object just to see if something changed.
|
|
343
304
|
// Add old values of changed fields to 'changed'.
|
|
305
|
+
const changed = {};
|
|
344
306
|
const fields = this.constructor.fields;
|
|
345
|
-
let changed = {};
|
|
346
307
|
for (const fieldName in oldValues) {
|
|
347
308
|
const oldValue = oldValues[fieldName];
|
|
348
309
|
const newValue = this[fieldName];
|
|
@@ -366,24 +327,7 @@ export class Model {
|
|
|
366
327
|
this.constructor._primary._write(txn, pk, this);
|
|
367
328
|
// Update any secondaries with changed fields
|
|
368
329
|
for (const index of this.constructor._secondaries || []) {
|
|
369
|
-
|
|
370
|
-
// Computed indexes may depend on any field — compare serialized keys
|
|
371
|
-
const oldKeyBytes = index._serializeKeyFields(oldValues).toUint8Array();
|
|
372
|
-
const newKeyBytes = index._serializeKeyFields(this).toUint8Array();
|
|
373
|
-
if (!bytesEqual(oldKeyBytes, newKeyBytes)) {
|
|
374
|
-
index._delete(txn, pk, oldValues);
|
|
375
|
-
index._write(txn, pk, this);
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
else {
|
|
379
|
-
for (const field of index._fieldTypes.keys()) {
|
|
380
|
-
if (changed.hasOwnProperty(field)) {
|
|
381
|
-
index._delete(txn, pk, oldValues);
|
|
382
|
-
index._write(txn, pk, this);
|
|
383
|
-
break;
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
}
|
|
330
|
+
index._update(txn, pk, this, oldValues);
|
|
387
331
|
}
|
|
388
332
|
return changed;
|
|
389
333
|
}
|
|
@@ -394,7 +338,7 @@ export class Model {
|
|
|
394
338
|
*
|
|
395
339
|
* @example
|
|
396
340
|
* ```typescript
|
|
397
|
-
* const user = User.
|
|
341
|
+
* const user = User.get("user123");
|
|
398
342
|
* user.name = "New Name";
|
|
399
343
|
* user.preventPersist(); // Changes won't be saved
|
|
400
344
|
* ```
|
|
@@ -405,15 +349,18 @@ export class Model {
|
|
|
405
349
|
Object.defineProperty(this, "_txn", PREVENT_PERSIST_DESCRIPTOR);
|
|
406
350
|
return this;
|
|
407
351
|
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
static
|
|
352
|
+
static get(...args) {
|
|
353
|
+
return this._primary.get(...args);
|
|
354
|
+
}
|
|
355
|
+
static getLazy(...args) {
|
|
356
|
+
return this._primary.getLazy(...args);
|
|
357
|
+
}
|
|
358
|
+
static find(opts) {
|
|
415
359
|
return this._primary.find(opts);
|
|
416
360
|
}
|
|
361
|
+
static batchProcess(opts, callback) {
|
|
362
|
+
return this._primary.batchProcess(opts, callback);
|
|
363
|
+
}
|
|
417
364
|
/**
|
|
418
365
|
* Load an existing instance by primary key and update it, or create a new one.
|
|
419
366
|
*
|
|
@@ -451,7 +398,7 @@ export class Model {
|
|
|
451
398
|
*
|
|
452
399
|
* @example
|
|
453
400
|
* ```typescript
|
|
454
|
-
* const user = User.
|
|
401
|
+
* const user = User.get("user123");
|
|
455
402
|
* user.delete(); // Removes from database
|
|
456
403
|
* ```
|
|
457
404
|
*/
|
|
@@ -514,7 +461,7 @@ export class Model {
|
|
|
514
461
|
}
|
|
515
462
|
toString() {
|
|
516
463
|
const primary = this.constructor._primary;
|
|
517
|
-
const pk = primary._keyToArray(this._primaryKey || primary.
|
|
464
|
+
const pk = primary._keyToArray(this._primaryKey || primary._serializeKey(this).toUint8Array(false));
|
|
518
465
|
return `{Model:${this.constructor.tableName} ${this.getState()} ${pk}}`;
|
|
519
466
|
}
|
|
520
467
|
[Symbol.for('nodejs.util.inspect.custom')]() {
|
package/build/src/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,iBAAiB,EAAe,CAAC;AAG/D,MAAM,0BAA0B,GAAG;IAC/B,GAAG;QACC,MAAM,IAAI,aAAa,CAAC,8CAA8C,EAAE,YAAY,CAAC,CAAC;IAC1F,CAAC;CACJ,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACtB,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;IAClC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,aAAa,CAAC,mFAAmF,EAAE,gBAAgB,CAAC,CAAC;IACzI,OAAO,GAAG,CAAC;AACf,CAAC;AAOD,OAAO,EAA8B,YAAY,EAAsB,WAAW,EAAE,cAAc,EAAe,MAAM,cAAc,CAAC;AACtI,OAAO,EAAE,YAAY,EAAoB,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAe9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,KAAK,CAAI,IAAoB,EAAE,UAAmC,EAAE;IAChF,6DAA6D;IAC7D,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACpB,OAAO,OAAc,CAAC;AAC1B,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAiC,EAAE,CAAC;AAE9D,SAAS,aAAa,CAAC,GAAW;IAC9B,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAID,IAAI,eAAe,GAAG,CAAC,CAAC;AAoExB,MAAM,UAAU,WAAW,CAAC,GAAQ,EAAE,IAAU;IAC5C,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAEtD,MAAM,SAAS,GAAG,UAAoB,OAA6B,EAAE,MAAmB,UAAU,EAAE;QAChG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,OAAO;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAQ,CAAC;IAET,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC;IACtC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxC,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IACpC,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC;IAE1B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/D,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,eAAe,EAAE,CAAC;IAEjF,IAAI,SAAS,CAAC,SAAS,IAAI,aAAa,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,aAAa,CAAC,0BAA0B,SAAS,CAAC,SAAS,sBAAsB,EAAE,YAAY,CAAC,CAAC;QAC/G,CAAC;QACD,OAAO,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC;IACtB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAyB,CAAC;QACpD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;YAC7C,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAE9B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAChE,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;YAC3B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC5B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE;oBAC5C,GAAG;wBACC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAChD,CAAC;oBACD,GAAG,CAAC,GAAQ;wBACR,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;4BAC7B,KAAK,EAAE,GAAG;4BACV,YAAY,EAAE,IAAI;4BAClB,QAAQ,EAAE,IAAI;4BACd,UAAU,EAAE,IAAI;yBACnB,CAAC,CAAC;oBACP,CAAC;oBACD,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;YACP,CAAC;iBAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3B,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACnC,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;QACX,IAAI,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACJ,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,IAAS,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9E,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;IACD,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;IAED,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAC/C,YAAY,EAAE,CAAC;IACf,OAAO,SAAS,CAAC;AACrB,CAAC;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAGH,MAAM,OAAgB,KAAK;IACvB,MAAM,CAAC,QAAQ,CAAyB;IAExC,wDAAwD;IACxD,MAAM,CAAC,YAAY,CAA2D;IAE9E,wDAAwD;IACxD,MAAM,CAAC,SAAS,CAAS;IAEzB,iFAAiF;IACjF,MAAM,CAAC,QAAQ,CAAW;IAE1B,oCAAoC;IACpC,MAAM,CAAC,MAAM,CAAyD;IAEtE,8DAA8D;IAC9D,MAAM,KAAK,QAAQ,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,eAAe,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IACtE,MAAM,KAAK,aAAa,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,gBAAgB,CAAC,KAAa,EAAE,OAAe,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAClH,MAAM,CAAC,aAAa,CAAC,GAAgB,EAAE,EAAc,EAAE,IAAyB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IA+BjI;;;;OAIG;IAEH;;;;;OAKG;IACH,UAAU,CAAyC;IACnD,WAAW,CAAyB;IACpC,eAAe,CAAqB;IACpC,IAAI,CAAe;IAEnB,YAAY,UAA6C,EAAE;QACvD,MAAM,IAAI,aAAa,CAAC,2CAA2C,EAAE,YAAY,CAAC,CAAC;IACvF,CAAC;IA2BD,MAAM,CAAC,aAAa;QAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;YAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;IACxE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,kBAAkB;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;YAAE,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;QACpE,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC1C,CAAC;IAED,eAAe,CAAC,SAAiB,EAAE,KAAU;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAW,CAAC;QACnC,IAAI,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;YAAE,OAAO,CAAC,iDAAiD;QAElG,IAAI,CAAC,SAA6B,CAAC,GAAG,KAAK,CAAC;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAA0B,CAAC,IAAI,CAAC;YACpF,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,oCAAoC;YACpC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa;QACT,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YACpE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,cAAc,CAAC,GAAe,EAAE,IAAa;QACzC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,iBAAiB;QACb,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,eAAgB,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,KAAiB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,CAAC,GAAgB;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAElC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC,CAAC,kBAAkB;YACxC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5B,4EAA4E;YAC5E,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;gBACrD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAG,EAAE,IAAI,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAG,EAAE,IAAI,CAAC,CAAC;YAElD,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC,CAAC,kBAAkB;YAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpB,mDAAmD;YACnD,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,EAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,aAAa,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,CAAC;YAChF,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,MAAM,CAAC,GAAG,EAAE,EAAG,EAAE,IAAI,CAAC,CAAC;YAElD,yBAAyB;YACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;gBACtD,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAG,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;YAED,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,0BAA0B;QAC1B,8FAA8F;QAC9F,qDAAqD;QAErD,iDAAiD;QACjD,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACvC,KAAI,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAA6B,CAAC,CAAC;YACrD,IAAI,QAAQ,KAAK,QAAQ,IAAK,CAAE,MAAM,CAAC,SAAS,CAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACzG,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;YAClC,CAAC;QACL,CAAC;QAED,IAAI,aAAa,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,4BAA4B;QAEhE,yCAAyC;QACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,aAAa,CAAC,oCAAoC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAC3F,CAAC;QACL,CAAC;QAED,qGAAqG;QAErG,8BAA8B;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEpB,2BAA2B;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAY,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAEjD,6CAA6C;QAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YACtD,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,cAAc;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,mDAAmD;QACnD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,IAAW;QACrB,OAAO,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,IAAW;QACzB,OAAO,IAAI,CAAC,QAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAU;QAClB,OAAO,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAS,EAAE,QAAc;QACzC,OAAO,IAAI,CAAC,QAAS,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,WAAW,CAAuC,GAAiC;QACtF,MAAM,EAAE,GAAG,IAAI,CAAC,QAAS,CAAC;QAC1B,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,SAAS,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,CAAC,SAAS,IAAK,GAAW,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,aAAa,CAAC,2CAA2C,SAAS,GAAG,EAAE,qBAAqB,CAAC,CAAC;YAC5G,CAAC;YACD,OAAO,CAAC,IAAI,CAAE,GAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,OAAc,CAAgC,CAAC;QAC1E,IAAI,QAAQ,EAAE,CAAC;YACX,KAAK,MAAM,GAAG,IAAI,GAAU,EAAE,CAAC;gBAC3B,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAU,CAAC,EAAE,CAAC;oBACjC,QAAgB,CAAC,GAAG,CAAC,GAAI,GAAW,CAAC,GAAG,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,OAAO,IAAK,IAAY,CAAC,GAAG,CAAoB,CAAC;IACrD,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM;QACF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,IAAI,aAAa,CAAC,gCAAgC,EAAE,WAAW,CAAC,CAAC;QAC1G,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,QAAiB,KAAK;QAC3B,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAE,IAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,EAAE,CAAC;gBACJ,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,GAAC,GAAG,GAAC,GAAG,CAAC,CAAC;gBACxD,IAAI,KAAK;oBAAE,MAAM,CAAC,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;;;OASG;IACH,OAAO;QACH,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ;QACJ,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QAC/C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACpD,KAAI,MAAM,CAAC,GAAG,EAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnF,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,wBAAwB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;gBAC5F,OAAO,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,QAAQ;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QACpG,OAAO,UAAU,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC;IAC5E,CAAC;IAED,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACJ"}
|
package/build/src/types.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import DataPack from "./datapack.js";
|
|
2
2
|
import { DatabaseError } from "olmdb/lowlevel";
|
|
3
3
|
import { Model, FieldConfig } from "./models.js";
|
|
4
|
-
import { PrimaryIndex, BaseIndex, IndexRangeIterator } from "./indexes.js";
|
|
5
4
|
/**
|
|
6
5
|
* @internal Abstract base class for all type wrappers in the Edinburgh ORM system.
|
|
7
6
|
*
|
|
@@ -49,7 +48,7 @@ export declare abstract class TypeWrapper<const T> {
|
|
|
49
48
|
toString(): string;
|
|
50
49
|
clone(value: T): T;
|
|
51
50
|
equals(value1: T, value2: T): boolean;
|
|
52
|
-
getLinkedModel():
|
|
51
|
+
getLinkedModel(): undefined | typeof Model<unknown>;
|
|
53
52
|
}
|
|
54
53
|
export interface TypeWrapper<T> {
|
|
55
54
|
/**
|
|
@@ -88,38 +87,45 @@ export declare class SetType<T> extends TypeWrapper<Set<T>> {
|
|
|
88
87
|
equals(a: Set<T>, b: Set<T>): boolean;
|
|
89
88
|
toString(): string;
|
|
90
89
|
getLinkedModel(): ((abstract new (initial?: Partial<Omit<unknown, "constructor">>) => Model<unknown>) & {
|
|
91
|
-
_primary: PrimaryIndex<any, any>;
|
|
92
|
-
_secondaries?:
|
|
90
|
+
_primary: import("./indexes.js").PrimaryIndex<any, any>;
|
|
91
|
+
_secondaries?: import("./indexes.js").NonPrimaryIndex<any, readonly (keyof any & string)[]>[];
|
|
93
92
|
tableName: string;
|
|
94
93
|
override?: boolean;
|
|
95
94
|
fields: Record<string | symbol | number, FieldConfig<unknown>>;
|
|
95
|
+
readonly _indexId: number | undefined;
|
|
96
|
+
readonly _currentVersion: number;
|
|
97
|
+
readonly _pkFieldTypes: Map<string, TypeWrapper<any>>;
|
|
98
|
+
_loadVersionInfo(txnId: number, version: number): import("./indexes.js").VersionInfo;
|
|
99
|
+
_writePrimary(txn: import("./models.js").Transaction, pk: Uint8Array, data: Record<string, any>): void;
|
|
96
100
|
migrate?(record: Record<string, any>): void;
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
_resetIndexes(): void;
|
|
102
|
+
_loadCreateIndexes(): Promise<void>;
|
|
103
|
+
get(...args: any[]): any;
|
|
104
|
+
getLazy(...args: any[]): any;
|
|
105
|
+
find(opts?: any): any;
|
|
106
|
+
batchProcess(opts: any, callback?: any): any;
|
|
107
|
+
replaceInto<T_1 extends typeof Model<any>>(this: T_1, obj: Partial<Record<string, any>>): InstanceType<T_1>;
|
|
102
108
|
}) | undefined;
|
|
103
109
|
}
|
|
104
110
|
/**
|
|
105
111
|
* @internal Type wrapper for model relationships (foreign keys).
|
|
106
112
|
* @template T - The target model class type.
|
|
107
113
|
*/
|
|
108
|
-
export declare class LinkType<T extends
|
|
114
|
+
export declare class LinkType<T extends new (...args: any[]) => Model<any>> extends TypeWrapper<InstanceType<T>> {
|
|
109
115
|
kind: string;
|
|
110
|
-
|
|
116
|
+
private TargetModel;
|
|
111
117
|
/**
|
|
112
118
|
* Create a new LinkType.
|
|
113
|
-
* @param TargetModel - The model class this link points to.
|
|
119
|
+
* @param TargetModel - The model class this link points to, or a thunk for forward references.
|
|
114
120
|
*/
|
|
115
|
-
constructor(TargetModel: T);
|
|
121
|
+
constructor(TargetModel: T | (() => T));
|
|
122
|
+
getLinkedModel(): typeof Model<unknown>;
|
|
116
123
|
serialize(model: InstanceType<T>, pack: DataPack): void;
|
|
117
124
|
deserialize(pack: DataPack): any;
|
|
118
125
|
getError(value: InstanceType<T>): DatabaseError | undefined;
|
|
119
126
|
serializeType(pack: DataPack): void;
|
|
120
127
|
static deserializeType(pack: DataPack, featureFlags: number): LinkType<any>;
|
|
121
128
|
toString(): string;
|
|
122
|
-
getLinkedModel(): T;
|
|
123
129
|
}
|
|
124
130
|
/** Type wrapper instance for the string type. */
|
|
125
131
|
export declare const string: TypeWrapper<string>;
|
|
@@ -233,16 +239,19 @@ export declare function record<const T>(inner: TypeWrapper<T>): TypeWrapper<Reco
|
|
|
233
239
|
*
|
|
234
240
|
* @example
|
|
235
241
|
* ```typescript
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
*
|
|
242
|
+
* const Author = E.defineModel(class {
|
|
243
|
+
* id = E.field(E.identifier);
|
|
244
|
+
* posts = E.field(E.array(E.link(() => Book)));
|
|
245
|
+
* }, { pk: "id" });
|
|
239
246
|
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
247
|
+
* const Book = E.defineModel(class {
|
|
248
|
+
* id = E.field(E.identifier);
|
|
249
|
+
* author = E.field(E.link(Author));
|
|
250
|
+
* }, { pk: "id" });
|
|
243
251
|
* ```
|
|
244
252
|
*/
|
|
245
|
-
export declare function link<const T extends
|
|
253
|
+
export declare function link<const T extends new (...args: any[]) => Model<any>>(TargetModel: T): TypeWrapper<InstanceType<T>>;
|
|
254
|
+
export declare function link<const T extends new (...args: any[]) => Model<any>>(TargetModel: () => T): TypeWrapper<InstanceType<T>>;
|
|
246
255
|
export type BasicType = string | number | boolean | undefined | null;
|
|
247
256
|
export type UnwrapTypes<T extends (TypeWrapper<unknown> | BasicType)[]> = {
|
|
248
257
|
[K in keyof T]: T[K] extends TypeWrapper<infer U> ? U : T[K];
|
package/build/src/types.js
CHANGED
|
@@ -276,7 +276,7 @@ class RecordType extends TypeWrapper {
|
|
|
276
276
|
}
|
|
277
277
|
serialize(value, pack) {
|
|
278
278
|
pack.writeCollectionBoundary('object');
|
|
279
|
-
for (const key
|
|
279
|
+
for (const key in value) {
|
|
280
280
|
pack.writeObjectKey(key);
|
|
281
281
|
this.inner.serialize(value[key], pack);
|
|
282
282
|
}
|
|
@@ -294,7 +294,7 @@ class RecordType extends TypeWrapper {
|
|
|
294
294
|
return result;
|
|
295
295
|
}
|
|
296
296
|
getError(value) {
|
|
297
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
297
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value) || (typeof value.length === 'number' && typeof value[Symbol.iterator] === 'function')) {
|
|
298
298
|
return new DatabaseError(`Expected object, got ${typeof value}`, 'INVALID_TYPE');
|
|
299
299
|
}
|
|
300
300
|
for (const key of Object.keys(value)) {
|
|
@@ -498,28 +498,34 @@ class IdentifierType extends TypeWrapper {
|
|
|
498
498
|
*/
|
|
499
499
|
export class LinkType extends TypeWrapper {
|
|
500
500
|
kind = 'link';
|
|
501
|
-
|
|
501
|
+
TargetModel;
|
|
502
502
|
/**
|
|
503
503
|
* Create a new LinkType.
|
|
504
|
-
* @param TargetModel - The model class this link points to.
|
|
504
|
+
* @param TargetModel - The model class this link points to, or a thunk for forward references.
|
|
505
505
|
*/
|
|
506
506
|
constructor(TargetModel) {
|
|
507
507
|
super();
|
|
508
|
-
this.
|
|
508
|
+
this.TargetModel = TargetModel;
|
|
509
|
+
}
|
|
510
|
+
getLinkedModel() {
|
|
511
|
+
if (!('getLazy' in this.TargetModel))
|
|
512
|
+
this.TargetModel = this.TargetModel();
|
|
513
|
+
return this.TargetModel;
|
|
509
514
|
}
|
|
510
515
|
serialize(model, pack) {
|
|
511
516
|
pack.write(model.getPrimaryKey());
|
|
512
517
|
}
|
|
513
518
|
deserialize(pack) {
|
|
514
|
-
return
|
|
519
|
+
return this.getLinkedModel()._primary._get(currentTxn(), pack.readUint8Array(), false);
|
|
515
520
|
}
|
|
516
521
|
getError(value) {
|
|
517
|
-
|
|
518
|
-
|
|
522
|
+
const TargetModel = this.getLinkedModel();
|
|
523
|
+
if (!(value instanceof TargetModel)) {
|
|
524
|
+
return new DatabaseError(`Expected instance of ${TargetModel.tableName}, got ${typeof value}`, 'VALUE_ERROR');
|
|
519
525
|
}
|
|
520
526
|
}
|
|
521
527
|
serializeType(pack) {
|
|
522
|
-
pack.write(this.tableName);
|
|
528
|
+
pack.write(this.getLinkedModel().tableName);
|
|
523
529
|
}
|
|
524
530
|
static deserializeType(pack, featureFlags) {
|
|
525
531
|
const tableName = pack.readString();
|
|
@@ -528,10 +534,7 @@ export class LinkType extends TypeWrapper {
|
|
|
528
534
|
throw new DatabaseError(`Could not deserialize undefined model ${tableName}`, 'DESERIALIZATION_ERROR');
|
|
529
535
|
return new LinkType(targetModel);
|
|
530
536
|
}
|
|
531
|
-
toString() { return `link<${this.tableName}>`; }
|
|
532
|
-
getLinkedModel() {
|
|
533
|
-
return modelRegistry[this.tableName];
|
|
534
|
-
}
|
|
537
|
+
toString() { return `link<${this.getLinkedModel().tableName}>`; }
|
|
535
538
|
}
|
|
536
539
|
/** Type wrapper instance for the string type. */
|
|
537
540
|
export const string = new StringType();
|
|
@@ -643,23 +646,6 @@ export function set(inner, opts = {}) {
|
|
|
643
646
|
export function record(inner) {
|
|
644
647
|
return new RecordType(wrapIfLiteral(inner));
|
|
645
648
|
}
|
|
646
|
-
/**
|
|
647
|
-
* Create a link type wrapper for model relationships.
|
|
648
|
-
* @template T - The target model class.
|
|
649
|
-
* @param TargetModel - The model class this link points to.
|
|
650
|
-
* @returns A link type instance.
|
|
651
|
-
*
|
|
652
|
-
* @example
|
|
653
|
-
* ```typescript
|
|
654
|
-
* class User extends E.Model<User> {
|
|
655
|
-
* posts = E.field(E.array(E.link(Post, 'author')));
|
|
656
|
-
* }
|
|
657
|
-
*
|
|
658
|
-
* class Post extends E.Model<Post> {
|
|
659
|
-
* author = E.field(E.link(User));
|
|
660
|
-
* }
|
|
661
|
-
* ```
|
|
662
|
-
*/
|
|
663
649
|
export function link(TargetModel) {
|
|
664
650
|
return new LinkType(TargetModel);
|
|
665
651
|
}
|