@simonbackx/simple-database 1.25.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/index.d.ts +9 -9
  2. package/dist/index.js.map +1 -1
  3. package/dist/migrations.d.ts +1 -1
  4. package/dist/migrations.js +6 -4
  5. package/dist/migrations.js.map +1 -1
  6. package/dist/src/classes/Column.d.ts +10 -6
  7. package/dist/src/classes/Column.js +62 -31
  8. package/dist/src/classes/Column.js.map +1 -1
  9. package/dist/src/classes/Database.d.ts +3 -2
  10. package/dist/src/classes/Database.js +26 -27
  11. package/dist/src/classes/Database.js.map +1 -1
  12. package/dist/src/classes/Factory.d.ts +1 -1
  13. package/dist/src/classes/Factory.js +5 -5
  14. package/dist/src/classes/ManyToManyRelation.d.ts +3 -3
  15. package/dist/src/classes/ManyToManyRelation.js +51 -51
  16. package/dist/src/classes/ManyToManyRelation.js.map +1 -1
  17. package/dist/src/classes/ManyToOneRelation.d.ts +1 -1
  18. package/dist/src/classes/ManyToOneRelation.js +2 -2
  19. package/dist/src/classes/ManyToOneRelation.js.map +1 -1
  20. package/dist/src/classes/Migration.js +19 -19
  21. package/dist/src/classes/Migration.js.map +1 -1
  22. package/dist/src/classes/Model.d.ts +41 -10
  23. package/dist/src/classes/Model.js +132 -80
  24. package/dist/src/classes/Model.js.map +1 -1
  25. package/dist/src/classes/Model.test.js +144 -144
  26. package/dist/src/classes/Model.test.js.map +1 -1
  27. package/dist/src/classes/OneToManyRelation.d.ts +3 -3
  28. package/dist/src/classes/OneToManyRelation.js +9 -9
  29. package/dist/src/classes/OneToManyRelation.js.map +1 -1
  30. package/dist/src/classes/data/boys.js +1000 -1000
  31. package/dist/src/classes/data/family-names.js +997 -997
  32. package/dist/src/classes/data/girls.js +999 -999
  33. package/dist/src/classes/data/streets.js +291 -291
  34. package/dist/src/decorators/Column.d.ts +4 -4
  35. package/dist/src/decorators/Column.js +1 -1
  36. package/dist/src/decorators/Column.js.map +1 -1
  37. package/dist/src/models/Migration.d.ts +1 -1
  38. package/dist/src/models/Migration.js +8 -8
  39. package/dist/src/models/Migration.js.map +1 -1
  40. package/dist/tests/jest.global.setup.d.ts +1 -0
  41. package/dist/tests/jest.global.setup.js +5 -3
  42. package/dist/tests/jest.global.setup.js.map +1 -1
  43. package/package.json +5 -8
@@ -1,7 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Model = void 0;
3
+ exports.Model = exports.ModelEventBus = void 0;
4
4
  const Database_1 = require("./Database");
5
+ /**
6
+ * Controls the fetching and decrypting of members
7
+ */
8
+ class ModelEventBus {
9
+ constructor() {
10
+ this.listeners = new Map();
11
+ }
12
+ addListener(owner, listener) {
13
+ const existing = this.listeners.get(owner);
14
+ if (existing) {
15
+ existing.push({ listener });
16
+ }
17
+ else {
18
+ this.listeners.set(owner, [{ listener }]);
19
+ }
20
+ }
21
+ removeListener(owner) {
22
+ this.listeners.delete(owner);
23
+ }
24
+ async sendEvent(value) {
25
+ const values = [];
26
+ for (const owner of this.listeners.values()) {
27
+ for (const listener of owner) {
28
+ values.push(listener.listener(value));
29
+ }
30
+ }
31
+ return await Promise.all(values);
32
+ }
33
+ }
34
+ exports.ModelEventBus = ModelEventBus;
5
35
  class Model /* static implements RowInitiable<Model> */ {
6
36
  constructor() {
7
37
  this.existsInDatabase = false;
@@ -25,7 +55,7 @@ class Model /* static implements RowInitiable<Model> */ {
25
55
  eraseProperty(key) {
26
56
  const column = this.static.columns.get(key);
27
57
  if (!column) {
28
- throw new Error("Unknown property " + key);
58
+ throw new Error('Unknown property ' + key);
29
59
  }
30
60
  delete this[key];
31
61
  this.savedProperties.delete(key);
@@ -40,22 +70,22 @@ class Model /* static implements RowInitiable<Model> */ {
40
70
  * Mark all properties as changed, so they will get updated on the next save
41
71
  */
42
72
  markAllChanged() {
43
- this.savedProperties = new Map();
73
+ this.savedProperties.clear();
44
74
  }
45
75
  /**
46
76
  * Returns the default select to select the needed properties of this table
47
77
  * @param namespace: optional namespace of this select
48
78
  */
49
79
  static getDefaultSelect(namespace = this.table) {
50
- return "`" + namespace + "`.*";
80
+ return '`' + namespace + '`.*';
51
81
  }
52
82
  static selectColumnsWithout(namespace = this.table, ...exclude) {
53
- const properties = Array.from(this.columns.keys()).flatMap((name) => (exclude.includes(name) ? [] : [name]));
54
- if (properties.length == 0) {
83
+ const properties = Array.from(this.columns.keys()).flatMap(name => (exclude.includes(name) ? [] : [name]));
84
+ if (properties.length === 0) {
55
85
  // todo: check what to do in this case.
56
- throw new Error("Not implemented yet");
86
+ throw new Error('Not implemented yet');
57
87
  }
58
- return "`" + namespace + "`.`" + properties.join("`, `" + namespace + "`.`") + "`";
88
+ return '`' + namespace + '`.`' + properties.join('`, `' + namespace + '`.`') + '`';
59
89
  }
60
90
  /**
61
91
  * Set a relation to undefined, marking it as not loaded (so it won't get saved in the next save)
@@ -78,7 +108,7 @@ class Model /* static implements RowInitiable<Model> */ {
78
108
  setOptionalRelation(relation, value) {
79
109
  // Todo: check if relation is nullable?
80
110
  if (value !== null && !value.existsInDatabase) {
81
- throw new Error("You cannot set a relation to a model that are not yet saved in the database.");
111
+ throw new Error('You cannot set a relation to a model that are not yet saved in the database.');
82
112
  }
83
113
  const t = this;
84
114
  t[relation.modelKey] = value;
@@ -87,7 +117,7 @@ class Model /* static implements RowInitiable<Model> */ {
87
117
  }
88
118
  setRelation(relation, value) {
89
119
  if (!value.existsInDatabase) {
90
- throw new Error("You cannot set a relation to a model that are not yet saved in the database.");
120
+ throw new Error('You cannot set a relation to a model that are not yet saved in the database.');
91
121
  }
92
122
  const t = this;
93
123
  t[relation.modelKey] = value;
@@ -100,7 +130,7 @@ class Model /* static implements RowInitiable<Model> */ {
100
130
  setManyRelation(relation, value) {
101
131
  value.forEach((v) => {
102
132
  if (!v.existsInDatabase) {
103
- throw new Error("You cannot set a relation to models that are not yet saved in the database.");
133
+ throw new Error('You cannot set a relation to models that are not yet saved in the database.');
104
134
  }
105
135
  });
106
136
  const t = this;
@@ -126,7 +156,7 @@ class Model /* static implements RowInitiable<Model> */ {
126
156
  model[column.name] = undefined;
127
157
  }
128
158
  }
129
- model.markSaved();
159
+ model.markSaved(); // note: we don't pass row because that value is unreliable for json values (mysql performs sorting and other opertions on keys)
130
160
  return model;
131
161
  }
132
162
  static fromRows(rows, namespace) {
@@ -138,14 +168,13 @@ class Model /* static implements RowInitiable<Model> */ {
138
168
  return [];
139
169
  });
140
170
  }
141
- markSaved() {
171
+ markSaved(fields) {
142
172
  this.existsInDatabase = true;
143
- this.savedProperties.clear();
144
173
  this.forceSaveProperties.clear();
145
174
  for (const column of this.static.columns.values()) {
146
- if (this[column.name] !== undefined) {
175
+ if ((fields ? fields[column.name] : this[column.name]) !== undefined) {
147
176
  // If undefined: do not update, since we didn't save the value
148
- this.savedProperties.set(column.name, column.saveProperty(this[column.name]));
177
+ this.savedProperties.set(column.name, fields ? fields[column.name] : column.to(this[column.name]));
149
178
  }
150
179
  }
151
180
  /// Save relation foreign keys (so we can check if the id has changed)
@@ -173,18 +202,19 @@ class Model /* static implements RowInitiable<Model> */ {
173
202
  */
174
203
  static async getByID(id) {
175
204
  const [rows] = await Database_1.Database.select(`SELECT ${this.getDefaultSelect()} FROM \`${this.table}\` WHERE \`${this.primary.name}\` = ? LIMIT 1`, [id]);
176
- if (rows.length == 0) {
205
+ if (rows.length === 0) {
177
206
  return undefined;
178
207
  }
179
208
  // Read member + address from first row
180
- return this.fromRow(rows[0][this.table]);
209
+ const row = rows[0][this.table];
210
+ return this.fromRow(row);
181
211
  }
182
212
  /**
183
213
  * Get multiple models by their ID
184
214
  * @param ids primary key of the models you want to fetch
185
215
  */
186
216
  static async getByIDs(...ids) {
187
- if (ids.length == 0) {
217
+ if (ids.length === 0) {
188
218
  return [];
189
219
  }
190
220
  const [rows] = await Database_1.Database.select(`SELECT ${this.getDefaultSelect()} FROM \`${this.table}\` WHERE \`${this.primary.name}\` IN (?) LIMIT ?`, [
@@ -198,26 +228,26 @@ class Model /* static implements RowInitiable<Model> */ {
198
228
  let whereQuery;
199
229
  const params = [];
200
230
  switch (value.sign) {
201
- case "MATCH": {
202
- let suffix = "";
231
+ case 'MATCH': {
232
+ let suffix = '';
203
233
  if (value.mode) {
204
234
  switch (value.mode) {
205
- case "BOOLEAN":
206
- suffix = " IN BOOLEAN MODE";
235
+ case 'BOOLEAN':
236
+ suffix = ' IN BOOLEAN MODE';
207
237
  break;
208
238
  default:
209
- throw new Error("Unknown match mode " + value.mode);
239
+ throw new Error('Unknown match mode ' + value.mode);
210
240
  }
211
241
  }
212
242
  whereQuery = (`MATCH(\`${this.table}\`.\`${key}\`) AGAINST(?${suffix})`);
213
243
  params.push(value.value);
214
244
  break;
215
245
  }
216
- case "LIKE":
246
+ case 'LIKE':
217
247
  whereQuery = (`\`${this.table}\`.\`${key}\` LIKE ?`);
218
248
  params.push(value.value);
219
249
  break;
220
- case "!=":
250
+ case '!=':
221
251
  if (value.value === null) {
222
252
  whereQuery = (`\`${this.table}\`.\`${key}\` IS NOT NULL`);
223
253
  }
@@ -226,23 +256,23 @@ class Model /* static implements RowInitiable<Model> */ {
226
256
  params.push(value.value);
227
257
  }
228
258
  break;
229
- case "<":
259
+ case '<':
230
260
  whereQuery = (`\`${this.table}\`.\`${key}\` < ?`);
231
261
  params.push(value.value);
232
262
  break;
233
- case ">":
263
+ case '>':
234
264
  whereQuery = (`\`${this.table}\`.\`${key}\` > ?`);
235
265
  params.push(value.value);
236
266
  break;
237
- case "<=":
267
+ case '<=':
238
268
  whereQuery = (`\`${this.table}\`.\`${key}\` <= ?`);
239
269
  params.push(value.value);
240
270
  break;
241
- case ">=":
271
+ case '>=':
242
272
  whereQuery = (`\`${this.table}\`.\`${key}\` >= ?`);
243
273
  params.push(value.value);
244
274
  break;
245
- case "=":
275
+ case '=':
246
276
  if (value.value === null) {
247
277
  whereQuery = (`\`${this.table}\`.\`${key}\` IS NULL`);
248
278
  }
@@ -251,13 +281,13 @@ class Model /* static implements RowInitiable<Model> */ {
251
281
  params.push(value.value);
252
282
  }
253
283
  break;
254
- case "IN":
284
+ case 'IN':
255
285
  if (!Array.isArray(value.value)) {
256
- throw new Error("Expected an array for IN where query");
286
+ throw new Error('Expected an array for IN where query');
257
287
  }
258
288
  if (value.value.includes(null)) {
259
289
  const filtered = value.value.filter(v => v !== null);
260
- if (filtered.length == 0) {
290
+ if (filtered.length === 0) {
261
291
  whereQuery = (`\`${this.table}\`.\`${key}\` IS NULL`);
262
292
  }
263
293
  else if (filtered.length === 1) {
@@ -277,7 +307,7 @@ class Model /* static implements RowInitiable<Model> */ {
277
307
  }
278
308
  break;
279
309
  default:
280
- throw new Error("Sign not supported.");
310
+ throw new Error('Sign not supported.');
281
311
  }
282
312
  return [whereQuery, params];
283
313
  }
@@ -285,7 +315,7 @@ class Model /* static implements RowInitiable<Model> */ {
285
315
  const whereQuery = [];
286
316
  const params = [];
287
317
  for (const key in where) {
288
- if (where.hasOwnProperty(key)) {
318
+ if (Object.hasOwnProperty.call(where, key)) {
289
319
  const value = where[key];
290
320
  if (Array.isArray(value)) {
291
321
  for (const v of value) {
@@ -294,7 +324,7 @@ class Model /* static implements RowInitiable<Model> */ {
294
324
  params.push(...p);
295
325
  }
296
326
  }
297
- else if (typeof value === "object" && value !== null && !(value instanceof Date)) {
327
+ else if (typeof value === 'object' && value !== null && !(value instanceof Date)) {
298
328
  const [w, p] = this.buildWhereOperator(key, value);
299
329
  whereQuery.push(w);
300
330
  params.push(...p);
@@ -310,9 +340,10 @@ class Model /* static implements RowInitiable<Model> */ {
310
340
  }
311
341
  }
312
342
  }
313
- return [whereQuery.join(" AND "), params];
343
+ return [whereQuery.join(' AND '), params];
314
344
  }
315
345
  /**
346
+ * @deprecated Use the new SQL package instead
316
347
  * Get multiple models by a simple where
317
348
  */
318
349
  static async where(where, extra) {
@@ -327,20 +358,20 @@ class Model /* static implements RowInitiable<Model> */ {
327
358
  if (extra && extra.sort !== undefined) {
328
359
  const sortQuery = [];
329
360
  for (const item of extra.sort) {
330
- if (typeof item == "string") {
331
- sortQuery.push(Database_1.Database.escapeId(item) + " ASC");
361
+ if (typeof item === 'string') {
362
+ sortQuery.push(Database_1.Database.escapeId(item) + ' ASC');
332
363
  }
333
- else if (typeof item.column == "string") {
334
- sortQuery.push(Database_1.Database.escapeId(item.column) + " " + ((_b = item.direction) !== null && _b !== void 0 ? _b : "ASC"));
364
+ else if (typeof item.column === 'string') {
365
+ sortQuery.push(Database_1.Database.escapeId(item.column) + ' ' + ((_b = item.direction) !== null && _b !== void 0 ? _b : 'ASC'));
335
366
  }
336
367
  else {
337
368
  // Repeat use of a where query in the sorting (needed when fulltext searching and need to sort on the score, because limit won't work without this for an unknown reason)
338
369
  const [w, p] = this.buildWhereQuery(item.column);
339
- sortQuery.push("(" + w + ") " + ((_c = item.direction) !== null && _c !== void 0 ? _c : "ASC"));
370
+ sortQuery.push('(' + w + ') ' + ((_c = item.direction) !== null && _c !== void 0 ? _c : 'ASC'));
340
371
  params.push(...p);
341
372
  }
342
373
  }
343
- query += ` ORDER BY ` + sortQuery.join(", ");
374
+ query += ` ORDER BY ` + sortQuery.join(', ');
344
375
  }
345
376
  if (extra && extra.limit !== undefined) {
346
377
  query += ` LIMIT ?`;
@@ -365,34 +396,29 @@ class Model /* static implements RowInitiable<Model> */ {
365
396
  /**
366
397
  * Return an object of all the properties that are changed and their database representation
367
398
  */
368
- async getChangedDatabaseProperties() {
399
+ getChangedDatabaseProperties() {
369
400
  const set = {};
370
401
  let skipUpdate = 0;
371
402
  for (const column of this.static.columns.values()) {
372
403
  // Run beforeSave
373
404
  if (column.beforeSave) {
374
- const val = column.beforeSave.call(this, this[column.name]);
375
- if (val && val.then) {
376
- this[column.name] = await val;
377
- }
378
- else {
379
- // Skip causing an event-loop jump if not needed
380
- this[column.name] = val;
381
- }
405
+ this[column.name] = column.beforeSave.call(this, this[column.name]);
382
406
  }
383
- if (column.primary && column.type == "integer" && this.static.primary.name == "id") {
407
+ if (column.primary && column.type === 'integer' && this.static.primary.name === 'id') {
384
408
  // Auto increment: not allowed to set
385
409
  continue;
386
410
  }
387
411
  if (!this.existsInDatabase && this[column.name] === undefined) {
388
412
  // In the future we might make some columns optional because they have a default value in the database.
389
413
  // But that could cause inconsitent state, so it would be better to generate default values in code.
390
- throw new Error("Tried to create model " + this.constructor.name + " with undefined property " + column.name);
414
+ throw new Error('Tried to create model ' + this.constructor.name + ' with undefined property ' + column.name);
391
415
  }
392
416
  if (this[column.name] !== undefined) {
393
417
  const forceSave = this.forceSaveProperties.has(column.name);
394
- if (forceSave || column.isChanged(this.savedProperties.get(column.name), this[column.name])) {
395
- set[column.name] = column.to(this[column.name]);
418
+ const oldSavedValue = forceSave ? undefined : this.savedProperties.get(column.name);
419
+ const saveValue = forceSave ? null : column.to(this[column.name]); // .to is expensive, so avoid calling it when not needed
420
+ if (forceSave || oldSavedValue === undefined || column.isChanged(oldSavedValue, saveValue)) {
421
+ set[column.name] = forceSave ? column.to(this[column.name]) : saveValue;
396
422
  if (column.skipUpdate && !forceSave) {
397
423
  skipUpdate++;
398
424
  }
@@ -403,10 +429,10 @@ class Model /* static implements RowInitiable<Model> */ {
403
429
  }
404
430
  async save() {
405
431
  if (!this.static.table) {
406
- throw new Error("Table name not set");
432
+ throw new Error('Table name not set');
407
433
  }
408
434
  if (!this.static.primary) {
409
- throw new Error("Primary key not set for model " + this.constructor.name + " " + this.static);
435
+ throw new Error('Primary key not set for model ' + this.constructor.name + ' ' + this.static);
410
436
  }
411
437
  // Check if relation models were modified
412
438
  for (const relation of this.static.relations) {
@@ -416,17 +442,17 @@ class Model /* static implements RowInitiable<Model> */ {
416
442
  if (relation.isSet(this)) {
417
443
  const model = this[relation.modelKey];
418
444
  if (!model.existsInDatabase) {
419
- throw new Error("You cannot set a relation that is not yet saved in the database.");
445
+ throw new Error('You cannot set a relation that is not yet saved in the database.');
420
446
  }
421
447
  if (this[relation.foreignKey] !== model.getPrimaryKey()) {
422
448
  // Should always match because setRelation will make it match on setting it.
423
- throw new Error("You cannot modify the value of a foreign key when the relation is loaded. Unload the relation first or modify the relation with setRelation");
449
+ throw new Error('You cannot modify the value of a foreign key when the relation is loaded. Unload the relation first or modify the relation with setRelation');
424
450
  }
425
451
  }
426
452
  else {
427
453
  if (this[relation.foreignKey] !== null) {
428
454
  // Should always match because setRelation will make it match on setting it.
429
- throw new Error("You cannot set a foreign key when the relation is loaded. Unload the relation first or modify the relation with setRelation");
455
+ throw new Error('You cannot set a foreign key when the relation is loaded. Unload the relation first or modify the relation with setRelation');
430
456
  }
431
457
  }
432
458
  }
@@ -434,35 +460,36 @@ class Model /* static implements RowInitiable<Model> */ {
434
460
  const id = this.getPrimaryKey();
435
461
  if (!id) {
436
462
  if (this.existsInDatabase) {
437
- throw new Error("Model " + this.constructor.name + " was loaded from the Database, but didn't select the ID. Saving not possible.");
463
+ throw new Error('Model ' + this.constructor.name + " was loaded from the Database, but didn't select the ID. Saving not possible.");
438
464
  }
439
465
  }
440
466
  else {
441
- if (!this.existsInDatabase && this.static.primary.type == "integer" && this.static.primary.name == "id") {
467
+ if (!this.existsInDatabase && this.static.primary.type === 'integer' && this.static.primary.name === 'id') {
442
468
  throw new Error(`PrimaryKey was set programmatically without fetching the model ${this.constructor.name} from the database. This is not allowed for integer primary keys.`);
443
469
  }
444
470
  }
445
- const { fields, skipUpdate } = await this.getChangedDatabaseProperties();
446
- if (Object.keys(fields).length == 0) {
471
+ const { fields, skipUpdate } = this.getChangedDatabaseProperties();
472
+ if (Object.keys(fields).length === 0) {
447
473
  if (Model.showWarnings)
448
- console.warn("Tried to update model without any properties modified");
474
+ console.warn('Tried to update model without any properties modified');
449
475
  return false;
450
476
  }
451
477
  if (this.existsInDatabase && skipUpdate === Object.keys(fields).length) {
452
478
  if (Model.showWarnings)
453
- console.warn("Tried to update model without any properties modified");
479
+ console.warn('Tried to update model without any properties modified');
454
480
  return false;
455
481
  }
456
482
  if (Model.debug)
457
- console.log("Saving " + this.constructor.name + " to...", fields);
483
+ console.log('Saving ' + this.constructor.name + ' to...', fields);
458
484
  // todo: save here
459
485
  if (!this.existsInDatabase) {
460
486
  if (Model.debug)
461
487
  console.log(`Creating new ${this.constructor.name}`);
462
- const [result] = await Database_1.Database.insert("INSERT INTO `" + this.static.table + "` SET ?", [fields]);
463
- if (this.static.primary.type == "integer" && this.static.primary.name == "id") {
488
+ const [result] = await Database_1.Database.insert('INSERT INTO `' + this.static.table + '` SET ?', [fields]);
489
+ if (this.static.primary.type === 'integer' && this.static.primary.name === 'id') {
464
490
  // Auto increment value
465
491
  this[this.static.primary.name] = result.insertId;
492
+ fields[this.static.primary.name] = result.insertId; // Also mark saved
466
493
  if (Model.debug)
467
494
  console.log(`New id = ${this[this.static.primary.name]}`);
468
495
  }
@@ -470,37 +497,62 @@ class Model /* static implements RowInitiable<Model> */ {
470
497
  else {
471
498
  if (Model.debug)
472
499
  console.log(`Updating ${this.constructor.name} where ${this.static.primary.name} = ${id}`);
473
- const [result] = await Database_1.Database.update("UPDATE `" + this.static.table + "` SET ? WHERE `" + this.static.primary.name + "` = ?", [fields, id]);
474
- if (result.changedRows != 1 && Model.showWarnings) {
500
+ const [result] = await Database_1.Database.update('UPDATE `' + this.static.table + '` SET ? WHERE `' + this.static.primary.name + '` = ?', [fields, id]);
501
+ if (result.changedRows !== 1 && Model.showWarnings) {
475
502
  console.warn(`Updated ${this.constructor.name}, but it didn't change a row. Check if ID exists.`);
476
503
  }
477
504
  }
478
- // Mark everything as saved
479
- this.markSaved();
505
+ // Emit event
506
+ if (this.existsInDatabase) {
507
+ // Keep reference to old properties before marking saved
508
+ const originalProperties = Object.fromEntries(Array.from(this.savedProperties.entries()));
509
+ // Mark saved before sending the event
510
+ this.markSaved(fields);
511
+ await this.static.modelEventBus.sendEvent({
512
+ type: 'updated',
513
+ model: this,
514
+ changedFields: fields,
515
+ originalFields: originalProperties,
516
+ getOldModel: () => {
517
+ // Build a new model as if it was loaded from the database using the same original properties
518
+ const v = this.static.fromRow(originalProperties);
519
+ if (v === undefined) {
520
+ throw new Error('Failed to create old model: primary key might be missing');
521
+ }
522
+ return v;
523
+ },
524
+ });
525
+ }
526
+ else {
527
+ this.markSaved(fields);
528
+ await this.static.modelEventBus.sendEvent({ type: 'created', model: this });
529
+ }
480
530
  return true;
481
531
  }
482
532
  async delete() {
483
533
  const id = this.getPrimaryKey();
484
534
  if (!id && this.existsInDatabase) {
485
- throw new Error("Model " + this.constructor.name + " was loaded from the Database, but didn't select the ID. Deleting not possible.");
535
+ throw new Error('Model ' + this.constructor.name + " was loaded from the Database, but didn't select the ID. Deleting not possible.");
486
536
  }
487
537
  if (!id || !this.existsInDatabase) {
488
- throw new Error("Model " + this.constructor.name + " can't be deleted if it doesn't exist in the database already");
538
+ throw new Error('Model ' + this.constructor.name + " can't be deleted if it doesn't exist in the database already");
489
539
  }
490
540
  if (Model.debug)
491
541
  console.log(`Updating ${this.constructor.name} where ${this.static.primary.name} = ${id}`);
492
- const [result] = await Database_1.Database.delete("DELETE FROM `" + this.static.table + "` WHERE `" + this.static.primary.name + "` = ?", [id]);
493
- if (result.affectedRows != 1 && Model.showWarnings) {
542
+ const [result] = await Database_1.Database.delete('DELETE FROM `' + this.static.table + '` WHERE `' + this.static.primary.name + '` = ?', [id]);
543
+ if (result.affectedRows !== 1 && Model.showWarnings) {
494
544
  console.warn(`Deleted ${this.constructor.name}, but it didn't change a row. Check if ID exists.`);
495
545
  }
496
546
  this.existsInDatabase = false;
497
- if (this.static.primary.type == "integer" && this.static.primary.name == "id") {
547
+ if (this.static.primary.type === 'integer' && this.static.primary.name === 'id') {
498
548
  this.eraseProperty(this.static.primary.name);
499
549
  }
500
550
  this.savedProperties.clear();
551
+ await this.static.modelEventBus.sendEvent({ type: 'deleted', model: this });
501
552
  }
502
553
  }
503
554
  exports.Model = Model;
555
+ Model.modelEventBus = new ModelEventBus();
504
556
  Model.debug = false;
505
557
  Model.showWarnings = false;
506
558
  //# sourceMappingURL=Model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/classes/Model.ts"],"names":[],"mappings":";;;AACA,yCAAsC;AAQtC,MAAa,KAAK,CAAC,2CAA2C;IAsB1D;QAVA,qBAAgB,GAAG,KAAK,CAAC;QAEjB,oBAAe,GAAG,IAAI,GAAG,EAAe,CAAC;QAEjD;;;WAGG;QACK,wBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;QAG5C,cAAc;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;SACnD;IACL,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAW;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,GAAW;QACzB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,cAAc;QACV,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAe,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,YAAoB,IAAI,CAAC,KAAK;QAClD,OAAO,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,YAAoB,IAAI,CAAC,KAAK,EAAE,GAAG,OAAiB;QAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7G,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YACxB,uCAAuC;YACvC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SAC1C;QACD,OAAO,GAAG,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IACvF,CAAC;IAED;;;OAGG;IACH,cAAc,CAEV,QAAqC;QAErC,uCAAuC;QACvC,MAAM,CAAC,GAAG,IAAW,CAAC;QACtB,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,aAAa,CAET,QAAqC;QAErC,uCAAuC;QACvC,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,mBAAmB,CACf,QAAuC,EACvC,KAAmB;QAEnB,uCAAuC;QAEvC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;SACnG;QACD,MAAM,CAAC,GAAG,IAAW,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,OAAO,CAAC,CAAC;IACb,CAAC;IAED,WAAW,CAA8D,QAAuC,EAAE,KAAQ;QACtH,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;SACnG;QACD,MAAM,CAAC,GAAG,IAAW,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAC/C,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;OAEG;IACH,eAAe,CACX,QAAuF,EACvF,KAAc;QAEd,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;aAClG;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,IAAW,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7B,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAkC,GAAQ;QACpD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE;YAClH,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAqB,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YACxC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5C,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;aAC9B;iBAAM;gBACH,gDAAgD;gBAChD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;aAClC;SACJ;QAED,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAkC,IAAW,EAAE,SAAiB;QAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3C,IAAI,KAAK,EAAE;gBACP,OAAO,CAAC,KAAK,CAAC,CAAC;aAClB;YACD,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,SAAS;QACb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAEjC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBACjC,8DAA8D;gBAC9D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACjF;SACJ;QAED,sEAAsE;QACtE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACtC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;iBACrD;qBAAM;oBACH,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;iBACpC;aACJ;SACJ;IACL,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,WAA2B,CAAC;IAC5C,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAkC,EAAmB;QACrE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElJ,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAClB,OAAO,SAAS,CAAC;SACpB;QAED,uCAAuC;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAkC,GAAG,GAAwB;QAC9E,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;YACjB,OAAO,EAAE,CAAC;SACb;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAmB,EAAE;YAC3I,GAAG;YACH,GAAG,CAAC,MAAM;SACb,CAAC,CAAC;QAEH,uCAAuC;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAW,EAAE,KAAe;QAClD,IAAI,UAAkB,CAAA;QACtB,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,QAAQ,KAAK,CAAC,IAAI,EAAE;YAChB,KAAK,OAAO,CAAC,CAAC;gBACV,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,KAAK,CAAC,IAAI,EAAE;oBACZ,QAAQ,KAAK,CAAC,IAAI,EAAE;wBAChB,KAAK,SAAS;4BACV,MAAM,GAAG,kBAAkB,CAAC;4BAC5B,MAAM;wBACV;4BACI,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;qBAE1D;iBACJ;gBACD,UAAU,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,QAAQ,GAAG,gBAAgB,MAAM,GAAG,CAAC,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;aACT;YAED,KAAK,MAAM;gBACP,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,IAAI;gBACL,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;oBACtB,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,gBAAgB,CAAC,CAAC;iBAC7D;qBAAM;oBACH,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAC,CAAC;oBACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBACD,MAAM;YAEV,KAAK,GAAG;gBACJ,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,GAAG;gBACJ,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,IAAI;gBACL,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,IAAI;gBACL,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,GAAG;gBACJ,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;oBACtB,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,YAAY,CAAC,CAAC;iBACzD;qBAAM;oBACH,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC;oBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBACD,MAAM;YAEV,KAAK,IAAI;gBACL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;iBAC1D;gBACD,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC5B,MAAM,QAAQ,GAAI,KAAK,CAAC,KAAoC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;oBACpF,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;wBACtB,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,YAAY,CAAC,CAAC;qBACzD;yBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;wBAC7B,gBAAgB;wBACjB,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,QAAQ,GAAG,eAAe,IAAI,CAAC,KAAK,QAAQ,GAAG,aAAa,CAAC,CAAC;wBAC5F,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC5B;yBAAM;wBACH,gBAAgB;wBAChB,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,QAAQ,GAAG,kBAAkB,IAAI,CAAC,KAAK,QAAQ,GAAG,aAAa,CAAC,CAAC;wBAC/F,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBACzB;iBAEJ;qBAAM;oBACH,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,CAAC;oBACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBAED,MAAM;YAEV;gBACI,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SAC9C;QAED,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,KAAoB;QACvC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;wBACnB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;wBAC9C,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;wBAClB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;qBACpB;iBACJ;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE;oBAChF,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;oBAClD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBAClB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;iBACpB;qBAAM;oBACH,IAAI,KAAK,KAAK,IAAI,EAAE;wBAChB,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,YAAY,CAAC,CAAC;qBAC3D;yBAAM;wBACH,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC;wBACpD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACtB;iBACJ;aACJ;SACJ;QAED,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAkC,KAAoB,EAAE,KAIzE;;QACG,MAAM,MAAM,GAAU,EAAE,CAAA;QAExB,IAAI,KAAK,GAAG,UAAU,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,IAAI,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,KAAK,IAAI,CAAA;QACvF,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YACnD,KAAK,IAAI,QAAQ,GAAG,UAAU,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;SACpB;QAED,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YACnC,MAAM,SAAS,GAAa,EAAE,CAAA;YAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;gBAC3B,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE;oBACzB,SAAS,CAAC,IAAI,CAAC,mBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;iBACnD;qBAAM,IAAI,OAAO,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE;oBACvC,SAAS,CAAC,IAAI,CAAC,mBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAC,GAAG,GAAC,CAAC,MAAA,IAAI,CAAC,SAAS,mCAAI,KAAK,CAAC,CAAC,CAAA;iBAC/E;qBAAM;oBACH,yKAAyK;oBACzK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAEhD,SAAS,CAAC,IAAI,CAAC,GAAG,GAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAA,IAAI,CAAC,SAAS,mCAAI,KAAK,CAAC,CAAC,CAAA;oBACzD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;iBACpB;aACJ;YAED,KAAK,IAAI,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChD;QAED,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;YACpC,KAAK,IAAI,UAAU,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC5B;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAkC,KAAc;QAC5D,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,UAAU,IAAI,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC;QAEvE,IAAI,KAAK,EAAE;YACP,KAAK,IAAI,UAAU,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,4BAA4B;QAC9B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,IAAI,UAAU,GAAG,CAAC,CAAA;QAElB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YAC/C,iBAAiB;YACjB,IAAI,MAAM,CAAC,UAAU,EAAE;gBACnB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5D,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAO,GAAoB,CAAA;iBAClD;qBAAM;oBACH,gDAAgD;oBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;iBAC1B;aACJ;YAED,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;gBAChF,qCAAqC;gBACrC,SAAS;aACZ;YAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBAC3D,uGAAuG;gBACvG,oGAAoG;gBACpG,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,2BAA2B,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;aACjH;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC3D,IAAI,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;oBACzF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oBAEhD,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE;wBACjC,UAAU,EAAE,CAAA;qBACf;iBACJ;aACJ;SACJ;QAED,OAAO,EAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACzC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;SACjG;QAED,yCAAyC;QACzC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC1C,mFAAmF;YACnF,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACzB,wDAAwD;gBACxD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAU,CAAC;oBAE/C,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;wBACzB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;qBACvF;oBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,aAAa,EAAE,EAAE;wBACrD,4EAA4E;wBAC5E,MAAM,IAAI,KAAK,CACX,6IAA6I,CAChJ,CAAC;qBACL;iBACJ;qBAAM;oBACH,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;wBACpC,4EAA4E;wBAC5E,MAAM,IAAI,KAAK,CACX,6HAA6H,CAChI,CAAC;qBACL;iBACJ;aACJ;SACJ;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,EAAE,EAAE;YACL,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,+EAA+E,CAAC,CAAC;aACvI;SACJ;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;gBACrG,MAAM,IAAI,KAAK,CACX,kEAAkE,IAAI,CAAC,WAAW,CAAC,IAAI,mEAAmE,CAC7J,CAAC;aACL;SACJ;QAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEzE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YACjC,IAAI,KAAK,CAAC,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;YACpE,IAAI,KAAK,CAAC,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEnF,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,KAAK,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAEtE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YAElG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;gBAC3E,uBAAuB;gBACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACjD,IAAI,KAAK,CAAC,KAAK;oBAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9E;SACJ;aAAM;YACH,IAAI,KAAK,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;YAE5G,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9I,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE;gBAC/C,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,mDAAmD,CAAC,CAAC;aACrG;SACJ;QAED,2BAA2B;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEhC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,iFAAiF,CAAC,CAAC;SACzI;QAED,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,+DAA+D,CAAC,CAAC;SACvH;QAED,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QAE5G,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrI,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE;YAChD,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,mDAAmD,CAAC,CAAC;SACrG;QAED,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;YAC3E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;;AAllBL,sBAmlBC;AA5kBU,WAAK,GAAG,KAAK,CAAC;AACd,kBAAY,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/classes/Model.ts"],"names":[],"mappings":"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"}