@fgv/ts-utils 1.9.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +26 -0
- package/CHANGELOG.md +14 -0
- package/dist/ts-utils.d.ts +3007 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +68 -0
- package/lib/index.js.map +1 -0
- package/lib/packlets/base/brand.d.ts.map +1 -0
- package/lib/packlets/base/brand.js +24 -0
- package/lib/packlets/base/brand.js.map +1 -0
- package/lib/packlets/base/index.d.ts +7 -0
- package/lib/packlets/base/index.d.ts.map +1 -0
- package/lib/packlets/base/index.js +58 -0
- package/lib/packlets/base/index.js.map +1 -0
- package/{logger.d.ts → lib/packlets/base/logger.d.ts} +16 -1
- package/lib/packlets/base/logger.d.ts.map +1 -0
- package/lib/packlets/base/logger.js +128 -0
- package/lib/packlets/base/logger.js.map +1 -0
- package/{normalize.d.ts → lib/packlets/base/normalize.d.ts} +6 -0
- package/lib/packlets/base/normalize.d.ts.map +1 -0
- package/lib/packlets/base/normalize.js +139 -0
- package/lib/packlets/base/normalize.js.map +1 -0
- package/{result.d.ts → lib/packlets/base/result.d.ts} +16 -15
- package/lib/packlets/base/result.d.ts.map +1 -0
- package/lib/packlets/base/result.js +571 -0
- package/lib/packlets/base/result.js.map +1 -0
- package/lib/packlets/base/utils.d.ts.map +1 -0
- package/lib/packlets/base/utils.js +200 -0
- package/lib/packlets/base/utils.js.map +1 -0
- package/{converter.d.ts → lib/packlets/conversion/converter.d.ts} +11 -12
- package/lib/packlets/conversion/converter.d.ts.map +1 -0
- package/lib/packlets/conversion/converter.js +218 -0
- package/lib/packlets/conversion/converter.js.map +1 -0
- package/{converters.d.ts → lib/packlets/conversion/converters.d.ts} +52 -216
- package/lib/packlets/conversion/converters.d.ts.map +1 -0
- package/lib/packlets/conversion/converters.js +739 -0
- package/lib/packlets/conversion/converters.js.map +1 -0
- package/lib/packlets/conversion/index.d.ts +6 -0
- package/lib/packlets/conversion/index.d.ts.map +1 -0
- package/lib/packlets/conversion/index.js +56 -0
- package/lib/packlets/conversion/index.js.map +1 -0
- package/lib/packlets/conversion/objectConverter.d.ts +94 -0
- package/lib/packlets/conversion/objectConverter.d.ts.map +1 -0
- package/lib/packlets/conversion/objectConverter.js +110 -0
- package/lib/packlets/conversion/objectConverter.js.map +1 -0
- package/lib/packlets/conversion/stringConverter.d.ts +78 -0
- package/lib/packlets/conversion/stringConverter.d.ts.map +1 -0
- package/lib/packlets/conversion/stringConverter.js +97 -0
- package/lib/packlets/conversion/stringConverter.js.map +1 -0
- package/{csvHelpers.d.ts → lib/packlets/csv/csvHelpers.d.ts} +1 -1
- package/lib/packlets/csv/csvHelpers.d.ts.map +1 -0
- package/lib/packlets/csv/csvHelpers.js +69 -0
- package/lib/packlets/csv/csvHelpers.js.map +1 -0
- package/lib/packlets/csv/index.d.ts +2 -0
- package/lib/packlets/csv/index.d.ts.map +1 -0
- package/lib/packlets/csv/index.js +39 -0
- package/lib/packlets/csv/index.js.map +1 -0
- package/{extendedArray.d.ts → lib/packlets/experimental/extendedArray.d.ts} +7 -7
- package/lib/packlets/experimental/extendedArray.d.ts.map +1 -0
- package/lib/packlets/experimental/extendedArray.js +106 -0
- package/lib/packlets/experimental/extendedArray.js.map +1 -0
- package/{formatter.d.ts → lib/packlets/experimental/formatter.d.ts} +6 -6
- package/lib/packlets/experimental/formatter.d.ts.map +1 -0
- package/lib/packlets/experimental/formatter.js +75 -0
- package/lib/packlets/experimental/formatter.js.map +1 -0
- package/lib/packlets/experimental/index.d.ts +4 -0
- package/lib/packlets/experimental/index.d.ts.map +1 -0
- package/lib/packlets/experimental/index.js +41 -0
- package/lib/packlets/experimental/index.js.map +1 -0
- package/{rangeOf.d.ts → lib/packlets/experimental/rangeOf.d.ts} +21 -24
- package/lib/packlets/experimental/rangeOf.d.ts.map +1 -0
- package/lib/packlets/experimental/rangeOf.js +185 -0
- package/lib/packlets/experimental/rangeOf.js.map +1 -0
- package/{hash.d.ts → lib/packlets/hash/hash.d.ts} +1 -1
- package/lib/packlets/hash/hash.d.ts.map +1 -0
- package/lib/packlets/hash/hash.js +168 -0
- package/lib/packlets/hash/hash.js.map +1 -0
- package/lib/packlets/hash/index.d.ts +2 -0
- package/lib/packlets/hash/index.d.ts.map +1 -0
- package/lib/packlets/hash/index.js +39 -0
- package/lib/packlets/hash/index.js.map +1 -0
- package/lib/packlets/record-jar/index.d.ts +2 -0
- package/lib/packlets/record-jar/index.d.ts.map +1 -0
- package/lib/packlets/record-jar/index.js +39 -0
- package/lib/packlets/record-jar/index.js.map +1 -0
- package/{recordJarHelpers.d.ts → lib/packlets/record-jar/recordJarHelpers.d.ts} +1 -1
- package/lib/packlets/record-jar/recordJarHelpers.d.ts.map +1 -0
- package/lib/packlets/record-jar/recordJarHelpers.js +263 -0
- package/lib/packlets/record-jar/recordJarHelpers.js.map +1 -0
- package/{validation → lib/packlets/validation}/array.d.ts +2 -2
- package/lib/packlets/validation/array.d.ts.map +1 -0
- package/lib/packlets/validation/array.js +67 -0
- package/lib/packlets/validation/array.js.map +1 -0
- package/{validation → lib/packlets/validation}/boolean.d.ts +1 -1
- package/lib/packlets/validation/boolean.d.ts.map +1 -0
- package/lib/packlets/validation/boolean.js +56 -0
- package/lib/packlets/validation/boolean.js.map +1 -0
- package/lib/packlets/validation/classes.d.ts.map +1 -0
- package/lib/packlets/validation/classes.js +38 -0
- package/lib/packlets/validation/classes.js.map +1 -0
- package/lib/packlets/validation/common.d.ts.map +1 -0
- package/lib/packlets/validation/common.js +24 -0
- package/lib/packlets/validation/common.js.map +1 -0
- package/{validation → lib/packlets/validation}/field.d.ts +1 -1
- package/lib/packlets/validation/field.d.ts.map +1 -0
- package/lib/packlets/validation/field.js +71 -0
- package/lib/packlets/validation/field.js.map +1 -0
- package/{validation → lib/packlets/validation}/genericValidator.d.ts +2 -3
- package/lib/packlets/validation/genericValidator.d.ts.map +1 -0
- package/lib/packlets/validation/genericValidator.js +137 -0
- package/lib/packlets/validation/genericValidator.js.map +1 -0
- package/lib/packlets/validation/index.d.ts.map +1 -0
- package/{validation → lib/packlets/validation}/index.js +1 -1
- package/lib/packlets/validation/index.js.map +1 -0
- package/{validation → lib/packlets/validation}/number.d.ts +1 -1
- package/lib/packlets/validation/number.d.ts.map +1 -0
- package/lib/packlets/validation/number.js +54 -0
- package/lib/packlets/validation/number.js.map +1 -0
- package/{validation → lib/packlets/validation}/object.d.ts +1 -1
- package/lib/packlets/validation/object.d.ts.map +1 -0
- package/lib/packlets/validation/object.js +139 -0
- package/lib/packlets/validation/object.js.map +1 -0
- package/{validation → lib/packlets/validation}/string.d.ts +1 -1
- package/lib/packlets/validation/string.d.ts.map +1 -0
- package/lib/packlets/validation/string.js +54 -0
- package/lib/packlets/validation/string.js.map +1 -0
- package/lib/packlets/validation/traits.d.ts.map +1 -0
- package/lib/packlets/validation/traits.js +58 -0
- package/lib/packlets/validation/traits.js.map +1 -0
- package/{validation → lib/packlets/validation}/typeGuard.d.ts +1 -1
- package/lib/packlets/validation/typeGuard.d.ts.map +1 -0
- package/lib/packlets/validation/typeGuard.js +62 -0
- package/lib/packlets/validation/typeGuard.js.map +1 -0
- package/{validation → lib/packlets/validation}/validator.d.ts +15 -16
- package/lib/packlets/validation/validator.d.ts.map +1 -0
- package/lib/packlets/validation/validator.js +24 -0
- package/lib/packlets/validation/validator.js.map +1 -0
- package/{validation → lib/packlets/validation}/validatorBase.d.ts +1 -1
- package/lib/packlets/validation/validatorBase.d.ts.map +1 -0
- package/lib/packlets/validation/validatorBase.js +41 -0
- package/lib/packlets/validation/validatorBase.js.map +1 -0
- package/{validation → lib/packlets/validation}/validators.d.ts +3 -6
- package/lib/packlets/validation/validators.d.ts.map +1 -0
- package/lib/packlets/validation/validators.js +121 -0
- package/lib/packlets/validation/validators.js.map +1 -0
- package/package.json +34 -33
- package/brand.d.ts.map +0 -1
- package/brand.js +0 -24
- package/converter.d.ts.map +0 -1
- package/converter.js +0 -222
- package/converters.d.ts.map +0 -1
- package/converters.js +0 -896
- package/csvHelpers.d.ts.map +0 -1
- package/csvHelpers.js +0 -69
- package/extendedArray.d.ts.map +0 -1
- package/extendedArray.js +0 -106
- package/formatter.d.ts.map +0 -1
- package/formatter.js +0 -75
- package/hash.d.ts.map +0 -1
- package/hash.js +0 -168
- package/index.d.ts +0 -15
- package/index.d.ts.map +0 -1
- package/index.js +0 -70
- package/logger.d.ts.map +0 -1
- package/logger.js +0 -115
- package/normalize.d.ts.map +0 -1
- package/normalize.js +0 -139
- package/rangeOf.d.ts.map +0 -1
- package/rangeOf.js +0 -185
- package/recordJarHelpers.d.ts.map +0 -1
- package/recordJarHelpers.js +0 -262
- package/result.d.ts.map +0 -1
- package/result.js +0 -569
- package/utils.d.ts.map +0 -1
- package/utils.js +0 -200
- package/validation/array.d.ts.map +0 -1
- package/validation/array.js +0 -67
- package/validation/boolean.d.ts.map +0 -1
- package/validation/boolean.js +0 -59
- package/validation/classes.d.ts.map +0 -1
- package/validation/classes.js +0 -38
- package/validation/common.d.ts.map +0 -1
- package/validation/common.js +0 -24
- package/validation/field.d.ts.map +0 -1
- package/validation/field.js +0 -72
- package/validation/genericValidator.d.ts.map +0 -1
- package/validation/genericValidator.js +0 -138
- package/validation/index.d.ts.map +0 -1
- package/validation/number.d.ts.map +0 -1
- package/validation/number.js +0 -57
- package/validation/object.d.ts.map +0 -1
- package/validation/object.js +0 -143
- package/validation/string.d.ts.map +0 -1
- package/validation/string.js +0 -57
- package/validation/traits.d.ts.map +0 -1
- package/validation/traits.js +0 -58
- package/validation/typeGuard.d.ts.map +0 -1
- package/validation/typeGuard.js +0 -62
- package/validation/validator.d.ts.map +0 -1
- package/validation/validator.js +0 -24
- package/validation/validatorBase.d.ts.map +0 -1
- package/validation/validatorBase.js +0 -44
- package/validation/validators.d.ts.map +0 -1
- package/validation/validators.js +0 -119
- /package/{brand.d.ts → lib/packlets/base/brand.d.ts} +0 -0
- /package/{utils.d.ts → lib/packlets/base/utils.d.ts} +0 -0
- /package/{validation → lib/packlets/validation}/classes.d.ts +0 -0
- /package/{validation → lib/packlets/validation}/common.d.ts +0 -0
- /package/{validation → lib/packlets/validation}/index.d.ts +0 -0
- /package/{validation → lib/packlets/validation}/traits.d.ts +0 -0
package/recordJarHelpers.js
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022 Erik Fortune
|
|
4
|
-
*
|
|
5
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
* in the Software without restriction, including without limitation the rights
|
|
8
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
* furnished to do so, subject to the following conditions:
|
|
11
|
-
*
|
|
12
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
* copies or substantial portions of the Software.
|
|
14
|
-
*
|
|
15
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
* SOFTWARE.
|
|
22
|
-
*/
|
|
23
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
24
|
-
if (k2 === undefined) k2 = k;
|
|
25
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
26
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
27
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
28
|
-
}
|
|
29
|
-
Object.defineProperty(o, k2, desc);
|
|
30
|
-
}) : (function(o, m, k, k2) {
|
|
31
|
-
if (k2 === undefined) k2 = k;
|
|
32
|
-
o[k2] = m[k];
|
|
33
|
-
}));
|
|
34
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
35
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
36
|
-
}) : function(o, v) {
|
|
37
|
-
o["default"] = v;
|
|
38
|
-
});
|
|
39
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
40
|
-
if (mod && mod.__esModule) return mod;
|
|
41
|
-
var result = {};
|
|
42
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
43
|
-
__setModuleDefault(result, mod);
|
|
44
|
-
return result;
|
|
45
|
-
};
|
|
46
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
-
exports.readRecordJarFileSync = exports.parseRecordJarLines = void 0;
|
|
48
|
-
const fs = __importStar(require("fs"));
|
|
49
|
-
const path = __importStar(require("path"));
|
|
50
|
-
const result_1 = require("./result");
|
|
51
|
-
const utils_1 = require("./utils");
|
|
52
|
-
class RecordParser {
|
|
53
|
-
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
54
|
-
constructor(options) {
|
|
55
|
-
this.records = [];
|
|
56
|
-
this._fields = {};
|
|
57
|
-
this._name = undefined;
|
|
58
|
-
this._body = undefined;
|
|
59
|
-
this.options = options !== null && options !== void 0 ? options : {};
|
|
60
|
-
}
|
|
61
|
-
static parse(lines, options) {
|
|
62
|
-
return new RecordParser(options)._parse(lines);
|
|
63
|
-
}
|
|
64
|
-
static _parseRecordBody(body) {
|
|
65
|
-
const isContinuation = body.endsWith('\\');
|
|
66
|
-
if (isContinuation) {
|
|
67
|
-
body = body.slice(0, body.length - 1);
|
|
68
|
-
}
|
|
69
|
-
if (this._hasEscapes(body)) {
|
|
70
|
-
const result = this._replaceEscapes(body);
|
|
71
|
-
if (result.isFailure()) {
|
|
72
|
-
return (0, result_1.fail)(result.message);
|
|
73
|
-
}
|
|
74
|
-
body = result.value;
|
|
75
|
-
}
|
|
76
|
-
return (0, result_1.succeed)({ body, isContinuation });
|
|
77
|
-
}
|
|
78
|
-
static _hasEscapes(from) {
|
|
79
|
-
return from.includes('\\') || from.includes('&');
|
|
80
|
-
}
|
|
81
|
-
static _replaceEscapes(body) {
|
|
82
|
-
const invalid = [];
|
|
83
|
-
const escaped = body.replace(/(\\.)|(&#x[a-fA-F0-9]{2,6};)/g, (match) => {
|
|
84
|
-
switch (match) {
|
|
85
|
-
case '\\\\': return '\\';
|
|
86
|
-
case '\\&': return '&';
|
|
87
|
-
case '\\r': return '\r';
|
|
88
|
-
case '\\n': return '\n';
|
|
89
|
-
case '\\t': return '\t';
|
|
90
|
-
}
|
|
91
|
-
if (match.startsWith('&')) {
|
|
92
|
-
const hexCode = `0x${match.slice(3, match.length - 1)}`;
|
|
93
|
-
const charCode = Number.parseInt(hexCode, 16);
|
|
94
|
-
return String.fromCharCode(charCode);
|
|
95
|
-
}
|
|
96
|
-
invalid.push(match);
|
|
97
|
-
return '\\';
|
|
98
|
-
});
|
|
99
|
-
if (invalid.length > 0) {
|
|
100
|
-
return (0, result_1.fail)(`unrecognized escape "${invalid.join(', ')}" in record-jar body`);
|
|
101
|
-
}
|
|
102
|
-
return (0, result_1.succeed)(escaped);
|
|
103
|
-
}
|
|
104
|
-
static _applyOptions(record, options) {
|
|
105
|
-
if (options.arrayFields) {
|
|
106
|
-
record = { ...record }; // don't edit incoming values
|
|
107
|
-
const arrayFields = Array.isArray(options.arrayFields)
|
|
108
|
-
? options.arrayFields
|
|
109
|
-
: options.arrayFields(record);
|
|
110
|
-
for (const field of arrayFields) {
|
|
111
|
-
if ((0, utils_1.isKeyOf)(field, record) && typeof record[field] === 'string') {
|
|
112
|
-
const current = record[field];
|
|
113
|
-
record[field] = [current];
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return record;
|
|
118
|
-
}
|
|
119
|
-
_parse(lines) {
|
|
120
|
-
var _a, _b;
|
|
121
|
-
for (let n = 0; n < lines.length; n++) {
|
|
122
|
-
const line = lines[n];
|
|
123
|
-
if (line.startsWith('%%') && !((_a = this._body) === null || _a === void 0 ? void 0 : _a.isContinuation)) {
|
|
124
|
-
const result = this._writePendingRecord();
|
|
125
|
-
if (result.isFailure()) {
|
|
126
|
-
return (0, result_1.fail)(`${n}: ${result.message}`);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
else if (/^\s*$/.test(line)) {
|
|
130
|
-
// ignore blank lines but cancel continuation
|
|
131
|
-
if (this._body) {
|
|
132
|
-
this._body.isContinuation = false;
|
|
133
|
-
}
|
|
134
|
-
continue;
|
|
135
|
-
}
|
|
136
|
-
else if (((_b = this._body) === null || _b === void 0 ? void 0 : _b.isContinuation) || /^\s+/.test(line)) {
|
|
137
|
-
// explicit continuation on previous line or implicit starts with whitespace
|
|
138
|
-
if (this._body === undefined) {
|
|
139
|
-
return (0, result_1.fail)(`${n}: continuation ("${line}") without prior value.`);
|
|
140
|
-
}
|
|
141
|
-
const result = this._parseContinuation(line);
|
|
142
|
-
if (result.isFailure()) {
|
|
143
|
-
return (0, result_1.fail)(`${n}: ${result.message}`);
|
|
144
|
-
}
|
|
145
|
-
this._body = result.value;
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
const result = this._parseField(line);
|
|
149
|
-
if (result.isFailure()) {
|
|
150
|
-
return (0, result_1.fail)(`${n}: ${result.message}`);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
const result = this._writePendingRecord();
|
|
155
|
-
if (result.isFailure()) {
|
|
156
|
-
return (0, result_1.fail)(`${lines.length}: ${result.message}`);
|
|
157
|
-
}
|
|
158
|
-
return (0, result_1.succeed)(this.records);
|
|
159
|
-
}
|
|
160
|
-
_parseField(line) {
|
|
161
|
-
const separatorIndex = line.indexOf(':');
|
|
162
|
-
if (separatorIndex < 1) {
|
|
163
|
-
return (0, result_1.fail)(`malformed line ("${line}") in record-jar.`);
|
|
164
|
-
}
|
|
165
|
-
const parts = [
|
|
166
|
-
line.slice(0, separatorIndex),
|
|
167
|
-
line.slice(separatorIndex + 1),
|
|
168
|
-
];
|
|
169
|
-
return this._writePendingField().onSuccess(() => {
|
|
170
|
-
this._name = parts[0].trimEnd();
|
|
171
|
-
return RecordParser._parseRecordBody(parts[1].trim()).onSuccess((body) => {
|
|
172
|
-
this._body = body;
|
|
173
|
-
return (0, result_1.succeed)(true);
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
_parseContinuation(line) {
|
|
178
|
-
var _a, _b;
|
|
179
|
-
let trimmed = line.trim();
|
|
180
|
-
if (!this._body.isContinuation) {
|
|
181
|
-
// istanbul ignore next
|
|
182
|
-
const fixedSize = (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.fixedContinuationSize) !== null && _b !== void 0 ? _b : 0;
|
|
183
|
-
if (fixedSize > 0) {
|
|
184
|
-
if (trimmed.length < line.length - fixedSize) {
|
|
185
|
-
// oops, took too much
|
|
186
|
-
trimmed = line.slice(fixedSize);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
return RecordParser._parseRecordBody(trimmed).onSuccess((newBody) => {
|
|
191
|
-
return (0, result_1.succeed)({
|
|
192
|
-
body: `${this._body.body}${newBody.body}`,
|
|
193
|
-
isContinuation: newBody.isContinuation,
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
_havePendingRecord() {
|
|
198
|
-
return Object.keys(this._fields).length > 0;
|
|
199
|
-
}
|
|
200
|
-
_writePendingRecord() {
|
|
201
|
-
return this._writePendingField().onSuccess(() => {
|
|
202
|
-
let record = this._havePendingRecord() ? this._fields : undefined;
|
|
203
|
-
if (record !== undefined) {
|
|
204
|
-
record = RecordParser._applyOptions(record, this.options);
|
|
205
|
-
this.records.push(record);
|
|
206
|
-
this._fields = {};
|
|
207
|
-
}
|
|
208
|
-
return (0, result_1.succeed)(undefined);
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
_writePendingField() {
|
|
212
|
-
if (this._name !== undefined) {
|
|
213
|
-
if (this._body.body.length < 1) {
|
|
214
|
-
return (0, result_1.fail)('empty body value not allowed');
|
|
215
|
-
}
|
|
216
|
-
if (!(0, utils_1.isKeyOf)(this._name, this._fields)) {
|
|
217
|
-
this._fields[this._name] = this._body.body;
|
|
218
|
-
}
|
|
219
|
-
else if (typeof this._fields[this._name] === 'string') {
|
|
220
|
-
const current = this._fields[this._name];
|
|
221
|
-
this._fields[this._name] = [current, this._body.body];
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
const current = this._fields[this._name];
|
|
225
|
-
current.push(this._body.body);
|
|
226
|
-
}
|
|
227
|
-
this._name = undefined;
|
|
228
|
-
this._body = undefined;
|
|
229
|
-
}
|
|
230
|
-
return (0, result_1.succeed)(true);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Reads a record-jar from an array of strings, each of which represents one
|
|
235
|
-
* line in the source file.
|
|
236
|
-
* @param lines - the array of strings to be parsed
|
|
237
|
-
* @param options - Optional parser configuration
|
|
238
|
-
* @returns a corresponding array of `Record<string, string>`
|
|
239
|
-
* @public
|
|
240
|
-
*/
|
|
241
|
-
function parseRecordJarLines(lines, options) {
|
|
242
|
-
return RecordParser.parse(lines, options);
|
|
243
|
-
}
|
|
244
|
-
exports.parseRecordJarLines = parseRecordJarLines;
|
|
245
|
-
/**
|
|
246
|
-
* Reads a record-jar file from a supplied path.
|
|
247
|
-
* @param srcPath - Source path from which the file is read.
|
|
248
|
-
* @param options - Optional parser configuration
|
|
249
|
-
* @returns The contents of the file as an array of `Record<string, string>`
|
|
250
|
-
* @see https://datatracker.ietf.org/doc/html/draft-phillips-record-jar-01
|
|
251
|
-
* @public
|
|
252
|
-
*/
|
|
253
|
-
function readRecordJarFileSync(srcPath, options) {
|
|
254
|
-
return (0, result_1.captureResult)(() => {
|
|
255
|
-
const fullPath = path.resolve(srcPath);
|
|
256
|
-
return fs.readFileSync(fullPath, 'utf8').toString().split(/\r?\n/);
|
|
257
|
-
}).onSuccess((lines) => {
|
|
258
|
-
return parseRecordJarLines(lines, options);
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
exports.readRecordJarFileSync = readRecordJarFileSync;
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkSmFySGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWNvcmRKYXJIZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUU3QixxQ0FBZ0U7QUFDaEUsbUNBQWtDO0FBMkJsQyxNQUFNLFlBQVk7SUFRZCxnRUFBZ0U7SUFDaEUsWUFBb0IsT0FBZ0M7UUFScEMsWUFBTyxHQUFnQixFQUFFLENBQUM7UUFHaEMsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUN4QixVQUFLLEdBQXVCLFNBQVMsQ0FBQztRQUN0QyxVQUFLLEdBQTJCLFNBQVMsQ0FBQztRQUloRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFlLEVBQUUsT0FBZ0M7UUFDakUsT0FBTyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVTLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxjQUFjLEVBQUU7WUFDaEIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDcEIsT0FBTyxJQUFBLGFBQUksRUFBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDL0I7WUFDRCxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUN2QjtRQUNELE9BQU8sSUFBQSxnQkFBTyxFQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVTLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBWTtRQUNyQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFZO1FBQ3pDLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLCtCQUErQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDcEUsUUFBUSxLQUFLLEVBQUU7Z0JBQ1gsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztnQkFDekIsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQztnQkFDdkIsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztnQkFDeEIsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztnQkFDeEIsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQzthQUMzQjtZQUNELElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxPQUFPLEdBQUcsS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDeEM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQixPQUFPLElBQUEsYUFBSSxFQUFDLHdCQUF3QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsT0FBTyxJQUFBLGdCQUFPLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBaUIsRUFBRSxPQUErQjtRQUM3RSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDckIsTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLDZCQUE2QjtZQUNyRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDckIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbEMsS0FBSyxNQUFNLEtBQUssSUFBSSxXQUFXLEVBQUU7Z0JBQzdCLElBQUksSUFBQSxlQUFPLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDN0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBVyxDQUFDO29CQUN4QyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDN0I7YUFDSjtTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVTLE1BQU0sQ0FBQyxLQUFlOztRQUM1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLGNBQWMsQ0FBQSxFQUFFO2dCQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ3BCLE9BQU8sSUFBQSxhQUFJLEVBQUMsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7aUJBQzFDO2FBQ0o7aUJBQ0ksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN6Qiw2Q0FBNkM7Z0JBQzdDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDWixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7aUJBQ3JDO2dCQUNELFNBQVM7YUFDWjtpQkFDSSxJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsS0FBSywwQ0FBRSxjQUFjLEtBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEQsNEVBQTRFO2dCQUM1RSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO29CQUMxQixPQUFPLElBQUEsYUFBSSxFQUFDLEdBQUcsQ0FBQyxvQkFBb0IsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO2lCQUN0RTtnQkFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUNwQixPQUFPLElBQUEsYUFBSSxFQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2lCQUMxQztnQkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDN0I7aUJBQ0k7Z0JBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ3BCLE9BQU8sSUFBQSxhQUFJLEVBQUMsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7aUJBQzFDO2FBQ0o7U0FDSjtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sSUFBQSxhQUFJLEVBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsT0FBTyxJQUFBLGdCQUFPLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFUyxXQUFXLENBQUMsSUFBWTtRQUM5QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksY0FBYyxHQUFHLENBQUMsRUFBRTtZQUNwQixPQUFPLElBQUEsYUFBSSxFQUFDLG9CQUFvQixJQUFJLG1CQUFtQixDQUFDLENBQUM7U0FDNUQ7UUFDRCxNQUFNLEtBQUssR0FBRztZQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7U0FDakMsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQyxPQUFPLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDckUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLE9BQU8sSUFBQSxnQkFBTyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsa0JBQWtCLENBQUMsSUFBWTs7UUFDckMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBTSxDQUFDLGNBQWMsRUFBRTtZQUM3Qix1QkFBdUI7WUFDdkIsTUFBTSxTQUFTLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLHFCQUFxQixtQ0FBSSxDQUFDLENBQUM7WUFDM0QsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFO2dCQUNmLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRTtvQkFDMUMsc0JBQXNCO29CQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDbkM7YUFDSjtTQUNKO1FBQ0QsT0FBTyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEUsT0FBTyxJQUFBLGdCQUFPLEVBQUM7Z0JBQ1gsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDMUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO2FBQ3pDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVTLG1CQUFtQjtRQUN6QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDNUMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNsRSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ3RCLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQzthQUNyQjtZQUNELE9BQU8sSUFBQSxnQkFBTyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLEtBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDN0IsT0FBTyxJQUFBLGFBQUksRUFBQyw4QkFBOEIsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsSUFBSSxDQUFDLElBQUEsZUFBTyxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBTSxDQUFDLElBQUksQ0FBQzthQUMvQztpQkFDSSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQVcsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxRDtpQkFDSTtnQkFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQWEsQ0FBQztnQkFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xDO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7U0FDMUI7UUFDRCxPQUFPLElBQUEsZ0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsS0FBZSxFQUFFLE9BQWdDO0lBQ2pGLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUZELGtEQUVDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLE9BQWUsRUFBRSxPQUFnQztJQUNuRixPQUFPLElBQUEsc0JBQWEsRUFBQyxHQUFHLEVBQUU7UUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNuQixPQUFPLG1CQUFtQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFQRCxzREFPQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBSZXN1bHQsIGNhcHR1cmVSZXN1bHQsIGZhaWwsIHN1Y2NlZWQgfSBmcm9tICcuL3Jlc3VsdCc7XG5pbXBvcnQgeyBpc0tleU9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmludGVyZmFjZSBSZWNvcmRCb2R5IHtcbiAgICBib2R5OiBzdHJpbmc7XG4gICAgaXNDb250aW51YXRpb246IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSByZWNvcmQgaW4gYSBKQVIgZmlsZVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBKYXJSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT47XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBKYXJGaWVsZFBpY2tlcjxUIGV4dGVuZHMgSmFyUmVjb3JkID0gSmFyUmVjb3JkPiA9IChyZWNvcmQ6IFQpID0+IChrZXlvZiBUKVtdO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGEgSkFSIHJlY29yZCBwYXJzZXIuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSmFyUmVjb3JkUGFyc2VyT3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgYXJyYXlGaWVsZHM/OiBzdHJpbmdbXSB8IEphckZpZWxkUGlja2VyO1xuICAgIHJlYWRvbmx5IGZpeGVkQ29udGludWF0aW9uU2l6ZT86IG51bWJlcjtcbn1cblxuY2xhc3MgUmVjb3JkUGFyc2VyIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVjb3JkczogSmFyUmVjb3JkW10gPSBbXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogSmFyUmVjb3JkUGFyc2VyT3B0aW9ucztcblxuICAgIHByb3RlY3RlZCBfZmllbGRzOiBKYXJSZWNvcmQgPSB7fTtcbiAgICBwcm90ZWN0ZWQgX25hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBwcm90ZWN0ZWQgX2JvZHk6IFJlY29yZEJvZHkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihvcHRpb25zPzogSmFyUmVjb3JkUGFyc2VyT3B0aW9ucykge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zID8/IHt9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcGFyc2UobGluZXM6IHN0cmluZ1tdLCBvcHRpb25zPzogSmFyUmVjb3JkUGFyc2VyT3B0aW9ucyk6IFJlc3VsdDxKYXJSZWNvcmRbXT4ge1xuICAgICAgICByZXR1cm4gbmV3IFJlY29yZFBhcnNlcihvcHRpb25zKS5fcGFyc2UobGluZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgX3BhcnNlUmVjb3JkQm9keShib2R5OiBzdHJpbmcpOiBSZXN1bHQ8UmVjb3JkQm9keT4ge1xuICAgICAgICBjb25zdCBpc0NvbnRpbnVhdGlvbiA9IGJvZHkuZW5kc1dpdGgoJ1xcXFwnKTtcbiAgICAgICAgaWYgKGlzQ29udGludWF0aW9uKSB7XG4gICAgICAgICAgICBib2R5ID0gYm9keS5zbGljZSgwLCBib2R5Lmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9oYXNFc2NhcGVzKGJvZHkpKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9yZXBsYWNlRXNjYXBlcyhib2R5KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbChyZXN1bHQubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBib2R5ID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKHsgYm9keSwgaXNDb250aW51YXRpb24gfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfaGFzRXNjYXBlcyhmcm9tOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZyb20uaW5jbHVkZXMoJ1xcXFwnKSB8fCBmcm9tLmluY2x1ZGVzKCcmJyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfcmVwbGFjZUVzY2FwZXMoYm9keTogc3RyaW5nKTogUmVzdWx0PHN0cmluZz4ge1xuICAgICAgICBjb25zdCBpbnZhbGlkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCBlc2NhcGVkID0gYm9keS5yZXBsYWNlKC8oXFxcXC4pfCgmI3hbYS1mQS1GMC05XXsyLDZ9OykvZywgKG1hdGNoKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFxcXFxcXFwnOiByZXR1cm4gJ1xcXFwnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1xcXFwmJzogcmV0dXJuICcmJztcbiAgICAgICAgICAgICAgICBjYXNlICdcXFxccic6IHJldHVybiAnXFxyJztcbiAgICAgICAgICAgICAgICBjYXNlICdcXFxcbic6IHJldHVybiAnXFxuJztcbiAgICAgICAgICAgICAgICBjYXNlICdcXFxcdCc6IHJldHVybiAnXFx0JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaC5zdGFydHNXaXRoKCcmJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoZXhDb2RlID0gYDB4JHttYXRjaC5zbGljZSgzLCBtYXRjaC5sZW5ndGggLSAxKX1gO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJDb2RlID0gTnVtYmVyLnBhcnNlSW50KGhleENvZGUsIDE2KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnZhbGlkLnB1c2gobWF0Y2gpO1xuICAgICAgICAgICAgcmV0dXJuICdcXFxcJztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpbnZhbGlkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsKGB1bnJlY29nbml6ZWQgZXNjYXBlIFwiJHtpbnZhbGlkLmpvaW4oJywgJyl9XCIgaW4gcmVjb3JkLWphciBib2R5YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoZXNjYXBlZCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfYXBwbHlPcHRpb25zKHJlY29yZDogSmFyUmVjb3JkLCBvcHRpb25zOiBKYXJSZWNvcmRQYXJzZXJPcHRpb25zKTogSmFyUmVjb3JkIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuYXJyYXlGaWVsZHMpIHtcbiAgICAgICAgICAgIHJlY29yZCA9IHsgLi4ucmVjb3JkIH07IC8vIGRvbid0IGVkaXQgaW5jb21pbmcgdmFsdWVzXG4gICAgICAgICAgICBjb25zdCBhcnJheUZpZWxkcyA9IEFycmF5LmlzQXJyYXkob3B0aW9ucy5hcnJheUZpZWxkcylcbiAgICAgICAgICAgICAgICA/IG9wdGlvbnMuYXJyYXlGaWVsZHNcbiAgICAgICAgICAgICAgICA6IG9wdGlvbnMuYXJyYXlGaWVsZHMocmVjb3JkKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBhcnJheUZpZWxkcykge1xuICAgICAgICAgICAgICAgIGlmIChpc0tleU9mKGZpZWxkLCByZWNvcmQpICYmIHR5cGVvZiByZWNvcmRbZmllbGRdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkW2ZpZWxkXSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIHJlY29yZFtmaWVsZF0gPSBbY3VycmVudF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wYXJzZShsaW5lczogc3RyaW5nW10pOiBSZXN1bHQ8SmFyUmVjb3JkW10+IHtcbiAgICAgICAgZm9yIChsZXQgbiA9IDA7IG4gPCBsaW5lcy5sZW5ndGg7IG4rKykge1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzW25dO1xuICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgnJSUnKSAmJiAhdGhpcy5fYm9keT8uaXNDb250aW51YXRpb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl93cml0ZVBlbmRpbmdSZWNvcmQoKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmlzRmFpbHVyZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGAke259OiAke3Jlc3VsdC5tZXNzYWdlfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKC9eXFxzKiQvLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgYmxhbmsgbGluZXMgYnV0IGNhbmNlbCBjb250aW51YXRpb25cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fYm9keSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ib2R5LmlzQ29udGludWF0aW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fYm9keT8uaXNDb250aW51YXRpb24gfHwgL15cXHMrLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICAgICAgLy8gZXhwbGljaXQgY29udGludWF0aW9uIG9uIHByZXZpb3VzIGxpbmUgb3IgaW1wbGljaXQgc3RhcnRzIHdpdGggd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9ib2R5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7bn06IGNvbnRpbnVhdGlvbiAoXCIke2xpbmV9XCIpIHdpdGhvdXQgcHJpb3IgdmFsdWUuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3BhcnNlQ29udGludWF0aW9uKGxpbmUpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7bn06ICR7cmVzdWx0Lm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2JvZHkgPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9wYXJzZUZpZWxkKGxpbmUpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYCR7bn06ICR7cmVzdWx0Lm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fd3JpdGVQZW5kaW5nUmVjb3JkKCk7XG4gICAgICAgIGlmIChyZXN1bHQuaXNGYWlsdXJlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWlsKGAke2xpbmVzLmxlbmd0aH06ICR7cmVzdWx0Lm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcy5yZWNvcmRzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3BhcnNlRmllbGQobGluZTogc3RyaW5nKTogUmVzdWx0PGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICAgICAgaWYgKHNlcGFyYXRvckluZGV4IDwgMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhaWwoYG1hbGZvcm1lZCBsaW5lIChcIiR7bGluZX1cIikgaW4gcmVjb3JkLWphci5gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJ0cyA9IFtcbiAgICAgICAgICAgIGxpbmUuc2xpY2UoMCwgc2VwYXJhdG9ySW5kZXgpLFxuICAgICAgICAgICAgbGluZS5zbGljZShzZXBhcmF0b3JJbmRleCArIDEpLFxuICAgICAgICBdO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl93cml0ZVBlbmRpbmdGaWVsZCgpLm9uU3VjY2VzcygoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lID0gcGFydHNbMF0udHJpbUVuZCgpO1xuICAgICAgICAgICAgcmV0dXJuIFJlY29yZFBhcnNlci5fcGFyc2VSZWNvcmRCb2R5KHBhcnRzWzFdLnRyaW0oKSkub25TdWNjZXNzKChib2R5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYm9keSA9IGJvZHk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9wYXJzZUNvbnRpbnVhdGlvbihsaW5lOiBzdHJpbmcpOiBSZXN1bHQ8UmVjb3JkQm9keT4ge1xuICAgICAgICBsZXQgdHJpbW1lZCA9IGxpbmUudHJpbSgpO1xuICAgICAgICBpZiAoIXRoaXMuX2JvZHkhLmlzQ29udGludWF0aW9uKSB7XG4gICAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgICAgY29uc3QgZml4ZWRTaXplID0gdGhpcy5vcHRpb25zPy5maXhlZENvbnRpbnVhdGlvblNpemUgPz8gMDtcbiAgICAgICAgICAgIGlmIChmaXhlZFNpemUgPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRyaW1tZWQubGVuZ3RoIDwgbGluZS5sZW5ndGggLSBmaXhlZFNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb29wcywgdG9vayB0b28gbXVjaFxuICAgICAgICAgICAgICAgICAgICB0cmltbWVkID0gbGluZS5zbGljZShmaXhlZFNpemUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVjb3JkUGFyc2VyLl9wYXJzZVJlY29yZEJvZHkodHJpbW1lZCkub25TdWNjZXNzKChuZXdCb2R5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh7XG4gICAgICAgICAgICAgICAgYm9keTogYCR7dGhpcy5fYm9keSEuYm9keX0ke25ld0JvZHkuYm9keX1gLFxuICAgICAgICAgICAgICAgIGlzQ29udGludWF0aW9uOiBuZXdCb2R5LmlzQ29udGludWF0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaGF2ZVBlbmRpbmdSZWNvcmQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9maWVsZHMpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF93cml0ZVBlbmRpbmdSZWNvcmQoKTogUmVzdWx0PEphclJlY29yZCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fd3JpdGVQZW5kaW5nRmllbGQoKS5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHJlY29yZCA9IHRoaXMuX2hhdmVQZW5kaW5nUmVjb3JkKCkgPyB0aGlzLl9maWVsZHMgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAocmVjb3JkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZWNvcmQgPSBSZWNvcmRQYXJzZXIuX2FwcGx5T3B0aW9ucyhyZWNvcmQsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNvcmRzLnB1c2gocmVjb3JkKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9maWVsZHMgPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfd3JpdGVQZW5kaW5nRmllbGQoKTogUmVzdWx0PGJvb2xlYW4+IHtcbiAgICAgICAgaWYgKHRoaXMuX25hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2JvZHkhLmJvZHkubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCdlbXB0eSBib2R5IHZhbHVlIG5vdCBhbGxvd2VkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzS2V5T2YodGhpcy5fbmFtZSwgdGhpcy5fZmllbGRzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpZWxkc1t0aGlzLl9uYW1lXSA9IHRoaXMuX2JvZHkhLmJvZHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy5fZmllbGRzW3RoaXMuX25hbWVdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9maWVsZHNbdGhpcy5fbmFtZV0gYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpZWxkc1t0aGlzLl9uYW1lXSA9IFtjdXJyZW50LCB0aGlzLl9ib2R5IS5ib2R5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9maWVsZHNbdGhpcy5fbmFtZV0gYXMgc3RyaW5nW107XG4gICAgICAgICAgICAgICAgY3VycmVudC5wdXNoKHRoaXMuX2JvZHkhLmJvZHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fbmFtZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuX2JvZHkgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQodHJ1ZSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFJlYWRzIGEgcmVjb3JkLWphciBmcm9tIGFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggb2Ygd2hpY2ggcmVwcmVzZW50cyBvbmVcbiAqIGxpbmUgaW4gdGhlIHNvdXJjZSBmaWxlLlxuICogQHBhcmFtIGxpbmVzIC0gdGhlIGFycmF5IG9mIHN0cmluZ3MgdG8gYmUgcGFyc2VkXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIHBhcnNlciBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBhIGNvcnJlc3BvbmRpbmcgYXJyYXkgb2YgYFJlY29yZDxzdHJpbmcsIHN0cmluZz5gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJlY29yZEphckxpbmVzKGxpbmVzOiBzdHJpbmdbXSwgb3B0aW9ucz86IEphclJlY29yZFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8SmFyUmVjb3JkW10+IHtcbiAgICByZXR1cm4gUmVjb3JkUGFyc2VyLnBhcnNlKGxpbmVzLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBSZWFkcyBhIHJlY29yZC1qYXIgZmlsZSBmcm9tIGEgc3VwcGxpZWQgcGF0aC5cbiAqIEBwYXJhbSBzcmNQYXRoIC0gU291cmNlIHBhdGggZnJvbSB3aGljaCB0aGUgZmlsZSBpcyByZWFkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBwYXJzZXIgY29uZmlndXJhdGlvblxuICogQHJldHVybnMgVGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFzIGFuIGFycmF5IG9mIGBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+YFxuICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL2RyYWZ0LXBoaWxsaXBzLXJlY29yZC1qYXItMDFcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZWNvcmRKYXJGaWxlU3luYyhzcmNQYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBKYXJSZWNvcmRQYXJzZXJPcHRpb25zKTogUmVzdWx0PEphclJlY29yZFtdPiB7XG4gICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShzcmNQYXRoKTtcbiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhmdWxsUGF0aCwgJ3V0ZjgnKS50b1N0cmluZygpLnNwbGl0KC9cXHI/XFxuLyk7XG4gICAgfSkub25TdWNjZXNzKChsaW5lcykgPT4ge1xuICAgICAgICByZXR1cm4gcGFyc2VSZWNvcmRKYXJMaW5lcyhsaW5lcywgb3B0aW9ucyk7XG4gICAgfSk7XG59XG4iXX0=
|
package/result.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"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"}
|