velocious 1.0.399 → 1.0.401
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/build/src/configuration-types.d.ts +5 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +2 -1
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +2 -3
- package/build/src/database/migration/index.d.ts +19 -0
- package/build/src/database/migration/index.d.ts.map +1 -1
- package/build/src/database/migration/index.js +25 -3
- package/build/src/database/migrator.d.ts +20 -0
- package/build/src/database/migrator.d.ts.map +1 -1
- package/build/src/database/migrator.js +72 -36
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +89 -0
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +199 -13
- package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
- package/build/src/database/query/preloader/belongs-to.js +23 -13
- package/build/src/database/record/acts-as-list.d.ts +20 -0
- package/build/src/database/record/acts-as-list.d.ts.map +1 -0
- package/build/src/database/record/acts-as-list.js +292 -0
- package/build/src/database/record/index.d.ts +18 -0
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +22 -1
- package/build/src/environment-handlers/base.d.ts +11 -0
- package/build/src/environment-handlers/base.d.ts.map +1 -1
- package/build/src/environment-handlers/base.js +14 -1
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +14 -1
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +22 -2
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +8 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -75,26 +75,36 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
|
|
|
75
75
|
/** @type {Array<number | string>} */
|
|
76
76
|
const foreignKeyValues = [];
|
|
77
77
|
for (const model of this.models) {
|
|
78
|
-
const foreignKeyValue = /** @type {string | number} */ (model.readColumn(foreignKey));
|
|
78
|
+
const foreignKeyValue = /** @type {string | number | null | undefined} */ (model.readColumn(foreignKey));
|
|
79
|
+
// Skip null/undefined foreign keys: a belongsTo with no foreign key has no
|
|
80
|
+
// target, and including them would serialize to e.g. `IN (null)` which
|
|
81
|
+
// throws on non-string primary-key columns.
|
|
82
|
+
if (foreignKeyValue === null || foreignKeyValue === undefined)
|
|
83
|
+
continue;
|
|
79
84
|
if (!foreignKeyValues.includes(foreignKeyValue))
|
|
80
85
|
foreignKeyValues.push(foreignKeyValue);
|
|
81
86
|
}
|
|
82
|
-
/** @type {Record<string, string | number | Array<string | number>>} */
|
|
83
|
-
const whereArgs = {};
|
|
84
|
-
whereArgs[primaryKey] = foreignKeyValues;
|
|
85
87
|
const targetModelClass = this.relationship.getTargetModelClass();
|
|
86
88
|
if (!targetModelClass)
|
|
87
89
|
throw new Error("No target model class could be gotten from relationship");
|
|
88
|
-
await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration());
|
|
89
|
-
// Load target models to be preloaded on the given models
|
|
90
|
-
let query = targetModelClass.where(whereArgs);
|
|
91
|
-
query = this.relationship.applyScope(query);
|
|
92
|
-
const targetModels = await query.toArray();
|
|
93
90
|
/** @type {Record<string, import("../../record/index.js").default>} */
|
|
94
91
|
const targetModelsById = {};
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
/** @type {import("../../record/index.js").default[]} */
|
|
93
|
+
let targetModels = [];
|
|
94
|
+
// Only query when at least one model has a non-null foreign key.
|
|
95
|
+
if (foreignKeyValues.length > 0) {
|
|
96
|
+
await ensureModelClassInitialized(targetModelClass, this.relationship.getConfiguration());
|
|
97
|
+
/** @type {Record<string, string | number | Array<string | number>>} */
|
|
98
|
+
const whereArgs = {};
|
|
99
|
+
whereArgs[primaryKey] = foreignKeyValues;
|
|
100
|
+
// Load target models to be preloaded on the given models
|
|
101
|
+
let query = targetModelClass.where(whereArgs);
|
|
102
|
+
query = this.relationship.applyScope(query);
|
|
103
|
+
targetModels = await query.toArray();
|
|
104
|
+
for (const targetModel of targetModels) {
|
|
105
|
+
const primaryKeyValue = /** @type {string | number} */ (targetModel.readColumn(this.relationship.getPrimaryKey()));
|
|
106
|
+
targetModelsById[primaryKeyValue] = targetModel;
|
|
107
|
+
}
|
|
98
108
|
}
|
|
99
109
|
// Set the target preloaded models on the given models
|
|
100
110
|
for (const model of this.models) {
|
|
@@ -107,4 +117,4 @@ export default class VelociousDatabaseQueryPreloaderBelongsTo {
|
|
|
107
117
|
return targetModels;
|
|
108
118
|
}
|
|
109
119
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9wcmVsb2FkZXIvYmVsb25ncy10by5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywyQkFBMkIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RSxPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUU3RCxNQUFNLENBQUMsT0FBTyxPQUFPLHdDQUF3QztJQUMzRDs7OztPQUlHO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0MsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUVwRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUE7WUFDL0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBRTFELCtJQUErSTtZQUMvSSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUE7WUFFcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ2IsZUFBZSxFQUFFLDBDQUEwQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVB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UyxDQUFDLENBQUE7UUFFN0MsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRTNDLE1BQU0sWUFBWSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRTFDLHNFQUFzRTtRQUN0RSxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUUzQixLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sZUFBZSxHQUFHLDhCQUE4QixDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUVsSCxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxXQUFXLENBQUE7UUFDakQsQ0FBQztRQUVELHNEQUFzRDtRQUN0RCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQyxNQUFNLGVBQWUsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtZQUNyRixNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUNyRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQTtZQUU5RixpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDcEMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzFDLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQTtJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZCBmcm9tIFwiLi9lbnN1cmUtbW9kZWwtY2xhc3MtaW5pdGlhbGl6ZWQuanNcIlxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUXVlcnlQcmVsb2FkZXJCZWxvbmdzVG8ge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSBhcmdzLm1vZGVscyAtIE1vZGVsIGluc3RhbmNlcy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvcmVsYXRpb25zaGlwcy9iZWxvbmdzLXRvLmpzXCIpLmRlZmF1bHR9IGFyZ3MucmVsYXRpb25zaGlwIC0gUmVsYXRpb25zaGlwLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe21vZGVscywgcmVsYXRpb25zaGlwLCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuXG4gICAgdGhpcy5tb2RlbHMgPSBtb2RlbHNcbiAgICB0aGlzLnJlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcFxuICB9XG5cbiAgYXN5bmMgcnVuKCkge1xuICAgIGNvbnN0IGZvcmVpZ25LZXkgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5KClcbiAgICBjb25zdCBwcmltYXJ5S2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpXG5cbiAgICBpZiAodGhpcy5yZWxhdGlvbnNoaXAuZ2V0UG9seW1vcnBoaWMoKSkge1xuICAgICAgY29uc3QgdHlwZUNvbHVtbiA9IHRoaXMucmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljVHlwZUNvbHVtbigpXG4gICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Q29uZmlndXJhdGlvbigpXG5cbiAgICAgIC8qKiBAdHlwZSB7e2ZvcmVpZ25LZXlWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBtb2RlbDogaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQsIHRhcmdldFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZH1bXX0gKi9cbiAgICAgIGNvbnN0IG1vZGVsTWV0YSA9IFtdXG5cbiAgICAgIGZvciAoY29uc3QgbW9kZWwgb2YgdGhpcy5tb2RlbHMpIHtcbiAgICAgICAgbW9kZWxNZXRhLnB1c2goe1xuICAgICAgICAgIGZvcmVpZ25LZXlWYWx1ZTogLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWR9ICovIChtb2RlbC5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpKSxcbiAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICB0YXJnZXRUeXBlOiAvKiogQHR5cGUge3N0cmluZyB8IHVuZGVmaW5lZH0gKi8gKG1vZGVsLnJlYWRDb2x1bW4odHlwZUNvbHVtbikpXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgQXJyYXk8bnVtYmVyIHwgc3RyaW5nPj59ICovXG4gICAgICBjb25zdCBmb3JlaWduS2V5VmFsdWVzQnlUeXBlID0ge31cblxuICAgICAgZm9yIChjb25zdCBtZXRhIG9mIG1vZGVsTWV0YSkge1xuICAgICAgICBpZiAobWV0YS50YXJnZXRUeXBlID09PSB1bmRlZmluZWQgfHwgbWV0YS50YXJnZXRUeXBlID09PSBudWxsKSBjb250aW51ZVxuICAgICAgICBpZiAobWV0YS5mb3JlaWduS2V5VmFsdWUgPT09IHVuZGVmaW5lZCB8fCBtZXRhLmZvcmVpZ25LZXlWYWx1ZSA9PT0gbnVsbCkgY29udGludWVcblxuICAgICAgICBpZiAoIWZvcmVpZ25LZXlWYWx1ZXNCeVR5cGVbbWV0YS50YXJnZXRUeXBlXSkgZm9yZWlnbktleVZhbHVlc0J5VHlwZVttZXRhLnRhcmdldFR5cGVdID0gW11cbiAgICAgICAgaWYgKCFmb3JlaWduS2V5VmFsdWVzQnlUeXBlW21ldGEudGFyZ2V0VHlwZV0uaW5jbHVkZXMobWV0YS5mb3JlaWduS2V5VmFsdWUpKSBmb3JlaWduS2V5VmFsdWVzQnlUeXBlW21ldGEudGFyZ2V0VHlwZV0ucHVzaChtZXRhLmZvcmVpZ25LZXlWYWx1ZSlcbiAgICAgIH1cblxuICAgICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8bnVtYmVyIHwgc3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4+fSAqL1xuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWQgPSB7fVxuXG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W10+fSAqL1xuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWUgPSB7fVxuXG4gICAgICAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119ICovXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbHMgPSBbXVxuXG4gICAgICBmb3IgKGNvbnN0IHRhcmdldFR5cGUgaW4gZm9yZWlnbktleVZhbHVlc0J5VHlwZSkge1xuICAgICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gY29uZmlndXJhdGlvbi5nZXRNb2RlbENsYXNzKHRhcmdldFR5cGUpXG5cbiAgICAgICAgYXdhaXQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkKHRhcmdldE1vZGVsQ2xhc3MsIGNvbmZpZ3VyYXRpb24pXG5cbiAgICAgICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+Pn0gKi9cbiAgICAgICAgY29uc3Qgd2hlcmVBcmdzID0ge31cblxuICAgICAgICB3aGVyZUFyZ3NbcHJpbWFyeUtleV0gPSBmb3JlaWduS2V5VmFsdWVzQnlUeXBlW3RhcmdldFR5cGVdXG5cbiAgICAgICAgbGV0IHF1ZXJ5ID0gdGFyZ2V0TW9kZWxDbGFzcy53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICAgICAgcXVlcnkgPSB0aGlzLnJlbGF0aW9uc2hpcC5hcHBseVNjb3BlKHF1ZXJ5KVxuXG4gICAgICAgIGNvbnN0IGZvdW5kVGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICAgICAgdGFyZ2V0TW9kZWxzLnB1c2goLi4uZm91bmRUYXJnZXRNb2RlbHMpXG4gICAgICAgIHRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lW3RhcmdldE1vZGVsQ2xhc3MuZ2V0TW9kZWxOYW1lKCldID0gZm91bmRUYXJnZXRNb2RlbHNcbiAgICAgICAgdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWRbdGFyZ2V0VHlwZV0gPSB7fVxuXG4gICAgICAgIGZvciAoY29uc3QgdGFyZ2V0TW9kZWwgb2YgZm91bmRUYXJnZXRNb2RlbHMpIHtcbiAgICAgICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKHRhcmdldE1vZGVsLnJlYWRDb2x1bW4ocHJpbWFyeUtleSkpXG5cbiAgICAgICAgICB0YXJnZXRNb2RlbHNCeVR5cGVBbmRJZFt0YXJnZXRUeXBlXVtwcmltYXJ5S2V5VmFsdWVdID0gdGFyZ2V0TW9kZWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG1ldGEgb2YgbW9kZWxNZXRhKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsUmVsYXRpb25zaGlwID0gbWV0YS5tb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUodGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpKVxuICAgICAgICBjb25zdCB0YXJnZXRNb2RlbCA9IChtZXRhLnRhcmdldFR5cGUgJiYgbWV0YS5mb3JlaWduS2V5VmFsdWUgIT09IHVuZGVmaW5lZCAmJiBtZXRhLmZvcmVpZ25LZXlWYWx1ZSAhPT0gbnVsbClcbiAgICAgICAgICA/IHRhcmdldE1vZGVsc0J5VHlwZUFuZElkW21ldGEudGFyZ2V0VHlwZV0/LlttZXRhLmZvcmVpZ25LZXlWYWx1ZV1cbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldFByZWxvYWRlZCh0cnVlKVxuICAgICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRMb2FkZWQodGFyZ2V0TW9kZWwpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7dGFyZ2V0TW9kZWxzLCB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZX1cbiAgICB9XG5cbiAgICAvKiogQHR5cGUge0FycmF5PG51bWJlciB8IHN0cmluZz59ICovXG4gICAgY29uc3QgZm9yZWlnbktleVZhbHVlcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMubW9kZWxzKSB7XG4gICAgICBjb25zdCBmb3JlaWduS2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4oZm9yZWlnbktleSkpXG5cbiAgICAgIGlmICghZm9yZWlnbktleVZhbHVlcy5pbmNsdWRlcyhmb3JlaWduS2V5VmFsdWUpKSBmb3JlaWduS2V5VmFsdWVzLnB1c2goZm9yZWlnbktleVZhbHVlKVxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgY29uc3Qgd2hlcmVBcmdzID0ge31cblxuICAgIHdoZXJlQXJnc1twcmltYXJ5S2V5XSA9IGZvcmVpZ25LZXlWYWx1ZXNcblxuICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiTm8gdGFyZ2V0IG1vZGVsIGNsYXNzIGNvdWxkIGJlIGdvdHRlbiBmcm9tIHJlbGF0aW9uc2hpcFwiKVxuXG4gICAgYXdhaXQgZW5zdXJlTW9kZWxDbGFzc0luaXRpYWxpemVkKHRhcmdldE1vZGVsQ2xhc3MsIHRoaXMucmVsYXRpb25zaGlwLmdldENvbmZpZ3VyYXRpb24oKSlcblxuICAgIC8vIExvYWQgdGFyZ2V0IG1vZGVscyB0byBiZSBwcmVsb2FkZWQgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgIGxldCBxdWVyeSA9IHRhcmdldE1vZGVsQ2xhc3Mud2hlcmUod2hlcmVBcmdzKVxuXG4gICAgcXVlcnkgPSB0aGlzLnJlbGF0aW9uc2hpcC5hcHBseVNjb3BlKHF1ZXJ5KVxuXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pn0gKi9cbiAgICBjb25zdCB0YXJnZXRNb2RlbHNCeUlkID0ge31cblxuICAgIGZvciAoY29uc3QgdGFyZ2V0TW9kZWwgb2YgdGFyZ2V0TW9kZWxzKSB7XG4gICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKHRhcmdldE1vZGVsLnJlYWRDb2x1bW4odGhpcy5yZWxhdGlvbnNoaXAuZ2V0UHJpbWFyeUtleSgpKSlcblxuICAgICAgdGFyZ2V0TW9kZWxzQnlJZFtwcmltYXJ5S2V5VmFsdWVdID0gdGFyZ2V0TW9kZWxcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHRhcmdldCBwcmVsb2FkZWQgbW9kZWxzIG9uIHRoZSBnaXZlbiBtb2RlbHNcbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMubW9kZWxzKSB7XG4gICAgICBjb25zdCBmb3JlaWduS2V5VmFsdWUgPSAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKG1vZGVsLnJlYWRDb2x1bW4oZm9yZWlnbktleSkpXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbCA9IHRhcmdldE1vZGVsc0J5SWRbZm9yZWlnbktleVZhbHVlXVxuICAgICAgY29uc3QgbW9kZWxSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUodGhpcy5yZWxhdGlvbnNoaXAuZ2V0UmVsYXRpb25zaGlwTmFtZSgpKVxuXG4gICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRQcmVsb2FkZWQodHJ1ZSlcbiAgICAgIG1vZGVsUmVsYXRpb25zaGlwLnNldExvYWRlZCh0YXJnZXRNb2RlbClcbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0TW9kZWxzXG4gIH1cbn1cbiJdfQ==
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVsb25ncy10by5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS9wcmVsb2FkZXIvYmVsb25ncy10by5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTywyQkFBMkIsTUFBTSxxQ0FBcUMsQ0FBQTtBQUM3RSxPQUFPLGFBQWEsTUFBTSxtQ0FBbUMsQ0FBQTtBQUU3RCxNQUFNLENBQUMsT0FBTyxPQUFPLHdDQUF3QztJQUMzRDs7OztPQUlHO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDN0MsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUE7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUVwRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLENBQUE7WUFDL0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBRTFELCtJQUErSTtZQUMvSSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUE7WUFFcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQ2IsZUFBZSxFQUFFLDBDQUEwQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVB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LGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUE7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBlbnN1cmVNb2RlbENsYXNzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vZW5zdXJlLW1vZGVsLWNsYXNzLWluaXRpYWxpemVkLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5UHJlbG9hZGVyQmVsb25nc1RvIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHRbXX0gYXJncy5tb2RlbHMgLSBNb2RlbCBpbnN0YW5jZXMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmVsb25ncy10by5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlbGF0aW9uc2hpcCAtIFJlbGF0aW9uc2hpcC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHttb2RlbHMsIHJlbGF0aW9uc2hpcCwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIHRoaXMubW9kZWxzID0gbW9kZWxzXG4gICAgdGhpcy5yZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNoaXBcbiAgfVxuXG4gIGFzeW5jIHJ1bigpIHtcbiAgICBjb25zdCBmb3JlaWduS2V5ID0gdGhpcy5yZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpXG4gICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMucmVsYXRpb25zaGlwLmdldFByaW1hcnlLZXkoKVxuXG4gICAgaWYgKHRoaXMucmVsYXRpb25zaGlwLmdldFBvbHltb3JwaGljKCkpIHtcbiAgICAgIGNvbnN0IHR5cGVDb2x1bW4gPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRQb2x5bW9ycGhpY1R5cGVDb2x1bW4oKVxuICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMucmVsYXRpb25zaGlwLmdldENvbmZpZ3VyYXRpb24oKVxuXG4gICAgICAvKiogQHR5cGUge3tmb3JlaWduS2V5VmFsdWU6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCwgbW9kZWw6IGltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0LCB0YXJnZXRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWR9W119ICovXG4gICAgICBjb25zdCBtb2RlbE1ldGEgPSBbXVxuXG4gICAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMubW9kZWxzKSB7XG4gICAgICAgIG1vZGVsTWV0YS5wdXNoKHtcbiAgICAgICAgICBmb3JlaWduS2V5VmFsdWU6IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkfSAqLyAobW9kZWwucmVhZENvbHVtbihmb3JlaWduS2V5KSksXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgdGFyZ2V0VHlwZTogLyoqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovIChtb2RlbC5yZWFkQ29sdW1uKHR5cGVDb2x1bW4pKVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIEFycmF5PG51bWJlciB8IHN0cmluZz4+fSAqL1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlc0J5VHlwZSA9IHt9XG5cbiAgICAgIGZvciAoY29uc3QgbWV0YSBvZiBtb2RlbE1ldGEpIHtcbiAgICAgICAgaWYgKG1ldGEudGFyZ2V0VHlwZSA9PT0gdW5kZWZpbmVkIHx8IG1ldGEudGFyZ2V0VHlwZSA9PT0gbnVsbCkgY29udGludWVcbiAgICAgICAgaWYgKG1ldGEuZm9yZWlnbktleVZhbHVlID09PSB1bmRlZmluZWQgfHwgbWV0YS5mb3JlaWduS2V5VmFsdWUgPT09IG51bGwpIGNvbnRpbnVlXG5cbiAgICAgICAgaWYgKCFmb3JlaWduS2V5VmFsdWVzQnlUeXBlW21ldGEudGFyZ2V0VHlwZV0pIGZvcmVpZ25LZXlWYWx1ZXNCeVR5cGVbbWV0YS50YXJnZXRUeXBlXSA9IFtdXG4gICAgICAgIGlmICghZm9yZWlnbktleVZhbHVlc0J5VHlwZVttZXRhLnRhcmdldFR5cGVdLmluY2x1ZGVzKG1ldGEuZm9yZWlnbktleVZhbHVlKSkgZm9yZWlnbktleVZhbHVlc0J5VHlwZVttZXRhLnRhcmdldFR5cGVdLnB1c2gobWV0YS5mb3JlaWduS2V5VmFsdWUpXG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgUmVjb3JkPG51bWJlciB8IHN0cmluZywgaW1wb3J0KFwiLi4vLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+Pn0gKi9cbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsc0J5VHlwZUFuZElkID0ge31cblxuICAgICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdPn0gKi9cbiAgICAgIGNvbnN0IHRhcmdldE1vZGVsc0J5Q2xhc3NOYW1lID0ge31cblxuICAgICAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdFtdfSAqL1xuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxzID0gW11cblxuICAgICAgZm9yIChjb25zdCB0YXJnZXRUeXBlIGluIGZvcmVpZ25LZXlWYWx1ZXNCeVR5cGUpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IGNvbmZpZ3VyYXRpb24uZ2V0TW9kZWxDbGFzcyh0YXJnZXRUeXBlKVxuXG4gICAgICAgIGF3YWl0IGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZCh0YXJnZXRNb2RlbENsYXNzLCBjb25maWd1cmF0aW9uKVxuXG4gICAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgICAgIGNvbnN0IHdoZXJlQXJncyA9IHt9XG5cbiAgICAgICAgd2hlcmVBcmdzW3ByaW1hcnlLZXldID0gZm9yZWlnbktleVZhbHVlc0J5VHlwZVt0YXJnZXRUeXBlXVxuXG4gICAgICAgIGxldCBxdWVyeSA9IHRhcmdldE1vZGVsQ2xhc3Mud2hlcmUod2hlcmVBcmdzKVxuXG4gICAgICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcblxuICAgICAgICBjb25zdCBmb3VuZFRhcmdldE1vZGVscyA9IGF3YWl0IHF1ZXJ5LnRvQXJyYXkoKVxuXG4gICAgICAgIHRhcmdldE1vZGVscy5wdXNoKC4uLmZvdW5kVGFyZ2V0TW9kZWxzKVxuICAgICAgICB0YXJnZXRNb2RlbHNCeUNsYXNzTmFtZVt0YXJnZXRNb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpXSA9IGZvdW5kVGFyZ2V0TW9kZWxzXG4gICAgICAgIHRhcmdldE1vZGVsc0J5VHlwZUFuZElkW3RhcmdldFR5cGVdID0ge31cblxuICAgICAgICBmb3IgKGNvbnN0IHRhcmdldE1vZGVsIG9mIGZvdW5kVGFyZ2V0TW9kZWxzKSB7XG4gICAgICAgICAgY29uc3QgcHJpbWFyeUtleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovICh0YXJnZXRNb2RlbC5yZWFkQ29sdW1uKHByaW1hcnlLZXkpKVxuXG4gICAgICAgICAgdGFyZ2V0TW9kZWxzQnlUeXBlQW5kSWRbdGFyZ2V0VHlwZV1bcHJpbWFyeUtleVZhbHVlXSA9IHRhcmdldE1vZGVsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBtZXRhIG9mIG1vZGVsTWV0YSkge1xuICAgICAgICBjb25zdCBtb2RlbFJlbGF0aW9uc2hpcCA9IG1ldGEubW9kZWwuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHRoaXMucmVsYXRpb25zaGlwLmdldFJlbGF0aW9uc2hpcE5hbWUoKSlcbiAgICAgICAgY29uc3QgdGFyZ2V0TW9kZWwgPSAobWV0YS50YXJnZXRUeXBlICYmIG1ldGEuZm9yZWlnbktleVZhbHVlICE9PSB1bmRlZmluZWQgJiYgbWV0YS5mb3JlaWduS2V5VmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgPyB0YXJnZXRNb2RlbHNCeVR5cGVBbmRJZFttZXRhLnRhcmdldFR5cGVdPy5bbWV0YS5mb3JlaWduS2V5VmFsdWVdXG4gICAgICAgICAgOiB1bmRlZmluZWRcblxuICAgICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRQcmVsb2FkZWQodHJ1ZSlcbiAgICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0TG9hZGVkKHRhcmdldE1vZGVsKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge3RhcmdldE1vZGVscywgdGFyZ2V0TW9kZWxzQnlDbGFzc05hbWV9XG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXIgfCBzdHJpbmc+fSAqL1xuICAgIGNvbnN0IGZvcmVpZ25LZXlWYWx1ZXMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLm1vZGVscykge1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSAqLyAobW9kZWwucmVhZENvbHVtbihmb3JlaWduS2V5KSlcblxuICAgICAgLy8gU2tpcCBudWxsL3VuZGVmaW5lZCBmb3JlaWduIGtleXM6IGEgYmVsb25nc1RvIHdpdGggbm8gZm9yZWlnbiBrZXkgaGFzIG5vXG4gICAgICAvLyB0YXJnZXQsIGFuZCBpbmNsdWRpbmcgdGhlbSB3b3VsZCBzZXJpYWxpemUgdG8gZS5nLiBgSU4gKG51bGwpYCB3aGljaFxuICAgICAgLy8gdGhyb3dzIG9uIG5vbi1zdHJpbmcgcHJpbWFyeS1rZXkgY29sdW1ucy5cbiAgICAgIGlmIChmb3JlaWduS2V5VmFsdWUgPT09IG51bGwgfHwgZm9yZWlnbktleVZhbHVlID09PSB1bmRlZmluZWQpIGNvbnRpbnVlXG5cbiAgICAgIGlmICghZm9yZWlnbktleVZhbHVlcy5pbmNsdWRlcyhmb3JlaWduS2V5VmFsdWUpKSBmb3JlaWduS2V5VmFsdWVzLnB1c2goZm9yZWlnbktleVZhbHVlKVxuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSB0aGlzLnJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcblxuICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKFwiTm8gdGFyZ2V0IG1vZGVsIGNsYXNzIGNvdWxkIGJlIGdvdHRlbiBmcm9tIHJlbGF0aW9uc2hpcFwiKVxuXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoXCIuLi8uLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59ICovXG4gICAgY29uc3QgdGFyZ2V0TW9kZWxzQnlJZCA9IHt9XG5cbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4uLy4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0W119ICovXG4gICAgbGV0IHRhcmdldE1vZGVscyA9IFtdXG5cbiAgICAvLyBPbmx5IHF1ZXJ5IHdoZW4gYXQgbGVhc3Qgb25lIG1vZGVsIGhhcyBhIG5vbi1udWxsIGZvcmVpZ24ga2V5LlxuICAgIGlmIChmb3JlaWduS2V5VmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGF3YWl0IGVuc3VyZU1vZGVsQ2xhc3NJbml0aWFsaXplZCh0YXJnZXRNb2RlbENsYXNzLCB0aGlzLnJlbGF0aW9uc2hpcC5nZXRDb25maWd1cmF0aW9uKCkpXG5cbiAgICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyPj59ICovXG4gICAgICBjb25zdCB3aGVyZUFyZ3MgPSB7fVxuXG4gICAgICB3aGVyZUFyZ3NbcHJpbWFyeUtleV0gPSBmb3JlaWduS2V5VmFsdWVzXG5cbiAgICAgIC8vIExvYWQgdGFyZ2V0IG1vZGVscyB0byBiZSBwcmVsb2FkZWQgb24gdGhlIGdpdmVuIG1vZGVsc1xuICAgICAgbGV0IHF1ZXJ5ID0gdGFyZ2V0TW9kZWxDbGFzcy53aGVyZSh3aGVyZUFyZ3MpXG5cbiAgICAgIHF1ZXJ5ID0gdGhpcy5yZWxhdGlvbnNoaXAuYXBwbHlTY29wZShxdWVyeSlcblxuICAgICAgdGFyZ2V0TW9kZWxzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgICAgIGZvciAoY29uc3QgdGFyZ2V0TW9kZWwgb2YgdGFyZ2V0TW9kZWxzKSB7XG4gICAgICAgIGNvbnN0IHByaW1hcnlLZXlWYWx1ZSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAodGFyZ2V0TW9kZWwucmVhZENvbHVtbih0aGlzLnJlbGF0aW9uc2hpcC5nZXRQcmltYXJ5S2V5KCkpKVxuXG4gICAgICAgIHRhcmdldE1vZGVsc0J5SWRbcHJpbWFyeUtleVZhbHVlXSA9IHRhcmdldE1vZGVsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSB0YXJnZXQgcHJlbG9hZGVkIG1vZGVscyBvbiB0aGUgZ2l2ZW4gbW9kZWxzXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLm1vZGVscykge1xuICAgICAgY29uc3QgZm9yZWlnbktleVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQ29sdW1uKGZvcmVpZ25LZXkpKVxuICAgICAgY29uc3QgdGFyZ2V0TW9kZWwgPSB0YXJnZXRNb2RlbHNCeUlkW2ZvcmVpZ25LZXlWYWx1ZV1cbiAgICAgIGNvbnN0IG1vZGVsUmVsYXRpb25zaGlwID0gbW9kZWwuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHRoaXMucmVsYXRpb25zaGlwLmdldFJlbGF0aW9uc2hpcE5hbWUoKSlcblxuICAgICAgbW9kZWxSZWxhdGlvbnNoaXAuc2V0UHJlbG9hZGVkKHRydWUpXG4gICAgICBtb2RlbFJlbGF0aW9uc2hpcC5zZXRMb2FkZWQodGFyZ2V0TW9kZWwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldE1vZGVsc1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers gap-less positional list callbacks on a model class to maintain
|
|
3
|
+
* a gap-less positional list. When a record is inserted, updated, or
|
|
4
|
+
* destroyed, the surrounding positions are shifted so the list stays compact
|
|
5
|
+
* (1,2,3,...) and scoped within the given column.
|
|
6
|
+
*
|
|
7
|
+
* Callers must also ensure a UNIQUE index on (scopeColumn, positionColumn)
|
|
8
|
+
* exists in the database schema — use `Migration.addActsAsList()` for the
|
|
9
|
+
* corresponding schema setup.
|
|
10
|
+
*
|
|
11
|
+
* @param {typeof import("./index.js").default} modelClass - The model class.
|
|
12
|
+
* @param {string} positionColumn - camelCase name of the position attribute (e.g. "rowNumber").
|
|
13
|
+
* @param {object} options - Options.
|
|
14
|
+
* @param {string} options.scope - camelCase name of the scope attribute (e.g. "boardColumnId").
|
|
15
|
+
* @returns {void}
|
|
16
|
+
*/
|
|
17
|
+
export default function registerActsAsListCallbacks(modelClass: typeof import("./index.js").default, positionColumn: string, { scope }: {
|
|
18
|
+
scope: string;
|
|
19
|
+
}): void;
|
|
20
|
+
//# sourceMappingURL=acts-as-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acts-as-list.d.ts","sourceRoot":"","sources":["../../../../src/database/record/acts-as-list.js"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;;;;GAeG;AACH,gEANW,cAAc,YAAY,EAAE,OAAO,kBACnC,MAAM,aAEd;IAAwB,KAAK,EAArB,MAAM;CACd,GAAU,IAAI,CA+EhB"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/** @file Registers gap-less positional list callbacks on a model class. */
|
|
3
|
+
import * as inflection from "inflection";
|
|
4
|
+
/** @type {symbol} - Guard flag set on the model instance during shift operations to prevent re-entrant lifecycle hooks. */
|
|
5
|
+
const ACTS_AS_LIST_SHIFTING = Symbol("actsAsListShifting");
|
|
6
|
+
/**
|
|
7
|
+
* @param {import("./index.js").default} record - Model instance.
|
|
8
|
+
* @param {boolean} value - Flag value.
|
|
9
|
+
*/
|
|
10
|
+
function setShiftingFlag(record, value) {
|
|
11
|
+
// @ts-ignore - Symbol indexing on Record instances
|
|
12
|
+
record[ACTS_AS_LIST_SHIFTING] = value;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* @param {import("./index.js").default} record - Model instance.
|
|
16
|
+
* @returns {boolean}
|
|
17
|
+
*/
|
|
18
|
+
function isShifting(record) {
|
|
19
|
+
// @ts-ignore - Symbol indexing on Record instances
|
|
20
|
+
return Boolean(record[ACTS_AS_LIST_SHIFTING]);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Registers gap-less positional list callbacks on a model class to maintain
|
|
24
|
+
* a gap-less positional list. When a record is inserted, updated, or
|
|
25
|
+
* destroyed, the surrounding positions are shifted so the list stays compact
|
|
26
|
+
* (1,2,3,...) and scoped within the given column.
|
|
27
|
+
*
|
|
28
|
+
* Callers must also ensure a UNIQUE index on (scopeColumn, positionColumn)
|
|
29
|
+
* exists in the database schema — use `Migration.addActsAsList()` for the
|
|
30
|
+
* corresponding schema setup.
|
|
31
|
+
*
|
|
32
|
+
* @param {typeof import("./index.js").default} modelClass - The model class.
|
|
33
|
+
* @param {string} positionColumn - camelCase name of the position attribute (e.g. "rowNumber").
|
|
34
|
+
* @param {object} options - Options.
|
|
35
|
+
* @param {string} options.scope - camelCase name of the scope attribute (e.g. "boardColumnId").
|
|
36
|
+
* @returns {void}
|
|
37
|
+
*/
|
|
38
|
+
export default function registerActsAsListCallbacks(modelClass, positionColumn, { scope }) {
|
|
39
|
+
modelClass.beforeCreate(async (record) => {
|
|
40
|
+
if (isShifting(record))
|
|
41
|
+
return;
|
|
42
|
+
const position = record.readAttribute(positionColumn);
|
|
43
|
+
if (position != null) {
|
|
44
|
+
await shiftPositionsUp({ record, positionColumn, scope, fromPosition: position });
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const nextPosition = await highestPositionInScope({ record, positionColumn, scope });
|
|
48
|
+
record.setAttribute(positionColumn, nextPosition + 1);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
modelClass.beforeUpdate(async (record) => {
|
|
52
|
+
if (isShifting(record))
|
|
53
|
+
return;
|
|
54
|
+
if (!record.isPersisted())
|
|
55
|
+
return;
|
|
56
|
+
const posColumn = inflection.underscore(positionColumn);
|
|
57
|
+
const scopeCol = inflection.underscore(scope);
|
|
58
|
+
const rawAttributes = /** @type {Record<string, any>} */ (record._attributes || {});
|
|
59
|
+
const changes = /** @type {Record<string, any>} */ (record._changes || {});
|
|
60
|
+
const posChanged = posColumn in changes;
|
|
61
|
+
const scopeChanged = scopeCol in changes;
|
|
62
|
+
if (!posChanged && !scopeChanged)
|
|
63
|
+
return;
|
|
64
|
+
const oldPosition = posChanged ? /** @type {number} */ (rawAttributes[posColumn]) : /** @type {number} */ (record.readAttribute(positionColumn));
|
|
65
|
+
const newPosition = posChanged ? /** @type {number} */ (changes[posColumn]) : /** @type {number} */ (record.readAttribute(positionColumn));
|
|
66
|
+
const oldScopeValue = scopeChanged ? /** @type {number} */ (rawAttributes[scopeCol]) : /** @type {number} */ (record.readAttribute(scope));
|
|
67
|
+
const newScopeValue = scopeChanged ? /** @type {number} */ (changes[scopeCol]) : /** @type {number} */ (record.readAttribute(scope));
|
|
68
|
+
if (oldPosition == null || newPosition == null)
|
|
69
|
+
return;
|
|
70
|
+
if (newPosition === oldPosition && newScopeValue === oldScopeValue)
|
|
71
|
+
return;
|
|
72
|
+
// Move the record out of the way before shifting others to avoid
|
|
73
|
+
// intermediate UNIQUE constraint violations. Use the old scope value
|
|
74
|
+
// for the move-out-of-way because the record is still in the old scope.
|
|
75
|
+
await moveOutOfWay({ record, positionColumn, scope, scopeValue: oldScopeValue });
|
|
76
|
+
setShiftingFlag(record, false);
|
|
77
|
+
if (scopeChanged && oldScopeValue !== newScopeValue) {
|
|
78
|
+
let targetPosition = newPosition;
|
|
79
|
+
// When only the scope changes without a new position, append to the
|
|
80
|
+
// end of the new scope.
|
|
81
|
+
if (!posChanged) {
|
|
82
|
+
const highestNew = await highestPositionInScope({ record, positionColumn, scope, scopeValue: newScopeValue });
|
|
83
|
+
const nextPos = highestNew + 1;
|
|
84
|
+
targetPosition = nextPos;
|
|
85
|
+
record.setAttribute(positionColumn, nextPos);
|
|
86
|
+
}
|
|
87
|
+
await shiftPositionsDown({ record, positionColumn, scope, scopeValue: oldScopeValue, fromPosition: oldPosition + 1 });
|
|
88
|
+
await shiftPositionsUp({ record, positionColumn, scope, scopeValue: newScopeValue, fromPosition: targetPosition });
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (newPosition < oldPosition) {
|
|
92
|
+
await shiftPositionsUp({ record, positionColumn, scope, fromPosition: newPosition, toPosition: oldPosition });
|
|
93
|
+
}
|
|
94
|
+
else if (newPosition > oldPosition) {
|
|
95
|
+
await shiftPositionsDown({ record, positionColumn, scope, fromPosition: oldPosition + 1, toPosition: newPosition + 1 });
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
modelClass.beforeDestroy(async (record) => {
|
|
99
|
+
const position = record.readAttribute(positionColumn);
|
|
100
|
+
if (position == null)
|
|
101
|
+
return;
|
|
102
|
+
await moveOutOfWay({ record, positionColumn, scope });
|
|
103
|
+
setShiftingFlag(record, false);
|
|
104
|
+
await shiftPositionsDown({ record, positionColumn, scope, fromPosition: position + 1 });
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Bumps positions UP by 1 in the range [fromPosition, toPosition) within the
|
|
109
|
+
* same scope. Updates in descending order to avoid intermediate UNIQUE
|
|
110
|
+
* constraint violations.
|
|
111
|
+
*
|
|
112
|
+
* @param {object} args - Arguments.
|
|
113
|
+
* @param {import("./index.js").default} args.record - The model instance whose scope is the source of truth.
|
|
114
|
+
* @param {string} args.positionColumn - camelCase position attribute name.
|
|
115
|
+
* @param {string} args.scope - camelCase scope attribute name.
|
|
116
|
+
* @param {number} args.fromPosition - Starting position (inclusive).
|
|
117
|
+
* @param {number} [args.toPosition] - Ending position (exclusive).
|
|
118
|
+
* @param {string | number} [args.scopeValue] - Explicit scope value.
|
|
119
|
+
* @returns {Promise<void>}
|
|
120
|
+
*/
|
|
121
|
+
async function shiftPositionsUp({ record, positionColumn, scope, fromPosition, toPosition, scopeValue }) {
|
|
122
|
+
const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
|
|
123
|
+
const connection = modelClass.connection();
|
|
124
|
+
const tableName = modelClass._getTable().getName();
|
|
125
|
+
const resolvedScopeValue = scopeValue != null ? scopeValue : resolveScopeValue(record, scope);
|
|
126
|
+
const scopeUnderscore = inflection.underscore(scope);
|
|
127
|
+
if (resolvedScopeValue == null)
|
|
128
|
+
return;
|
|
129
|
+
const positionUnderscore = inflection.underscore(positionColumn);
|
|
130
|
+
const positionColumnSql = connection.quoteColumn(positionUnderscore);
|
|
131
|
+
const scopeColumnSql = connection.quoteColumn(scopeUnderscore);
|
|
132
|
+
const tableSql = connection.quoteTable(tableName);
|
|
133
|
+
const quotedScope = connection.quote(resolvedScopeValue);
|
|
134
|
+
// Load rows in descending order so we bump the highest first
|
|
135
|
+
let query = modelClass
|
|
136
|
+
.select(positionColumn)
|
|
137
|
+
.where({ [scopeUnderscore]: resolvedScopeValue })
|
|
138
|
+
.where(`${positionColumnSql} >= ${connection.quote(fromPosition)}`)
|
|
139
|
+
.order(`${positionUnderscore} DESC`);
|
|
140
|
+
if (toPosition != null) {
|
|
141
|
+
query = query.where(`${positionColumnSql} < ${connection.quote(toPosition)}`);
|
|
142
|
+
}
|
|
143
|
+
const rows = await query.toArray();
|
|
144
|
+
setShiftingFlag(record, true);
|
|
145
|
+
try {
|
|
146
|
+
for (const row of rows) {
|
|
147
|
+
const currentPos = Number(row.readAttribute(positionColumn));
|
|
148
|
+
await connection.query(`UPDATE ${tableSql} SET ${positionColumnSql} = ${positionColumnSql} + 1 WHERE ${scopeColumnSql} = ${quotedScope} AND ${positionColumnSql} = ${connection.quote(currentPos)}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
setShiftingFlag(record, false);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Bumps positions DOWN by 1 in the range [fromPosition, toPosition) within
|
|
157
|
+
* the same scope. Updates in ascending order to avoid intermediate UNIQUE
|
|
158
|
+
* constraint violations.
|
|
159
|
+
*
|
|
160
|
+
* @param {object} args - Arguments.
|
|
161
|
+
* @param {import("./index.js").default} args.record - The model instance whose scope is the source of truth.
|
|
162
|
+
* @param {string} args.positionColumn - camelCase position attribute name.
|
|
163
|
+
* @param {string} args.scope - camelCase scope attribute name.
|
|
164
|
+
* @param {number} args.fromPosition - Starting position (inclusive).
|
|
165
|
+
* @param {number} [args.toPosition] - Ending position (exclusive).
|
|
166
|
+
* @param {string | number} [args.scopeValue] - Explicit scope value.
|
|
167
|
+
* @returns {Promise<void>}
|
|
168
|
+
*/
|
|
169
|
+
async function shiftPositionsDown({ record, positionColumn, scope, fromPosition, toPosition, scopeValue }) {
|
|
170
|
+
const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
|
|
171
|
+
const connection = modelClass.connection();
|
|
172
|
+
const tableName = modelClass._getTable().getName();
|
|
173
|
+
const resolvedScopeValue = scopeValue != null ? scopeValue : resolveScopeValue(record, scope);
|
|
174
|
+
const scopeUnderscore = inflection.underscore(scope);
|
|
175
|
+
if (resolvedScopeValue == null)
|
|
176
|
+
return;
|
|
177
|
+
const positionUnderscore = inflection.underscore(positionColumn);
|
|
178
|
+
const positionColumnSql = connection.quoteColumn(positionUnderscore);
|
|
179
|
+
const scopeColumnSql = connection.quoteColumn(scopeUnderscore);
|
|
180
|
+
const tableSql = connection.quoteTable(tableName);
|
|
181
|
+
const quotedScope = connection.quote(resolvedScopeValue);
|
|
182
|
+
// Load rows in ascending order so we shift the lowest gap first
|
|
183
|
+
let query = modelClass
|
|
184
|
+
.select(positionColumn)
|
|
185
|
+
.where({ [scopeUnderscore]: resolvedScopeValue })
|
|
186
|
+
.where(`${positionColumnSql} >= ${connection.quote(fromPosition)}`)
|
|
187
|
+
.order(positionUnderscore);
|
|
188
|
+
if (toPosition != null) {
|
|
189
|
+
query = query.where(`${positionColumnSql} < ${connection.quote(toPosition)}`);
|
|
190
|
+
}
|
|
191
|
+
const rows = await query.toArray();
|
|
192
|
+
setShiftingFlag(record, true);
|
|
193
|
+
try {
|
|
194
|
+
for (const row of rows) {
|
|
195
|
+
const currentPos = Number(row.readAttribute(positionColumn));
|
|
196
|
+
await connection.query(`UPDATE ${tableSql} SET ${positionColumnSql} = ${positionColumnSql} - 1 WHERE ${scopeColumnSql} = ${quotedScope} AND ${positionColumnSql} = ${connection.quote(currentPos)}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
finally {
|
|
200
|
+
setShiftingFlag(record, false);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Returns the highest current position value in the record's scope.
|
|
205
|
+
*
|
|
206
|
+
* @param {object} args - Arguments.
|
|
207
|
+
* @param {import("./index.js").default} args.record - The model instance whose scope is the source of truth.
|
|
208
|
+
* @param {string} args.positionColumn - camelCase position attribute name.
|
|
209
|
+
* @param {string} args.scope - camelCase scope attribute name.
|
|
210
|
+
* @param {string | number} [args.scopeValue] - Explicit scope value.
|
|
211
|
+
* @returns {Promise<number>} - Highest position in scope, or 0 when scope is empty.
|
|
212
|
+
*/
|
|
213
|
+
async function highestPositionInScope({ record, positionColumn, scope, scopeValue }) {
|
|
214
|
+
const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
|
|
215
|
+
const scopeUnderscore = inflection.underscore(scope);
|
|
216
|
+
const resolvedScopeValue = scopeValue != null ? scopeValue : resolveScopeValue(record, scope);
|
|
217
|
+
if (resolvedScopeValue == null)
|
|
218
|
+
return 0;
|
|
219
|
+
const rows = await modelClass
|
|
220
|
+
.select(positionColumn)
|
|
221
|
+
.where({ [scopeUnderscore]: resolvedScopeValue })
|
|
222
|
+
.order(`${positionColumn} DESC`)
|
|
223
|
+
.limit(1)
|
|
224
|
+
.toArray();
|
|
225
|
+
if (rows.length === 0)
|
|
226
|
+
return 0;
|
|
227
|
+
return Number(rows[0].readAttribute(positionColumn)) || 0;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Resolves a scope value from the attribute store first, then falls back
|
|
231
|
+
* to the loaded belongsTo relationship. This is needed during beforeCreate
|
|
232
|
+
* because the FK attribute may not be set until _createNewRecord flushes
|
|
233
|
+
* _belongsToChanges.
|
|
234
|
+
*
|
|
235
|
+
* @param {import("./index.js").default} record - Model instance.
|
|
236
|
+
* @param {string} scope - camelCase scope attribute name (e.g. "projectId").
|
|
237
|
+
* @returns {string | number | null}
|
|
238
|
+
*/
|
|
239
|
+
function resolveScopeValue(record, scope) {
|
|
240
|
+
const attrValue = record.readAttribute(scope);
|
|
241
|
+
if (attrValue != null)
|
|
242
|
+
return /** @type {string | number} */ (attrValue);
|
|
243
|
+
const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
|
|
244
|
+
const relationships = modelClass.getRelationshipsMap();
|
|
245
|
+
for (const relationshipName in relationships) {
|
|
246
|
+
const relationship = relationships[relationshipName];
|
|
247
|
+
if (relationship.getType?.() !== "belongsTo")
|
|
248
|
+
continue;
|
|
249
|
+
const foreignKey = inflection.camelize(relationship.getForeignKey(), true);
|
|
250
|
+
if (foreignKey !== scope)
|
|
251
|
+
continue;
|
|
252
|
+
const instanceRelationship = record.getRelationshipByName(relationshipName);
|
|
253
|
+
const loaded = instanceRelationship.loaded();
|
|
254
|
+
if (loaded && !Array.isArray(loaded) && typeof loaded.id === "function") {
|
|
255
|
+
return loaded.id();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Moves the record to a temporary position outside the normal range so
|
|
262
|
+
* that surrounding position shifts do not hit unique constraint violations.
|
|
263
|
+
*
|
|
264
|
+
* @param {object} args - Arguments.
|
|
265
|
+
* @param {import("./index.js").default} args.record - Model instance.
|
|
266
|
+
* @param {string} args.positionColumn - camelCase position attribute.
|
|
267
|
+
* @param {string} args.scope - camelCase scope attribute.
|
|
268
|
+
* @param {string | number | null} [args.scopeValue] - Explicit scope value (defaults to resolveScopeValue).
|
|
269
|
+
* @returns {Promise<void>}
|
|
270
|
+
*/
|
|
271
|
+
async function moveOutOfWay({ record, positionColumn, scope, scopeValue }) {
|
|
272
|
+
const modelClass = /** @type {typeof import("./index.js").default} */ (record.constructor);
|
|
273
|
+
const connection = modelClass.connection();
|
|
274
|
+
const tableName = modelClass._getTable().getName();
|
|
275
|
+
const resolvedScopeValue = scopeValue != null ? scopeValue : resolveScopeValue(record, scope);
|
|
276
|
+
if (resolvedScopeValue == null)
|
|
277
|
+
return;
|
|
278
|
+
const highest = await highestPositionInScope({ record, positionColumn, scope, scopeValue: resolvedScopeValue });
|
|
279
|
+
const tempPosition = highest + 10000;
|
|
280
|
+
const positionColumnSql = connection.quoteColumn(inflection.underscore(positionColumn));
|
|
281
|
+
const scopeColumnSql = connection.quoteColumn(inflection.underscore(scope));
|
|
282
|
+
const tableSql = connection.quoteTable(tableName);
|
|
283
|
+
const pkSql = connection.quoteColumn("id");
|
|
284
|
+
setShiftingFlag(record, true);
|
|
285
|
+
try {
|
|
286
|
+
await connection.query(`UPDATE ${tableSql} SET ${positionColumnSql} = ${connection.quote(tempPosition)} WHERE ${scopeColumnSql} = ${connection.quote(resolvedScopeValue)} AND ${pkSql} = ${connection.quote(record.id())}`);
|
|
287
|
+
}
|
|
288
|
+
finally {
|
|
289
|
+
// Don't clear the flag here — the caller will do that after shifts
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0cy1hcy1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3JlY29yZC9hY3RzLWFzLWxpc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLDJFQUEyRTtBQUUzRSxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUV4QywySEFBMkg7QUFDM0gsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtBQUUxRDs7O0dBR0c7QUFDSCxTQUFTLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSztJQUNwQyxtREFBbUQ7SUFDbkQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsS0FBSyxDQUFBO0FBQ3ZDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLFVBQVUsQ0FBQyxNQUFNO0lBQ3hCLG1EQUFtRDtJQUNuRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFBO0FBQy9DLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsT0FBTyxVQUFVLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsRUFBQyxLQUFLLEVBQUM7SUFDckYsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDdkMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTTtRQUU5QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBRXJELElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sZ0JBQWdCLENBQUMsRUFBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQTtRQUNqRixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sWUFBWSxHQUFHLE1B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LElBQUk7UUFBRSxPQUFNO0lBRXRDLE1BQU0sT0FBTyxHQUFHLE1BQU0sc0JBQXNCLENBQUMsRUFBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFBO0lBQzdHLE1BQU0sWUFBWSxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUE7SUFDcEMsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtJQUN2RixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUMzRSxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFMUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUU3QixJQUFJLENBQUM7UUFDSCxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQ3BCLFVBQVUsUUFBUSxRQUFRLGlCQUFpQixNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsY0FBYyxNQUFNLFVBQVUsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsUUFBUSxLQUFLLE1BQU0sVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUNwTSxDQUFBO0lBQ0gsQ0FBQztZQUFTLENBQUM7UUFDVCxtRUFBbUU7SUFDckUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEBmaWxlIFJlZ2lzdGVycyBnYXAtbGVzcyBwb3NpdGlvbmFsIGxpc3QgY2FsbGJhY2tzIG9uIGEgbW9kZWwgY2xhc3MuICovXG5cbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuXG4vKiogQHR5cGUge3N5bWJvbH0gLSBHdWFyZCBmbGFnIHNldCBvbiB0aGUgbW9kZWwgaW5zdGFuY2UgZHVyaW5nIHNoaWZ0IG9wZXJhdGlvbnMgdG8gcHJldmVudCByZS1lbnRyYW50IGxpZmVjeWNsZSBob29rcy4gKi9cbmNvbnN0IEFDVFNfQVNfTElTVF9TSElGVElORyA9IFN5bWJvbChcImFjdHNBc0xpc3RTaGlmdGluZ1wiKVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSByZWNvcmQgLSBNb2RlbCBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmFsdWUgLSBGbGFnIHZhbHVlLlxuICovXG5mdW5jdGlvbiBzZXRTaGlmdGluZ0ZsYWcocmVjb3JkLCB2YWx1ZSkge1xuICAvLyBAdHMtaWdub3JlIC0gU3ltYm9sIGluZGV4aW5nIG9uIFJlY29yZCBpbnN0YW5jZXNcbiAgcmVjb3JkW0FDVFNfQVNfTElTVF9TSElGVElOR10gPSB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSByZWNvcmQgLSBNb2RlbCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc1NoaWZ0aW5nKHJlY29yZCkge1xuICAvLyBAdHMtaWdub3JlIC0gU3ltYm9sIGluZGV4aW5nIG9uIFJlY29yZCBpbnN0YW5jZXNcbiAgcmV0dXJuIEJvb2xlYW4ocmVjb3JkW0FDVFNfQVNfTElTVF9TSElGVElOR10pXG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGdhcC1sZXNzIHBvc2l0aW9uYWwgbGlzdCBjYWxsYmFja3Mgb24gYSBtb2RlbCBjbGFzcyB0byBtYWludGFpblxuICogYSBnYXAtbGVzcyBwb3NpdGlvbmFsIGxpc3QuIFdoZW4gYSByZWNvcmQgaXMgaW5zZXJ0ZWQsIHVwZGF0ZWQsIG9yXG4gKiBkZXN0cm95ZWQsIHRoZSBzdXJyb3VuZGluZyBwb3NpdGlvbnMgYXJlIHNoaWZ0ZWQgc28gdGhlIGxpc3Qgc3RheXMgY29tcGFjdFxuICogKDEsMiwzLC4uLikgYW5kIHNjb3BlZCB3aXRoaW4gdGhlIGdpdmVuIGNvbHVtbi5cbiAqXG4gKiBDYWxsZXJzIG11c3QgYWxzbyBlbnN1cmUgYSBVTklRVUUgaW5kZXggb24gKHNjb3BlQ29sdW1uLCBwb3NpdGlvbkNvbHVtbilcbiAqIGV4aXN0cyBpbiB0aGUgZGF0YWJhc2Ugc2NoZW1hIOKAlCB1c2UgYE1pZ3JhdGlvbi5hZGRBY3RzQXNMaXN0KClgIGZvciB0aGVcbiAqIGNvcnJlc3BvbmRpbmcgc2NoZW1hIHNldHVwLlxuICpcbiAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIFRoZSBtb2RlbCBjbGFzcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwb3NpdGlvbkNvbHVtbiAtIGNhbWVsQ2FzZSBuYW1lIG9mIHRoZSBwb3NpdGlvbiBhdHRyaWJ1dGUgKGUuZy4gXCJyb3dOdW1iZXJcIikuXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIE9wdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zY29wZSAtIGNhbWVsQ2FzZSBuYW1lIG9mIHRoZSBzY29wZSBhdHRyaWJ1dGUgKGUuZy4gXCJib2FyZENvbHVtbklkXCIpLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlZ2lzdGVyQWN0c0FzTGlzdENhbGxiYWNrcyhtb2RlbENsYXNzLCBwb3NpdGlvbkNvbHVtbiwge3Njb3BlfSkge1xuICBtb2RlbENsYXNzLmJlZm9yZUNyZWF0ZShhc3luYyAocmVjb3JkKSA9PiB7XG4gICAgaWYgKGlzU2hpZnRpbmcocmVjb3JkKSkgcmV0dXJuXG5cbiAgICBjb25zdCBwb3NpdGlvbiA9IHJlY29yZC5yZWFkQXR0cmlidXRlKHBvc2l0aW9uQ29sdW1uKVxuXG4gICAgaWYgKHBvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgIGF3YWl0IHNoaWZ0UG9zaXRpb25zVXAoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb246IHBvc2l0aW9ufSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uID0gYXdhaXQgaGlnaGVzdFBvc2l0aW9uSW5TY29wZSh7cmVjb3JkLCBwb3NpdGlvbkNvbHVtbiwgc2NvcGV9KVxuXG4gICAgICByZWNvcmQuc2V0QXR0cmlidXRlKHBvc2l0aW9uQ29sdW1uLCBuZXh0UG9zaXRpb24gKyAxKVxuICAgIH1cbiAgfSlcblxuICBtb2RlbENsYXNzLmJlZm9yZVVwZGF0ZShhc3luYyAocmVjb3JkKSA9PiB7XG4gICAgaWYgKGlzU2hpZnRpbmcocmVjb3JkKSkgcmV0dXJuXG4gICAgaWYgKCFyZWNvcmQuaXNQZXJzaXN0ZWQoKSkgcmV0dXJuXG5cbiAgICBjb25zdCBwb3NDb2x1bW4gPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocG9zaXRpb25Db2x1bW4pXG4gICAgY29uc3Qgc2NvcGVDb2wgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoc2NvcGUpXG4gICAgY29uc3QgcmF3QXR0cmlidXRlcyA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgYW55Pn0gKi8gKHJlY29yZC5fYXR0cmlidXRlcyB8fCB7fSlcbiAgICBjb25zdCBjaGFuZ2VzID0gLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqLyAocmVjb3JkLl9jaGFuZ2VzIHx8IHt9KVxuICAgIGNvbnN0IHBvc0NoYW5nZWQgPSBwb3NDb2x1bW4gaW4gY2hhbmdlc1xuICAgIGNvbnN0IHNjb3BlQ2hhbmdlZCA9IHNjb3BlQ29sIGluIGNoYW5nZXNcblxuICAgIGlmICghcG9zQ2hhbmdlZCAmJiAhc2NvcGVDaGFuZ2VkKSByZXR1cm5cblxuICAgIGNvbnN0IG9sZFBvc2l0aW9uID0gcG9zQ2hhbmdlZCA/IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmF3QXR0cmlidXRlc1twb3NDb2x1bW5dKSA6IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVjb3JkLnJlYWRBdHRyaWJ1dGUocG9zaXRpb25Db2x1bW4pKVxuICAgIGNvbnN0IG5ld1Bvc2l0aW9uID0gcG9zQ2hhbmdlZCA/IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAoY2hhbmdlc1twb3NDb2x1bW5dKSA6IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVjb3JkLnJlYWRBdHRyaWJ1dGUocG9zaXRpb25Db2x1bW4pKVxuICAgIGNvbnN0IG9sZFNjb3BlVmFsdWUgPSBzY29wZUNoYW5nZWQgPyAvKiogQHR5cGUge251bWJlcn0gKi8gKHJhd0F0dHJpYnV0ZXNbc2NvcGVDb2xdKSA6IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVjb3JkLnJlYWRBdHRyaWJ1dGUoc2NvcGUpKVxuICAgIGNvbnN0IG5ld1Njb3BlVmFsdWUgPSBzY29wZUNoYW5nZWQgPyAvKiogQHR5cGUge251bWJlcn0gKi8gKGNoYW5nZXNbc2NvcGVDb2xdKSA6IC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAocmVjb3JkLnJlYWRBdHRyaWJ1dGUoc2NvcGUpKVxuXG4gICAgaWYgKG9sZFBvc2l0aW9uID09IG51bGwgfHwgbmV3UG9zaXRpb24gPT0gbnVsbCkgcmV0dXJuXG4gICAgaWYgKG5ld1Bvc2l0aW9uID09PSBvbGRQb3NpdGlvbiAmJiBuZXdTY29wZVZhbHVlID09PSBvbGRTY29wZVZhbHVlKSByZXR1cm5cblxuICAgIC8vIE1vdmUgdGhlIHJlY29yZCBvdXQgb2YgdGhlIHdheSBiZWZvcmUgc2hpZnRpbmcgb3RoZXJzIHRvIGF2b2lkXG4gICAgLy8gaW50ZXJtZWRpYXRlIFVOSVFVRSBjb25zdHJhaW50IHZpb2xhdGlvbnMuIFVzZSB0aGUgb2xkIHNjb3BlIHZhbHVlXG4gICAgLy8gZm9yIHRoZSBtb3ZlLW91dC1vZi13YXkgYmVjYXVzZSB0aGUgcmVjb3JkIGlzIHN0aWxsIGluIHRoZSBvbGQgc2NvcGUuXG4gICAgYXdhaXQgbW92ZU91dE9mV2F5KHtyZWNvcmQsIHBvc2l0aW9uQ29sdW1uLCBzY29wZSwgc2NvcGVWYWx1ZTogb2xkU2NvcGVWYWx1ZX0pXG4gICAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgZmFsc2UpXG5cbiAgICBpZiAoc2NvcGVDaGFuZ2VkICYmIG9sZFNjb3BlVmFsdWUgIT09IG5ld1Njb3BlVmFsdWUpIHtcbiAgICAgIGxldCB0YXJnZXRQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uXG5cbiAgICAgIC8vIFdoZW4gb25seSB0aGUgc2NvcGUgY2hhbmdlcyB3aXRob3V0IGEgbmV3IHBvc2l0aW9uLCBhcHBlbmQgdG8gdGhlXG4gICAgICAvLyBlbmQgb2YgdGhlIG5ldyBzY29wZS5cbiAgICAgIGlmICghcG9zQ2hhbmdlZCkge1xuICAgICAgICBjb25zdCBoaWdoZXN0TmV3ID0gYXdhaXQgaGlnaGVzdFBvc2l0aW9uSW5TY29wZSh7cmVjb3JkLCBwb3NpdGlvbkNvbHVtbiwgc2NvcGUsIHNjb3BlVmFsdWU6IG5ld1Njb3BlVmFsdWV9KVxuICAgICAgICBjb25zdCBuZXh0UG9zID0gaGlnaGVzdE5ldyArIDFcblxuICAgICAgICB0YXJnZXRQb3NpdGlvbiA9IG5leHRQb3NcbiAgICAgICAgcmVjb3JkLnNldEF0dHJpYnV0ZShwb3NpdGlvbkNvbHVtbiwgbmV4dFBvcylcbiAgICAgIH1cblxuICAgICAgYXdhaXQgc2hpZnRQb3NpdGlvbnNEb3duKHtyZWNvcmQsIHBvc2l0aW9uQ29sdW1uLCBzY29wZSwgc2NvcGVWYWx1ZTogb2xkU2NvcGVWYWx1ZSwgZnJvbVBvc2l0aW9uOiBvbGRQb3NpdGlvbiArIDF9KVxuICAgICAgYXdhaXQgc2hpZnRQb3NpdGlvbnNVcCh7cmVjb3JkLCBwb3NpdGlvbkNvbHVtbiwgc2NvcGUsIHNjb3BlVmFsdWU6IG5ld1Njb3BlVmFsdWUsIGZyb21Qb3NpdGlvbjogdGFyZ2V0UG9zaXRpb259KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG5ld1Bvc2l0aW9uIDwgb2xkUG9zaXRpb24pIHtcbiAgICAgIGF3YWl0IHNoaWZ0UG9zaXRpb25zVXAoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb246IG5ld1Bvc2l0aW9uLCB0b1Bvc2l0aW9uOiBvbGRQb3NpdGlvbn0pXG4gICAgfSBlbHNlIGlmIChuZXdQb3NpdGlvbiA+IG9sZFBvc2l0aW9uKSB7XG4gICAgICBhd2FpdCBzaGlmdFBvc2l0aW9uc0Rvd24oe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb246IG9sZFBvc2l0aW9uICsgMSwgdG9Qb3NpdGlvbjogbmV3UG9zaXRpb24gKyAxfSlcbiAgICB9XG4gIH0pXG5cbiAgbW9kZWxDbGFzcy5iZWZvcmVEZXN0cm95KGFzeW5jIChyZWNvcmQpID0+IHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHJlY29yZC5yZWFkQXR0cmlidXRlKHBvc2l0aW9uQ29sdW1uKVxuXG4gICAgaWYgKHBvc2l0aW9uID09IG51bGwpIHJldHVyblxuXG4gICAgYXdhaXQgbW92ZU91dE9mV2F5KHtyZWNvcmQsIHBvc2l0aW9uQ29sdW1uLCBzY29wZX0pXG4gICAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgZmFsc2UpXG5cbiAgICBhd2FpdCBzaGlmdFBvc2l0aW9uc0Rvd24oe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb246IHBvc2l0aW9uICsgMX0pXG4gIH0pXG59XG5cbi8qKlxuICogQnVtcHMgcG9zaXRpb25zIFVQIGJ5IDEgaW4gdGhlIHJhbmdlIFtmcm9tUG9zaXRpb24sIHRvUG9zaXRpb24pIHdpdGhpbiB0aGVcbiAqIHNhbWUgc2NvcGUuIFVwZGF0ZXMgaW4gZGVzY2VuZGluZyBvcmRlciB0byBhdm9pZCBpbnRlcm1lZGlhdGUgVU5JUVVFXG4gKiBjb25zdHJhaW50IHZpb2xhdGlvbnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmd1bWVudHMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5yZWNvcmQgLSBUaGUgbW9kZWwgaW5zdGFuY2Ugd2hvc2Ugc2NvcGUgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnBvc2l0aW9uQ29sdW1uIC0gY2FtZWxDYXNlIHBvc2l0aW9uIGF0dHJpYnV0ZSBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc2NvcGUgLSBjYW1lbENhc2Ugc2NvcGUgYXR0cmlidXRlIG5hbWUuXG4gKiBAcGFyYW0ge251bWJlcn0gYXJncy5mcm9tUG9zaXRpb24gLSBTdGFydGluZyBwb3NpdGlvbiAoaW5jbHVzaXZlKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy50b1Bvc2l0aW9uXSAtIEVuZGluZyBwb3NpdGlvbiAoZXhjbHVzaXZlKS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbYXJncy5zY29wZVZhbHVlXSAtIEV4cGxpY2l0IHNjb3BlIHZhbHVlLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNoaWZ0UG9zaXRpb25zVXAoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBmcm9tUG9zaXRpb24sIHRvUG9zaXRpb24sIHNjb3BlVmFsdWV9KSB7XG4gIGNvbnN0IG1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuL2luZGV4LmpzXCIpLmRlZmF1bHR9ICovIChyZWNvcmQuY29uc3RydWN0b3IpXG4gIGNvbnN0IGNvbm5lY3Rpb24gPSBtb2RlbENsYXNzLmNvbm5lY3Rpb24oKVxuICBjb25zdCB0YWJsZU5hbWUgPSBtb2RlbENsYXNzLl9nZXRUYWJsZSgpLmdldE5hbWUoKVxuICBjb25zdCByZXNvbHZlZFNjb3BlVmFsdWUgPSBzY29wZVZhbHVlICE9IG51bGwgPyBzY29wZVZhbHVlIDogcmVzb2x2ZVNjb3BlVmFsdWUocmVjb3JkLCBzY29wZSlcbiAgY29uc3Qgc2NvcGVVbmRlcnNjb3JlID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHNjb3BlKVxuXG4gIGlmIChyZXNvbHZlZFNjb3BlVmFsdWUgPT0gbnVsbCkgcmV0dXJuXG5cbiAgY29uc3QgcG9zaXRpb25VbmRlcnNjb3JlID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHBvc2l0aW9uQ29sdW1uKVxuICBjb25zdCBwb3NpdGlvbkNvbHVtblNxbCA9IGNvbm5lY3Rpb24ucXVvdGVDb2x1bW4ocG9zaXRpb25VbmRlcnNjb3JlKVxuICBjb25zdCBzY29wZUNvbHVtblNxbCA9IGNvbm5lY3Rpb24ucXVvdGVDb2x1bW4oc2NvcGVVbmRlcnNjb3JlKVxuICBjb25zdCB0YWJsZVNxbCA9IGNvbm5lY3Rpb24ucXVvdGVUYWJsZSh0YWJsZU5hbWUpXG4gIGNvbnN0IHF1b3RlZFNjb3BlID0gY29ubmVjdGlvbi5xdW90ZShyZXNvbHZlZFNjb3BlVmFsdWUpXG5cbiAgLy8gTG9hZCByb3dzIGluIGRlc2NlbmRpbmcgb3JkZXIgc28gd2UgYnVtcCB0aGUgaGlnaGVzdCBmaXJzdFxuICBsZXQgcXVlcnkgPSBtb2RlbENsYXNzXG4gICAgLnNlbGVjdChwb3NpdGlvbkNvbHVtbilcbiAgICAud2hlcmUoe1tzY29wZVVuZGVyc2NvcmVdOiByZXNvbHZlZFNjb3BlVmFsdWV9KVxuICAgIC53aGVyZShgJHtwb3NpdGlvbkNvbHVtblNxbH0gPj0gJHtjb25uZWN0aW9uLnF1b3RlKGZyb21Qb3NpdGlvbil9YClcbiAgICAub3JkZXIoYCR7cG9zaXRpb25VbmRlcnNjb3JlfSBERVNDYClcblxuICBpZiAodG9Qb3NpdGlvbiAhPSBudWxsKSB7XG4gICAgcXVlcnkgPSBxdWVyeS53aGVyZShgJHtwb3NpdGlvbkNvbHVtblNxbH0gPCAke2Nvbm5lY3Rpb24ucXVvdGUodG9Qb3NpdGlvbil9YClcbiAgfVxuXG4gIGNvbnN0IHJvd3MgPSBhd2FpdCBxdWVyeS50b0FycmF5KClcblxuICBzZXRTaGlmdGluZ0ZsYWcocmVjb3JkLCB0cnVlKVxuXG4gIHRyeSB7XG4gICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgY29uc3QgY3VycmVudFBvcyA9IE51bWJlcihyb3cucmVhZEF0dHJpYnV0ZShwb3NpdGlvbkNvbHVtbikpXG5cbiAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICAgIGBVUERBVEUgJHt0YWJsZVNxbH0gU0VUICR7cG9zaXRpb25Db2x1bW5TcWx9ID0gJHtwb3NpdGlvbkNvbHVtblNxbH0gKyAxIFdIRVJFICR7c2NvcGVDb2x1bW5TcWx9ID0gJHtxdW90ZWRTY29wZX0gQU5EICR7cG9zaXRpb25Db2x1bW5TcWx9ID0gJHtjb25uZWN0aW9uLnF1b3RlKGN1cnJlbnRQb3MpfWBcbiAgICAgIClcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgZmFsc2UpXG4gIH1cbn1cblxuLyoqXG4gKiBCdW1wcyBwb3NpdGlvbnMgRE9XTiBieSAxIGluIHRoZSByYW5nZSBbZnJvbVBvc2l0aW9uLCB0b1Bvc2l0aW9uKSB3aXRoaW5cbiAqIHRoZSBzYW1lIHNjb3BlLiBVcGRhdGVzIGluIGFzY2VuZGluZyBvcmRlciB0byBhdm9pZCBpbnRlcm1lZGlhdGUgVU5JUVVFXG4gKiBjb25zdHJhaW50IHZpb2xhdGlvbnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBBcmd1bWVudHMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5yZWNvcmQgLSBUaGUgbW9kZWwgaW5zdGFuY2Ugd2hvc2Ugc2NvcGUgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnBvc2l0aW9uQ29sdW1uIC0gY2FtZWxDYXNlIHBvc2l0aW9uIGF0dHJpYnV0ZSBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc2NvcGUgLSBjYW1lbENhc2Ugc2NvcGUgYXR0cmlidXRlIG5hbWUuXG4gKiBAcGFyYW0ge251bWJlcn0gYXJncy5mcm9tUG9zaXRpb24gLSBTdGFydGluZyBwb3NpdGlvbiAoaW5jbHVzaXZlKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy50b1Bvc2l0aW9uXSAtIEVuZGluZyBwb3NpdGlvbiAoZXhjbHVzaXZlKS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbYXJncy5zY29wZVZhbHVlXSAtIEV4cGxpY2l0IHNjb3BlIHZhbHVlLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNoaWZ0UG9zaXRpb25zRG93bih7cmVjb3JkLCBwb3NpdGlvbkNvbHVtbiwgc2NvcGUsIGZyb21Qb3NpdGlvbiwgdG9Qb3NpdGlvbiwgc2NvcGVWYWx1ZX0pIHtcbiAgY29uc3QgbW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gKi8gKHJlY29yZC5jb25zdHJ1Y3RvcilcbiAgY29uc3QgY29ubmVjdGlvbiA9IG1vZGVsQ2xhc3MuY29ubmVjdGlvbigpXG4gIGNvbnN0IHRhYmxlTmFtZSA9IG1vZGVsQ2xhc3MuX2dldFRhYmxlKCkuZ2V0TmFtZSgpXG4gIGNvbnN0IHJlc29sdmVkU2NvcGVWYWx1ZSA9IHNjb3BlVmFsdWUgIT0gbnVsbCA/IHNjb3BlVmFsdWUgOiByZXNvbHZlU2NvcGVWYWx1ZShyZWNvcmQsIHNjb3BlKVxuICBjb25zdCBzY29wZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoc2NvcGUpXG5cbiAgaWYgKHJlc29sdmVkU2NvcGVWYWx1ZSA9PSBudWxsKSByZXR1cm5cblxuICBjb25zdCBwb3NpdGlvblVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocG9zaXRpb25Db2x1bW4pXG4gIGNvbnN0IHBvc2l0aW9uQ29sdW1uU3FsID0gY29ubmVjdGlvbi5xdW90ZUNvbHVtbihwb3NpdGlvblVuZGVyc2NvcmUpXG4gIGNvbnN0IHNjb3BlQ29sdW1uU3FsID0gY29ubmVjdGlvbi5xdW90ZUNvbHVtbihzY29wZVVuZGVyc2NvcmUpXG4gIGNvbnN0IHRhYmxlU3FsID0gY29ubmVjdGlvbi5xdW90ZVRhYmxlKHRhYmxlTmFtZSlcbiAgY29uc3QgcXVvdGVkU2NvcGUgPSBjb25uZWN0aW9uLnF1b3RlKHJlc29sdmVkU2NvcGVWYWx1ZSlcblxuICAvLyBMb2FkIHJvd3MgaW4gYXNjZW5kaW5nIG9yZGVyIHNvIHdlIHNoaWZ0IHRoZSBsb3dlc3QgZ2FwIGZpcnN0XG4gIGxldCBxdWVyeSA9IG1vZGVsQ2xhc3NcbiAgICAuc2VsZWN0KHBvc2l0aW9uQ29sdW1uKVxuICAgIC53aGVyZSh7W3Njb3BlVW5kZXJzY29yZV06IHJlc29sdmVkU2NvcGVWYWx1ZX0pXG4gICAgLndoZXJlKGAke3Bvc2l0aW9uQ29sdW1uU3FsfSA+PSAke2Nvbm5lY3Rpb24ucXVvdGUoZnJvbVBvc2l0aW9uKX1gKVxuICAgIC5vcmRlcihwb3NpdGlvblVuZGVyc2NvcmUpXG5cbiAgaWYgKHRvUG9zaXRpb24gIT0gbnVsbCkge1xuICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUoYCR7cG9zaXRpb25Db2x1bW5TcWx9IDwgJHtjb25uZWN0aW9uLnF1b3RlKHRvUG9zaXRpb24pfWApXG4gIH1cblxuICBjb25zdCByb3dzID0gYXdhaXQgcXVlcnkudG9BcnJheSgpXG5cbiAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgdHJ1ZSlcblxuICB0cnkge1xuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQb3MgPSBOdW1iZXIocm93LnJlYWRBdHRyaWJ1dGUocG9zaXRpb25Db2x1bW4pKVxuXG4gICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KFxuICAgICAgICBgVVBEQVRFICR7dGFibGVTcWx9IFNFVCAke3Bvc2l0aW9uQ29sdW1uU3FsfSA9ICR7cG9zaXRpb25Db2x1bW5TcWx9IC0gMSBXSEVSRSAke3Njb3BlQ29sdW1uU3FsfSA9ICR7cXVvdGVkU2NvcGV9IEFORCAke3Bvc2l0aW9uQ29sdW1uU3FsfSA9ICR7Y29ubmVjdGlvbi5xdW90ZShjdXJyZW50UG9zKX1gXG4gICAgICApXG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHNldFNoaWZ0aW5nRmxhZyhyZWNvcmQsIGZhbHNlKVxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaGlnaGVzdCBjdXJyZW50IHBvc2l0aW9uIHZhbHVlIGluIHRoZSByZWNvcmQncyBzY29wZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIEFyZ3VtZW50cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlY29yZCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB3aG9zZSBzY29wZSBpcyB0aGUgc291cmNlIG9mIHRydXRoLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucG9zaXRpb25Db2x1bW4gLSBjYW1lbENhc2UgcG9zaXRpb24gYXR0cmlidXRlIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5zY29wZSAtIGNhbWVsQ2FzZSBzY29wZSBhdHRyaWJ1dGUgbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbYXJncy5zY29wZVZhbHVlXSAtIEV4cGxpY2l0IHNjb3BlIHZhbHVlLlxuICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyPn0gLSBIaWdoZXN0IHBvc2l0aW9uIGluIHNjb3BlLCBvciAwIHdoZW4gc2NvcGUgaXMgZW1wdHkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGhpZ2hlc3RQb3NpdGlvbkluU2NvcGUoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBzY29wZVZhbHVlfSkge1xuICBjb25zdCBtb2RlbENsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAocmVjb3JkLmNvbnN0cnVjdG9yKVxuICBjb25zdCBzY29wZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoc2NvcGUpXG4gIGNvbnN0IHJlc29sdmVkU2NvcGVWYWx1ZSA9IHNjb3BlVmFsdWUgIT0gbnVsbCA/IHNjb3BlVmFsdWUgOiByZXNvbHZlU2NvcGVWYWx1ZShyZWNvcmQsIHNjb3BlKVxuXG4gIGlmIChyZXNvbHZlZFNjb3BlVmFsdWUgPT0gbnVsbCkgcmV0dXJuIDBcblxuICBjb25zdCByb3dzID0gYXdhaXQgbW9kZWxDbGFzc1xuICAgIC5zZWxlY3QocG9zaXRpb25Db2x1bW4pXG4gICAgLndoZXJlKHtbc2NvcGVVbmRlcnNjb3JlXTogcmVzb2x2ZWRTY29wZVZhbHVlfSlcbiAgICAub3JkZXIoYCR7cG9zaXRpb25Db2x1bW59IERFU0NgKVxuICAgIC5saW1pdCgxKVxuICAgIC50b0FycmF5KClcblxuICBpZiAocm93cy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgcmV0dXJuIE51bWJlcihyb3dzWzBdLnJlYWRBdHRyaWJ1dGUocG9zaXRpb25Db2x1bW4pKSB8fCAwXG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBzY29wZSB2YWx1ZSBmcm9tIHRoZSBhdHRyaWJ1dGUgc3RvcmUgZmlyc3QsIHRoZW4gZmFsbHMgYmFja1xuICogdG8gdGhlIGxvYWRlZCBiZWxvbmdzVG8gcmVsYXRpb25zaGlwLiBUaGlzIGlzIG5lZWRlZCBkdXJpbmcgYmVmb3JlQ3JlYXRlXG4gKiBiZWNhdXNlIHRoZSBGSyBhdHRyaWJ1dGUgbWF5IG5vdCBiZSBzZXQgdW50aWwgX2NyZWF0ZU5ld1JlY29yZCBmbHVzaGVzXG4gKiBfYmVsb25nc1RvQ2hhbmdlcy5cbiAqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gcmVjb3JkIC0gTW9kZWwgaW5zdGFuY2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2NvcGUgLSBjYW1lbENhc2Ugc2NvcGUgYXR0cmlidXRlIG5hbWUgKGUuZy4gXCJwcm9qZWN0SWRcIikuXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVtYmVyIHwgbnVsbH1cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNjb3BlVmFsdWUocmVjb3JkLCBzY29wZSkge1xuICBjb25zdCBhdHRyVmFsdWUgPSByZWNvcmQucmVhZEF0dHJpYnV0ZShzY29wZSlcblxuICBpZiAoYXR0clZhbHVlICE9IG51bGwpIHJldHVybiAvKiogQHR5cGUge3N0cmluZyB8IG51bWJlcn0gKi8gKGF0dHJWYWx1ZSlcblxuICBjb25zdCBtb2RlbENsYXNzID0gLyoqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAocmVjb3JkLmNvbnN0cnVjdG9yKVxuICBjb25zdCByZWxhdGlvbnNoaXBzID0gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBzTWFwKClcblxuICBmb3IgKGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgaW4gcmVsYXRpb25zaGlwcykge1xuICAgIGNvbnN0IHJlbGF0aW9uc2hpcCA9IHJlbGF0aW9uc2hpcHNbcmVsYXRpb25zaGlwTmFtZV1cblxuICAgIGlmIChyZWxhdGlvbnNoaXAuZ2V0VHlwZT8uKCkgIT09IFwiYmVsb25nc1RvXCIpIGNvbnRpbnVlXG5cbiAgICBjb25zdCBmb3JlaWduS2V5ID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShyZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpLCB0cnVlKVxuXG4gICAgaWYgKGZvcmVpZ25LZXkgIT09IHNjb3BlKSBjb250aW51ZVxuXG4gICAgY29uc3QgaW5zdGFuY2VSZWxhdGlvbnNoaXAgPSByZWNvcmQuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHJlbGF0aW9uc2hpcE5hbWUpXG4gICAgY29uc3QgbG9hZGVkID0gaW5zdGFuY2VSZWxhdGlvbnNoaXAubG9hZGVkKClcblxuICAgIGlmIChsb2FkZWQgJiYgIUFycmF5LmlzQXJyYXkobG9hZGVkKSAmJiB0eXBlb2YgbG9hZGVkLmlkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBsb2FkZWQuaWQoKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogTW92ZXMgdGhlIHJlY29yZCB0byBhIHRlbXBvcmFyeSBwb3NpdGlvbiBvdXRzaWRlIHRoZSBub3JtYWwgcmFuZ2Ugc29cbiAqIHRoYXQgc3Vycm91bmRpbmcgcG9zaXRpb24gc2hpZnRzIGRvIG5vdCBoaXQgdW5pcXVlIGNvbnN0cmFpbnQgdmlvbGF0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIEFyZ3VtZW50cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlY29yZCAtIE1vZGVsIGluc3RhbmNlLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucG9zaXRpb25Db2x1bW4gLSBjYW1lbENhc2UgcG9zaXRpb24gYXR0cmlidXRlLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3Muc2NvcGUgLSBjYW1lbENhc2Ugc2NvcGUgYXR0cmlidXRlLlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBudWxsfSBbYXJncy5zY29wZVZhbHVlXSAtIEV4cGxpY2l0IHNjb3BlIHZhbHVlIChkZWZhdWx0cyB0byByZXNvbHZlU2NvcGVWYWx1ZSkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbW92ZU91dE9mV2F5KHtyZWNvcmQsIHBvc2l0aW9uQ29sdW1uLCBzY29wZSwgc2NvcGVWYWx1ZX0pIHtcbiAgY29uc3QgbW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gKi8gKHJlY29yZC5jb25zdHJ1Y3RvcilcbiAgY29uc3QgY29ubmVjdGlvbiA9IG1vZGVsQ2xhc3MuY29ubmVjdGlvbigpXG4gIGNvbnN0IHRhYmxlTmFtZSA9IG1vZGVsQ2xhc3MuX2dldFRhYmxlKCkuZ2V0TmFtZSgpXG4gIGNvbnN0IHJlc29sdmVkU2NvcGVWYWx1ZSA9IHNjb3BlVmFsdWUgIT0gbnVsbCA/IHNjb3BlVmFsdWUgOiByZXNvbHZlU2NvcGVWYWx1ZShyZWNvcmQsIHNjb3BlKVxuXG4gIGlmIChyZXNvbHZlZFNjb3BlVmFsdWUgPT0gbnVsbCkgcmV0dXJuXG5cbiAgY29uc3QgaGlnaGVzdCA9IGF3YWl0IGhpZ2hlc3RQb3NpdGlvbkluU2NvcGUoe3JlY29yZCwgcG9zaXRpb25Db2x1bW4sIHNjb3BlLCBzY29wZVZhbHVlOiByZXNvbHZlZFNjb3BlVmFsdWV9KVxuICBjb25zdCB0ZW1wUG9zaXRpb24gPSBoaWdoZXN0ICsgMTAwMDBcbiAgY29uc3QgcG9zaXRpb25Db2x1bW5TcWwgPSBjb25uZWN0aW9uLnF1b3RlQ29sdW1uKGluZmxlY3Rpb24udW5kZXJzY29yZShwb3NpdGlvbkNvbHVtbikpXG4gIGNvbnN0IHNjb3BlQ29sdW1uU3FsID0gY29ubmVjdGlvbi5xdW90ZUNvbHVtbihpbmZsZWN0aW9uLnVuZGVyc2NvcmUoc2NvcGUpKVxuICBjb25zdCB0YWJsZVNxbCA9IGNvbm5lY3Rpb24ucXVvdGVUYWJsZSh0YWJsZU5hbWUpXG4gIGNvbnN0IHBrU3FsID0gY29ubmVjdGlvbi5xdW90ZUNvbHVtbihcImlkXCIpXG5cbiAgc2V0U2hpZnRpbmdGbGFnKHJlY29yZCwgdHJ1ZSlcblxuICB0cnkge1xuICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoXG4gICAgICBgVVBEQVRFICR7dGFibGVTcWx9IFNFVCAke3Bvc2l0aW9uQ29sdW1uU3FsfSA9ICR7Y29ubmVjdGlvbi5xdW90ZSh0ZW1wUG9zaXRpb24pfSBXSEVSRSAke3Njb3BlQ29sdW1uU3FsfSA9ICR7Y29ubmVjdGlvbi5xdW90ZShyZXNvbHZlZFNjb3BlVmFsdWUpfSBBTkQgJHtwa1NxbH0gPSAke2Nvbm5lY3Rpb24ucXVvdGUocmVjb3JkLmlkKCkpfWBcbiAgICApXG4gIH0gZmluYWxseSB7XG4gICAgLy8gRG9uJ3QgY2xlYXIgdGhlIGZsYWcgaGVyZSDigJQgdGhlIGNhbGxlciB3aWxsIGRvIHRoYXQgYWZ0ZXIgc2hpZnRzXG4gIH1cbn1cbiJdfQ==
|
|
@@ -64,6 +64,8 @@ export class TenantDatabaseScopeError extends Error {
|
|
|
64
64
|
* @typedef {new (...args: any[]) => Record<string, any>} AttachmentDriverConstructor
|
|
65
65
|
*/
|
|
66
66
|
export class ValidationError extends Error {
|
|
67
|
+
/** @type {Record<string, any> | undefined} - Velocious metadata for frontend-model error reporting. */
|
|
68
|
+
velocious: Record<string, any> | undefined;
|
|
67
69
|
/**
|
|
68
70
|
* @returns {VelociousDatabaseRecord} - The model.
|
|
69
71
|
*/
|
|
@@ -717,6 +719,22 @@ declare class VelociousDatabaseRecord {
|
|
|
717
719
|
* @param {Record<string, boolean | Record<string, any>>} validators The validators to add. Key is the validator name, value is the validator arguments.
|
|
718
720
|
*/
|
|
719
721
|
static validates(attributeName: string, validators: Record<string, boolean | Record<string, any>>): Promise<void>;
|
|
722
|
+
/**
|
|
723
|
+
* Registers gap-less positional list callbacks for a column scoped by
|
|
724
|
+
* another column. Inserts and moves shift surrounding positions so the
|
|
725
|
+
* list stays compact (1,2,3,...). Destroys close the resulting gap.
|
|
726
|
+
*
|
|
727
|
+
* Callers must ensure a UNIQUE index on (scopeColumn, positionColumn)
|
|
728
|
+
* exists in the database — use `Migration.addActsAsList()` for the
|
|
729
|
+
* schema half.
|
|
730
|
+
*
|
|
731
|
+
* @param {string} positionColumn - camelCase position attribute (e.g. "rowNumber").
|
|
732
|
+
* @param {object} options - Options with a required scope attribute.
|
|
733
|
+
* @param {string} options.scope - camelCase scope attribute (e.g. "boardColumnId").
|
|
734
|
+
*/
|
|
735
|
+
static actsAsList(positionColumn: string, options: {
|
|
736
|
+
scope: string;
|
|
737
|
+
}): void;
|
|
720
738
|
/**
|
|
721
739
|
* @template {typeof VelociousDatabaseRecord} MC
|
|
722
740
|
* @this {MC}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/record/index.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/database/record/index.js"],"names":[],"mappings":"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"}
|