New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

redibox-hook-job

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redibox-hook-job - npm Package Compare versions

Comparing version 1.0.1 to 1.0.2

42

lib/job.js

@@ -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==

9

package.json
{
"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 @@ },

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc