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

@fgv/ts-utils

Package Overview
Dependencies
Maintainers
1
Versions
95
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fgv/ts-utils - npm Package Compare versions

Comparing version 0.1.3 to 0.1.4

2

package.json
{
"name": "@fgv/ts-utils",
"version": "0.1.3",
"version": "0.1.4",
"description": "Assorted Typescript Utilities",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -30,3 +30,2 @@ "use strict";

const mustache_1 = __importDefault(require("mustache"));
;
exports.DEFAULT_RANGEOF_FORMATS = {

@@ -108,2 +107,2 @@ minOnly: '{{min}}-',

exports.RangeOf = RangeOf;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2VPZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yYW5nZU9mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7OztBQUVILHFDQUFpRDtBQUNqRCx3REFBZ0M7QUFXL0IsQ0FBQztBQUVXLFFBQUEsdUJBQXVCLEdBQUc7SUFDbkMsT0FBTyxFQUFFLFVBQVU7SUFDbkIsT0FBTyxFQUFFLFVBQVU7SUFDbkIsTUFBTSxFQUFFLGlCQUFpQjtDQUM1QixDQUFDO0FBRUYsTUFBYSxPQUFPO0lBSWhCLFlBQW1CLEdBQU8sRUFBRSxHQUFPO1FBQy9CLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNqRztRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDbkIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUksSUFBMkI7UUFDcEQsT0FBTyxzQkFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFJLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxHQUFHLEVBQUUsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBSSxLQUEyQixFQUFFLE9BQXdCLEVBQUUsVUFBYztRQUNyRyxP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LENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRVMsUUFBUSxDQUFDLEVBQUssRUFBRSxFQUFLO1FBQzNCLE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNKO0FBakZELDBCQWlGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBSZXN1bHQsIGNhcHR1cmVSZXN1bHQgfSBmcm9tICcuL3Jlc3VsdCc7XG5pbXBvcnQgTXVzdGFjaGUgZnJvbSAnbXVzdGFjaGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJhbmdlT2ZQcm9wZXJ0aWVzPFQ+IHtcbiAgICByZWFkb25seSBtaW4/OiBUO1xuICAgIHJlYWRvbmx5IG1heD86IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2VPZkZvcm1hdHMge1xuICAgIG1pbk9ubHk6IHN0cmluZztcbiAgICBtYXhPbmx5OiBzdHJpbmc7XG4gICAgbWluTWF4OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9SQU5HRU9GX0ZPUk1BVFMgPSB7XG4gICAgbWluT25seTogJ3t7bWlufX0tJyxcbiAgICBtYXhPbmx5OiAnLXt7bWF4fX0nLFxuICAgIG1pbk1heDogJ3t7bWlufX0te3ttYXh9fScsXG59O1xuXG5leHBvcnQgY2xhc3MgUmFuZ2VPZjxUPiBpbXBsZW1lbnRzIFJhbmdlT2ZQcm9wZXJ0aWVzPFQ+IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWluPzogVDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWF4PzogVDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtaW4/OiBULCBtYXg/OiBUKSB7XG4gICAgICAgIGlmICgoKG1pbiAhPT0gdW5kZWZpbmVkKSAmJiAobWF4ICE9PSB1bmRlZmluZWQpKSAmJlxuICAgICAgICAgICAgdGhpcy5fY29tcGFyZShtaW4sIG1heCkgPT09ICdncmVhdGVyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZlcnRlZCByYW5nZSAtICR7SlNPTi5zdHJpbmdpZnkobWluKX0gbXVzdCBiZSA8PSAke0pTT04uc3RyaW5naWZ5KG1heCl9LmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWluID0gbWluO1xuICAgICAgICB0aGlzLm1heCA9IG1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVJhbmdlPFQ+KGluaXQ/OiBSYW5nZU9mUHJvcGVydGllczxUPik6IFJlc3VsdDxSYW5nZU9mPFQ+PiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBSYW5nZU9mPFQ+KGluaXQ/Lm1pbiwgaW5pdD8ubWF4KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBwcm9wZXJ0aWVzVG9TdHJpbmc8VD4ocmFuZ2U6IFJhbmdlT2ZQcm9wZXJ0aWVzPFQ+LCBmb3JtYXRzPzogUmFuZ2VPZkZvcm1hdHMsIGVtcHR5VmFsdWU/OiBUKTogc3RyaW5nfHVuZGVmaW5lZCB7XG4gICAgICAgIGZvcm1hdHMgPSBmb3JtYXRzID8/IERFRkFVTFRfUkFOR0VPRl9GT1JNQVRTO1xuICAgICAgICBpZiAoKHJhbmdlLm1pbiAhPT0gdW5kZWZpbmVkKSAmJiAocmFuZ2UubWluICE9PSBlbXB0eVZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKChyYW5nZS5tYXggIT09IHVuZGVmaW5lZCkgJiYgKHJhbmdlLm1heCAhPT0gZW1wdHlWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTXVzdGFjaGUucmVuZGVyKGZvcm1hdHMubWluTWF4LCByYW5nZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTXVzdGFjaGUucmVuZGVyKGZvcm1hdHMubWluT25seSwgcmFuZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKChyYW5nZS5tYXggIT09IHVuZGVmaW5lZCkgJiYgKHJhbmdlLm1heCAhPT0gZW1wdHlWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBNdXN0YWNoZS5yZW5kZXIoZm9ybWF0cy5tYXhPbmx5LCByYW5nZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9kZWZhdWx0Q29tcGFyZTxUPih0MTogVCwgdDI6IFQpOiAnbGVzcyd8J2VxdWFsJ3wnZ3JlYXRlcicge1xuICAgICAgICBpZiAodDEgPCB0Mikge1xuICAgICAgICAgICAgcmV0dXJuICdsZXNzJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0MSA+IHQyKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2dyZWF0ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnZXF1YWwnO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGVjayh0OiBUKTogJ2xlc3MnfCdpbmNsdWRlZCd8J2dyZWF0ZXInIHtcbiAgICAgICAgaWYgKCh0aGlzLm1pbiAhPT0gdW5kZWZpbmVkKSAmJiAodGhpcy5fY29tcGFyZSh0LCB0aGlzLm1pbikgPT09ICdsZXNzJykpIHtcbiAgICAgICAgICAgIHJldHVybiAnbGVzcyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0aGlzLm1heCAhPT0gdW5kZWZpbmVkKSAmJiAodGhpcy5fY29tcGFyZSh0LCB0aGlzLm1heCkgIT09ICdsZXNzJykpIHtcbiAgICAgICAgICAgIHJldHVybiAnZ3JlYXRlcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdpbmNsdWRlZCc7XG4gICAgfVxuXG4gICAgcHVibGljIGluY2x1ZGVzKHQ6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2sodCkgPT09ICdpbmNsdWRlZCc7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmRUcmFuc2l0aW9uKHQ6IFQpOiBUfHVuZGVmaW5lZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5jaGVjayh0KSkge1xuICAgICAgICAgICAgY2FzZSAnbGVzcyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWluO1xuICAgICAgICAgICAgY2FzZSAnaW5jbHVkZWQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1heDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0Zvcm1hdHRlZFByb3BlcnRpZXMoZm9ybWF0OiAodmFsdWU6IFQpID0+IHN0cmluZ3x1bmRlZmluZWQpOiBSYW5nZU9mUHJvcGVydGllczxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pbjogKHRoaXMubWluICE9PSB1bmRlZmluZWQpID8gZm9ybWF0KHRoaXMubWluKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG1heDogKHRoaXMubWF4ICE9PSB1bmRlZmluZWQpID8gZm9ybWF0KHRoaXMubWF4KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0KGZvcm1hdDogKHZhbHVlOiBUKSA9PiBzdHJpbmd8dW5kZWZpbmVkLCBmb3JtYXRzPzogUmFuZ2VPZkZvcm1hdHMpOiBzdHJpbmd8dW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIFJhbmdlT2YucHJvcGVydGllc1RvU3RyaW5nKHRoaXMudG9Gb3JtYXR0ZWRQcm9wZXJ0aWVzKGZvcm1hdCksIGZvcm1hdHMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY29tcGFyZSh0MTogVCwgdDI6IFQpOiAnbGVzcyd8J2VxdWFsJ3wnZ3JlYXRlcicge1xuICAgICAgICByZXR1cm4gUmFuZ2VPZi5fZGVmYXVsdENvbXBhcmUodDEsIHQyKTtcbiAgICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2VPZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yYW5nZU9mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7OztBQUVILHFDQUFpRDtBQUNqRCx3REFBZ0M7QUFhbkIsUUFBQSx1QkFBdUIsR0FBRztJQUNuQyxPQUFPLEVBQUUsVUFBVTtJQUNuQixPQUFPLEVBQUUsVUFBVTtJQUNuQixNQUFNLEVBQUUsaUJBQWlCO0NBQzVCLENBQUM7QUFFRixNQUFhLE9BQU87SUFJaEIsWUFBbUIsR0FBTyxFQUFFLEdBQU87UUFDL0IsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pHO1FBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBSSxJQUEyQjtRQUNwRCxPQUFPLHNCQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLEdBQUcsRUFBRSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFJLEtBQTJCLEVBQUUsT0FBd0IsRUFBRSxVQUFjO1FBQ3JHLE9BQU8sR0FBRyxP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O0lBQ25GLENBQUM7SUFFUyxRQUFRLENBQUMsRUFBSyxFQUFFLEVBQUs7UUFDM0IsT0FBTyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0o7QUFqRkQsMEJBaUZDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IFJlc3VsdCwgY2FwdHVyZVJlc3VsdCB9IGZyb20gJy4vcmVzdWx0JztcbmltcG9ydCBNdXN0YWNoZSBmcm9tICdtdXN0YWNoZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2VPZlByb3BlcnRpZXM8VD4ge1xuICAgIHJlYWRvbmx5IG1pbj86IFQ7XG4gICAgcmVhZG9ubHkgbWF4PzogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYW5nZU9mRm9ybWF0cyB7XG4gICAgbWluT25seTogc3RyaW5nO1xuICAgIG1heE9ubHk6IHN0cmluZztcbiAgICBtaW5NYXg6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkFOR0VPRl9GT1JNQVRTID0ge1xuICAgIG1pbk9ubHk6ICd7e21pbn19LScsXG4gICAgbWF4T25seTogJy17e21heH19JyxcbiAgICBtaW5NYXg6ICd7e21pbn19LXt7bWF4fX0nLFxufTtcblxuZXhwb3J0IGNsYXNzIFJhbmdlT2Y8VD4gaW1wbGVtZW50cyBSYW5nZU9mUHJvcGVydGllczxUPiB7XG4gICAgcHVibGljIHJlYWRvbmx5IG1pbj86IFQ7XG4gICAgcHVibGljIHJlYWRvbmx5IG1heD86IFQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWluPzogVCwgbWF4PzogVCkge1xuICAgICAgICBpZiAoKChtaW4gIT09IHVuZGVmaW5lZCkgJiYgKG1heCAhPT0gdW5kZWZpbmVkKSkgJiZcbiAgICAgICAgICAgIHRoaXMuX2NvbXBhcmUobWluLCBtYXgpID09PSAnZ3JlYXRlcicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52ZXJ0ZWQgcmFuZ2UgLSAke0pTT04uc3RyaW5naWZ5KG1pbil9IG11c3QgYmUgPD0gJHtKU09OLnN0cmluZ2lmeShtYXgpfS5gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1pbiA9IG1pbjtcbiAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVSYW5nZTxUPihpbml0PzogUmFuZ2VPZlByb3BlcnRpZXM8VD4pOiBSZXN1bHQ8UmFuZ2VPZjxUPj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgUmFuZ2VPZjxUPihpbml0Py5taW4sIGluaXQ/Lm1heCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcHJvcGVydGllc1RvU3RyaW5nPFQ+KHJhbmdlOiBSYW5nZU9mUHJvcGVydGllczxUPiwgZm9ybWF0cz86IFJhbmdlT2ZGb3JtYXRzLCBlbXB0eVZhbHVlPzogVCk6IHN0cmluZ3x1bmRlZmluZWQge1xuICAgICAgICBmb3JtYXRzID0gZm9ybWF0cyA/PyBERUZBVUxUX1JBTkdFT0ZfRk9STUFUUztcbiAgICAgICAgaWYgKChyYW5nZS5taW4gIT09IHVuZGVmaW5lZCkgJiYgKHJhbmdlLm1pbiAhPT0gZW1wdHlWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICgocmFuZ2UubWF4ICE9PSB1bmRlZmluZWQpICYmIChyYW5nZS5tYXggIT09IGVtcHR5VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE11c3RhY2hlLnJlbmRlcihmb3JtYXRzLm1pbk1heCwgcmFuZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE11c3RhY2hlLnJlbmRlcihmb3JtYXRzLm1pbk9ubHksIHJhbmdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgocmFuZ2UubWF4ICE9PSB1bmRlZmluZWQpICYmIChyYW5nZS5tYXggIT09IGVtcHR5VmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gTXVzdGFjaGUucmVuZGVyKGZvcm1hdHMubWF4T25seSwgcmFuZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfZGVmYXVsdENvbXBhcmU8VD4odDE6IFQsIHQyOiBUKTogJ2xlc3MnfCdlcXVhbCd8J2dyZWF0ZXInIHtcbiAgICAgICAgaWYgKHQxIDwgdDIpIHtcbiAgICAgICAgICAgIHJldHVybiAnbGVzcyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodDEgPiB0Mikge1xuICAgICAgICAgICAgcmV0dXJuICdncmVhdGVyJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ2VxdWFsJztcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hlY2sodDogVCk6ICdsZXNzJ3wnaW5jbHVkZWQnfCdncmVhdGVyJyB7XG4gICAgICAgIGlmICgodGhpcy5taW4gIT09IHVuZGVmaW5lZCkgJiYgKHRoaXMuX2NvbXBhcmUodCwgdGhpcy5taW4pID09PSAnbGVzcycpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2xlc3MnO1xuICAgICAgICB9XG4gICAgICAgIGlmICgodGhpcy5tYXggIT09IHVuZGVmaW5lZCkgJiYgKHRoaXMuX2NvbXBhcmUodCwgdGhpcy5tYXgpICE9PSAnbGVzcycpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2dyZWF0ZXInO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnaW5jbHVkZWQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbmNsdWRlcyh0OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrKHQpID09PSAnaW5jbHVkZWQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5kVHJhbnNpdGlvbih0OiBUKTogVHx1bmRlZmluZWQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuY2hlY2sodCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2xlc3MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1pbjtcbiAgICAgICAgICAgIGNhc2UgJ2luY2x1ZGVkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9Gb3JtYXR0ZWRQcm9wZXJ0aWVzKGZvcm1hdDogKHZhbHVlOiBUKSA9PiBzdHJpbmd8dW5kZWZpbmVkKTogUmFuZ2VPZlByb3BlcnRpZXM8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBtaW46ICh0aGlzLm1pbiAhPT0gdW5kZWZpbmVkKSA/IGZvcm1hdCh0aGlzLm1pbikgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBtYXg6ICh0aGlzLm1heCAhPT0gdW5kZWZpbmVkKSA/IGZvcm1hdCh0aGlzLm1heCkgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGZvcm1hdChmb3JtYXQ6ICh2YWx1ZTogVCkgPT4gc3RyaW5nfHVuZGVmaW5lZCwgZm9ybWF0cz86IFJhbmdlT2ZGb3JtYXRzKTogc3RyaW5nfHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBSYW5nZU9mLnByb3BlcnRpZXNUb1N0cmluZyh0aGlzLnRvRm9ybWF0dGVkUHJvcGVydGllcyhmb3JtYXQpLCBmb3JtYXRzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2NvbXBhcmUodDE6IFQsIHQyOiBUKTogJ2xlc3MnfCdlcXVhbCd8J2dyZWF0ZXInIHtcbiAgICAgICAgcmV0dXJuIFJhbmdlT2YuX2RlZmF1bHRDb21wYXJlKHQxLCB0Mik7XG4gICAgfVxufVxuIl19
export declare type Result<T> = Success<T> | Failure<T>;
export declare type SuccessContinuation<T, TN> = (value: T) => Result<TN>;
export declare type FailureContinuation<T> = (message: string) => Result<T>;
export interface IResultLogger {
error(message: string): void;
}
export interface IResult<T> {
isSuccess(): this is Success<T>;
isFailure(): this is Failure<T>;
getValueOrThrow(): T;
getValueOrThrow(logger?: IResultLogger): T;
getValueOrDefault(dflt?: T): T | undefined;

@@ -18,3 +21,3 @@ onSuccess<TN>(cb: SuccessContinuation<T, TN>): Result<TN>;

get value(): T;
getValueOrThrow(): T;
getValueOrThrow(_logger?: IResultLogger): T;
getValueOrDefault(dflt?: T): T | undefined;

@@ -30,3 +33,3 @@ onSuccess<TN>(cb: SuccessContinuation<T, TN>): Result<TN>;

get message(): string;
getValueOrThrow(): never;
getValueOrThrow(logger?: IResultLogger): never;
getValueOrDefault(dflt?: T): T | undefined;

@@ -67,4 +70,11 @@ onSuccess<TN>(_: SuccessContinuation<T, TN>): Result<TN>;

/**
* Maps an array of Result<T> to an array of strings consisting of all
* error messages returned by results in the source array. Ignores
* success results and returns an empty array if there were no errors.
* @param resultsIn results to be reported
*/
export declare function mapFailures<T>(resultsIn: Iterable<Result<T>>): string[];
/**
* Returns success with true if all results are successful. If any are unsuccessful,
* returns failure with a concatenade summary of all failure messages.
* returns failure with a concatenated summary of all failure messages.
* @param results The results to be tested.

@@ -71,0 +81,0 @@ */

@@ -24,3 +24,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.populateObject = exports.allSucceed = exports.mapSuccess = exports.mapResults = exports.captureResult = exports.fail = exports.succeed = exports.Failure = exports.Success = void 0;
exports.populateObject = exports.allSucceed = exports.mapFailures = exports.mapSuccess = exports.mapResults = exports.captureResult = exports.fail = exports.succeed = exports.Failure = exports.Success = void 0;
class Success {

@@ -39,3 +39,3 @@ constructor(value) {

}
getValueOrThrow() {
getValueOrThrow(_logger) {
return this._value;

@@ -68,3 +68,6 @@ }

}
getValueOrThrow() {
getValueOrThrow(logger) {
if (logger !== undefined) {
logger.error(this._message);
}
throw new Error(this._message);

@@ -162,4 +165,20 @@ }

/**
* Maps an array of Result<T> to an array of strings consisting of all
* error messages returned by results in the source array. Ignores
* success results and returns an empty array if there were no errors.
* @param resultsIn results to be reported
*/
function mapFailures(resultsIn) {
const errors = [];
for (const result of resultsIn) {
if (result.isFailure()) {
errors.push(result.message);
}
}
return errors;
}
exports.mapFailures = mapFailures;
/**
* Returns success with true if all results are successful. If any are unsuccessful,
* returns failure with a concatenade summary of all failure messages.
* returns failure with a concatenated summary of all failure messages.
* @param results The results to be tested.

@@ -222,2 +241,2 @@ */

exports.populateObject = populateObject;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFlSCxNQUFhLE9BQU87SUFHaEIsWUFBWSxLQUFRO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVM7UUFDWixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxlQUFlO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBUTs7UUFDN0IsYUFBTyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVNLFNBQVMsQ0FBSyxFQUE4QjtRQUMvQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLFNBQVMsQ0FBSyxDQUF5QjtRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFsQ0QsMEJBa0NDO0FBRUQsTUFBYSxPQUFPO0lBR2hCLFlBQVksT0FBZTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRU0sZUFBZTtRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMs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UyxFQUFFLEVBQUU7Z0JBQ3BCLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQzdCO2lCQUNJO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQy9CO1NBQ0o7YUFDSTtZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsb0NBQW9DLENBQUMsQ0FBQztTQUMvRTtLQUNKO0lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDbEM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFVLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBakNELHdDQWlDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VD4gPSBTdWNjZXNzPFQ+IHwgRmFpbHVyZTxUPjtcbmV4cG9ydCB0eXBlIFN1Y2Nlc3NDb250aW51YXRpb248VCwgVE4+ID0gKHZhbHVlOiBUKSA9PiBSZXN1bHQ8VE4+O1xuZXhwb3J0IHR5cGUgRmFpbHVyZUNvbnRpbnVhdGlvbjxUPiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IFJlc3VsdDxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBJUmVzdWx0PFQ+IHtcbiAgICBpc1N1Y2Nlc3MoKTogdGhpcyBpcyBTdWNjZXNzPFQ+O1xuICAgIGlzRmFpbHVyZSgpOiB0aGlzIGlzIEZhaWx1cmU8VD47XG4gICAgZ2V0VmFsdWVPclRocm93KCk6IFQ7XG4gICAgZ2V0VmFsdWVPckRlZmF1bHQoZGZsdD86IFQpOiBUfHVuZGVmaW5lZDtcbiAgICBvblN1Y2Nlc3M8VE4+KGNiOiBTdWNjZXNzQ29udGludWF0aW9uPFQsIFROPik6IFJlc3VsdDxUTj47XG4gICAgb25GYWlsdXJlKGNiOiBGYWlsdXJlQ29udGludWF0aW9uPFQ+KTogUmVzdWx0PFQ+O1xufVxuXG5leHBvcnQgY2xhc3MgU3VjY2VzczxUPiBpbXBsZW1lbnRzIElSZXN1bHQ8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlOiBUO1xuXG4gICAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNTdWNjZXNzKCk6IHRoaXMgaXMgU3VjY2VzczxUPiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZhaWx1cmUoKTogdGhpcyBpcyBGYWlsdXJlPFQ+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWVPclRocm93KCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlT3JEZWZhdWx0KGRmbHQ/OiBUKTogVHx1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUgPz8gZGZsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TdWNjZXNzPFROPihjYjogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+IHtcbiAgICAgICAgcmV0dXJuIGNiKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZhaWx1cmU8VE4+KF86IEZhaWx1cmVDb250aW51YXRpb248VD4pOiBSZXN1bHQ8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGYWlsdXJlPFQ+IGltcGxlbWVudHMgSVJlc3VsdDxUPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1N1Y2Nlc3MoKTogdGhpcyBpcyBTdWNjZXNzPFQ+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZhaWx1cmUoKTogdGhpcyBpcyBGYWlsdXJlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZU9yVGhyb3coKTogbmV2ZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5fbWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlT3JEZWZhdWx0KGRmbHQ/OiBUKTogVHx1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gZGZsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TdWNjZXNzPFROPihfOiBTdWNjZXNzQ29udGludWF0aW9uPFQsIFROPik6IFJlc3VsdDxUTj4ge1xuICAgICAgICByZXR1cm4gbmV3IEZhaWx1cmUodGhpcy5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GYWlsdXJlKGNiOiBGYWlsdXJlQ29udGludWF0aW9uPFQ+KTogUmVzdWx0PFQ+IHtcbiAgICAgICAgcmV0dXJuIGNiKHRoaXMubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2U7XG4gICAgfVxufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3Igc3VjY2Vzc2Z1bCByZXR1cm5cbiAqIEBwYXJhbSB2YWwgVGhlIHZhbHVlIHRvIGJlIHJldHVybmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWNjZWVkPFQ+KHZhbDogVCk6IFN1Y2Nlc3M8VD4ge1xuICAgIHJldHVybiBuZXcgU3VjY2VzczxUPih2YWwpO1xufVxuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZXJyb3IgcmV0dXJuXG4gKiBAcGFyYW0gbWVzc2FnZSBFcnJvciBtZXNzYWdlIHRvIGJlIHJldHVybmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmYWlsPFQ+KG1lc3NhZ2U6IHN0cmluZyk6IEZhaWx1cmU8VD4ge1xuICAgIHJldHVybiBuZXcgRmFpbHVyZTxUPihtZXNzYWdlKTtcbn1cblxuLyoqXG4gKiBXcmFwcyBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIDxUPiBvciB0aHJvd3NcbiAqIHRvIHByb2R1Y2UgU3VjY2VzczxUPiBvciBGYWlsdXJlPFQ+XG4gKiBAcGFyYW0gZnVuYyBUaGUgbWV0aG9kIHRvIGJlIGNhcHR1cmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYXB0dXJlUmVzdWx0PFQ+KGZ1bmM6ICgpID0+IFQpOiBSZXN1bHQ8VD4ge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBzdWNjZWVkKGZ1bmMoKSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIGZhaWwoKGVyciBhcyBFcnJvcikubWVzc2FnZSk7XG4gICAgfVxufVxuXG4vKipcbiAqIE1hcHMgYW4gYXJyYXkgb2YgUmVzdWx0PFQ+IHRvIGFuIGFycmF5IG9mIDxUPiwgaWYgYWxsIHJlc3VsdHMgYXJlXG4gKiBzdWNjZXNzZnVsLiAgSWYgYW55IHJlc3VsdHMgZmFpbCwgcmV0dXJucyBmYWlsdXJlIHdpdGggYSBjb25jYXRlbmF0ZWRcbiAqIHN1bW1hcnkgb2YgYWxsIGZhaWx1cmUgbWVzc2FnZXMuXG4gKiBAcGFyYW0gcmVzdWx0c0luIFRoZSByZXN1bHRzIHRvIGJlIG1hcHBlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFJlc3VsdHM8VD4ocmVzdWx0c0luOiBJdGVyYWJsZTxSZXN1bHQ8VD4+KTogUmVzdWx0PFRbXT4ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBlbGVtZW50czogVFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzSW4pIHtcbiAgICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgZWxlbWVudHMucHVzaChyZXN1bHQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZXJyb3JzLnB1c2gocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBmYWlsKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZWVkKGVsZW1lbnRzKTtcbn1cblxuLyoqXG4gKiBNYXBzIGFuIGFycmF5IG9mIFJlc3VsdDxUPiB0byBhbiBhcnJheSBvZiA8VD4sIG9taXR0aW5nIGFueSBlcnJvclxuICogcmVzdWx0cy4gIElmIG5vIHJlc3VsdHMgd2VyZSBzdWNjZXNzZnVsLCByZXR1cm5zIGZhaWx1cmUgd2l0aCBhXG4gKiBjb25jYXRlbmF0ZWQgc3VtbWFyeSBvZiBhbGwgZmFpbHVyZSBtZXNzYWdlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFN1Y2Nlc3M8VD4ocmVzdWx0c0luOiBJdGVyYWJsZTxSZXN1bHQ8VD4+KTogUmVzdWx0PFRbXT4ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBlbGVtZW50czogVFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzSW4pIHtcbiAgICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xuICAgICAgICAgICAgZWxlbWVudHMucHVzaChyZXN1bHQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZXJyb3JzLnB1c2gocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKChlbGVtZW50cy5sZW5ndGggPT09IDApICYmIChlcnJvcnMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgcmV0dXJuIGZhaWwoZXJyb3JzLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2NlZWQoZWxlbWVudHMpO1xufVxuXG4vKipcbiAqIFJldHVybnMgc3VjY2VzcyB3aXRoIHRydWUgaWYgYWxsIHJlc3VsdHMgYXJlIHN1Y2Nlc3NmdWwuICBJZiBhbnkgYXJlIHVuc3VjY2Vzc2Z1bCxcbiAqIHJldHVybnMgZmFpbHVyZSB3aXRoIGEgY29uY2F0ZW5hZGUgc3VtbWFyeSBvZiBhbGwgZmFpbHVyZSBtZXNzYWdlcy5cbiAqIEBwYXJhbSByZXN1bHRzIFRoZSByZXN1bHRzIHRvIGJlIHRlc3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbFN1Y2NlZWQ8VD4ocmVzdWx0czogSXRlcmFibGU8UmVzdWx0PHVua25vd24+Piwgc3VjY2Vzc1ZhbHVlOiBUKTogUmVzdWx0PFQ+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICAgIGlmIChyZXN1bHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChzdWNjZXNzVmFsdWUpO1xufVxuXG5leHBvcnQgdHlwZSBGaWVsZEluaXRpYWxpemVyczxUPiA9IHsgWyBrZXkgaW4ga2V5b2YgVCBdOiAoc3RhdGU6IFBhcnRpYWw8VD4pID0+IFJlc3VsdDxUW2tleV0+IH07XG5cbi8qKlxuICogUG9wdWxhdGVzIGFuIGFuIG9iamVjdCBiYXNlZCBvbiBhIHByb3RvdHlwZSBmdWxsIG9mIGZpZWxkIGluaXRpYWxpemVycyB0aGF0IHJldHVybiBSZXN1bHQ8VFtrZXldPi5cbiAqIFJldHVybnMgc3VjY2VzcyB3aXRoIHRoZSBwb3B1bGF0ZWQgb2JqZWN0IGlmIGFsbCBpbml0aWFsaXplcnMgc3VjY2VlZCwgb3IgZmFpbHVyZSB3aXRoIGFcbiAqIGNvbmNhdGVuYXRlZCBsaXN0IG9mIGFsbCBmYWlsdXJlIG1lc3NhZ2VzLlxuICogQHBhcmFtIGluaXRpYWxpemVycyBBbiBvYmplY3Qgd2l0aCB0aGUgc2hhcGUgb2YgdGhlIHRhcmdldCBidXQgd2l0aCBpbml0aWFsaXplciBmdW5jdGlvbnMgZm9yXG4gKiBlYWNoIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVPYmplY3Q8VD4oaW5pdGlhbGl6ZXJzOiBGaWVsZEluaXRpYWxpemVyczxUPiwgb3JkZXI/OiAoa2V5b2YgVClbXSk6IFJlc3VsdDxUPiB7XG4gICAgY29uc3Qgc3RhdGUgPSB7fSBhcyB7IFtrZXkgaW4ga2V5b2YgVF06IFRba2V5XSB9O1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBrZXlzOiAoa2V5b2YgVClbXSA9IEFycmF5LmZyb20ob3JkZXIgPz8gW10pO1xuICAgIGNvbnN0IGZvdW5kS2V5cyA9IG5ldyBTZXQ8a2V5b2YgVD4ob3JkZXIpO1xuXG4gICAgLy8gc3RhcnQgd2l0aCB0aGUgc3VwcGxpZWQgb3JkZXIgdGhlbiBhcHBlbmQgYW55dGhpbmcgZWxzZSB3ZSBmaW5kXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdGlhbGl6ZXJzKSB7XG4gICAgICAgIGlmICghZm91bmRLZXlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgIGZvdW5kS2V5cy5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGluaXRpYWxpemVyc1trZXldKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBpbml0aWFsaXplcnNba2V5XShzdGF0ZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgc3RhdGVba2V5XSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGBwb3B1bGF0ZU9iamVjdDogS2V5ICR7a2V5fSBpcyBwcmVzZW50IGJ1dCBoYXMgbm8gaW5pdGlhbGl6ZXJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChzdGF0ZSBhcyBUKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7QUFtQkgsTUFBYSxPQUFPO0lBR2hCLFlBQVksS0FBUTtRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0sZUFBZSxDQUFDLE9BQXVCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBUTs7UUFDN0IsYUFBTyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVNLFNBQVMsQ0FBSyxFQUE4QjtRQUMvQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVNLFNBQVMsQ0FBSyxDQUF5QjtRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFsQ0QsMEJBa0NDO0FBRUQsTUFBYSxPQUFPO0lBR2hCLFlBQVksT0FBZTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRU0sZUFBZSxDQUFDLE1BQXNCO1FBQ3pDLElBQUksTUFBTSxLQUFLLFNB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Q0FBQyxDQUFDO0lBRTFDLGtFQUFrRTtJQUNsRSxLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRTtRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN0QjtLQUNKO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDcEIsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbkIsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNwQixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUM3QjtpQkFDSTtnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMvQjtTQUNKO2FBQ0k7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLG9DQUFvQyxDQUFDLENBQUM7U0FDL0U7S0FDSjtJQUVELElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ2xDO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBVSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQWpDRCx3Q0FpQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuZXhwb3J0IHR5cGUgUmVzdWx0PFQ+ID0gU3VjY2VzczxUPiB8IEZhaWx1cmU8VD47XG5leHBvcnQgdHlwZSBTdWNjZXNzQ29udGludWF0aW9uPFQsIFROPiA9ICh2YWx1ZTogVCkgPT4gUmVzdWx0PFROPjtcbmV4cG9ydCB0eXBlIEZhaWx1cmVDb250aW51YXRpb248VD4gPSAobWVzc2FnZTogc3RyaW5nKSA9PiBSZXN1bHQ8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlc3VsdExvZ2dlciB7XG4gICAgZXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVzdWx0PFQ+IHtcbiAgICBpc1N1Y2Nlc3MoKTogdGhpcyBpcyBTdWNjZXNzPFQ+O1xuICAgIGlzRmFpbHVyZSgpOiB0aGlzIGlzIEZhaWx1cmU8VD47XG4gICAgZ2V0VmFsdWVPclRocm93KGxvZ2dlcj86IElSZXN1bHRMb2dnZXIpOiBUO1xuICAgIGdldFZhbHVlT3JEZWZhdWx0KGRmbHQ/OiBUKTogVHx1bmRlZmluZWQ7XG4gICAgb25TdWNjZXNzPFROPihjYjogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+O1xuICAgIG9uRmFpbHVyZShjYjogRmFpbHVyZUNvbnRpbnVhdGlvbjxUPik6IFJlc3VsdDxUPjtcbn1cblxuZXhwb3J0IGNsYXNzIFN1Y2Nlc3M8VD4gaW1wbGVtZW50cyBJUmVzdWx0PFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZTogVDtcblxuICAgIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGlzU3VjY2VzcygpOiB0aGlzIGlzIFN1Y2Nlc3M8VD4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGYWlsdXJlKCk6IHRoaXMgaXMgRmFpbHVyZTxUPiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlT3JUaHJvdyhfbG9nZ2VyPzogSVJlc3VsdExvZ2dlcik6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlT3JEZWZhdWx0KGRmbHQ/OiBUKTogVHx1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUgPz8gZGZsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TdWNjZXNzPFROPihjYjogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+IHtcbiAgICAgICAgcmV0dXJuIGNiKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZhaWx1cmU8VE4+KF86IEZhaWx1cmVDb250aW51YXRpb248VD4pOiBSZXN1bHQ8VD4ge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGYWlsdXJlPFQ+IGltcGxlbWVudHMgSVJlc3VsdDxUPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZTogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1N1Y2Nlc3MoKTogdGhpcyBpcyBTdWNjZXNzPFQ+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZhaWx1cmUoKTogdGhpcyBpcyBGYWlsdXJlPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZU9yVGhyb3cobG9nZ2VyPzogSVJlc3VsdExvZ2dlcik6IG5ldmVyIHtcbiAgICAgICAgaWYgKGxvZ2dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IodGhpcy5fbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuX21lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZU9yRGVmYXVsdChkZmx0PzogVCk6IFR8dW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGRmbHQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3VjY2VzczxUTj4oXzogU3VjY2Vzc0NvbnRpbnVhdGlvbjxULCBUTj4pOiBSZXN1bHQ8VE4+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGYWlsdXJlKHRoaXMubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRmFpbHVyZShjYjogRmFpbHVyZUNvbnRpbnVhdGlvbjxUPik6IFJlc3VsdDxUPiB7XG4gICAgICAgIHJldHVybiBjYih0aGlzLm1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHN1Y2Nlc3NmdWwgcmV0dXJuXG4gKiBAcGFyYW0gdmFsIFRoZSB2YWx1ZSB0byBiZSByZXR1cm5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VjY2VlZDxUPih2YWw6IFQpOiBTdWNjZXNzPFQ+IHtcbiAgICByZXR1cm4gbmV3IFN1Y2Nlc3M8VD4odmFsKTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGVycm9yIHJldHVyblxuICogQHBhcmFtIG1lc3NhZ2UgRXJyb3IgbWVzc2FnZSB0byBiZSByZXR1cm5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmFpbDxUPihtZXNzYWdlOiBzdHJpbmcpOiBGYWlsdXJlPFQ+IHtcbiAgICByZXR1cm4gbmV3IEZhaWx1cmU8VD4obWVzc2FnZSk7XG59XG5cbi8qKlxuICogV3JhcHMgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGEgdmFsdWUgb2YgdHlwZSA8VD4gb3IgdGhyb3dzXG4gKiB0byBwcm9kdWNlIFN1Y2Nlc3M8VD4gb3IgRmFpbHVyZTxUPlxuICogQHBhcmFtIGZ1bmMgVGhlIG1ldGhvZCB0byBiZSBjYXB0dXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FwdHVyZVJlc3VsdDxUPihmdW5jOiAoKSA9PiBUKTogUmVzdWx0PFQ+IHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc3VjY2VlZChmdW5jKCkpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiBmYWlsKChlcnIgYXMgRXJyb3IpLm1lc3NhZ2UpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBNYXBzIGFuIGFycmF5IG9mIFJlc3VsdDxUPiB0byBhbiBhcnJheSBvZiA8VD4sIGlmIGFsbCByZXN1bHRzIGFyZVxuICogc3VjY2Vzc2Z1bC4gIElmIGFueSByZXN1bHRzIGZhaWwsIHJldHVybnMgZmFpbHVyZSB3aXRoIGEgY29uY2F0ZW5hdGVkXG4gKiBzdW1tYXJ5IG9mIGFsbCBmYWlsdXJlIG1lc3NhZ2VzLlxuICogQHBhcmFtIHJlc3VsdHNJbiBUaGUgcmVzdWx0cyB0byBiZSBtYXBwZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBSZXN1bHRzPFQ+KHJlc3VsdHNJbjogSXRlcmFibGU8UmVzdWx0PFQ+Pik6IFJlc3VsdDxUW10+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZWxlbWVudHM6IFRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0c0luKSB7XG4gICAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChlbGVtZW50cyk7XG59XG5cbi8qKlxuICogTWFwcyBhbiBhcnJheSBvZiBSZXN1bHQ8VD4gdG8gYW4gYXJyYXkgb2YgPFQ+LCBvbWl0dGluZyBhbnkgZXJyb3JcbiAqIHJlc3VsdHMuICBJZiBubyByZXN1bHRzIHdlcmUgc3VjY2Vzc2Z1bCwgcmV0dXJucyBmYWlsdXJlIHdpdGggYVxuICogY29uY2F0ZW5hdGVkIHN1bW1hcnkgb2YgYWxsIGZhaWx1cmUgbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBTdWNjZXNzPFQ+KHJlc3VsdHNJbjogSXRlcmFibGU8UmVzdWx0PFQ+Pik6IFJlc3VsdDxUW10+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZWxlbWVudHM6IFRbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0c0luKSB7XG4gICAgICAgIGlmIChyZXN1bHQuaXNTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICgoZWxlbWVudHMubGVuZ3RoID09PSAwKSAmJiAoZXJyb3JzLmxlbmd0aCA+IDApKSB7XG4gICAgICAgIHJldHVybiBmYWlsKGVycm9ycy5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZWVkKGVsZW1lbnRzKTtcbn1cblxuLyoqXG4gKiBNYXBzIGFuIGFycmF5IG9mIFJlc3VsdDxUPiB0byBhbiBhcnJheSBvZiBzdHJpbmdzIGNvbnNpc3Rpbmcgb2YgYWxsXG4gKiBlcnJvciBtZXNzYWdlcyByZXR1cm5lZCBieSByZXN1bHRzIGluIHRoZSBzb3VyY2UgYXJyYXkuIElnbm9yZXNcbiAqIHN1Y2Nlc3MgcmVzdWx0cyBhbmQgcmV0dXJucyBhbiBlbXB0eSBhcnJheSBpZiB0aGVyZSB3ZXJlIG5vIGVycm9ycy5cbiAqIEBwYXJhbSByZXN1bHRzSW4gcmVzdWx0cyB0byBiZSByZXBvcnRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwRmFpbHVyZXM8VD4ocmVzdWx0c0luOiBJdGVyYWJsZTxSZXN1bHQ8VD4+KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzSW4pIHtcbiAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgZXJyb3JzLnB1c2gocmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogUmV0dXJucyBzdWNjZXNzIHdpdGggdHJ1ZSBpZiBhbGwgcmVzdWx0cyBhcmUgc3VjY2Vzc2Z1bC4gIElmIGFueSBhcmUgdW5zdWNjZXNzZnVsLFxuICogcmV0dXJucyBmYWlsdXJlIHdpdGggYSBjb25jYXRlbmF0ZWQgc3VtbWFyeSBvZiBhbGwgZmFpbHVyZSBtZXNzYWdlcy5cbiAqIEBwYXJhbSByZXN1bHRzIFRoZSByZXN1bHRzIHRvIGJlIHRlc3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbFN1Y2NlZWQ8VD4ocmVzdWx0czogSXRlcmFibGU8UmVzdWx0PHVua25vd24+Piwgc3VjY2Vzc1ZhbHVlOiBUKTogUmVzdWx0PFQ+IHtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgZWxzZVxuICAgIGlmIChyZXN1bHRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0ZhaWx1cmUoKSkge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChzdWNjZXNzVmFsdWUpO1xufVxuXG5leHBvcnQgdHlwZSBGaWVsZEluaXRpYWxpemVyczxUPiA9IHsgWyBrZXkgaW4ga2V5b2YgVCBdOiAoc3RhdGU6IFBhcnRpYWw8VD4pID0+IFJlc3VsdDxUW2tleV0+IH07XG5cbi8qKlxuICogUG9wdWxhdGVzIGFuIGFuIG9iamVjdCBiYXNlZCBvbiBhIHByb3RvdHlwZSBmdWxsIG9mIGZpZWxkIGluaXRpYWxpemVycyB0aGF0IHJldHVybiBSZXN1bHQ8VFtrZXldPi5cbiAqIFJldHVybnMgc3VjY2VzcyB3aXRoIHRoZSBwb3B1bGF0ZWQgb2JqZWN0IGlmIGFsbCBpbml0aWFsaXplcnMgc3VjY2VlZCwgb3IgZmFpbHVyZSB3aXRoIGFcbiAqIGNvbmNhdGVuYXRlZCBsaXN0IG9mIGFsbCBmYWlsdXJlIG1lc3NhZ2VzLlxuICogQHBhcmFtIGluaXRpYWxpemVycyBBbiBvYmplY3Qgd2l0aCB0aGUgc2hhcGUgb2YgdGhlIHRhcmdldCBidXQgd2l0aCBpbml0aWFsaXplciBmdW5jdGlvbnMgZm9yXG4gKiBlYWNoIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVPYmplY3Q8VD4oaW5pdGlhbGl6ZXJzOiBGaWVsZEluaXRpYWxpemVyczxUPiwgb3JkZXI/OiAoa2V5b2YgVClbXSk6IFJlc3VsdDxUPiB7XG4gICAgY29uc3Qgc3RhdGUgPSB7fSBhcyB7IFtrZXkgaW4ga2V5b2YgVF06IFRba2V5XSB9O1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBrZXlzOiAoa2V5b2YgVClbXSA9IEFycmF5LmZyb20ob3JkZXIgPz8gW10pO1xuICAgIGNvbnN0IGZvdW5kS2V5cyA9IG5ldyBTZXQ8a2V5b2YgVD4ob3JkZXIpO1xuXG4gICAgLy8gc3RhcnQgd2l0aCB0aGUgc3VwcGxpZWQgb3JkZXIgdGhlbiBhcHBlbmQgYW55dGhpbmcgZWxzZSB3ZSBmaW5kXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdGlhbGl6ZXJzKSB7XG4gICAgICAgIGlmICghZm91bmRLZXlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgIGZvdW5kS2V5cy5hZGQoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGluaXRpYWxpemVyc1trZXldKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBpbml0aWFsaXplcnNba2V5XShzdGF0ZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmlzU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgc3RhdGVba2V5XSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGVycm9ycy5wdXNoKGBwb3B1bGF0ZU9iamVjdDogS2V5ICR7a2V5fSBpcyBwcmVzZW50IGJ1dCBoYXMgbm8gaW5pdGlhbGl6ZXJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gZmFpbChlcnJvcnMuam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VlZChzdGF0ZSBhcyBUKTtcbn1cbiJdfQ==
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