@kaspernj/api-maker 1.0.2154 → 1.0.2155

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cable-connection-pool.d.ts","sourceRoot":"/src/","sources":["cable-connection-pool.js"],"names":[],"mappings":"AAOA,+DAA+D;AAC/D;IAME,eAAe;IACf,sBAIC;IAED,sBAAsB;IACtB,uBADc,IAAI,CAQjB;IApBD,8BAA2B;IAC3B,gBAAgB;IAChB,6BAA6B;IAC7B,0BAA0B;IAmB1B,0CAA0C;IAC1C;;;;gBAyBC;IAED,yBAAyB;IACzB;;;;0BAsDC;IAED,sBAAsB;IACtB,iBAAkB,cAAS,EAAE,aAAQ,uBAAkF;IAEvH,oBAAoB;IACpB,eAAgB,cAAS,EAAE,YAAO,EAAE,cAAS,EAAE,aAAQ,uBAIrD;IAEF,wBAAwB;IACxB,mBAAoB,cAAS,EAAE,YAAO,EAAE,aAAQ,uBAAsF;IAEtI,8BAA8B;IAC9B,yBAA0B,cAAS,EAAE,cAAS,EAAE,aAAQ,uBAAkG;IAE1J,qBAAqB;IACrB,gBAAiB,cAAS,EAAE,YAAO,EAAE,aAAQ,uBAAqF;IAElI,uBAAuB;IACvB,4BAaC;IAED;;;;;OAKG;IACH,4BAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED,sBAAsB;IACtB,SADc,IAAI,CAYjB;IAED,wCAAkE;CACnE;8BAjL6B,yBAAyB;oBAEnC,eAAe"}
1
+ {"version":3,"file":"cable-connection-pool.d.ts","sourceRoot":"/src/","sources":["cable-connection-pool.js"],"names":[],"mappings":"AAOA,+DAA+D;AAC/D;IAME,eAAe;IACf,sBAIC;IAED,sBAAsB;IACtB,uBADc,IAAI,CAQjB;IApBD,8BAA2B;IAC3B,gBAAgB;IAChB,6BAA6B;IAC7B,0BAA0B;IAmB1B,0CAA0C;IAC1C;;;;gBA0BC;IAED,yBAAyB;IACzB;;;;0BAsDC;IAED,sBAAsB;IACtB,iBAAkB,cAAS,EAAE,aAAQ,uBAAkF;IAEvH,oBAAoB;IACpB,eAAgB,cAAS,EAAE,YAAO,EAAE,cAAS,EAAE,aAAQ,uBAIrD;IAEF,wBAAwB;IACxB,mBAAoB,cAAS,EAAE,YAAO,EAAE,aAAQ,uBAAsF;IAEtI,8BAA8B;IAC9B,yBAA0B,cAAS,EAAE,cAAS,EAAE,aAAQ,uBAAkG;IAE1J,qBAAqB;IACrB,gBAAiB,cAAS,EAAE,YAAO,EAAE,aAAQ,uBAAqF;IAElI,uBAAuB;IACvB,4BAaC;IAED;;;;;OAKG;IACH,4BAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED,sBAAsB;IACtB,SADc,IAAI,CAYjB;IAED,wCAAkE;CACnE;8BAlL6B,yBAAyB;oBAEnC,eAAe"}
@@ -40,6 +40,7 @@ export default class ApiMakerCableConnectionPool {
40
40
  }
41
41
  existingSubscriptions.push(subscription);
42
42
  cableSubscriptionPool.connectUnsubscriptionForSubscription(subscription);
43
+ subscription.events.emit("connected");
43
44
  return true;
44
45
  }
45
46
  }
@@ -139,4 +140,4 @@ export default class ApiMakerCableConnectionPool {
139
140
  }
140
141
  scheduleConnectUpcomingRunLast = new RunLast(this.connectUpcoming);
141
142
  }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FibGUtY29ubmVjdGlvbi1wb29sLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJjYWJsZS1jb25uZWN0aW9uLXBvb2wuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM3QixPQUFPLGlCQUFpQixNQUFNLHlCQUF5QixDQUFBLENBQUMsbUNBQW1DO0FBQzNGLE9BQU8scUJBQXFCLE1BQU0sOEJBQThCLENBQUE7QUFDaEUsT0FBTyxPQUFPLE1BQU0sZUFBZSxDQUFBO0FBRW5DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQiwrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE9BQU8sT0FBTywyQkFBMkI7SUFDOUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFBO0lBQzNCLFdBQVcsR0FBRyxFQUFFLENBQUE7SUFDaEIsd0JBQXdCLEdBQUcsRUFBRSxDQUFBO0lBQzdCLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtJQUUxQixlQUFlO0lBQ2YsTUFBTSxDQUFDLE9BQU87UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQjtZQUFFLE1BQU0sQ0FBQywyQkFBMkIsR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUE7UUFFL0csT0FBTyxNQUFNLENBQUMsMkJBQTJCLENBQUE7SUFDM0MsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixNQUFNLENBQUMsWUFBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDeEMsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDMUMsT0FBTyxNQUFNLENBQUMsMkJBQTJCLENBQUE7SUFDM0MsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxrQ0FBa0MsQ0FBRSxFQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFDO1FBQzdELEtBQUssTUFBTSxxQkFBcUIsSUFB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QTtJQUN6RCxDQUFDLENBQUE7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBRSxJQUFJO1FBQy9CLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQzlHLENBQUE7SUFDSCxDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLEtBQUs7UUFDSCxJQUFJLENBQUMsOEJBQThCLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFbEQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEVBQUU7WUFDNUQscUJBQXFCLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDL0IsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFBO1FBQ3JCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUE7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtJQUNqQyxDQUFDO0lBRUQsOEJBQThCLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFBO0NBQ25FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWd9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IENhYmxlU3Vic2NyaXB0aW9uIGZyb20gXCIuL2NhYmxlLXN1YnNjcmlwdGlvbi5qc1wiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgc29ydC1pbXBvcnRzXG5pbXBvcnQgQ2FibGVTdWJzY3JpcHRpb25Qb29sIGZyb20gXCIuL2NhYmxlLXN1YnNjcmlwdGlvbi1wb29sLmpzXCJcbmltcG9ydCBSdW5MYXN0IGZyb20gXCIuL3J1bi1sYXN0LmpzXCJcblxuY29uc3Qgc2hhcmVkID0ge31cblxuLyoqIEFjdGlvbkNhYmxlIGNvbm5lY3Rpb24gcG9vbCBrZXllZCBieSBzdHJlYW0gaWRlbnRpZmllcnMuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2wge1xuICBjYWJsZVN1YnNjcmlwdGlvblBvb2xzID0gW11cbiAgY29ubmVjdGlvbnMgPSB7fVxuICB1cGNvbWluZ1N1YnNjcmlwdGlvbkRhdGEgPSB7fVxuICB1cGNvbWluZ1N1YnNjcmlwdGlvbnMgPSB7fVxuXG4gIC8qKiBjdXJyZW50LiAqL1xuICBzdGF0aWMgY3VycmVudCAoKSB7XG4gICAgaWYgKCFzaGFyZWQuYXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sKSBzaGFyZWQuYXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sID0gbmV3IEFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbCgpXG5cbiAgICByZXR1cm4gc2hhcmVkLmFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBzdGF0aWMgcmVzZXRDdXJyZW50ICgpIHtcbiAgICBpZiAoIXNoYXJlZC5hcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2wpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNoYXJlZC5hcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2wucmVzZXQoKVxuICAgIGRlbGV0ZSBzaGFyZWQuYXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sXG4gIH1cblxuICAvKiogY29ubmVjdEV2ZW50VG9FeGlzdGluZ1N1YnNjcmlwdGlvbi4gKi9cbiAgY29ubmVjdEV2ZW50VG9FeGlzdGluZ1N1YnNjcmlwdGlvbiAoe3BhdGgsIHN1YnNjcmlwdGlvbiwgdmFsdWV9KSB7XG4gICAgZm9yIChjb25zdCBjYWJsZVN1YnNjcmlwdGlvblBvb2wgb2YgdGhpcy5jYWJsZVN1YnNjcmlwdGlvblBvb2xzKSB7XG4gICAgICBpZiAoY2FibGVTdWJzY3JpcHRpb25Qb29sLmlzQ29ubmVjdGVkKCkpIHtcbiAgICAgICAgbGV0IGV4aXN0aW5nU3Vic2NyaXB0aW9uc1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGV4aXN0aW5nU3Vic2NyaXB0aW9ucyA9IGRpZyhjYWJsZVN1YnNjcmlwdGlvblBvb2wuc3Vic2NyaXB0aW9ucywgLi4ucGF0aClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBleGlzdGluZ1N1YnNjcmlwdGlvbnMgPSBkaWcoY2FibGVTdWJzY3JpcHRpb25Qb29sLnN1YnNjcmlwdGlvbnMsIC4uLnBhdGgsIHZhbHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV4aXN0aW5nU3Vic2NyaXB0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGV4aXN0aW5nU3Vic2NyaXB0aW9ucykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhpc3RpbmdTdWJzY3JpcHRpb25zIHdhc24ndCBhbiBhcnJheTogJHt0eXBlb2YgZXhpc3RpbmdTdWJzY3JpcHRpb25zfSAoJHtkaWcoZXhpc3RpbmdTdWJzY3JpcHRpb25zLCBcImNvbnN0cnVjdG9yXCIsIFwibmFtZVwiKX0pYClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBleGlzdGluZ1N1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pXG4gICAgICAgICAgY2FibGVTdWJzY3JpcHRpb25Qb29sLmNvbm5lY3RVbnN1YnNjcmlwdGlvbkZvclN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pXG5cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKiogY29ubmVjdE1vZGVsRXZlbnQuICovXG4gIGNvbm5lY3RNb2RlbEV2ZW50ICh7Y2FsbGJhY2ssIHBhdGgsIHZhbHVlfSkge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG5ldyBDYWJsZVN1YnNjcmlwdGlvbigpXG5cbiAgICBzdWJzY3JpcHRpb24uZXZlbnRzLmFkZExpc3RlbmVyKFwicmVjZWl2ZWRcIiwgY2FsbGJhY2spXG5cbiAgICBpZiAodGhpcy5jb25uZWN0RXZlbnRUb0V4aXN0aW5nU3Vic2NyaXB0aW9uKHtwYXRoLCBzdWJzY3JpcHRpb24sIHZhbHVlfSkpIHtcbiAgICAgIC8vIE1hbmFnZWQgdG8gY29ubmVjdCB0byBleGlzdGluZyBjb25uZWN0aW9uXG4gICAgICByZXR1cm4gc3Vic2NyaXB0aW9uXG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRTdWJzY3JpcHRpb25EYXRhID0gdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbkRhdGFcbiAgICBsZXQgY3VycmVudFN1YnNjcmlwdGlvbiA9IHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25zXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHBhdGhQYXJ0ID0gcGF0aFtpXVxuXG4gICAgICBpZiAoIShwYXRoUGFydCBpbiBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YSkpIHtcbiAgICAgICAgaWYgKGkgPT0gcGF0aC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvbkRhdGFbcGF0aFBhcnRdID0gW11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YVtwYXRoUGFydF0gPSB7fVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25EYXRhID0gY3VycmVudFN1YnNjcmlwdGlvbkRhdGFbcGF0aFBhcnRdXG5cbiAgICAgIGlmICghKHBhdGhQYXJ0IGluIGN1cnJlbnRTdWJzY3JpcHRpb24pKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSAmJiBpID09IHBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25bcGF0aFBhcnRdID0gW11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uW3BhdGhQYXJ0XSA9IHt9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY3VycmVudFN1YnNjcmlwdGlvbiA9IGN1cnJlbnRTdWJzY3JpcHRpb25bcGF0aFBhcnRdXG4gICAgfVxuXG4gICAgaWYgKCFjdXJyZW50U3Vic2NyaXB0aW9uRGF0YS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25EYXRhLnB1c2godmFsdWUpXG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICBjdXJyZW50U3Vic2NyaXB0aW9uLnB1c2goc3Vic2NyaXB0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoISh2YWx1ZSBpbiBjdXJyZW50U3Vic2NyaXB0aW9uKSkge1xuICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uW3ZhbHVlXSA9IFtdXG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25bdmFsdWVdLnB1c2goc3Vic2NyaXB0aW9uKVxuICAgIH1cblxuICAgIHRoaXMuc2NoZWR1bGVDb25uZWN0VXBjb21pbmdSdW5MYXN0LnF1ZXVlKClcblxuICAgIHJldHVybiBzdWJzY3JpcHRpb25cbiAgfVxuXG4gIC8qKiBjb25uZWN0Q3JlYXRlZC4gKi9cbiAgY29ubmVjdENyZWF0ZWQgPSAobW9kZWxOYW1lLCBjYWxsYmFjaykgPT4gdGhpcy5jb25uZWN0TW9kZWxFdmVudCh7Y2FsbGJhY2ssIHZhbHVlOiB0cnVlLCBwYXRoOiBbbW9kZWxOYW1lLCBcImNyZWF0ZXNcIl19KVxuXG4gIC8qKiBjb25uZWN0RXZlbnQuICovXG4gIGNvbm5lY3RFdmVudCA9IChtb2RlbE5hbWUsIG1vZGVsSWQsIGV2ZW50TmFtZSwgY2FsbGJhY2spID0+IHRoaXMuY29ubmVjdE1vZGVsRXZlbnQoeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1wYXJhbXNcbiAgICBjYWxsYmFjayxcbiAgICB2YWx1ZTogbW9kZWxJZCxcbiAgICBwYXRoOiBbbW9kZWxOYW1lLCBcImV2ZW50c1wiLCBldmVudE5hbWVdXG4gIH0pXG5cbiAgLyoqIGNvbm5lY3REZXN0cm95ZWQuICovXG4gIGNvbm5lY3REZXN0cm95ZWQgPSAobW9kZWxOYW1lLCBtb2RlbElkLCBjYWxsYmFjaykgPT4gdGhpcy5jb25uZWN0TW9kZWxFdmVudCh7Y2FsbGJhY2ssIHZhbHVlOiBtb2RlbElkLCBwYXRoOiBbbW9kZWxOYW1lLCBcImRlc3Ryb3lzXCJdfSlcblxuICAvKiogY29ubmVjdE1vZGVsQ2xhc3NFdmVudC4gKi9cbiAgY29ubmVjdE1vZGVsQ2xhc3NFdmVudCA9IChtb2RlbE5hbWUsIGV2ZW50TmFtZSwgY2FsbGJhY2spID0+IHRoaXMuY29ubmVjdE1vZGVsRXZlbnQoe2NhbGxiYWNrLCB2YWx1ZTogZXZlbnROYW1lLCBwYXRoOiBbbW9kZWxOYW1lLCBcIm1vZGVsX2NsYXNzX2V2ZW50c1wiXX0pXG5cbiAgLyoqIGNvbm5lY3RVcGRhdGUuICovXG4gIGNvbm5lY3RVcGRhdGUgPSAobW9kZWxOYW1lLCBtb2RlbElkLCBjYWxsYmFjaykgPT4gdGhpcy5jb25uZWN0TW9kZWxFdmVudCh7Y2FsbGJhY2ssIHZhbHVlOiBtb2RlbElkLCBwYXRoOiBbbW9kZWxOYW1lLCBcInVwZGF0ZXNcIl19KVxuXG4gIC8qKiBjb25uZWN0VXBjb21pbmcuICovXG4gIGNvbm5lY3RVcGNvbWluZyA9ICgpID0+IHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb25EYXRhID0gdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbkRhdGFcbiAgICBjb25zdCBzdWJzY3JpcHRpb25zID0gdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbnNcblxuICAgIHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25EYXRhID0ge31cbiAgICB0aGlzLnVwY29taW5nU3Vic2NyaXB0aW9ucyA9IHt9XG5cbiAgICBjb25zdCBjYWJsZVN1YnNjcmlwdGlvblBvb2wgPSBuZXcgQ2FibGVTdWJzY3JpcHRpb25Qb29sKClcblxuICAgIGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5yZWdpc3RlclN1YnNjcmlwdGlvbnMoc3Vic2NyaXB0aW9ucylcbiAgICBjYWJsZVN1YnNjcmlwdGlvblBvb2wuY29ubmVjdChzdWJzY3JpcHRpb25EYXRhKVxuXG4gICAgdGhpcy5jYWJsZVN1YnNjcmlwdGlvblBvb2xzLnB1c2goY2FibGVTdWJzY3JpcHRpb25Qb29sKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyBhdXRoIGFjcm9zcyB0aGUgZXhpc3Rpbmcgc3Vic2NyaXB0aW9uIHBvb2xzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IGFyZ3NcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyByZWZyZXNoQXV0aGVudGljYXRpb24gKGFyZ3MpIHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scy5tYXAoKGNhYmxlU3Vic2NyaXB0aW9uUG9vbCkgPT4gY2FibGVTdWJzY3JpcHRpb25Qb29sLnJlZnJlc2hBdXRoZW50aWNhdGlvbihhcmdzKSlcbiAgICApXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIHJlc2V0ICgpIHtcbiAgICB0aGlzLnNjaGVkdWxlQ29ubmVjdFVwY29taW5nUnVuTGFzdC5jbGVhclRpbWVvdXQoKVxuXG4gICAgdGhpcy5jYWJsZVN1YnNjcmlwdGlvblBvb2xzLmZvckVhY2goKGNhYmxlU3Vic2NyaXB0aW9uUG9vbCkgPT4ge1xuICAgICAgY2FibGVTdWJzY3JpcHRpb25Qb29sLnJlc2V0KClcbiAgICB9KVxuXG4gICAgdGhpcy5jYWJsZVN1YnNjcmlwdGlvblBvb2xzID0gW11cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0ge31cbiAgICB0aGlzLnVwY29taW5nU3Vic2NyaXB0aW9uRGF0YSA9IHt9XG4gICAgdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbnMgPSB7fVxuICB9XG5cbiAgc2NoZWR1bGVDb25uZWN0VXBjb21pbmdSdW5MYXN0ID0gbmV3IFJ1bkxhc3QodGhpcy5jb25uZWN0VXBjb21pbmcpXG59XG4iXX0=
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FibGUtY29ubmVjdGlvbi1wb29sLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJjYWJsZS1jb25uZWN0aW9uLXBvb2wuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM3QixPQUFPLGlCQUFpQixNQUFNLHlCQUF5QixDQUFBLENBQUMsbUNBQW1DO0FBQzNGLE9BQU8scUJBQXFCLE1BQU0sOEJBQThCLENBQUE7QUFDaEUsT0FBTyxPQUFPLE1BQU0sZUFBZSxDQUFBO0FBRW5DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQiwrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE9BQU8sT0FBTywyQkFBMkI7SUFDOUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFBO0lBQzNCLFdBQVcsR0FBRyxFQUFFLENBQUE7SUFDaEIsd0JBQXdCLEdBQUcsRUFBRSxDQUFBO0lBQzdCLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtJQUUxQixlQUFlO0lBQ2YsTUFBTSxDQUFDLE9BQU87UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQjtZQUFFLE1BQU0sQ0FBQywyQkFBMkIsR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUE7UUFFL0csT0FBTyxNQUFNLENBQUMsMkJBQTJCLENBQUE7SUFDM0MsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixNQUFNLENBQUMsWUFBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLDJCQUEyQixFQUFFLENBQUM7WUFDeEMsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDMUMsT0FBTyxNQUFNLENBQUMsMkJBQTJCLENBQUE7SUFDM0MsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxrQ0FBa0MsQ0FBRSxFQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFDO1FBQzdELEtBQUssTUFBTSxxQkFBcUIsSUFB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QUUvQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDekQsQ0FBQyxDQUFBO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMscUJBQXFCLENBQUUsSUFBSTtRQUMvQixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM5RyxDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixLQUFLO1FBQ0gsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRWxELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFO1lBQzVELHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFBO1FBQy9CLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQTtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQTtRQUNyQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVELDhCQUE4QixHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtDQUNuRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBDYWJsZVN1YnNjcmlwdGlvbiBmcm9tIFwiLi9jYWJsZS1zdWJzY3JpcHRpb24uanNcIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuaW1wb3J0IENhYmxlU3Vic2NyaXB0aW9uUG9vbCBmcm9tIFwiLi9jYWJsZS1zdWJzY3JpcHRpb24tcG9vbC5qc1wiXG5pbXBvcnQgUnVuTGFzdCBmcm9tIFwiLi9ydW4tbGFzdC5qc1wiXG5cbmNvbnN0IHNoYXJlZCA9IHt9XG5cbi8qKiBBY3Rpb25DYWJsZSBjb25uZWN0aW9uIHBvb2wga2V5ZWQgYnkgc3RyZWFtIGlkZW50aWZpZXJzLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sIHtcbiAgY2FibGVTdWJzY3JpcHRpb25Qb29scyA9IFtdXG4gIGNvbm5lY3Rpb25zID0ge31cbiAgdXBjb21pbmdTdWJzY3JpcHRpb25EYXRhID0ge31cbiAgdXBjb21pbmdTdWJzY3JpcHRpb25zID0ge31cblxuICAvKiogY3VycmVudC4gKi9cbiAgc3RhdGljIGN1cnJlbnQgKCkge1xuICAgIGlmICghc2hhcmVkLmFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbCkgc2hhcmVkLmFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbCA9IG5ldyBBcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2woKVxuXG4gICAgcmV0dXJuIHNoYXJlZC5hcGlNYWtlckNhYmxlQ29ubmVjdGlvblBvb2xcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgc3RhdGljIHJlc2V0Q3VycmVudCAoKSB7XG4gICAgaWYgKCFzaGFyZWQuYXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzaGFyZWQuYXBpTWFrZXJDYWJsZUNvbm5lY3Rpb25Qb29sLnJlc2V0KClcbiAgICBkZWxldGUgc2hhcmVkLmFwaU1ha2VyQ2FibGVDb25uZWN0aW9uUG9vbFxuICB9XG5cbiAgLyoqIGNvbm5lY3RFdmVudFRvRXhpc3RpbmdTdWJzY3JpcHRpb24uICovXG4gIGNvbm5lY3RFdmVudFRvRXhpc3RpbmdTdWJzY3JpcHRpb24gKHtwYXRoLCBzdWJzY3JpcHRpb24sIHZhbHVlfSkge1xuICAgIGZvciAoY29uc3QgY2FibGVTdWJzY3JpcHRpb25Qb29sIG9mIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scykge1xuICAgICAgaWYgKGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5pc0Nvbm5lY3RlZCgpKSB7XG4gICAgICAgIGxldCBleGlzdGluZ1N1YnNjcmlwdGlvbnNcblxuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICBleGlzdGluZ1N1YnNjcmlwdGlvbnMgPSBkaWcoY2FibGVTdWJzY3JpcHRpb25Qb29sLnN1YnNjcmlwdGlvbnMsIC4uLnBhdGgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXhpc3RpbmdTdWJzY3JpcHRpb25zID0gZGlnKGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5zdWJzY3JpcHRpb25zLCAuLi5wYXRoLCB2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleGlzdGluZ1N1YnNjcmlwdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShleGlzdGluZ1N1YnNjcmlwdGlvbnMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4aXN0aW5nU3Vic2NyaXB0aW9ucyB3YXNuJ3QgYW4gYXJyYXk6ICR7dHlwZW9mIGV4aXN0aW5nU3Vic2NyaXB0aW9uc30gKCR7ZGlnKGV4aXN0aW5nU3Vic2NyaXB0aW9ucywgXCJjb25zdHJ1Y3RvclwiLCBcIm5hbWVcIil9KWApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXhpc3RpbmdTdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKVxuICAgICAgICAgIGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5jb25uZWN0VW5zdWJzY3JpcHRpb25Gb3JTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKVxuICAgICAgICAgIHN1YnNjcmlwdGlvbi5ldmVudHMuZW1pdChcImNvbm5lY3RlZFwiKVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLyoqIGNvbm5lY3RNb2RlbEV2ZW50LiAqL1xuICBjb25uZWN0TW9kZWxFdmVudCAoe2NhbGxiYWNrLCBwYXRoLCB2YWx1ZX0pIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBuZXcgQ2FibGVTdWJzY3JpcHRpb24oKVxuXG4gICAgc3Vic2NyaXB0aW9uLmV2ZW50cy5hZGRMaXN0ZW5lcihcInJlY2VpdmVkXCIsIGNhbGxiYWNrKVxuXG4gICAgaWYgKHRoaXMuY29ubmVjdEV2ZW50VG9FeGlzdGluZ1N1YnNjcmlwdGlvbih7cGF0aCwgc3Vic2NyaXB0aW9uLCB2YWx1ZX0pKSB7XG4gICAgICAvLyBNYW5hZ2VkIHRvIGNvbm5lY3QgdG8gZXhpc3RpbmcgY29ubmVjdGlvblxuICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvblxuICAgIH1cblxuICAgIGxldCBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YSA9IHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25EYXRhXG4gICAgbGV0IGN1cnJlbnRTdWJzY3JpcHRpb24gPSB0aGlzLnVwY29taW5nU3Vic2NyaXB0aW9uc1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwYXRoUGFydCA9IHBhdGhbaV1cblxuICAgICAgaWYgKCEocGF0aFBhcnQgaW4gY3VycmVudFN1YnNjcmlwdGlvbkRhdGEpKSB7XG4gICAgICAgIGlmIChpID09IHBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb25EYXRhW3BhdGhQYXJ0XSA9IFtdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvbkRhdGFbcGF0aFBhcnRdID0ge31cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YSA9IGN1cnJlbnRTdWJzY3JpcHRpb25EYXRhW3BhdGhQYXJ0XVxuXG4gICAgICBpZiAoIShwYXRoUGFydCBpbiBjdXJyZW50U3Vic2NyaXB0aW9uKSkge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUgJiYgaSA9PSBwYXRoLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uW3BhdGhQYXJ0XSA9IFtdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvbltwYXRoUGFydF0gPSB7fVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRTdWJzY3JpcHRpb24gPSBjdXJyZW50U3Vic2NyaXB0aW9uW3BhdGhQYXJ0XVxuICAgIH1cblxuICAgIGlmICghY3VycmVudFN1YnNjcmlwdGlvbkRhdGEuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICBjdXJyZW50U3Vic2NyaXB0aW9uRGF0YS5wdXNoKHZhbHVlKVxuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgY3VycmVudFN1YnNjcmlwdGlvbi5wdXNoKHN1YnNjcmlwdGlvbilcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEodmFsdWUgaW4gY3VycmVudFN1YnNjcmlwdGlvbikpIHtcbiAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvblt2YWx1ZV0gPSBbXVxuICAgICAgfVxuXG4gICAgICBjdXJyZW50U3Vic2NyaXB0aW9uW3ZhbHVlXS5wdXNoKHN1YnNjcmlwdGlvbilcbiAgICB9XG5cbiAgICB0aGlzLnNjaGVkdWxlQ29ubmVjdFVwY29taW5nUnVuTGFzdC5xdWV1ZSgpXG5cbiAgICByZXR1cm4gc3Vic2NyaXB0aW9uXG4gIH1cblxuICAvKiogY29ubmVjdENyZWF0ZWQuICovXG4gIGNvbm5lY3RDcmVhdGVkID0gKG1vZGVsTmFtZSwgY2FsbGJhY2spID0+IHRoaXMuY29ubmVjdE1vZGVsRXZlbnQoe2NhbGxiYWNrLCB2YWx1ZTogdHJ1ZSwgcGF0aDogW21vZGVsTmFtZSwgXCJjcmVhdGVzXCJdfSlcblxuICAvKiogY29ubmVjdEV2ZW50LiAqL1xuICBjb25uZWN0RXZlbnQgPSAobW9kZWxOYW1lLCBtb2RlbElkLCBldmVudE5hbWUsIGNhbGxiYWNrKSA9PiB0aGlzLmNvbm5lY3RNb2RlbEV2ZW50KHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBtYXgtcGFyYW1zXG4gICAgY2FsbGJhY2ssXG4gICAgdmFsdWU6IG1vZGVsSWQsXG4gICAgcGF0aDogW21vZGVsTmFtZSwgXCJldmVudHNcIiwgZXZlbnROYW1lXVxuICB9KVxuXG4gIC8qKiBjb25uZWN0RGVzdHJveWVkLiAqL1xuICBjb25uZWN0RGVzdHJveWVkID0gKG1vZGVsTmFtZSwgbW9kZWxJZCwgY2FsbGJhY2spID0+IHRoaXMuY29ubmVjdE1vZGVsRXZlbnQoe2NhbGxiYWNrLCB2YWx1ZTogbW9kZWxJZCwgcGF0aDogW21vZGVsTmFtZSwgXCJkZXN0cm95c1wiXX0pXG5cbiAgLyoqIGNvbm5lY3RNb2RlbENsYXNzRXZlbnQuICovXG4gIGNvbm5lY3RNb2RlbENsYXNzRXZlbnQgPSAobW9kZWxOYW1lLCBldmVudE5hbWUsIGNhbGxiYWNrKSA9PiB0aGlzLmNvbm5lY3RNb2RlbEV2ZW50KHtjYWxsYmFjaywgdmFsdWU6IGV2ZW50TmFtZSwgcGF0aDogW21vZGVsTmFtZSwgXCJtb2RlbF9jbGFzc19ldmVudHNcIl19KVxuXG4gIC8qKiBjb25uZWN0VXBkYXRlLiAqL1xuICBjb25uZWN0VXBkYXRlID0gKG1vZGVsTmFtZSwgbW9kZWxJZCwgY2FsbGJhY2spID0+IHRoaXMuY29ubmVjdE1vZGVsRXZlbnQoe2NhbGxiYWNrLCB2YWx1ZTogbW9kZWxJZCwgcGF0aDogW21vZGVsTmFtZSwgXCJ1cGRhdGVzXCJdfSlcblxuICAvKiogY29ubmVjdFVwY29taW5nLiAqL1xuICBjb25uZWN0VXBjb21pbmcgPSAoKSA9PiB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9uRGF0YSA9IHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25EYXRhXG4gICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25zXG5cbiAgICB0aGlzLnVwY29taW5nU3Vic2NyaXB0aW9uRGF0YSA9IHt9XG4gICAgdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbnMgPSB7fVxuXG4gICAgY29uc3QgY2FibGVTdWJzY3JpcHRpb25Qb29sID0gbmV3IENhYmxlU3Vic2NyaXB0aW9uUG9vbCgpXG5cbiAgICBjYWJsZVN1YnNjcmlwdGlvblBvb2wucmVnaXN0ZXJTdWJzY3JpcHRpb25zKHN1YnNjcmlwdGlvbnMpXG4gICAgY2FibGVTdWJzY3JpcHRpb25Qb29sLmNvbm5lY3Qoc3Vic2NyaXB0aW9uRGF0YSlcblxuICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scy5wdXNoKGNhYmxlU3Vic2NyaXB0aW9uUG9vbClcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoZXMgYXV0aCBhY3Jvc3MgdGhlIGV4aXN0aW5nIHN1YnNjcmlwdGlvbiBwb29scy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBhcmdzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgcmVmcmVzaEF1dGhlbnRpY2F0aW9uIChhcmdzKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0aGlzLmNhYmxlU3Vic2NyaXB0aW9uUG9vbHMubWFwKChjYWJsZVN1YnNjcmlwdGlvblBvb2wpID0+IGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5yZWZyZXNoQXV0aGVudGljYXRpb24oYXJncykpXG4gICAgKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICByZXNldCAoKSB7XG4gICAgdGhpcy5zY2hlZHVsZUNvbm5lY3RVcGNvbWluZ1J1bkxhc3QuY2xlYXJUaW1lb3V0KClcblxuICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scy5mb3JFYWNoKChjYWJsZVN1YnNjcmlwdGlvblBvb2wpID0+IHtcbiAgICAgIGNhYmxlU3Vic2NyaXB0aW9uUG9vbC5yZXNldCgpXG4gICAgfSlcblxuICAgIHRoaXMuY2FibGVTdWJzY3JpcHRpb25Qb29scyA9IFtdXG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHt9XG4gICAgdGhpcy51cGNvbWluZ1N1YnNjcmlwdGlvbkRhdGEgPSB7fVxuICAgIHRoaXMudXBjb21pbmdTdWJzY3JpcHRpb25zID0ge31cbiAgfVxuXG4gIHNjaGVkdWxlQ29ubmVjdFVwY29taW5nUnVuTGFzdCA9IG5ldyBSdW5MYXN0KHRoaXMuY29ubmVjdFVwY29taW5nKVxufVxuIl19
@@ -2,7 +2,9 @@ export default useModel;
2
2
  export type useModelArgs = {
3
3
  callback?: (arg: object) => Function;
4
4
  args?: (arg: object) => object;
5
- loadByQueryParam?: () => number | string;
5
+ loadByQueryParam?: (args: {
6
+ queryParams: Record<string, any> | undefined;
7
+ }) => number | string;
6
8
  cacheArgs?: any[];
7
9
  match?: {
8
10
  params: object;
@@ -123,24 +125,126 @@ export type useModelArgs = {
123
125
  }) => void;
124
126
  query?: import("./collection.js").default<any>;
125
127
  };
126
- /**
127
- * @typedef {object} useModelArgs
128
- * @property {(arg: object) => Function} [callback]
129
- * @property {(arg: object) => object} [args]
130
- * @property {() => number|string} [loadByQueryParam]
131
- * @property {any[]} [cacheArgs]
132
- * @property {{params: object}} [match]
133
- * @property {(ctx: { model: import("./base-model.js").default }) => void} [onDestroyed]
134
- * @property {import("./collection.js").default} [query]
135
- */
136
128
  /**
137
129
  * @param {Function|object} modelClassArg
138
130
  * @param {object | ((args: {modelClass: typeof import("./base-model.js").default}) => useModelArgs)} [argsArg]
131
+ * @returns {Record<string, any>}
139
132
  */
140
133
  /** useModel. */
141
134
  declare function useModel(modelClassArg: any, argsArg?: {}): {
142
- model: any;
143
- modelId: any;
144
- notFound: any;
135
+ model: {
136
+ changes: {};
137
+ newRecord: boolean;
138
+ relationshipsCache: {};
139
+ relationships: {};
140
+ abilities: Record<string, any>;
141
+ modelData: {};
142
+ assignAttributes(newAttributes: Record<string, any>): void;
143
+ attributes(): Record<string, any>;
144
+ can(givenAbilityName: string): boolean;
145
+ clone(): /*elided*/ any;
146
+ cacheKey(): number | string;
147
+ localCacheKey(): string;
148
+ fullCacheKey(): string;
149
+ create(attributes?: Record<string, any>, options?: object): Promise<{
150
+ model: /*elided*/ any;
151
+ response: object;
152
+ }>;
153
+ createRaw(rawData: FormData | Record<string, any>, options?: object): Promise<{
154
+ model: /*elided*/ any;
155
+ response: any;
156
+ }>;
157
+ destroy(): Promise<{
158
+ model: /*elided*/ any;
159
+ response: object;
160
+ }>;
161
+ ensureAbilities(listOfAbilities: string[]): Promise<void>;
162
+ getAttributes(): Record<string, any>;
163
+ handleResponseError(response: object): never;
164
+ identifierKey(): number | string;
165
+ _identifierKey: string | number;
166
+ isAssociationLoaded(associationName: string): boolean;
167
+ isAssociationLoadedUnderscore(associationNameUnderscore: string): boolean;
168
+ isAssociationPresent(associationName: string): boolean;
169
+ ensureAssociationLoaded(associationName: string): Promise<any>;
170
+ ensureAssociationLoadedUnderscore(associationNameUnderscore: string): Promise<any>;
171
+ isAttributeChanged(attributeName: string): boolean;
172
+ isChanged(): boolean;
173
+ isNewRecord(): boolean;
174
+ isPersisted(): boolean;
175
+ savedChangeToAttribute(attributeName: string): boolean;
176
+ setNewModel(model: /*elided*/ any): void;
177
+ setNewModelData(model: /*elided*/ any): void;
178
+ previousModelData: any;
179
+ _isDateChanged(oldValue: any, newValue: any): boolean | void;
180
+ _isIntegerChanged(oldValue: any, newValue: any): boolean | void;
181
+ _isStringChanged(oldValue: any, newValue: any): boolean | void;
182
+ modelClassData(): ModelClassDataType;
183
+ reload(): Promise<void>;
184
+ save(): Promise<{
185
+ model: /*elided*/ any;
186
+ response?: object;
187
+ }>;
188
+ saveRaw(rawData: any, options?: {}): Promise<{
189
+ model: /*elided*/ any;
190
+ response: object;
191
+ }>;
192
+ update(newAttributes?: Record<string, any>, options?: ParseValidationErrorsOptions): Promise<{
193
+ model: /*elided*/ any;
194
+ response?: object;
195
+ }>;
196
+ _refreshModelFromResponse(response: object): void;
197
+ _refreshModelDataFromResponse(response: object): void;
198
+ updateRaw(rawData: FormData | Record<string, any>, options?: ParseValidationErrorsOptions & {
199
+ simpleModelErrors?: boolean;
200
+ }): Promise<{
201
+ response: object;
202
+ model: /*elided*/ any;
203
+ }>;
204
+ isValid(): never;
205
+ isValidOnServer(): Promise<{
206
+ valid: boolean;
207
+ errors: Record<string, any>;
208
+ }>;
209
+ modelClass(): Record<string, any>;
210
+ preloadRelationship(relationshipName: string, model: /*elided*/ any | /*elided*/ any[] | null): void;
211
+ markForDestruction(): void;
212
+ _markedForDestruction: boolean;
213
+ markedForDestruction(): boolean;
214
+ uniqueKey(): number;
215
+ uniqueKeyValue: number;
216
+ _callMemberCommand(args: Record<string, any>, commandArgs: Record<string, any>): Promise<object>;
217
+ readAttribute(attributeName: string): any;
218
+ readAttributeUnderscore(attributeName: string): any;
219
+ isAttributeLoaded(attributeName: any): boolean;
220
+ _isPresent(value: any): boolean;
221
+ _loadBelongsToReflection(args: import("./collection.js").CollectionArgsType<any>, queryArgs?: import("./collection.js").QueryArgsType): Promise<any | null>;
222
+ _readBelongsToReflection({ reflectionName }: {
223
+ modelClass: any;
224
+ reflectionName: string;
225
+ }): any | null;
226
+ _loadHasManyReflection(args: import("./collection.js").CollectionArgsType<any>, queryArgs?: import("./collection.js").QueryArgsType): Promise<Array<any>>;
227
+ _loadHasOneReflection(args: import("./collection.js").CollectionArgsType<any>, queryArgs?: import("./collection.js").QueryArgsType): Promise<any>;
228
+ _readHasOneReflection({ reflectionName }: {
229
+ modelClass: any;
230
+ reflectionName: string;
231
+ }): any | null;
232
+ _readModelDataFromArgs(args?: {
233
+ data?: {
234
+ b?: Record<string, any>;
235
+ a?: Record<string, any>;
236
+ r?: any;
237
+ };
238
+ collection?: import("./collection.js").default<any>;
239
+ }): void;
240
+ collection: import("./collection.js").default<any>;
241
+ preloadedRelationships: any;
242
+ _readPreloadedRelationships(preloaded: {
243
+ getModel: (relationshipType: string, relationshipId: number | string) => /*elided*/ any;
244
+ }): void;
245
+ primaryKey(): number | string;
246
+ };
247
+ modelId: string | number;
248
+ notFound: boolean;
145
249
  };
146
250
  //# sourceMappingURL=use-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-model.d.ts","sourceRoot":"/src/","sources":["use-model.js"],"names":[],"mappings":";;eAWc,CAAC,GAAG,EAAE,MAAM,aAAa;WACzB,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM;uBACvB,MAAM,MAAM,GAAC,MAAM;gBACnB,GAAG,EAAE;YACL;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;kBAChB,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAsQ69e,CAAC;;;;;;;;wBAA2iB,CAAC;;;;;iCAAypE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAtQnokB,CAAA;KAAE,KAAK,IAAI;;;AAPzE;;;;;;;;;GASG;AAEH;;;GAGG;AACH,gBAAgB;AAEhB;;;;EAyPC"}
1
+ {"version":3,"file":"use-model.d.ts","sourceRoot":"/src/","sources":["use-model.js"],"names":[],"mappings":";;eAWc,CAAC,GAAG,EAAE,MAAM,aAAa;WACzB,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM;uBACvB,CAAC,IAAI,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;KAAC,KAAK,MAAM,GAAC,MAAM;gBACvE,GAAG,EAAE;YACL;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;kBAChB,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA6Y8xX,CAAC;;;;;;;;wBAA2iB,CAAC;;;;;iCAAypE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA7Yp8c,CAAA;KAAE,KAAK,IAAI;;;AAmXzE;;;;GAIG;AACH,gBAAgB;AAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAoB2zX,CAAC;;;;;;;;oBAA2iB,CAAC;;;;;6BAAypE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAHjgd"}
@@ -1,228 +1,342 @@
1
1
  /* eslint-disable sort-imports */
2
- import { useCallback, useEffect, useRef } from "react";
2
+ import { ShapeHook, useShapeHook } from "set-state-compare";
3
+ import { useEffect } from "react";
3
4
  import Devise from "./devise.js";
4
5
  import * as inflection from "inflection";
5
6
  import ModelEvents from "./model-events.js";
6
7
  import useQueryParams from "on-location-changed/build/use-query-params.js";
7
- import useShape from "./use-shape.js";
8
8
  import useUpdatedEvent from "./use-updated-event.js";
9
9
  /**
10
10
  * @typedef {object} useModelArgs
11
11
  * @property {(arg: object) => Function} [callback]
12
12
  * @property {(arg: object) => object} [args]
13
- * @property {() => number|string} [loadByQueryParam]
13
+ * @property {(args: {queryParams: Record<string, any> | undefined}) => number|string} [loadByQueryParam]
14
14
  * @property {any[]} [cacheArgs]
15
15
  * @property {{params: object}} [match]
16
16
  * @property {(ctx: { model: import("./base-model.js").default }) => void} [onDestroyed]
17
17
  * @property {import("./collection.js").default} [query]
18
18
  */
19
- /**
20
- * @param {Function|object} modelClassArg
21
- * @param {object | ((args: {modelClass: typeof import("./base-model.js").default}) => useModelArgs)} [argsArg]
22
- */
23
- /** useModel. */
24
- // eslint-disable-next-line complexity
25
- const useModel = (modelClassArg, argsArg = {}) => {
26
- const queryParams = useQueryParams();
27
- const loadModelGenerationRef = useRef(0);
28
- let args, modelClass;
29
- if (typeof argsArg == "function") {
30
- args = argsArg({ modelClass });
31
- }
32
- else {
33
- args = argsArg;
34
- }
35
- const s = useShape(args);
36
- s.useStates({
37
- model: undefined,
38
- notFound: undefined
39
- });
40
- if ("active" in s.props && !s.props.active) {
41
- s.meta.active = false;
42
- }
43
- else {
44
- s.meta.active = true;
45
- }
46
- if (typeof modelClassArg == "object") {
47
- modelClass = modelClassArg.callback({ queryParams });
48
- }
49
- else {
50
- modelClass = modelClassArg;
51
- }
52
- const paramsVariableName = `${modelClass.modelName().paramKey()}_id`;
53
- let modelId;
54
- if (args.loadByQueryParam) {
55
- modelId = args.loadByQueryParam({ queryParams });
56
- }
57
- else if (!args.query) {
58
- if (!args.match)
19
+ /** Hook state container for useModel. */
20
+ class UseModelShapeHook extends ShapeHook {
21
+ updatedConnectionFallbackTimeoutId = undefined;
22
+ /** Constructor. */
23
+ constructor(props) {
24
+ super(props);
25
+ this.initialLoadTriggered = false;
26
+ this.loadModelGeneration = 0;
27
+ this.newIfNoIdDefaultsResult = null;
28
+ this.queryParams = undefined;
29
+ this.updatedConnectionReady = false;
30
+ }
31
+ /** @returns {boolean} */
32
+ active() {
33
+ return !("active" in this.args()) || Boolean(this.args().active);
34
+ }
35
+ /** @returns {useModelArgs & Record<string, any>} */
36
+ args() {
37
+ if (typeof this.p.argsArg == "function") {
38
+ return this.p.argsArg({ modelClass: this.modelClass() });
39
+ }
40
+ return this.p.argsArg || {};
41
+ }
42
+ /** @returns {typeof import("./base-model.js").default} */
43
+ modelClass() {
44
+ if (typeof this.p.modelClassArg == "object") {
45
+ return this.p.modelClassArg.callback({ queryParams: this.queryParams });
46
+ }
47
+ return this.p.modelClassArg;
48
+ }
49
+ /** @returns {string} */
50
+ paramsVariableName() {
51
+ return `${this.modelClass().modelName()
52
+ .paramKey()}_id`;
53
+ }
54
+ /** @returns {number | string | undefined} */
55
+ modelId() {
56
+ if (this.args().loadByQueryParam) {
57
+ return this.args().loadByQueryParam({ queryParams: this.queryParams });
58
+ }
59
+ else if (this.args().query) {
60
+ return undefined;
61
+ }
62
+ else if (!this.args().match) {
59
63
  throw new Error("Both 'loadByQueryParam' and 'match' wasn't given");
60
- modelId = args.match.params[paramsVariableName] || args.match.params.id;
64
+ }
65
+ return this.args().match.params[this.paramsVariableName()] || this.args().match.params.id;
66
+ }
67
+ /** @returns {string} */
68
+ modelVariableName() {
69
+ return inflection.camelize(this.modelClass().modelClassData().name, true);
70
+ }
71
+ /** @returns {any[]} */
72
+ cacheArgs() {
73
+ return [this.modelId()].concat(this.args().cacheArgs || [], this.queryParams);
74
+ }
75
+ /** @returns {boolean} */
76
+ shouldWaitForUpdatedConnection() {
77
+ return Boolean(this.args().eventUpdated && this.modelId() && !this.s.model);
78
+ }
79
+ /** @returns {object} */
80
+ newModelDataFromParams() {
81
+ return this.queryParams?.[this.modelClass().modelName()
82
+ .paramKey()] || {};
61
83
  }
62
- const modelVariableName = inflection.camelize(modelClass.modelClassData().name, true);
63
- const cacheArgs = [modelId];
64
- const loadExistingModel = useCallback(async (loadModelGeneration) => {
84
+ /** @returns {boolean} */
85
+ hasAsyncDefaults() {
86
+ return Boolean(this.newIfNoIdDefaultsResult && typeof this.newIfNoIdDefaultsResult.then == "function");
87
+ }
88
+ /** @returns {object | null} */
89
+ syncDefaultsForNewModel() {
90
+ if (!this.args().newIfNoId?.defaults) {
91
+ return {};
92
+ }
93
+ else if (this.hasAsyncDefaults()) {
94
+ return null;
95
+ }
96
+ if (this.newIfNoIdDefaultsResult === null) {
97
+ const defaultsResult = this.args().newIfNoId.defaults();
98
+ if (defaultsResult && typeof defaultsResult.then == "function") {
99
+ this.newIfNoIdDefaultsResult = defaultsResult.catch((error) => {
100
+ throw error;
101
+ });
102
+ return null;
103
+ }
104
+ this.newIfNoIdDefaultsResult = defaultsResult;
105
+ }
106
+ return this.newIfNoIdDefaultsResult || {};
107
+ }
108
+ /** @returns {import("./base-model.js").default | undefined} */
109
+ syncNewModel() {
110
+ if (!this.active() || !this.args().newIfNoId || this.modelId()) {
111
+ return undefined;
112
+ }
113
+ const defaults = this.syncDefaultsForNewModel();
114
+ if (defaults === null) {
115
+ return undefined;
116
+ }
117
+ return new (this.modelClass())({
118
+ isNewRecord: true,
119
+ data: { a: Object.assign(defaults, this.args().newAttributes, this.newModelDataFromParams()) }
120
+ });
121
+ }
122
+ /** @returns {import("./base-model.js").default | undefined} */
123
+ subscriptionModel() {
124
+ if (!this.args().eventUpdated) {
125
+ return undefined;
126
+ }
127
+ else if (this.s.model) {
128
+ return this.s.model;
129
+ }
130
+ else if (!this.modelId()) {
131
+ return undefined;
132
+ }
133
+ return new (this.modelClass())({
134
+ data: { a: { [this.modelClass().primaryKey()]: this.modelId() } }
135
+ });
136
+ }
137
+ /** @param {number} loadModelGeneration */
138
+ loadExistingModel = async (loadModelGeneration) => {
65
139
  let query;
66
- if (s.m.modelId) {
67
- query = modelClass.ransack({ id_eq: s.m.modelId });
140
+ if (this.modelId()) {
141
+ query = this.modelClass().ransack({ id_eq: this.modelId() });
68
142
  }
69
- else if (s.m.args.query) {
70
- query = s.m.args.query.clone();
143
+ else if (this.args().query) {
144
+ query = this.args().query.clone();
71
145
  }
72
146
  else {
73
- throw new Error(`No model ID was given: ${s.m.modelId} by '${paramsVariableName}' in query params: ${Object.keys(s.props.match.params).join(", ")}`);
74
- }
75
- if (s.props.abilities)
76
- query.abilities(s.p.abilities);
77
- if (s.props.preload)
78
- query.preload(s.p.preload);
79
- if (s.props.select)
80
- query.select(s.p.select);
147
+ const matchParams = this.args().match?.params || {};
148
+ throw new Error(`No model ID was given: ${this.modelId()} by '${this.paramsVariableName()}' in query params: ${Object.keys(matchParams).join(", ")}`);
149
+ }
150
+ if (this.args().abilities)
151
+ query.abilities(this.args().abilities);
152
+ if (this.args().preload)
153
+ query.preload(this.args().preload);
154
+ if (this.args().select)
155
+ query.select(this.args().select);
81
156
  const model = await query.first();
82
- if (loadModelGeneration != loadModelGenerationRef.current)
157
+ if (loadModelGeneration != this.loadModelGeneration)
83
158
  return;
84
- if (s.s.model &&
159
+ if (this.s.model &&
85
160
  model &&
86
- !s.s.notFound &&
87
- s.s.model.fullCacheKey() == model.fullCacheKey()) {
161
+ !this.s.notFound &&
162
+ this.s.model.fullCacheKey() == model.fullCacheKey()) {
88
163
  return;
89
164
  }
90
- else if (!s.s.model && !model && s.s.notFound) {
165
+ else if (!this.s.model && !model && this.s.notFound) {
91
166
  return;
92
167
  }
93
- s.set({ model, notFound: !model });
94
- }, []);
95
- const loadNewModel = useCallback(async (loadModelGeneration) => {
96
- const ModelClass = modelClass;
97
- const paramKey = ModelClass.modelName().paramKey();
98
- const modelDataFromParams = s.m.queryParams?.[paramKey] || {};
168
+ this.setState({ model, notFound: !model });
169
+ };
170
+ /** @param {number} loadModelGeneration */
171
+ loadNewModel = async (loadModelGeneration) => {
99
172
  let defaults = {};
100
- if (s.props.newIfNoId?.defaults) {
101
- let defaultsResult = s.m.newIfNoIdDefaultsResult;
173
+ if (this.args().newIfNoId?.defaults) {
174
+ let defaultsResult = this.newIfNoIdDefaultsResult;
102
175
  if (defaultsResult === null) {
103
- defaultsResult = s.props.newIfNoId.defaults();
176
+ defaultsResult = this.args().newIfNoId.defaults();
104
177
  }
105
- s.meta.newIfNoIdDefaultsResult = null;
178
+ this.newIfNoIdDefaultsResult = null;
106
179
  defaults = await defaultsResult;
107
180
  }
108
- const modelData = Object.assign(defaults, s.props.newAttributes, modelDataFromParams);
109
- const model = new ModelClass({
181
+ const model = new (this.modelClass())({
110
182
  isNewRecord: true,
111
- data: { a: modelData }
183
+ data: { a: Object.assign(defaults, this.args().newAttributes, this.newModelDataFromParams()) }
112
184
  });
113
- if (loadModelGeneration != loadModelGenerationRef.current)
185
+ if (loadModelGeneration != this.loadModelGeneration)
114
186
  return;
115
- s.set({ model });
116
- }, []);
117
- const loadModel = useCallback(async () => {
187
+ this.setState({ model, notFound: false });
188
+ };
189
+ /** @returns {Promise<void>} */
190
+ loadModel = async () => {
118
191
  // Only the newest model request may update state after route or auth changes.
119
- const loadModelGeneration = loadModelGenerationRef.current + 1;
120
- loadModelGenerationRef.current = loadModelGeneration;
121
- if (!s.m.active) {
122
- // Not active - don't do anything
123
- }
124
- else if (s.props.newIfNoId && !s.m.modelId) {
125
- return await loadNewModel(loadModelGeneration);
126
- }
127
- else if (!s.props.optional || s.m.modelId || s.m.args.query) {
128
- return await loadExistingModel(loadModelGeneration);
129
- }
130
- }, []);
131
- const onDestroyed = useCallback(({ model }) => {
132
- const forwardArgs = { model };
133
- forwardArgs[s.m.modelVariableName] = model;
134
- s.p.onDestroyed(forwardArgs);
135
- }, []);
136
- const onSignedIn = useCallback(() => {
137
- loadModel();
138
- }, []);
139
- const onSignedOut = useCallback(() => {
140
- loadModel();
141
- }, []);
142
- if (args.cacheArgs) {
143
- cacheArgs.push(...args.cacheArgs);
144
- }
145
- cacheArgs.push(queryParams);
146
- s.updateMeta({ args, modelId, modelVariableName, queryParams });
147
- if (s.meta.syncNewModel == undefined)
148
- s.meta.syncNewModel = false;
149
- if (s.meta.newIfNoIdDefaultsResult == undefined)
150
- s.meta.newIfNoIdDefaultsResult = null;
151
- if (s.m.active && s.props.newIfNoId && !s.m.modelId && !s.s.model && !s.m.syncNewModel) {
152
- if (s.props.newIfNoId?.defaults && s.m.newIfNoIdDefaultsResult === null) {
153
- const defaultsResult = s.props.newIfNoId.defaults();
154
- if (defaultsResult && typeof defaultsResult.then == "function") {
155
- s.meta.newIfNoIdDefaultsResult = defaultsResult.catch((error) => {
156
- throw error;
157
- });
158
- }
159
- else {
160
- s.meta.newIfNoIdDefaultsResult = defaultsResult;
192
+ const loadModelGeneration = this.loadModelGeneration + 1;
193
+ this.initialLoadTriggered = true;
194
+ this.loadModelGeneration = loadModelGeneration;
195
+ if (this.active() && this.args().newIfNoId && !this.modelId()) {
196
+ await this.loadNewModel(loadModelGeneration);
197
+ }
198
+ else if (this.active() && (!this.args().optional || this.modelId() || this.args().query)) {
199
+ await this.loadExistingModel(loadModelGeneration);
200
+ }
201
+ };
202
+ /** @returns {void} */
203
+ clearUpdatedConnectionFallbackTimeout() {
204
+ if (this.updatedConnectionFallbackTimeoutId) {
205
+ clearTimeout(this.updatedConnectionFallbackTimeoutId);
206
+ this.updatedConnectionFallbackTimeoutId = undefined;
207
+ }
208
+ }
209
+ /** @returns {void} */
210
+ ensureInitialLoadFallback() {
211
+ if (!this.shouldWaitForUpdatedConnection() || this.initialLoadTriggered) {
212
+ return;
213
+ }
214
+ this.clearUpdatedConnectionFallbackTimeout();
215
+ this.updatedConnectionFallbackTimeoutId = setTimeout(() => {
216
+ if (!this.updatedConnectionReady && !this.initialLoadTriggered) {
217
+ this.loadModel();
161
218
  }
219
+ }, 1000);
220
+ }
221
+ /** @param {{model: import("./base-model.js").default}} args */
222
+ onDestroyed = (args) => {
223
+ const forwardArgs = { model: args.model };
224
+ forwardArgs[this.modelVariableName()] = args.model;
225
+ this.args().onDestroyed(forwardArgs);
226
+ };
227
+ /** @returns {void} */
228
+ onSignedIn = () => {
229
+ this.loadModel();
230
+ };
231
+ /** @returns {void} */
232
+ onSignedOut = () => {
233
+ this.loadModel();
234
+ };
235
+ /** @returns {void} */
236
+ onUpdatedEventConnected = () => {
237
+ this.updatedConnectionReady = true;
238
+ this.clearUpdatedConnectionFallbackTimeout();
239
+ if (this.shouldWaitForUpdatedConnection() && !this.initialLoadTriggered) {
240
+ this.loadModel();
241
+ }
242
+ };
243
+ /** @returns {import("./base-model.js").default | undefined} */
244
+ visibleModel() {
245
+ let model = this.s.model;
246
+ if (!model) {
247
+ model = this.syncNewModel();
162
248
  }
163
- if (!(s.m.newIfNoIdDefaultsResult && typeof s.m.newIfNoIdDefaultsResult.then == "function")) {
164
- const ModelClass = modelClass;
165
- const paramKey = ModelClass.modelName().paramKey();
166
- const modelDataFromParams = s.m.queryParams?.[paramKey] || {};
167
- const modelData = Object.assign(s.m.newIfNoIdDefaultsResult || {}, s.props.newAttributes, modelDataFromParams);
168
- const model = new ModelClass({
169
- isNewRecord: true,
170
- data: { a: modelData }
171
- });
172
- s.meta.syncNewModel = model;
173
- s.set({ model });
174
- }
175
- }
176
- // Start async model loading after mount so ShapeHook state updates do not race the mount lifecycle.
177
- useEffect(() => { loadModel(); }, cacheArgs);
178
- useEffect(() => () => {
179
- loadModelGenerationRef.current += 1;
180
- }, []);
181
- useEffect(() => {
182
- let reloadModelCallback;
183
- if (args.events) {
184
- reloadModelCallback = args.events.addListener("reloadModel", loadModel);
185
- }
186
- return () => {
187
- if (reloadModelCallback) {
188
- args.events.removeListener("reloadModel", loadModel);
249
+ if (!this.active()) {
250
+ return undefined;
251
+ }
252
+ else if (this.modelId() && model && model.id() != this.modelId()) {
253
+ return undefined;
254
+ }
255
+ else if (!this.modelId() && !this.args().query && !this.args().newIfNoId) {
256
+ return undefined;
257
+ }
258
+ return model;
259
+ }
260
+ /** @returns {boolean | undefined} */
261
+ visibleNotFound() {
262
+ if (!this.active()) {
263
+ return undefined;
264
+ }
265
+ else if (this.modelId() && this.visibleModel() === undefined) {
266
+ return undefined;
267
+ }
268
+ else if (!this.modelId() && !this.args().query && !this.args().newIfNoId) {
269
+ return undefined;
270
+ }
271
+ return this.s.notFound;
272
+ }
273
+ /** @returns {void} */
274
+ setup() {
275
+ this.useStates({
276
+ model: undefined,
277
+ notFound: undefined
278
+ });
279
+ this.setInstance({ queryParams: useQueryParams() });
280
+ useEffect(() => {
281
+ if (this.s.model === undefined) {
282
+ const syncNewModel = this.syncNewModel();
283
+ if (syncNewModel) {
284
+ this.setState({ model: syncNewModel, notFound: false });
285
+ }
286
+ }
287
+ if (this.shouldWaitForUpdatedConnection()) {
288
+ this.ensureInitialLoadFallback();
189
289
  }
190
- };
191
- }, [args.events]);
192
- useUpdatedEvent(args.eventUpdated ? s.s.model : undefined, loadModel, {
193
- onConnected: loadModel
194
- });
195
- useEffect(() => {
196
- Devise.events().addListener("onDeviseSignIn", onSignedIn);
197
- Devise.events().addListener("onDeviseSignOut", onSignedOut);
198
- return () => {
199
- Devise.events().removeListener("onDeviseSignIn", onSignedIn);
200
- Devise.events().removeListener("onDeviseSignOut", onSignedOut);
201
- };
202
- });
203
- useEffect(() => {
204
- let connectDestroyed;
205
- if (s.s.model && args.onDestroyed) {
206
- connectDestroyed = ModelEvents.connectDestroyed(s.s.model, onDestroyed);
207
- }
208
- return () => {
209
- connectDestroyed?.unsubscribe();
210
- };
211
- }, [args.onDestroyed, s.s.model?.id()]);
212
- let model = s.s.model;
213
- let notFound = s.s.notFound;
214
- if (!s.m.active) {
215
- model = undefined;
216
- notFound = undefined;
217
- }
218
- else if (modelId && model && model.id() != modelId) {
219
- model = undefined;
220
- notFound = undefined;
221
- }
222
- else if (!modelId && !args.query && !s.props.newIfNoId) {
223
- model = undefined;
224
- notFound = undefined;
290
+ else {
291
+ this.loadModel();
292
+ }
293
+ }, this.cacheArgs());
294
+ // Invalidate in-flight async responses so stale loads cannot write after unmount.
295
+ useEffect(() => () => {
296
+ this.clearUpdatedConnectionFallbackTimeout();
297
+ this.loadModelGeneration += 1;
298
+ }, []);
299
+ useEffect(() => {
300
+ if (!this.args().events)
301
+ return;
302
+ this.args().events.addListener("reloadModel", this.loadModel);
303
+ return () => {
304
+ this.args().events.removeListener("reloadModel", this.loadModel);
305
+ };
306
+ }, [this.args().events]);
307
+ useUpdatedEvent(this.subscriptionModel(), this.loadModel, {
308
+ onConnected: this.onUpdatedEventConnected
309
+ });
310
+ useEffect(() => {
311
+ Devise.events().addListener("onDeviseSignIn", this.onSignedIn);
312
+ Devise.events().addListener("onDeviseSignOut", this.onSignedOut);
313
+ return () => {
314
+ Devise.events().removeListener("onDeviseSignIn", this.onSignedIn);
315
+ Devise.events().removeListener("onDeviseSignOut", this.onSignedOut);
316
+ };
317
+ });
318
+ useEffect(() => {
319
+ if (!this.s.model || !this.args().onDestroyed)
320
+ return;
321
+ const connectDestroyed = ModelEvents.connectDestroyed(this.s.model, this.onDestroyed);
322
+ return () => {
323
+ connectDestroyed.unsubscribe();
324
+ };
325
+ }, [this.args().onDestroyed, this.s.model ? this.s.model.id() : undefined]);
225
326
  }
327
+ }
328
+ /**
329
+ * @param {Function|object} modelClassArg
330
+ * @param {object | ((args: {modelClass: typeof import("./base-model.js").default}) => useModelArgs)} [argsArg]
331
+ * @returns {Record<string, any>}
332
+ */
333
+ /** useModel. */
334
+ const useModel = (modelClassArg, argsArg = {}) => {
335
+ const shapeHook = useShapeHook(UseModelShapeHook, { argsArg, modelClassArg });
336
+ const model = shapeHook.visibleModel();
337
+ const modelId = shapeHook.modelId();
338
+ const notFound = shapeHook.visibleNotFound();
339
+ const modelVariableName = shapeHook.modelVariableName();
226
340
  const result = {
227
341
  model,
228
342
  modelId,
@@ -234,4 +348,4 @@ const useModel = (modelClassArg, argsArg = {}) => {
234
348
  return result;
235
349
  };
236
350
  export default useModel;
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNwRCxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxjQUFjLE1BQU0sK0NBQStDLENBQUE7QUFDMUUsT0FBTyxRQUFRLE1BQU0sZ0JBQWdCLENBQUE7QUFDckMsT0FBTyxlQUFlLE1BQU0sd0JBQXdCLENBQUE7QUFFcEQ7Ozs7Ozs7OztHQVNHO0FBRUg7OztHQUdHO0FBQ0gsZ0JBQWdCO0FBQ2hCLHNDQUFzQztBQUN0QyxNQUFNLFFBQVEsR0FBRyxDQUFDLGFBQWEsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDL0MsTUFBTSxXQUFXLEdBQUcsY0FBYyxFQUFFLENBQUE7SUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDeEMsSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFBO0lBRXBCLElBQUksT0FBTyxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7UUFDakMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxFQUFDLFVBQVUsRUFBQyxDQUFDLENBQUE7SUFDOUIsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLEdBQUcsT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFeEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNWLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFFBQVEsRUFBRSxTQUFTO0tBQ3BCLENBQUMsQ0FBQTtJQUVGLElBQUksUUFB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cG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IERldmlzZSBmcm9tIFwiLi9kZXZpc2UuanNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzLmpzXCJcbmltcG9ydCB1c2VRdWVyeVBhcmFtcyBmcm9tIFwib24tbG9jYXRpb24tY2hhbmdlZC9idWlsZC91c2UtcXVlcnktcGFyYW1zLmpzXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwiLi91c2Utc2hhcGUuanNcIlxuaW1wb3J0IHVzZVVwZGF0ZWRFdmVudCBmcm9tIFwiLi91c2UtdXBkYXRlZC1ldmVudC5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gdXNlTW9kZWxBcmdzXG4gKiBAcHJvcGVydHkgeyhhcmc6IG9iamVjdCkgPT4gRnVuY3Rpb259IFtjYWxsYmFja11cbiAqIEBwcm9wZXJ0eSB7KGFyZzogb2JqZWN0KSA9PiBvYmplY3R9IFthcmdzXVxuICogQHByb3BlcnR5IHsoKSA9PiBudW1iZXJ8c3RyaW5nfSBbbG9hZEJ5UXVlcnlQYXJhbV1cbiAqIEBwcm9wZXJ0eSB7YW55W119IFtjYWNoZUFyZ3NdXG4gKiBAcHJvcGVydHkge3twYXJhbXM6IG9iamVjdH19IFttYXRjaF1cbiAqIEBwcm9wZXJ0eSB7KGN0eDogeyBtb2RlbDogaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHQgfSkgPT4gdm9pZH0gW29uRGVzdHJveWVkXVxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gW3F1ZXJ5XVxuICovXG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbnxvYmplY3R9IG1vZGVsQ2xhc3NBcmdcbiAqIEBwYXJhbSB7b2JqZWN0IHwgKChhcmdzOiB7bW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSkgPT4gdXNlTW9kZWxBcmdzKX0gW2FyZ3NBcmddXG4gKi9cbi8qKiB1c2VNb2RlbC4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5jb25zdCB1c2VNb2RlbCA9IChtb2RlbENsYXNzQXJnLCBhcmdzQXJnID0ge30pID0+IHtcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG4gIGNvbnN0IGxvYWRNb2RlbEdlbmVyYXRpb25SZWYgPSB1c2VSZWYoMClcbiAgbGV0IGFyZ3MsIG1vZGVsQ2xhc3NcblxuICBpZiAodHlwZW9mIGFyZ3NBcmcgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgYXJncyA9IGFyZ3NBcmcoe21vZGVsQ2xhc3N9KVxuICB9IGVsc2Uge1xuICAgIGFyZ3MgPSBhcmdzQXJnXG4gIH1cblxuICBjb25zdCBzID0gdXNlU2hhcGUoYXJncylcblxuICBzLnVzZVN0YXRlcyh7XG4gICAgbW9kZWw6IHVuZGVmaW5lZCxcbiAgICBub3RGb3VuZDogdW5kZWZpbmVkXG4gIH0pXG5cbiAgaWYgKFwiYWN0aXZlXCIgaW4gcy5wcm9wcyAmJiAhcy5wcm9wcy5hY3RpdmUpIHtcbiAgICBzLm1ldGEuYWN0aXZlID0gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICBzLm1ldGEuYWN0aXZlID0gdHJ1ZVxuICB9XG5cbiAgaWYgKHR5cGVvZiBtb2RlbENsYXNzQXJnID09IFwib2JqZWN0XCIpIHtcbiAgICBtb2RlbENsYXNzID0gbW9kZWxDbGFzc0FyZy5jYWxsYmFjayh7cXVlcnlQYXJhbXN9KVxuICB9IGVsc2Uge1xuICAgIG1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzQXJnXG4gIH1cblxuICBjb25zdCBwYXJhbXNWYXJpYWJsZU5hbWUgPSBgJHttb2RlbENsYXNzLm1vZGVsTmFtZSgpLnBhcmFtS2V5KCl9X2lkYFxuICBsZXQgbW9kZWxJZFxuXG4gIGlmIChhcmdzLmxvYWRCeVF1ZXJ5UGFyYW0pIHtcbiAgICBtb2RlbElkID0gYXJncy5sb2FkQnlRdWVyeVBhcmFtKHtxdWVyeVBhcmFtc30pXG4gIH0gZWxzZSBpZiAoIWFyZ3MucXVlcnkpIHtcbiAgICBpZiAoIWFyZ3MubWF0Y2gpIHRocm93IG5ldyBFcnJvcihcIkJvdGggJ2xvYWRCeVF1ZXJ5UGFyYW0nIGFuZCAnbWF0Y2gnIHdhc24ndCBnaXZlblwiKVxuXG4gICAgbW9kZWxJZCA9IGFyZ3MubWF0Y2gucGFyYW1zW3BhcmFtc1ZhcmlhYmxlTmFtZV0gfHwgYXJncy5tYXRjaC5wYXJhbXMuaWRcbiAgfVxuXG4gIGNvbnN0IG1vZGVsVmFyaWFibGVOYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgdHJ1ZSlcbiAgY29uc3QgY2FjaGVBcmdzID0gW21vZGVsSWRdXG5cbiAgY29uc3QgbG9hZEV4aXN0aW5nTW9kZWwgPSB1c2VDYWxsYmFjayhhc3luYyAobG9hZE1vZGVsR2VuZXJhdGlvbikgPT4ge1xuICAgIGxldCBxdWVyeVxuXG4gICAgaWYgKHMubS5tb2RlbElkKSB7XG4gICAgICBxdWVyeSA9IG1vZGVsQ2xhc3MucmFuc2Fjayh7aWRfZXE6IHMubS5tb2RlbElkfSlcbiAgICB9IGVsc2UgaWYgKHMubS5hcmdzLnF1ZXJ5KSB7XG4gICAgICBxdWVyeSA9IHMubS5hcmdzLnF1ZXJ5LmNsb25lKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbCBJRCB3YXMgZ2l2ZW46ICR7cy5tLm1vZGVsSWR9IGJ5ICcke3BhcmFtc1ZhcmlhYmxlTmFtZX0nIGluIHF1ZXJ5IHBhcmFtczogJHtPYmplY3Qua2V5cyhzLnByb3BzLm1hdGNoLnBhcmFtcykuam9pbihcIiwgXCIpfWApXG4gICAgfVxuXG4gICAgaWYgKHMucHJvcHMuYWJpbGl0aWVzKSBxdWVyeS5hYmlsaXRpZXMocy5wLmFiaWxpdGllcylcbiAgICBpZiAocy5wcm9wcy5wcmVsb2FkKSBxdWVyeS5wcmVsb2FkKHMucC5wcmVsb2FkKVxuICAgIGlmIChzLnByb3BzLnNlbGVjdCkgcXVlcnkuc2VsZWN0KHMucC5zZWxlY3QpXG5cbiAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHF1ZXJ5LmZpcnN0KClcblxuICAgIGlmIChsb2FkTW9kZWxHZW5lcmF0aW9uICE9IGxvYWRNb2RlbEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG5cbiAgICBpZiAoXG4gICAgICBzLnMubW9kZWwgJiZcbiAgICAgIG1vZGVsICYmXG4gICAgICAhcy5zLm5vdEZvdW5kICYmXG4gICAgICBzLnMubW9kZWwuZnVsbENhY2hlS2V5KCkgPT0gbW9kZWwuZnVsbENhY2hlS2V5KClcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAoIXMucy5tb2RlbCAmJiAhbW9kZWwgJiYgcy5zLm5vdEZvdW5kKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzLnNldCh7bW9kZWwsIG5vdEZvdW5kOiAhbW9kZWx9KVxuICB9LCBbXSlcblxuICBjb25zdCBsb2FkTmV3TW9kZWwgPSB1c2VDYWxsYmFjayhhc3luYyAobG9hZE1vZGVsR2VuZXJhdGlvbikgPT4ge1xuICAgIGNvbnN0IE1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzXG4gICAgY29uc3QgcGFyYW1LZXkgPSBNb2RlbENsYXNzLm1vZGVsTmFtZSgpLnBhcmFtS2V5KClcbiAgICBjb25zdCBtb2RlbERhdGFGcm9tUGFyYW1zID0gcy5tLnF1ZXJ5UGFyYW1zPy5bcGFyYW1LZXldIHx8IHt9XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7fVxuXG4gICAgaWYgKHMucHJvcHMubmV3SWZOb0lkPy5kZWZhdWx0cykge1xuICAgICAgbGV0IGRlZmF1bHRzUmVzdWx0ID0gcy5tLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0XG5cbiAgICAgIGlmIChkZWZhdWx0c1Jlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgICBkZWZhdWx0c1Jlc3VsdCA9IHMucHJvcHMubmV3SWZOb0lkLmRlZmF1bHRzKClcbiAgICAgIH1cblxuICAgICAgcy5tZXRhLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID0gbnVsbFxuICAgICAgZGVmYXVsdHMgPSBhd2FpdCBkZWZhdWx0c1Jlc3VsdFxuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsRGF0YSA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIHMucHJvcHMubmV3QXR0cmlidXRlcywgbW9kZWxEYXRhRnJvbVBhcmFtcylcbiAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbENsYXNzKHtcbiAgICAgIGlzTmV3UmVjb3JkOiB0cnVlLFxuICAgICAgZGF0YToge2E6IG1vZGVsRGF0YX1cbiAgICB9KVxuXG4gICAgaWYgKGxvYWRNb2RlbEdlbmVyYXRpb24gIT0gbG9hZE1vZGVsR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cblxuICAgIHMuc2V0KHttb2RlbH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGxvYWRNb2RlbCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICAvLyBPbmx5IHRoZSBuZXdlc3QgbW9kZWwgcmVxdWVzdCBtYXkgdXBkYXRlIHN0YXRlIGFmdGVyIHJvdXRlIG9yIGF1dGggY2hhbmdlcy5cbiAgICBjb25zdCBsb2FkTW9kZWxHZW5lcmF0aW9uID0gbG9hZE1vZGVsR2VuZXJhdGlvblJlZi5jdXJyZW50ICsgMVxuXG4gICAgbG9hZE1vZGVsR2VuZXJhdGlvblJlZi5jdXJyZW50ID0gbG9hZE1vZGVsR2VuZXJhdGlvblxuICAgIGlmICghcy5tLmFjdGl2ZSkge1xuICAgICAgLy8gTm90IGFjdGl2ZSAtIGRvbid0IGRvIGFueXRoaW5nXG4gICAgfSBlbHNlIGlmIChzLnByb3BzLm5ld0lmTm9JZCAmJiAhcy5tLm1vZGVsSWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBsb2FkTmV3TW9kZWwobG9hZE1vZGVsR2VuZXJhdGlvbilcbiAgICB9IGVsc2UgaWYgKCFzLnByb3BzLm9wdGlvbmFsIHx8IHMubS5tb2RlbElkIHx8IHMubS5hcmdzLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gYXdhaXQgbG9hZEV4aXN0aW5nTW9kZWwobG9hZE1vZGVsR2VuZXJhdGlvbilcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uRGVzdHJveWVkID0gdXNlQ2FsbGJhY2soKHttb2RlbH0pID0+IHtcbiAgICBjb25zdCBmb3J3YXJkQXJncyA9IHttb2RlbH1cblxuICAgIGZvcndhcmRBcmdzW3MubS5tb2RlbFZhcmlhYmxlTmFtZV0gPSBtb2RlbFxuXG4gICAgcy5wLm9uRGVzdHJveWVkKGZvcndhcmRBcmdzKVxuICB9LCBbXSlcblxuICBjb25zdCBvblNpZ25lZEluID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGxvYWRNb2RlbCgpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uU2lnbmVkT3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGxvYWRNb2RlbCgpXG4gIH0sIFtdKVxuXG4gIGlmIChhcmdzLmNhY2hlQXJncykge1xuICAgIGNhY2hlQXJncy5wdXNoKC4uLmFyZ3MuY2FjaGVBcmdzKVxuICB9XG5cbiAgY2FjaGVBcmdzLnB1c2gocXVlcnlQYXJhbXMpXG5cbiAgcy51cGRhdGVNZXRhKHthcmdzLCBtb2RlbElkLCBtb2RlbFZhcmlhYmxlTmFtZSwgcXVlcnlQYXJhbXN9KVxuICBpZiAocy5tZXRhLnN5bmNOZXdNb2RlbCA9PSB1bmRlZmluZWQpIHMubWV0YS5zeW5jTmV3TW9kZWwgPSBmYWxzZVxuICBpZiAocy5tZXRhLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID09IHVuZGVmaW5lZCkgcy5tZXRhLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID0gbnVsbFxuXG4gIGlmIChzLm0uYWN0aXZlICYmIHMucHJvcHMubmV3SWZOb0lkICYmICFzLm0ubW9kZWxJZCAmJiAhcy5zLm1vZGVsICYmICFzLm0uc3luY05ld01vZGVsKSB7XG4gICAgaWYgKHMucHJvcHMubmV3SWZOb0lkPy5kZWZhdWx0cyAmJiBzLm0ubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzUmVzdWx0ID0gcy5wcm9wcy5uZXdJZk5vSWQuZGVmYXVsdHMoKVxuXG4gICAgICBpZiAoZGVmYXVsdHNSZXN1bHQgJiYgdHlwZW9mIGRlZmF1bHRzUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHMubWV0YS5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCA9IGRlZmF1bHRzUmVzdWx0LmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLm1ldGEubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghKHMubS5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCAmJiB0eXBlb2Ygcy5tLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKSkge1xuICAgICAgY29uc3QgTW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcbiAgICAgIGNvbnN0IHBhcmFtS2V5ID0gTW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5wYXJhbUtleSgpXG4gICAgICBjb25zdCBtb2RlbERhdGFGcm9tUGFyYW1zID0gcy5tLnF1ZXJ5UGFyYW1zPy5bcGFyYW1LZXldIHx8IHt9XG4gICAgICBjb25zdCBtb2RlbERhdGEgPSBPYmplY3QuYXNzaWduKHMubS5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCB8fCB7fSwgcy5wcm9wcy5uZXdBdHRyaWJ1dGVzLCBtb2RlbERhdGFGcm9tUGFyYW1zKVxuICAgICAgY29uc3QgbW9kZWwgPSBuZXcgTW9kZWxDbGFzcyh7XG4gICAgICAgIGlzTmV3UmVjb3JkOiB0cnVlLFxuICAgICAgICBkYXRhOiB7YTogbW9kZWxEYXRhfVxuICAgICAgfSlcblxuICAgICAgcy5tZXRhLnN5bmNOZXdNb2RlbCA9IG1vZGVsXG4gICAgICBzLnNldCh7bW9kZWx9KVxuICAgIH1cbiAgfVxuXG4gIC8vIFN0YXJ0IGFzeW5jIG1vZGVsIGxvYWRpbmcgYWZ0ZXIgbW91bnQgc28gU2hhcGVIb29rIHN0YXRlIHVwZGF0ZXMgZG8gbm90IHJhY2UgdGhlIG1vdW50IGxpZmVjeWNsZS5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+IHsgbG9hZE1vZGVsKCkgfSxcbiAgICBjYWNoZUFyZ3NcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiAoKSA9PiB7XG4gICAgbG9hZE1vZGVsR2VuZXJhdGlvblJlZi5jdXJyZW50ICs9IDFcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgcmVsb2FkTW9kZWxDYWxsYmFja1xuXG4gICAgaWYgKGFyZ3MuZXZlbnRzKSB7XG4gICAgICByZWxvYWRNb2RlbENhbGxiYWNrID0gYXJncy5ldmVudHMuYWRkTGlzdGVuZXIoXCJyZWxvYWRNb2RlbFwiLCBsb2FkTW9kZWwpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyZWxvYWRNb2RlbENhbGxiYWNrKSB7XG4gICAgICAgIGFyZ3MuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKFwicmVsb2FkTW9kZWxcIiwgbG9hZE1vZGVsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2FyZ3MuZXZlbnRzXSlcblxuICB1c2VVcGRhdGVkRXZlbnQoYXJncy5ldmVudFVwZGF0ZWQgPyBzLnMubW9kZWwgOiB1bmRlZmluZWQsIGxvYWRNb2RlbCwge1xuICAgIG9uQ29ubmVjdGVkOiBsb2FkTW9kZWxcbiAgfSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIERldmlzZS5ldmVudHMoKS5hZGRMaXN0ZW5lcihcIm9uRGV2aXNlU2lnbkluXCIsIG9uU2lnbmVkSW4pXG4gICAgRGV2aXNlLmV2ZW50cygpLmFkZExpc3RlbmVyKFwib25EZXZpc2VTaWduT3V0XCIsIG9uU2lnbmVkT3V0KVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIERldmlzZS5ldmVudHMoKS5yZW1vdmVMaXN0ZW5lcihcIm9uRGV2aXNlU2lnbkluXCIsIG9uU2lnbmVkSW4pXG4gICAgICBEZXZpc2UuZXZlbnRzKCkucmVtb3ZlTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25PdXRcIiwgb25TaWduZWRPdXQpXG4gICAgfVxuICB9KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNvbm5lY3REZXN0cm95ZWRcblxuICAgIGlmIChzLnMubW9kZWwgJiYgYXJncy5vbkRlc3Ryb3llZCkge1xuICAgICAgY29ubmVjdERlc3Ryb3llZCA9IE1vZGVsRXZlbnRzLmNvbm5lY3REZXN0cm95ZWQocy5zLm1vZGVsLCBvbkRlc3Ryb3llZClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29ubmVjdERlc3Ryb3llZD8udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfSwgW2FyZ3Mub25EZXN0cm95ZWQsIHMucy5tb2RlbD8uaWQoKV0pXG5cbiAgbGV0IG1vZGVsID0gcy5zLm1vZGVsXG4gIGxldCBub3RGb3VuZCA9IHMucy5ub3RGb3VuZFxuXG4gIGlmICghcy5tLmFjdGl2ZSkge1xuICAgIG1vZGVsID0gdW5kZWZpbmVkXG4gICAgbm90Rm91bmQgPSB1bmRlZmluZWRcbiAgfSBlbHNlIGlmIChtb2RlbElkICYmIG1vZGVsICYmIG1vZGVsLmlkKCkgIT0gbW9kZWxJZCkge1xuICAgIG1vZGVsID0gdW5kZWZpbmVkXG4gICAgbm90Rm91bmQgPSB1bmRlZmluZWRcbiAgfSBlbHNlIGlmICghbW9kZWxJZCAmJiAhYXJncy5xdWVyeSAmJiAhcy5wcm9wcy5uZXdJZk5vSWQpIHtcbiAgICBtb2RlbCA9IHVuZGVmaW5lZFxuICAgIG5vdEZvdW5kID0gdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgbW9kZWwsXG4gICAgbW9kZWxJZCxcbiAgICBub3RGb3VuZFxuICB9XG5cbiAgcmVzdWx0W21vZGVsVmFyaWFibGVOYW1lXSA9IG1vZGVsXG4gIHJlc3VsdFtgJHttb2RlbFZhcmlhYmxlTmFtZX1JZGBdID0gbW9kZWxJZFxuICByZXN1bHRbYCR7bW9kZWxWYXJpYWJsZU5hbWV9Tm90Rm91bmRgXSA9IG5vdEZvdW5kXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VNb2RlbFxuIl19
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sbUJBQW1CLENBQUE7QUFDekQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUMvQixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxjQUFjLE1BQU0sK0NBQStDLENBQUE7QUFDMUUsT0FBTyxlQUFlLE1BQU0sd0JBQXdCLENBQUE7QUFFcEQ7Ozs7Ozs7OztHQVNHO0FBRUgseUNBQXlDO0FBQ3pDLE1BQU0saUJBQWtCLFNBQVEsU0FBUztJQUN2QyxrQ0FBa0MsR0FBRyxTQUFTLENBQUE7SUFFOUMsbUJBQW1CO0lBQ25CLFlBQVksS0FBSztRQUNmLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNaLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUE7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtRQUM1QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFBO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFBO1FBQzVCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUE7SUFDckMsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixNQUFNO1FBQ0osT0FBTyxDQUFDLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEUsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxJQUFJO1FBQ0YsSUFBSSxP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Q0FBQTtJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUNqQyxNQUFNLENBQUMsR0FBRyxpQkFBaUIsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFBO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLGlCQUFpQixVQUFVLENBQUMsR0FBRyxRQUFRLENBQUE7SUFFakQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRCxlQUFlLFFBQVEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IHtTaGFwZUhvb2ssIHVzZVNoYXBlSG9va30gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlXCJcbmltcG9ydCB7dXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IERldmlzZSBmcm9tIFwiLi9kZXZpc2UuanNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgTW9kZWxFdmVudHMgZnJvbSBcIi4vbW9kZWwtZXZlbnRzLmpzXCJcbmltcG9ydCB1c2VRdWVyeVBhcmFtcyBmcm9tIFwib24tbG9jYXRpb24tY2hhbmdlZC9idWlsZC91c2UtcXVlcnktcGFyYW1zLmpzXCJcbmltcG9ydCB1c2VVcGRhdGVkRXZlbnQgZnJvbSBcIi4vdXNlLXVwZGF0ZWQtZXZlbnQuanNcIlxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHVzZU1vZGVsQXJnc1xuICogQHByb3BlcnR5IHsoYXJnOiBvYmplY3QpID0+IEZ1bmN0aW9ufSBbY2FsbGJhY2tdXG4gKiBAcHJvcGVydHkgeyhhcmc6IG9iamVjdCkgPT4gb2JqZWN0fSBbYXJnc11cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IHtxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZH0pID0+IG51bWJlcnxzdHJpbmd9IFtsb2FkQnlRdWVyeVBhcmFtXVxuICogQHByb3BlcnR5IHthbnlbXX0gW2NhY2hlQXJnc11cbiAqIEBwcm9wZXJ0eSB7e3BhcmFtczogb2JqZWN0fX0gW21hdGNoXVxuICogQHByb3BlcnR5IHsoY3R4OiB7IG1vZGVsOiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCB9KSA9PiB2b2lkfSBbb25EZXN0cm95ZWRdXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIi4vY29sbGVjdGlvbi5qc1wiKS5kZWZhdWx0fSBbcXVlcnldXG4gKi9cblxuLyoqIEhvb2sgc3RhdGUgY29udGFpbmVyIGZvciB1c2VNb2RlbC4gKi9cbmNsYXNzIFVzZU1vZGVsU2hhcGVIb29rIGV4dGVuZHMgU2hhcGVIb29rIHtcbiAgdXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZCA9IHVuZGVmaW5lZFxuXG4gIC8qKiBDb25zdHJ1Y3Rvci4gKi9cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcylcbiAgICB0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkID0gZmFsc2VcbiAgICB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24gPSAwXG4gICAgdGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCA9IG51bGxcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gdW5kZWZpbmVkXG4gICAgdGhpcy51cGRhdGVkQ29ubmVjdGlvblJlYWR5ID0gZmFsc2VcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgYWN0aXZlKCkge1xuICAgIHJldHVybiAhKFwiYWN0aXZlXCIgaW4gdGhpcy5hcmdzKCkpIHx8IEJvb2xlYW4odGhpcy5hcmdzKCkuYWN0aXZlKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt1c2VNb2RlbEFyZ3MgJiBSZWNvcmQ8c3RyaW5nLCBhbnk+fSAqL1xuICBhcmdzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wLmFyZ3NBcmcgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLmFyZ3NBcmcoe21vZGVsQ2xhc3M6IHRoaXMubW9kZWxDbGFzcygpfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wLmFyZ3NBcmcgfHwge31cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSAqL1xuICBtb2RlbENsYXNzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wLm1vZGVsQ2xhc3NBcmcgPT0gXCJvYmplY3RcIikge1xuICAgICAgcmV0dXJuIHRoaXMucC5tb2RlbENsYXNzQXJnLmNhbGxiYWNrKHtxdWVyeVBhcmFtczogdGhpcy5xdWVyeVBhcmFtc30pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucC5tb2RlbENsYXNzQXJnXG4gIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gKi9cbiAgcGFyYW1zVmFyaWFibGVOYW1lKCkge1xuICAgIHJldHVybiBgJHt0aGlzLm1vZGVsQ2xhc3MoKS5tb2RlbE5hbWUoKVxuICAgICAgLnBhcmFtS2V5KCl9X2lkYFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gIG1vZGVsSWQoKSB7XG4gICAgaWYgKHRoaXMuYXJncygpLmxvYWRCeVF1ZXJ5UGFyYW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmFyZ3MoKS5sb2FkQnlRdWVyeVBhcmFtKHtxdWVyeVBhcmFtczogdGhpcy5xdWVyeVBhcmFtc30pXG4gICAgfSBlbHNlIGlmICh0aGlzLmFyZ3MoKS5xdWVyeSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAoIXRoaXMuYXJncygpLm1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCb3RoICdsb2FkQnlRdWVyeVBhcmFtJyBhbmQgJ21hdGNoJyB3YXNuJ3QgZ2l2ZW5cIilcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcmdzKCkubWF0Y2gucGFyYW1zW3RoaXMucGFyYW1zVmFyaWFibGVOYW1lKCldIHx8IHRoaXMuYXJncygpLm1hdGNoLnBhcmFtcy5pZFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9ICovXG4gIG1vZGVsVmFyaWFibGVOYW1lKCkge1xuICAgIHJldHVybiBpbmZsZWN0aW9uLmNhbWVsaXplKHRoaXMubW9kZWxDbGFzcygpLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgdHJ1ZSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7YW55W119ICovXG4gIGNhY2hlQXJncygpIHtcbiAgICByZXR1cm4gW3RoaXMubW9kZWxJZCgpXS5jb25jYXQodGhpcy5hcmdzKCkuY2FjaGVBcmdzIHx8IFtdLCB0aGlzLnF1ZXJ5UGFyYW1zKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuICBzaG91bGRXYWl0Rm9yVXBkYXRlZENvbm5lY3Rpb24oKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5hcmdzKCkuZXZlbnRVcGRhdGVkICYmIHRoaXMubW9kZWxJZCgpICYmICF0aGlzLnMubW9kZWwpXG4gIH1cblxuICAvKiogQHJldHVybnMge29iamVjdH0gKi9cbiAgbmV3TW9kZWxEYXRhRnJvbVBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVBhcmFtcz8uW3RoaXMubW9kZWxDbGFzcygpLm1vZGVsTmFtZSgpXG4gICAgICAucGFyYW1LZXkoKV0gfHwge31cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgaGFzQXN5bmNEZWZhdWx0cygpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ICYmIHR5cGVvZiB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtvYmplY3QgfCBudWxsfSAqL1xuICBzeW5jRGVmYXVsdHNGb3JOZXdNb2RlbCgpIHtcbiAgICBpZiAoIXRoaXMuYXJncygpLm5ld0lmTm9JZD8uZGVmYXVsdHMpIHtcbiAgICAgIHJldHVybiB7fVxuICAgIH0gZWxzZSBpZiAodGhpcy5oYXNBc3luY0RlZmF1bHRzKCkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzUmVzdWx0ID0gdGhpcy5hcmdzKCkubmV3SWZOb0lkLmRlZmF1bHRzKClcblxuICAgICAgaWYgKGRlZmF1bHRzUmVzdWx0ICYmIHR5cGVvZiBkZWZhdWx0c1Jlc3VsdC50aGVuID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID0gZGVmYXVsdHNSZXN1bHQuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuXG4gICAgICB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID0gZGVmYXVsdHNSZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCB8fCB7fVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gKi9cbiAgc3luY05ld01vZGVsKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmUoKSB8fCAhdGhpcy5hcmdzKCkubmV3SWZOb0lkIHx8IHRoaXMubW9kZWxJZCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdHMgPSB0aGlzLnN5bmNEZWZhdWx0c0Zvck5ld01vZGVsKClcblxuICAgIGlmIChkZWZhdWx0cyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBuZXcgKHRoaXMubW9kZWxDbGFzcygpKSh7XG4gICAgICBpc05ld1JlY29yZDogdHJ1ZSxcbiAgICAgIGRhdGE6IHthOiBPYmplY3QuYXNzaWduKGRlZmF1bHRzLCB0aGlzLmFyZ3MoKS5uZXdBdHRyaWJ1dGVzLCB0aGlzLm5ld01vZGVsRGF0YUZyb21QYXJhbXMoKSl9XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9ICovXG4gIHN1YnNjcmlwdGlvbk1vZGVsKCkge1xuICAgIGlmICghdGhpcy5hcmdzKCkuZXZlbnRVcGRhdGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICh0aGlzLnMubW9kZWwpIHtcbiAgICAgIHJldHVybiB0aGlzLnMubW9kZWxcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm1vZGVsSWQoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBuZXcgKHRoaXMubW9kZWxDbGFzcygpKSh7XG4gICAgICBkYXRhOiB7YToge1t0aGlzLm1vZGVsQ2xhc3MoKS5wcmltYXJ5S2V5KCldOiB0aGlzLm1vZGVsSWQoKX19XG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge251bWJlcn0gbG9hZE1vZGVsR2VuZXJhdGlvbiAqL1xuICBsb2FkRXhpc3RpbmdNb2RlbCA9IGFzeW5jIChsb2FkTW9kZWxHZW5lcmF0aW9uKSA9PiB7XG4gICAgbGV0IHF1ZXJ5XG5cbiAgICBpZiAodGhpcy5tb2RlbElkKCkpIHtcbiAgICAgIHF1ZXJ5ID0gdGhpcy5tb2RlbENsYXNzKCkucmFuc2Fjayh7aWRfZXE6IHRoaXMubW9kZWxJZCgpfSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXJncygpLnF1ZXJ5KSB7XG4gICAgICBxdWVyeSA9IHRoaXMuYXJncygpLnF1ZXJ5LmNsb25lKClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWF0Y2hQYXJhbXMgPSB0aGlzLmFyZ3MoKS5tYXRjaD8ucGFyYW1zIHx8IHt9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbW9kZWwgSUQgd2FzIGdpdmVuOiAke3RoaXMubW9kZWxJZCgpfSBieSAnJHt0aGlzLnBhcmFtc1ZhcmlhYmxlTmFtZSgpfScgaW4gcXVlcnkgcGFyYW1zOiAke09iamVjdC5rZXlzKG1hdGNoUGFyYW1zKS5qb2luKFwiLCBcIil9YClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcmdzKCkuYWJpbGl0aWVzKSBxdWVyeS5hYmlsaXRpZXModGhpcy5hcmdzKCkuYWJpbGl0aWVzKVxuICAgIGlmICh0aGlzLmFyZ3MoKS5wcmVsb2FkKSBxdWVyeS5wcmVsb2FkKHRoaXMuYXJncygpLnByZWxvYWQpXG4gICAgaWYgKHRoaXMuYXJncygpLnNlbGVjdCkgcXVlcnkuc2VsZWN0KHRoaXMuYXJncygpLnNlbGVjdClcblxuICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgcXVlcnkuZmlyc3QoKVxuXG4gICAgaWYgKGxvYWRNb2RlbEdlbmVyYXRpb24gIT0gdGhpcy5sb2FkTW9kZWxHZW5lcmF0aW9uKSByZXR1cm5cblxuICAgIGlmIChcbiAgICAgIHRoaXMucy5tb2RlbCAmJlxuICAgICAgbW9kZWwgJiZcbiAgICAgICF0aGlzLnMubm90Rm91bmQgJiZcbiAgICAgIHRoaXMucy5tb2RlbC5mdWxsQ2FjaGVLZXkoKSA9PSBtb2RlbC5mdWxsQ2FjaGVLZXkoKVxuICAgICkge1xuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIGlmICghdGhpcy5zLm1vZGVsICYmICFtb2RlbCAmJiB0aGlzLnMubm90Rm91bmQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe21vZGVsLCBub3RGb3VuZDogIW1vZGVsfSlcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge251bWJlcn0gbG9hZE1vZGVsR2VuZXJhdGlvbiAqL1xuICBsb2FkTmV3TW9kZWwgPSBhc3luYyAobG9hZE1vZGVsR2VuZXJhdGlvbikgPT4ge1xuICAgIGxldCBkZWZhdWx0cyA9IHt9XG5cbiAgICBpZiAodGhpcy5hcmdzKCkubmV3SWZOb0lkPy5kZWZhdWx0cykge1xuICAgICAgbGV0IGRlZmF1bHRzUmVzdWx0ID0gdGhpcy5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdFxuXG4gICAgICBpZiAoZGVmYXVsdHNSZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgZGVmYXVsdHNSZXN1bHQgPSB0aGlzLmFyZ3MoKS5uZXdJZk5vSWQuZGVmYXVsdHMoKVxuICAgICAgfVxuXG4gICAgICB0aGlzLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID0gbnVsbFxuICAgICAgZGVmYXVsdHMgPSBhd2FpdCBkZWZhdWx0c1Jlc3VsdFxuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsID0gbmV3ICh0aGlzLm1vZGVsQ2xhc3MoKSkoe1xuICAgICAgaXNOZXdSZWNvcmQ6IHRydWUsXG4gICAgICBkYXRhOiB7YTogT2JqZWN0LmFzc2lnbihkZWZhdWx0cywgdGhpcy5hcmdzKCkubmV3QXR0cmlidXRlcywgdGhpcy5uZXdNb2RlbERhdGFGcm9tUGFyYW1zKCkpfVxuICAgIH0pXG5cbiAgICBpZiAobG9hZE1vZGVsR2VuZXJhdGlvbiAhPSB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24pIHJldHVyblxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7bW9kZWwsIG5vdEZvdW5kOiBmYWxzZX0pXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59ICovXG4gIGxvYWRNb2RlbCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyBPbmx5IHRoZSBuZXdlc3QgbW9kZWwgcmVxdWVzdCBtYXkgdXBkYXRlIHN0YXRlIGFmdGVyIHJvdXRlIG9yIGF1dGggY2hhbmdlcy5cbiAgICBjb25zdCBsb2FkTW9kZWxHZW5lcmF0aW9uID0gdGhpcy5sb2FkTW9kZWxHZW5lcmF0aW9uICsgMVxuXG4gICAgdGhpcy5pbml0aWFsTG9hZFRyaWdnZXJlZCA9IHRydWVcbiAgICB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24gPSBsb2FkTW9kZWxHZW5lcmF0aW9uXG4gICAgaWYgKHRoaXMuYWN0aXZlKCkgJiYgdGhpcy5hcmdzKCkubmV3SWZOb0lkICYmICF0aGlzLm1vZGVsSWQoKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkTmV3TW9kZWwobG9hZE1vZGVsR2VuZXJhdGlvbilcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlKCkgJiYgKCF0aGlzLmFyZ3MoKS5vcHRpb25hbCB8fCB0aGlzLm1vZGVsSWQoKSB8fCB0aGlzLmFyZ3MoKS5xdWVyeSkpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEV4aXN0aW5nTW9kZWwobG9hZE1vZGVsR2VuZXJhdGlvbilcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIGNsZWFyVXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXQoKSB7XG4gICAgaWYgKHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZClcbiAgICAgIHRoaXMudXBkYXRlZENvbm5lY3Rpb25GYWxsYmFja1RpbWVvdXRJZCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgZW5zdXJlSW5pdGlhbExvYWRGYWxsYmFjaygpIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkV2FpdEZvclVwZGF0ZWRDb25uZWN0aW9uKCkgfHwgdGhpcy5pbml0aWFsTG9hZFRyaWdnZXJlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5jbGVhclVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0KClcbiAgICB0aGlzLnVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy51cGRhdGVkQ29ubmVjdGlvblJlYWR5ICYmICF0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkKSB7XG4gICAgICAgIHRoaXMubG9hZE1vZGVsKClcbiAgICAgIH1cbiAgICB9LCAxMDAwKVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7e21vZGVsOiBpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH19IGFyZ3MgKi9cbiAgb25EZXN0cm95ZWQgPSAoYXJncykgPT4ge1xuICAgIGNvbnN0IGZvcndhcmRBcmdzID0ge21vZGVsOiBhcmdzLm1vZGVsfVxuXG4gICAgZm9yd2FyZEFyZ3NbdGhpcy5tb2RlbFZhcmlhYmxlTmFtZSgpXSA9IGFyZ3MubW9kZWxcblxuICAgIHRoaXMuYXJncygpLm9uRGVzdHJveWVkKGZvcndhcmRBcmdzKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvblNpZ25lZEluID0gKCkgPT4ge1xuICAgIHRoaXMubG9hZE1vZGVsKClcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbiAgb25TaWduZWRPdXQgPSAoKSA9PiB7XG4gICAgdGhpcy5sb2FkTW9kZWwoKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuICBvblVwZGF0ZWRFdmVudENvbm5lY3RlZCA9ICgpID0+IHtcbiAgICB0aGlzLnVwZGF0ZWRDb25uZWN0aW9uUmVhZHkgPSB0cnVlXG4gICAgdGhpcy5jbGVhclVwZGF0ZWRDb25uZWN0aW9uRmFsbGJhY2tUaW1lb3V0KClcblxuICAgIGlmICh0aGlzLnNob3VsZFdhaXRGb3JVcGRhdGVkQ29ubmVjdGlvbigpICYmICF0aGlzLmluaXRpYWxMb2FkVHJpZ2dlcmVkKSB7XG4gICAgICB0aGlzLmxvYWRNb2RlbCgpXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZH0gKi9cbiAgdmlzaWJsZU1vZGVsKCkge1xuICAgIGxldCBtb2RlbCA9IHRoaXMucy5tb2RlbFxuXG4gICAgaWYgKCFtb2RlbCkge1xuICAgICAgbW9kZWwgPSB0aGlzLnN5bmNOZXdNb2RlbCgpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFjdGl2ZSgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGVsSWQoKSAmJiBtb2RlbCAmJiBtb2RlbC5pZCgpICE9IHRoaXMubW9kZWxJZCgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMuYXJncygpLnF1ZXJ5ICYmICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgdmlzaWJsZU5vdEZvdW5kKCkge1xuICAgIGlmICghdGhpcy5hY3RpdmUoKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlbElkKCkgJiYgdGhpcy52aXNpYmxlTW9kZWwoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfSBlbHNlIGlmICghdGhpcy5tb2RlbElkKCkgJiYgIXRoaXMuYXJncygpLnF1ZXJ5ICYmICF0aGlzLmFyZ3MoKS5uZXdJZk5vSWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zLm5vdEZvdW5kXG4gIH1cblxuICAvKiogQHJldHVybnMge3ZvaWR9ICovXG4gIHNldHVwKCkge1xuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIG1vZGVsOiB1bmRlZmluZWQsXG4gICAgICBub3RGb3VuZDogdW5kZWZpbmVkXG4gICAgfSlcbiAgICB0aGlzLnNldEluc3RhbmNlKHtxdWVyeVBhcmFtczogdXNlUXVlcnlQYXJhbXMoKX0pXG5cbiAgICB1c2VFZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnMubW9kZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IHN5bmNOZXdNb2RlbCA9IHRoaXMuc3luY05ld01vZGVsKClcblxuICAgICAgICAgIGlmIChzeW5jTmV3TW9kZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe21vZGVsOiBzeW5jTmV3TW9kZWwsIG5vdEZvdW5kOiBmYWxzZX0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkV2FpdEZvclVwZGF0ZWRDb25uZWN0aW9uKCkpIHtcbiAgICAgICAgICB0aGlzLmVuc3VyZUluaXRpYWxMb2FkRmFsbGJhY2soKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9hZE1vZGVsKClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRoaXMuY2FjaGVBcmdzKClcbiAgICApXG5cbiAgICAvLyBJbnZhbGlkYXRlIGluLWZsaWdodCBhc3luYyByZXNwb25zZXMgc28gc3RhbGUgbG9hZHMgY2Fubm90IHdyaXRlIGFmdGVyIHVubW91bnQuXG4gICAgdXNlRWZmZWN0KCgpID0+ICgpID0+IHtcbiAgICAgIHRoaXMuY2xlYXJVcGRhdGVkQ29ubmVjdGlvbkZhbGxiYWNrVGltZW91dCgpXG4gICAgICB0aGlzLmxvYWRNb2RlbEdlbmVyYXRpb24gKz0gMVxuICAgIH0sIFtdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5hcmdzKCkuZXZlbnRzKSByZXR1cm5cblxuICAgICAgdGhpcy5hcmdzKCkuZXZlbnRzLmFkZExpc3RlbmVyKFwicmVsb2FkTW9kZWxcIiwgdGhpcy5sb2FkTW9kZWwpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYXJncygpLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihcInJlbG9hZE1vZGVsXCIsIHRoaXMubG9hZE1vZGVsKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLmFyZ3MoKS5ldmVudHNdKVxuXG4gICAgdXNlVXBkYXRlZEV2ZW50KHRoaXMuc3Vic2NyaXB0aW9uTW9kZWwoKSwgdGhpcy5sb2FkTW9kZWwsIHtcbiAgICAgIG9uQ29ubmVjdGVkOiB0aGlzLm9uVXBkYXRlZEV2ZW50Q29ubmVjdGVkXG4gICAgfSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBEZXZpc2UuZXZlbnRzKCkuYWRkTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25JblwiLCB0aGlzLm9uU2lnbmVkSW4pXG4gICAgICBEZXZpc2UuZXZlbnRzKCkuYWRkTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25PdXRcIiwgdGhpcy5vblNpZ25lZE91dClcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgRGV2aXNlLmV2ZW50cygpLnJlbW92ZUxpc3RlbmVyKFwib25EZXZpc2VTaWduSW5cIiwgdGhpcy5vblNpZ25lZEluKVxuICAgICAgICBEZXZpc2UuZXZlbnRzKCkucmVtb3ZlTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25PdXRcIiwgdGhpcy5vblNpZ25lZE91dClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5zLm1vZGVsIHx8ICF0aGlzLmFyZ3MoKS5vbkRlc3Ryb3llZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGNvbm5lY3REZXN0cm95ZWQgPSBNb2RlbEV2ZW50cy5jb25uZWN0RGVzdHJveWVkKHRoaXMucy5tb2RlbCwgdGhpcy5vbkRlc3Ryb3llZClcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29ubmVjdERlc3Ryb3llZC51bnN1YnNjcmliZSgpXG4gICAgICB9XG4gICAgfSwgW3RoaXMuYXJncygpLm9uRGVzdHJveWVkLCB0aGlzLnMubW9kZWwgPyB0aGlzLnMubW9kZWwuaWQoKSA6IHVuZGVmaW5lZF0pXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufG9iamVjdH0gbW9kZWxDbGFzc0FyZ1xuICogQHBhcmFtIHtvYmplY3QgfCAoKGFyZ3M6IHttb2RlbENsYXNzOiB0eXBlb2YgaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHR9KSA9PiB1c2VNb2RlbEFyZ3MpfSBbYXJnc0FyZ11cbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fVxuICovXG4vKiogdXNlTW9kZWwuICovXG5jb25zdCB1c2VNb2RlbCA9IChtb2RlbENsYXNzQXJnLCBhcmdzQXJnID0ge30pID0+IHtcbiAgY29uc3Qgc2hhcGVIb29rID0gdXNlU2hhcGVIb29rKFVzZU1vZGVsU2hhcGVIb29rLCB7YXJnc0FyZywgbW9kZWxDbGFzc0FyZ30pXG4gIGNvbnN0IG1vZGVsID0gc2hhcGVIb29rLnZpc2libGVNb2RlbCgpXG4gIGNvbnN0IG1vZGVsSWQgPSBzaGFwZUhvb2subW9kZWxJZCgpXG4gIGNvbnN0IG5vdEZvdW5kID0gc2hhcGVIb29rLnZpc2libGVOb3RGb3VuZCgpXG4gIGNvbnN0IG1vZGVsVmFyaWFibGVOYW1lID0gc2hhcGVIb29rLm1vZGVsVmFyaWFibGVOYW1lKClcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIG1vZGVsLFxuICAgIG1vZGVsSWQsXG4gICAgbm90Rm91bmRcbiAgfVxuXG4gIHJlc3VsdFttb2RlbFZhcmlhYmxlTmFtZV0gPSBtb2RlbFxuICByZXN1bHRbYCR7bW9kZWxWYXJpYWJsZU5hbWV9SWRgXSA9IG1vZGVsSWRcbiAgcmVzdWx0W2Ake21vZGVsVmFyaWFibGVOYW1lfU5vdEZvdW5kYF0gPSBub3RGb3VuZFxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlTW9kZWxcbiJdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kaspernj/api-maker",
3
3
  "type": "module",
4
- "version": "1.0.2154",
4
+ "version": "1.0.2155",
5
5
  "description": "My new module",
6
6
  "files": [
7
7
  "build/**"