necessary 17.1.0 → 17.1.2
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/.aiignore +11 -0
- package/.swcrc +3 -0
- package/lib/browser.js +17 -17
- package/lib/characters.js +68 -68
- package/lib/constants.js +13 -13
- package/lib/contentTypes.js +20 -20
- package/lib/defaults.js +11 -11
- package/lib/encodings.js +8 -8
- package/lib/headers.js +30 -30
- package/lib/keyCodes.js +22 -22
- package/lib/levels.js +14 -14
- package/lib/main.js +23 -23
- package/lib/methods.js +12 -12
- package/lib/statusCodes.js +40 -40
- package/lib/statusMessages.js +40 -40
- package/lib/utilities/ajax.js +30 -34
- package/lib/utilities/array.js +175 -200
- package/lib/utilities/asynchronous.js +34 -34
- package/lib/utilities/configuration.js +60 -74
- package/lib/utilities/fileSystem.js +47 -49
- package/lib/utilities/http.js +26 -26
- package/lib/utilities/logging.js +57 -65
- package/lib/utilities/package.js +19 -19
- package/lib/utilities/path.js +44 -75
- package/lib/utilities/request.js +22 -22
- package/lib/utilities/shell.js +24 -24
- package/lib/utilities/string.js +24 -25
- package/lib/utilities/template.js +19 -22
- package/lib/utilities/version.js +6 -6
- package/package.json +1 -1
|
@@ -35,59 +35,59 @@ _export(exports, {
|
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
function whilst(operation, done, context) {
|
|
38
|
-
|
|
38
|
+
let count = -1;
|
|
39
39
|
function next() {
|
|
40
40
|
count++;
|
|
41
|
-
|
|
41
|
+
const index = count; ///
|
|
42
42
|
operation(next, done, context, index);
|
|
43
43
|
}
|
|
44
44
|
next();
|
|
45
45
|
}
|
|
46
46
|
function forEach(array, operation, done, context) {
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
const length = array.length; ///
|
|
48
|
+
let count = -1;
|
|
49
49
|
function next() {
|
|
50
50
|
count++;
|
|
51
|
-
|
|
51
|
+
const terminate = count === length;
|
|
52
52
|
if (terminate) {
|
|
53
53
|
done();
|
|
54
54
|
} else {
|
|
55
|
-
|
|
55
|
+
const index = count, element = array[index];
|
|
56
56
|
operation(element, next, done, context, index);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
next();
|
|
60
60
|
}
|
|
61
61
|
function sequence(operations, done, context) {
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
const length = operations.length; ///
|
|
63
|
+
let count = -1;
|
|
64
64
|
function next() {
|
|
65
65
|
count++;
|
|
66
|
-
|
|
66
|
+
const terminate = count === length;
|
|
67
67
|
if (terminate) {
|
|
68
68
|
done();
|
|
69
69
|
} else {
|
|
70
|
-
|
|
70
|
+
const index = count, operation = operations[index];
|
|
71
71
|
operation(next, done, context, index);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
next();
|
|
75
75
|
}
|
|
76
76
|
function eventually(operations, done, context) {
|
|
77
|
-
|
|
77
|
+
const length = operations.length; ///
|
|
78
78
|
if (length === 0) {
|
|
79
79
|
done();
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
let count = 0;
|
|
83
83
|
function next() {
|
|
84
84
|
count++;
|
|
85
|
-
|
|
85
|
+
const terminate = count === length;
|
|
86
86
|
if (terminate) {
|
|
87
87
|
done();
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
operations.forEach(
|
|
90
|
+
operations.forEach((operation, index)=>{
|
|
91
91
|
operation(next, done, context, index);
|
|
92
92
|
});
|
|
93
93
|
}
|
|
@@ -96,56 +96,56 @@ function repeatedly(operation, length, done, context) {
|
|
|
96
96
|
done();
|
|
97
97
|
return;
|
|
98
98
|
}
|
|
99
|
-
|
|
99
|
+
let count = 0;
|
|
100
100
|
function next() {
|
|
101
101
|
count++;
|
|
102
|
-
|
|
102
|
+
const terminate = count === length;
|
|
103
103
|
if (terminate) {
|
|
104
104
|
done();
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
for(
|
|
107
|
+
for(let index = 0; index < length; index++){
|
|
108
108
|
operation(next, done, context, index);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
function forwardsForEach(array, operation, done, context) {
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
const length = array.length; ///
|
|
113
|
+
let count = -1;
|
|
114
114
|
function next() {
|
|
115
115
|
count++;
|
|
116
|
-
|
|
116
|
+
const terminate = count === length;
|
|
117
117
|
if (terminate) {
|
|
118
118
|
done();
|
|
119
119
|
} else {
|
|
120
|
-
|
|
120
|
+
const index = count, element = array[index];
|
|
121
121
|
operation(element, next, done, context, index);
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
next();
|
|
125
125
|
}
|
|
126
126
|
function backwardsForEach(array, operation, done, context) {
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
const length = array.length; ///
|
|
128
|
+
let count = length;
|
|
129
129
|
function next() {
|
|
130
130
|
count--;
|
|
131
|
-
|
|
131
|
+
const terminate = count === -1;
|
|
132
132
|
if (terminate) {
|
|
133
133
|
done();
|
|
134
134
|
} else {
|
|
135
|
-
|
|
135
|
+
const index = count, element = array[index];
|
|
136
136
|
operation(element, next, done, context, index);
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
next();
|
|
140
140
|
}
|
|
141
|
-
|
|
142
|
-
whilst
|
|
143
|
-
forEach
|
|
144
|
-
sequence
|
|
145
|
-
eventually
|
|
146
|
-
repeatedly
|
|
147
|
-
forwardsForEach
|
|
148
|
-
backwardsForEach
|
|
141
|
+
const _default = {
|
|
142
|
+
whilst,
|
|
143
|
+
forEach,
|
|
144
|
+
sequence,
|
|
145
|
+
eventually,
|
|
146
|
+
repeatedly,
|
|
147
|
+
forwardsForEach,
|
|
148
|
+
backwardsForEach
|
|
149
149
|
};
|
|
150
150
|
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYXN5bmNocm9ub3VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHdoaWxzdChvcGVyYXRpb24sIGRvbmUsIGNvbnRleHQpIHtcclxuICBsZXQgY291bnQgPSAtMTtcclxuXHJcbiAgZnVuY3Rpb24gbmV4dCgpIHtcclxuICAgIGNvdW50Kys7XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSBjb3VudDsgIC8vL1xyXG5cclxuICAgIG9wZXJhdGlvbihuZXh0LCBkb25lLCBjb250ZXh0LCBpbmRleCk7XHJcbiAgfVxyXG5cclxuICBuZXh0KCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JFYWNoKGFycmF5LCBvcGVyYXRpb24sIGRvbmUsIGNvbnRleHQpIHtcclxuICBjb25zdCBsZW5ndGggPSBhcnJheS5sZW5ndGg7ICAvLy9cclxuXHJcbiAgbGV0IGNvdW50ID0gLTE7XHJcblxyXG4gIGZ1bmN0aW9uIG5leHQoKSB7XHJcbiAgICBjb3VudCsrO1xyXG5cclxuICAgIGNvbnN0IHRlcm1pbmF0ZSA9IChjb3VudCA9PT0gbGVuZ3RoKTtcclxuXHJcbiAgICBpZiAodGVybWluYXRlKSB7XHJcbiAgICAgIGRvbmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY291bnQsICAvLy9cclxuICAgICAgICAgICAgZWxlbWVudCA9IGFycmF5W2luZGV4XTtcclxuXHJcbiAgICAgIG9wZXJhdGlvbihlbGVtZW50LCBuZXh0LCBkb25lLCBjb250ZXh0LCBpbmRleCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZXh0KCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXF1ZW5jZShvcGVyYXRpb25zLCBkb25lLCBjb250ZXh0KSB7XHJcbiAgY29uc3QgbGVuZ3RoID0gb3BlcmF0aW9ucy5sZW5ndGg7ICAvLy9cclxuXHJcbiAgbGV0IGNvdW50ID0gLTE7XHJcblxyXG4gIGZ1bmN0aW9uIG5leHQoKSB7XHJcbiAgICBjb3VudCsrO1xyXG5cclxuICAgIGNvbnN0IHRlcm1pbmF0ZSA9IChjb3VudCA9PT0gbGVuZ3RoKTtcclxuXHJcbiAgICBpZiAodGVybWluYXRlKSB7XHJcbiAgICAgIGRvbmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gY291bnQsICAvLy9cclxuICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uc1tpbmRleF07XHJcblxyXG4gICAgICBvcGVyYXRpb24obmV4dCwgZG9uZSwgY29udGV4dCwgaW5kZXgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmV4dCgpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZXZlbnR1YWxseShvcGVyYXRpb25zLCBkb25lLCBjb250ZXh0KSB7XHJcbiAgY29uc3QgbGVuZ3RoID0gb3BlcmF0aW9ucy5sZW5ndGg7ICAvLy9cclxuXHJcbiAgaWYgKGxlbmd0aCA9PT0gMCkge1xyXG4gICAgZG9uZSgpO1xyXG5cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGxldCBjb3VudCA9IDA7XHJcblxyXG4gIGZ1bmN0aW9uIG5leHQoKSB7XHJcbiAgICBjb3VudCsrO1xyXG5cclxuICAgIGNvbnN0IHRlcm1pbmF0ZSA9IChjb3VudCA9PT0gbGVuZ3RoKTtcclxuXHJcbiAgICBpZiAodGVybWluYXRlKSB7XHJcbiAgICAgIGRvbmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZXJhdGlvbnMuZm9yRWFjaCgob3BlcmF0aW9uLCBpbmRleCkgPT4ge1xyXG4gICAgb3BlcmF0aW9uKG5leHQsIGRvbmUsIGNvbnRleHQsIGluZGV4KTtcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlcGVhdGVkbHkob3BlcmF0aW9uLCBsZW5ndGgsIGRvbmUsIGNvbnRleHQpIHtcclxuICBpZiAobGVuZ3RoID09PSAwKSB7XHJcbiAgICBkb25lKCk7XHJcblxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgbGV0IGNvdW50ID0gMDtcclxuXHJcbiAgZnVuY3Rpb24gbmV4dCgpIHtcclxuICAgIGNvdW50Kys7XHJcblxyXG4gICAgY29uc3QgdGVybWluYXRlID0gKGNvdW50ID09PSBsZW5ndGgpO1xyXG5cclxuICAgIGlmICh0ZXJtaW5hdGUpIHtcclxuICAgICAgZG9uZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgb3BlcmF0aW9uKG5leHQsIGRvbmUsIGNvbnRleHQsIGluZGV4KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3J3YXJkc0ZvckVhY2goYXJyYXksIG9wZXJhdGlvbiwgZG9uZSwgY29udGV4dCkge1xyXG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgIC8vL1xyXG5cclxuICBsZXQgY291bnQgPSAtMTtcclxuXHJcbiAgZnVuY3Rpb24gbmV4dCgpIHtcclxuICAgIGNvdW50Kys7XHJcblxyXG4gICAgY29uc3QgdGVybWluYXRlID0gKGNvdW50ID09PSBsZW5ndGgpO1xyXG5cclxuICAgIGlmICh0ZXJtaW5hdGUpIHtcclxuICAgICAgZG9uZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kZXggPSBjb3VudCwgIC8vL1xyXG4gICAgICAgICAgICBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xyXG5cclxuICAgICAgb3BlcmF0aW9uKGVsZW1lbnQsIG5leHQsIGRvbmUsIGNvbnRleHQsIGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5leHQoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJhY2t3YXJkc0ZvckVhY2goYXJyYXksIG9wZXJhdGlvbiwgZG9uZSwgY29udGV4dCkge1xyXG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgIC8vL1xyXG5cclxuICBsZXQgY291bnQgPSBsZW5ndGg7XHJcblxyXG4gIGZ1bmN0aW9uIG5leHQoKSB7XHJcbiAgICBjb3VudC0tO1xyXG5cclxuICAgIGNvbnN0IHRlcm1pbmF0ZSA9IChjb3VudCA9PT0gLTEpO1xyXG5cclxuICAgIGlmICh0ZXJtaW5hdGUpIHtcclxuICAgICAgZG9uZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW5kZXggPSBjb3VudCwgIC8vL1xyXG4gICAgICAgICAgICBlbGVtZW50ID0gYXJyYXlbaW5kZXhdO1xyXG5cclxuICAgICAgb3BlcmF0aW9uKGVsZW1lbnQsIG5leHQsIGRvbmUsIGNvbnRleHQsIGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5leHQoKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIHdoaWxzdCxcclxuICBmb3JFYWNoLFxyXG4gIHNlcXVlbmNlLFxyXG4gIGV2ZW50dWFsbHksXHJcbiAgcmVwZWF0ZWRseSxcclxuICBmb3J3YXJkc0ZvckVhY2gsXHJcbiAgYmFja3dhcmRzRm9yRWFjaFxyXG59O1xyXG4iXSwibmFtZXMiOlsiYmFja3dhcmRzRm9yRWFjaCIsImV2ZW50dWFsbHkiLCJmb3JFYWNoIiwiZm9yd2FyZHNGb3JFYWNoIiwicmVwZWF0ZWRseSIsInNlcXVlbmNlIiwid2hpbHN0Iiwib3BlcmF0aW9uIiwiZG9uZSIsImNvbnRleHQiLCJjb3VudCIsIm5leHQiLCJpbmRleCIsImFycmF5IiwibGVuZ3RoIiwidGVybWluYXRlIiwiZWxlbWVudCIsIm9wZXJhdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXVJZ0JBO2VBQUFBOztRQXVCaEI7ZUFBQTs7UUFoR2dCQztlQUFBQTs7UUE5Q0FDO2VBQUFBOztRQWdHQUM7ZUFBQUE7O1FBeEJBQztlQUFBQTs7UUFqREFDO2VBQUFBOztRQXJDQUM7ZUFBQUE7OztBQUFULFNBQVNBLE9BQU9DLFNBQVMsRUFBRUMs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
|
|
@@ -8,65 +8,51 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return _default;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
function _instanceof(left, right) {
|
|
16
|
-
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
17
|
-
return !!right[Symbol.hasInstance](left);
|
|
18
|
-
} else {
|
|
19
|
-
return left instanceof right;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
function _type_of(obj) {
|
|
23
|
-
"@swc/helpers - typeof";
|
|
24
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
25
|
-
}
|
|
11
|
+
const _array = require("../utilities/array");
|
|
12
|
+
const _defaults = require("../defaults");
|
|
13
|
+
const _fileSystem = require("../utilities/fileSystem");
|
|
14
|
+
const _constants = require("../constants");
|
|
26
15
|
if (!globalThis.rc) {
|
|
27
16
|
globalThis.rc = _rc;
|
|
28
17
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
rc
|
|
18
|
+
const { rc } = globalThis;
|
|
19
|
+
const _default = {
|
|
20
|
+
rc
|
|
32
21
|
};
|
|
33
|
-
|
|
22
|
+
let baseExtension = _defaults.DEFAULT_RC_BASE_EXTENSION;
|
|
34
23
|
function _rc(environmentName) {
|
|
35
24
|
environmentName = environmentName || environmentNameFromArgv() || environmentNameFromEnv(); ///
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
let json = readRCFile();
|
|
26
|
+
const environment = findEnvironment(json, environmentName);
|
|
38
27
|
json = environment; ///
|
|
39
28
|
replaceEnvironmentVariables(json);
|
|
40
29
|
Object.assign(rc, environment);
|
|
41
30
|
}
|
|
42
31
|
function readRCFile() {
|
|
43
|
-
|
|
32
|
+
const rcFilePath = rcFilePathFromNothing(), rcFileContent = (0, _fileSystem.readFile)(rcFilePath), json = JSON.parse(rcFileContent);
|
|
44
33
|
return json;
|
|
45
34
|
}
|
|
46
35
|
function writeRCFile(json) {
|
|
47
|
-
|
|
36
|
+
const rcFilePath = rcFilePathFromNothing(), rdFileContent = JSON.stringify(json, null, _constants.DOUBLE_SPACE);
|
|
48
37
|
(0, _fileSystem.writeFile)(rcFilePath, rdFileContent);
|
|
49
38
|
}
|
|
50
|
-
function updateRCFile(addedProperties) {
|
|
51
|
-
|
|
52
|
-
deletedPropertyNames[_key - 1] = arguments[_key];
|
|
53
|
-
}
|
|
54
|
-
var json = readRCFile();
|
|
39
|
+
function updateRCFile(addedProperties, ...deletedPropertyNames) {
|
|
40
|
+
let json = readRCFile();
|
|
55
41
|
if (addedProperties) {
|
|
56
42
|
Object.assign(json, addedProperties);
|
|
57
43
|
}
|
|
58
|
-
deletedPropertyNames.forEach(
|
|
44
|
+
deletedPropertyNames.forEach((deletedPropertyName)=>{
|
|
59
45
|
delete json[deletedPropertyName];
|
|
60
46
|
});
|
|
61
47
|
writeRCFile(json);
|
|
62
48
|
}
|
|
63
49
|
function checkRCFileExists() {
|
|
64
|
-
|
|
50
|
+
const rcFilePath = rcFilePathFromNothing(), rcFileExists = (0, _fileSystem.checkFileExists)(rcFilePath);
|
|
65
51
|
return rcFileExists;
|
|
66
52
|
}
|
|
67
53
|
function createVacuousRCFile() {
|
|
68
|
-
|
|
69
|
-
environments
|
|
54
|
+
const environments = [], json = {
|
|
55
|
+
environments
|
|
70
56
|
};
|
|
71
57
|
writeRCFile(json);
|
|
72
58
|
}
|
|
@@ -74,22 +60,22 @@ function setRCBaseExtension(rcBaseExtension) {
|
|
|
74
60
|
baseExtension = rcBaseExtension;
|
|
75
61
|
}
|
|
76
62
|
Object.assign(_rc, {
|
|
77
|
-
readRCFile
|
|
78
|
-
writeRCFile
|
|
79
|
-
updateRCFile
|
|
80
|
-
checkRCFileExists
|
|
81
|
-
createVacuousRCFile
|
|
82
|
-
setRCBaseExtension
|
|
63
|
+
readRCFile,
|
|
64
|
+
writeRCFile,
|
|
65
|
+
updateRCFile,
|
|
66
|
+
checkRCFileExists,
|
|
67
|
+
createVacuousRCFile,
|
|
68
|
+
setRCBaseExtension
|
|
83
69
|
});
|
|
84
70
|
function findEnvironment(json, environmentName) {
|
|
85
|
-
|
|
86
|
-
|
|
71
|
+
let environment;
|
|
72
|
+
const { environments } = json;
|
|
87
73
|
if (environmentName === null) {
|
|
88
|
-
|
|
74
|
+
const firstEnvironment = (0, _array.first)(environments);
|
|
89
75
|
environment = firstEnvironment; ///
|
|
90
76
|
} else {
|
|
91
|
-
environment = environments.find(
|
|
92
|
-
|
|
77
|
+
environment = environments.find((environment)=>{
|
|
78
|
+
const { name } = environment;
|
|
93
79
|
if (name === environmentName) {
|
|
94
80
|
return true;
|
|
95
81
|
}
|
|
@@ -99,19 +85,19 @@ function findEnvironment(json, environmentName) {
|
|
|
99
85
|
return environment;
|
|
100
86
|
}
|
|
101
87
|
function rcFilePathFromNothing() {
|
|
102
|
-
|
|
88
|
+
const rcFilePath = `./.${baseExtension}rc`;
|
|
103
89
|
return rcFilePath;
|
|
104
90
|
}
|
|
105
91
|
function environmentNameFromEnv() {
|
|
106
|
-
|
|
92
|
+
const environmentName = process.env[_constants.ENVIRONMENT] || null;
|
|
107
93
|
return environmentName;
|
|
108
94
|
}
|
|
109
95
|
function environmentNameFromArgv() {
|
|
110
|
-
|
|
111
|
-
process.argv.find(
|
|
112
|
-
|
|
96
|
+
let environmentName = null;
|
|
97
|
+
process.argv.find((argument)=>{
|
|
98
|
+
const matches = argument.match(/--environment=(.+)/), found = matches !== null;
|
|
113
99
|
if (found) {
|
|
114
|
-
|
|
100
|
+
const secondMatch = (0, _array.second)(matches);
|
|
115
101
|
environmentName = secondMatch;
|
|
116
102
|
}
|
|
117
103
|
return found;
|
|
@@ -119,10 +105,10 @@ function environmentNameFromArgv() {
|
|
|
119
105
|
return environmentName;
|
|
120
106
|
}
|
|
121
107
|
function replaceEnvironmentVariable(string) {
|
|
122
|
-
|
|
123
|
-
|
|
108
|
+
let value = null;
|
|
109
|
+
const stringUpperCase = isStringUpperCase(string);
|
|
124
110
|
if (stringUpperCase) {
|
|
125
|
-
|
|
111
|
+
const name = string; ///
|
|
126
112
|
value = process.env[name];
|
|
127
113
|
if (value === undefined) {
|
|
128
114
|
value = null;
|
|
@@ -131,63 +117,63 @@ function replaceEnvironmentVariable(string) {
|
|
|
131
117
|
return value;
|
|
132
118
|
}
|
|
133
119
|
function replaceEnvironmentVariables(environment) {
|
|
134
|
-
|
|
135
|
-
|
|
120
|
+
let json = environment;
|
|
121
|
+
const jsonArray = isJSONArray(json), jsonObject = isJSONObject(json);
|
|
136
122
|
if (false) {
|
|
137
123
|
///
|
|
138
124
|
} else if (jsonArray) {
|
|
139
|
-
|
|
140
|
-
for(
|
|
141
|
-
|
|
125
|
+
const array = json, length = array.length;
|
|
126
|
+
for(let index = 0; index < length; index++){
|
|
127
|
+
const json = array[index], jsonString = isJSONString(json);
|
|
142
128
|
if (jsonString) {
|
|
143
|
-
|
|
129
|
+
const string = json, value = replaceEnvironmentVariable(string);
|
|
144
130
|
if (value !== null) {
|
|
145
131
|
array[index] = value;
|
|
146
132
|
}
|
|
147
133
|
}
|
|
148
134
|
}
|
|
149
135
|
} else if (jsonObject) {
|
|
150
|
-
|
|
151
|
-
for(
|
|
152
|
-
|
|
153
|
-
if (
|
|
154
|
-
|
|
155
|
-
if (
|
|
156
|
-
object[name] =
|
|
136
|
+
const object = json; ///
|
|
137
|
+
for(let name in object){
|
|
138
|
+
const json = object[name], jsonString = isJSONString(json);
|
|
139
|
+
if (jsonString) {
|
|
140
|
+
const string = json, value = replaceEnvironmentVariable(string); ///
|
|
141
|
+
if (value !== null) {
|
|
142
|
+
object[name] = value;
|
|
157
143
|
}
|
|
158
144
|
} else {
|
|
159
|
-
replaceEnvironmentVariables(
|
|
145
|
+
replaceEnvironmentVariables(json);
|
|
160
146
|
}
|
|
161
147
|
}
|
|
162
148
|
}
|
|
163
149
|
}
|
|
164
150
|
function isJSONArray(json) {
|
|
165
|
-
|
|
151
|
+
const jsonArray = json instanceof Array;
|
|
166
152
|
return jsonArray;
|
|
167
153
|
}
|
|
168
154
|
function isJSONObject(json) {
|
|
169
|
-
|
|
155
|
+
const jsonArray = isJSONArray(json), jsonPrimitive = isJSONPrimitive(json), jsonObject = !jsonArray && !jsonPrimitive;
|
|
170
156
|
return jsonObject;
|
|
171
157
|
}
|
|
172
158
|
function isJSONString(json) {
|
|
173
|
-
|
|
159
|
+
const jsonString = typeof json === _constants.STRING;
|
|
174
160
|
return jsonString;
|
|
175
161
|
}
|
|
176
162
|
function isJSONNumber(json) {
|
|
177
|
-
|
|
163
|
+
const jsonNumber = typeof json === _constants.NUMBER;
|
|
178
164
|
return jsonNumber;
|
|
179
165
|
}
|
|
180
166
|
function isJSONBoolean(json) {
|
|
181
|
-
|
|
167
|
+
const jsonBoolean = typeof json === _constants.BOOLEAN;
|
|
182
168
|
return jsonBoolean;
|
|
183
169
|
}
|
|
184
170
|
function isJSONPrimitive(json) {
|
|
185
|
-
|
|
171
|
+
const jsonString = isJSONString(json), jsonNumber = isJSONNumber(json), jsonBoolean = isJSONBoolean(json), jsonPrimitive = jsonString || jsonNumber || jsonBoolean;
|
|
186
172
|
return jsonPrimitive;
|
|
187
173
|
}
|
|
188
174
|
function isStringUpperCase(string) {
|
|
189
|
-
|
|
175
|
+
const upperCaseString = string.toUpperCase(), stringUpperCase = string === upperCaseString;
|
|
190
176
|
return stringUpperCase;
|
|
191
177
|
}
|
|
192
178
|
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlndXJhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QsIHNlY29uZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IERFRkFVTFRfUkNfQkFTRV9FWFRFTlNJT04gfSBmcm9tIFwiLi4vZGVmYXVsdHNcIjtcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUsIGNoZWNrRmlsZUV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZmlsZVN5c3RlbVwiO1xuaW1wb3J0IHsgU1RSSU5HLCBOVU1CRVIsIEJPT0xFQU4sIEVOVklST05NRU5ULCBET1VCTEVfU1BBQ0UgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmlmICghZ2xvYmFsVGhpcy5yYykge1xuICBnbG9iYWxUaGlzLnJjID0gX3JjO1xufVxuXG5jb25zdCB7IHJjIH0gPSBnbG9iYWxUaGlzO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHJjXG59O1xuXG5sZXQgYmFzZUV4dGVuc2lvbiA9IERFRkFVTFRfUkNfQkFTRV9FWFRFTlNJT047XG5cbmZ1bmN0aW9uIF9yYyhlbnZpcm9ubWVudE5hbWUpIHtcbiAgZW52aXJvbm1lbnROYW1lID0gZW52aXJvbm1lbnROYW1lIHx8IGVudmlyb25tZW50TmFtZUZyb21Bcmd2KCkgfHwgZW52aXJvbm1lbnROYW1lRnJvbUVudigpOyAvLy9cblxuICBsZXQganNvbiA9IHJlYWRSQ0ZpbGUoKTtcblxuICBjb25zdCBlbnZpcm9ubWVudCA9IGZpbmRFbnZpcm9ubWVudChqc29uLCBlbnZpcm9ubWVudE5hbWUpO1xuXG4gIGpzb24gPSBlbnZpcm9ubWVudDsgLy8vXG5cbiAgcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGVzKGpzb24pO1xuXG4gIE9iamVjdC5hc3NpZ24ocmMsIGVudmlyb25tZW50KTtcbn1cblxuZnVuY3Rpb24gcmVhZFJDRmlsZSgpIHtcbiAgY29uc3QgcmNGaWxlUGF0aCA9IHJjRmlsZVBhdGhGcm9tTm90aGluZygpLFxuICAgICAgICByY0ZpbGVDb250ZW50ID0gcmVhZEZpbGUocmNGaWxlUGF0aCksXG4gICAgICAgIGpzb24gPSBKU09OLnBhcnNlKHJjRmlsZUNvbnRlbnQpO1xuXG4gIHJldHVybiBqc29uOyAgICAgIFxufVxuXG5mdW5jdGlvbiB3cml0ZVJDRmlsZShqc29uKSB7XG4gIGNvbnN0IHJjRmlsZVBhdGggPSByY0ZpbGVQYXRoRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgcmRGaWxlQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIERPVUJMRV9TUEFDRSk7XG5cbiAgd3JpdGVGaWxlKHJjRmlsZVBhdGgsIHJkRmlsZUNvbnRlbnQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVSQ0ZpbGUoYWRkZWRQcm9wZXJ0aWVzLCAuLi5kZWxldGVkUHJvcGVydHlOYW1lcykge1xuICBsZXQganNvbiA9IHJlYWRSQ0ZpbGUoKTtcblxuICBpZiAoYWRkZWRQcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmFzc2lnbihqc29uLCBhZGRlZFByb3BlcnRpZXMpO1xuICB9XG5cbiAgZGVsZXRlZFByb3BlcnR5TmFtZXMuZm9yRWFjaCgoZGVsZXRlZFByb3BlcnR5TmFtZSkgPT4ge1xuICAgIGRlbGV0ZSBqc29uW2RlbGV0ZWRQcm9wZXJ0eU5hbWVdO1xuICB9KTtcblxuICB3cml0ZVJDRmlsZShqc29uKTsgICAgICBcbn1cblxuZnVuY3Rpb24gY2hlY2tSQ0ZpbGVFeGlzdHMoKSB7XG4gIGNvbnN0IHJjRmlsZVBhdGggPSByY0ZpbGVQYXRoRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgcmNGaWxlRXhpc3RzID0gY2hlY2tGaWxlRXhpc3RzKHJjRmlsZVBhdGgpO1xuXG4gIHJldHVybiByY0ZpbGVFeGlzdHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZhY3VvdXNSQ0ZpbGUoKSB7XG4gIGNvbnN0IGVudmlyb25tZW50cyA9IFtdLFxuICAgICAgICBqc29uID0ge1xuICAgICAgICAgIGVudmlyb25tZW50c1xuICAgICAgICB9O1xuXG4gIHdyaXRlUkNGaWxlKGpzb24pO1xufVxuXG5mdW5jdGlvbiBzZXRSQ0Jhc2VFeHRlbnNpb24ocmNCYXNlRXh0ZW5zaW9uKSB7IGJhc2VFeHRlbnNpb24gPSByY0Jhc2VFeHRlbnNpb247IH1cblxuT2JqZWN0LmFzc2lnbihfcmMsIHtcbiAgcmVhZFJDRmlsZSxcbiAgd3JpdGVSQ0ZpbGUsXG4gIHVwZGF0ZVJDRmlsZSxcbiAgY2hlY2tSQ0ZpbGVFeGlzdHMsXG4gIGNyZWF0ZVZhY3VvdXNSQ0ZpbGUsXG4gIHNldFJDQmFzZUV4dGVuc2lvblxufSk7XG5cbmZ1bmN0aW9uIGZpbmRFbnZpcm9ubWVudChqc29uLCBlbnZpcm9ubWVudE5hbWUpIHtcbiAgbGV0IGVudmlyb25tZW50O1xuXG4gIGNvbnN0IHsgZW52aXJvbm1lbnRzIH0gPSBqc29uO1xuXG4gIGlmIChlbnZpcm9ubWVudE5hbWUgPT09IG51bGwpIHtcbiAgICBjb25zdCBmaXJzdEVudmlyb25tZW50ID0gZmlyc3QoZW52aXJvbm1lbnRzKTtcblxuICAgIGVudmlyb25tZW50ID0gZmlyc3RFbnZpcm9ubWVudDsgLy8vXG4gIH0gZWxzZSB7XG4gICAgZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudHMuZmluZCgoZW52aXJvbm1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgbmFtZSB9ID0gZW52aXJvbm1lbnQ7XG5cbiAgICAgIGlmKG5hbWUgPT09IGVudmlyb25tZW50TmFtZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZSBlbnZpcm9ubWVudC5uYW1lXG5cbiAgcmV0dXJuIGVudmlyb25tZW50O1xufVxuXG5mdW5jdGlvbiByY0ZpbGVQYXRoRnJvbU5vdGhpbmcoKSB7XG4gIGNvbnN0IHJjRmlsZVBhdGggPSBgLi8uJHtiYXNlRXh0ZW5zaW9ufXJjYDtcblxuICByZXR1cm4gcmNGaWxlUGF0aDtcbn1cblxuZnVuY3Rpb24gZW52aXJvbm1lbnROYW1lRnJvbUVudigpIHtcbiAgY29uc3QgZW52aXJvbm1lbnROYW1lID0gcHJvY2Vzcy5lbnZbRU5WSVJPTk1FTlRdIHx8IG51bGw7XG5cbiAgcmV0dXJuIGVudmlyb25tZW50TmFtZTtcbn1cblxuZnVuY3Rpb24gZW52aXJvbm1lbnROYW1lRnJvbUFyZ3YoKSB7XG4gIGxldCBlbnZpcm9ubWVudE5hbWUgPSBudWxsO1xuXG4gIHByb2Nlc3MuYXJndi5maW5kKChhcmd1bWVudCkgPT4geyAgLy8vXG4gICAgY29uc3QgbWF0Y2hlcyA9IGFyZ3VtZW50Lm1hdGNoKC8tLWVudmlyb25tZW50PSguKykvKSxcbiAgICAgICAgICBmb3VuZCA9IChtYXRjaGVzICE9PSBudWxsKTtcblxuICAgIGlmIChmb3VuZCkge1xuICAgICAgY29uc3Qgc2Vjb25kTWF0Y2ggPSBzZWNvbmQobWF0Y2hlcyk7XG5cbiAgICAgIGVudmlyb25tZW50TmFtZSA9IHNlY29uZE1hdGNoO1xuICAgIH1cblxuICAgIHJldHVybiBmb3VuZDtcbiAgfSk7XG5cbiAgcmV0dXJuIGVudmlyb25tZW50TmFtZTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGUoc3RyaW5nKSB7XG4gIGxldCB2YWx1ZSA9IG51bGw7XG5cbiAgY29uc3Qgc3RyaW5nVXBwZXJDYXNlID0gaXNTdHJpbmdVcHBlckNhc2Uoc3RyaW5nKTtcblxuICBpZiAoc3RyaW5nVXBwZXJDYXNlKSB7XG4gICAgY29uc3QgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgdmFsdWUgPSBwcm9jZXNzLmVudltuYW1lXTtcblxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlRW52aXJvbm1lbnRWYXJpYWJsZXMoZW52aXJvbm1lbnQpIHtcbiAgbGV0IGpzb24gPSBlbnZpcm9ubWVudDtcblxuICBjb25zdCBqc29uQXJyYXkgPSBpc0pTT05BcnJheShqc29uKSxcbiAgICAgICAganNvbk9iamVjdCA9IGlzSlNPTk9iamVjdChqc29uKTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICAvLy9cbiAgfSBlbHNlIGlmIChqc29uQXJyYXkpIHtcbiAgICBjb25zdCBhcnJheSA9IGpzb24sIC8vL1xuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGpzb24gPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBqc29uU3RyaW5nID0gaXNKU09OU3RyaW5nKGpzb24pO1xuXG4gICAgICBpZiAoanNvblN0cmluZykge1xuICAgICAgICBjb25zdCBzdHJpbmcgPSBqc29uLCAgLy8vXG4gICAgICAgICAgICAgIHZhbHVlID0gcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGUoc3RyaW5nKTtcblxuICAgICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChqc29uT2JqZWN0KSB7XG4gICAgY29uc3Qgb2JqZWN0ID0ganNvbjsgIC8vL1xuXG4gICAgZm9yIChsZXQgbmFtZSBpbiBvYmplY3QpIHtcbiAgICAgIGNvbnN0IGpzb24gPSBvYmplY3RbbmFtZV0sXG4gICAgICAgICAgICBqc29uU3RyaW5nID0gaXNKU09OU3RyaW5nKGpzb24pO1xuXG4gICAgICBpZiAoanNvblN0cmluZykge1xuICAgICAgICBjb25zdCBzdHJpbmcgPSBqc29uLCAgLy8vXG4gICAgICAgICAgICAgIHZhbHVlID0gcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGUoc3RyaW5nKTsgIC8vL1xuXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG9iamVjdFtuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgIHtcbiAgICAgICAgcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGVzKGpzb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0pTT05BcnJheShqc29uKSB7XG4gIGNvbnN0IGpzb25BcnJheSA9IChqc29uIGluc3RhbmNlb2YgQXJyYXkpO1xuXG4gIHJldHVybiBqc29uQXJyYXk7XG59XG5cbmZ1bmN0aW9uIGlzSlNPTk9iamVjdChqc29uKSB7XG4gIGNvbnN0IGpzb25BcnJheSA9IGlzSlNPTkFycmF5KGpzb24pLFxuICAgICAgICBqc29uUHJpbWl0aXZlID0gaXNKU09OUHJpbWl0aXZlKGpzb24pLFxuICAgICAgICBqc29uT2JqZWN0ID0gKCFqc29uQXJyYXkgJiYgISBqc29uUHJpbWl0aXZlKTtcblxuICByZXR1cm4ganNvbk9iamVjdDtcbn1cblxuZnVuY3Rpb24gaXNKU09OU3RyaW5nKGpzb24pIHtcbiAgY29uc3QganNvblN0cmluZyA9ICh0eXBlb2YganNvbiA9PT0gU1RSSU5HKTtcblxuICByZXR1cm4ganNvblN0cmluZztcbn1cblxuZnVuY3Rpb24gaXNKU09OTnVtYmVyKGpzb24pIHtcbiAgY29uc3QganNvbk51bWJlciA9ICh0eXBlb2YganNvbiA9PT0gTlVNQkVSKTtcblxuICByZXR1cm4ganNvbk51bWJlcjtcbn1cblxuZnVuY3Rpb24gaXNKU09OQm9vbGVhbihqc29uKSB7XG4gIGNvbnN0IGpzb25Cb29sZWFuID0gKHR5cGVvZiBqc29uID09PSBCT09MRUFOKTtcblxuICByZXR1cm4ganNvbkJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGlzSlNPTlByaW1pdGl2ZShqc29uKSB7XG4gIGNvbnN0IGpzb25TdHJpbmcgPSBpc0pTT05TdHJpbmcoanNvbiksXG4gICAgICAgIGpzb25OdW1iZXIgPSBpc0pTT05OdW1iZXIoanNvbiksXG4gICAgICAgIGpzb25Cb29sZWFuID0gaXNKU09OQm9vbGVhbihqc29uKSxcbiAgICAgICAganNvblByaW1pdGl2ZSA9IChqc29uU3RyaW5nIHx8IGpzb25OdW1iZXIgfHwganNvbkJvb2xlYW4pO1xuXG4gIHJldHVybiBqc29uUHJpbWl0aXZlO1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZ1VwcGVyQ2FzZShzdHJpbmcpIHtcbiAgY29uc3QgdXBwZXJDYXNlU3RyaW5nID0gc3RyaW5nLnRvVXBwZXJDYXNlKCksXG4gICAgICAgIHN0cmluZ1VwcGVyQ2FzZSA9IChzdHJpbmcgPT09IHVwcGVyQ2FzZVN0cmluZyk7XG5cbiAgcmV0dXJuIHN0cmluZ1VwcGVyQ2FzZTtcbn1cbiJdLCJuYW1lcyI6WyJnbG9iYWxUaGlzIiwicmMiLCJfcmMiLCJiYXNlRXh0ZW5zaW9uIiwiREVGQVVMVF9SQ19CQVNFX0VYVEVOU0lPTiIsImVudmlyb25tZW50TmFtZSIsImVudmlyb25tZW50TmFtZUZyb21Bcmd2IiwiZW52aXJvbm1lbnROYW1lRnJvbUVudiIsImpzb24iLCJyZWFkUkNGaWxlIiwiZW52aXJvbm1lbnQiLCJmaW5kRW52aXJvbm1lbnQiLCJyZXBsYWNlRW52aXJvbm1lbnRWYXJpYWJsZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJyY0ZpbGVQYXRoIiwicmNGaWxlUGF0aEZyb21Ob3RoaW5nIiwicmNGaWxlQ29udGVudCIsInJlYWRGaWxlIiwiSlNPTiIsInBhcnNlIiwid3JpdGVSQ0ZpbGUiLCJyZEZpbGVDb250ZW50Iiwic3RyaW5naWZ5IiwiRE9VQkxFX1NQQUNFIiwid3JpdGVGaWxlIiwidXBkYXRlUkNGaWxlIiwiYWRkZWRQcm9wZXJ0aWVzIiwiZGVsZXRlZFByb3BlcnR5TmFtZXMiLCJmb3JFYWNoIiwiZGVsZXRlZFByb3BlcnR5TmFtZSIsImNoZWNrUkNGaWxlRXhpc3RzIiwicmNGaWxlRXhpc3RzIiwiY2hlY2tGaWxlRXhpc3RzIiwiY3JlYXRlVmFjdW91c1JDRmlsZSIsImVudmlyb25tZW50cyIsInNldFJDQmFzZUV4dGVuc2lvbiIsInJjQmFzZUV4dGVuc2lvbiIsImZpcnN0RW52aXJvbm1lbnQiLCJmaXJzdCIsImZpbmQiLCJuYW1lIiwicHJvY2VzcyIsImVudiIsIkVOVklST05NRU5UIiwiYXJndiIsImFyZ3VtZW50IiwibWF0Y2hlcyIsIm1hdGNoIiwiZm91bmQiLCJzZWNvbmRNYXRjaCIsInNlY29uZCIsInJlcGxhY2VFbnZpcm9ubWVudFZhcmlhYmxlIiwic3RyaW5nIiwidmFsdWUiLCJzdHJpbmdVcHBlckNhc2UiLCJpc1N0cmluZ1VwcGVyQ2FzZSIsInVuZGVmaW5lZCIsImpzb25BcnJheSIsImlzSlNPTkFycmF5IiwianNvbk9iamVjdCIsImlzSlNPTk9iamVjdCIsImFycmF5IiwibGVuZ3RoIiwiaW5kZXgiLCJqc29uU3RyaW5nIiwiaXNKU09OU3RyaW5nIiwib2JqZWN0IiwiQXJyYXkiLCJqc29uUHJpbWl0aXZlIiwiaXNKU09OUHJpbWl0aXZlIiwiU1RSSU5HIiwiaXNKU09OTnVtYmVyIiwianNvbk51bWJlciIsIk5VTUJFUiIsImlzSlNPTkJvb2xlYW4iLCJqc29uQm9vbGVhbiIsIkJPT0xFQU4iLCJ1cHBlckNhc2VTdHJpbmciLCJ0b1VwcGVyQ2FzZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7cUJBWDhCO3dCQUNZOzBCQUNXO3lCQUNjOzs7Ozs7Ozs7Ozs7QUFFbkUsSUFBSSxDQUFDQSxXQUFXQyxFQUFFLEVBQUU7SUFDbEJELFdBQVdDLEVBQUUsR0FBR0M7QUFDbEI7QUFFQSxJQUFNLEFBQUVELEtBQU9ELFdBQVBDO0lBRVIsV0FBZTtJQUNiQSxJQUFBQTtBQUNGO0FBRUEsSUFBSUUsZ0JBQWdCQyxtQ0FBeUI7QUFFN0MsU0FBU0YsSUFBSUcsZUFBZTtJQUMxQkEsa0JBQWtCQSxtQkFBbUJDLDZCQUE2QkMsMEJBQTBCLEdBQUc7SUFFL0YsSUFBSUMsT0FBT0M7SUFFWCxJQUFNQyxjQUFjQyxnQkFBZ0JILE1BQU1IO0lBRTFDRyxPQUFPRSxhQUFhLEdBQUc7SUFFdkJFLDRCQUE0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
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlndXJhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QsIHNlY29uZCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IERFRkFVTFRfUkNfQkFTRV9FWFRFTlNJT04gfSBmcm9tIFwiLi4vZGVmYXVsdHNcIjtcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUsIGNoZWNrRmlsZUV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvZmlsZVN5c3RlbVwiO1xuaW1wb3J0IHsgU1RSSU5HLCBOVU1CRVIsIEJPT0xFQU4sIEVOVklST05NRU5ULCBET1VCTEVfU1BBQ0UgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmlmICghZ2xvYmFsVGhpcy5yYykge1xuICBnbG9iYWxUaGlzLnJjID0gX3JjO1xufVxuXG5jb25zdCB7IHJjIH0gPSBnbG9iYWxUaGlzO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHJjXG59O1xuXG5sZXQgYmFzZUV4dGVuc2lvbiA9IERFRkFVTFRfUkNfQkFTRV9FWFRFTlNJT047XG5cbmZ1bmN0aW9uIF9yYyhlbnZpcm9ubWVudE5hbWUpIHtcbiAgZW52aXJvbm1lbnROYW1lID0gZW52aXJvbm1lbnROYW1lIHx8IGVudmlyb25tZW50TmFtZUZyb21Bcmd2KCkgfHwgZW52aXJvbm1lbnROYW1lRnJvbUVudigpOyAvLy9cblxuICBsZXQganNvbiA9IHJlYWRSQ0ZpbGUoKTtcblxuICBjb25zdCBlbnZpcm9ubWVudCA9IGZpbmRFbnZpcm9ubWVudChqc29uLCBlbnZpcm9ubWVudE5hbWUpO1xuXG4gIGpzb24gPSBlbnZpcm9ubWVudDsgLy8vXG5cbiAgcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGVzKGpzb24pO1xuXG4gIE9iamVjdC5hc3NpZ24ocmMsIGVudmlyb25tZW50KTtcbn1cblxuZnVuY3Rpb24gcmVhZFJDRmlsZSgpIHtcbiAgY29uc3QgcmNGaWxlUGF0aCA9IHJjRmlsZVBhdGhGcm9tTm90aGluZygpLFxuICAgICAgICByY0ZpbGVDb250ZW50ID0gcmVhZEZpbGUocmNGaWxlUGF0aCksXG4gICAgICAgIGpzb24gPSBKU09OLnBhcnNlKHJjRmlsZUNvbnRlbnQpO1xuXG4gIHJldHVybiBqc29uOyAgICAgIFxufVxuXG5mdW5jdGlvbiB3cml0ZVJDRmlsZShqc29uKSB7XG4gIGNvbnN0IHJjRmlsZVBhdGggPSByY0ZpbGVQYXRoRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgcmRGaWxlQ29udGVudCA9IEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIERPVUJMRV9TUEFDRSk7XG5cbiAgd3JpdGVGaWxlKHJjRmlsZVBhdGgsIHJkRmlsZUNvbnRlbnQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVSQ0ZpbGUoYWRkZWRQcm9wZXJ0aWVzLCAuLi5kZWxldGVkUHJvcGVydHlOYW1lcykge1xuICBsZXQganNvbiA9IHJlYWRSQ0ZpbGUoKTtcblxuICBpZiAoYWRkZWRQcm9wZXJ0aWVzKSB7XG4gICAgT2JqZWN0LmFzc2lnbihqc29uLCBhZGRlZFByb3BlcnRpZXMpO1xuICB9XG5cbiAgZGVsZXRlZFByb3BlcnR5TmFtZXMuZm9yRWFjaCgoZGVsZXRlZFByb3BlcnR5TmFtZSkgPT4ge1xuICAgIGRlbGV0ZSBqc29uW2RlbGV0ZWRQcm9wZXJ0eU5hbWVdO1xuICB9KTtcblxuICB3cml0ZVJDRmlsZShqc29uKTsgICAgICBcbn1cblxuZnVuY3Rpb24gY2hlY2tSQ0ZpbGVFeGlzdHMoKSB7XG4gIGNvbnN0IHJjRmlsZVBhdGggPSByY0ZpbGVQYXRoRnJvbU5vdGhpbmcoKSxcbiAgICAgICAgcmNGaWxlRXhpc3RzID0gY2hlY2tGaWxlRXhpc3RzKHJjRmlsZVBhdGgpO1xuXG4gIHJldHVybiByY0ZpbGVFeGlzdHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZhY3VvdXNSQ0ZpbGUoKSB7XG4gIGNvbnN0IGVudmlyb25tZW50cyA9IFtdLFxuICAgICAgICBqc29uID0ge1xuICAgICAgICAgIGVudmlyb25tZW50c1xuICAgICAgICB9O1xuXG4gIHdyaXRlUkNGaWxlKGpzb24pO1xufVxuXG5mdW5jdGlvbiBzZXRSQ0Jhc2VFeHRlbnNpb24ocmNCYXNlRXh0ZW5zaW9uKSB7IGJhc2VFeHRlbnNpb24gPSByY0Jhc2VFeHRlbnNpb247IH1cblxuT2JqZWN0LmFzc2lnbihfcmMsIHtcbiAgcmVhZFJDRmlsZSxcbiAgd3JpdGVSQ0ZpbGUsXG4gIHVwZGF0ZVJDRmlsZSxcbiAgY2hlY2tSQ0ZpbGVFeGlzdHMsXG4gIGNyZWF0ZVZhY3VvdXNSQ0ZpbGUsXG4gIHNldFJDQmFzZUV4dGVuc2lvblxufSk7XG5cbmZ1bmN0aW9uIGZpbmRFbnZpcm9ubWVudChqc29uLCBlbnZpcm9ubWVudE5hbWUpIHtcbiAgbGV0IGVudmlyb25tZW50O1xuXG4gIGNvbnN0IHsgZW52aXJvbm1lbnRzIH0gPSBqc29uO1xuXG4gIGlmIChlbnZpcm9ubWVudE5hbWUgPT09IG51bGwpIHtcbiAgICBjb25zdCBmaXJzdEVudmlyb25tZW50ID0gZmlyc3QoZW52aXJvbm1lbnRzKTtcblxuICAgIGVudmlyb25tZW50ID0gZmlyc3RFbnZpcm9ubWVudDsgLy8vXG4gIH0gZWxzZSB7XG4gICAgZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudHMuZmluZCgoZW52aXJvbm1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgbmFtZSB9ID0gZW52aXJvbm1lbnQ7XG5cbiAgICAgIGlmKG5hbWUgPT09IGVudmlyb25tZW50TmFtZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRlbGV0ZSBlbnZpcm9ubWVudC5uYW1lXG5cbiAgcmV0dXJuIGVudmlyb25tZW50O1xufVxuXG5mdW5jdGlvbiByY0ZpbGVQYXRoRnJvbU5vdGhpbmcoKSB7XG4gIGNvbnN0IHJjRmlsZVBhdGggPSBgLi8uJHtiYXNlRXh0ZW5zaW9ufXJjYDtcblxuICByZXR1cm4gcmNGaWxlUGF0aDtcbn1cblxuZnVuY3Rpb24gZW52aXJvbm1lbnROYW1lRnJvbUVudigpIHtcbiAgY29uc3QgZW52aXJvbm1lbnROYW1lID0gcHJvY2Vzcy5lbnZbRU5WSVJPTk1FTlRdIHx8IG51bGw7XG5cbiAgcmV0dXJuIGVudmlyb25tZW50TmFtZTtcbn1cblxuZnVuY3Rpb24gZW52aXJvbm1lbnROYW1lRnJvbUFyZ3YoKSB7XG4gIGxldCBlbnZpcm9ubWVudE5hbWUgPSBudWxsO1xuXG4gIHByb2Nlc3MuYXJndi5maW5kKChhcmd1bWVudCkgPT4geyAgLy8vXG4gICAgY29uc3QgbWF0Y2hlcyA9IGFyZ3VtZW50Lm1hdGNoKC8tLWVudmlyb25tZW50PSguKykvKSxcbiAgICAgICAgICBmb3VuZCA9IChtYXRjaGVzICE9PSBudWxsKTtcblxuICAgIGlmIChmb3VuZCkge1xuICAgICAgY29uc3Qgc2Vjb25kTWF0Y2ggPSBzZWNvbmQobWF0Y2hlcyk7XG5cbiAgICAgIGVudmlyb25tZW50TmFtZSA9IHNlY29uZE1hdGNoO1xuICAgIH1cblxuICAgIHJldHVybiBmb3VuZDtcbiAgfSk7XG5cbiAgcmV0dXJuIGVudmlyb25tZW50TmFtZTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGUoc3RyaW5nKSB7XG4gIGxldCB2YWx1ZSA9IG51bGw7XG5cbiAgY29uc3Qgc3RyaW5nVXBwZXJDYXNlID0gaXNTdHJpbmdVcHBlckNhc2Uoc3RyaW5nKTtcblxuICBpZiAoc3RyaW5nVXBwZXJDYXNlKSB7XG4gICAgY29uc3QgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgdmFsdWUgPSBwcm9jZXNzLmVudltuYW1lXTtcblxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YWx1ZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlRW52aXJvbm1lbnRWYXJpYWJsZXMoZW52aXJvbm1lbnQpIHtcbiAgbGV0IGpzb24gPSBlbnZpcm9ubWVudDtcblxuICBjb25zdCBqc29uQXJyYXkgPSBpc0pTT05BcnJheShqc29uKSxcbiAgICAgICAganNvbk9iamVjdCA9IGlzSlNPTk9iamVjdChqc29uKTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICAvLy9cbiAgfSBlbHNlIGlmIChqc29uQXJyYXkpIHtcbiAgICBjb25zdCBhcnJheSA9IGpzb24sIC8vL1xuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGpzb24gPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBqc29uU3RyaW5nID0gaXNKU09OU3RyaW5nKGpzb24pO1xuXG4gICAgICBpZiAoanNvblN0cmluZykge1xuICAgICAgICBjb25zdCBzdHJpbmcgPSBqc29uLCAgLy8vXG4gICAgICAgICAgICAgIHZhbHVlID0gcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGUoc3RyaW5nKTtcblxuICAgICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICBhcnJheVtpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChqc29uT2JqZWN0KSB7XG4gICAgY29uc3Qgb2JqZWN0ID0ganNvbjsgIC8vL1xuXG4gICAgZm9yIChsZXQgbmFtZSBpbiBvYmplY3QpIHtcbiAgICAgIGNvbnN0IGpzb24gPSBvYmplY3RbbmFtZV0sXG4gICAgICAgICAgICBqc29uU3RyaW5nID0gaXNKU09OU3RyaW5nKGpzb24pO1xuXG4gICAgICBpZiAoanNvblN0cmluZykge1xuICAgICAgICBjb25zdCBzdHJpbmcgPSBqc29uLCAgLy8vXG4gICAgICAgICAgICAgIHZhbHVlID0gcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGUoc3RyaW5nKTsgIC8vL1xuXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG9iamVjdFtuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgIHtcbiAgICAgICAgcmVwbGFjZUVudmlyb25tZW50VmFyaWFibGVzKGpzb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0pTT05BcnJheShqc29uKSB7XG4gIGNvbnN0IGpzb25BcnJheSA9IChqc29uIGluc3RhbmNlb2YgQXJyYXkpO1xuXG4gIHJldHVybiBqc29uQXJyYXk7XG59XG5cbmZ1bmN0aW9uIGlzSlNPTk9iamVjdChqc29uKSB7XG4gIGNvbnN0IGpzb25BcnJheSA9IGlzSlNPTkFycmF5KGpzb24pLFxuICAgICAgICBqc29uUHJpbWl0aXZlID0gaXNKU09OUHJpbWl0aXZlKGpzb24pLFxuICAgICAgICBqc29uT2JqZWN0ID0gKCFqc29uQXJyYXkgJiYgISBqc29uUHJpbWl0aXZlKTtcblxuICByZXR1cm4ganNvbk9iamVjdDtcbn1cblxuZnVuY3Rpb24gaXNKU09OU3RyaW5nKGpzb24pIHtcbiAgY29uc3QganNvblN0cmluZyA9ICh0eXBlb2YganNvbiA9PT0gU1RSSU5HKTtcblxuICByZXR1cm4ganNvblN0cmluZztcbn1cblxuZnVuY3Rpb24gaXNKU09OTnVtYmVyKGpzb24pIHtcbiAgY29uc3QganNvbk51bWJlciA9ICh0eXBlb2YganNvbiA9PT0gTlVNQkVSKTtcblxuICByZXR1cm4ganNvbk51bWJlcjtcbn1cblxuZnVuY3Rpb24gaXNKU09OQm9vbGVhbihqc29uKSB7XG4gIGNvbnN0IGpzb25Cb29sZWFuID0gKHR5cGVvZiBqc29uID09PSBCT09MRUFOKTtcblxuICByZXR1cm4ganNvbkJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGlzSlNPTlByaW1pdGl2ZShqc29uKSB7XG4gIGNvbnN0IGpzb25TdHJpbmcgPSBpc0pTT05TdHJpbmcoanNvbiksXG4gICAgICAgIGpzb25OdW1iZXIgPSBpc0pTT05OdW1iZXIoanNvbiksXG4gICAgICAgIGpzb25Cb29sZWFuID0gaXNKU09OQm9vbGVhbihqc29uKSxcbiAgICAgICAganNvblByaW1pdGl2ZSA9IChqc29uU3RyaW5nIHx8IGpzb25OdW1iZXIgfHwganNvbkJvb2xlYW4pO1xuXG4gIHJldHVybiBqc29uUHJpbWl0aXZlO1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZ1VwcGVyQ2FzZShzdHJpbmcpIHtcbiAgY29uc3QgdXBwZXJDYXNlU3RyaW5nID0gc3RyaW5nLnRvVXBwZXJDYXNlKCksXG4gICAgICAgIHN0cmluZ1VwcGVyQ2FzZSA9IChzdHJpbmcgPT09IHVwcGVyQ2FzZVN0cmluZyk7XG5cbiAgcmV0dXJuIHN0cmluZ1VwcGVyQ2FzZTtcbn1cbiJdLCJuYW1lcyI6WyJnbG9iYWxUaGlzIiwicmMiLCJfcmMiLCJiYXNlRXh0ZW5zaW9uIiwiREVGQVVMVF9SQ19CQVNFX0VYVEVOU0lPTiIsImVudmlyb25tZW50TmFtZSIsImVudmlyb25tZW50TmFtZUZyb21Bcmd2IiwiZW52aXJvbm1lbnROYW1lRnJvbUVudiIsImpzb24iLCJyZWFkUkNGaWxlIiwiZW52aXJvbm1lbnQiLCJmaW5kRW52aXJvbm1lbnQiLCJyZXBsYWNlRW52aXJvbm1lbnRWYXJpYWJsZXMiLCJPYmplY3QiLCJhc3NpZ24iLCJyY0ZpbGVQYXRoIiwicmNGaWxlUGF0aEZyb21Ob3RoaW5nIiwicmNGaWxlQ29udGVudCIsInJlYWRGaWxlIiwiSlNPTiIsInBhcnNlIiwid3JpdGVSQ0ZpbGUiLCJyZEZpbGVDb250ZW50Iiwic3RyaW5naWZ5IiwiRE9VQkxFX1NQQUNFIiwid3JpdGVGaWxlIiwidXBkYXRlUkNGaWxlIiwiYWRkZWRQcm9wZXJ0aWVzIiwiZGVsZXRlZFByb3BlcnR5TmFtZXMiLCJmb3JFYWNoIiwiZGVsZXRlZFByb3BlcnR5TmFtZSIsImNoZWNrUkNGaWxlRXhpc3RzIiwicmNGaWxlRXhpc3RzIiwiY2hlY2tGaWxlRXhpc3RzIiwiY3JlYXRlVmFjdW91c1JDRmlsZSIsImVudmlyb25tZW50cyIsInNldFJDQmFzZUV4dGVuc2lvbiIsInJjQmFzZUV4dGVuc2lvbiIsImZpcnN0RW52aXJvbm1lbnQiLCJmaXJzdCIsImZpbmQiLCJuYW1lIiwicHJvY2VzcyIsImVudiIsIkVOVklST05NRU5UIiwiYXJndiIsImFyZ3VtZW50IiwibWF0Y2hlcyIsIm1hdGNoIiwiZm91bmQiLCJzZWNvbmRNYXRjaCIsInNlY29uZCIsInJlcGxhY2VFbnZpcm9ubWVudFZhcmlhYmxlIiwic3RyaW5nIiwidmFsdWUiLCJzdHJpbmdVcHBlckNhc2UiLCJpc1N0cmluZ1VwcGVyQ2FzZSIsInVuZGVmaW5lZCIsImpzb25BcnJheSIsImlzSlNPTkFycmF5IiwianNvbk9iamVjdCIsImlzSlNPTk9iamVjdCIsImFycmF5IiwibGVuZ3RoIiwiaW5kZXgiLCJqc29uU3RyaW5nIiwiaXNKU09OU3RyaW5nIiwib2JqZWN0IiwiQXJyYXkiLCJqc29uUHJpbWl0aXZlIiwiaXNKU09OUHJpbWl0aXZlIiwiU1RSSU5HIiwiaXNKU09OTnVtYmVyIiwianNvbk51bWJlciIsIk5VTUJFUiIsImlzSlNPTkJvb2xlYW4iLCJqc29uQm9vbGVhbiIsIkJPT0xFQU4iLCJ1cHBlckNhc2VTdHJpbmciLCJ0b1VwcGVyQ2FzZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFBOzs7dUJBWDhCOzBCQUNZOzRCQUNXOzJCQUNjO0FBRW5FLElBQUksQ0FBQ0EsV0FBV0MsRUFBRSxFQUFFO0lBQ2xCRCxXQUFXQyxFQUFFLEdBQUdDO0FBQ2xCO0FBRUEsTUFBTSxFQUFFRCxFQUFFLEVBQUUsR0FBR0Q7TUFFZixXQUFlO0lBQ2JDO0FBQ0Y7QUFFQSxJQUFJRSxnQkFBZ0JDLG1DQUF5QjtBQUU3QyxTQUFTRixJQUFJRyxlQUFlO0lBQzFCQSxrQkFBa0JBLG1CQUFtQkMsNkJBQTZCQywwQkFBMEIsR0FBRztJQUUvRixJQUFJQyxPQUFPQztJQUVYLE1BQU1DLGNBQWNDLGdCQUFnQkgsTUFBTUg7SUFFMUNHLE9BQU9FLGFBQWEsR0FBRztJQUV2QkUsNEJBQTRCSjtJQUU1QkssT0FB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
|