occam-verify-cli 1.0.366 → 1.0.369
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/lib/abbreviations.js +22 -0
- package/lib/action/help.js +15 -0
- package/lib/action/verify.js +59 -0
- package/lib/action/version.js +19 -0
- package/lib/commands.js +26 -0
- package/lib/configure.js +25 -0
- package/lib/constants.js +5 -1
- package/lib/context/partial/metavariable.js +1 -1
- package/lib/context/partial/statement.js +1 -1
- package/lib/context/partial/substitution/frame.js +1 -1
- package/lib/context/partial/substitution/reference.js +1 -1
- package/lib/context/partial/substitution/statement.js +1 -1
- package/lib/context/partial/substitution/term.js +1 -1
- package/lib/context/partial/term.js +1 -1
- package/lib/context/partial/variable.js +1 -1
- package/lib/defaults.js +36 -0
- package/lib/dom/lemma.js +1 -1
- package/lib/main.js +64 -0
- package/lib/messages.js +13 -0
- package/lib/options.js +34 -0
- package/lib/utilities/releaseContext.js +80 -10
- package/lib/utilities/string.js +8 -1
- package/package.json +3 -3
- package/{bin → src}/abbreviations.js +4 -2
- package/{bin → src}/action/help.js +1 -3
- package/{bin → src}/action/verify.js +5 -7
- package/src/action/version.js +13 -0
- package/src/commands.js +5 -0
- package/{bin → src}/configure.js +3 -5
- package/src/constants.js +1 -0
- package/src/defaults.js +11 -0
- package/{bin → src}/main.js +8 -10
- package/src/messages.js +3 -0
- package/src/options.js +7 -0
- package/src/utilities/releaseContext.js +100 -8
- package/src/utilities/string.js +6 -0
- package/bin/action/version.js +0 -15
- package/bin/commands.js +0 -11
- package/bin/constants.js +0 -9
- package/bin/defaults.js +0 -19
- package/bin/messages.js +0 -7
- package/bin/options.js +0 -15
- package/bin/utilities/releaseContext.js +0 -103
- package/bin/utilities/string.js +0 -13
|
@@ -2,13 +2,33 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get createReleaseContext () {
|
|
13
|
+
return createReleaseContext;
|
|
14
|
+
},
|
|
15
|
+
get initialiseReleaseContext () {
|
|
16
|
+
return initialiseReleaseContext;
|
|
17
|
+
},
|
|
18
|
+
get releaseContextFromDependency () {
|
|
19
|
+
return releaseContextFromDependency;
|
|
20
|
+
},
|
|
21
|
+
get releaseContextFromJSON () {
|
|
22
|
+
return releaseContextFromJSON;
|
|
23
|
+
},
|
|
24
|
+
get releaseContextFromProject () {
|
|
25
|
+
return releaseContextFromProject;
|
|
9
26
|
}
|
|
10
27
|
});
|
|
11
28
|
var _necessary = require("necessary");
|
|
29
|
+
var _occamentities = require("occam-entities");
|
|
30
|
+
var _occamfilesystem = require("occam-file-system");
|
|
31
|
+
var _release = /*#__PURE__*/ _interop_require_default(require("../context/release"));
|
|
12
32
|
function _array_like_to_array(arr, len) {
|
|
13
33
|
if (len == null || len > arr.length) len = arr.length;
|
|
14
34
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
@@ -17,6 +37,11 @@ function _array_like_to_array(arr, len) {
|
|
|
17
37
|
function _array_without_holes(arr) {
|
|
18
38
|
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
19
39
|
}
|
|
40
|
+
function _interop_require_default(obj) {
|
|
41
|
+
return obj && obj.__esModule ? obj : {
|
|
42
|
+
default: obj
|
|
43
|
+
};
|
|
44
|
+
}
|
|
20
45
|
function _iterable_to_array(iter) {
|
|
21
46
|
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
22
47
|
}
|
|
@@ -34,7 +59,56 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
34
59
|
if (n === "Map" || n === "Set") return Array.from(n);
|
|
35
60
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
36
61
|
}
|
|
37
|
-
var last = _necessary.arrayUtilities.last;
|
|
62
|
+
var last = _necessary.arrayUtilities.last, loadProject = _occamfilesystem.fileSystemUtilities.loadProject, concatenatePaths = _necessary.pathUtilities.concatenatePaths, isMetaJSONFileValid = _occamentities.metaJSONUtilities.isMetaJSONFileValid, readFile = _necessary.fileSystemUtilities.readFile, isEntryFile = _necessary.fileSystemUtilities.isEntryFile, checkEntryExists = _necessary.fileSystemUtilities.checkEntryExists;
|
|
63
|
+
function releaseContextFromDependency(dependency, context, callback) {
|
|
64
|
+
var projectsDirectoryPath = process.cwd(), dependencyName = dependency.getName(), entryPath = concatenatePaths(projectsDirectoryPath, dependencyName), entryExists = checkEntryExists(entryPath);
|
|
65
|
+
if (!entryExists) {
|
|
66
|
+
var _$error = null, releaseContext = null;
|
|
67
|
+
callback(_$error, releaseContext);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
var releaseContext1 = null;
|
|
71
|
+
try {
|
|
72
|
+
var entryFile = isEntryFile(entryPath);
|
|
73
|
+
if (entryFile) {
|
|
74
|
+
var filePath = entryPath, content = readFile(filePath), jsonString = content, json = JSON.parse(jsonString);
|
|
75
|
+
releaseContext1 = releaseContextFromJSON(json, context);
|
|
76
|
+
} else {
|
|
77
|
+
var projectName = dependencyName, project = loadProject(projectName, projectsDirectoryPath);
|
|
78
|
+
if (project !== null) {
|
|
79
|
+
releaseContext1 = releaseContextFromProject(project, context);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
} catch (error) {
|
|
83
|
+
callback(error, releaseContext1);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
var _$error1 = null;
|
|
87
|
+
callback(_$error1, releaseContext1);
|
|
88
|
+
}
|
|
89
|
+
function releaseContextFromJSON(json, context) {
|
|
90
|
+
var log = context.log, name = json.name;
|
|
91
|
+
context = json.context; ///
|
|
92
|
+
var entries = json.entries;
|
|
93
|
+
json = entries; ///
|
|
94
|
+
entries = _occamentities.Entries.fromJSON(json);
|
|
95
|
+
var contextJSON = context; ///
|
|
96
|
+
json = contextJSON; ///
|
|
97
|
+
var releaseContext = _release.default.fromLogNameJSONAndEntries(log, name, json, entries);
|
|
98
|
+
return releaseContext;
|
|
99
|
+
}
|
|
100
|
+
function releaseContextFromProject(project, context) {
|
|
101
|
+
var releaseContext = null;
|
|
102
|
+
var metaJSONFile = project.getMetaJSONFile();
|
|
103
|
+
if (metaJSONFile !== null) {
|
|
104
|
+
var metaJSONFileValid = isMetaJSONFileValid(metaJSONFile);
|
|
105
|
+
if (metaJSONFileValid) {
|
|
106
|
+
var log = context.log, name = project.getName(), json = null, entries = project.getEntries();
|
|
107
|
+
releaseContext = _release.default.fromLogNameJSONAndEntries(log, name, json, entries);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return releaseContext;
|
|
111
|
+
}
|
|
38
112
|
function createReleaseContext(dependency, dependentNames, context, callback) {
|
|
39
113
|
var log = context.log, releaseContextMap = context.releaseContextMap, dependencyName = dependency.getName(), releaseName = dependencyName, releaseContext = releaseContextMap[releaseName] || null;
|
|
40
114
|
if (releaseContext !== null) {
|
|
@@ -105,10 +179,6 @@ function initialiseReleaseContext(dependency, context) {
|
|
|
105
179
|
}
|
|
106
180
|
}
|
|
107
181
|
}
|
|
108
|
-
var _default = {
|
|
109
|
-
createReleaseContext: createReleaseContext,
|
|
110
|
-
initialiseReleaseContext: initialiseReleaseContext
|
|
111
|
-
};
|
|
112
182
|
function retrieveReleaseContexts(releaseContext, releaseContextMap) {
|
|
113
183
|
var releaseContexts = [], remainingReleaseContext = releaseContext, remainingReleaseContexts = [
|
|
114
184
|
remainingReleaseContext
|
|
@@ -204,4 +274,4 @@ function initialiseDependencyReleaseContexts(dependency, releaseContext, context
|
|
|
204
274
|
});
|
|
205
275
|
}
|
|
206
276
|
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5mdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgeyBsb2csIHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgIT09IG51bGwpIHtcbiAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGxldCBzdWNjZXNzO1xuXG4gICAgaWYgKHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSkge1xuICAgICAgbG9nLmRlYnVnKGBBbHJlYWR5IGNyZWF0ZWQgdGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dC5gKTtcblxuICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCksXG4gICAgICAgIGRlcGVuZGVudE5hbWVzTGVuZ3RoID0gZGVwZW5kZW50TmFtZXMubGVuZ3RoO1xuXG4gIGlmIChkZXBlbmRlbnROYW1lc0xlbmd0aCA9PT0gMCkge1xuICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0Li4uYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWU7ICAvLy9cblxuICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0IGdpdmVuIHRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kYW50J3MgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kuLi5gKTtcbiAgfVxuXG4gIHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3koZGVwZW5kZW5jeSwgY29udGV4dCwgKGVycm9yLCByZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gY2hlY2tSZWxlYXNlQ29udGV4dENyZWF0ZWQocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbnVsbCxcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSA9IHJlbGVhc2VDb250ZXh0O1xuXG4gICAgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvciwgc3VjY2VzcykgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBsb2cud2FybmluZyhgLi4udW5hYmxlIHRvIGNyZWF0ZSB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApO1xuXG4gICAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uY3JlYXRlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApO1xuXG4gICAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG4gICAgfSk7XG4gIH0sIGNvbnRleHQpO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgPT09IG51bGwpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgIGxvZy53YXJuaW5nKGBVbmFibGUgdG8gaW5pdGlhbGlzZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0IGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNyZWF0ZWQuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzSW5pdGlhbGlzZWQoKTtcblxuICAgIGlmICghcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCkge1xuICAgICAgaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC4uLmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cyk7XG5cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uaW5pdGlhbGlzZWQgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC5gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVSZWxlYXNlQ29udGV4dCxcbiAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0XG59O1xuXG5mdW5jdGlvbiByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRzID0gW10sXG4gICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHQsICAvLy9cbiAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzID0gW1xuICAgICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0XG4gICAgICAgIF07XG5cbiAgbGV0IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0xlbmd0aCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5sZW5ndGg7XG5cbiAgd2hpbGUgKHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0xlbmd0aCA+IDApIHtcbiAgICBjb25zdCByZW1haW5pbmdSZWxlYXNlQ29udGV4dCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5zaGlmdCgpLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHQ7ICAvLy9cblxuICAgIHJlbGVhc2VDb250ZXh0cy5wdXNoKHJlbGVhc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHJlbGVhc2VDb250ZXh0LmdldERlcGVuZGVuY2llcygpO1xuXG4gICAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSxcbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMocmVsZWFzZUNvbnRleHQpLFxuICAgICAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgICAgIGlmICghcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCAmJiAhcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCkge1xuICAgICAgICBjb25zdCByZW1haW5pbmdSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMucHVzaChyZW1haW5pbmdSZWxlYXNlQ29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0cztcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlQ29udGV4dENyZWF0ZWQocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKTtcblxuICBpZiAoIXJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZTsgLy8vXG5cbiAgICBsb2cud2FybmluZyhgVGhlICcke3JlbGVhc2VOYW1lfScgY29udGV4dCBjb3VsZCBub3QgYmUgY3JlYXRlZC4gUGVyaGFwcyB0aGUgJ21ldGEuanNvbicgZmlsZSBpcyBtaXNzaW5nIG9yIGludmFsaWQuIE9yIHRoZXJlIGNvdWxkIGJlIGEgZGVwZW5kZW5jeSBtaXNtYXRjaC5gKTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dENyZWF0ZWQ7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbnROYW1lcy5pbmNsdWRlcyhkZXBlbmRlbmN5TmFtZSksXG4gICAgICAgIGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMgPSBkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWU7ICAvLy9cblxuICBpZiAoY3ljbGljRGVwZW5kZW5jeUV4aXN0cykge1xuICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgIGZpcnN0RGVwZW5kZW50TmFtZSA9IGZpcnN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZXMgPSBbICAvLy9cbiAgICAgICAgICAgIC4uLmRlcGVuZGVudE5hbWVzLFxuICAgICAgICAgICAgZmlyc3REZXBlbmRlbnROYW1lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZXNTdHJpbmcgPSBkZXBlbmRlbmN5TmFtZXMuam9pbihgJyAtPiAnYCk7XG5cbiAgICBsb2cud2FybmluZyhgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeSwgJyR7ZGVwZW5kZW5jeU5hbWVzU3RyaW5nfScuYCk7XG4gIH1cblxuICByZXR1cm4gY3ljbGljRGVwZW5kZW5jeUV4aXN0cztcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSB0cnVlO1xuXG4gIGNvbnN0IGVudHJpZXMgPSByZWxlYXNlQ29udGV4dC5nZXRFbnRyaWVzKCksXG4gICAgICAgIHNob3J0ZW5lZFZlcnNpb24gPSBkZXBlbmRlbmN5LmdldFNob3J0ZWRWZXJzaW9uKCk7XG5cbiAgaWYgKHNob3J0ZW5lZFZlcnNpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uID0gZW50cmllcy5tYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbik7XG5cbiAgICBpZiAoIWVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24pIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgdmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWUsICAvLy9cbiAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSB2ZXJzaW9uLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgcmVxdWlyZXMgdGhlICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5IGJ1dCBhIGNvbnRleHQgd2l0aCB2ZXJzaW9uICcke3ZlcnNpb25TdHJpbmd9JyB3YXMgcHJvdmlkZWQuYCk7XG5cbiAgICAgIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3k7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCBjYWxsYmFjaykge1xuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICBkZXBlbmRlbnROYW1lcyA9IFsgLi4uZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVuY3lOYW1lIF07ICAvLy9cblxuICBkZXBlbmRlbmNpZXMuYXN5bmNocm9ub3VzRm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3ksIG5leHQsIGRvbmUpID0+IHtcbiAgICBjb25zdCBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzKGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzKTtcblxuICAgIGlmIChjeWNsaWNEZXBlbmRlbmN5RXhpc3RzKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgY2FsbGJhY2sgPSBudWxsO1xuXG4gICAgICBkb25lKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgKGVycm9yLCBzdWNjZXNzKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgIGNhbGxiYWNrID0gbnVsbDtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgICAgIGNhbGxiYWNrID0gbnVsbDtcblxuICAgICAgICBkb25lKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH0sIGRvbmUpO1xuXG4gIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgaWYgKGNhbGxiYWNrICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG51bGwsXG4gICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTtcblxuICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0aWFsaXNlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhkZXBlbmRlbmN5LCByZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHsgIC8vL1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBjb250ZXh0KTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsibGFzdCIsImFycmF5VXRpbGl0aWVzIiwiY3JlYXRlUmVsZWFzZUNvbnRleHQiLCJkZXBlbmRlbmN5IiwiZGVwZW5kZW50TmFtZXMiLCJjb250ZXh0IiwiY2FsbGJhY2siLCJsb2ciLCJyZWxlYXNlQ29udGV4dE1hcCIsImRlcGVuZGVuY3lOYW1lIiwiZ2V0TmFtZSIsInJlbGVhc2VOYW1lIiwicmVsZWFzZUNvbnRleHQiLCJlcnJvciIsInJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSIsImNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5Iiwic3VjY2VzcyIsImRlYnVnIiwicmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsImRlcGVuZGVudE5hbWVzTGVuZ3RoIiwibGVuZ3RoIiwiaW5mbyIsImxhc3REZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50TmFtZSIsInJlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkIiwiY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsIndhcm5pbmciLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dEluaXRpYWxpc2VkIiwiaXNJbml0aWFsaXNlZCIsImluaXRpYWxpc2VEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHRzIiwicmV0cmlldmVSZWxlYXNlQ29udGV4dHMiLCJpbml0aWFsaXNlIiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHQiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHMiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGgiLCJzaGlmdCIsInB1c2giLCJkZXBlbmRlbmNpZXMiLCJnZXREZXBlbmRlbmNpZXMiLCJmb3JFYWNoRGVwZW5kZW5jeSIsInJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJpbmNsdWRlcyIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMiLCJkZXBlbmRlbnROYW1lc0luY2x1ZGVzRGVwZW5kZW5jeU5hbWUiLCJjeWNsaWNEZXBlbmRlbmN5RXhpc3RzIiwiZmlyc3REZXBlbmRlbnROYW1lIiwiZmlyc3QiLCJkZXBlbmRlbmN5TmFtZXMiLCJkZXBlbmRlbmN5TmFtZXNTdHJpbmciLCJqb2luIiwiZW50cmllcyIsImdldEVudHJpZXMiLCJzaG9ydGVuZWRWZXJzaW9uIiwiZ2V0U2hvcnRlZFZlcnNpb24iLCJlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwibWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidG9TdHJpbmciLCJhc3luY2hyb25vdXNGb3JFYWNoRGVwZW5kZW5jeSIsIm5leHQiLCJkb25lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkE2SEE7OztlQUFBOzs7eUJBM0grQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0IsSUFBTSxBQUFFQSxPQUFTQyx5QkFBYyxDQUF2QkQ7QUFFUixTQUFTRSxxQkFBcUJDLFVBQVUsRUFBRUMsY0FBYyxFQUFFQyxPQUFPLEVBQUVDLFFBQVE7SUFDekUsSUFBUUMsTUFBMkJGLFFBQTNCRSxLQUFLQyxvQkFBc0JILFFBQXRCRyxtQkFDUEMsaUJBQWlCTixXQUFXTyxPQUFPLElBQ25DQyxjQUFjRixnQkFDZEcsaUJBQWlCSixpQkFBaUIsQ0FBQ0csWUFBWSxJQUFJO0lBRXpELElBQUlDLG1CQUFtQixNQUFNO1FBQzNCLElBQU1DLFFBQVEsTUFDUkMsMkJBQTJCQyw4QkFBOEJILGdCQUFnQlQsWUFBWUMsZ0JBQWdCQztRQUUzRyxJQUFJVztRQUVKLElBQUlGLDBCQUEwQjtZQUM1QlAsSUFBSVUsS0FBSyxDQUFDLEFBQUMsd0JBQW1DLE9BQVpOLGFBQVk7WUFFOUNLLFVBQVU7UUFDWixPQUFPO1lBQ0xBLFVBQVU7UUFDWjtRQUVBVixTQUFTTyxPQUFPRztRQUVoQjtJQUNGO0lBRUEsSUFBTSxBQUFFRSwrQkFBaUNiLFFBQWpDYSw4QkFDRkMsbUJBQW1CaEIsV0FBV2lCLFFBQVEsSUFDdENDLHVCQUF1QmpCLGVBQWVrQixNQUFNO0lBRWxELElBQUlELHlCQUF5QixHQUFHO1FBQzlCZCxJQUFJZ0IsSUFBSSxDQUFDLEFBQUMsaUJBQTRCLE9BQVpaLGFBQVk7SUFDeEMsT0FBTztRQUNMLElBQU1hLG9CQUFvQnhCLEtBQUtJLGlCQUN6QnFCLGdCQUFnQkQsbUJBQW9CLEdBQUc7UUFF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
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuaW1wb3J0IHsgRW50cmllcywgbWV0YUpTT05VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tZW50aXRpZXNcIjtcbmltcG9ydCB7IGZpbGVTeXN0ZW1VdGlsaXRpZXMgYXMgb2NjYW1GaWxlU3lzdGVtVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWZpbGUtc3lzdGVtXCI7XG5pbXBvcnQgeyBwYXRoVXRpbGl0aWVzLCBmaWxlU3lzdGVtVXRpbGl0aWVzIGFzIG5lY2Vzc2FyeUZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBSZWxlYXNlQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9yZWxlYXNlXCI7XG5cbmNvbnN0IHsgbGFzdCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGxvYWRQcm9qZWN0IH0gPSBvY2NhbUZpbGVTeXN0ZW1VdGlsaXRpZXMsXG4gICAgICB7IGNvbmNhdGVuYXRlUGF0aHMgfSA9IHBhdGhVdGlsaXRpZXMsXG4gICAgICB7IGlzTWV0YUpTT05GaWxlVmFsaWQgfSA9IG1ldGFKU09OVXRpbGl0aWVzLFxuICAgICAgeyByZWFkRmlsZSwgaXNFbnRyeUZpbGUsIGNoZWNrRW50cnlFeGlzdHMgfSA9IG5lY2Vzc2FyeUZpbGVTeXN0ZW1VdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IHByb2Nlc3MuY3dkKCksIC8vL1xuICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgZW50cnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGRlcGVuZGVuY3lOYW1lKSxcbiAgICBlbnRyeUV4aXN0cyA9IGNoZWNrRW50cnlFeGlzdHMoZW50cnlQYXRoKTtcblxuICBpZiAoIWVudHJ5RXhpc3RzKSB7XG4gICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgcmVsZWFzZUNvbnRleHQgPSBudWxsO1xuXG4gICAgY2FsbGJhY2soZXJyb3IsIHJlbGVhc2VDb250ZXh0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCByZWxlYXNlQ29udGV4dCA9IG51bGw7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShlbnRyeVBhdGgpO1xuXG4gICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgY29uc3QgZmlsZVBhdGggPSBlbnRyeVBhdGgsIC8vL1xuICAgICAgICBjb250ZW50ID0gcmVhZEZpbGUoZmlsZVBhdGgpLFxuICAgICAgICBqc29uU3RyaW5nID0gY29udGVudCwgLy8vXG4gICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xuXG4gICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0RnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByb2plY3ROYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICBwcm9qZWN0ID0gbG9hZFByb2plY3QocHJvamVjdE5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgIGlmIChwcm9qZWN0ICE9PSBudWxsKSB7XG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdChwcm9qZWN0LCBjb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY2FsbGJhY2soZXJyb3IsIHJlbGVhc2VDb250ZXh0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGVycm9yID0gbnVsbDtcblxuICBjYWxsYmFjayhlcnJvciwgcmVsZWFzZUNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUNvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgIHsgbmFtZSB9ID0ganNvbjtcblxuICAoe2NvbnRleHR9ID0ganNvbik7IC8vL1xuXG4gIGxldCB7IGVudHJpZXMgfSA9IGpzb247XG5cbiAganNvbiA9IGVudHJpZXM7IC8vL1xuXG4gIGVudHJpZXMgPSBFbnRyaWVzLmZyb21KU09OKGpzb24pO1xuXG4gIGNvbnN0IGNvbnRleHRKU09OID0gY29udGV4dDsgIC8vL1xuXG4gIGpzb24gPSBjb250ZXh0SlNPTjsgLy8vXG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBSZWxlYXNlQ29udGV4dC5mcm9tTG9nTmFtZUpTT05BbmRFbnRyaWVzKGxvZywgbmFtZSwganNvbiwgZW50cmllcyk7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdChwcm9qZWN0LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgbWV0YUpTT05GaWxlID0gcHJvamVjdC5nZXRNZXRhSlNPTkZpbGUoKTtcblxuICBpZiAobWV0YUpTT05GaWxlICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YUpTT05GaWxlVmFsaWQgPSBpc01ldGFKU09ORmlsZVZhbGlkKG1ldGFKU09ORmlsZSk7XG5cbiAgICBpZiAobWV0YUpTT05GaWxlVmFsaWQpIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICBuYW1lID0gcHJvamVjdC5nZXROYW1lKCksXG4gICAgICAgIGpzb24gPSBudWxsLFxuICAgICAgICBlbnRyaWVzID0gcHJvamVjdC5nZXRFbnRyaWVzKCk7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0ID0gUmVsZWFzZUNvbnRleHQuZnJvbUxvZ05hbWVKU09OQW5kRW50cmllcyhsb2csIG5hbWUsIGpzb24sIGVudHJpZXMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0LCBjYWxsYmFjaykge1xuICBjb25zdCB7IGxvZywgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVycm9yID0gbnVsbCxcbiAgICAgICAgICByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgbGV0IHN1Y2Nlc3M7XG5cbiAgICBpZiAocmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICBsb2cuZGVidWcoYEFscmVhZHkgY3JlYXRlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBjb250ZXh0LmApO1xuXG4gICAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGg7XG5cbiAgaWYgKGRlcGVuZGVudE5hbWVzTGVuZ3RoID09PSAwKSB7XG4gICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuLi5gKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZTsgIC8vL1xuXG4gICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICB9XG5cbiAgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0LCAoZXJyb3IsIHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBjaGVja1JlbGVhc2VDb250ZXh0Q3JlYXRlZChyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgICBpZiAoIXJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbnVsbCxcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcblxuICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdID0gcmVsZWFzZUNvbnRleHQ7XG5cbiAgICBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgKGVycm9yLCBzdWNjZXNzKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGxvZy53YXJuaW5nKGAuLi51bmFibGUgdG8gY3JlYXRlIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuYCk7XG5cbiAgICAgICAgY2FsbGJhY2soZXJyb3IsIHN1Y2Nlc3MpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbG9nLmRlYnVnKGAuLi5jcmVhdGVkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQuYCk7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcbiAgICB9KTtcbiAgfSwgY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgPT09IG51bGwpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dDtcblxuICAgIGxvZy53YXJuaW5nKGBVbmFibGUgdG8gaW5pdGlhbGlzZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBjb250ZXh0IGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGNyZWF0ZWQuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzSW5pdGlhbGlzZWQoKTtcblxuICAgIGlmICghcmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCkge1xuICAgICAgaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0cyA9IHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC4uLmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cyk7XG5cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uaW5pdGlhbGlzZWQgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgY29udGV4dC5gKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0cyA9IFtdLFxuICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0LCAgLy8vXG4gICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0cyA9IFtcbiAgICAgICAgICByZW1haW5pbmdSZWxlYXNlQ29udGV4dFxuICAgICAgICBdO1xuXG4gIGxldCByZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMubGVuZ3RoO1xuXG4gIHdoaWxlIChyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNMZW5ndGggPiAwKSB7XG4gICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuc2hpZnQoKSxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0OyAgLy8vXG5cbiAgICByZWxlYXNlQ29udGV4dHMucHVzaChyZWxlYXNlQ29udGV4dCk7XG5cbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICAgIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0sXG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KSxcbiAgICAgICAgICAgIHJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgPSByZW1haW5pbmdSZWxlYXNlQ29udGV4dHMuaW5jbHVkZXMocmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICBpZiAoIXJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQgJiYgIXJlbWFpbmluZ1JlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nUmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgICAgICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLnB1c2gocmVtYWluaW5nUmVsZWFzZUNvbnRleHQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoID0gcmVtYWluaW5nUmVsZWFzZUNvbnRleHRzLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZUNvbnRleHRDcmVhdGVkKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWU7IC8vL1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZSAnJHtyZWxlYXNlTmFtZX0nIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLiBPciB0aGVyZSBjb3VsZCBiZSBhIGRlcGVuZGVuY3kgbWlzbWF0Y2guYCk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRDcmVhdGVkO1xufVxuXG5mdW5jdGlvbiBjaGVja0N5Y2xpY0RlcGVuZGVuY3lFeGlzdHMoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW50TmFtZXMuaW5jbHVkZXMoZGVwZW5kZW5jeU5hbWUpLFxuICAgICAgICBjeWNsaWNEZXBlbmRlbmN5RXhpc3RzID0gZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lOyAgLy8vXG5cbiAgaWYgKGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHMpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBmaXJzdERlcGVuZGVudE5hbWUgPSBmaXJzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzID0gWyAgLy8vXG4gICAgICAgICAgICAuLi5kZXBlbmRlbnROYW1lcyxcbiAgICAgICAgICAgIGZpcnN0RGVwZW5kZW50TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzU3RyaW5nID0gZGVwZW5kZW5jeU5hbWVzLmpvaW4oYCcgLT4gJ2ApO1xuXG4gICAgbG9nLndhcm5pbmcoYFRoZXJlIGlzIGEgY3ljbGljIGRlcGVuZGVuY3ksICcke2RlcGVuZGVuY3lOYW1lc1N0cmluZ30nLmApO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY3lFeGlzdHM7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gdHJ1ZTtcblxuICBjb25zdCBlbnRyaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RW50cmllcygpLFxuICAgICAgICBzaG9ydGVuZWRWZXJzaW9uID0gZGVwZW5kZW5jeS5nZXRTaG9ydGVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IGVudHJpZXMubWF0Y2hTaG9ydGVuZWRWZXJzaW9uKHNob3J0ZW5lZFZlcnNpb24pO1xuXG4gICAgaWYgKCFlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIHZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5nZXRWZXJzaW9uKCksXG4gICAgICAgICAgICBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lLCAgLy8vXG4gICAgICAgICAgICB2ZXJzaW9uU3RyaW5nID0gdmVyc2lvbi50b1N0cmluZygpLFxuICAgICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgICAgbG9nLndhcm5pbmcoYFRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IHJlcXVpcmVzIHRoZSAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeSBidXQgYSBjb250ZXh0IHdpdGggdmVyc2lvbiAnJHt2ZXJzaW9uU3RyaW5nfScgd2FzIHByb3ZpZGVkLmApO1xuXG4gICAgICByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW50TmFtZXMgPSBbIC4uLmRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbmN5TmFtZSBdOyAgLy8vXG5cbiAgZGVwZW5kZW5jaWVzLmFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5LCBuZXh0LCBkb25lKSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeUV4aXN0cyA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jeUV4aXN0cyhkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcyk7XG5cbiAgICBpZiAoY3ljbGljRGVwZW5kZW5jeUV4aXN0cykge1xuICAgICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuXG4gICAgICBjYWxsYmFjayhlcnJvciwgc3VjY2Vzcyk7XG5cbiAgICAgIGNhbGxiYWNrID0gbnVsbDtcblxuICAgICAgZG9uZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQsIChlcnJvciwgc3VjY2VzcykgPT4ge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcblxuICAgICAgICBjYWxsYmFjayA9IG51bGw7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcblxuICAgICAgICBjYWxsYmFjayA9IG51bGw7XG5cbiAgICAgICAgZG9uZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbmV4dCgpO1xuICAgIH0pO1xuICB9LCBkb25lKTtcblxuICBmdW5jdGlvbiBkb25lKCkge1xuICAgIGlmIChjYWxsYmFjayAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7XG5cbiAgICAgIGNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdGlhbGlzZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgcmVsZWFzZUNvbnRleHQsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7ICAvLy9cbiAgICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0IiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSIsInJlbGVhc2VDb250ZXh0RnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0IiwibGFzdCIsImFycmF5VXRpbGl0aWVzIiwibG9hZFByb2plY3QiLCJvY2NhbUZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJjb25jYXRlbmF0ZVBhdGhzIiwicGF0aFV0aWxpdGllcyIsImlzTWV0YUpTT05GaWxlVmFsaWQiLCJtZXRhSlNPTlV0aWxpdGllcyIsInJlYWRGaWxlIiwibmVjZXNzYXJ5RmlsZVN5c3RlbVV0aWxpdGllcyIsImlzRW50cnlGaWxlIiwiY2hlY2tFbnRyeUV4aXN0cyIsImRlcGVuZGVuY3kiLCJjb250ZXh0IiwiY2FsbGJhY2siLCJwcm9qZWN0c0RpcmVjdG9yeVBhdGgiLCJwcm9jZXNzIiwiY3dkIiwiZGVwZW5kZW5jeU5hbWUiLCJnZXROYW1lIiwiZW50cnlQYXRoIiwiZW50cnlFeGlzdHMiLCJlcnJvciIsInJlbGVhc2VDb250ZXh0IiwiZW50cnlGaWxlIiwiZmlsZVBhdGgiLCJjb250ZW50IiwianNvblN0cmluZyIsImpzb24iLCJKU09OIiwicGFyc2UiLCJwcm9qZWN0TmFtZSIsInByb2plY3QiLCJsb2ciLCJuYW1lIiwiZW50cmllcyIsIkVudHJpZXMiLCJmcm9tSlNPTiIsImNvbnRleHRKU09OIiwiUmVsZWFzZUNvbnRleHQiLCJmcm9tTG9nTmFtZUpTT05BbmRFbnRyaWVzIiwibWV0YUpTT05GaWxlIiwiZ2V0TWV0YUpTT05GaWxlIiwibWV0YUpTT05GaWxlVmFsaWQiLCJnZXRFbnRyaWVzIiwiZGVwZW5kZW50TmFtZXMiLCJyZWxlYXNlQ29udGV4dE1hcCIsInJlbGVhc2VOYW1lIiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJzdWNjZXNzIiwiZGVidWciLCJkZXBlbmRlbmN5U3RyaW5nIiwiYXNTdHJpbmciLCJkZXBlbmRlbnROYW1lc0xlbmd0aCIsImxlbmd0aCIsImluZm8iLCJsYXN0RGVwZW5kZW50TmFtZSIsImRlcGVuZGVudE5hbWUiLCJyZWxlYXNlQ29udGV4dENyZWF0ZWQiLCJjaGVja1JlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJ3YXJuaW5nIiwicmVsZWFzZUNvbnRleHRJbml0aWFsaXNlZCIsImlzSW5pdGlhbGlzZWQiLCJpbml0aWFsaXNlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwiaW5pdGlhbGlzZSIsInJlbWFpbmluZ1JlbGVhc2VDb250ZXh0IiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHRzIiwicmVtYWluaW5nUmVsZWFzZUNvbnRleHRzTGVuZ3RoIiwic2hpZnQiLCJwdXNoIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiaW5jbHVkZXMiLCJyZW1haW5pbmdSZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0IiwiY2hlY2tDeWNsaWNEZXBlbmRlbmN5RXhpc3RzIiwiZGVwZW5kZW50TmFtZXNJbmNsdWRlc0RlcGVuZGVuY3lOYW1lIiwiY3ljbGljRGVwZW5kZW5jeUV4aXN0cyIsImZpcnN0RGVwZW5kZW50TmFtZSIsImZpcnN0IiwiZGVwZW5kZW5jeU5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzU3RyaW5nIiwiam9pbiIsInNob3J0ZW5lZFZlcnNpb24iLCJnZXRTaG9ydGVkVmVyc2lvbiIsImVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInZlcnNpb25TdHJpbmciLCJ0b1N0cmluZyIsImFzeW5jaHJvbm91c0ZvckVhY2hEZXBlbmRlbmN5IiwibmV4dCIsImRvbmUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXVHZ0JBO2VBQUFBOztRQTJGQUM7ZUFBQUE7O1FBbkxBQztlQUFBQTs7UUE4Q0FDO2VBQUFBOztRQXFCQUM7ZUFBQUE7Ozt5QkFoRmU7NkJBQ1k7K0JBQ3FCOzhEQUdyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUzQixJQUFNLEFBQUVDLE9BQVNDLHlCQUFjLENBQXZCRCxNQUNGLEFBQUVFLGNBQWdCQyxvQ0FBd0IsQ0FBeENELGFBQ0YsQUFBRUUsbUJBQXFCQyx3QkFBYSxDQUFsQ0Qsa0JBQ0YsQUFBRUUsc0JBQXdCQyxnQ0FBaUIsQ0FB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
|
package/lib/utilities/string.js
CHANGED
|
@@ -20,6 +20,9 @@ _export(exports, {
|
|
|
20
20
|
},
|
|
21
21
|
get tokensAsString () {
|
|
22
22
|
return tokensAsString;
|
|
23
|
+
},
|
|
24
|
+
get trimTrailingSlash () {
|
|
25
|
+
return trimTrailingSlash;
|
|
23
26
|
}
|
|
24
27
|
});
|
|
25
28
|
var _constants = require("../constants");
|
|
@@ -57,6 +60,10 @@ function nodeAsTokens(node, tokens) {
|
|
|
57
60
|
}
|
|
58
61
|
return tokens;
|
|
59
62
|
}
|
|
63
|
+
function trimTrailingSlash(string) {
|
|
64
|
+
string = string.replace(/\/$/, _constants.EMPTY_STRING); ///
|
|
65
|
+
return string;
|
|
66
|
+
}
|
|
60
67
|
function trimString(string) {
|
|
61
68
|
string = string.replace(/\s+$/, _constants.EMPTY_STRING); ///
|
|
62
69
|
return string;
|
|
@@ -74,4 +81,4 @@ function nonTerminalNodeAsTokens(nonTerminalNode, tokens) {
|
|
|
74
81
|
return tokens;
|
|
75
82
|
}
|
|
76
83
|
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlQXNTdHJpbmcobm9kZSwgdG9rZW5zKSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgdG9rZW5zID0gbm9kZUFzVG9rZW5zKG5vZGUsIHRva2Vucyk7ICAvLy9cblxuICBzdHJpbmcgPSB0b2tlbnNBc1N0cmluZyh0b2tlbnMpO1xuXG4gIHN0cmluZyA9IHRyaW1TdHJpbmcoc3RyaW5nKTsgIC8vL1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc0FzU3RyaW5nKG5vZGVzLCB0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXMucmVkdWNlKChzdHJpbmcsIG5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlU3RyaW5nID0gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucyk7XG5cbiAgICBzdHJpbmcgPSAoc3RyaW5nID09PSBudWxsKSA/
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlQXNTdHJpbmcobm9kZSwgdG9rZW5zKSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgdG9rZW5zID0gbm9kZUFzVG9rZW5zKG5vZGUsIHRva2Vucyk7ICAvLy9cblxuICBzdHJpbmcgPSB0b2tlbnNBc1N0cmluZyh0b2tlbnMpO1xuXG4gIHN0cmluZyA9IHRyaW1TdHJpbmcoc3RyaW5nKTsgIC8vL1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc0FzU3RyaW5nKG5vZGVzLCB0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gbm9kZXMucmVkdWNlKChzdHJpbmcsIG5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlU3RyaW5nID0gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucyk7XG5cbiAgICBzdHJpbmcgPSAoc3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICBub2RlU3RyaW5nIDpcbiAgICAgICAgICAgICAgICBgJHtzdHJpbmd9LCAke25vZGVTdHJpbmd9YDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbnNBc1N0cmluZyh0b2tlbnMpIHtcbiAgY29uc3Qgc3RyaW5nID0gdG9rZW5zLnJlZHVjZSgoc3RyaW5nLCB0b2tlbikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0b2tlbi5nZXRDb250ZW50KCk7XG5cbiAgICBzdHJpbmcgPSBgJHtzdHJpbmd9JHtjb250ZW50fWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9LCBFTVBUWV9TVFJJTkcpO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlQXNUb2tlbnMobm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICB0b2tlbnMgPSB0ZXJtaW5hbE5vZGVBc1Rva2Vucyh0ZXJtaW5hbE5vZGUsIHRva2Vucyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgLy8vXG5cbiAgICB0b2tlbnMgPSBub25UZXJtaW5hbE5vZGVBc1Rva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2Vucyk7XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJpbVRyYWlsaW5nU2xhc2goc3RyaW5nKSB7XG4gIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9cXC8kLywgRU1QVFlfU1RSSU5HKTsgLy8vXG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gdHJpbVN0cmluZyhzdHJpbmcpIHtcbiAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoL1xccyskLywgRU1QVFlfU1RSSU5HKTsgIC8vL1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHRlcm1pbmFsTm9kZUFzVG9rZW5zKHRlcm1pbmFsTm9kZSwgdG9rZW5zKSB7XG4gIGNvbnN0IHNpZ25pZmljYW50VG9rZW4gPSB0ZXJtaW5hbE5vZGUuZ2V0U2lnbmlmaWNhbnRUb2tlbigpLFxuICAgICAgICB0b2tlbiA9IHNpZ25pZmljYW50VG9rZW47IC8vL1xuXG4gIHRva2VucyA9IFsgIC8vL1xuICAgIHRva2VuXG4gIF07XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cblxuZnVuY3Rpb24gbm9uVGVybWluYWxOb2RlQXNUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpIHtcbiAgY29uc3QgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vblRlcm1pbmFsTm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9uVGVybWluYWxOb2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2VucyksXG4gICAgICAgIHN0YXJ0ID0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgsIC8vL1xuICAgICAgICBlbmQgPSBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICsgMTtcblxuICB0b2tlbnMgPSB0b2tlbnMuc2xpY2Uoc3RhcnQsIGVuZCk7ICAvLy9cblxuICByZXR1cm4gdG9rZW5zO1xufVxuIl0sIm5hbWVzIjpbIm5vZGVBc1N0cmluZyIsIm5vZGVBc1Rva2VucyIsIm5vZGVzQXNTdHJpbmciLCJ0b2tlbnNBc1N0cmluZyIsInRyaW1UcmFpbGluZ1NsYXNoIiwibm9kZSIsInRva2VucyIsInN0cmluZyIsInRyaW1TdHJpbmciLCJub2RlcyIsInJlZHVjZSIsIm5vZGVTdHJpbmciLCJ0b2tlbiIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwiRU1QVFlfU1RSSU5HIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQXNUb2tlbnMiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVBc1Rva2VucyIsInJlcGxhY2UiLCJzaWduaWZpY2FudFRva2VuIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbiIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInN0YXJ0IiwiZW5kIiwic2xpY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUlnQkE7ZUFBQUE7O1FBc0NBQztlQUFBQTs7UUExQkFDO2VBQUFBOztRQWNBQztlQUFBQTs7UUE0QkFDO2VBQUFBOzs7eUJBeERhO0FBRXRCLFNBQVNKLGFBQWFLLElBQUksRUFBRUMsTUFBTTtJQUN2QyxJQUFJQztJQUVKRCxTQUFTTCxhQUFhSSxNQUFNQyxTQUFVLEdBQUc7SUFFekNDLFNBQVNKLGVBQWVHO0lBRXhCQyxTQUFTQyxXQUFXRCxTQUFVLEdBQUc7SUFFakMsT0FBT0E7QUFDVDtBQUVPLFNBQVNMLGNBQWNPLEtBQUssRUFBRUgsTUFBTTtJQUN6QyxJQUFNQyxTQUFTRSxNQUFNQyxNQUFNLENBQUMsU0FBQ0gsUUFBUUY7UUFDbkMsSUFBTU0sYUFBYVgsYUFBYUssTUFBTUM7UUFFdENDLFNBQVMsQUFBQ0EsV0FBVyxPQUNWSSxhQUNDLEFBQUMsR0FBYUEsT0FBWEosUUFBTyxNQUFlLE9BQVhJO1FBRTFCLE9BQU9KO0lBQ1QsR0FBRztJQUVILE9BQU9BO0FBQ1Q7QUFFTyxTQUFTSixlQUFlRyxNQUFNO0lBQ25DLElBQU1DLFNBQVNELE9BQU9JLE1BQU0sQ0FBQyxTQUFDSCxRQUFRSztRQUNwQyxJQUFNQyxVQUFVRCxNQUFNRSxVQUFVO1FBRWhDUCxTQUFTLEFBQUMsR0FBV00sT0FBVE4sUUFBaUIsT0FBUk07UUFFckIsT0FBT047SUFDVCxHQUFHUSx1QkFBWTtJQUVmLE9BQU9SO0FBQ1Q7QUFFTyxTQUFTTixhQUFhSSxJQUFJLEVBQUVDLE1BQU07SUFDdkMsSUFBTVUsbUJBQW1CWCxLQUFLWSxjQUFjO0lBRTVDLElBQUlELGtCQUFrQjtRQUNwQixJQUFNRSxlQUFlYixNQUFPLEdBQUc7UUFFL0JDLFNBQVNhLHFCQUFxQkQsY0FBY1o7SUFDOUMsT0FBTztRQUNMLElBQU1jLGtCQUFrQmYsTUFBTSxHQUFHO1FBRWpDQyxTQUFTZSx3QkFBd0JELGlCQUFpQmQ7SUFDcEQ7SUFFQSxPQUFPQTtBQUNUO0FBRU8sU0FBU0Ysa0JBQWtCRyxNQUFNO0lBQ3RDQSxTQUFTQSxPQUFPZSxPQUFPLENBQUMsT0FBT1AsdUJBQVksR0FBRyxHQUFHO0lBRWpELE9BQU9SO0FBQ1Q7QUFFQSxTQUFTQyxXQUFXRCxNQUFNO0lBQ3hCQSxTQUFTQSxPQUFPZSxPQUFPLENBQUMsUUFBUVAsdUJBQVksR0FBSSxHQUFHO0lBRW5ELE9BQU9SO0FBQ1Q7QUFFQSxTQUFTWSxxQkFBcUJELFlBQVksRUFBRVosTUFBTTtJQUNoRCxJQUFNaUIsbUJBQW1CTCxhQUFhTSxtQkFBbUIsSUFDbkRaLFFBQVFXLGtCQUFrQixHQUFHO0lBRW5DakIsU0FBUztRQUNQTTtLQUNEO0lBRUQsT0FBT047QUFDVDtBQUVBLFNBQVNlLHdCQUF3QkQsZUFBZSxFQUFFZCxNQUFNO0lBQ3RELElBQU1tQiw0QkFBNEJMLGdCQUFnQk0sNEJBQTRCLENBQUNwQixTQUN6RXFCLDZCQUE2QlAsZ0JBQWdCUSw2QkFBNkIsQ0FBQ3RCLFNBQzNFdUIsUUFBUUYsNEJBQ1JHLE1BQU1MLDRCQUE0QjtJQUV4Q25CLFNBQVNBLE9BQU95QixLQUFLLENBQUNGLE9BQU9DLE1BQU8sR0FBRztJQUV2QyxPQUFPeEI7QUFDVCJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.369",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"url": "https://github.com/djalbat/occam-verify-cli"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"argumentative": "^2.0.
|
|
13
|
+
"argumentative": "^2.0.35",
|
|
14
14
|
"necessary": "^15.0.1",
|
|
15
15
|
"occam-custom-grammars": "^5.0.1308",
|
|
16
16
|
"occam-entities": "^1.0.424",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"occam-query": "^4.1.118"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@swc/core": "
|
|
25
|
+
"@swc/core": "1.13.20",
|
|
26
26
|
"watchful-cli": "^1.7.56"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { HELP_OPTION, TAIL_OPTION, FOLLOW_OPTION, VERSION_OPTION, LOG_LEVEL_OPTION } from "./options";
|
|
4
4
|
|
|
5
5
|
const h = HELP_OPTION,
|
|
6
6
|
t = TAIL_OPTION,
|
|
@@ -8,10 +8,12 @@ const h = HELP_OPTION,
|
|
|
8
8
|
v = VERSION_OPTION,
|
|
9
9
|
l = LOG_LEVEL_OPTION
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
const abbreviations = {
|
|
12
12
|
h,
|
|
13
13
|
t,
|
|
14
14
|
f,
|
|
15
15
|
v,
|
|
16
16
|
l
|
|
17
17
|
};
|
|
18
|
+
|
|
19
|
+
export default abbreviations;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function helpAction() {
|
|
3
|
+
export default function helpAction() {
|
|
4
4
|
console.log(`Usage:
|
|
5
5
|
|
|
6
6
|
verify [<options>] [<command>] [<argument>]
|
|
@@ -28,5 +28,3 @@ Please see the readme file on GitHub:
|
|
|
28
28
|
https://github.com/djalbat/occam-verify-cli
|
|
29
29
|
`);
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
module.exports = helpAction;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { Dependency } from "occam-entities";
|
|
4
|
+
import { releaseUtilities, releaseContextUtilities } from "../../lib/index";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import { trimTrailingSlash } from "../utilities/string";
|
|
7
|
+
import { releaseContextFromDependency } from "../utilities/releaseContext";
|
|
8
8
|
|
|
9
9
|
const { verifyRelease } = releaseUtilities,
|
|
10
10
|
{ createReleaseContext, initialiseReleaseContext } = releaseContextUtilities;
|
|
11
11
|
|
|
12
|
-
function verifyAction(argument, log) {
|
|
12
|
+
export default function verifyAction(argument, log) {
|
|
13
13
|
const name = trimTrailingSlash(argument), ///
|
|
14
14
|
context = {},
|
|
15
15
|
dependency = Dependency.fromName(name),
|
|
@@ -63,8 +63,6 @@ function verifyAction(argument, log) {
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
module.exports = verifyAction;
|
|
67
|
-
|
|
68
66
|
function startClock() {
|
|
69
67
|
let now;
|
|
70
68
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { packageUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import { OCCAM_VERIFY_CLI } from "../constants";
|
|
6
|
+
|
|
7
|
+
const { getVersion } = packageUtilities;
|
|
8
|
+
|
|
9
|
+
export default function versionAction() {
|
|
10
|
+
const version = getVersion(); ///
|
|
11
|
+
|
|
12
|
+
console.log(`${OCCAM_VERIFY_CLI} version ${version}`);
|
|
13
|
+
}
|
package/src/commands.js
ADDED
package/{bin → src}/configure.js
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { DEFAULT_HELP, DEFAULT_VERSION } from "./defaults";
|
|
4
|
+
import { HELP_COMMAND, VERSION_COMMAND } from "./commands";
|
|
5
5
|
|
|
6
|
-
function configure(command, argument, options, main) {
|
|
6
|
+
export default function configure(command, argument, options, main) {
|
|
7
7
|
const { help = DEFAULT_HELP, version = DEFAULT_VERSION } = options;
|
|
8
8
|
|
|
9
9
|
if (false) {
|
|
@@ -16,5 +16,3 @@ function configure(command, argument, options, main) {
|
|
|
16
16
|
|
|
17
17
|
main(command, argument, options);
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
module.exports = configure;
|
package/src/constants.js
CHANGED
|
@@ -11,5 +11,6 @@ export const EMPTY_STRING = "";
|
|
|
11
11
|
export const SINGLE_SPACE = " ";
|
|
12
12
|
export const PROVISIONALLY = "provisionally";
|
|
13
13
|
export const BASE_TYPE_SYMBOL = "<>";
|
|
14
|
+
export const OCCAM_VERIFY_CLI = "Occam Verify-CLI";
|
|
14
15
|
export const BRACKETED_TERM_DEPTH = 2;
|
|
15
16
|
export const BRACKETED_STATEMENT_DEPTH = 2;
|
package/src/defaults.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { levels } from "necessary";
|
|
4
|
+
|
|
5
|
+
const { INFO_LEVEL } = levels;
|
|
6
|
+
|
|
7
|
+
export const DEFAULT_HELP = false;
|
|
8
|
+
export const DEFAULT_TAIL = 10;
|
|
9
|
+
export const DEFAULT_FOLLOW = false;
|
|
10
|
+
export const DEFAULT_VERSION = false;
|
|
11
|
+
export const DEFAULT_LOG_LEVEL = INFO_LEVEL;
|
package/{bin → src}/main.js
RENAMED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { Log } from "../lib/index";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import helpAction from "./action/help";
|
|
6
|
+
import verifyAction from "./action/verify";
|
|
7
|
+
import versionAction from "./action/version";
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
import { NO_COMMAND_GIVEN_MESSAGE } from "./messages";
|
|
10
|
+
import { HELP_COMMAND, VERIFY_COMMAND, VERSION_COMMAND } from "./commands";
|
|
11
|
+
import { DEFAULT_TAIL, DEFAULT_FOLLOW, DEFAULT_LOG_LEVEL } from "./defaults";
|
|
12
12
|
|
|
13
|
-
function main(command, argument, options) {
|
|
13
|
+
export default function main(command, argument, options) {
|
|
14
14
|
const { tail = DEFAULT_TAIL,
|
|
15
15
|
follow = DEFAULT_FOLLOW,
|
|
16
16
|
logLevel = DEFAULT_LOG_LEVEL } = options;
|
|
@@ -63,5 +63,3 @@ function main(command, argument, options) {
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
|
|
67
|
-
module.exports = main;
|
package/src/messages.js
ADDED
package/src/options.js
ADDED
|
@@ -1,10 +1,107 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
|
+
import { Entries, metaJSONUtilities } from "occam-entities";
|
|
5
|
+
import { fileSystemUtilities as occamFileSystemUtilities } from "occam-file-system";
|
|
6
|
+
import { pathUtilities, fileSystemUtilities as necessaryFileSystemUtilities } from "necessary";
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
import ReleaseContext from "../context/release";
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
const { last } = arrayUtilities,
|
|
11
|
+
{ loadProject } = occamFileSystemUtilities,
|
|
12
|
+
{ concatenatePaths } = pathUtilities,
|
|
13
|
+
{ isMetaJSONFileValid } = metaJSONUtilities,
|
|
14
|
+
{ readFile, isEntryFile, checkEntryExists } = necessaryFileSystemUtilities;
|
|
15
|
+
|
|
16
|
+
export function releaseContextFromDependency(dependency, context, callback) {
|
|
17
|
+
const projectsDirectoryPath = process.cwd(), ///
|
|
18
|
+
dependencyName = dependency.getName(),
|
|
19
|
+
entryPath = concatenatePaths(projectsDirectoryPath, dependencyName),
|
|
20
|
+
entryExists = checkEntryExists(entryPath);
|
|
21
|
+
|
|
22
|
+
if (!entryExists) {
|
|
23
|
+
const error = null,
|
|
24
|
+
releaseContext = null;
|
|
25
|
+
|
|
26
|
+
callback(error, releaseContext);
|
|
27
|
+
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
let releaseContext = null;
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
const entryFile = isEntryFile(entryPath);
|
|
35
|
+
|
|
36
|
+
if (entryFile) {
|
|
37
|
+
const filePath = entryPath, ///
|
|
38
|
+
content = readFile(filePath),
|
|
39
|
+
jsonString = content, ///
|
|
40
|
+
json = JSON.parse(jsonString);
|
|
41
|
+
|
|
42
|
+
releaseContext = releaseContextFromJSON(json, context);
|
|
43
|
+
} else {
|
|
44
|
+
const projectName = dependencyName, ///
|
|
45
|
+
project = loadProject(projectName, projectsDirectoryPath);
|
|
46
|
+
|
|
47
|
+
if (project !== null) {
|
|
48
|
+
releaseContext = releaseContextFromProject(project, context);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
} catch (error) {
|
|
52
|
+
callback(error, releaseContext);
|
|
53
|
+
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const error = null;
|
|
58
|
+
|
|
59
|
+
callback(error, releaseContext);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function releaseContextFromJSON(json, context) {
|
|
63
|
+
const { log } = context,
|
|
64
|
+
{ name } = json;
|
|
65
|
+
|
|
66
|
+
({context} = json); ///
|
|
67
|
+
|
|
68
|
+
let { entries } = json;
|
|
69
|
+
|
|
70
|
+
json = entries; ///
|
|
71
|
+
|
|
72
|
+
entries = Entries.fromJSON(json);
|
|
73
|
+
|
|
74
|
+
const contextJSON = context; ///
|
|
75
|
+
|
|
76
|
+
json = contextJSON; ///
|
|
77
|
+
|
|
78
|
+
const releaseContext = ReleaseContext.fromLogNameJSONAndEntries(log, name, json, entries);
|
|
79
|
+
|
|
80
|
+
return releaseContext;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function releaseContextFromProject(project, context) {
|
|
84
|
+
let releaseContext = null;
|
|
85
|
+
|
|
86
|
+
const metaJSONFile = project.getMetaJSONFile();
|
|
87
|
+
|
|
88
|
+
if (metaJSONFile !== null) {
|
|
89
|
+
const metaJSONFileValid = isMetaJSONFileValid(metaJSONFile);
|
|
90
|
+
|
|
91
|
+
if (metaJSONFileValid) {
|
|
92
|
+
const { log } = context,
|
|
93
|
+
name = project.getName(),
|
|
94
|
+
json = null,
|
|
95
|
+
entries = project.getEntries();
|
|
96
|
+
|
|
97
|
+
releaseContext = ReleaseContext.fromLogNameJSONAndEntries(log, name, json, entries);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return releaseContext;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export function createReleaseContext(dependency, dependentNames, context, callback) {
|
|
8
105
|
const { log, releaseContextMap } = context,
|
|
9
106
|
dependencyName = dependency.getName(),
|
|
10
107
|
releaseName = dependencyName, ///
|
|
@@ -95,7 +192,7 @@ function createReleaseContext(dependency, dependentNames, context, callback) {
|
|
|
95
192
|
}, context);
|
|
96
193
|
}
|
|
97
194
|
|
|
98
|
-
function initialiseReleaseContext(dependency, context) {
|
|
195
|
+
export function initialiseReleaseContext(dependency, context) {
|
|
99
196
|
const { releaseContextMap } = context,
|
|
100
197
|
dependencyName = dependency.getName(),
|
|
101
198
|
releaseName = dependencyName, ///
|
|
@@ -123,11 +220,6 @@ function initialiseReleaseContext(dependency, context) {
|
|
|
123
220
|
}
|
|
124
221
|
}
|
|
125
222
|
|
|
126
|
-
export default {
|
|
127
|
-
createReleaseContext,
|
|
128
|
-
initialiseReleaseContext
|
|
129
|
-
};
|
|
130
|
-
|
|
131
223
|
function retrieveReleaseContexts(releaseContext, releaseContextMap) {
|
|
132
224
|
const releaseContexts = [],
|
|
133
225
|
remainingReleaseContext = releaseContext, ///
|
package/src/utilities/string.js
CHANGED
|
@@ -56,6 +56,12 @@ export function nodeAsTokens(node, tokens) {
|
|
|
56
56
|
return tokens;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
export function trimTrailingSlash(string) {
|
|
60
|
+
string = string.replace(/\/$/, EMPTY_STRING); ///
|
|
61
|
+
|
|
62
|
+
return string;
|
|
63
|
+
}
|
|
64
|
+
|
|
59
65
|
function trimString(string) {
|
|
60
66
|
string = string.replace(/\s+$/, EMPTY_STRING); ///
|
|
61
67
|
|
package/bin/action/version.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const { packageUtilities } = require("necessary");
|
|
4
|
-
|
|
5
|
-
const { OCCAM_VERIFY_CLI } = require("../constants");
|
|
6
|
-
|
|
7
|
-
const { getVersion } = packageUtilities;
|
|
8
|
-
|
|
9
|
-
function versionAction() {
|
|
10
|
-
const version = getVersion(); ///
|
|
11
|
-
|
|
12
|
-
console.log(`${OCCAM_VERIFY_CLI} version ${version}`);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
module.exports = versionAction;
|