velocious 1.0.577 → 1.0.578

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 (42) hide show
  1. package/README.md +11 -5
  2. package/build/background-jobs/main.js +2 -2
  3. package/build/configuration-types.js +1 -0
  4. package/build/configuration.js +52 -10
  5. package/build/database/drivers/mysql/structure-sql.js +70 -9
  6. package/build/database/query/with-count.js +8 -8
  7. package/build/database/record/record-not-found-error.js +1 -0
  8. package/build/frontend-model-controller.js +71 -69
  9. package/build/frontend-models/base.js +10 -1
  10. package/build/src/background-jobs/main.js +3 -3
  11. package/build/src/configuration-types.d.ts +5 -0
  12. package/build/src/configuration-types.d.ts.map +1 -1
  13. package/build/src/configuration-types.js +2 -1
  14. package/build/src/configuration.d.ts +13 -1
  15. package/build/src/configuration.d.ts.map +1 -1
  16. package/build/src/configuration.js +52 -11
  17. package/build/src/database/drivers/mysql/structure-sql.d.ts +11 -0
  18. package/build/src/database/drivers/mysql/structure-sql.d.ts.map +1 -1
  19. package/build/src/database/drivers/mysql/structure-sql.js +61 -10
  20. package/build/src/database/query/with-count.js +8 -8
  21. package/build/src/database/record/record-not-found-error.d.ts +1 -0
  22. package/build/src/database/record/record-not-found-error.d.ts.map +1 -1
  23. package/build/src/database/record/record-not-found-error.js +2 -1
  24. package/build/src/frontend-model-controller.d.ts +10 -10
  25. package/build/src/frontend-model-controller.d.ts.map +1 -1
  26. package/build/src/frontend-model-controller.js +73 -67
  27. package/build/src/frontend-models/base.d.ts.map +1 -1
  28. package/build/src/frontend-models/base.js +11 -2
  29. package/build/src/velocious-error.d.ts +10 -0
  30. package/build/src/velocious-error.d.ts.map +1 -1
  31. package/build/src/velocious-error.js +8 -2
  32. package/build/velocious-error.js +7 -1
  33. package/package.json +2 -2
  34. package/src/background-jobs/main.js +2 -2
  35. package/src/configuration-types.js +1 -0
  36. package/src/configuration.js +52 -10
  37. package/src/database/drivers/mysql/structure-sql.js +70 -9
  38. package/src/database/query/with-count.js +8 -8
  39. package/src/database/record/record-not-found-error.js +1 -0
  40. package/src/frontend-model-controller.js +71 -69
  41. package/src/frontend-models/base.js +10 -1
  42. package/src/velocious-error.js +7 -1
@@ -13,6 +13,17 @@ export default class VelociousDatabaseDriversMysqlStructureSql {
13
13
  * @returns {Promise<string | null>} - Resolves with SQL string.
14
14
  */
15
15
  toSql(): Promise<string | null>;
16
+ /**
17
+ * Orders tables so referenced tables are created before their dependents.
18
+ * @param {object} args - Options object.
19
+ * @param {Array<Record<string, ?>>} args.foreignKeyRows - Foreign key metadata rows.
20
+ * @param {string[]} args.tableNames - Base table names in their existing order.
21
+ * @returns {string[]} - Ordered table names.
22
+ */
23
+ _orderBaseTables({ foreignKeyRows, tableNames }: {
24
+ foreignKeyRows: Array<Record<string, unknown>>;
25
+ tableNames: string[];
26
+ }): string[];
16
27
  /**
17
28
  * Runs is maria db.
18
29
  * @returns {Promise<boolean>} - Resolves with Whether maria db.
@@ -1 +1 @@
1
- {"version":3,"file":"structure-sql.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mysql/structure-sql.js"],"names":[],"mappings":"AAIA;IACE;;;;OAIG;IACH,wBAFG;QAA2C,MAAM,EAAzC,OAAO,YAAY,EAAE,OAAO;KACtC,EAGA;IADC,qCAAoB;IAGtB;;;OAGG;IACH,SAFa,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiClC;IAED;;;OAGG;IACH,cAFa,OAAO,CAAC,OAAO,CAAC,CAU5B;IAED;;;;OAIG;IACH,2BAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,SAAS,GAC3B,MAAM,GAAG,IAAI,CAYzB;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,MAAM,CAMlB;CACF"}
1
+ {"version":3,"file":"structure-sql.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mysql/structure-sql.js"],"names":[],"mappings":"AAIA;IACE;;;;OAIG;IACH,wBAFG;QAA2C,MAAM,EAAzC,OAAO,YAAY,EAAE,OAAO;KACtC,EAGA;IADC,qCAAoB;IAGtB;;;OAGG;IACH,SAFa,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4ClC;IAED;;;;;;OAMG;IACH,iDAJG;QAAuC,cAAc,EAA7C,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QACT,UAAU,EAAzB,MAAM,EAAE;KAChB,GAAU,MAAM,EAAE,CA2CpB;IAED;;;OAGG;IACH,cAFa,OAAO,CAAC,OAAO,CAAC,CAU5B;IAED;;;;OAIG;IACH,2BAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GAAG,SAAS,GAC3B,MAAM,GAAG,IAAI,CAYzB;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,MAAM,CAMlB;CACF"}
@@ -17,6 +17,9 @@ export default class VelociousDatabaseDriversMysqlStructureSql {
17
17
  const { driver } = this;
18
18
  const isMariaDb = await this._isMariaDb();
19
19
  const rows = await driver.query("SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = DATABASE() ORDER BY table_type, table_name");
20
+ const foreignKeyRows = await driver.query("SELECT table_name, referenced_table_name FROM information_schema.key_column_usage WHERE table_schema = DATABASE() AND referenced_table_schema = DATABASE() AND referenced_table_name IS NOT NULL");
21
+ const baseTableNames = [];
22
+ const views = [];
20
23
  const statements = [];
21
24
  for (const row of rows) {
22
25
  const tableNameValue = row.table_name || row.TABLE_NAME;
@@ -26,23 +29,71 @@ export default class VelociousDatabaseDriversMysqlStructureSql {
26
29
  if (!tableName || !tableType)
27
30
  continue;
28
31
  if (tableType == "BASE TABLE") {
29
- const createRows = await driver.query(`SHOW CREATE TABLE ${driver.quoteTable(tableName)}`);
30
- const rawCreateStatement = this._mysqlCreateStatement(createRows?.[0]);
31
- const createStatement = rawCreateStatement ? this._stripAutoIncrement(rawCreateStatement) : null;
32
- if (createStatement)
33
- statements.push(normalizeSqlStatement(createStatement));
32
+ baseTableNames.push(tableName);
34
33
  }
35
34
  else if (tableType == "VIEW" || (isMariaDb && tableType == "SYSTEM VIEW")) {
36
- const createRows = await driver.query(`SHOW CREATE VIEW ${driver.quoteTable(tableName)}`);
37
- const createStatement = this._mysqlCreateStatement(createRows?.[0]);
38
- if (createStatement)
39
- statements.push(normalizeSqlStatement(createStatement));
35
+ views.push(tableName);
40
36
  }
41
37
  }
38
+ for (const tableName of this._orderBaseTables({ foreignKeyRows, tableNames: baseTableNames })) {
39
+ const createRows = await driver.query(`SHOW CREATE TABLE ${driver.quoteTable(tableName)}`);
40
+ const rawCreateStatement = this._mysqlCreateStatement(createRows?.[0]);
41
+ const createStatement = rawCreateStatement ? this._stripAutoIncrement(rawCreateStatement) : null;
42
+ if (createStatement)
43
+ statements.push(normalizeSqlStatement(createStatement));
44
+ }
45
+ for (const tableName of views) {
46
+ const createRows = await driver.query(`SHOW CREATE VIEW ${driver.quoteTable(tableName)}`);
47
+ const createStatement = this._mysqlCreateStatement(createRows?.[0]);
48
+ if (createStatement)
49
+ statements.push(normalizeSqlStatement(createStatement));
50
+ }
42
51
  if (statements.length == 0)
43
52
  return null;
44
53
  return `${statements.join("\n\n")}\n`;
45
54
  }
55
+ /**
56
+ * Orders tables so referenced tables are created before their dependents.
57
+ * @param {object} args - Options object.
58
+ * @param {Array<Record<string, ?>>} args.foreignKeyRows - Foreign key metadata rows.
59
+ * @param {string[]} args.tableNames - Base table names in their existing order.
60
+ * @returns {string[]} - Ordered table names.
61
+ */
62
+ _orderBaseTables({ foreignKeyRows, tableNames }) {
63
+ const pendingTableNames = new Set(tableNames);
64
+ /** @type {Record<string, Set<string>>} */
65
+ const dependenciesByTableName = {};
66
+ const orderedTableNames = [];
67
+ for (const tableName of tableNames) {
68
+ dependenciesByTableName[tableName] = new Set();
69
+ }
70
+ for (const row of foreignKeyRows) {
71
+ const tableNameValue = row.table_name || row.TABLE_NAME;
72
+ const referencedTableNameValue = row.referenced_table_name || row.REFERENCED_TABLE_NAME;
73
+ const tableName = tableNameValue ? String(tableNameValue) : "";
74
+ const referencedTableName = referencedTableNameValue ? String(referencedTableNameValue) : "";
75
+ if (tableName == referencedTableName || !pendingTableNames.has(tableName) || !pendingTableNames.has(referencedTableName))
76
+ continue;
77
+ dependenciesByTableName[tableName].add(referencedTableName);
78
+ }
79
+ while (pendingTableNames.size > 0) {
80
+ const nextTableName = tableNames.find((tableName) => {
81
+ if (!pendingTableNames.has(tableName))
82
+ return false;
83
+ return Array.from(dependenciesByTableName[tableName]).every((dependencyTableName) => !pendingTableNames.has(dependencyTableName));
84
+ });
85
+ if (!nextTableName) {
86
+ for (const tableName of tableNames) {
87
+ if (pendingTableNames.has(tableName))
88
+ orderedTableNames.push(tableName);
89
+ }
90
+ break;
91
+ }
92
+ orderedTableNames.push(nextTableName);
93
+ pendingTableNames.delete(nextTableName);
94
+ }
95
+ return orderedTableNames;
96
+ }
46
97
  /**
47
98
  * Runs is maria db.
48
99
  * @returns {Promise<boolean>} - Resolves with Whether maria db.
@@ -81,4 +132,4 @@ export default class VelociousDatabaseDriversMysqlStructureSql {
81
132
  .replace(/\s{2,}/g, " ");
82
133
  }
83
134
  }
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLXNxbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9kcml2ZXJzL215c3FsL3N0cnVjdHVyZS1zcWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFBO0FBRS9ELE1BQU0sQ0FBQyxPQUFPLE9BQU8seUNBQXlDO0lBQzVEOzs7O09BSUc7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUE7UUFDckIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDekMsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLDhIQUE4SCxDQUFDLENBQUE7UUFDL0osTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFBO1FBRXJCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdkIsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFBO1lBQ3ZELE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQTtZQUN2RCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1lBQzlELE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7WUFFOUQsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsU0FBUTtZQUV0QyxJQUFJLFNBQVMsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDMUYsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDdEUsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7Z0JBRWhHLElBQUksZUFBZTtvQkFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUE7WUFDOUUsQ0FBQztpQkFBTSxJQUFJLFNBQVMsSUFBSSxNQUFNLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQzVFLE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ3pGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUVuRSxJQUFJLGVBQWU7b0JBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBO1lBQzlFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUV2QyxPQUFPLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFBO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNkLE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUE7UUFDckIsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUE7UUFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtRQUV4RCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFBO1FBRTFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLEdBQUc7UUFDdkIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQTtRQUVyQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDekIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsU0FBUztRQUMzQixPQUFPLFNBQVM7YUFDYixPQUFPLENBQUMsOEJBQThCLEVBQUUsRUFBRSxDQUFDO2FBQzNDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7bm9ybWFsaXplU3FsU3RhdGVtZW50fSBmcm9tIFwiLi4vc3RydWN0dXJlLXNxbC91dGlscy5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc015c3FsU3RydWN0dXJlU3FsIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLmRyaXZlciAtIERhdGFiYXNlIGRyaXZlciBpbnN0YW5jZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtkcml2ZXJ9KSB7XG4gICAgdGhpcy5kcml2ZXIgPSBkcml2ZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRvIHNxbC5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nIHwgbnVsbD59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RyaW5nLlxuICAgKi9cbiAgYXN5bmMgdG9TcWwoKSB7XG4gICAgY29uc3Qge2RyaXZlcn0gPSB0aGlzXG4gICAgY29uc3QgaXNNYXJpYURiID0gYXdhaXQgdGhpcy5faXNNYXJpYURiKClcbiAgICBjb25zdCByb3dzID0gYXdhaXQgZHJpdmVyLnF1ZXJ5KFwiU0VMRUNUIHRhYmxlX25hbWUsIHRhYmxlX3R5cGUgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX3NjaGVtYSA9IERBVEFCQVNFKCkgT1JERVIgQlkgdGFibGVfdHlwZSwgdGFibGVfbmFtZVwiKVxuICAgIGNvbnN0IHN0YXRlbWVudHMgPSBbXVxuXG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgY29uc3QgdGFibGVOYW1lVmFsdWUgPSByb3cudGFibGVfbmFtZSB8fCByb3cuVEFCTEVfTkFNRVxuICAgICAgY29uc3QgdGFibGVUeXBlVmFsdWUgPSByb3cudGFibGVfdHlwZSB8fCByb3cuVEFCTEVfVFlQRVxuICAgICAgY29uc3QgdGFibGVOYW1lID0gdGFibGVOYW1lVmFsdWUgPyBTdHJpbmcodGFibGVOYW1lVmFsdWUpIDogXCJcIlxuICAgICAgY29uc3QgdGFibGVUeXBlID0gdGFibGVUeXBlVmFsdWUgPyBTdHJpbmcodGFibGVUeXBlVmFsdWUpIDogXCJcIlxuXG4gICAgICBpZiAoIXRhYmxlTmFtZSB8fCAhdGFibGVUeXBlKSBjb250aW51ZVxuXG4gICAgICBpZiAodGFibGVUeXBlID09IFwiQkFTRSBUQUJMRVwiKSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZVJvd3MgPSBhd2FpdCBkcml2ZXIucXVlcnkoYFNIT1cgQ1JFQVRFIFRBQkxFICR7ZHJpdmVyLnF1b3RlVGFibGUodGFibGVOYW1lKX1gKVxuICAgICAgICBjb25zdCByYXdDcmVhdGVTdGF0ZW1lbnQgPSB0aGlzLl9teXNxbENyZWF0ZVN0YXRlbWVudChjcmVhdGVSb3dzPy5bMF0pXG4gICAgICAgIGNvbnN0IGNyZWF0ZVN0YXRlbWVudCA9IHJhd0NyZWF0ZVN0YXRlbWVudCA/IHRoaXMuX3N0cmlwQXV0b0luY3JlbWVudChyYXdDcmVhdGVTdGF0ZW1lbnQpIDogbnVsbFxuXG4gICAgICAgIGlmIChjcmVhdGVTdGF0ZW1lbnQpIHN0YXRlbWVudHMucHVzaChub3JtYWxpemVTcWxTdGF0ZW1lbnQoY3JlYXRlU3RhdGVtZW50KSlcbiAgICAgIH0gZWxzZSBpZiAodGFibGVUeXBlID09IFwiVklFV1wiIHx8IChpc01hcmlhRGIgJiYgdGFibGVUeXBlID09IFwiU1lTVEVNIFZJRVdcIikpIHtcbiAgICAgICAgY29uc3QgY3JlYXRlUm93cyA9IGF3YWl0IGRyaXZlci5xdWVyeShgU0hPVyBDUkVBVEUgVklFVyAke2RyaXZlci5xdW90ZVRhYmxlKHRhYmxlTmFtZSl9YClcbiAgICAgICAgY29uc3QgY3JlYXRlU3RhdGVtZW50ID0gdGhpcy5fbXlzcWxDcmVhdGVTdGF0ZW1lbnQoY3JlYXRlUm93cz8uWzBdKVxuXG4gICAgICAgIGlmIChjcmVhdGVTdGF0ZW1lbnQpIHN0YXRlbWVudHMucHVzaChub3JtYWxpemVTcWxTdGF0ZW1lbnQoY3JlYXRlU3RhdGVtZW50KSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGVtZW50cy5sZW5ndGggPT0gMCkgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiBgJHtzdGF0ZW1lbnRzLmpvaW4oXCJcXG5cXG5cIil9XFxuYFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaXMgbWFyaWEgZGIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIFJlc29sdmVzIHdpdGggV2hldGhlciBtYXJpYSBkYi5cbiAgICovXG4gIGFzeW5jIF9pc01hcmlhRGIoKSB7XG4gICAgY29uc3Qge2RyaXZlcn0gPSB0aGlzXG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IGRyaXZlci5xdWVyeShcIlNFTEVDVCBWRVJTSU9OKCkgQVMgdmVyc2lvblwiKVxuICAgIGNvbnN0IHZlcnNpb24gPSByb3dzPy5bMF0/LnZlcnNpb24gfHwgcm93cz8uWzBdPy5WRVJTSU9OXG5cbiAgICBpZiAoIXZlcnNpb24pIHJldHVybiBmYWxzZVxuXG4gICAgcmV0dXJuIFN0cmluZyh2ZXJzaW9uKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibWFyaWFkYlwiKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbXlzcWwgY3JlYXRlIHN0YXRlbWVudC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/PiB8IHVuZGVmaW5lZH0gcm93IC0gUm93IGRhdGEuXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCBudWxsfSAtIFNRTCBzdHJpbmcuXG4gICAqL1xuICBfbXlzcWxDcmVhdGVTdGF0ZW1lbnQocm93KSB7XG4gICAgaWYgKCFyb3cpIHJldHVybiBudWxsXG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyb3cpKSB7XG4gICAgICBpZiAoa2V5LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcImNyZWF0ZSBcIikpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyhyb3dba2V5XSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc3RyaXAgYXV0byBpbmNyZW1lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdGF0ZW1lbnQgLSBTdGF0ZW1lbnQuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU3RhdGVtZW50IHdpdGhvdXQgYXV0byBpbmNyZW1lbnQuXG4gICAqL1xuICBfc3RyaXBBdXRvSW5jcmVtZW50KHN0YXRlbWVudCkge1xuICAgIHJldHVybiBzdGF0ZW1lbnRcbiAgICAgIC5yZXBsYWNlKC9cXHNBVVRPX0lOQ1JFTUVOVFxccyo9XFxzKlxcZCsvZ2ksIFwiXCIpXG4gICAgICAucmVwbGFjZSgvXFxzezIsfS9nLCBcIiBcIilcbiAgfVxufVxuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLXNxbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9kcml2ZXJzL215c3FsL3N0cnVjdHVyZS1zcWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJCQUEyQixDQUFBO0FBRS9ELE1BQU0sQ0FBQyxPQUFPLE9BQU8seUNBQXlDO0lBQzVEOzs7O09BSUc7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUE7UUFDckIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDekMsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLDhIQUE4SCxDQUFDLENBQUE7UUFDL0osTUFBTSxjQUFjLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLGtNQUFrTSxDQUFDLENBQUE7UUFDN08sTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFBO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUE7UUFFckIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUE7WUFDdkQsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFBO1lBQ3ZELE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMs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ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge25vcm1hbGl6ZVNxbFN0YXRlbWVudH0gZnJvbSBcIi4uL3N0cnVjdHVyZS1zcWwvdXRpbHMuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNNeXNxbFN0cnVjdHVyZVNxbCB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZHJpdmVyfSkge1xuICAgIHRoaXMuZHJpdmVyID0gZHJpdmVyXG4gIH1cblxuICAvKipcbiAgICogUnVucyB0byBzcWwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0cmluZy5cbiAgICovXG4gIGFzeW5jIHRvU3FsKCkge1xuICAgIGNvbnN0IHtkcml2ZXJ9ID0gdGhpc1xuICAgIGNvbnN0IGlzTWFyaWFEYiA9IGF3YWl0IHRoaXMuX2lzTWFyaWFEYigpXG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IGRyaXZlci5xdWVyeShcIlNFTEVDVCB0YWJsZV9uYW1lLCB0YWJsZV90eXBlIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyBXSEVSRSB0YWJsZV9zY2hlbWEgPSBEQVRBQkFTRSgpIE9SREVSIEJZIHRhYmxlX3R5cGUsIHRhYmxlX25hbWVcIilcbiAgICBjb25zdCBmb3JlaWduS2V5Um93cyA9IGF3YWl0IGRyaXZlci5xdWVyeShcIlNFTEVDVCB0YWJsZV9uYW1lLCByZWZlcmVuY2VkX3RhYmxlX25hbWUgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEua2V5X2NvbHVtbl91c2FnZSBXSEVSRSB0YWJsZV9zY2hlbWEgPSBEQVRBQkFTRSgpIEFORCByZWZlcmVuY2VkX3RhYmxlX3NjaGVtYSA9IERBVEFCQVNFKCkgQU5EIHJlZmVyZW5jZWRfdGFibGVfbmFtZSBJUyBOT1QgTlVMTFwiKVxuICAgIGNvbnN0IGJhc2VUYWJsZU5hbWVzID0gW11cbiAgICBjb25zdCB2aWV3cyA9IFtdXG4gICAgY29uc3Qgc3RhdGVtZW50cyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICBjb25zdCB0YWJsZU5hbWVWYWx1ZSA9IHJvdy50YWJsZV9uYW1lIHx8IHJvdy5UQUJMRV9OQU1FXG4gICAgICBjb25zdCB0YWJsZVR5cGVWYWx1ZSA9IHJvdy50YWJsZV90eXBlIHx8IHJvdy5UQUJMRV9UWVBFXG4gICAgICBjb25zdCB0YWJsZU5hbWUgPSB0YWJsZU5hbWVWYWx1ZSA/IFN0cmluZyh0YWJsZU5hbWVWYWx1ZSkgOiBcIlwiXG4gICAgICBjb25zdCB0YWJsZVR5cGUgPSB0YWJsZVR5cGVWYWx1ZSA/IFN0cmluZyh0YWJsZVR5cGVWYWx1ZSkgOiBcIlwiXG5cbiAgICAgIGlmICghdGFibGVOYW1lIHx8ICF0YWJsZVR5cGUpIGNvbnRpbnVlXG5cbiAgICAgIGlmICh0YWJsZVR5cGUgPT0gXCJCQVNFIFRBQkxFXCIpIHtcbiAgICAgICAgYmFzZVRhYmxlTmFtZXMucHVzaCh0YWJsZU5hbWUpXG4gICAgICB9IGVsc2UgaWYgKHRhYmxlVHlwZSA9PSBcIlZJRVdcIiB8fCAoaXNNYXJpYURiICYmIHRhYmxlVHlwZSA9PSBcIlNZU1RFTSBWSUVXXCIpKSB7XG4gICAgICAgIHZpZXdzLnB1c2godGFibGVOYW1lKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgdGFibGVOYW1lIG9mIHRoaXMuX29yZGVyQmFzZVRhYmxlcyh7Zm9yZWlnbktleVJvd3MsIHRhYmxlTmFtZXM6IGJhc2VUYWJsZU5hbWVzfSkpIHtcbiAgICAgIGNvbnN0IGNyZWF0ZVJvd3MgPSBhd2FpdCBkcml2ZXIucXVlcnkoYFNIT1cgQ1JFQVRFIFRBQkxFICR7ZHJpdmVyLnF1b3RlVGFibGUodGFibGVOYW1lKX1gKVxuICAgICAgY29uc3QgcmF3Q3JlYXRlU3RhdGVtZW50ID0gdGhpcy5fbXlzcWxDcmVhdGVTdGF0ZW1lbnQoY3JlYXRlUm93cz8uWzBdKVxuICAgICAgY29uc3QgY3JlYXRlU3RhdGVtZW50ID0gcmF3Q3JlYXRlU3RhdGVtZW50ID8gdGhpcy5fc3RyaXBBdXRvSW5jcmVtZW50KHJhd0NyZWF0ZVN0YXRlbWVudCkgOiBudWxsXG5cbiAgICAgIGlmIChjcmVhdGVTdGF0ZW1lbnQpIHN0YXRlbWVudHMucHVzaChub3JtYWxpemVTcWxTdGF0ZW1lbnQoY3JlYXRlU3RhdGVtZW50KSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRhYmxlTmFtZSBvZiB2aWV3cykge1xuICAgICAgY29uc3QgY3JlYXRlUm93cyA9IGF3YWl0IGRyaXZlci5xdWVyeShgU0hPVyBDUkVBVEUgVklFVyAke2RyaXZlci5xdW90ZVRhYmxlKHRhYmxlTmFtZSl9YClcbiAgICAgIGNvbnN0IGNyZWF0ZVN0YXRlbWVudCA9IHRoaXMuX215c3FsQ3JlYXRlU3RhdGVtZW50KGNyZWF0ZVJvd3M/LlswXSlcblxuICAgICAgaWYgKGNyZWF0ZVN0YXRlbWVudCkgc3RhdGVtZW50cy5wdXNoKG5vcm1hbGl6ZVNxbFN0YXRlbWVudChjcmVhdGVTdGF0ZW1lbnQpKVxuICAgIH1cblxuICAgIGlmIChzdGF0ZW1lbnRzLmxlbmd0aCA9PSAwKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIGAke3N0YXRlbWVudHMuam9pbihcIlxcblxcblwiKX1cXG5gXG4gIH1cblxuICAvKipcbiAgICogT3JkZXJzIHRhYmxlcyBzbyByZWZlcmVuY2VkIHRhYmxlcyBhcmUgY3JlYXRlZCBiZWZvcmUgdGhlaXIgZGVwZW5kZW50cy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtBcnJheTxSZWNvcmQ8c3RyaW5nLCA/Pj59IGFyZ3MuZm9yZWlnbktleVJvd3MgLSBGb3JlaWduIGtleSBtZXRhZGF0YSByb3dzLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzLnRhYmxlTmFtZXMgLSBCYXNlIHRhYmxlIG5hbWVzIGluIHRoZWlyIGV4aXN0aW5nIG9yZGVyLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nW119IC0gT3JkZXJlZCB0YWJsZSBuYW1lcy5cbiAgICovXG4gIF9vcmRlckJhc2VUYWJsZXMoe2ZvcmVpZ25LZXlSb3dzLCB0YWJsZU5hbWVzfSkge1xuICAgIGNvbnN0IHBlbmRpbmdUYWJsZU5hbWVzID0gbmV3IFNldCh0YWJsZU5hbWVzKVxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgU2V0PHN0cmluZz4+fSAqL1xuICAgIGNvbnN0IGRlcGVuZGVuY2llc0J5VGFibGVOYW1lID0ge31cbiAgICBjb25zdCBvcmRlcmVkVGFibGVOYW1lcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHRhYmxlTmFtZSBvZiB0YWJsZU5hbWVzKSB7XG4gICAgICBkZXBlbmRlbmNpZXNCeVRhYmxlTmFtZVt0YWJsZU5hbWVdID0gbmV3IFNldCgpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByb3cgb2YgZm9yZWlnbktleVJvd3MpIHtcbiAgICAgIGNvbnN0IHRhYmxlTmFtZVZhbHVlID0gcm93LnRhYmxlX25hbWUgfHwgcm93LlRBQkxFX05BTUVcbiAgICAgIGNvbnN0IHJlZmVyZW5jZWRUYWJsZU5hbWVWYWx1ZSA9IHJvdy5yZWZlcmVuY2VkX3RhYmxlX25hbWUgfHwgcm93LlJFRkVSRU5DRURfVEFCTEVfTkFNRVxuICAgICAgY29uc3QgdGFibGVOYW1lID0gdGFibGVOYW1lVmFsdWUgPyBTdHJpbmcodGFibGVOYW1lVmFsdWUpIDogXCJcIlxuICAgICAgY29uc3QgcmVmZXJlbmNlZFRhYmxlTmFtZSA9IHJlZmVyZW5jZWRUYWJsZU5hbWVWYWx1ZSA/IFN0cmluZyhyZWZlcmVuY2VkVGFibGVOYW1lVmFsdWUpIDogXCJcIlxuXG4gICAgICBpZiAodGFibGVOYW1lID09IHJlZmVyZW5jZWRUYWJsZU5hbWUgfHwgIXBlbmRpbmdUYWJsZU5hbWVzLmhhcyh0YWJsZU5hbWUpIHx8ICFwZW5kaW5nVGFibGVOYW1lcy5oYXMocmVmZXJlbmNlZFRhYmxlTmFtZSkpIGNvbnRpbnVlXG5cbiAgICAgIGRlcGVuZGVuY2llc0J5VGFibGVOYW1lW3RhYmxlTmFtZV0uYWRkKHJlZmVyZW5jZWRUYWJsZU5hbWUpXG4gICAgfVxuXG4gICAgd2hpbGUgKHBlbmRpbmdUYWJsZU5hbWVzLnNpemUgPiAwKSB7XG4gICAgICBjb25zdCBuZXh0VGFibGVOYW1lID0gdGFibGVOYW1lcy5maW5kKCh0YWJsZU5hbWUpID0+IHtcbiAgICAgICAgaWYgKCFwZW5kaW5nVGFibGVOYW1lcy5oYXModGFibGVOYW1lKSkgcmV0dXJuIGZhbHNlXG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZGVwZW5kZW5jaWVzQnlUYWJsZU5hbWVbdGFibGVOYW1lXSkuZXZlcnkoKGRlcGVuZGVuY3lUYWJsZU5hbWUpID0+ICFwZW5kaW5nVGFibGVOYW1lcy5oYXMoZGVwZW5kZW5jeVRhYmxlTmFtZSkpXG4gICAgICB9KVxuXG4gICAgICBpZiAoIW5leHRUYWJsZU5hbWUpIHtcbiAgICAgICAgZm9yIChjb25zdCB0YWJsZU5hbWUgb2YgdGFibGVOYW1lcykge1xuICAgICAgICAgIGlmIChwZW5kaW5nVGFibGVOYW1lcy5oYXModGFibGVOYW1lKSkgb3JkZXJlZFRhYmxlTmFtZXMucHVzaCh0YWJsZU5hbWUpXG4gICAgICAgIH1cblxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBvcmRlcmVkVGFibGVOYW1lcy5wdXNoKG5leHRUYWJsZU5hbWUpXG4gICAgICBwZW5kaW5nVGFibGVOYW1lcy5kZWxldGUobmV4dFRhYmxlTmFtZSlcbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXJlZFRhYmxlTmFtZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGlzIG1hcmlhIGRiLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBSZXNvbHZlcyB3aXRoIFdoZXRoZXIgbWFyaWEgZGIuXG4gICAqL1xuICBhc3luYyBfaXNNYXJpYURiKCkge1xuICAgIGNvbnN0IHtkcml2ZXJ9ID0gdGhpc1xuICAgIGNvbnN0IHJvd3MgPSBhd2FpdCBkcml2ZXIucXVlcnkoXCJTRUxFQ1QgVkVSU0lPTigpIEFTIHZlcnNpb25cIilcbiAgICBjb25zdCB2ZXJzaW9uID0gcm93cz8uWzBdPy52ZXJzaW9uIHx8IHJvd3M/LlswXT8uVkVSU0lPTlxuXG4gICAgaWYgKCF2ZXJzaW9uKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiBTdHJpbmcodmVyc2lvbikudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIm1hcmlhZGJcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG15c3FsIGNyZWF0ZSBzdGF0ZW1lbnQuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgPz4gfCB1bmRlZmluZWR9IHJvdyAtIFJvdyBkYXRhLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVsbH0gLSBTUUwgc3RyaW5nLlxuICAgKi9cbiAgX215c3FsQ3JlYXRlU3RhdGVtZW50KHJvdykge1xuICAgIGlmICghcm93KSByZXR1cm4gbnVsbFxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocm93KSkge1xuICAgICAgaWYgKGtleS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJjcmVhdGUgXCIpKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcocm93W2tleV0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHN0cmlwIGF1dG8gaW5jcmVtZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RhdGVtZW50IC0gU3RhdGVtZW50LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFN0YXRlbWVudCB3aXRob3V0IGF1dG8gaW5jcmVtZW50LlxuICAgKi9cbiAgX3N0cmlwQXV0b0luY3JlbWVudChzdGF0ZW1lbnQpIHtcbiAgICByZXR1cm4gc3RhdGVtZW50XG4gICAgICAucmVwbGFjZSgvXFxzQVVUT19JTkNSRU1FTlRcXHMqPVxccypcXGQrL2dpLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoL1xcc3syLH0vZywgXCIgXCIpXG4gIH1cbn1cbiJdfQ==
@@ -139,19 +139,19 @@ function queryForEntry({ entry, modelClass, parentIds, sourceModel }) {
139
139
  }
140
140
  const foreignKey = relationship.getForeignKey();
141
141
  /**
142
- * Where conditions.
142
+ * Mandatory cohort conditions.
143
143
  * @type {Record<string, ?>} */
144
- const whereConditions = { [foreignKey]: parentIds };
144
+ const mandatoryWhereConditions = { [foreignKey]: parentIds };
145
145
  if (relationship.getPolymorphic && relationship.getPolymorphic()) {
146
146
  const typeColumn = relationship.getPolymorphicTypeColumn();
147
- whereConditions[typeColumn] = modelClass.getModelName();
148
- }
149
- if (entry.where) {
150
- Object.assign(whereConditions, entry.where);
147
+ mandatoryWhereConditions[typeColumn] = modelClass.getModelName();
151
148
  }
152
149
  const baseQuery = sourceModel.queryForModel(targetModelClass);
153
150
  baseQuery._forceQualifyBaseTable = true;
154
- baseQuery.where(whereConditions);
151
+ baseQuery.where(mandatoryWhereConditions);
152
+ if (entry.where) {
153
+ baseQuery.where(entry.where);
154
+ }
155
155
  const countQuery = relationship.applyScope(baseQuery);
156
156
  countQuery._preload = {};
157
157
  countQuery.reselect();
@@ -207,4 +207,4 @@ function attachCounts({ counts, entry, models, primaryKey }) {
207
207
  model._setAssociationCount(entry.attributeName, resolvedCount);
208
208
  }
209
209
  }
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS93aXRoLWNvdW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7Ozs7O0dBTUc7QUFFSDs7O0dBR0c7QUFFSDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQUk7SUFDckMsSUFBSSxJQUFJLElBQUksSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFBO0lBRTNCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxPQUFPLElBQUksRUFBRSxDQUFDLENBQUE7WUFDaEYsQ0FBQztZQUVELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0I7O3NDQUU4QjtRQUM5QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFbEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFD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RCxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIFdpdGhDb3VudEVudHJ5IHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBXaXRoQ291bnRFbnRyeVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGF0dHJpYnV0ZU5hbWUgLSBBdHRyaWJ1dGUgdG8gc2V0IG9uIGVhY2ggcGFyZW50IHJlY29yZCBob2xkaW5nIHRoZSBjb3VudC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSByZWxhdGlvbnNoaXBOYW1lIC0gSGFzLW1hbnkgcmVsYXRpb25zaGlwIHdob3NlIHJvd3MgYXJlIGNvdW50ZWQuXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsID8+IHwgdW5kZWZpbmVkfSB3aGVyZSAtIE9wdGlvbmFsIGV4dHJhIHdoZXJlIGNsYXVzZSBhcHBsaWVkIHRvIHRoZSBjb3VudCBxdWVyeS5cbiAqL1xuXG4vKipcbiAqIERlZmluZXMgdGhpcyB0eXBlZGVmLlxuICogQHR5cGVkZWYge3N0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgYm9vbGVhbiB8IHtyZWxhdGlvbnNoaXA/OiBzdHJpbmcsIHdoZXJlPzogUmVjb3JkPHN0cmluZywgPz59Pn0gV2l0aENvdW50U3BlY1xuICovXG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBmbGV4aWJsZSB1c2VyLWZhY2luZyBgLndpdGhDb3VudCguLi4pYCBhcmd1bWVudCBpbnRvIHRoZVxuICogc3RyaWN0IGludGVybmFsIGxpc3Qgb2Yge2F0dHJpYnV0ZU5hbWUsIHJlbGF0aW9uc2hpcE5hbWUsIHdoZXJlfSBlbnRyaWVzXG4gKiB0aGUgcnVubmVyIGNvbnN1bWVzLlxuICpcbiAqIEFjY2VwdGVkIHNoYXBlczpcbiAqICAgXCJwcm9qZWN0c1wiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgb25lIGVudHJ5XG4gKiAgIFtcInByb2plY3RzXCIsIFwidGltZWxvZ3NcIl0gICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgb25lIGVudHJ5IHBlciBuYW1lXG4gKiAgIHtwcm9qZWN0czogdHJ1ZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBvbmUgZW50cnkgKGF0dHIgPSBcInByb2plY3RzQ291bnRcIilcbiAqICAge2FjdGl2ZU1lbWJlcnNDb3VudDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIGN1c3RvbSBhdHRyaWJ1dGUgbmFtZVxuICogICAgIHtyZWxhdGlvbnNoaXA6IFwidXNlcnNcIiwgd2hlcmU6IHthY3RpdmU6IHRydWV9fX1cbiAqIEBwYXJhbSB7V2l0aENvdW50U3BlY30gc3BlYyAtIFVzZXItc3VwcGxpZWQgc3BlYy5cbiAqIEByZXR1cm5zIHtXaXRoQ291bnRFbnRyeVtdfSAtIE5vcm1hbGl6ZWQgZW50cmllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVdpdGhDb3VudChzcGVjKSB7XG4gIGlmIChzcGVjID09IG51bGwpIHJldHVybiBbXVxuXG4gIGlmICh0eXBlb2Ygc3BlYyA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBbZW50cnlGcm9tTmFtZShzcGVjKV1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHNwZWMpKSB7XG4gICAgcmV0dXJuIHNwZWMuZmxhdE1hcCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgd2l0aENvdW50IGFycmF5IGVudHJpZXMgbXVzdCBiZSBzdHJpbmdzOyBnb3QgJHt0eXBlb2YgaXRlbX1gKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW50cnlGcm9tTmFtZShpdGVtKVxuICAgIH0pXG4gIH1cblxuICBpZiAodHlwZW9mIHNwZWMgPT09IFwib2JqZWN0XCIpIHtcbiAgICAvKipcbiAgICAgKiBFbnRyaWVzLlxuICAgICAqIEB0eXBlIHtXaXRoQ291bnRFbnRyeVtdfSAqL1xuICAgIGNvbnN0IGVudHJpZXMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc3BlYykpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICBlbnRyaWVzLnB1c2goZW50cnlGcm9tTmFtZShrZXkpKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9wdGlvbnMuXG4gICAgICAgICAqIEB0eXBlIHt7cmVsYXRpb25zaGlwPzogc3RyaW5nLCB3aGVyZT86IFJlY29yZDxzdHJpbmcsID8+fX0gKi9cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHZhbHVlXG4gICAgICAgIGVudHJpZXMucHVzaCh7XG4gICAgICAgICAgYXR0cmlidXRlTmFtZToga2V5LFxuICAgICAgICAgIHJlbGF0aW9uc2hpcE5hbWU6IG9wdGlvbnMucmVsYXRpb25zaGlwIHx8IGtleSxcbiAgICAgICAgICB3aGVyZTogb3B0aW9ucy53aGVyZVxuICAgICAgICB9KVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgd2l0aENvdW50IHZhbHVlIGZvciAke2tleX06ICR7dHlwZW9mIHZhbHVlfWApXG4gICAgfVxuXG4gICAgcmV0dXJuIGVudHJpZXNcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB3aXRoQ291bnQgc3BlYzogJHt0eXBlb2Ygc3BlY31gKVxufVxuXG4vKipcbiAqIFJ1bnMgZW50cnkgZnJvbSBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBSZWxhdGlvbnNoaXAgbmFtZSAoYXR0cmlidXRlIG5hbWUgaXMgZGVyaXZlZCBieSBhcHBlbmRpbmcgXCJDb3VudFwiKS5cbiAqIEByZXR1cm5zIHtXaXRoQ291bnRFbnRyeX0gLSBOb3JtYWxpemVkIGFzc29jaWF0aW9uLWNvdW50IGVudHJ5LlxuICovXG5mdW5jdGlvbiBlbnRyeUZyb21OYW1lKG5hbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBhdHRyaWJ1dGVOYW1lOiBgJHtuYW1lfUNvdW50YCxcbiAgICByZWxhdGlvbnNoaXBOYW1lOiBuYW1lLFxuICAgIHdoZXJlOiB1bmRlZmluZWRcbiAgfVxufVxuXG4vKipcbiAqIFJ1biBldmVyeSB3aXRoQ291bnQgZW50cnkgYWdhaW5zdCB0aGUgbG9hZGVkIHBhcmVudCByZWNvcmRzLCBhdHRhY2hpbmdcbiAqIHRoZSByZXN1bHRpbmcgY291bnRzIGFzIGF0dHJpYnV0ZXMgb24gZWFjaCByZWNvcmQuIE1pcnJvcnMgdGhlXG4gKiBQcmVsb2FkZXIncyBkYXRhLWZsb3cgc2hhcGUg4oCUIG9uZSBncm91cGVkIGNvdW50IHF1ZXJ5IHBlciBlbnRyeSwgdGhlblxuICogYHNldEF0dHJpYnV0ZWAgb24gZWFjaCBwYXJlbnQuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119IGFyZ3MubW9kZWxzIC0gTG9hZGVkIHBhcmVudCByZWNvcmRzLlxuICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIFBhcmVudCBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7V2l0aENvdW50RW50cnlbXX0gYXJncy5lbnRyaWVzIC0gTm9ybWFsaXplZCB3aXRoQ291bnQgZW50cmllcy5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aENvdW50KHttb2RlbHMsIG1vZGVsQ2xhc3MsIGVudHJpZXN9KSB7XG4gIGlmIChtb2RlbHMubGVuZ3RoID09PSAwIHx8IGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICBjb25zdCBwcmltYXJ5S2V5ID0gbW9kZWxDbGFzcy5wcmltYXJ5S2V5KClcbiAgY29uc3QgcGFyZW50SWRzID0gbW9kZWxzLm1hcCgobW9kZWwpID0+IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAobW9kZWwucmVhZENvbHVtbihwcmltYXJ5S2V5KSkpXG4gIGNvbnN0IHNvdXJjZU1vZGVsID0gbW9kZWxzWzBdXG4gIGNvbnN0IHF1ZXJ5R3JvdXBzID0gbmV3IE1hcCgpXG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3QgY291bnRRdWVyeSA9IHF1ZXJ5Rm9yRW50cnkoe2VudHJ5LCBtb2RlbENsYXNzLCBwYXJlbnRJZHMsIHNvdXJjZU1vZGVsfSlcbiAgICBjb25zdCBzcWwgPSBjb3VudFF1ZXJ5LnRvU3FsKClcbiAgICBjb25zdCBleGlzdGluZ0dyb3VwID0gcXVlcnlHcm91cHMuZ2V0KHNxbClcblxuICAgIGlmIChleGlzdGluZ0dyb3VwKSB7XG4gICAgICBleGlzdGluZ0dyb3VwLmVudHJpZXMucHVzaChlbnRyeSlcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnlHcm91cHMuc2V0KHNxbCwge2NvdW50UXVlcnksIGVudHJpZXM6IFtlbnRyeV19KVxuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3Qge2NvdW50UXVlcnksIGVudHJpZXM6IGdyb3VwZWRFbnRyaWVzfSBvZiBxdWVyeUdyb3Vwcy52YWx1ZXMoKSkge1xuICAgIGNvbnN0IGNvdW50cyA9IGF3YWl0IGV4ZWN1dGVDb3VudFF1ZXJ5KGNvdW50UXVlcnkpXG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGdyb3VwZWRFbnRyaWVzKSBhdHRhY2hDb3VudHMoe2NvdW50cywgZW50cnksIG1vZGVscywgcHJpbWFyeUtleX0pXG4gIH1cbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGdyb3VwZWQgY291bnQgcXVlcnkgZm9yIGFuIGVudHJ5LlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICogQHBhcmFtIHtXaXRoQ291bnRFbnRyeX0gYXJncy5lbnRyeSAtIEVudHJ5IGJlaW5nIGV2YWx1YXRlZC5cbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBQYXJlbnQgbW9kZWwgY2xhc3MuXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZyB8IG51bWJlcj59IGFyZ3MucGFyZW50SWRzIC0gUHJpbWFyeSBrZXlzIG9mIHRoZSBsb2FkZWQgcGFyZW50cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3Muc291cmNlTW9kZWwgLSBMb2FkZWQgb3BlcmF0aW9uIG93bmVyLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gLSBQcmVwYXJlZCBjb3VudCBxdWVyeS5cbiAqL1xuZnVuY3Rpb24gcXVlcnlGb3JFbnRyeSh7ZW50cnksIG1vZGVsQ2xhc3MsIHBhcmVudElkcywgc291cmNlTW9kZWx9KSB7XG4gIGNvbnN0IHJlbGF0aW9uc2hpcCA9IG1vZGVsQ2xhc3MuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKGVudHJ5LnJlbGF0aW9uc2hpcE5hbWUpXG5cbiAgaWYgKCFyZWxhdGlvbnNoaXApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bW9kZWxDbGFzcy5uYW1lfSBoYXMgbm8gcmVsYXRpb25zaGlwIG5hbWVkICR7SlNPTi5zdHJpbmdpZnkoZW50cnkucmVsYXRpb25zaGlwTmFtZSl9ICh3aXRoQ291bnQgYXR0cmlidXRlICR7SlNPTi5zdHJpbmdpZnkoZW50cnkuYXR0cmlidXRlTmFtZSl9KWApXG4gIH1cblxuICBpZiAocmVsYXRpb25zaGlwLnR5cGUgIT09IFwiaGFzTWFueVwiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB3aXRoQ291bnQgY3VycmVudGx5IHN1cHBvcnRzIG9ubHkgaGFzTWFueSByZWxhdGlvbnNoaXBzOyAke21vZGVsQ2xhc3MubmFtZX0jJHtlbnRyeS5yZWxhdGlvbnNoaXBOYW1lfSBpcyAke3JlbGF0aW9uc2hpcC50eXBlfWApXG4gIH1cblxuICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gcmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gIGlmICghdGFyZ2V0TW9kZWxDbGFzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgd2l0aENvdW50OiBjb3VsZCBub3QgcmVzb2x2ZSB0YXJnZXQgbW9kZWwgZm9yICR7bW9kZWxDbGFzcy5uYW1lfSMke2VudHJ5LnJlbGF0aW9uc2hpcE5hbWV9YClcbiAgfVxuXG4gIGNvbnN0IGZvcmVpZ25LZXkgPSByZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpXG4gIC8qKlxuICAgKiBXaGVyZSBjb25kaXRpb25zLlxuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgPz59ICovXG4gIGNvbnN0IHdoZXJlQ29uZGl0aW9ucyA9IHtbZm9yZWlnbktleV06IHBhcmVudElkc31cblxuICBpZiAocmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljICYmIHJlbGF0aW9uc2hpcC5nZXRQb2x5bW9ycGhpYygpKSB7XG4gICAgY29uc3QgdHlwZUNvbHVtbiA9IHJlbGF0aW9uc2hpcC5nZXRQb2x5bW9ycGhpY1R5cGVDb2x1bW4oKVxuICAgIHdoZXJlQ29uZGl0aW9uc1t0eXBlQ29sdW1uXSA9IG1vZGVsQ2xhc3MuZ2V0TW9kZWxOYW1lKClcbiAgfVxuXG4gIGlmIChlbnRyeS53aGVyZSkge1xuICAgIE9iamVjdC5hc3NpZ24od2hlcmVDb25kaXRpb25zLCBlbnRyeS53aGVyZSlcbiAgfVxuXG4gIGNvbnN0IGJhc2VRdWVyeSA9IHNvdXJjZU1vZGVsLnF1ZXJ5Rm9yTW9kZWwodGFyZ2V0TW9kZWxDbGFzcylcbiAgYmFzZVF1ZXJ5Ll9mb3JjZVF1YWxpZnlCYXNlVGFibGUgPSB0cnVlXG4gIGJhc2VRdWVyeS53aGVyZSh3aGVyZUNvbmRpdGlvbnMpXG5cbiAgY29uc3QgY291bnRRdWVyeSA9IHJlbGF0aW9uc2hpcC5hcHBseVNjb3BlKGJhc2VRdWVyeSlcblxuICBjb3VudFF1ZXJ5Ll9wcmVsb2FkID0ge31cbiAgY291bnRRdWVyeS5yZXNlbGVjdCgpXG5cbiAgY29uc3QgZHJpdmVyID0gY291bnRRdWVyeS5kcml2ZXJcbiAgY29uc3QgcXVvdGVkVGFibGUgPSBkcml2ZXIucXVvdGVUYWJsZShjb3VudFF1ZXJ5LnJvb3RUYWJsZVJlZmVyZW5jZSgpKVxuICBjb25zdCBxdW90ZWRGayA9IGRyaXZlci5xdW90ZUNvbHVtbihmb3JlaWduS2V5KVxuICBjb25zdCBxdWFsaWZpZWRGb3JlaWduS2V5ID0gYCR7cXVvdGVkVGFibGV9LiR7cXVvdGVkRmt9YFxuXG4gIGNvdW50UXVlcnkuZ3JvdXAocXVhbGlmaWVkRm9yZWlnbktleSlcbiAgY291bnRRdWVyeS5zZWxlY3QoYCR7cXVhbGlmaWVkRm9yZWlnbktleX0gQVMgcGFyZW50X2lkYClcbiAgY291bnRRdWVyeS5zZWxlY3QoXCJDT1VOVCgqKSBBUyBjb3VudF92YWx1ZVwiKVxuXG4gIHJldHVybiBjb3VudFF1ZXJ5XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBwcmVwYXJlZCBncm91cGVkIGNvdW50IHF1ZXJ5LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuL21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHR9IGNvdW50UXVlcnkgLSBQcmVwYXJlZCBjb3VudCBxdWVyeS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPE1hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj4+fSAtIE1hcCBvZiBwYXJlbnQgcGsg4oaSIGNvdW50LlxuICovXG5hc3luYyBmdW5jdGlvbiBleGVjdXRlQ291bnRRdWVyeShjb3VudFF1ZXJ5KSB7XG4gIGNvbnN0IHJvd3MgPSAvKiogQHR5cGUge0FycmF5PHtwYXJlbnRfaWQ6IHN0cmluZyB8IG51bWJlciwgY291bnRfdmFsdWU6IHN0cmluZyB8IG51bWJlcn0+fSAqLyAoXG4gICAgYXdhaXQgY291bnRRdWVyeS5fZXhlY3V0ZVF1ZXJ5KClcbiAgKVxuXG4gIC8qKlxuICAgKiBDb3VudHMuXG4gICAqIEB0eXBlIHtNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+fSAqL1xuICBjb25zdCBjb3VudHMgPSBuZXcgTWFwKClcblxuICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgY29uc3QgcGFyZW50SWQgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKHJvdy5wYXJlbnRfaWQpXG4gICAgY29uc3QgY291bnRWYWx1ZSA9IE51bWJlcihyb3cuY291bnRfdmFsdWUpIHx8IDBcbiAgICBjb3VudHMuc2V0KHBhcmVudElkLCBjb3VudFZhbHVlKVxuICB9XG5cbiAgcmV0dXJuIGNvdW50c1xufVxuXG4vKipcbiAqIEF0dGFjaGVzIG9uZSBlbnRyeSdzIHJlc29sdmVkIGNvdW50cyB0byB0aGUgbG9hZGVkIG1vZGVscy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAqIEBwYXJhbSB7TWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPn0gYXJncy5jb3VudHMgLSBDb3VudHMga2V5ZWQgYnkgcGFyZW50IHByaW1hcnkga2V5LlxuICogQHBhcmFtIHtXaXRoQ291bnRFbnRyeX0gYXJncy5lbnRyeSAtIEVudHJ5IHdob3NlIGFsaWFzIHJlY2VpdmVzIHRoZSBjb3VudHMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119IGFyZ3MubW9kZWxzIC0gTG9hZGVkIHBhcmVudCByZWNvcmRzLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucHJpbWFyeUtleSAtIFBhcmVudCBwcmltYXJ5IGtleSBjb2x1bW4uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gYXR0YWNoQ291bnRzKHtjb3VudHMsIGVudHJ5LCBtb2RlbHMsIHByaW1hcnlLZXl9KSB7XG4gIGZvciAoY29uc3QgbW9kZWwgb2YgbW9kZWxzKSB7XG4gICAgY29uc3QgbW9kZWxQcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG4gICAgLy8gVG9sZXJhdGUgZHJpdmVyIGRpZmZlcmVuY2VzIGluIG51bWVyaWMgcmV0dXJuIHR5cGVzOiBTUUxpdGVcbiAgICAvLyByZXR1cm5zIGludGVnZXJzIGFzIEpTIG51bWJlcnMsIGJ1dCBNeVNRTCdzIHJhdyBkcml2ZXIgY2FuXG4gICAgLy8gcmV0dXJuIGNvdW50IHByaW1hcnkga2V5cyBhcyBzdHJpbmdzLiBUcnkgYm90aC5cbiAgICBjb25zdCByZXNvbHZlZENvdW50ID0gY291bnRzLmhhcyhtb2RlbFByaW1hcnlLZXlWYWx1ZSlcbiAgICAgID8gLyoqIEB0eXBlIHtudW1iZXJ9ICovIChjb3VudHMuZ2V0KG1vZGVsUHJpbWFyeUtleVZhbHVlKSlcbiAgICAgIDogTnVtYmVyKGNvdW50cy5nZXQoU3RyaW5nKG1vZGVsUHJpbWFyeUtleVZhbHVlKSkgPz8gMClcblxuICAgIC8vIENvdW50cyBnbyBvbiB0aGUgcmVjb3JkJ3MgZGVkaWNhdGVkIGFzc29jaWF0aW9uLWNvdW50IG1hcCxcbiAgICAvLyBOT1Qgb24gYF9hdHRyaWJ1dGVzYCwgc28gYSB2aXJ0dWFsIGB0YXNrc0NvdW50YCBjYW4ndCBzaGFkb3cgYVxuICAgIC8vIHJlYWwgYHRhc2tzX2NvdW50YCBjb2x1bW4gKGUuZy4gYSBjb3VudGVyX2NhY2hlKSBub3IgbGVhayBpbnRvXG4gICAgLy8gYXR0cmlidXRlLWxldmVsIHNlcmlhbGl6YXRpb24gLyBjaGFuZ2UgdHJhY2tpbmcuXG4gICAgbW9kZWwuX3NldEFzc29jaWF0aW9uQ291bnQoZW50cnkuYXR0cmlidXRlTmFtZSwgcmVzb2x2ZWRDb3VudClcbiAgfVxufVxuIl19
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS93aXRoLWNvdW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7Ozs7O0dBTUc7QUFFSDs7O0dBR0c7QUFFSDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQUk7SUFDckMsSUFBSSxJQUFJLElBQUksSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFBO0lBRTNCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxPQUFPLElBQUksRUFBRSxDQUFDLENBQUE7WUFDaEYsQ0FBQztZQUVELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0I7O3NDQUU4QjtRQUM5QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFFbEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFD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QUssQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogV2l0aENvdW50RW50cnkgdHlwZS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFdpdGhDb3VudEVudHJ5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXR0cmlidXRlTmFtZSAtIEF0dHJpYnV0ZSB0byBzZXQgb24gZWFjaCBwYXJlbnQgcmVjb3JkIGhvbGRpbmcgdGhlIGNvdW50LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHJlbGF0aW9uc2hpcE5hbWUgLSBIYXMtbWFueSByZWxhdGlvbnNoaXAgd2hvc2Ugcm93cyBhcmUgY291bnRlZC5cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgPz4gfCB1bmRlZmluZWR9IHdoZXJlIC0gT3B0aW9uYWwgZXh0cmEgd2hlcmUgY2xhdXNlIGFwcGxpZWQgdG8gdGhlIGNvdW50IHF1ZXJ5LlxuICovXG5cbi8qKlxuICogRGVmaW5lcyB0aGlzIHR5cGVkZWYuXG4gKiBAdHlwZWRlZiB7c3RyaW5nIHwgc3RyaW5nW10gfCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuIHwge3JlbGF0aW9uc2hpcD86IHN0cmluZywgd2hlcmU/OiBSZWNvcmQ8c3RyaW5nLCA/Pn0+fSBXaXRoQ291bnRTcGVjXG4gKi9cblxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIGZsZXhpYmxlIHVzZXItZmFjaW5nIGAud2l0aENvdW50KC4uLilgIGFyZ3VtZW50IGludG8gdGhlXG4gKiBzdHJpY3QgaW50ZXJuYWwgbGlzdCBvZiB7YXR0cmlidXRlTmFtZSwgcmVsYXRpb25zaGlwTmFtZSwgd2hlcmV9IGVudHJpZXNcbiAqIHRoZSBydW5uZXIgY29uc3VtZXMuXG4gKlxuICogQWNjZXB0ZWQgc2hhcGVzOlxuICogICBcInByb2plY3RzXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBvbmUgZW50cnlcbiAqICAgW1wicHJvamVjdHNcIiwgXCJ0aW1lbG9nc1wiXSAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkiBvbmUgZW50cnkgcGVyIG5hbWVcbiAqICAge3Byb2plY3RzOiB0cnVlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIG9uZSBlbnRyeSAoYXR0ciA9IFwicHJvamVjdHNDb3VudFwiKVxuICogICB7YWN0aXZlTWVtYmVyc0NvdW50OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgY3VzdG9tIGF0dHJpYnV0ZSBuYW1lXG4gKiAgICAge3JlbGF0aW9uc2hpcDogXCJ1c2Vyc1wiLCB3aGVyZToge2FjdGl2ZTogdHJ1ZX19fVxuICogQHBhcmFtIHtXaXRoQ291bnRTcGVjfSBzcGVjIC0gVXNlci1zdXBwbGllZCBzcGVjLlxuICogQHJldHVybnMge1dpdGhDb3VudEVudHJ5W119IC0gTm9ybWFsaXplZCBlbnRyaWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplV2l0aENvdW50KHNwZWMpIHtcbiAgaWYgKHNwZWMgPT0gbnVsbCkgcmV0dXJuIFtdXG5cbiAgaWYgKHR5cGVvZiBzcGVjID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIFtlbnRyeUZyb21OYW1lKHNwZWMpXVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoc3BlYykpIHtcbiAgICByZXR1cm4gc3BlYy5mbGF0TWFwKChpdGVtKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGl0ZW0gIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3aXRoQ291bnQgYXJyYXkgZW50cmllcyBtdXN0IGJlIHN0cmluZ3M7IGdvdCAke3R5cGVvZiBpdGVtfWApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbnRyeUZyb21OYW1lKGl0ZW0pXG4gICAgfSlcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3BlYyA9PT0gXCJvYmplY3RcIikge1xuICAgIC8qKlxuICAgICAqIEVudHJpZXMuXG4gICAgICogQHR5cGUge1dpdGhDb3VudEVudHJ5W119ICovXG4gICAgY29uc3QgZW50cmllcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzcGVjKSkge1xuICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgIGVudHJpZXMucHVzaChlbnRyeUZyb21OYW1lKGtleSkpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogT3B0aW9ucy5cbiAgICAgICAgICogQHR5cGUge3tyZWxhdGlvbnNoaXA/OiBzdHJpbmcsIHdoZXJlPzogUmVjb3JkPHN0cmluZywgPz59fSAqL1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdmFsdWVcbiAgICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgICBhdHRyaWJ1dGVOYW1lOiBrZXksXG4gICAgICAgICAgcmVsYXRpb25zaGlwTmFtZTogb3B0aW9ucy5yZWxhdGlvbnNoaXAgfHwga2V5LFxuICAgICAgICAgIHdoZXJlOiBvcHRpb25zLndoZXJlXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB3aXRoQ291bnQgdmFsdWUgZm9yICR7a2V5fTogJHt0eXBlb2YgdmFsdWV9YClcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cmllc1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHdpdGhDb3VudCBzcGVjOiAke3R5cGVvZiBzcGVjfWApXG59XG5cbi8qKlxuICogUnVucyBlbnRyeSBmcm9tIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFJlbGF0aW9uc2hpcCBuYW1lIChhdHRyaWJ1dGUgbmFtZSBpcyBkZXJpdmVkIGJ5IGFwcGVuZGluZyBcIkNvdW50XCIpLlxuICogQHJldHVybnMge1dpdGhDb3VudEVudHJ5fSAtIE5vcm1hbGl6ZWQgYXNzb2NpYXRpb24tY291bnQgZW50cnkuXG4gKi9cbmZ1bmN0aW9uIGVudHJ5RnJvbU5hbWUobmFtZSkge1xuICByZXR1cm4ge1xuICAgIGF0dHJpYnV0ZU5hbWU6IGAke25hbWV9Q291bnRgLFxuICAgIHJlbGF0aW9uc2hpcE5hbWU6IG5hbWUsXG4gICAgd2hlcmU6IHVuZGVmaW5lZFxuICB9XG59XG5cbi8qKlxuICogUnVuIGV2ZXJ5IHdpdGhDb3VudCBlbnRyeSBhZ2FpbnN0IHRoZSBsb2FkZWQgcGFyZW50IHJlY29yZHMsIGF0dGFjaGluZ1xuICogdGhlIHJlc3VsdGluZyBjb3VudHMgYXMgYXR0cmlidXRlcyBvbiBlYWNoIHJlY29yZC4gTWlycm9ycyB0aGVcbiAqIFByZWxvYWRlcidzIGRhdGEtZmxvdyBzaGFwZSDigJQgb25lIGdyb3VwZWQgY291bnQgcXVlcnkgcGVyIGVudHJ5LCB0aGVuXG4gKiBgc2V0QXR0cmlidXRlYCBvbiBlYWNoIHBhcmVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gYXJncy5tb2RlbHMgLSBMb2FkZWQgcGFyZW50IHJlY29yZHMuXG4gKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gUGFyZW50IG1vZGVsIGNsYXNzLlxuICogQHBhcmFtIHtXaXRoQ291bnRFbnRyeVtdfSBhcmdzLmVudHJpZXMgLSBOb3JtYWxpemVkIHdpdGhDb3VudCBlbnRyaWVzLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XaXRoQ291bnQoe21vZGVscywgbW9kZWxDbGFzcywgZW50cmllc30pIHtcbiAgaWYgKG1vZGVscy5sZW5ndGggPT09IDAgfHwgZW50cmllcy5sZW5ndGggPT09IDApIHJldHVyblxuXG4gIGNvbnN0IHByaW1hcnlLZXkgPSBtb2RlbENsYXNzLnByaW1hcnlLZXkoKVxuICBjb25zdCBwYXJlbnRJZHMgPSBtb2RlbHMubWFwKChtb2RlbCkgPT4gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQ29sdW1uKHByaW1hcnlLZXkpKSlcbiAgY29uc3Qgc291cmNlTW9kZWwgPSBtb2RlbHNbMF1cbiAgY29uc3QgcXVlcnlHcm91cHMgPSBuZXcgTWFwKClcblxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICBjb25zdCBjb3VudFF1ZXJ5ID0gcXVlcnlGb3JFbnRyeSh7ZW50cnksIG1vZGVsQ2xhc3MsIHBhcmVudElkcywgc291cmNlTW9kZWx9KVxuICAgIGNvbnN0IHNxbCA9IGNvdW50UXVlcnkudG9TcWwoKVxuICAgIGNvbnN0IGV4aXN0aW5nR3JvdXAgPSBxdWVyeUdyb3Vwcy5nZXQoc3FsKVxuXG4gICAgaWYgKGV4aXN0aW5nR3JvdXApIHtcbiAgICAgIGV4aXN0aW5nR3JvdXAuZW50cmllcy5wdXNoKGVudHJ5KVxuICAgIH0gZWxzZSB7XG4gICAgICBxdWVyeUdyb3Vwcy5zZXQoc3FsLCB7Y291bnRRdWVyeSwgZW50cmllczogW2VudHJ5XX0pXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCB7Y291bnRRdWVyeSwgZW50cmllczogZ3JvdXBlZEVudHJpZXN9IG9mIHF1ZXJ5R3JvdXBzLnZhbHVlcygpKSB7XG4gICAgY29uc3QgY291bnRzID0gYXdhaXQgZXhlY3V0ZUNvdW50UXVlcnkoY291bnRRdWVyeSlcblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZ3JvdXBlZEVudHJpZXMpIGF0dGFjaENvdW50cyh7Y291bnRzLCBlbnRyeSwgbW9kZWxzLCBwcmltYXJ5S2V5fSlcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgZ3JvdXBlZCBjb3VudCBxdWVyeSBmb3IgYW4gZW50cnkuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge1dpdGhDb3VudEVudHJ5fSBhcmdzLmVudHJ5IC0gRW50cnkgYmVpbmcgZXZhbHVhdGVkLlxuICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIFBhcmVudCBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nIHwgbnVtYmVyPn0gYXJncy5wYXJlbnRJZHMgLSBQcmltYXJ5IGtleXMgb2YgdGhlIGxvYWRlZCBwYXJlbnRzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5zb3VyY2VNb2RlbCAtIExvYWRlZCBvcGVyYXRpb24gb3duZXIuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSAtIFByZXBhcmVkIGNvdW50IHF1ZXJ5LlxuICovXG5mdW5jdGlvbiBxdWVyeUZvckVudHJ5KHtlbnRyeSwgbW9kZWxDbGFzcywgcGFyZW50SWRzLCBzb3VyY2VNb2RlbH0pIHtcbiAgY29uc3QgcmVsYXRpb25zaGlwID0gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBCeU5hbWUoZW50cnkucmVsYXRpb25zaGlwTmFtZSlcblxuICBpZiAoIXJlbGF0aW9uc2hpcCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHttb2RlbENsYXNzLm5hbWV9IGhhcyBubyByZWxhdGlvbnNoaXAgbmFtZWQgJHtKU09OLnN0cmluZ2lmeShlbnRyeS5yZWxhdGlvbnNoaXBOYW1lKX0gKHdpdGhDb3VudCBhdHRyaWJ1dGUgJHtKU09OLnN0cmluZ2lmeShlbnRyeS5hdHRyaWJ1dGVOYW1lKX0pYClcbiAgfVxuXG4gIGlmIChyZWxhdGlvbnNoaXAudHlwZSAhPT0gXCJoYXNNYW55XCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHdpdGhDb3VudCBjdXJyZW50bHkgc3VwcG9ydHMgb25seSBoYXNNYW55IHJlbGF0aW9uc2hpcHM7ICR7bW9kZWxDbGFzcy5uYW1lfSMke2VudHJ5LnJlbGF0aW9uc2hpcE5hbWV9IGlzICR7cmVsYXRpb25zaGlwLnR5cGV9YClcbiAgfVxuXG4gIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSByZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB3aXRoQ291bnQ6IGNvdWxkIG5vdCByZXNvbHZlIHRhcmdldCBtb2RlbCBmb3IgJHttb2RlbENsYXNzLm5hbWV9IyR7ZW50cnkucmVsYXRpb25zaGlwTmFtZX1gKVxuICB9XG5cbiAgY29uc3QgZm9yZWlnbktleSA9IHJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5KClcbiAgLyoqXG4gICAqIE1hbmRhdG9yeSBjb2hvcnQgY29uZGl0aW9ucy5cbiAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsID8+fSAqL1xuICBjb25zdCBtYW5kYXRvcnlXaGVyZUNvbmRpdGlvbnMgPSB7W2ZvcmVpZ25LZXldOiBwYXJlbnRJZHN9XG5cbiAgaWYgKHJlbGF0aW9uc2hpcC5nZXRQb2x5bW9ycGhpYyAmJiByZWxhdGlvbnNoaXAuZ2V0UG9seW1vcnBoaWMoKSkge1xuICAgIGNvbnN0IHR5cGVDb2x1bW4gPSByZWxhdGlvbnNoaXAuZ2V0UG9seW1vcnBoaWNUeXBlQ29sdW1uKClcbiAgICBtYW5kYXRvcnlXaGVyZUNvbmRpdGlvbnNbdHlwZUNvbHVtbl0gPSBtb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpXG4gIH1cblxuICBjb25zdCBiYXNlUXVlcnkgPSBzb3VyY2VNb2RlbC5xdWVyeUZvck1vZGVsKHRhcmdldE1vZGVsQ2xhc3MpXG4gIGJhc2VRdWVyeS5fZm9yY2VRdWFsaWZ5QmFzZVRhYmxlID0gdHJ1ZVxuICBiYXNlUXVlcnkud2hlcmUobWFuZGF0b3J5V2hlcmVDb25kaXRpb25zKVxuXG4gIGlmIChlbnRyeS53aGVyZSkge1xuICAgIGJhc2VRdWVyeS53aGVyZShlbnRyeS53aGVyZSlcbiAgfVxuXG4gIGNvbnN0IGNvdW50UXVlcnkgPSByZWxhdGlvbnNoaXAuYXBwbHlTY29wZShiYXNlUXVlcnkpXG5cbiAgY291bnRRdWVyeS5fcHJlbG9hZCA9IHt9XG4gIGNvdW50UXVlcnkucmVzZWxlY3QoKVxuXG4gIGNvbnN0IGRyaXZlciA9IGNvdW50UXVlcnkuZHJpdmVyXG4gIGNvbnN0IHF1b3RlZFRhYmxlID0gZHJpdmVyLnF1b3RlVGFibGUoY291bnRRdWVyeS5yb290VGFibGVSZWZlcmVuY2UoKSlcbiAgY29uc3QgcXVvdGVkRmsgPSBkcml2ZXIucXVvdGVDb2x1bW4oZm9yZWlnbktleSlcbiAgY29uc3QgcXVhbGlmaWVkRm9yZWlnbktleSA9IGAke3F1b3RlZFRhYmxlfS4ke3F1b3RlZEZrfWBcblxuICBjb3VudFF1ZXJ5Lmdyb3VwKHF1YWxpZmllZEZvcmVpZ25LZXkpXG4gIGNvdW50UXVlcnkuc2VsZWN0KGAke3F1YWxpZmllZEZvcmVpZ25LZXl9IEFTIHBhcmVudF9pZGApXG4gIGNvdW50UXVlcnkuc2VsZWN0KFwiQ09VTlQoKikgQVMgY291bnRfdmFsdWVcIilcblxuICByZXR1cm4gY291bnRRdWVyeVxufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGEgcHJlcGFyZWQgZ3JvdXBlZCBjb3VudCBxdWVyeS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSBjb3VudFF1ZXJ5IC0gUHJlcGFyZWQgY291bnQgcXVlcnkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxNYXA8c3RyaW5nIHwgbnVtYmVyLCBudW1iZXI+Pn0gLSBNYXAgb2YgcGFyZW50IHBrIOKGkiBjb3VudC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUNvdW50UXVlcnkoY291bnRRdWVyeSkge1xuICBjb25zdCByb3dzID0gLyoqIEB0eXBlIHtBcnJheTx7cGFyZW50X2lkOiBzdHJpbmcgfCBudW1iZXIsIGNvdW50X3ZhbHVlOiBzdHJpbmcgfCBudW1iZXJ9Pn0gKi8gKFxuICAgIGF3YWl0IGNvdW50UXVlcnkuX2V4ZWN1dGVRdWVyeSgpXG4gIClcblxuICAvKipcbiAgICogQ291bnRzLlxuICAgKiBAdHlwZSB7TWFwPHN0cmluZyB8IG51bWJlciwgbnVtYmVyPn0gKi9cbiAgY29uc3QgY291bnRzID0gbmV3IE1hcCgpXG5cbiAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgIGNvbnN0IHBhcmVudElkID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChyb3cucGFyZW50X2lkKVxuICAgIGNvbnN0IGNvdW50VmFsdWUgPSBOdW1iZXIocm93LmNvdW50X3ZhbHVlKSB8fCAwXG4gICAgY291bnRzLnNldChwYXJlbnRJZCwgY291bnRWYWx1ZSlcbiAgfVxuXG4gIHJldHVybiBjb3VudHNcbn1cblxuLyoqXG4gKiBBdHRhY2hlcyBvbmUgZW50cnkncyByZXNvbHZlZCBjb3VudHMgdG8gdGhlIGxvYWRlZCBtb2RlbHMuXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge01hcDxzdHJpbmcgfCBudW1iZXIsIG51bWJlcj59IGFyZ3MuY291bnRzIC0gQ291bnRzIGtleWVkIGJ5IHBhcmVudCBwcmltYXJ5IGtleS5cbiAqIEBwYXJhbSB7V2l0aENvdW50RW50cnl9IGFyZ3MuZW50cnkgLSBFbnRyeSB3aG9zZSBhbGlhcyByZWNlaXZlcyB0aGUgY291bnRzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSBhcmdzLm1vZGVscyAtIExvYWRlZCBwYXJlbnQgcmVjb3Jkcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnByaW1hcnlLZXkgLSBQYXJlbnQgcHJpbWFyeSBrZXkgY29sdW1uLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGF0dGFjaENvdW50cyh7Y291bnRzLCBlbnRyeSwgbW9kZWxzLCBwcmltYXJ5S2V5fSkge1xuICBmb3IgKGNvbnN0IG1vZGVsIG9mIG1vZGVscykge1xuICAgIGNvbnN0IG1vZGVsUHJpbWFyeUtleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQ29sdW1uKHByaW1hcnlLZXkpKVxuICAgIC8vIFRvbGVyYXRlIGRyaXZlciBkaWZmZXJlbmNlcyBpbiBudW1lcmljIHJldHVybiB0eXBlczogU1FMaXRlXG4gICAgLy8gcmV0dXJucyBpbnRlZ2VycyBhcyBKUyBudW1iZXJzLCBidXQgTXlTUUwncyByYXcgZHJpdmVyIGNhblxuICAgIC8vIHJldHVybiBjb3VudCBwcmltYXJ5IGtleXMgYXMgc3RyaW5ncy4gVHJ5IGJvdGguXG4gICAgY29uc3QgcmVzb2x2ZWRDb3VudCA9IGNvdW50cy5oYXMobW9kZWxQcmltYXJ5S2V5VmFsdWUpXG4gICAgICA/IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoY291bnRzLmdldChtb2RlbFByaW1hcnlLZXlWYWx1ZSkpXG4gICAgICA6IE51bWJlcihjb3VudHMuZ2V0KFN0cmluZyhtb2RlbFByaW1hcnlLZXlWYWx1ZSkpID8/IDApXG5cbiAgICAvLyBDb3VudHMgZ28gb24gdGhlIHJlY29yZCdzIGRlZGljYXRlZCBhc3NvY2lhdGlvbi1jb3VudCBtYXAsXG4gICAgLy8gTk9UIG9uIGBfYXR0cmlidXRlc2AsIHNvIGEgdmlydHVhbCBgdGFza3NDb3VudGAgY2FuJ3Qgc2hhZG93IGFcbiAgICAvLyByZWFsIGB0YXNrc19jb3VudGAgY29sdW1uIChlLmcuIGEgY291bnRlcl9jYWNoZSkgbm9yIGxlYWsgaW50b1xuICAgIC8vIGF0dHJpYnV0ZS1sZXZlbCBzZXJpYWxpemF0aW9uIC8gY2hhbmdlIHRyYWNraW5nLlxuICAgIG1vZGVsLl9zZXRBc3NvY2lhdGlvbkNvdW50KGVudHJ5LmF0dHJpYnV0ZU5hbWUsIHJlc29sdmVkQ291bnQpXG4gIH1cbn1cbiJdfQ==
@@ -1,3 +1,4 @@
1
+ /** Backend missing-record error whose diagnostic message stays server-side. */
1
2
  export default class RecordNotFoundError extends Error {
2
3
  }
3
4
  //# sourceMappingURL=record-not-found-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-not-found-error.d.ts","sourceRoot":"","sources":["../../../../src/database/record/record-not-found-error.js"],"names":[],"mappings":"AAEA;CAAyD"}
1
+ {"version":3,"file":"record-not-found-error.d.ts","sourceRoot":"","sources":["../../../../src/database/record/record-not-found-error.js"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E;CAAyD"}
@@ -1,4 +1,5 @@
1
1
  // @ts-check
2
+ /** Backend missing-record error whose diagnostic message stays server-side. */
2
3
  export default class RecordNotFoundError extends Error {
3
4
  }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLW5vdC1mb3VuZC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvcmVjb3JkLW5vdC1mb3VuZC1lcnJvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosTUFBTSxDQUFDLE9BQU8sT0FBTyxtQkFBb0IsU0FBUSxLQUFLO0NBQUciLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjb3JkTm90Rm91bmRFcnJvciBleHRlbmRzIEVycm9yIHt9XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLW5vdC1mb3VuZC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvcmVjb3JkLW5vdC1mb3VuZC1lcnJvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosK0VBQStFO0FBQy9FLE1BQU0sQ0FBQyxPQUFPLE9BQU8sbUJBQW9CLFNBQVEsS0FBSztDQUFHIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKiBCYWNrZW5kIG1pc3NpbmctcmVjb3JkIGVycm9yIHdob3NlIGRpYWdub3N0aWMgbWVzc2FnZSBzdGF5cyBzZXJ2ZXItc2lkZS4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlY29yZE5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuIl19
@@ -782,9 +782,15 @@ export default class FrontendModelController extends Controller {
782
782
  /**
783
783
  * Runs frontend model error payload.
784
784
  * @param {string} errorMessage - Error message.
785
+ * @param {object} [options] - Structured error fields.
786
+ * @param {import("./configuration-types.js").ClientErrorPayloadReporterPayload} [options.details] - Client-safe details.
787
+ * @param {"application_error" | "authorization_error" | "internal_error" | "record_not_found" | "validation_error"} [options.errorType] - Stable client-facing error category.
785
788
  * @returns {Record<string, ?>} - Error payload.
786
789
  */
787
- frontendModelErrorPayload(errorMessage: string): Record<string, unknown>;
790
+ frontendModelErrorPayload(errorMessage: string, options?: {
791
+ details?: import("./configuration-types.js").ClientErrorPayloadReporterPayload | undefined;
792
+ errorType?: "application_error" | "authorization_error" | "record_not_found" | "validation_error" | "internal_error" | undefined;
793
+ }): Record<string, unknown>;
788
794
  /**
789
795
  * Runs frontend model client safe error payload.
790
796
  * @returns {Record<string, ?>} - Client-safe error payload.
@@ -817,19 +823,13 @@ export default class FrontendModelController extends Controller {
817
823
  /**
818
824
  * Runs frontend model log endpoint error.
819
825
  * @param {object} args - Error log args.
820
- * @param {string} args.action - Endpoint/action label.
821
826
  * @param {?} args.error - Caught error.
822
- * @param {"index" | "find" | "create" | "update" | "destroy" | "attach" | "attachmentList" | "download" | "url" | "custom-command"} [args.commandType] - Frontend-model command type.
823
- * @param {string | undefined} [args.model] - Request model name when available.
824
- * @param {string | undefined} [args.requestId] - Batch request id when available.
827
+ * @param {FrontendModelEndpointErrorContext} args.errorContext - Shared client/logging error context.
825
828
  * @returns {Promise<void>} - Resolves after logging.
826
829
  */
827
- frontendModelLogEndpointError({ action, error, commandType, model, requestId }: {
828
- action: string;
830
+ frontendModelLogEndpointError({ error, errorContext }: {
829
831
  error: unknown;
830
- commandType?: "find" | "update" | "destroy" | "url" | "index" | "create" | "attach" | "attachmentList" | "download" | "custom-command" | undefined;
831
- model?: string | undefined;
832
- requestId?: string | undefined;
832
+ errorContext: FrontendModelEndpointErrorContext;
833
833
  }): Promise<void>;
834
834
  /**
835
835
  * Runs frontend model render command response.
@@ -1 +1 @@
1
- {"version":3,"file":"frontend-model-controller.d.ts","sourceRoot":"","sources":["../../src/frontend-model-controller.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontend-model-controller.d.ts","sourceRoot":"","sources":["../../src/frontend-model-controller.js"],"names":[],"mappings":"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"}