occam-languages 0.0.224 → 0.0.226
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.
|
@@ -12,6 +12,9 @@ _export(exports, {
|
|
|
12
12
|
get default () {
|
|
13
13
|
return _default;
|
|
14
14
|
},
|
|
15
|
+
get releaseContextFromDependency () {
|
|
16
|
+
return releaseContextFromDependency;
|
|
17
|
+
},
|
|
15
18
|
get releaseContextFromJSON () {
|
|
16
19
|
return releaseContextFromJSON;
|
|
17
20
|
},
|
|
@@ -23,6 +26,8 @@ _export(exports, {
|
|
|
23
26
|
}
|
|
24
27
|
});
|
|
25
28
|
const _occammodel = require("occam-model");
|
|
29
|
+
const _occamserver = require("occam-server");
|
|
30
|
+
const _necessary = require("necessary");
|
|
26
31
|
const _release = /*#__PURE__*/ _interop_require_default(require("../context/release"));
|
|
27
32
|
const _customGrammar = require("../utilities/customGrammar");
|
|
28
33
|
function _interop_require_default(obj) {
|
|
@@ -30,7 +35,7 @@ function _interop_require_default(obj) {
|
|
|
30
35
|
default: obj
|
|
31
36
|
};
|
|
32
37
|
}
|
|
33
|
-
const { isMetaJSONFileValid } = _occammodel.metaJSONUtilities;
|
|
38
|
+
const { loadProject } = _occamserver.fileSystemUtilities, { concatenatePaths } = _necessary.pathUtilities, { isMetaJSONFileValid } = _occammodel.metaJSONUtilities, { readFile, isEntryFile, checkEntryExists } = _necessary.fileSystemUtilities;
|
|
34
39
|
function releaseContextFromJSON(json, context) {
|
|
35
40
|
const { log, callback } = context, { name } = json;
|
|
36
41
|
let { entries } = json;
|
|
@@ -64,10 +69,26 @@ function releaseContextFromRelease(release, context) {
|
|
|
64
69
|
}
|
|
65
70
|
return releaseContext;
|
|
66
71
|
}
|
|
72
|
+
async function releaseContextFromDependency(dependency, context) {
|
|
73
|
+
let releaseContext = null;
|
|
74
|
+
const { projectsDirectoryPath } = context, dependencyName = dependency.getName(), entryPath = concatenatePaths(projectsDirectoryPath, dependencyName), entryExists = checkEntryExists(entryPath);
|
|
75
|
+
if (entryExists) {
|
|
76
|
+
const entryFile = isEntryFile(entryPath);
|
|
77
|
+
if (entryFile) {
|
|
78
|
+
const filePath = entryPath, content = readFile(filePath), jsonString = content, json = JSON.parse(jsonString);
|
|
79
|
+
releaseContext = releaseContextFromJSON(json, context);
|
|
80
|
+
} else {
|
|
81
|
+
const projectName = dependencyName, project = loadProject(projectName, projectsDirectoryPath);
|
|
82
|
+
releaseContext = releaseContextFromProject(project, context);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return releaseContext;
|
|
86
|
+
}
|
|
67
87
|
const _default = {
|
|
68
88
|
releaseContextFromJSON,
|
|
69
89
|
releaseContextFromProject,
|
|
70
|
-
releaseContextFromRelease
|
|
90
|
+
releaseContextFromRelease,
|
|
91
|
+
releaseContextFromDependency
|
|
71
92
|
};
|
|
72
93
|
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVudHJpZXMsIG1ldGFKU09OVXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLW1vZGVsXCI7XG5pbXBvcnQgeyBmaWxlU3lzdGVtVXRpbGl0aWVzIGFzIG9jY2FtRmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1zZXJ2ZXJcIjtcbmltcG9ydCB7IHBhdGhVdGlsaXRpZXMsIGZpbGVTeXN0ZW1VdGlsaXRpZXMgYXMgbmVjZXNzYXJ5RmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IFJlbGVhc2VDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3JlbGVhc2VcIjtcblxuaW1wb3J0IHsgY3VzdG9tR3JhbW1hckZyb21OYW1lQW5kRW50cmllcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY3VzdG9tR3JhbW1hclwiO1xuXG5jb25zdCB7IGxvYWRQcm9qZWN0IH0gPSBvY2NhbUZpbGVTeXN0ZW1VdGlsaXRpZXMsXG4gICAgICB7IGNvbmNhdGVuYXRlUGF0aHMgfSA9IHBhdGhVdGlsaXRpZXMsXG4gICAgICB7IGlzTWV0YUpTT05GaWxlVmFsaWQgfSA9IG1ldGFKU09OVXRpbGl0aWVzLFxuICAgICAgeyByZWFkRmlsZSwgaXNFbnRyeUZpbGUsIGNoZWNrRW50cnlFeGlzdHMgfSA9IG5lY2Vzc2FyeUZpbGVTeXN0ZW1VdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxlYXNlQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBsb2csIGNhbGxiYWNrIH0gPSBjb250ZXh0LFxuICAgICAgICB7IG5hbWUgfSA9IGpzb247XG5cbiAgbGV0IHsgZW50cmllcyB9ID0ganNvbjtcblxuICAoe2NvbnRleHR9ID0ganNvbik7IC8vL1xuXG4gIGpzb24gPSBlbnRyaWVzOyAvLy9cblxuICBlbnRyaWVzID0gRW50cmllcy5mcm9tSlNPTihqc29uKTtcblxuICBjb25zdCBjb250ZXh0SlNPTiA9IGNvbnRleHQ7ICAvLy9cblxuICBqc29uID0gY29udGV4dEpTT047IC8vL1xuXG4gIGNvbnN0IGN1c3RvbUdyYW1tYXIgPSBjdXN0b21HcmFtbWFyRnJvbU5hbWVBbmRFbnRyaWVzKG5hbWUsIGVudHJpZXMpLFxuICAgICAgICByZWxlYXNlQ29udGV4dCA9IFJlbGVhc2VDb250ZXh0LmZyb21Mb2dOYW1lSlNPTkVudHJpZXNDYWxsYmFja0FuZEN1c3RvbUdyYW1tYXIobG9nLCBuYW1lLCBqc29uLCBlbnRyaWVzLCBjYWxsYmFjaywgY3VzdG9tR3JhbW1hcik7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdChwcm9qZWN0LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dCA9IG51bGw7XG5cbiAgaWYgKHByb2plY3QgIT09IG51bGwpIHtcbiAgICBjb25zdCBtZXRhSlNPTkZpbGUgPSBwcm9qZWN0LmdldE1ldGFKU09ORmlsZSgpO1xuXG4gICAgaWYgKG1ldGFKU09ORmlsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YUpTT05GaWxlVmFsaWQgPSBpc01ldGFKU09ORmlsZVZhbGlkKG1ldGFKU09ORmlsZSk7XG5cbiAgICAgIGlmIChtZXRhSlNPTkZpbGVWYWxpZCkge1xuICAgICAgICBjb25zdCB7IGxvZywgY2FsbGJhY2sgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICAgIG5hbWUgPSBwcm9qZWN0LmdldE5hbWUoKSxcbiAgICAgICAgICAgICAganNvbiA9IG51bGwsXG4gICAgICAgICAgICAgIGVudHJpZXMgPSBwcm9qZWN0LmdldEVudHJpZXMoKSxcbiAgICAgICAgICAgICAgY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXJGcm9tTmFtZUFuZEVudHJpZXMobmFtZSwgZW50cmllcyk7XG5cbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBSZWxlYXNlQ29udGV4dC5mcm9tTG9nTmFtZUpTT05FbnRyaWVzQ2FsbGJhY2tBbmRDdXN0b21HcmFtbWFyKGxvZywgbmFtZSwganNvbiwgZW50cmllcywgY2FsbGJhY2ssIGN1c3RvbUdyYW1tYXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGVhc2VDb250ZXh0RnJvbVJlbGVhc2UocmVsZWFzZSwgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZUNvbnRleHQgPSBudWxsO1xuXG4gIGlmIChyZWxlYXNlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBsb2csIGNhbGxiYWNrIH0gPSBjb250ZXh0LFxuICAgICAgICAgIG5hbWUgPSByZWxlYXNlLmdldE5hbWUoKSxcbiAgICAgICAgICBqc29uID0gbnVsbCxcbiAgICAgICAgICBlbnRyaWVzID0gcmVsZWFzZS5nZXRFbnRyaWVzKCksXG4gICAgICAgICAgY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXJGcm9tTmFtZUFuZEVudHJpZXMobmFtZSwgZW50cmllcyk7XG5cbiAgICByZWxlYXNlQ29udGV4dCA9IFJlbGVhc2VDb250ZXh0LmZyb21Mb2dOYW1lSlNPTkVudHJpZXNDYWxsYmFja0FuZEN1c3RvbUdyYW1tYXIobG9nLCBuYW1lLCBqc29uLCBlbnRyaWVzLCBjYWxsYmFjaywgY3VzdG9tR3JhbW1hcik7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0ID0gbnVsbDtcblxuICBjb25zdCB7IHByb2plY3RzRGlyZWN0b3J5UGF0aCB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgZW50cnlQYXRoID0gY29uY2F0ZW5hdGVQYXRocyhwcm9qZWN0c0RpcmVjdG9yeVBhdGgsIGRlcGVuZGVuY3lOYW1lKSxcbiAgICAgICAgZW50cnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGVudHJ5UGF0aCk7XG5cbiAgaWYgKGVudHJ5RXhpc3RzKSB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoZW50cnlQYXRoKTtcblxuICAgIGlmIChlbnRyeUZpbGUpIHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gZW50cnlQYXRoLCAvLy9cbiAgICAgICAgICAgIGNvbnRlbnQgPSByZWFkRmlsZShmaWxlUGF0aCksXG4gICAgICAgICAgICBqc29uU3RyaW5nID0gY29udGVudCwgLy8vXG4gICAgICAgICAgICBqc29uID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcblxuICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcm9qZWN0TmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgICAgIHByb2plY3QgPSBsb2FkUHJvamVjdChwcm9qZWN0TmFtZSwgcHJvamVjdHNEaXJlY3RvcnlQYXRoKTtcblxuICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0KHByb2plY3QsIGNvbnRleHQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dDtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICByZWxlYXNlQ29udGV4dEZyb21KU09OLFxuICByZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0LFxuICByZWxlYXNlQ29udGV4dEZyb21SZWxlYXNlLFxuICByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5XG59O1xuIl0sIm5hbWVzIjpbInJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kiLCJyZWxlYXNlQ29udGV4dEZyb21KU09OIiwicmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdCIsInJlbGVhc2VDb250ZXh0RnJvbVJlbGVhc2UiLCJsb2FkUHJvamVjdCIsIm9jY2FtRmlsZVN5c3RlbVV0aWxpdGllcyIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwiaXNNZXRhSlNPTkZpbGVWYWxpZCIsIm1ldGFKU09OVXRpbGl0aWVzIiwicmVhZEZpbGUiLCJpc0VudHJ5RmlsZSIsImNoZWNrRW50cnlFeGlzdHMiLCJuZWNlc3NhcnlGaWxlU3lzdGVtVXRpbGl0aWVzIiwianNvbiIsImNvbnRleHQiLCJsb2ciLCJjYWxsYmFjayIsIm5hbWUiLCJlbnRyaWVzIiwiRW50cmllcyIsImZyb21KU09OIiwiY29udGV4dEpTT04iLCJjdXN0b21HcmFtbWFyIiwiY3VzdG9tR3JhbW1hckZyb21OYW1lQW5kRW50cmllcyIsInJlbGVhc2VDb250ZXh0IiwiUmVsZWFzZUNvbnRleHQiLCJmcm9tTG9nTmFtZUpTT05FbnRyaWVzQ2FsbGJhY2tBbmRDdXN0b21HcmFtbWFyIiwicHJvamVjdCIsIm1ldGFKU09ORmlsZSIsImdldE1ldGFKU09ORmlsZSIsIm1ldGFKU09ORmlsZVZhbGlkIiwiZ2V0TmFtZSIsImdldEVudHJpZXMiLCJyZWxlYXNlIiwiZGVwZW5kZW5jeSIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsImRlcGVuZGVuY3lOYW1lIiwiZW50cnlQYXRoIiwiZW50cnlFeGlzdHMiLCJlbnRyeUZpbGUiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJqc29uU3RyaW5nIiwiSlNPTiIsInBhcnNlIiwicHJvamVjdE5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQTBHQTtlQUFBOztRQTdCc0JBO2VBQUFBOztRQTlETkM7ZUFBQUE7O1FBc0JBQztlQUFBQTs7UUF3QkFDO2VBQUFBOzs7NEJBM0QyQjs2QkFDcUI7MkJBQ21CO2dFQUV4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
|
|
@@ -22,13 +22,14 @@ _export(exports, {
|
|
|
22
22
|
return verifyReleaseContexts;
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
|
+
const _occammodel = require("occam-model");
|
|
25
26
|
const _necessary = require("necessary");
|
|
26
27
|
const _asynchronous = require("../utilities/asynchronous");
|
|
27
28
|
const _constants = require("../constants");
|
|
28
29
|
const { last } = _necessary.arrayUtilities;
|
|
29
|
-
async function createReleaseContexts(
|
|
30
|
+
async function createReleaseContexts(dependencyName, context) {
|
|
30
31
|
let releaseContextsCreated = false;
|
|
31
|
-
const dependentNames = [], dependentReleased = false, releaseContextCreated = await createReleaseContext(dependency, dependentNames, dependentReleased, context);
|
|
32
|
+
const name = dependencyName, dependency = _occammodel.Dependency.fromName(name), dependentNames = [], dependentReleased = false, releaseContextCreated = await createReleaseContext(dependency, dependentNames, dependentReleased, context);
|
|
32
33
|
if (releaseContextCreated) {
|
|
33
34
|
releaseContextsCreated = true;
|
|
34
35
|
}
|
|
@@ -203,4 +204,4 @@ function checkProjectDependencyOfPackage(releaseContext, dependentReleased, depe
|
|
|
203
204
|
return projectDependencyOfPackage;
|
|
204
205
|
}
|
|
205
206
|
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeSAgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuaW1wb3J0IHsgU0lOR0xFX1NQQUNFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbnROYW1lcyA9IFtdLFxuICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IGZhbHNlLFxuICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHRzKGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcblxuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCBhc3luY0V2ZXJ5KHJlbGVhc2VDb250ZXh0cywgYXN5bmMgKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGF3YWl0IHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlQ29udGV4dFZlcmlmaWVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNWZXJpZnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHRzLFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzLFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dHNcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCksXG4gICAgICAgIHZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaGFzVmVyaWZpZWQoKTtcblxuICBpZiAocmVsZWFzZWQgfHwgdmVyaWZpZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZTsgLy8vXG5cbiAgICBsb2cuaW5mbyhgVmVyaWZ5aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmaWVzID0gYXdhaXQgcmVsZWFzZUNvbnRleHQudmVyaWZ5KCk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGxvZy5pbmZvKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0LmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRWZXJpZmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKTtcblxuICBsZXQgcmVsZWFzZUNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHRGb3VuZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgY29uc3QgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGgsXG4gICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgIGlmIChkZXBlbmRlbnROYW1lc0xlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSB9ID0gY29udGV4dDtcblxuICAgIHJlbGVhc2VDb250ZXh0ID0gYXdhaXQgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0KTtcbiAgfVxuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0Rm91bmQpIHtcbiAgICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gYXdhaXQgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkKSB7XG4gICAgICAgICAgICBhZGRSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG5cbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgP1xuICAgICAgICBsb2cuZGVidWcoYC4uLmNyZWF0ZWQgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgcGFja2FnZSBjb250ZXh0LmApIDpcbiAgICAgICAgICBsb2cud2FybmluZyhgLi4udW5hYmxlIHRvIGNyZWF0ZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0Q3JlYXRlZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xuXG4gIGNvbnN0IG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSByZWxlYXNlZDsgIC8vL1xuXG4gIGRlcGVuZGVudE5hbWVzID0gWyAuLi5kZXBlbmRlbnROYW1lcywgZGVwZW5kZW50TmFtZSBdOyAgLy8vXG5cbiAgY29uc3QgYXJyYXkgPSBkZXBlbmRlbmNpZXMuZ2V0QXJyYXkoKTtcblxuICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCA9IGF3YWl0IGFzeW5jRXZlcnkoYXJyYXksIGFzeW5jIChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghY3ljbGljRGVwZW5kZW5jeVByZXNlbnQpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IGF3YWl0IGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbnRSZWxlYXNlZCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG59XG5cbmZ1bmN0aW9uIGFkZFJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5wdXNoKHJlbGVhc2VDb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dHMgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmZpbmQoKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWVNYXRjaGVzID0gcmVsZWFzZUNvbnRleHQubWF0Y2hEZXBlbmRlbmN5TmFtZShkZXBlbmRlbmN5TmFtZSk7XG5cbiAgICAgICAgICBpZiAoZGVwZW5kZW5jeU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5mdW5jdGlvbiByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzID0gW10pIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0KSB7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgICByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzKTtcbiAgICB9KTtcblxuICAgIHJlbGVhc2VDb250ZXh0cy51bnNoaWZ0KHJlbGVhc2VDb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0Li4uYCk7XG5cbiAgY29uc3QgeyBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgpO1xuXG4gIGxvZy5kZWJ1ZyhgLi4uaW5pdGlhbGlzZWQgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0LmApO1xufVxuXG5mdW5jdGlvbiBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIGluZGV4ID0gZGVwZW5kZW50TmFtZXMuaW5kZXhPZihkZXBlbmRlbmN5TmFtZSk7XG5cbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVudE5hbWVzID0gZGVwZW5kZW50TmFtZXMuc2xpY2UoaW5kZXgpLFxuICAgICAgICAgIGNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzID0gW1xuICAgICAgICAgICAgLi4uY2lyY3VsYXJEZXBlbmRlbnROYW1lcyxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lOYW1lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZyA9IGNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzLmpvaW4oU0lOR0xFX1NQQUNFKTtcblxuICAgIGxvZy53YXJuaW5nKGBUaGVyZSBpcyBhIGN5Y2xpYyBkZXBlbmRlbmN5LCAnJHtjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZ30nLmApO1xuXG4gICAgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50O1xufVxuXG5mdW5jdGlvbiBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IHRydWU7XG5cbiAgY29uc3Qgc2hvcnRlbmVkVmVyc2lvbiA9IGRlcGVuZGVuY3kuZ2V0U2hvcnRlbmVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0Lm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIGlmICghZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbikge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZUNvbnRleHQuZ2V0VmVyc2lvbigpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZSwgIC8vL1xuICAgICAgICAgICAgdmVyc2lvblN0cmluZyA9IHZlcnNpb24udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCk7XG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCByZXF1aXJlcyB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kgYnV0IGEgY29udGV4dCB3aXRoIHZlcnNpb24gJyR7dmVyc2lvblN0cmluZ30nIHdhcyBwcm92aWRlZC5gKTtcblxuICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeTtcbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSA9IGZhbHNlO1xuXG4gIGlmIChkZXBlbmRlbnRSZWxlYXNlZCkge1xuICAgIGNvbnN0IHVucmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1VucmVsZWFzZWQoKTtcblxuICAgIGlmICh1bnJlbGVhc2VkKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgICAgICBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBuYW1lLC8vL1xuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBkZXBlbmRlbmN5IGlzIGEgcHJvamVjdCB3aGlsc3QgaXRzICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgaXMgYSBwYWNrYWdlLmApO1xuXG4gICAgICBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMiLCJ2ZXJpZnlSZWxlYXNlQ29udGV4dHMiLCJsYXN0IiwiYXJyYXlVdGlsaXRpZXMiLCJkZXBlbmRlbmN5IiwiY29udGV4dCIsInJlbGVhc2VDb250ZXh0c0NyZWF0ZWQiLCJkZXBlbmRlbnROYW1lcyIsImRlcGVuZGVudFJlbGVhc2VkIiwicmVsZWFzZUNvbnRleHRDcmVhdGVkIiwiY3JlYXRlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHMiLCJmb3JFYWNoIiwicmVsZWFzZUNvbnRleHQiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHNWZXJpZnkiLCJhc3luY0V2ZXJ5IiwicmVsZWFzZUNvbnRleHRWZXJpZmllcyIsInZlcmlmeVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZWQiLCJpc1JlbGVhc2VkIiwidmVyaWZpZWQiLCJoYXNWZXJpZmllZCIsImxvZyIsIm5hbWUiLCJnZXROYW1lIiwicmVsZWFzZU5hbWUiLCJpbmZvIiwidmVyaWZpZXMiLCJ2ZXJpZnkiLCJkZXBlbmRlbmN5TmFtZSIsImZpbmRSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0Rm91bmQiLCJkZXBlbmRlbnROYW1lc0xlbmd0aCIsImxlbmd0aCIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsImxhc3REZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50TmFtZSIsInJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kiLCJ3YXJuaW5nIiwicHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UiLCJjaGVja1Byb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlIiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJhZGRSZWxlYXNlQ29udGV4dCIsImRlYnVnIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiYXJyYXkiLCJnZXRBcnJheSIsImN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50IiwiY2hlY2tDeWNsaWNEZXBlbmRlbmN5UHJlc2VudCIsInB1c2giLCJmaW5kIiwiZGVwZW5kZW5jeU5hbWVNYXRjaGVzIiwibWF0Y2hEZXBlbmRlbmN5TmFtZSIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCIsImluY2x1ZGVzIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJ1bnNoaWZ0IiwiRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgiLCJpbml0aWFsaXNlIiwiaW5kZXgiLCJpbmRleE9mIiwiY2lyY3VsYXJEZXBlbmRlbnROYW1lcyIsInNsaWNlIiwiY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXMiLCJjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZyIsImpvaW4iLCJTSU5HTEVfU1BBQ0UiLCJzaG9ydGVuZWRWZXJzaW9uIiwiZ2V0U2hvcnRlbmVkVmVyc2lvbiIsImVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInZlcnNpb25TdHJpbmciLCJ0b1N0cmluZyIsInVucmVsZWFzZWQiLCJpc1VucmVsZWFzZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVNzQkE7ZUFBQUE7O1FBc0N0QjtlQUFBOztRQXhCZ0JDO2VBQUFBOztRQVFNQztlQUFBQTs7OzJCQTdCUzs4QkFFSDsyQkFDQztBQUU3QixNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5QkFBYztBQUV4QixlQUFlSixzQkFBc0JLLFVBQVUsRUFBRUMsT0FBTztJQUM3RCxJQUFJQyx5QkFBeUI7SUFFN0IsTUFBTUMsaUJBQWlCLEVBQUUsRUFDbkJDLG9CQUFvQixPQUNwQkMsd0JBQXdCLE1BQU1DLHFCQUFxQk4sWUFBWUcsZ0JBQWdCQyxtQkFBbUJIO0lBRXhHLElBQUlJLHVCQUF1QjtRQUN6QkgseUJBQXlCO0lBQzNCO0lBRUEsT0FBT0E7QUFDVDtBQUVPLFNBQVNOLDBCQUEwQkssT0FBTztJQUMvQyxNQUFNLEVBQUVNLGVBQWUsRUFBRSxHQUFHTjtJQUU1Qk0sZ0JBQWdCQyxPQUFPLENBQUMsQ0FBQ0M7UUFDdkJDLHlCQUF5QkQsZ0JBQWdCUjtJQUMzQztBQUNGO0FBRU8sZUFBZUosc0JBQXNCSSxPQUFPO0lBQ2pELElBQUlVO0lBRUosTUFBTSxFQUFFSixlQUFlLEVBQUUsR0FBR047SUFFNUJVLHdCQUF3QixNQUFNQyxJQUFBQSx3QkFBVSxFQUFDTCxpQkFBaUIsT0FBT0U7UUFDL0QsTUFBTUkseUJBQXlCLE1BQU1DLHFCQUFxQkwsZ0JBQWdCUjtRQUUxRSxJQUFJWSx3QkFBd0I7WUFDMUIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxPQUFPRjtBQUNUO01BRUEsV0FBZTtJQUNiaEI7SUFDQUM7SUFDQUM7QUFDRjtBQUVBLGVBQWVpQixx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
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEZXBlbmRlbmN5IH0gZnJvbSBcIm9jY2FtLW1vZGVsXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeSAgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuaW1wb3J0IHsgU0lOR0xFX1NQQUNFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3lOYW1lLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gZmFsc2U7XG5cbiAgY29uc3QgbmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAgLy8vXG4gICAgICAgIGRlcGVuZGVuY3kgPSBEZXBlbmRlbmN5LmZyb21OYW1lKG5hbWUpLFxuICAgICAgICBkZXBlbmRlbnROYW1lcyA9IFtdLFxuICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IGZhbHNlLFxuICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHRzKGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcblxuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCBhc3luY0V2ZXJ5KHJlbGVhc2VDb250ZXh0cywgYXN5bmMgKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGF3YWl0IHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlQ29udGV4dFZlcmlmaWVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNWZXJpZnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHRzLFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzLFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dHNcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCksXG4gICAgICAgIHZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaGFzVmVyaWZpZWQoKTtcblxuICBpZiAocmVsZWFzZWQgfHwgdmVyaWZpZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZTsgLy8vXG5cbiAgICBsb2cuaW5mbyhgVmVyaWZ5aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmaWVzID0gYXdhaXQgcmVsZWFzZUNvbnRleHQudmVyaWZ5KCk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGxvZy5pbmZvKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0LmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRWZXJpZmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKTtcblxuICBsZXQgcmVsZWFzZUNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHRGb3VuZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgY29uc3QgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGgsXG4gICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgIGlmIChkZXBlbmRlbnROYW1lc0xlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSB9ID0gY29udGV4dDtcblxuICAgIHJlbGVhc2VDb250ZXh0ID0gYXdhaXQgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0KTtcbiAgfVxuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0Rm91bmQpIHtcbiAgICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gYXdhaXQgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkKSB7XG4gICAgICAgICAgICBhZGRSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG5cbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgP1xuICAgICAgICBsb2cuZGVidWcoYC4uLmNyZWF0ZWQgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgcGFja2FnZSBjb250ZXh0LmApIDpcbiAgICAgICAgICBsb2cud2FybmluZyhgLi4udW5hYmxlIHRvIGNyZWF0ZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0Q3JlYXRlZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xuXG4gIGNvbnN0IG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSByZWxlYXNlZDsgIC8vL1xuXG4gIGRlcGVuZGVudE5hbWVzID0gWyAuLi5kZXBlbmRlbnROYW1lcywgZGVwZW5kZW50TmFtZSBdOyAgLy8vXG5cbiAgY29uc3QgYXJyYXkgPSBkZXBlbmRlbmNpZXMuZ2V0QXJyYXkoKTtcblxuICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCA9IGF3YWl0IGFzeW5jRXZlcnkoYXJyYXksIGFzeW5jIChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghY3ljbGljRGVwZW5kZW5jeVByZXNlbnQpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IGF3YWl0IGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbnRSZWxlYXNlZCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG59XG5cbmZ1bmN0aW9uIGFkZFJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5wdXNoKHJlbGVhc2VDb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dHMgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmZpbmQoKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWVNYXRjaGVzID0gcmVsZWFzZUNvbnRleHQubWF0Y2hEZXBlbmRlbmN5TmFtZShkZXBlbmRlbmN5TmFtZSk7XG5cbiAgICAgICAgICBpZiAoZGVwZW5kZW5jeU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5mdW5jdGlvbiByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzID0gW10pIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0KSB7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgICByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzKTtcbiAgICB9KTtcblxuICAgIHJlbGVhc2VDb250ZXh0cy51bnNoaWZ0KHJlbGVhc2VDb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0Li4uYCk7XG5cbiAgY29uc3QgeyBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgpO1xuXG4gIGxvZy5kZWJ1ZyhgLi4uaW5pdGlhbGlzZWQgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0LmApO1xufVxuXG5mdW5jdGlvbiBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIGluZGV4ID0gZGVwZW5kZW50TmFtZXMuaW5kZXhPZihkZXBlbmRlbmN5TmFtZSk7XG5cbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVudE5hbWVzID0gZGVwZW5kZW50TmFtZXMuc2xpY2UoaW5kZXgpLFxuICAgICAgICAgIGNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzID0gW1xuICAgICAgICAgICAgLi4uY2lyY3VsYXJEZXBlbmRlbnROYW1lcyxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lOYW1lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZyA9IGNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzLmpvaW4oU0lOR0xFX1NQQUNFKTtcblxuICAgIGxvZy53YXJuaW5nKGBUaGVyZSBpcyBhIGN5Y2xpYyBkZXBlbmRlbmN5LCAnJHtjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZ30nLmApO1xuXG4gICAgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50O1xufVxuXG5mdW5jdGlvbiBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IHRydWU7XG5cbiAgY29uc3Qgc2hvcnRlbmVkVmVyc2lvbiA9IGRlcGVuZGVuY3kuZ2V0U2hvcnRlbmVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0Lm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIGlmICghZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbikge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZUNvbnRleHQuZ2V0VmVyc2lvbigpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZSwgIC8vL1xuICAgICAgICAgICAgdmVyc2lvblN0cmluZyA9IHZlcnNpb24udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCk7XG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCByZXF1aXJlcyB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kgYnV0IGEgY29udGV4dCB3aXRoIHZlcnNpb24gJyR7dmVyc2lvblN0cmluZ30nIHdhcyBwcm92aWRlZC5gKTtcblxuICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeTtcbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSA9IGZhbHNlO1xuXG4gIGlmIChkZXBlbmRlbnRSZWxlYXNlZCkge1xuICAgIGNvbnN0IHVucmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1VucmVsZWFzZWQoKTtcblxuICAgIGlmICh1bnJlbGVhc2VkKSB7XG4gICAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICAgIG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgICAgICBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBuYW1lLC8vL1xuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBkZXBlbmRlbmN5IGlzIGEgcHJvamVjdCB3aGlsc3QgaXRzICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgaXMgYSBwYWNrYWdlLmApO1xuXG4gICAgICBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMiLCJ2ZXJpZnlSZWxlYXNlQ29udGV4dHMiLCJsYXN0IiwiYXJyYXlVdGlsaXRpZXMiLCJkZXBlbmRlbmN5TmFtZSIsImNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHNDcmVhdGVkIiwibmFtZSIsImRlcGVuZGVuY3kiLCJEZXBlbmRlbmN5IiwiZnJvbU5hbWUiLCJkZXBlbmRlbnROYW1lcyIsImRlcGVuZGVudFJlbGVhc2VkIiwicmVsZWFzZUNvbnRleHRDcmVhdGVkIiwiY3JlYXRlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHMiLCJmb3JFYWNoIiwicmVsZWFzZUNvbnRleHQiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHNWZXJpZnkiLCJhc3luY0V2ZXJ5IiwicmVsZWFzZUNvbnRleHRWZXJpZmllcyIsInZlcmlmeVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZWQiLCJpc1JlbGVhc2VkIiwidmVyaWZpZWQiLCJoYXNWZXJpZmllZCIsImxvZyIsImdldE5hbWUiLCJyZWxlYXNlTmFtZSIsImluZm8iLCJ2ZXJpZmllcyIsInZlcmlmeSIsImZpbmRSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0Rm91bmQiLCJkZXBlbmRlbnROYW1lc0xlbmd0aCIsImxlbmd0aCIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsImxhc3REZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50TmFtZSIsInJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kiLCJ3YXJuaW5nIiwicHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UiLCJjaGVja1Byb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlIiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJhZGRSZWxlYXNlQ29udGV4dCIsImRlYnVnIiwiZGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiYXJyYXkiLCJnZXRBcnJheSIsImN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50IiwiY2hlY2tDeWNsaWNEZXBlbmRlbmN5UHJlc2VudCIsInB1c2giLCJmaW5kIiwiZGVwZW5kZW5jeU5hbWVNYXRjaGVzIiwibWF0Y2hEZXBlbmRlbmN5TmFtZSIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCIsImluY2x1ZGVzIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJ1bnNoaWZ0IiwiRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgiLCJpbml0aWFsaXNlIiwiaW5kZXgiLCJpbmRleE9mIiwiY2lyY3VsYXJEZXBlbmRlbnROYW1lcyIsInNsaWNlIiwiY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXMiLCJjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZyIsImpvaW4iLCJTSU5HTEVfU1BBQ0UiLCJzaG9ydGVuZWRWZXJzaW9uIiwiZ2V0U2hvcnRlbmVkVmVyc2lvbiIsImVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInZlcnNpb25TdHJpbmciLCJ0b1N0cmluZyIsInVucmVsZWFzZWQiLCJpc1VucmVsZWFzZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVVzQkE7ZUFBQUE7O1FBd0N0QjtlQUFBOztRQXhCZ0JDO2VBQUFBOztRQVFNQztlQUFBQTs7OzRCQWhDSzsyQkFDSTs4QkFFSDsyQkFDQztBQUU3QixNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5QkFBYztBQUV4QixlQUFlSixzQkFBc0JLLGNBQWMsRUFBRUMsT0FBTztJQUNqRSxJQUFJQyx5QkFBeUI7SUFFN0IsTUFBTUMsT0FBT0gsZ0JBQ1BJLGFBQWFDLHNCQUFVLENBQUNDLFFBQVEsQ0FBQ0gsT0FDakNJLGlCQUFpQixFQUFFLEVBQ25CQyxvQkFBb0IsT0FDcEJDLHdCQUF3QixNQUFNQyxxQkFBcUJOLFlBQVlHLGdCQUFnQkMsbUJBQW1CUDtJQUV4RyxJQUFJUSx1QkFBdUI7UUFDekJQLHlCQUF5QjtJQUMzQjtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTTiwwQkFBMEJLLE9BQU87SUFDL0MsTUFBTSxFQUFFVSxlQUFlLEVBQUUsR0FBR1Y7SUFFNUJVLGdCQUFnQkMsT0FBTyxDQUFDLENBQUNDO1FBQ3ZCQyx5QkFBeUJELGdCQUFnQlo7SUFDM0M7QUFDRjtBQUVPLGVBQWVKLHNCQUFzQkksT0FBTztJQUNqRCxJQUFJYztJQUVKLE1BQU0sRUFB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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-languages",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.226",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-languages",
|
|
7
7
|
"description": "Occam's common language functionality.",
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
"url": "https://github.com/djalbat/occam-languages"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"necessary": "^17.2.
|
|
14
|
-
"occam-custom-grammars": "^6.0.
|
|
15
|
-
"occam-model": "^1.0.
|
|
16
|
-
"occam-parsers": "^23.1.
|
|
13
|
+
"necessary": "^17.2.10",
|
|
14
|
+
"occam-custom-grammars": "^6.0.46",
|
|
15
|
+
"occam-model": "^1.0.513",
|
|
16
|
+
"occam-parsers": "^23.1.64"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@swc/core": "1.13.20",
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { Entries, metaJSONUtilities } from "occam-model";
|
|
4
|
+
import { fileSystemUtilities as occamFileSystemUtilities } from "occam-server";
|
|
5
|
+
import { pathUtilities, fileSystemUtilities as necessaryFileSystemUtilities } from "necessary";
|
|
4
6
|
|
|
5
7
|
import ReleaseContext from "../context/release";
|
|
6
8
|
|
|
7
9
|
import { customGrammarFromNameAndEntries } from "../utilities/customGrammar";
|
|
8
10
|
|
|
9
|
-
const {
|
|
11
|
+
const { loadProject } = occamFileSystemUtilities,
|
|
12
|
+
{ concatenatePaths } = pathUtilities,
|
|
13
|
+
{ isMetaJSONFileValid } = metaJSONUtilities,
|
|
14
|
+
{ readFile, isEntryFile, checkEntryExists } = necessaryFileSystemUtilities;
|
|
10
15
|
|
|
11
16
|
export function releaseContextFromJSON(json, context) {
|
|
12
17
|
const { log, callback } = context,
|
|
@@ -70,8 +75,38 @@ export function releaseContextFromRelease(release, context) {
|
|
|
70
75
|
return releaseContext;
|
|
71
76
|
}
|
|
72
77
|
|
|
78
|
+
export async function releaseContextFromDependency(dependency, context) {
|
|
79
|
+
let releaseContext = null;
|
|
80
|
+
|
|
81
|
+
const { projectsDirectoryPath } = context,
|
|
82
|
+
dependencyName = dependency.getName(),
|
|
83
|
+
entryPath = concatenatePaths(projectsDirectoryPath, dependencyName),
|
|
84
|
+
entryExists = checkEntryExists(entryPath);
|
|
85
|
+
|
|
86
|
+
if (entryExists) {
|
|
87
|
+
const entryFile = isEntryFile(entryPath);
|
|
88
|
+
|
|
89
|
+
if (entryFile) {
|
|
90
|
+
const filePath = entryPath, ///
|
|
91
|
+
content = readFile(filePath),
|
|
92
|
+
jsonString = content, ///
|
|
93
|
+
json = JSON.parse(jsonString);
|
|
94
|
+
|
|
95
|
+
releaseContext = releaseContextFromJSON(json, context);
|
|
96
|
+
} else {
|
|
97
|
+
const projectName = dependencyName, ///
|
|
98
|
+
project = loadProject(projectName, projectsDirectoryPath);
|
|
99
|
+
|
|
100
|
+
releaseContext = releaseContextFromProject(project, context);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return releaseContext;
|
|
105
|
+
}
|
|
106
|
+
|
|
73
107
|
export default {
|
|
74
108
|
releaseContextFromJSON,
|
|
75
109
|
releaseContextFromProject,
|
|
76
|
-
releaseContextFromRelease
|
|
110
|
+
releaseContextFromRelease,
|
|
111
|
+
releaseContextFromDependency
|
|
77
112
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { Dependency } from "occam-model";
|
|
3
4
|
import { arrayUtilities } from "necessary";
|
|
4
5
|
|
|
5
6
|
import { asyncEvery } from "../utilities/asynchronous";
|
|
@@ -7,10 +8,12 @@ import { SINGLE_SPACE } from "../constants";
|
|
|
7
8
|
|
|
8
9
|
const { last } = arrayUtilities;
|
|
9
10
|
|
|
10
|
-
export async function createReleaseContexts(
|
|
11
|
+
export async function createReleaseContexts(dependencyName, context) {
|
|
11
12
|
let releaseContextsCreated = false;
|
|
12
13
|
|
|
13
|
-
const
|
|
14
|
+
const name = dependencyName, ///
|
|
15
|
+
dependency = Dependency.fromName(name),
|
|
16
|
+
dependentNames = [],
|
|
14
17
|
dependentReleased = false,
|
|
15
18
|
releaseContextCreated = await createReleaseContext(dependency, dependentNames, dependentReleased, context);
|
|
16
19
|
|