redibox-hook-job
Advanced tools
Comparing version 1.0.1 to 1.0.2
@@ -50,3 +50,22 @@ 'use strict'; | ||
this.subscriptions = []; | ||
if (isNew) return this.save(); | ||
if (isNew) { | ||
// this Proxy allows chaining methods while still keeping the | ||
// save() promise valid | ||
this.proxy = new Proxy(this, { | ||
get(target, name) { | ||
if (name in target) { | ||
return target[name]; | ||
} | ||
// haxxors | ||
if (name === 'then') { | ||
target.promise = target.save(); | ||
return target.promise.then.bind(target.promise); | ||
} | ||
return undefined; | ||
} | ||
}); | ||
return this.proxy; | ||
} | ||
return this; | ||
@@ -131,2 +150,6 @@ } | ||
if (this.options.notifySuccess || this.options.notifyFailure) { | ||
if (!this.core.pubsub.options.subscriber) { | ||
return _bluebird2.default.reject(new Error('Cannot subscribe to job events when RediBox.pubsub \'subscriber\' config is set to disabled.')); | ||
} | ||
return this.core.pubsub.subscribeOnceOf(this.subscriptions, message => { | ||
@@ -173,3 +196,3 @@ // on message received | ||
this.options.retries = n - 1; | ||
return this; | ||
return this.proxy; | ||
} | ||
@@ -186,3 +209,3 @@ | ||
if (!this.onFailureCallback) this.onFailureCallback = _redibox.noop; | ||
return this; | ||
return this.proxy; | ||
} | ||
@@ -199,8 +222,13 @@ | ||
if (!this.onSuccessCallback) this.onSuccessCallback = _redibox.noop; | ||
return this; | ||
return this.proxy; | ||
} | ||
/** | ||
* | ||
* @param bool | ||
* @returns {Job} | ||
*/ | ||
unique(bool) { | ||
this.options.unique = bool; | ||
return this; | ||
return this.proxy; | ||
} | ||
@@ -215,3 +243,3 @@ | ||
this.options.timeout = ms; | ||
return this; | ||
return this.proxy; | ||
} | ||
@@ -309,2 +337,2 @@ | ||
exports.default = Job; | ||
//# sourceMappingURL=data:application/json;base64,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SyxFQUF2RCxFQUEyRCxDQUFDLEdBQUQsRUFBTSxNQUFOLEtBQWlCO0FBQzFFLFVBQUksR0FBSixFQUFTLE9BQU8sR0FBRyxHQUFILENBQVA7QUFDVCxhQUFPLEdBQUcsSUFBSCxFQUFTLFdBQVcsQ0FBcEIsQ0FBUDtBQUNELEtBSEQ7QUFJRDs7Ozs7Ozs7QUFRRCxjQUFZLEdBQVosRUFBaUI7QUFDZixRQUFJLEtBQUssSUFBTCxDQUFVLE9BQVYsQ0FBa0IsU0FBbEIsRUFBSixFQUFtQztBQUNqQyxhQUFPLENBQUMsQUFBRCxHQUFHLEtBQUssSUFBTCxDQUFVLEtBQVYsQ0FBZ0IsR0FBaEIsQ0FBb0IsT0FBcEIsQ0FBNEIsU0FBL0IsRUFBeUMsRUFBekMsR0FBNkMsS0FBSyxTQUFsRCxFQUE0RCxFQUE1RCxHQUFnRSxHQUFoRSxFQUFvRSxBQUFwRSxDQUFQO0FBQ0Q7QUFDRCxXQUFPLENBQUMsQUFBRCxHQUFHLEtBQUssSUFBTCxDQUFVLEtBQVYsQ0FBZ0IsR0FBaEIsQ0FBb0IsT0FBcEIsQ0FBNEIsU0FBL0IsRUFBeUMsQ0FBekMsR0FBNEMsS0FBSyxTQUFqRCxFQUEyRCxDQUEzRCxHQUE4RCxHQUE5RCxFQUFrRSxBQUFsRSxDQUFQO0FBQ0Q7O0FBdlFPLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQTJRSyxHIiwiZmlsZSI6ImpvYi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSBTYWxha2FyXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqXG4gKi9cblxuaW1wb3J0IGN1aWQgZnJvbSAnY3VpZCc7XG5pbXBvcnQgUHJvbWlzZSBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBub29wLCBzaGExc3VtLCB0cnlKU09OU3RyaW5naWZ5LCB0cnlKU09OUGFyc2UgfSBmcm9tICdyZWRpYm94JztcblxuLyoqXG4gKiBAY2xhc3MgSm9iXG4gKi9cbmNsYXNzIEpvYiB7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjb3JlXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcGFyYW0gcXVldWVOYW1lXG4gICAqIEBwYXJhbSBpc05ld1xuICAgKiBAcmV0dXJucyB7Kn1cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvcmUsIGlkLCBkYXRhID0ge30sIG9wdGlvbnMgPSB7XG4gICAgdW5pcXVlOiBmYWxzZSxcbiAgICB0aW1lb3V0OiA2MDAwMCwgLy8gMSBtaW51dGUgZGVmYXVsdCB0aW1lb3V0XG4gIH0sIHF1ZXVlTmFtZSwgaXNOZXcpIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5jb3JlID0gY29yZTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIHRoaXMuc3RhdHVzID0gJ2NyZWF0ZWQnO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5xdWV1ZU5hbWUgPSBxdWV1ZU5hbWU7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgaWYgKGlzTmV3KSByZXR1cm4gdGhpcy5zYXZlKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUXVlcnkgcmVkaXMgZm9yIHRoZSBzcGVjaWZpZWQgam9iIGlkIGFuZCBjb252ZXJ0cyBpdCB0byBhIG5ldyBpbnN0YW5jZSBvZiBKb2IuXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHF1ZXVlXG4gICAqIEBwYXJhbSBpZFxuICAgKi9cbiAgc3RhdGljIGZyb21JZChxdWV1ZSwgaWQpIHtcbiAgICByZXR1cm4gcXVldWUuY2xpZW50LmhnZXQocXVldWUudG9LZXkoJ2pvYnMnKSwgaWQpLnRoZW4oKGRhdGEpID0+XG4gICAgICBKb2IuZnJvbURhdGEocXVldWUsIGlkLCBkYXRhKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBKU09OIHN0cmluZyBvZiBhIGpvYidzIGRhdGEgdG8gYSBuZXcgaW5zdGFuY2Ugb2YgSm9iXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHF1ZXVlXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcmV0dXJucyB7Sm9iIHwgbnVsbH1cbiAgICovXG4gIHN0YXRpYyBmcm9tRGF0YShxdWV1ZSwgaWQsIGRhdGEpIHtcbiAgICBjb25zdCBvYmogPSB0cnlKU09OUGFyc2UoZGF0YSk7XG4gICAgaWYgKCFvYmopIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGpvYiA9IG5ldyBKb2IocXVldWUuY29yZSwgaWQsIG9iai5kYXRhLCBvYmoub3B0aW9ucywgcXVldWUubmFtZSk7XG4gICAgam9iLnN0YXR1cyA9IG9iai5kYXRhLnN0YXR1cztcbiAgICByZXR1cm4gam9iO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhpcyBKb2IgaW5zdGFuY2UgdG8gYSBqc29uIHN0cmluZy5cbiAgICovXG4gIHRvRGF0YSgpIHtcbiAgICByZXR1cm4gdHJ5SlNPTlN0cmluZ2lmeSh7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGRhdGE6IHRoaXMuZGF0YSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgc2F2ZSB0aGF0IHB1c2hlcyB0byByZWRpcy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9zYXZlKCkge1xuICAgIHRoaXMuY29yZS5sb2cudmVyYm9zZShgU2F2aW5nIG5ldyBqb2IgJHt0aGlzLmlkfSBmb3IgJHt0aGlzLnF1ZXVlTmFtZX1gKTtcbiAgICByZXR1cm4gdGhpcy5jb3JlLmNsaWVudC5hZGRqb2IoXG4gICAgICB0aGlzLl90b1F1ZXVlS2V5KCdqb2JzJyksXG4gICAgICB0aGlzLl90b1F1ZXVlS2V5KCd3YWl0aW5nJyksXG4gICAgICB0aGlzLl90b1F1ZXVlS2V5KCdpZCcpLFxuICAgICAgdGhpcy50b0RhdGEoKSxcbiAgICAgICEhdGhpcy5vcHRpb25zLnVuaXF1ZSxcbiAgICAgIHRoaXMuaWQpLnRoZW4oKGlkKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudW5pcXVlICYmIGlkID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSAnZHVwbGljYXRlJztcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBFUlJfRFVQTElDQVRFOiBKb2IgJHt0aGlzLmlkfSBhbHJlYWR5IGV4aXN0cywgc2F2ZSBoYXMgYmVlbiBhYm9ydGVkLmApKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvcmUubG9nLnZlcmJvc2UoYFNhdmVkIGpvYiBmb3IgJHt0aGlzLnF1ZXVlTmFtZX1gKTtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLnN0YXR1cyA9ICdzYXZlZCc7XG4gICAgICAgIC8vIHRoaXMucXVldWUuam9ic1tpZF0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGlzIGluc3RhbmNlIG9mIEpvYiB0byByZWRpcy4gQW55IGFjdGl2ZSBxdWV1ZXMgd2lsbCBwaWNrIGl0IHVwXG4gICAqIGltbWVkaWF0ZWx5IGZvciBwcm9jZXNzaW5nLlxuICAgKiBAcmV0dXJucyB7Kn1cbiAgICovXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5pZCA9IGAke3RoaXMucXVldWVOYW1lfS0keyh0aGlzLm9wdGlvbnMudW5pcXVlID8gc2hhMXN1bSh0aGlzLmRhdGEpIDogY3VpZCgpKX1gO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ub3RpZnlTdWNjZXNzKSB7XG4gICAgICB0aGlzLm9wdGlvbnMubm90aWZ5U3VjY2VzcyA9IGBqb2I6JHt0aGlzLmlkfTpzdWNjZXNzYDtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGBqb2I6JHt0aGlzLmlkfTpzdWNjZXNzYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ub3RpZnlGYWlsdXJlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMubm90aWZ5RmFpbHVyZSA9IGBqb2I6JHt0aGlzLmlkfTpmYWlsdXJlYDtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGBqb2I6JHt0aGlzLmlkfTpmYWlsdXJlYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ub3RpZnlTdWNjZXNzIHx8IHRoaXMub3B0aW9ucy5ub3RpZnlGYWlsdXJlKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb3JlLnB1YnN1Yi5zdWJzY3JpYmVPbmNlT2YoXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyxcbiAgICAgICAgKG1lc3NhZ2UpID0+IHsgLy8gb24gbWVzc2FnZSByZWNlaXZlZFxuICAgICAgICAgIGNvbnN0IGNoYW5uZWwgPSBtZXNzYWdlLmNoYW5uZWw7XG5cbiAgICAgICAgICAvLyByZW1vdmUgdGhlIHB1YnN1YiBkYXRhXG4gICAgICAgICAgaWYgKG1lc3NhZ2UuZGF0YSkge1xuICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZGF0YTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBpZiB0aGVyZSdzIGFuIGVycm9yIHRoZSBhc3N1bWUgZmFpbGVkLlxuICAgICAgICAgIGlmIChtZXNzYWdlLmVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vbkZhaWx1cmVDYWxsYmFjayhtZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBpcyBpdCBmcm9tIHRoZSBzdWNjZXNzIGNoYW5uZWwuXG4gICAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uc1swXSA9PT0gY2hhbm5lbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub25TdWNjZXNzQ2FsbGJhY2sobWVzc2FnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMub25GYWlsdXJlQ2FsbGJhY2sobWVzc2FnZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMub3B0aW9ucy50aW1lb3V0ICsgMjAwMFxuICAgICAgKS50aGVuKCgpID0+ICAvLyBzdWJzY3JpYmVkIGNhbGxiYWNrXG4gICAgICAgIHRoaXMuX3NhdmUoKVxuICAgICAgKS5jYXRjaChlcnJvciA9PlxuICAgICAgICB0aGlzLm9uRmFpbHVyZUNhbGxiYWNrKHtcbiAgICAgICAgICB0eXBlOiAnam9iJyxcbiAgICAgICAgICBlcnJvcjogbmV3IEVycm9yKCdFcnJvciB3aGlsZSBzdWJzY3JpYmluZyB0byBqb2IgZXZlbnRzLCBob3dldmVyIHRoaXMgam9iIHdpbGwgc3RpbGwgYmUgcXVldWVkIC0gJyArXG4gICAgICAgICAgICAneW91IG1heSBiZSB1bmFibGUgdG8gcmVjZWl2ZSBvbkNvbXBsZXRlIC8gb25GYWlsdXJlIGV2ZW50cyBmb3IgdGhpcyBqb2IuJyksXG4gICAgICAgICAgZXJyb3JfYWN0dWFsOiBlcnJvcixcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NhdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIGpvYiB3aWxsIHJldHJ5IG9uIGZhaWx1cmVcbiAgICogQHBhcmFtIG5cbiAgICogQHJldHVybnMge0pvYn1cbiAgICovXG4gIHJldHJpZXMobikge1xuICAgIGlmIChuIDwgMCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1JldHJpZXMgY2Fubm90IGJlIG5lZ2F0aXZlJyk7XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucy5yZXRyaWVzID0gbiAtIDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBvblN1Y2Nlc3MgY2FsbGJhY2sgYW5kIG5vdGlmeSBvcHRpb25cbiAgICogQHBhcmFtIG5vdGlmeVxuICAgKiBAcmV0dXJucyB7Sm9ifVxuICAgKi9cbiAgb25TdWNjZXNzKG5vdGlmeSkge1xuICAgIHRoaXMub3B0aW9ucy5ub3RpZnlTdWNjZXNzID0gdHJ1ZTtcbiAgICB0aGlzLm9uU3VjY2Vzc0NhbGxiYWNrID0gbm90aWZ5O1xuICAgIGlmICghdGhpcy5vbkZhaWx1cmVDYWxsYmFjaykgdGhpcy5vbkZhaWx1cmVDYWxsYmFjayA9IG5vb3A7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBvbkZhaWx1cmUgY2FsbGJhY2sgYW5kIG5vdGlmeSBvcHRpb25cbiAgICogQHBhcmFtIG5vdGlmeVxuICAgKiBAcmV0dXJucyB7Sm9ifVxuICAgKi9cbiAgb25GYWlsdXJlKG5vdGlmeSkge1xuICAgIHRoaXMub3B0aW9ucy5ub3RpZnlGYWlsdXJlID0gdHJ1ZTtcbiAgICB0aGlzLm9uRmFpbHVyZUNhbGxiYWNrID0gbm90aWZ5O1xuICAgIGlmICghdGhpcy5vblN1Y2Nlc3NDYWxsYmFjaykgdGhpcy5vblN1Y2Nlc3NDYWxsYmFjayA9IG5vb3A7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1bmlxdWUoYm9vbCkge1xuICAgIHRoaXMub3B0aW9ucy51bmlxdWUgPSBib29sO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBob3cgbG9uZyB0aGlzIGpvYiBjYW4gcnVuIGJlZm9yZSBpdCB0aW1lcyBvdXQuXG4gICAqIEBwYXJhbSBtc1xuICAgKiBAcmV0dXJucyB7Sm9ifVxuICAgKi9cbiAgdGltZW91dChtcykge1xuICAgIHRoaXMub3B0aW9ucy50aW1lb3V0ID0gbXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHJldHVybnMge0pvYi5pbml0aWFsSm9ifCp9XG4gICAqL1xuICBpbml0aWFsSm9iKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbERhdGEuaW5pdGlhbEpvYjtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJucyB7Sm9iLmluaXRpYWxRdWV1ZXwqfVxuICAgKi9cbiAgaW5pdGlhbFF1ZXVlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbERhdGEuaW5pdGlhbFF1ZXVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGlzIGpvYiBmcm9tIGFsbCBzZXRzLlxuICAgKiBAcGFyYW0gY2JcbiAgICovXG4gIHJlbW92ZShjYiA9IG5vb3ApIHtcbiAgICB0aGlzLmNvcmUuY2xpZW50LnJlbW92ZWpvYihcbiAgICAgIHRoaXMuX3RvUXVldWVLZXkoJ3N1Y2NlZWRlZCcpLCB0aGlzLl90b1F1ZXVlS2V5KCdmYWlsZWQnKSwgdGhpcy5fdG9RdWV1ZUtleSgnd2FpdGluZycpLFxuICAgICAgdGhpcy5fdG9RdWV1ZUtleSgnYWN0aXZlJyksIHRoaXMuX3RvUXVldWVLZXkoJ3N0YWxsaW5nJyksIHRoaXMuX3RvUXVldWVLZXkoJ2pvYnMnKSxcbiAgICAgIHRoaXMuaWQsIGNiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1zYXZlIHRoaXMgam9iIGZvciB0aGUgcHVycG9zZSBvZiByZXRyeWluZyBpdC5cbiAgICogQHBhcmFtIGNiXG4gICAqL1xuICByZXRyeShjYiA9IG5vb3ApIHtcbiAgICB0aGlzLmNvcmUuY2xpZW50Lm11bHRpKClcbiAgICAgICAgLnNyZW0odGhpcy5fdG9RdWV1ZUtleSgnZmFpbGVkJyksIHRoaXMuaWQpXG4gICAgICAgIC5scHVzaCh0aGlzLl90b1F1ZXVlS2V5KCd3YWl0aW5nJyksIHRoaXMuaWQpXG4gICAgICAgIC5leGVjKGNiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsYmFja3MgdHJ1ZSBvZiBmYWxzZSBpZiB0aGlzIGpvYiBleGlzdHMgaW4gdGhlIHNwZWNpZmllZCBzZXQuXG4gICAqIEBwYXJhbSBzZXRcbiAgICogQHBhcmFtIGNiXG4gICAqL1xuICBpc0luU2V0KHNldCwgY2IgPSBub29wKSB7XG4gICAgdGhpcy5jb3JlLmNsaWVudC5zaXNtZW1iZXIodGhpcy5fdG9RdWV1ZUtleShzZXQpLCB0aGlzLmlkLCAoZXJyLCByZXN1bHQpID0+IHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYihlcnIpO1xuICAgICAgcmV0dXJuIGNiKG51bGwsIHJlc3VsdCA9PT0gMSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgcXVldWUgcHJlZml4ZWQga2V5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBzdHJpbmcuXG4gICAqIEBwYXJhbSBzdHJcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF90b1F1ZXVlS2V5KHN0cikge1xuICAgIGlmICh0aGlzLmNvcmUuY2x1c3Rlci5pc0NsdXN0ZXIoKSkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuY29yZS5ob29rcy5qb2Iub3B0aW9ucy5rZXlQcmVmaXh9Onske3RoaXMucXVldWVOYW1lfX06JHtzdHJ9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuY29yZS5ob29rcy5qb2Iub3B0aW9ucy5rZXlQcmVmaXh9OiR7dGhpcy5xdWV1ZU5hbWV9OiR7c3RyfWA7XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBKb2I7XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,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VSxLQUFWLENBQWdCLEdBQWhCLENBQW9CLE9BQXBCLENBQTRCLFNBQS9CLEVBQXlDLENBQXpDLEdBQTRDLEtBQUssU0FBakQsRUFBMkQsQ0FBM0QsR0FBOEQsR0FBOUQsRUFBa0UsQUFBbEUsQ0FBUDtBQUNEOztBQWpTTyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFxU0ssRyIsImZpbGUiOiJqb2IuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBUaGUgTUlUIExpY2Vuc2UgKE1JVClcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUgU2FsYWthclxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKlxuICovXG5cbmltcG9ydCBjdWlkIGZyb20gJ2N1aWQnO1xuaW1wb3J0IFByb21pc2UgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgbm9vcCwgc2hhMXN1bSwgdHJ5SlNPTlN0cmluZ2lmeSwgdHJ5SlNPTlBhcnNlIH0gZnJvbSAncmVkaWJveCc7XG5cbi8qKlxuICogQGNsYXNzIEpvYlxuICovXG5jbGFzcyBKb2Ige1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gY29yZVxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHBhcmFtIHF1ZXVlTmFtZVxuICAgKiBAcGFyYW0gaXNOZXdcbiAgICogQHJldHVybnMgeyp9XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb3JlLCBpZCwgZGF0YSA9IHt9LCBvcHRpb25zID0ge1xuICAgIHVuaXF1ZTogZmFsc2UsXG4gICAgdGltZW91dDogNjAwMDAsIC8vIDEgbWludXRlIGRlZmF1bHQgdGltZW91dFxuICB9LCBxdWV1ZU5hbWUsIGlzTmV3KSB7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuY29yZSA9IGNvcmU7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnN0YXR1cyA9ICdjcmVhdGVkJztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMucXVldWVOYW1lID0gcXVldWVOYW1lO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIGlmIChpc05ldykge1xuICAgICAgLy8gdGhpcyBQcm94eSBhbGxvd3MgY2hhaW5pbmcgbWV0aG9kcyB3aGlsZSBzdGlsbCBrZWVwaW5nIHRoZVxuICAgICAgLy8gc2F2ZSgpIHByb21pc2UgdmFsaWRcbiAgICAgIHRoaXMucHJveHkgPSBuZXcgUHJveHkodGhpcywge1xuICAgICAgICBnZXQodGFyZ2V0LCBuYW1lKSB7XG4gICAgICAgICAgaWYgKG5hbWUgaW4gdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0W25hbWVdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGhheHhvcnNcbiAgICAgICAgICBpZiAobmFtZSA9PT0gJ3RoZW4nKSB7XG4gICAgICAgICAgICB0YXJnZXQucHJvbWlzZSA9IHRhcmdldC5zYXZlKCk7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnByb21pc2UudGhlbi5iaW5kKHRhcmdldC5wcm9taXNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gdGhpcy5wcm94eTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUXVlcnkgcmVkaXMgZm9yIHRoZSBzcGVjaWZpZWQgam9iIGlkIGFuZCBjb252ZXJ0cyBpdCB0byBhIG5ldyBpbnN0YW5jZSBvZiBKb2IuXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHF1ZXVlXG4gICAqIEBwYXJhbSBpZFxuICAgKi9cbiAgc3RhdGljIGZyb21JZChxdWV1ZSwgaWQpIHtcbiAgICByZXR1cm4gcXVldWUuY2xpZW50LmhnZXQocXVldWUudG9LZXkoJ2pvYnMnKSwgaWQpLnRoZW4oKGRhdGEpID0+XG4gICAgICBKb2IuZnJvbURhdGEocXVldWUsIGlkLCBkYXRhKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBKU09OIHN0cmluZyBvZiBhIGpvYidzIGRhdGEgdG8gYSBuZXcgaW5zdGFuY2Ugb2YgSm9iXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHF1ZXVlXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcmV0dXJucyB7Sm9iIHwgbnVsbH1cbiAgICovXG4gIHN0YXRpYyBmcm9tRGF0YShxdWV1ZSwgaWQsIGRhdGEpIHtcbiAgICBjb25zdCBvYmogPSB0cnlKU09OUGFyc2UoZGF0YSk7XG4gICAgaWYgKCFvYmopIHJldHVybiBudWxsO1xuICAgIGNvbnN0IGpvYiA9IG5ldyBKb2IocXVldWUuY29yZSwgaWQsIG9iai5kYXRhLCBvYmoub3B0aW9ucywgcXVldWUubmFtZSk7XG4gICAgam9iLnN0YXR1cyA9IG9iai5kYXRhLnN0YXR1cztcbiAgICByZXR1cm4gam9iO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhpcyBKb2IgaW5zdGFuY2UgdG8gYSBqc29uIHN0cmluZy5cbiAgICovXG4gIHRvRGF0YSgpIHtcbiAgICByZXR1cm4gdHJ5SlNPTlN0cmluZ2lmeSh7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGRhdGE6IHRoaXMuZGF0YSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgc2F2ZSB0aGF0IHB1c2hlcyB0byByZWRpcy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9zYXZlKCkge1xuICAgIHRoaXMuY29yZS5sb2cudmVyYm9zZShgU2F2aW5nIG5ldyBqb2IgJHt0aGlzLmlkfSBmb3IgJHt0aGlzLnF1ZXVlTmFtZX1gKTtcbiAgICByZXR1cm4gdGhpcy5jb3JlLmNsaWVudC5hZGRqb2IoXG4gICAgICB0aGlzLl90b1F1ZXVlS2V5KCdqb2JzJyksXG4gICAgICB0aGlzLl90b1F1ZXVlS2V5KCd3YWl0aW5nJyksXG4gICAgICB0aGlzLl90b1F1ZXVlS2V5KCdpZCcpLFxuICAgICAgdGhpcy50b0RhdGEoKSxcbiAgICAgICEhdGhpcy5vcHRpb25zLnVuaXF1ZSxcbiAgICAgIHRoaXMuaWQpLnRoZW4oKGlkKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudW5pcXVlICYmIGlkID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSAnZHVwbGljYXRlJztcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBFUlJfRFVQTElDQVRFOiBKb2IgJHt0aGlzLmlkfSBhbHJlYWR5IGV4aXN0cywgc2F2ZSBoYXMgYmVlbiBhYm9ydGVkLmApKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvcmUubG9nLnZlcmJvc2UoYFNhdmVkIGpvYiBmb3IgJHt0aGlzLnF1ZXVlTmFtZX1gKTtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLnN0YXR1cyA9ICdzYXZlZCc7XG4gICAgICAgIC8vIHRoaXMucXVldWUuam9ic1tpZF0gPSB0aGlzO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGlzIGluc3RhbmNlIG9mIEpvYiB0byByZWRpcy4gQW55IGFjdGl2ZSBxdWV1ZXMgd2lsbCBwaWNrIGl0IHVwXG4gICAqIGltbWVkaWF0ZWx5IGZvciBwcm9jZXNzaW5nLlxuICAgKiBAcmV0dXJucyB7Kn1cbiAgICovXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5pZCA9IGAke3RoaXMucXVldWVOYW1lfS0keyh0aGlzLm9wdGlvbnMudW5pcXVlID8gc2hhMXN1bSh0aGlzLmRhdGEpIDogY3VpZCgpKX1gO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ub3RpZnlTdWNjZXNzKSB7XG4gICAgICB0aGlzLm9wdGlvbnMubm90aWZ5U3VjY2VzcyA9IGBqb2I6JHt0aGlzLmlkfTpzdWNjZXNzYDtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGBqb2I6JHt0aGlzLmlkfTpzdWNjZXNzYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ub3RpZnlGYWlsdXJlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMubm90aWZ5RmFpbHVyZSA9IGBqb2I6JHt0aGlzLmlkfTpmYWlsdXJlYDtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGBqb2I6JHt0aGlzLmlkfTpmYWlsdXJlYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5ub3RpZnlTdWNjZXNzIHx8IHRoaXMub3B0aW9ucy5ub3RpZnlGYWlsdXJlKSB7XG4gICAgICBpZiAoIXRoaXMuY29yZS5wdWJzdWIub3B0aW9ucy5zdWJzY3JpYmVyKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoJ0Nhbm5vdCBzdWJzY3JpYmUgdG8gam9iIGV2ZW50cyB3aGVuIFJlZGlCb3gucHVic3ViIFxcJ3N1YnNjcmliZXJcXCcgY29uZmlnIGlzIHNldCB0byBkaXNhYmxlZC4nKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb3JlLnB1YnN1Yi5zdWJzY3JpYmVPbmNlT2YodGhpcy5zdWJzY3JpcHRpb25zLCAobWVzc2FnZSkgPT4geyAvLyBvbiBtZXNzYWdlIHJlY2VpdmVkXG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSBtZXNzYWdlLmNoYW5uZWw7XG5cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBwdWJzdWIgZGF0YVxuICAgICAgICBpZiAobWVzc2FnZS5kYXRhKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHRoZXJlJ3MgYW4gZXJyb3IgdGhlIGFzc3VtZSBmYWlsZWQuXG4gICAgICAgIGlmIChtZXNzYWdlLmVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMub25GYWlsdXJlQ2FsbGJhY2sobWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpcyBpdCBmcm9tIHRoZSBzdWNjZXNzIGNoYW5uZWwuXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnNbMF0gPT09IGNoYW5uZWwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5vblN1Y2Nlc3NDYWxsYmFjayhtZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9uRmFpbHVyZUNhbGxiYWNrKG1lc3NhZ2UpO1xuICAgICAgfSwgdGhpcy5vcHRpb25zLnRpbWVvdXQgKyAyMDAwKS50aGVuKCgpID0+ICAvLyBzdWJzY3JpYmVkIGNhbGxiYWNrXG4gICAgICAgIHRoaXMuX3NhdmUoKVxuICAgICAgKS5jYXRjaChlcnJvciA9PlxuICAgICAgICB0aGlzLm9uRmFpbHVyZUNhbGxiYWNrKHtcbiAgICAgICAgICB0eXBlOiAnam9iJyxcbiAgICAgICAgICBlcnJvcjogbmV3IEVycm9yKCdFcnJvciB3aGlsZSBzdWJzY3JpYmluZyB0byBqb2IgZXZlbnRzLCBob3dldmVyIHRoaXMgam9iIHdpbGwgc3RpbGwgYmUgcXVldWVkIC0gJyArXG4gICAgICAgICAgICAneW91IG1heSBiZSB1bmFibGUgdG8gcmVjZWl2ZSBvbkNvbXBsZXRlIC8gb25GYWlsdXJlIGV2ZW50cyBmb3IgdGhpcyBqb2IuJyksXG4gICAgICAgICAgZXJyb3JfYWN0dWFsOiBlcnJvcixcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NhdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIGpvYiB3aWxsIHJldHJ5IG9uIGZhaWx1cmVcbiAgICogQHBhcmFtIG5cbiAgICogQHJldHVybnMge0pvYn1cbiAgICovXG4gIHJldHJpZXMobikge1xuICAgIGlmIChuIDwgMCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1JldHJpZXMgY2Fubm90IGJlIG5lZ2F0aXZlJyk7XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucy5yZXRyaWVzID0gbiAtIDE7XG4gICAgcmV0dXJuIHRoaXMucHJveHk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBvblN1Y2Nlc3MgY2FsbGJhY2sgYW5kIG5vdGlmeSBvcHRpb25cbiAgICogQHBhcmFtIG5vdGlmeVxuICAgKiBAcmV0dXJucyB7Sm9ifVxuICAgKi9cbiAgb25TdWNjZXNzKG5vdGlmeSkge1xuICAgIHRoaXMub3B0aW9ucy5ub3RpZnlTdWNjZXNzID0gdHJ1ZTtcbiAgICB0aGlzLm9uU3VjY2Vzc0NhbGxiYWNrID0gbm90aWZ5O1xuICAgIGlmICghdGhpcy5vbkZhaWx1cmVDYWxsYmFjaykgdGhpcy5vbkZhaWx1cmVDYWxsYmFjayA9IG5vb3A7XG4gICAgcmV0dXJuIHRoaXMucHJveHk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBvbkZhaWx1cmUgY2FsbGJhY2sgYW5kIG5vdGlmeSBvcHRpb25cbiAgICogQHBhcmFtIG5vdGlmeVxuICAgKiBAcmV0dXJucyB7Sm9ifVxuICAgKi9cbiAgb25GYWlsdXJlKG5vdGlmeSkge1xuICAgIHRoaXMub3B0aW9ucy5ub3RpZnlGYWlsdXJlID0gdHJ1ZTtcbiAgICB0aGlzLm9uRmFpbHVyZUNhbGxiYWNrID0gbm90aWZ5O1xuICAgIGlmICghdGhpcy5vblN1Y2Nlc3NDYWxsYmFjaykgdGhpcy5vblN1Y2Nlc3NDYWxsYmFjayA9IG5vb3A7XG4gICAgcmV0dXJuIHRoaXMucHJveHk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGJvb2xcbiAgICogQHJldHVybnMge0pvYn1cbiAgICovXG4gIHVuaXF1ZShib29sKSB7XG4gICAgdGhpcy5vcHRpb25zLnVuaXF1ZSA9IGJvb2w7XG4gICAgcmV0dXJuIHRoaXMucHJveHk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGhvdyBsb25nIHRoaXMgam9iIGNhbiBydW4gYmVmb3JlIGl0IHRpbWVzIG91dC5cbiAgICogQHBhcmFtIG1zXG4gICAqIEByZXR1cm5zIHtKb2J9XG4gICAqL1xuICB0aW1lb3V0KG1zKSB7XG4gICAgdGhpcy5vcHRpb25zLnRpbWVvdXQgPSBtcztcbiAgICByZXR1cm4gdGhpcy5wcm94eTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJucyB7Sm9iLmluaXRpYWxKb2J8Kn1cbiAgICovXG4gIGluaXRpYWxKb2IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVybmFsRGF0YS5pbml0aWFsSm9iO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm5zIHtKb2IuaW5pdGlhbFF1ZXVlfCp9XG4gICAqL1xuICBpbml0aWFsUXVldWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ludGVybmFsRGF0YS5pbml0aWFsUXVldWU7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoaXMgam9iIGZyb20gYWxsIHNldHMuXG4gICAqIEBwYXJhbSBjYlxuICAgKi9cbiAgcmVtb3ZlKGNiID0gbm9vcCkge1xuICAgIHRoaXMuY29yZS5jbGllbnQucmVtb3Zlam9iKFxuICAgICAgdGhpcy5fdG9RdWV1ZUtleSgnc3VjY2VlZGVkJyksIHRoaXMuX3RvUXVldWVLZXkoJ2ZhaWxlZCcpLCB0aGlzLl90b1F1ZXVlS2V5KCd3YWl0aW5nJyksXG4gICAgICB0aGlzLl90b1F1ZXVlS2V5KCdhY3RpdmUnKSwgdGhpcy5fdG9RdWV1ZUtleSgnc3RhbGxpbmcnKSwgdGhpcy5fdG9RdWV1ZUtleSgnam9icycpLFxuICAgICAgdGhpcy5pZCwgY2IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLXNhdmUgdGhpcyBqb2IgZm9yIHRoZSBwdXJwb3NlIG9mIHJldHJ5aW5nIGl0LlxuICAgKiBAcGFyYW0gY2JcbiAgICovXG4gIHJldHJ5KGNiID0gbm9vcCkge1xuICAgIHRoaXMuY29yZS5jbGllbnQubXVsdGkoKVxuICAgICAgICAuc3JlbSh0aGlzLl90b1F1ZXVlS2V5KCdmYWlsZWQnKSwgdGhpcy5pZClcbiAgICAgICAgLmxwdXNoKHRoaXMuX3RvUXVldWVLZXkoJ3dhaXRpbmcnKSwgdGhpcy5pZClcbiAgICAgICAgLmV4ZWMoY2IpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrcyB0cnVlIG9mIGZhbHNlIGlmIHRoaXMgam9iIGV4aXN0cyBpbiB0aGUgc3BlY2lmaWVkIHNldC5cbiAgICogQHBhcmFtIHNldFxuICAgKiBAcGFyYW0gY2JcbiAgICovXG4gIGlzSW5TZXQoc2V0LCBjYiA9IG5vb3ApIHtcbiAgICB0aGlzLmNvcmUuY2xpZW50LnNpc21lbWJlcih0aGlzLl90b1F1ZXVlS2V5KHNldCksIHRoaXMuaWQsIChlcnIsIHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNiKGVycik7XG4gICAgICByZXR1cm4gY2IobnVsbCwgcmVzdWx0ID09PSAxKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBxdWV1ZSBwcmVmaXhlZCBrZXkgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHN0cmluZy5cbiAgICogQHBhcmFtIHN0clxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3RvUXVldWVLZXkoc3RyKSB7XG4gICAgaWYgKHRoaXMuY29yZS5jbHVzdGVyLmlzQ2x1c3RlcigpKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5jb3JlLmhvb2tzLmpvYi5vcHRpb25zLmtleVByZWZpeH06eyR7dGhpcy5xdWV1ZU5hbWV9fToke3N0cn1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5jb3JlLmhvb2tzLmpvYi5vcHRpb25zLmtleVByZWZpeH06JHt0aGlzLnF1ZXVlTmFtZX06JHtzdHJ9YDtcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IEpvYjtcbiJdfQ== |
{ | ||
"name": "redibox-hook-job", | ||
"description": "Advanced redibox powered jobs and queues", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"main": "lib/index.js", | ||
@@ -10,8 +10,4 @@ "author": "Mike Diarmid", | ||
"engines": { | ||
"node": ">=4.3" | ||
"node": ">=6.0" | ||
}, | ||
"redibox": { | ||
"hook": true, | ||
"name": "scheduler" | ||
}, | ||
"keywords": [ | ||
@@ -70,2 +66,3 @@ "redis", | ||
"mocha": "^2.4.5", | ||
"redibox": "^2.0.1", | ||
"sinon": "^1.17.4" | ||
@@ -72,0 +69,0 @@ }, |
125
tests.js
@@ -12,2 +12,7 @@ global.HOOK_NAME = 'job'; | ||
}, | ||
pubsub: { | ||
eventPrefix: 'myEvents', | ||
subscriber: true, | ||
publisher: true, | ||
}, | ||
job: { | ||
@@ -24,2 +29,7 @@ queues: [ | ||
log: { level: 'error' }, | ||
pubsub: { | ||
eventPrefix: 'myEvents', | ||
subscriber: true, | ||
publisher: true, | ||
}, | ||
redis: { | ||
@@ -69,2 +79,6 @@ connectionTimeout: 2000, | ||
const tester = new Promise((resolve) => { | ||
return resolve(); | ||
}); | ||
global.RediBox = new Redibox(config, () => { | ||
@@ -74,105 +88,10 @@ global.Hook = RediBox.hooks[global.HOOK_NAME]; | ||
global.HookCluster = global.RediBoxCluster.hooks[global.HOOK_NAME]; | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).then(() => { | ||
}).catch(console.error); | ||
tester.then(() => { | ||
return Hook.create('test2', { | ||
runs: ['fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBar', 'fooBarEnd'], | ||
data: { | ||
foo: 'bar', | ||
}, | ||
}).timeout(2000).unique(true).onSuccess((result) => { console.dir(result)}); | ||
}); | ||
}); | ||
@@ -179,0 +98,0 @@ }); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
111657
13
24
1224