edinburgh 0.1.2 → 0.3.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 +146 -84
- package/build/src/datapack.d.ts +119 -0
- package/build/src/datapack.js +620 -0
- package/build/src/datapack.js.map +1 -0
- package/build/src/edinburgh.d.ts +15 -3
- package/build/src/edinburgh.js +64 -30
- package/build/src/edinburgh.js.map +1 -1
- package/build/src/indexes.d.ts +58 -91
- package/build/src/indexes.js +360 -285
- package/build/src/indexes.js.map +1 -1
- package/build/src/models.d.ts +41 -45
- package/build/src/models.js +191 -239
- package/build/src/models.js.map +1 -1
- package/build/src/types.d.ts +188 -256
- package/build/src/types.js +381 -316
- package/build/src/types.js.map +1 -1
- package/build/src/utils.d.ts +9 -5
- package/build/src/utils.js +34 -5
- package/build/src/utils.js.map +1 -1
- package/package.json +17 -15
- package/src/datapack.ts +655 -0
- package/src/edinburgh.ts +68 -29
- package/src/indexes.ts +398 -319
- package/src/models.ts +224 -262
- package/src/types.ts +461 -385
- package/src/utils.ts +37 -9
- package/build/src/bytes.d.ts +0 -155
- package/build/src/bytes.js +0 -455
- package/build/src/bytes.js.map +0 -1
- package/src/bytes.ts +0 -500
package/build/src/models.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { DatabaseError } from "olmdb";
|
|
2
1
|
import * as olmdb from "olmdb";
|
|
2
|
+
import { DatabaseError } from "olmdb";
|
|
3
3
|
import { TypeWrapper, identifier } from "./types.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { PrimaryIndex } from "./indexes.js";
|
|
5
|
+
import { addErrorPath, logLevel, tryDelayedInits, delayedInits } from "./utils.js";
|
|
6
6
|
/**
|
|
7
7
|
* Create a field definition for a model property.
|
|
8
8
|
*
|
|
@@ -29,59 +29,24 @@ export function field(type, options = {}) {
|
|
|
29
29
|
return options;
|
|
30
30
|
}
|
|
31
31
|
// Model registration and initialization
|
|
32
|
-
let uninitializedModels = new Set();
|
|
33
32
|
export const modelRegistry = {};
|
|
34
33
|
export function resetModelCaches() {
|
|
35
34
|
for (const model of Object.values(modelRegistry)) {
|
|
36
|
-
for (const index of model.
|
|
35
|
+
for (const index of model._secondaries || []) {
|
|
37
36
|
index._cachedIndexId = undefined;
|
|
38
37
|
}
|
|
38
|
+
delete model._primary?._cachedIndexId;
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
function isObjectEmpty(obj) {
|
|
42
|
-
for (let
|
|
43
|
-
|
|
44
|
-
return false;
|
|
42
|
+
for (let _ of Object.keys(obj)) {
|
|
43
|
+
return false;
|
|
45
44
|
}
|
|
46
45
|
return true;
|
|
47
46
|
}
|
|
48
|
-
let onSave;
|
|
49
|
-
/**
|
|
50
|
-
* Set a callback function to be called after a model is saved and committed.
|
|
51
|
-
*
|
|
52
|
-
* @param callback The callback function to set. As arguments, it receives the model instance, the new key (undefined in case of a delete), and the old key (undefined in case of a create).
|
|
53
|
-
*/
|
|
54
|
-
export function setOnSaveCallback(callback) {
|
|
55
|
-
onSave = callback;
|
|
56
|
-
}
|
|
57
|
-
const onSaveQueue = [];
|
|
58
|
-
function onSaveRevert() {
|
|
59
|
-
onSaveQueue.length = 0;
|
|
60
|
-
}
|
|
61
|
-
function onSaveCommit() {
|
|
62
|
-
if (onSave) {
|
|
63
|
-
for (let arr of onSaveQueue) {
|
|
64
|
-
onSave(...arr);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
onSaveQueue.length = 0;
|
|
68
|
-
}
|
|
69
|
-
function queueOnSave(arr) {
|
|
70
|
-
if (onSave) {
|
|
71
|
-
if (!onSaveQueue.length) {
|
|
72
|
-
olmdb.onCommit(onSaveCommit);
|
|
73
|
-
olmdb.onRevert(onSaveRevert);
|
|
74
|
-
}
|
|
75
|
-
onSaveQueue.push(arr);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
47
|
/**
|
|
79
48
|
* Register a model class with the Edinburgh ORM system.
|
|
80
49
|
*
|
|
81
|
-
* This decorator function transforms the model class to use a proxy-based constructor
|
|
82
|
-
* that enables change tracking and automatic field initialization. It also extracts
|
|
83
|
-
* field metadata and sets up default values on the prototype.
|
|
84
|
-
*
|
|
85
50
|
* @template T - The model class type.
|
|
86
51
|
* @param MyModel - The model class to register.
|
|
87
52
|
* @returns The enhanced model class with ORM capabilities.
|
|
@@ -104,16 +69,14 @@ export function registerModel(MyModel) {
|
|
|
104
69
|
MockModel[name] = MyModel[name];
|
|
105
70
|
}
|
|
106
71
|
}
|
|
107
|
-
// Initialize an empty `fields` object, and set it on both constructors, as well as on the prototype.
|
|
108
|
-
MockModel.fields = MockModel.prototype._fields = {};
|
|
109
72
|
MockModel.tableName ||= MyModel.name; // Set the table name to the class name if not already set
|
|
110
73
|
// Register the constructor by name
|
|
111
74
|
if (MockModel.tableName in modelRegistry)
|
|
112
75
|
throw new DatabaseError(`Model with table name '${MockModel.tableName}' already registered`, 'INIT_ERROR');
|
|
113
76
|
modelRegistry[MockModel.tableName] = MockModel;
|
|
114
77
|
// Attempt to instantiate the class and gather field metadata
|
|
115
|
-
|
|
116
|
-
|
|
78
|
+
delayedInits.add(MyModel);
|
|
79
|
+
tryDelayedInits();
|
|
117
80
|
return MockModel;
|
|
118
81
|
}
|
|
119
82
|
export function getMockModel(OrgModel) {
|
|
@@ -122,16 +85,16 @@ export function getMockModel(OrgModel) {
|
|
|
122
85
|
return OrgModel;
|
|
123
86
|
if (AnyOrgModel._mock)
|
|
124
87
|
return AnyOrgModel._mock;
|
|
88
|
+
const name = OrgModel.tableName || OrgModel.name;
|
|
125
89
|
const MockModel = function (initial) {
|
|
126
|
-
if (
|
|
90
|
+
if (delayedInits.has(this.constructor)) {
|
|
127
91
|
throw new DatabaseError("Cannot instantiate while linked models haven't been registered yet", 'INIT_ERROR');
|
|
128
92
|
}
|
|
129
93
|
if (initial && !isObjectEmpty(initial)) {
|
|
130
94
|
Object.assign(this, initial);
|
|
131
|
-
const modifiedInstances = olmdb.getTransactionData(MODIFIED_INSTANCES_SYMBOL);
|
|
132
|
-
modifiedInstances.add(this);
|
|
133
95
|
}
|
|
134
|
-
|
|
96
|
+
const instances = olmdb.getTransactionData(INSTANCES_SYMBOL);
|
|
97
|
+
instances.add(this);
|
|
135
98
|
};
|
|
136
99
|
// We want .constructor to point at our fake constructor function.
|
|
137
100
|
OrgModel.prototype.constructor = MockModel;
|
|
@@ -142,25 +105,88 @@ export function getMockModel(OrgModel) {
|
|
|
142
105
|
AnyOrgModel._mock = MockModel;
|
|
143
106
|
return MockModel;
|
|
144
107
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
108
|
+
// Model base class and related symbols/state
|
|
109
|
+
const INIT_INSTANCE_SYMBOL = Symbol();
|
|
110
|
+
/** @internal Symbol used to attach modified instances to running transaction */
|
|
111
|
+
export const INSTANCES_SYMBOL = Symbol('instances');
|
|
112
|
+
/**
|
|
113
|
+
* Base class for all database models in the Edinburgh ORM.
|
|
114
|
+
*
|
|
115
|
+
* Models represent database entities with typed fields, automatic serialization,
|
|
116
|
+
* change tracking, and relationship management. All model classes should extend
|
|
117
|
+
* this base class and be decorated with `@registerModel`.
|
|
118
|
+
*
|
|
119
|
+
* @template SUB - The concrete model subclass (for proper typing).
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* @E.registerModel
|
|
124
|
+
* class User extends E.Model<User> {
|
|
125
|
+
* static pk = E.index(User, ["id"], "primary");
|
|
126
|
+
*
|
|
127
|
+
* id = E.field(E.identifier);
|
|
128
|
+
* name = E.field(E.string);
|
|
129
|
+
* email = E.field(E.string);
|
|
130
|
+
*
|
|
131
|
+
* static byEmail = E.index(User, "email", "unique");
|
|
132
|
+
* }
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
export class Model {
|
|
136
|
+
static _primary;
|
|
137
|
+
/** @internal All non-primary indexes for this model. */
|
|
138
|
+
static _secondaries;
|
|
139
|
+
/** The database table name (defaults to class name). */
|
|
140
|
+
static tableName;
|
|
141
|
+
/** Field configuration metadata. */
|
|
142
|
+
static fields;
|
|
143
|
+
/*
|
|
144
|
+
* IMPORTANT: We cannot use instance property initializers here, because we will be
|
|
145
|
+
* initializing the class through a fake constructor that will skip these. This is
|
|
146
|
+
* intentional, as we don't want to run the initializers for the fields.
|
|
147
|
+
*/
|
|
148
|
+
/**
|
|
149
|
+
* @internal
|
|
150
|
+
* - !_oldValues: New instance, not yet saved.
|
|
151
|
+
* - _oldValues && _primaryKey: Loaded (possibly only partial, still lazy) from disk, _oldValues contains (partial) old values
|
|
152
|
+
*/
|
|
153
|
+
_oldValues;
|
|
154
|
+
_primaryKey;
|
|
155
|
+
/**
|
|
156
|
+
* This property can be used in `setOnSave` callbacks to determine how a model instance has changed.
|
|
157
|
+
* If the value is undefined, the instance has been created. If it's "deleted" the instance has
|
|
158
|
+
* been deleted. If its an object, the instance has been modified and the object contains the old values.
|
|
159
|
+
*
|
|
160
|
+
* Note: this property should **not** be accessed *during* a `transact()` -- it's state is an implementation
|
|
161
|
+
* detail that may change semantics at any minor release.
|
|
162
|
+
*/
|
|
163
|
+
changed;
|
|
164
|
+
// Reference the static `fields` property; the mock constructor copies it here for performance
|
|
165
|
+
_fields;
|
|
166
|
+
constructor(initial = {}) {
|
|
167
|
+
// This constructor will only be called once, from `initModels`. All other instances will
|
|
168
|
+
// be created by the 'fake' constructor. The typing for `initial` *is* important though.
|
|
169
|
+
if (initial !== INIT_INSTANCE_SYMBOL) {
|
|
170
|
+
throw new DatabaseError("The model needs a @registerModel decorator", 'INIT_ERROR');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
static _delayedInit() {
|
|
174
|
+
const MockModel = getMockModel(this);
|
|
148
175
|
// Create an instance (the only one to ever exist) of the actual class,
|
|
149
176
|
// in order to gather field config data.
|
|
150
177
|
let instance;
|
|
151
178
|
try {
|
|
152
|
-
instance = new
|
|
179
|
+
instance = new this(INIT_INSTANCE_SYMBOL);
|
|
153
180
|
}
|
|
154
181
|
catch (e) {
|
|
155
182
|
if (!(e instanceof ReferenceError))
|
|
156
183
|
throw e;
|
|
157
184
|
// ReferenceError: Cannot access 'SomeLinkedClass' before initialization.
|
|
158
185
|
// We'll try again after the next class has successfully initialized.
|
|
159
|
-
|
|
186
|
+
return false;
|
|
160
187
|
}
|
|
161
|
-
uninitializedModels.delete(OrgModel);
|
|
162
188
|
// If no primary key exists, create one using 'id' field
|
|
163
|
-
if (!MockModel.
|
|
189
|
+
if (!MockModel._primary) {
|
|
164
190
|
// If no `id` field exists, add it automatically
|
|
165
191
|
if (!instance.id) {
|
|
166
192
|
instance.id = { type: identifier };
|
|
@@ -168,6 +194,7 @@ function initModels() {
|
|
|
168
194
|
// @ts-ignore-next-line - `id` is not part of the type, but the user probably shouldn't touch it anyhow
|
|
169
195
|
new PrimaryIndex(MockModel, ['id']);
|
|
170
196
|
}
|
|
197
|
+
MockModel.fields = MockModel.prototype._fields = {};
|
|
171
198
|
for (const key in instance) {
|
|
172
199
|
const value = instance[key];
|
|
173
200
|
// Check if this property contains field metadata
|
|
@@ -190,7 +217,8 @@ function initModels() {
|
|
|
190
217
|
Object.defineProperty(this, key, {
|
|
191
218
|
value: val,
|
|
192
219
|
configurable: true,
|
|
193
|
-
writable: true
|
|
220
|
+
writable: true,
|
|
221
|
+
enumerable: true,
|
|
194
222
|
});
|
|
195
223
|
},
|
|
196
224
|
configurable: true,
|
|
@@ -202,103 +230,102 @@ function initModels() {
|
|
|
202
230
|
}
|
|
203
231
|
}
|
|
204
232
|
if (logLevel >= 1) {
|
|
205
|
-
console.log(`Registered model ${MockModel.tableName}
|
|
233
|
+
console.log(`Registered model ${MockModel.tableName} with fields: ${Object.keys(MockModel.fields).join(' ')}`);
|
|
206
234
|
}
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
_setLoadedField(fieldName, value) {
|
|
238
|
+
const orgValues = this._oldValues ||= Object.create(Object.getPrototypeOf(this));
|
|
239
|
+
if (orgValues.hasOwnProperty(fieldName))
|
|
240
|
+
return; // Already loaded earlier (as part of index key?)
|
|
241
|
+
const fieldType = this._fields[fieldName].type;
|
|
242
|
+
this[fieldName] = value;
|
|
243
|
+
orgValues[fieldName] = fieldType.clone(value);
|
|
207
244
|
}
|
|
208
|
-
}
|
|
209
|
-
// Model base class and related symbols/state
|
|
210
|
-
const INIT_INSTANCE_SYMBOL = Symbol();
|
|
211
|
-
/** @internal Symbol used to attach modified instances to running transaction */
|
|
212
|
-
export const MODIFIED_INSTANCES_SYMBOL = Symbol('modifiedInstances');
|
|
213
|
-
/**
|
|
214
|
-
* Base class for all database models in the Edinburgh ORM.
|
|
215
|
-
*
|
|
216
|
-
* Models represent database entities with typed fields, automatic serialization,
|
|
217
|
-
* change tracking, and relationship management. All model classes should extend
|
|
218
|
-
* this base class and be decorated with `@registerModel`.
|
|
219
|
-
*
|
|
220
|
-
* @template SUB - The concrete model subclass (for proper typing).
|
|
221
|
-
*
|
|
222
|
-
* @example
|
|
223
|
-
* ```typescript
|
|
224
|
-
* @E.registerModel
|
|
225
|
-
* class User extends E.Model<User> {
|
|
226
|
-
* static pk = E.index(User, ["id"], "primary");
|
|
227
|
-
*
|
|
228
|
-
* id = E.field(E.identifier);
|
|
229
|
-
* name = E.field(E.string);
|
|
230
|
-
* email = E.field(E.string);
|
|
231
|
-
*
|
|
232
|
-
* static byEmail = E.index(User, "email", "unique");
|
|
233
|
-
* }
|
|
234
|
-
* ```
|
|
235
|
-
*/
|
|
236
|
-
export class Model {
|
|
237
|
-
/** @internal Primary key index for this model. */
|
|
238
|
-
static _pk;
|
|
239
|
-
/** @internal All indexes for this model, the primary key being first. */
|
|
240
|
-
static _indexes;
|
|
241
|
-
/** The database table name (defaults to class name). */
|
|
242
|
-
static tableName;
|
|
243
|
-
/** Field configuration metadata. */
|
|
244
|
-
static fields;
|
|
245
|
-
/*
|
|
246
|
-
* IMPORTANT: We cannot use instance property initializers here, because we will be
|
|
247
|
-
* initializing the class through a fake constructor that will skip these. This is
|
|
248
|
-
* intentional, as we don't want to run the initializers for the fields.
|
|
249
|
-
*/
|
|
250
|
-
/** @internal Field configuration for this instance. */
|
|
251
|
-
_fields;
|
|
252
245
|
/**
|
|
253
|
-
* @
|
|
254
|
-
* - undefined: new instance, unmodified
|
|
255
|
-
* - 1: new instance, modified (and in modifiedInstances)
|
|
256
|
-
* - 2: loaded from disk, unmodified
|
|
257
|
-
* - 3: persistence disabled
|
|
258
|
-
* - array: loaded from disk, modified (and in modifiedInstances), array values are original index buffers
|
|
246
|
+
* @returns The primary key for this instance, or undefined if not yet saved.
|
|
259
247
|
*/
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
// This constructor will only be called once, from `initModels`. All other instances will
|
|
263
|
-
// be created by the 'fake' constructor. The typing for `initial` *is* important though.
|
|
264
|
-
if (initial !== INIT_INSTANCE_SYMBOL) {
|
|
265
|
-
throw new DatabaseError("The model needs a @registerModel decorator", 'INIT_ERROR');
|
|
266
|
-
}
|
|
248
|
+
getPrimaryKey() {
|
|
249
|
+
return this._primaryKey;
|
|
267
250
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
const unproxiedModel = (this[TARGET_SYMBOL] || this);
|
|
271
|
-
unproxiedModel.validate(true);
|
|
272
|
-
// Handle unique indexes
|
|
273
|
-
const indexes = this.constructor._indexes;
|
|
274
|
-
const originalKeys = typeof unproxiedModel._state === 'object' ? unproxiedModel._state : undefined;
|
|
275
|
-
const newPk = indexes[0]._save(unproxiedModel, originalKeys?.[0]);
|
|
276
|
-
for (let i = 1; i < indexes.length; i++) {
|
|
277
|
-
indexes[i]._save(unproxiedModel, originalKeys?.[i]);
|
|
278
|
-
}
|
|
279
|
-
queueOnSave([this, newPk, originalKeys?.[0]]);
|
|
280
|
-
unproxiedModel._state = 2; // Loaded from disk, unmodified
|
|
251
|
+
_getCreatePrimaryKey() {
|
|
252
|
+
return this._primaryKey ||= this.constructor._primary._instanceToKeySingleton(this);
|
|
281
253
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
254
|
+
isLazyField(field) {
|
|
255
|
+
const descr = this.constructor._primary._lazyDescriptors[field];
|
|
256
|
+
return !!(descr && 'get' in descr && descr.get === Reflect.getOwnPropertyDescriptor(this, field)?.get);
|
|
257
|
+
}
|
|
258
|
+
_onCommit(onSaveQueue) {
|
|
259
|
+
const oldValues = this._oldValues;
|
|
260
|
+
let changed;
|
|
261
|
+
if (oldValues) {
|
|
262
|
+
// We're doing an update. Note that we may still be in a lazy state, and we don't want to load
|
|
263
|
+
// the whole object just to see if something changed.
|
|
264
|
+
// Delete all items from this.changed that have not actually changed.
|
|
265
|
+
const fields = this._fields;
|
|
266
|
+
changed = {};
|
|
267
|
+
for (const fieldName of Object.keys(oldValues)) {
|
|
268
|
+
const oldValue = oldValues[fieldName];
|
|
269
|
+
if (!fields[fieldName].type.equals(this[fieldName], oldValue)) {
|
|
270
|
+
changed[fieldName] = oldValue;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
if (isObjectEmpty(changed))
|
|
274
|
+
return; // No changes, nothing to do
|
|
275
|
+
// Make sure primary has not been changed
|
|
276
|
+
for (const field of this.constructor._primary._fieldTypes.keys()) {
|
|
277
|
+
if (changed.hasOwnProperty(field)) {
|
|
278
|
+
throw new DatabaseError(`Cannot modify primary key field: ${field}`, "CHANGE_PRIMARY");
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// We have changes. Now it's okay for any lazy fields to be loaded (which the validate will trigger).
|
|
282
|
+
// Raise any validation errors
|
|
283
|
+
this.validate(true);
|
|
284
|
+
// Update the primary index
|
|
285
|
+
this.constructor._primary._write(this);
|
|
286
|
+
// Update any secondaries with changed fields
|
|
287
|
+
for (const index of this.constructor._secondaries || []) {
|
|
288
|
+
for (const field of index._fieldTypes.keys()) {
|
|
289
|
+
if (changed.hasOwnProperty(field)) {
|
|
290
|
+
// We need to update this index - first delete the old one
|
|
291
|
+
index._delete(oldValues);
|
|
292
|
+
index._write(this);
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else if (this._primaryKey) { // Deleted instance
|
|
299
|
+
this.constructor._primary._delete(this);
|
|
300
|
+
for (const index of this.constructor._secondaries || []) {
|
|
301
|
+
index._delete(this);
|
|
302
|
+
}
|
|
303
|
+
changed = "deleted";
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
// New instance
|
|
307
|
+
// Raise any validation errors
|
|
308
|
+
this.validate(true);
|
|
309
|
+
// Make sure the primary key does not already exist
|
|
310
|
+
if (olmdb.get(this._getCreatePrimaryKey())) {
|
|
311
|
+
throw new DatabaseError("Unique constraint violation", "UNIQUE_CONSTRAINT");
|
|
312
|
+
}
|
|
313
|
+
// Insert the primary index
|
|
314
|
+
this.constructor._primary._write(this);
|
|
315
|
+
// Insert all secondaries
|
|
316
|
+
for (const index of this.constructor._secondaries || []) {
|
|
317
|
+
index._write(this);
|
|
318
|
+
}
|
|
319
|
+
changed = "created";
|
|
320
|
+
}
|
|
321
|
+
if (onSaveQueue) {
|
|
322
|
+
this.changed = changed;
|
|
323
|
+
onSaveQueue.push(this);
|
|
324
|
+
}
|
|
295
325
|
}
|
|
296
326
|
/**
|
|
297
327
|
* Prevent this instance from being persisted to the database.
|
|
298
328
|
*
|
|
299
|
-
* Removes the instance from the modified instances set and disables
|
|
300
|
-
* automatic persistence at transaction commit.
|
|
301
|
-
*
|
|
302
329
|
* @returns This model instance for chaining.
|
|
303
330
|
*
|
|
304
331
|
* @example
|
|
@@ -309,12 +336,19 @@ export class Model {
|
|
|
309
336
|
* ```
|
|
310
337
|
*/
|
|
311
338
|
preventPersist() {
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
modifiedInstances.delete(unproxiedModel);
|
|
315
|
-
unproxiedModel._state = 3; // no persist
|
|
339
|
+
const instances = olmdb.getTransactionData(INSTANCES_SYMBOL);
|
|
340
|
+
instances.delete(this);
|
|
316
341
|
return this;
|
|
317
342
|
}
|
|
343
|
+
/**
|
|
344
|
+
* Find all instances of this model in the database, ordered by primary key.
|
|
345
|
+
* @param opts - Optional parameters.
|
|
346
|
+
* @param opts.reverse - If true, iterate in reverse order.
|
|
347
|
+
* @returns An iterator.
|
|
348
|
+
*/
|
|
349
|
+
static findAll(opts) {
|
|
350
|
+
return this._primary.find(opts);
|
|
351
|
+
}
|
|
318
352
|
/**
|
|
319
353
|
* Delete this model instance from the database.
|
|
320
354
|
*
|
|
@@ -327,16 +361,9 @@ export class Model {
|
|
|
327
361
|
* ```
|
|
328
362
|
*/
|
|
329
363
|
delete() {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
const key = index._getKeyFromModel(unproxiedModel, true);
|
|
334
|
-
olmdb.del(key);
|
|
335
|
-
if (index instanceof PrimaryIndex)
|
|
336
|
-
queueOnSave([this, undefined, key]);
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
this.preventPersist();
|
|
364
|
+
if (!this._primaryKey)
|
|
365
|
+
throw new DatabaseError("Cannot delete unsaved instance", "NOT_SAVED");
|
|
366
|
+
this._oldValues = undefined;
|
|
340
367
|
}
|
|
341
368
|
/**
|
|
342
369
|
* Validate all fields in this model instance.
|
|
@@ -355,11 +382,12 @@ export class Model {
|
|
|
355
382
|
validate(raise = false) {
|
|
356
383
|
const errors = [];
|
|
357
384
|
for (const [key, fieldConfig] of Object.entries(this._fields)) {
|
|
358
|
-
|
|
359
|
-
|
|
385
|
+
let e = fieldConfig.type.getError(this[key]);
|
|
386
|
+
if (e) {
|
|
387
|
+
e = addErrorPath(e, this.constructor.tableName + "." + key);
|
|
360
388
|
if (raise)
|
|
361
|
-
throw
|
|
362
|
-
errors.push(
|
|
389
|
+
throw e;
|
|
390
|
+
errors.push(e);
|
|
363
391
|
}
|
|
364
392
|
}
|
|
365
393
|
return errors;
|
|
@@ -378,80 +406,4 @@ export class Model {
|
|
|
378
406
|
return this.validate().length === 0;
|
|
379
407
|
}
|
|
380
408
|
}
|
|
381
|
-
// We use recursive proxies to track modifications made to, say, arrays within models. In
|
|
382
|
-
// order to know which model a nested object belongs to, we maintain a WeakMap that maps
|
|
383
|
-
// objects to their owner (unproxied) model.
|
|
384
|
-
const modificationOwnerMap = new WeakMap();
|
|
385
|
-
// A cache for the proxies around nested objects, so that we don't need to recreate them
|
|
386
|
-
// every time we access a property on a nested object (and so that their identity remains
|
|
387
|
-
// the same).
|
|
388
|
-
const modificationProxyCache = new WeakMap();
|
|
389
|
-
// Single proxy handler for both models and nested objects
|
|
390
|
-
export const modificationTracker = {
|
|
391
|
-
get(target, prop) {
|
|
392
|
-
if (prop === TARGET_SYMBOL)
|
|
393
|
-
return target;
|
|
394
|
-
const value = target[prop];
|
|
395
|
-
if (!value || typeof value !== 'object' || (value instanceof Model))
|
|
396
|
-
return value;
|
|
397
|
-
// Check cache first
|
|
398
|
-
let proxy = modificationProxyCache.get(value);
|
|
399
|
-
if (proxy)
|
|
400
|
-
return proxy;
|
|
401
|
-
let model;
|
|
402
|
-
if (target instanceof Model) {
|
|
403
|
-
if (!target._fields[prop]) {
|
|
404
|
-
// No need to track properties that are not model fields.
|
|
405
|
-
return value;
|
|
406
|
-
}
|
|
407
|
-
model = target;
|
|
408
|
-
}
|
|
409
|
-
else {
|
|
410
|
-
model = modificationOwnerMap.get(target);
|
|
411
|
-
assert(model);
|
|
412
|
-
}
|
|
413
|
-
let state = model._state;
|
|
414
|
-
if (state !== undefined && state !== 2) {
|
|
415
|
-
// We don't need to track changes for this model (anymore). So we can just return the unproxied object.
|
|
416
|
-
// As we doing the modificationProxyCache lookup first, the identity of returned objects will not change:
|
|
417
|
-
// once a proxied object is returned, the same property will always return a proxied object.
|
|
418
|
-
return value;
|
|
419
|
-
}
|
|
420
|
-
if (modificationOwnerMap.get(value)) {
|
|
421
|
-
throw new DatabaseError("Object cannot be embedded in multiple model instances", 'VALUE_ERROR');
|
|
422
|
-
}
|
|
423
|
-
modificationOwnerMap.set(value, model);
|
|
424
|
-
proxy = new Proxy(value, modificationTracker);
|
|
425
|
-
modificationProxyCache.set(value, proxy);
|
|
426
|
-
return proxy;
|
|
427
|
-
},
|
|
428
|
-
set(target, prop, value) {
|
|
429
|
-
let model;
|
|
430
|
-
if (target instanceof Model) {
|
|
431
|
-
model = target;
|
|
432
|
-
if (!model._fields[prop]) {
|
|
433
|
-
// No need to track properties that are not model fields.
|
|
434
|
-
target[prop] = value;
|
|
435
|
-
return true;
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
else {
|
|
439
|
-
model = modificationOwnerMap.get(target);
|
|
440
|
-
assert(model);
|
|
441
|
-
}
|
|
442
|
-
let state = model._state;
|
|
443
|
-
if (state === undefined || state === 2) {
|
|
444
|
-
const modifiedInstances = olmdb.getTransactionData(MODIFIED_INSTANCES_SYMBOL);
|
|
445
|
-
modifiedInstances.add(model);
|
|
446
|
-
if (state === 2) {
|
|
447
|
-
model._state = model.constructor._indexes.map(idx => idx._getKeyFromModel(model, true));
|
|
448
|
-
}
|
|
449
|
-
else {
|
|
450
|
-
model._state = 1;
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
target[prop] = value;
|
|
454
|
-
return true;
|
|
455
|
-
}
|
|
456
|
-
};
|
|
457
409
|
//# sourceMappingURL=models.js.map
|
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,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAA0B,YAAY,EAAsB,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgBnF;;;;;;;;;;;;;;;;;;;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,MAAM,UAAU,gBAAgB;IAC5B,KAAI,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9C,KAAI,MAAM,KAAK,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YAC1C,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC;QACrC,CAAC;QACD,OAAO,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC;IAC1C,CAAC;AACL,CAAC;AAED,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;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAAkC,OAAU;IACrE,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAExC,qCAAqC;IACrC,KAAI,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACjF,SAAiB,CAAC,IAAI,CAAC,GAAI,OAAe,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;IAED,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,0DAA0D;IAEhG,mCAAmC;IACnC,IAAI,SAAS,CAAC,SAAS,IAAI,aAAa;QAAE,MAAM,IAAI,aAAa,CAAC,0BAA0B,SAAS,CAAC,SAAS,sBAAsB,EAAE,YAAY,CAAC,CAAC;IACrJ,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAE/C,6DAA6D;IAC7D,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1B,eAAe,EAAE,CAAC;IAElB,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,YAAY,CAAkC,QAAW;IACrE,MAAM,WAAW,GAAG,QAAe,CAAC;IACpC,IAAI,WAAW,CAAC,OAAO;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,WAAW,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC,KAAK,CAAC;IAEhD,MAAM,IAAI,GAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC;IAClD,MAAM,SAAS,GAAG,UAAoB,OAA4B;QAC9D,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,aAAa,CAAC,oEAAoE,EAAE,YAAY,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAoB,CAAC;QAChF,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxB,CAAa,CAAC;IAEd,kEAAkE;IAClE,QAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,SAAgB,CAAC;IAElD,mFAAmF;IACnF,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACxC,SAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;IAClC,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC;IAC9B,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,6CAA6C;AAC7C,MAAM,oBAAoB,GAAG,MAAM,EAAE,CAAC;AAEtC,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAYpD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,MAAM,OAAgB,KAAK;IACvB,MAAM,CAAC,QAAQ,CAAyB;IAExC,wDAAwD;IACxD,MAAM,CAAC,YAAY,CAAqD;IAExE,wDAAwD;IACxD,MAAM,CAAC,SAAS,CAAS;IAEzB,oCAAoC;IACpC,MAAM,CAAC,MAAM,CAAyD;IAEtE;;;;OAIG;IAEH;;;;OAIG;IACH,UAAU,CAAkC;IAC5C,WAAW,CAAyB;IAEpC;;;;;;;OAOG;IACH,OAAO,CAA2C;IAElD,8FAA8F;IAC9F,OAAO,CAA0D;IAEjE,YAAY,UAA6C,EAAE;QACvD,yFAAyF;QACzF,wFAAwF;QACxF,IAAI,OAAc,KAAK,oBAAoB,EAAE,CAAC;YAC1C,MAAM,IAAI,aAAa,CAAC,4CAA4C,EAAE,YAAY,CAAC,CAAC;QACxF,CAAC;IACL,CAAC;IAED,MAAM,CAAC,YAAY;QACf,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,uEAAuE;QACvE,yCAAyC;QACzC,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACD,QAAQ,GAAG,IAAK,IAAY,CAAC,oBAAoB,CAAC,CAAC;QACvD,CAAC;QAAC,OAAM,CAAC,EAAE,CAAC;YACR,IAAI,CAAC,CAAC,CAAC,YAAY,cAAc,CAAC;gBAAE,MAAM,CAAC,CAAC;YAC5C,yEAAyE;YACzE,qEAAqE;YACrE,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,wDAAwD;QACxD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACtB,gDAAgD;YAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACvC,CAAC;YACD,uGAAuG;YACvG,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAyB,CAAC;YACpD,iDAAiD;YACjD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,YAAY,WAAW,EAAE,CAAC;gBAC7C,+DAA+D;gBAC/D,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAE9B,qCAAqC;gBACrC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,KAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC3B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE,CAAC;oBAC5B,2FAA2F;oBAC3F,wFAAwF;oBACxF,0BAA0B;oBAC1B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE;wBAC5C,GAAG;4BACC,wEAAwE;4BACxE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;wBAChD,CAAC;wBACD,GAAG,CAAC,GAAQ;4BACR,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;gCAC7B,KAAK,EAAE,GAAG;gCACV,YAAY,EAAE,IAAI;gCAClB,QAAQ,EAAE,IAAI;gCACd,UAAU,EAAE,IAAI;6BACnB,CAAC,CAAA;wBACN,CAAC;wBACD,YAAY,EAAE,IAAI;qBACrB,CAAC,CAAC;gBACP,CAAC;qBAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBAC1B,SAAS,CAAC,SAAiB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAC5C,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,CAAC,SAAS,iBAAiB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnH,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,SAAiB,EAAE,KAAU;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACjF,IAAI,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;YAAE,OAAO,CAAC,iDAAiD;QAElG,MAAM,SAAS,GAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAA0B,CAAC,IAAI,CAAC;QACzE,IAAI,CAAC,SAA6B,CAAC,GAAG,KAAK,CAAC;QAC5C,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,aAAa;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,oBAAoB;QAChB,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACzF,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,SAAS,CAAC,WAAuC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,OAAkD,CAAC;QAEvD,IAAI,SAAS,EAAG,CAAC;YACb,8FAA8F;YAC9F,qDAAqD;YAErD,sEAAsE;YACtE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,OAAO,GAAG,EAAE,CAAC;YACb,KAAI,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAA+B,EAAE,CAAC;gBAC1E,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;gBACtC,IAAI,CAAE,MAAM,CAAC,SAAS,CAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;oBACtF,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;gBAClC,CAAC;YACL,CAAC;YACD,IAAI,aAAa,CAAC,OAAO,CAAC;gBAAE,OAAO,CAAC,4BAA4B;YAEhE,yCAAyC;YACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChE,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,aAAa,CAAC,oCAAoC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBAC3F,CAAC;YACL,CAAC;YAED,qGAAqG;YAErG,8BAA8B;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpB,2BAA2B;YAC3B,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAExC,6CAA6C;YAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;gBACtD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC3C,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;wBAChC,0DAA0D;wBAC1D,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBACzB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;wBAClB,MAAM;oBACV,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,mBAAmB;YAC9C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;gBACrD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,GAAG,SAAS,CAAC;QACxB,CAAC;aAAM,CAAC;YACJ,eAAe;YACf,8BAA8B;YAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpB,mDAAmD;YACnD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,aAAa,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,CAAC;YAChF,CAAC;YAED,2BAA2B;YAC3B,IAAI,CAAC,WAAW,CAAC,QAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAExC,yBAAyB;YACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;gBACtD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YAED,OAAO,GAAG,SAAS,CAAC;QACxB,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,IAAoB,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,cAAc;QACV,MAAM,SAAS,GAAG,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAoB,CAAC;QAChF,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAA2C,IAA0B;QAC/E,OAAO,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM;QACF,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,aAAa,CAAC,gCAAgC,EAAE,WAAW,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,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,OAAO,CAAC,EAAE,CAAC;YAC5D,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;CACJ"}
|