@kontur.candy/tools 2.175.0 → 2.176.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +3 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +13 -15
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +2 -3
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +4 -10
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +3 -2
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +9 -7
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +12 -9
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +18 -20
- package/distr/Tools/src/Commons/FormGlobsUtils.js +82 -122
- package/distr/Tools/src/Commons/FormLocationInfo.js +6 -0
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +6 -2
- package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -4
- package/package.json +1 -1
|
@@ -15,30 +15,32 @@ var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
|
|
|
15
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
17
|
async function runUpgradeForm(context, options, resourcesDirectory, farmDirectory) {
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
await _FormGlobsUtils.FormGlobs.ensureEachGlobResolvesIntoExistingForm(options.formGlobs, farmDirectory);
|
|
19
|
+
const formGlobs = await _FormGlobsUtils.FormGlobs.resolveSpecifiers(options.formGlobs, farmDirectory);
|
|
20
|
+
for (const {
|
|
21
|
+
gfv,
|
|
22
|
+
formPath
|
|
23
|
+
} of await _FormGlobsUtils.FormGlobs.resolveGfvGlobs(formGlobs, farmDirectory)) {
|
|
20
24
|
const logger = context.logger.withPrefix(`FORM:${gfv}`);
|
|
21
25
|
if (options.useCiBuild) {
|
|
22
26
|
logger.log("Begin upgrading build mode");
|
|
23
|
-
await upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv, logger);
|
|
27
|
+
await upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv, formPath, logger);
|
|
24
28
|
logger.log("Finish upgrading build mode");
|
|
25
29
|
}
|
|
26
30
|
if (options.engine != undefined) {
|
|
27
31
|
logger.log("Begin upgrading engine version");
|
|
28
|
-
await upgradeFormEngine(farmDirectory, gfv, options.engine, options.skipPreVersions, logger);
|
|
32
|
+
await upgradeFormEngine(farmDirectory, gfv, formPath, options.engine, options.skipPreVersions, logger);
|
|
29
33
|
logger.log("Finish upgrading engine version");
|
|
30
34
|
}
|
|
31
35
|
if (options.preid != undefined) {
|
|
32
36
|
logger.log("Begin upgrading engine version");
|
|
33
|
-
await upgradeFormPrerelease(farmDirectory, gfv, options.preid, logger);
|
|
37
|
+
await upgradeFormPrerelease(farmDirectory, gfv, formPath, options.preid, logger);
|
|
34
38
|
logger.log("Finish upgrading engine version");
|
|
35
39
|
}
|
|
36
40
|
}
|
|
37
41
|
}
|
|
38
|
-
async function upgradeFormEngine(farmDirectory, gfv, engineVersion, skipPreVersions, logger) {
|
|
39
|
-
|
|
40
|
-
const formDirPath = path.join(farmDirectory, "forms", gfv);
|
|
41
|
-
const formJsonPath = path.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
|
|
42
|
+
async function upgradeFormEngine(farmDirectory, gfv, formPath, engineVersion, skipPreVersions, logger) {
|
|
43
|
+
const formJsonPath = path.join(formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
|
|
42
44
|
if (!(await (0, _fsExtra.pathExists)(formJsonPath))) {
|
|
43
45
|
logger.warning("Form does not have form.json: Upgrade skipped");
|
|
44
46
|
return;
|
|
@@ -88,15 +90,13 @@ async function upgradeFormEngine(farmDirectory, gfv, engineVersion, skipPreVersi
|
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
92
|
}
|
|
91
|
-
async function upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv, logger) {
|
|
92
|
-
|
|
93
|
-
const formDirPath = path.join(farmDirectory, "forms", gfv);
|
|
94
|
-
const formJsonPath = path.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
|
|
93
|
+
async function upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv, formPath, logger) {
|
|
94
|
+
const formJsonPath = path.join(formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
|
|
95
95
|
if (!(await (0, _fsExtra.pathExists)(formJsonPath))) {
|
|
96
96
|
logger.warning("form.json does not exists. Upgrade skipped.");
|
|
97
97
|
return;
|
|
98
98
|
}
|
|
99
|
-
const generatedFormDirectory = path.join(
|
|
99
|
+
const generatedFormDirectory = path.join(formPath, "form");
|
|
100
100
|
if (!(0, _ResolveFormInfo.isNewFormJsonFormat)(formJsonPath)) {
|
|
101
101
|
throw new Error("Файл form.json формы должен иметь новый формат зависимости. Обратитесь к расзработчикам за разъяснениями.");
|
|
102
102
|
}
|
|
@@ -112,7 +112,7 @@ async function upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv,
|
|
|
112
112
|
await (0, _fsExtra.remove)(generatedFormDirectory);
|
|
113
113
|
logger.log("Removed form directory");
|
|
114
114
|
}
|
|
115
|
-
const formGitIgnorePath = path.join(
|
|
115
|
+
const formGitIgnorePath = path.join(formPath, ".gitignore");
|
|
116
116
|
if (await (0, _fsExtra.pathExists)(formGitIgnorePath)) {
|
|
117
117
|
const gitIgnoreContent = await (0, _fsExtra.readFile)(formGitIgnorePath, "utf8");
|
|
118
118
|
if (!gitIgnoreContent.split("\n").includes("form")) {
|
|
@@ -124,10 +124,8 @@ async function upgradeFormToCiBuildMode(resourcesDirectory, farmDirectory, gfv,
|
|
|
124
124
|
logger.log("Created .gitignore");
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
|
-
async function upgradeFormPrerelease(farmDirectory, gfv, preid, logger) {
|
|
128
|
-
|
|
129
|
-
const formDirPath = path.join(farmDirectory, "forms", gfv);
|
|
130
|
-
const formJsonPath = path.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
|
|
127
|
+
async function upgradeFormPrerelease(farmDirectory, gfv, formPath, preid, logger) {
|
|
128
|
+
const formJsonPath = path.join(formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
|
|
131
129
|
const formConfig = await (0, _ResolveFormInfo.readFormConfig)(formJsonPath, logger);
|
|
132
130
|
const prereleaseVersionFormJson = await (0, _PublishedVersionUtils.getPrereleaseVersionFormJson)(preid);
|
|
133
131
|
if (prereleaseVersionFormJson != undefined) {
|
|
@@ -143,4 +141,4 @@ async function upgradeFormPrerelease(farmDirectory, gfv, preid, logger) {
|
|
|
143
141
|
throw new Error(`Версии ${preid} не существует.`);
|
|
144
142
|
}
|
|
145
143
|
}
|
|
146
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJfVmVyc2lvbiIsIl9XZWxsS25vd25EaXJlY3RvcmllcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJydW5VcGdyYWRlRm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9icyIsIkZvcm1HbG9icyIsInZhbGlkYXRlR2xvYnMiLCJyZXNvbHZlU3BlY2lmaWVycyIsImdmdiIsInJlc29sdmVHbG9ic1RvR2Z2cyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ1c2VDaUJ1aWxkIiwibG9nIiwidXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlIiwiZW5naW5lIiwidW5kZWZpbmVkIiwidXBncmFkZUZvcm1FbmdpbmUiLCJza2lwUHJlVmVyc2lvbnMiLCJwcmVpZCIsInVwZ3JhZGVGb3JtUHJlcmVsZWFzZSIsImVuZ2luZVZlcnNpb24iLCJmb3JtRGlyUGF0aCIsImpvaW4iLCJmb3JtSnNvblBhdGgiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJwYXRoRXhpc3RzIiwid2FybmluZyIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsIl9mb3JtQ29uZmlnJGRlcGVuZGVuYyIsIl9mb3JtQ29uZmlnJGRlcGVuZGVuYzIiLCJkZXBlbmRlbmNpZXMiLCJnZW5lcmF0b3IiLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMzIiwiX2Zvcm1Db25maWckZGVwZW5kZW5jNCIsImVuZ2luZVZlcnNpb25TcGVjIiwicGFyc2VDYW5keVZlcnNpb25TcGVjIiwiZ2VuZXJhdG9yVmVyc2lvblNwZWMiLCJ0eXBlIiwidGVzdCIsInZlcnNpb24iLCJtb2RlIiwiZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24iLCJnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbiIsIndyaXRlSnNvbiIsInNwYWNlcyIsImlzRW5naW5lVmVyc2lvbkV4aXN0cyIsIkVycm9yIiwiZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSIsImlzTmV3Rm9ybUpzb25Gb3JtYXQiLCJnZXRMb2dnZXIiLCJidWlsZCIsInJlbW92ZSIsImZvcm1HaXRJZ25vcmVQYXRoIiwiZ2l0SWdub3JlQ29udGVudCIsInJlYWRGaWxlIiwic3BsaXQiLCJpbmNsdWRlcyIsIndyaXRlRmlsZSIsInRyaW1SaWdodCIsInByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24iLCJnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL1VwZ3JhZGVGb3JtL1J1blVwZ3JhZGVGb3JtLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cywgcmVhZEZpbGUsIHJlbW92ZSwgd3JpdGVGaWxlLCB3cml0ZUpzb24gfSBmcm9tIFwiZnMtZXh0cmFcIjtcblxuaW1wb3J0IHtcbiAgICBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbixcbiAgICBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbixcbiAgICBnZXRQcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uLFxuICAgIGlzRW5naW5lVmVyc2lvbkV4aXN0cyxcbn0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBpc05ld0Zvcm1Kc29uRm9ybWF0LCByZWFkRm9ybUNvbmZpZyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1ZlcnNpb25cIjtcbmltcG9ydCB7IFdlbGxLbm93bkRpcmVjdG9yaWVzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9XZWxsS25vd25EaXJlY3Rvcmllc1wiO1xuXG5pbXBvcnQgeyBVcGdyYWRlRm9ybU9wdGlvbnMgfSBmcm9tIFwiLi9VcGdyYWRlRm9ybU9wdGlvbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blVwZ3JhZGVGb3JtKFxuICAgIGNvbnRleHQ6IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQsXG4gICAgb3B0aW9uczogVXBncmFkZUZvcm1PcHRpb25zLFxuICAgIHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLnZhbGlkYXRlR2xvYnMoXG4gICAgICAgIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlU3BlY2lmaWVycyhvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuICAgIGZvciAoY29uc3QgZ2Z2IG9mIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlR2xvYnNUb0dmdnMoZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSkge1xuICAgICAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApO1xuICAgICAgICBpZiAob3B0aW9ucy51c2VDaUJ1aWxkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGJ1aWxkIG1vZGVcIik7XG4gICAgICAgICAgICBhd2FpdCB1cGdyYWRlRm9ybVRvQ2lCdWlsZE1vZGUocmVzb3VyY2VzRGlyZWN0b3J5LCBmYXJtRGlyZWN0b3J5LCBnZnYsIGxvZ2dlcik7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiRmluaXNoIHVwZ3JhZGluZyBidWlsZCBtb2RlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmVuZ2luZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJCZWdpbiB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgICAgICBhd2FpdCB1cGdyYWRlRm9ybUVuZ2luZShmYXJtRGlyZWN0b3J5LCBnZnYsIG9wdGlvbnMuZW5naW5lLCBvcHRpb25zLnNraXBQcmVWZXJzaW9ucywgbG9nZ2VyKTtcbiAgICAgICAgICAgIGxvZ2dlci5sb2coXCJGaW5pc2ggdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLnByZWlkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkJlZ2luIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgICAgIGF3YWl0IHVwZ3JhZGVGb3JtUHJlcmVsZWFzZShmYXJtRGlyZWN0b3J5LCBnZnYsIG9wdGlvbnMucHJlaWQsIGxvZ2dlcik7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiRmluaXNoIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBncmFkZUZvcm1FbmdpbmUoXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGdmdjogc3RyaW5nLFxuICAgIGVuZ2luZVZlcnNpb246IHN0cmluZyxcbiAgICBza2lwUHJlVmVyc2lvbnM6IGJvb2xlYW4sXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBUT0RPXG4gICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhcIkZvcm0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb246IFVwZ3JhZGUgc2tpcHBlZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBsb2dnZXIpO1xuICAgIGlmIChza2lwUHJlVmVyc2lvbnMpIHtcbiAgICAgICAgaWYgKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUgIT0gdW5kZWZpbmVkICYmIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uU3BlYyA9IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lKTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvclZlcnNpb25TcGVjID0gcGFyc2VDYW5keVZlcnNpb25TcGVjKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwicHJlXCIgfHxcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uU3BlYy50eXBlID09PSBcInByZVwiIHx8XG4gICAgICAgICAgICAgICAgKGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwidmVyc2lvblwiICYmIC9bYS16QS1aXS8udGVzdChlbmdpbmVWZXJzaW9uU3BlYy52ZXJzaW9uKSkgfHxcbiAgICAgICAgICAgICAgICAoZ2VuZXJhdG9yVmVyc2lvblNwZWMudHlwZSA9PT0gXCJ2ZXJzaW9uXCIgJiYgL1thLXpBLVpdLy50ZXN0KGdlbmVyYXRvclZlcnNpb25TcGVjLnZlcnNpb24pKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgXCJGb3JtIHZlcnNpb24gaGFzIHByZXJlbGVhc2UgdmVyc2lvbjogVXBncmFkZSBza2lwcGVkIGR1ZSB0byBmbGFnIHNraXBQcmVWZXJzaW9ucyAoLS1za2lwLXByZS12ZXJzaW9ucykgc3BlY2lmaWVkXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZm9ybUNvbmZpZy5tb2RlID09PSBcIm5vLWVkaXRvclwiKSB7XG4gICAgICAgIGxvZ2dlci5sb2coXCJGb3JtIGRvZXMgbm90IGhhdmUgZWRpdG9yOiBVcGdyYWRlIHNraXBwZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGZvcm1Db25maWcubW9kZSA9PT0gXCJjb3B5LWxlZ2FjeS1wcmVidWlsdC1yZXNvdXJjZXNcIikge1xuICAgICAgICBsb2dnZXIubG9nKFwiRm9ybSBkb2VzIG5vdCBoYXZlIGVkaXRvcjogVXBncmFkZSBza2lwcGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlbmdpbmVWZXJzaW9uID09PSBcImxhdGVzdFwiKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgZW5naW5lOiBhd2FpdCBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbigpLFxuICAgICAgICAgICAgZ2VuZXJhdG9yOiBhd2FpdCBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbigpLFxuICAgICAgICB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIGxhc3Qgc3RhYmxlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhd2FpdCBpc0VuZ2luZVZlcnNpb25FeGlzdHMoZW5naW5lVmVyc2lvbikpIHtcbiAgICAgICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0geyBlbmdpbmU6IGVuZ2luZVZlcnNpb24sIGdlbmVyYXRvcjogZW5naW5lVmVyc2lvbiB9O1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byB2ZXJzaW9uICR7Zm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lfWApO1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYNCS0LXRgNGB0LjQuCAke2VuZ2luZVZlcnNpb259INC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIuYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtVG9DaUJ1aWxkTW9kZShcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZ2Z2OiBzdHJpbmcsXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBUT0RPXG4gICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhcImZvcm0uanNvbiBkb2VzIG5vdCBleGlzdHMuIFVwZ3JhZGUgc2tpcHBlZC5cIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSA9IHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtXCIpO1xuICAgIGlmICghaXNOZXdGb3JtSnNvbkZvcm1hdChmb3JtSnNvblBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwi0KTQsNC50LsgZm9ybS5qc29uINGE0L7RgNC80Ysg0LTQvtC70LbQtdC9INC40LzQtdGC0Ywg0L3QvtCy0YvQuSDRhNC+0YDQvNCw0YIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuC4g0J7QsdGA0LDRgtC40YLQtdGB0Ywg0Log0YDQsNGB0LfRgNCw0LHQvtGC0YfQuNC60LDQvCDQt9CwINGA0LDQt9GK0Y/RgdC90LXQvdC40Y/QvNC4LlwiXG4gICAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGdldExvZ2dlcigpKTtcbiAgICBpZiAoZm9ybUNvbmZpZy5idWlsZCAhPT0gXCJjaVwiKSB7XG4gICAgICAgIGZvcm1Db25maWcuYnVpbGQgPSBcImNpXCI7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICBsb2dnZXIubG9nKFwiVXBkYXRlZCBmb3JtLmpzb25cIik7XG4gICAgfVxuICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGdlbmVyYXRlZEZvcm1EaXJlY3RvcnkpKSB7XG4gICAgICAgIGF3YWl0IHJlbW92ZShnZW5lcmF0ZWRGb3JtRGlyZWN0b3J5KTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIlJlbW92ZWQgZm9ybSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1HaXRJZ25vcmVQYXRoID0gcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcIi5naXRpZ25vcmVcIik7XG4gICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZm9ybUdpdElnbm9yZVBhdGgpKSB7XG4gICAgICAgIGNvbnN0IGdpdElnbm9yZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmb3JtR2l0SWdub3JlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICBpZiAoIWdpdElnbm9yZUNvbnRlbnQuc3BsaXQoXCJcXG5cIikuaW5jbHVkZXMoXCJmb3JtXCIpKSB7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIGdpdElnbm9yZUNvbnRlbnQudHJpbVJpZ2h0KCkgKyBcIlxcblwiICsgXCJmb3JtXFxuXCIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIlVwZGF0ZWQgLmdpdGlnbm9yZVwiKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShmb3JtR2l0SWdub3JlUGF0aCwgXCJmb3JtXFxuXCIpO1xuICAgICAgICBsb2dnZXIubG9nKFwiQ3JlYXRlZCAuZ2l0aWdub3JlXCIpO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBncmFkZUZvcm1QcmVyZWxlYXNlKFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBnZnY6IHN0cmluZyxcbiAgICBwcmVpZDogc3RyaW5nLFxuICAgIGxvZ2dlcjogSUxvZ2dlclxuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVE9ET1xuICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2KTtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybURpclBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGxvZ2dlcik7XG4gICAgY29uc3QgcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiA9IGF3YWl0IGdldFByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24ocHJlaWQpO1xuXG4gICAgaWYgKHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0geyBlbmdpbmU6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24sIGdlbmVyYXRvcjogcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIHByZXJlbGVhc2UgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDQktC10YDRgdC40LggJHtwcmVpZH0g0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgi5gKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLHNCQUFBLEdBQUFGLE9BQUE7QUFNQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksZUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQUErRSxTQUFBUSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBVix3QkFBQWMsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBRSxHQUFBLENBQUFMLEdBQUEsU0FBQU0sTUFBQSxXQUFBQyxxQkFBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3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
|
|
144
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUHVibGlzaGVkVmVyc2lvblV0aWxzIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtR2xvYnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJfVmVyc2lvbiIsIl9XZWxsS25vd25EaXJlY3RvcmllcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJydW5VcGdyYWRlRm9ybSIsImNvbnRleHQiLCJvcHRpb25zIiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsIkZvcm1HbG9icyIsImVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtIiwiZm9ybUdsb2JzIiwicmVzb2x2ZVNwZWNpZmllcnMiLCJnZnYiLCJmb3JtUGF0aCIsInJlc29sdmVHZnZHbG9icyIsImxvZ2dlciIsIndpdGhQcmVmaXgiLCJ1c2VDaUJ1aWxkIiwibG9nIiwidXBncmFkZUZvcm1Ub0NpQnVpbGRNb2RlIiwiZW5naW5lIiwidW5kZWZpbmVkIiwidXBncmFkZUZvcm1FbmdpbmUiLCJza2lwUHJlVmVyc2lvbnMiLCJwcmVpZCIsInVwZ3JhZGVGb3JtUHJlcmVsZWFzZSIsImVuZ2luZVZlcnNpb24iLCJmb3JtSnNvblBhdGgiLCJqb2luIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwicGF0aEV4aXN0cyIsIndhcm5pbmciLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMiLCJfZm9ybUNvbmZpZyRkZXBlbmRlbmMyIiwiZGVwZW5kZW5jaWVzIiwiZ2VuZXJhdG9yIiwiX2Zvcm1Db25maWckZGVwZW5kZW5jMyIsIl9mb3JtQ29uZmlnJGRlcGVuZGVuYzQiLCJlbmdpbmVWZXJzaW9uU3BlYyIsInBhcnNlQ2FuZHlWZXJzaW9uU3BlYyIsImdlbmVyYXRvclZlcnNpb25TcGVjIiwidHlwZSIsInRlc3QiLCJ2ZXJzaW9uIiwibW9kZSIsImdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uIiwiZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24iLCJ3cml0ZUpzb24iLCJzcGFjZXMiLCJpc0VuZ2luZVZlcnNpb25FeGlzdHMiLCJFcnJvciIsImdlbmVyYXRlZEZvcm1EaXJlY3RvcnkiLCJpc05ld0Zvcm1Kc29uRm9ybWF0IiwiZ2V0TG9nZ2VyIiwiYnVpbGQiLCJyZW1vdmUiLCJmb3JtR2l0SWdub3JlUGF0aCIsImdpdElnbm9yZUNvbnRlbnQiLCJyZWFkRmlsZSIsInNwbGl0IiwiaW5jbHVkZXMiLCJ3cml0ZUZpbGUiLCJ0cmltUmlnaHQiLCJwcmVyZWxlYXNlVmVyc2lvbkZvcm1Kc29uIiwiZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9VcGdyYWRlRm9ybS9SdW5VcGdyYWRlRm9ybS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMsIHJlYWRGaWxlLCByZW1vdmUsIHdyaXRlRmlsZSwgd3JpdGVKc29uIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7XG4gICAgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24sXG4gICAgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24sXG4gICAgZ2V0UHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbixcbiAgICBpc0VuZ2luZVZlcnNpb25FeGlzdHMsXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgaXNOZXdGb3JtSnNvbkZvcm1hdCwgcmVhZEZvcm1Db25maWcgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgRm9ybUdsb2JzIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvRm9ybUdsb2JzVXRpbHNcIjtcbmltcG9ydCB7IElMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL0lMb2dnZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBwYXJzZUNhbmR5VmVyc2lvblNwZWMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9WZXJzaW9uXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgVXBncmFkZUZvcm1PcHRpb25zIH0gZnJvbSBcIi4vVXBncmFkZUZvcm1PcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5VcGdyYWRlRm9ybShcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IFVwZ3JhZGVGb3JtT3B0aW9ucyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IEZvcm1HbG9icy5lbnN1cmVFYWNoR2xvYlJlc29sdmVzSW50b0V4aXN0aW5nRm9ybShvcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSk7XG4gICAgY29uc3QgZm9ybUdsb2JzID0gYXdhaXQgRm9ybUdsb2JzLnJlc29sdmVTcGVjaWZpZXJzKG9wdGlvbnMuZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KTtcbiAgICBmb3IgKGNvbnN0IHsgZ2Z2LCBmb3JtUGF0aCB9IG9mIGF3YWl0IEZvcm1HbG9icy5yZXNvbHZlR2Z2R2xvYnMoZm9ybUdsb2JzLCBmYXJtRGlyZWN0b3J5KSkge1xuICAgICAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGBGT1JNOiR7Z2Z2fWApO1xuICAgICAgICBpZiAob3B0aW9ucy51c2VDaUJ1aWxkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGJ1aWxkIG1vZGVcIik7XG4gICAgICAgICAgICBhd2FpdCB1cGdyYWRlRm9ybVRvQ2lCdWlsZE1vZGUocmVzb3VyY2VzRGlyZWN0b3J5LCBmYXJtRGlyZWN0b3J5LCBnZnYsIGZvcm1QYXRoLCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgYnVpbGQgbW9kZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5lbmdpbmUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1FbmdpbmUoZmFybURpcmVjdG9yeSwgZ2Z2LCBmb3JtUGF0aCwgb3B0aW9ucy5lbmdpbmUsIG9wdGlvbnMuc2tpcFByZVZlcnNpb25zLCBsb2dnZXIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIkZpbmlzaCB1cGdyYWRpbmcgZW5naW5lIHZlcnNpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMucHJlaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiQmVnaW4gdXBncmFkaW5nIGVuZ2luZSB2ZXJzaW9uXCIpO1xuICAgICAgICAgICAgYXdhaXQgdXBncmFkZUZvcm1QcmVyZWxlYXNlKGZhcm1EaXJlY3RvcnksIGdmdiwgZm9ybVBhdGgsIG9wdGlvbnMucHJlaWQsIGxvZ2dlcik7XG4gICAgICAgICAgICBsb2dnZXIubG9nKFwiRmluaXNoIHVwZ3JhZGluZyBlbmdpbmUgdmVyc2lvblwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBncmFkZUZvcm1FbmdpbmUoXG4gICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgIGdmdjogc3RyaW5nLFxuICAgIGZvcm1QYXRoOiBzdHJpbmcsXG4gICAgZW5naW5lVmVyc2lvbjogc3RyaW5nLFxuICAgIHNraXBQcmVWZXJzaW9uczogYm9vbGVhbixcbiAgICBsb2dnZXI6IElMb2dnZXJcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhcIkZvcm0gZG9lcyBub3QgaGF2ZSBmb3JtLmpzb246IFVwZ3JhZGUgc2tpcHBlZFwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBsb2dnZXIpO1xuICAgIGlmIChza2lwUHJlVmVyc2lvbnMpIHtcbiAgICAgICAgaWYgKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5lbmdpbmUgIT0gdW5kZWZpbmVkICYmIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uU3BlYyA9IHBhcnNlQ2FuZHlWZXJzaW9uU3BlYyhmb3JtQ29uZmlnLmRlcGVuZGVuY2llcz8uZW5naW5lKTtcbiAgICAgICAgICAgIGNvbnN0IGdlbmVyYXRvclZlcnNpb25TcGVjID0gcGFyc2VDYW5keVZlcnNpb25TcGVjKGZvcm1Db25maWcuZGVwZW5kZW5jaWVzPy5nZW5lcmF0b3IpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwicHJlXCIgfHxcbiAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uU3BlYy50eXBlID09PSBcInByZVwiIHx8XG4gICAgICAgICAgICAgICAgKGVuZ2luZVZlcnNpb25TcGVjLnR5cGUgPT09IFwidmVyc2lvblwiICYmIC9bYS16QS1aXS8udGVzdChlbmdpbmVWZXJzaW9uU3BlYy52ZXJzaW9uKSkgfHxcbiAgICAgICAgICAgICAgICAoZ2VuZXJhdG9yVmVyc2lvblNwZWMudHlwZSA9PT0gXCJ2ZXJzaW9uXCIgJiYgL1thLXpBLVpdLy50ZXN0KGdlbmVyYXRvclZlcnNpb25TcGVjLnZlcnNpb24pKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgXCJGb3JtIHZlcnNpb24gaGFzIHByZXJlbGVhc2UgdmVyc2lvbjogVXBncmFkZSBza2lwcGVkIGR1ZSB0byBmbGFnIHNraXBQcmVWZXJzaW9ucyAoLS1za2lwLXByZS12ZXJzaW9ucykgc3BlY2lmaWVkXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZm9ybUNvbmZpZy5tb2RlID09PSBcIm5vLWVkaXRvclwiKSB7XG4gICAgICAgIGxvZ2dlci5sb2coXCJGb3JtIGRvZXMgbm90IGhhdmUgZWRpdG9yOiBVcGdyYWRlIHNraXBwZWRcIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGZvcm1Db25maWcubW9kZSA9PT0gXCJjb3B5LWxlZ2FjeS1wcmVidWlsdC1yZXNvdXJjZXNcIikge1xuICAgICAgICBsb2dnZXIubG9nKFwiRm9ybSBkb2VzIG5vdCBoYXZlIGVkaXRvcjogVXBncmFkZSBza2lwcGVkXCIpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlbmdpbmVWZXJzaW9uID09PSBcImxhdGVzdFwiKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgZW5naW5lOiBhd2FpdCBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbigpLFxuICAgICAgICAgICAgZ2VuZXJhdG9yOiBhd2FpdCBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbigpLFxuICAgICAgICB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIGxhc3Qgc3RhYmxlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhd2FpdCBpc0VuZ2luZVZlcnNpb25FeGlzdHMoZW5naW5lVmVyc2lvbikpIHtcbiAgICAgICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0geyBlbmdpbmU6IGVuZ2luZVZlcnNpb24sIGdlbmVyYXRvcjogZW5naW5lVmVyc2lvbiB9O1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhgVXBkYXRlZCB0byB2ZXJzaW9uICR7Zm9ybUNvbmZpZy5kZXBlbmRlbmNpZXMuZW5naW5lfWApO1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYNCS0LXRgNGB0LjQuCAke2VuZ2luZVZlcnNpb259INC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIuYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZ3JhZGVGb3JtVG9DaUJ1aWxkTW9kZShcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgZ2Z2OiBzdHJpbmcsXG4gICAgZm9ybVBhdGg6IHN0cmluZyxcbiAgICBsb2dnZXI6IElMb2dnZXJcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHBhdGguam9pbihmb3JtUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICBsb2dnZXIud2FybmluZyhcImZvcm0uanNvbiBkb2VzIG5vdCBleGlzdHMuIFVwZ3JhZGUgc2tpcHBlZC5cIik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZ2VuZXJhdGVkRm9ybURpcmVjdG9yeSA9IHBhdGguam9pbihmb3JtUGF0aCwgXCJmb3JtXCIpO1xuICAgIGlmICghaXNOZXdGb3JtSnNvbkZvcm1hdChmb3JtSnNvblBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIFwi0KTQsNC50LsgZm9ybS5qc29uINGE0L7RgNC80Ysg0LTQvtC70LbQtdC9INC40LzQtdGC0Ywg0L3QvtCy0YvQuSDRhNC+0YDQvNCw0YIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuC4g0J7QsdGA0LDRgtC40YLQtdGB0Ywg0Log0YDQsNGB0LfRgNCw0LHQvtGC0YfQuNC60LDQvCDQt9CwINGA0LDQt9GK0Y/RgdC90LXQvdC40Y/QvNC4LlwiXG4gICAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGdldExvZ2dlcigpKTtcbiAgICBpZiAoZm9ybUNvbmZpZy5idWlsZCAhPT0gXCJjaVwiKSB7XG4gICAgICAgIGZvcm1Db25maWcuYnVpbGQgPSBcImNpXCI7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICBsb2dnZXIubG9nKFwiVXBkYXRlZCBmb3JtLmpzb25cIik7XG4gICAgfVxuICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGdlbmVyYXRlZEZvcm1EaXJlY3RvcnkpKSB7XG4gICAgICAgIGF3YWl0IHJlbW92ZShnZW5lcmF0ZWRGb3JtRGlyZWN0b3J5KTtcbiAgICAgICAgbG9nZ2VyLmxvZyhcIlJlbW92ZWQgZm9ybSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICAgIGNvbnN0IGZvcm1HaXRJZ25vcmVQYXRoID0gcGF0aC5qb2luKGZvcm1QYXRoLCBcIi5naXRpZ25vcmVcIik7XG4gICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZm9ybUdpdElnbm9yZVBhdGgpKSB7XG4gICAgICAgIGNvbnN0IGdpdElnbm9yZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShmb3JtR2l0SWdub3JlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICBpZiAoIWdpdElnbm9yZUNvbnRlbnQuc3BsaXQoXCJcXG5cIikuaW5jbHVkZXMoXCJmb3JtXCIpKSB7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoZm9ybUdpdElnbm9yZVBhdGgsIGdpdElnbm9yZUNvbnRlbnQudHJpbVJpZ2h0KCkgKyBcIlxcblwiICsgXCJmb3JtXFxuXCIpO1xuICAgICAgICAgICAgbG9nZ2VyLmxvZyhcIlVwZGF0ZWQgLmdpdGlnbm9yZVwiKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShmb3JtR2l0SWdub3JlUGF0aCwgXCJmb3JtXFxuXCIpO1xuICAgICAgICBsb2dnZXIubG9nKFwiQ3JlYXRlZCAuZ2l0aWdub3JlXCIpO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBncmFkZUZvcm1QcmVyZWxlYXNlKFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBnZnY6IHN0cmluZyxcbiAgICBmb3JtUGF0aDogc3RyaW5nLFxuICAgIHByZWlkOiBzdHJpbmcsXG4gICAgbG9nZ2VyOiBJTG9nZ2VyXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGxvZ2dlcik7XG4gICAgY29uc3QgcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiA9IGF3YWl0IGdldFByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24ocHJlaWQpO1xuXG4gICAgaWYgKHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24gIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0geyBlbmdpbmU6IHByZXJlbGVhc2VWZXJzaW9uRm9ybUpzb24sIGdlbmVyYXRvcjogcHJlcmVsZWFzZVZlcnNpb25Gb3JtSnNvbiB9O1xuICAgICAgICBsb2dnZXIubG9nKGBVcGRhdGVkIHRvIHByZXJlbGVhc2UgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDQktC10YDRgdC40LggJHtwcmVpZH0g0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgi5gKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLHNCQUFBLEdBQUFGLE9BQUE7QUFNQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksZUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQUErRSxTQUFBUSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBVix3QkFBQWMsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBRSxHQUFBLENBQUFMLEdBQUEsU0FBQU0sTUFBQSxXQUFBQyxxQkFBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxHQUFBLElBQUFYLEdBQUEsUUFBQVcsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZCxHQUFBLEVBQUFXLEdB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
|
|
@@ -7,171 +7,131 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.FormGlobs = void 0;
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
var _fsExtra = require("fs-extra");
|
|
10
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
10
|
var _ResolveFormInfo = require("../BuildTasks/ResolveFormInfo");
|
|
12
11
|
var _FormPathUtils = require("../../../Common/FormPathUtils");
|
|
13
12
|
var _WellKnownDirectories = require("../../../Common/WellKnownDirectories");
|
|
14
13
|
var _FsUtils = require("./FsUtils");
|
|
15
14
|
var _StaticLogger = require("./Logging/StaticLogger");
|
|
16
15
|
class FormGlobs {
|
|
17
|
-
constructor(farmDirectory, formGlobStrings) {
|
|
18
|
-
this.farmDirectory = void 0;
|
|
19
|
-
this.formGlobStrings = void 0;
|
|
20
|
-
this.formGfvs = void 0;
|
|
21
|
-
this.formGlobStrings = formGlobStrings;
|
|
22
|
-
this.farmDirectory = farmDirectory;
|
|
23
|
-
}
|
|
24
16
|
static async enumerateFormsInRepository(...repositoryRoots) {
|
|
25
17
|
const result = [];
|
|
26
18
|
for (const repositoryRoot of repositoryRoots) {
|
|
27
|
-
for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.farm/forms
|
|
19
|
+
for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.farm/forms/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
|
|
28
20
|
cwd: repositoryRoot
|
|
29
21
|
})) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
});
|
|
38
|
-
}
|
|
22
|
+
const formPath = _path.default.dirname(formJsonPath);
|
|
23
|
+
const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
|
|
24
|
+
result.push({
|
|
25
|
+
gfv: gfv,
|
|
26
|
+
formPath: _path.default.join(repositoryRoot, formPath),
|
|
27
|
+
formRelativePath: formPath
|
|
28
|
+
});
|
|
39
29
|
}
|
|
40
|
-
for (const formJsonPath of await (0, _FsUtils.globAsync)(`${_WellKnownDirectories.WellKnownDirectories.TestFarmDir}/forms
|
|
30
|
+
for (const formJsonPath of await (0, _FsUtils.globAsync)(`${_WellKnownDirectories.WellKnownDirectories.TestFarmDir}/forms/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
|
|
41
31
|
cwd: repositoryRoot
|
|
42
32
|
})) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
});
|
|
51
|
-
}
|
|
33
|
+
const formPath = _path.default.dirname(formJsonPath);
|
|
34
|
+
const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
|
|
35
|
+
result.push({
|
|
36
|
+
gfv: gfv,
|
|
37
|
+
formPath: _path.default.join(repositoryRoot, formPath),
|
|
38
|
+
formRelativePath: formPath
|
|
39
|
+
});
|
|
52
40
|
}
|
|
53
|
-
for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.rpn.farm/forms
|
|
41
|
+
for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.rpn.farm/forms/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
|
|
54
42
|
cwd: repositoryRoot
|
|
55
43
|
})) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
});
|
|
64
|
-
}
|
|
44
|
+
const formPath = _path.default.dirname(formJsonPath);
|
|
45
|
+
const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
|
|
46
|
+
result.push({
|
|
47
|
+
gfv: gfv,
|
|
48
|
+
formPath: _path.default.join(repositoryRoot, formPath),
|
|
49
|
+
formRelativePath: formPath
|
|
50
|
+
});
|
|
65
51
|
}
|
|
66
|
-
for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.diadoc.farm/forms
|
|
52
|
+
for (const formJsonPath of await (0, _FsUtils.globAsync)(`candy.diadoc.farm/forms/*/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
|
|
67
53
|
cwd: repositoryRoot
|
|
68
54
|
})) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
});
|
|
77
|
-
}
|
|
55
|
+
const formPath = _path.default.dirname(formJsonPath);
|
|
56
|
+
const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
|
|
57
|
+
result.push({
|
|
58
|
+
gfv: gfv,
|
|
59
|
+
formPath: _path.default.join(repositoryRoot, formPath),
|
|
60
|
+
formRelativePath: formPath
|
|
61
|
+
});
|
|
78
62
|
}
|
|
79
|
-
for (const formJsonPath of await (0, _FsUtils.globAsync)(
|
|
80
|
-
cwd: repositoryRoot
|
|
63
|
+
for (const formJsonPath of await (0, _FsUtils.globAsync)(`**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, {
|
|
64
|
+
cwd: _path.default.join(repositoryRoot, "forms")
|
|
81
65
|
})) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
});
|
|
90
|
-
}
|
|
66
|
+
const formPath = _path.default.dirname(formJsonPath);
|
|
67
|
+
const gfv = (0, _FormPathUtils.extractGfvFromFormPath)(formPath);
|
|
68
|
+
result.push({
|
|
69
|
+
gfv: gfv,
|
|
70
|
+
formPath: _path.default.join(repositoryRoot, "forms", formPath),
|
|
71
|
+
formRelativePath: formPath
|
|
72
|
+
});
|
|
91
73
|
}
|
|
92
74
|
}
|
|
93
75
|
return result;
|
|
94
76
|
}
|
|
95
|
-
static async
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
cwd: _path.default.join(farmDirectory, "..")
|
|
102
|
-
}));
|
|
77
|
+
static async ensureEachGlobResolvesIntoExistingForm(formGlobs, farmDirectory) {
|
|
78
|
+
for (const formGlob of formGlobs) {
|
|
79
|
+
const resolvedGfvs = await this.resolveGfvGlobs([formGlob], farmDirectory);
|
|
80
|
+
if (resolvedGfvs.length === 0) {
|
|
81
|
+
throw new Error(`Форм соответствующих ${formGlob} не найдено.`);
|
|
82
|
+
}
|
|
103
83
|
}
|
|
104
|
-
return
|
|
84
|
+
return formGlobs;
|
|
105
85
|
}
|
|
106
|
-
static async
|
|
107
|
-
|
|
108
|
-
for (const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (mask.includes("*") || mask.includes("?")) {
|
|
116
|
-
throw new Error(`Маска GFV ${mask} не соответстсвует ни одной форме`);
|
|
117
|
-
} else {
|
|
118
|
-
throw new Error(`Формы ${mask} не найдено.`);
|
|
86
|
+
static async resolveGfvGlobs(formGlobs, farmDirectory) {
|
|
87
|
+
const result = new Map();
|
|
88
|
+
for (const {
|
|
89
|
+
gfv,
|
|
90
|
+
formPath
|
|
91
|
+
} of await FormGlobs.enumerateFormsInRepository(_path.default.normalize(_path.default.join(farmDirectory, "..")))) {
|
|
92
|
+
for (const formGlob of formGlobs) {
|
|
93
|
+
if (await FormGlobs.isFormMatchToGlob(formGlob, gfv, formPath)) {
|
|
94
|
+
result.set(gfv, formPath);
|
|
119
95
|
}
|
|
120
96
|
}
|
|
121
97
|
}
|
|
122
|
-
return
|
|
98
|
+
return [...result.entries()].map(([gfv, formPath]) => ({
|
|
99
|
+
gfv: gfv,
|
|
100
|
+
formPath: formPath
|
|
101
|
+
}));
|
|
123
102
|
}
|
|
124
103
|
static async resolveSpecifiers(formGlobsWithSpecifiers, farmDirectory) {
|
|
125
|
-
const results = await Promise.all(formGlobsWithSpecifiers.map(x => this.
|
|
104
|
+
const results = await Promise.all(formGlobsWithSpecifiers.map(x => this.resolveOnlyFormGlobSpecifiers(x, farmDirectory)));
|
|
126
105
|
return results.flat();
|
|
127
106
|
}
|
|
128
|
-
static async
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
result.push(form);
|
|
107
|
+
static async isFormMatchToGlob(formGlob, gfv, formPath) {
|
|
108
|
+
const gfvRegexp = new RegExp("^" + formGlob.replace(":with-ui-tests", "").replace(":with-ci-build", "").replace(/\*/gi, "\\d*").replace(/\?/gi, "\\d") + "$");
|
|
109
|
+
if (gfvRegexp.test(gfv)) {
|
|
110
|
+
if (formGlob.includes(":with-ui-tests")) {
|
|
111
|
+
if (!(await (0, _fsExtra.pathExists)(_path.default.join(formPath, "tests")))) {
|
|
112
|
+
return false;
|
|
135
113
|
}
|
|
136
114
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
for (const form of forms) {
|
|
143
|
-
// TODO
|
|
144
|
-
const formJsonPath = _path.default.join(farmDirectory, "forms", form, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
|
|
145
|
-
if (await (0, _fsExtra.pathExists)(formJsonPath)) {
|
|
146
|
-
const formConfig = await (0, _ResolveFormInfo.readFormConfig)(formJsonPath, new _StaticLogger.NullLogger());
|
|
147
|
-
if (formConfig.build === "ci") {
|
|
148
|
-
result.push(form);
|
|
149
|
-
}
|
|
115
|
+
if (formGlob.includes(":with-ci-build")) {
|
|
116
|
+
const formJsonPath = _path.default.join(formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName);
|
|
117
|
+
const formConfig = await (0, _ResolveFormInfo.readFormConfig)(formJsonPath, new _StaticLogger.NullLogger());
|
|
118
|
+
if (formConfig.build !== "ci") {
|
|
119
|
+
return false;
|
|
150
120
|
}
|
|
151
121
|
}
|
|
152
|
-
return
|
|
153
|
-
}
|
|
154
|
-
return [formGlob];
|
|
155
|
-
}
|
|
156
|
-
async updateAll() {
|
|
157
|
-
this.formGfvs = await this.farmDirectory.resolveFormGlobs(this.formGlobStrings);
|
|
158
|
-
}
|
|
159
|
-
async updateFor(gfv) {
|
|
160
|
-
if (this.formGfvs == undefined || !(await this.isMatch(gfv))) {
|
|
161
|
-
await this.updateAll();
|
|
122
|
+
return true;
|
|
162
123
|
}
|
|
124
|
+
return false;
|
|
163
125
|
}
|
|
164
|
-
async
|
|
165
|
-
if (
|
|
166
|
-
await this.
|
|
126
|
+
static async resolveOnlyFormGlobSpecifiers(formGlob, farmDirectory) {
|
|
127
|
+
if (formGlob.endsWith(":with-ui-tests")) {
|
|
128
|
+
return (await this.resolveGfvGlobs([formGlob], farmDirectory)).map(x => x.gfv);
|
|
167
129
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if (this.formGfvs == undefined) {
|
|
171
|
-
throw new Error("Call method ensureFormGlobsResolved");
|
|
130
|
+
if (formGlob.endsWith(":with-ci-build")) {
|
|
131
|
+
return (await this.resolveGfvGlobs([formGlob], farmDirectory)).map(x => x.gfv);
|
|
172
132
|
}
|
|
173
|
-
return
|
|
133
|
+
return [formGlob];
|
|
174
134
|
}
|
|
175
135
|
}
|
|
176
136
|
exports.FormGlobs = FormGlobs;
|
|
177
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfbG9kYXNoIiwiX1Jlc29sdmVGb3JtSW5mbyIsIl9Gb3JtUGF0aFV0aWxzIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwiX0ZzVXRpbHMiLCJfU3RhdGljTG9nZ2VyIiwiRm9ybUdsb2JzIiwiY29uc3RydWN0b3IiLCJmYXJtRGlyZWN0b3J5IiwiZm9ybUdsb2JTdHJpbmdzIiwiZm9ybUdmdnMiLCJlbnVtZXJhdGVGb3Jtc0luUmVwb3NpdG9yeSIsInJlcG9zaXRvcnlSb290cyIsInJlc3VsdCIsInJlcG9zaXRvcnlSb290IiwiZm9ybUpzb25QYXRoIiwiZ2xvYkFzeW5jIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwiY3dkIiwicGF0aEV4aXN0cyIsInBhdGgiLCJqb2luIiwiZm9ybVBhdGgiLCJkaXJuYW1lIiwiZ2Z2IiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsInB1c2giLCJmb3JtUmVsYXRpdmVQYXRoIiwiVGVzdEZhcm1EaXIiLCJDYW5keVN1YmRpcmVjdG9yeU5hbWUiLCJyZXNvbHZlR2xvYnNUb0dmdnMiLCJmb3JtR2xvYnMiLCJtYXNrIiwiY29uY2F0IiwiXyIsInVuaXEiLCJ2YWxpZGF0ZUdsb2JzIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJFcnJvciIsInJlc29sdmVTcGVjaWZpZXJzIiwiZm9ybUdsb2JzV2l0aFNwZWNpZmllcnMiLCJyZXN1bHRzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsIngiLCJyZXNvbHZlRm9ybUdsb2JTcGVjaWZpZXJzIiwiZmxhdCIsImZvcm1HbG9iIiwiZW5kc1dpdGgiLCJmb3JtcyIsInJlcGxhY2UiLCJmb3JtIiwiZm9ybUNvbmZpZyIsInJlYWRGb3JtQ29uZmlnIiwiTnVsbExvZ2dlciIsImJ1aWxkIiwidXBkYXRlQWxsIiwicmVzb2x2ZUZvcm1HbG9icyIsInVwZGF0ZUZvciIsInVuZGVmaW5lZCIsImlzTWF0Y2giLCJlbnN1cmVGb3JtR2xvYnNSZXNvbHZlZCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQ29tbW9ucy9Gb3JtR2xvYnNVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBGYXJtRGlyZWN0b3J5IH0gZnJvbSBcIi4uL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0RpcmVjdG9yaWVzL0Zhcm1EaXJlY3RvcnlcIjtcbmltcG9ydCB7IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGggfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9uL0Zvcm1QYXRoVXRpbHNcIjtcbmltcG9ydCB7IFdlbGxLbm93bkRpcmVjdG9yaWVzIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9XZWxsS25vd25EaXJlY3Rvcmllc1wiO1xuXG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi9Gc1V0aWxzXCI7XG5pbXBvcnQgeyBOdWxsTG9nZ2VyIH0gZnJvbSBcIi4vTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuZXhwb3J0IGNsYXNzIEZvcm1HbG9icyB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5OiBGYXJtRGlyZWN0b3J5O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUdsb2JTdHJpbmdzOiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIGZvcm1HZnZzPzogc3RyaW5nW107XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZmFybURpcmVjdG9yeTogRmFybURpcmVjdG9yeSwgZm9ybUdsb2JTdHJpbmdzOiBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLmZvcm1HbG9iU3RyaW5ncyA9IGZvcm1HbG9iU3RyaW5ncztcbiAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5ID0gZmFybURpcmVjdG9yeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAuLi5yZXBvc2l0b3J5Um9vdHM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTxBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHJlcG9zaXRvcnlSb290IG9mIHJlcG9zaXRvcnlSb290cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtSnNvblBhdGggb2YgYXdhaXQgZ2xvYkFzeW5jKFxuICAgICAgICAgICAgICAgIGBjYW5keS5mYXJtL2Zvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAgeyBjd2Q6IHJlcG9zaXRvcnlSb290IH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1QYXRoID0gcGF0aC5kaXJuYW1lKGZvcm1Kc29uUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1SZWxhdGl2ZVBhdGg6IGZvcm1QYXRoLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCR7V2VsbEtub3duRGlyZWN0b3JpZXMuVGVzdEZhcm1EaXJ9L2Zvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1QYXRoID0gcGF0aC5kaXJuYW1lKGZvcm1Kc29uUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1SZWxhdGl2ZVBhdGg6IGZvcm1QYXRoLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LnJwbi5mYXJtL2Zvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1QYXRoID0gcGF0aC5kaXJuYW1lKGZvcm1Kc29uUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1SZWxhdGl2ZVBhdGg6IGZvcm1QYXRoLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LmRpYWRvYy5mYXJtL2Zvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1Kc29uUGF0aCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1QYXRoID0gcGF0aC5kaXJuYW1lKGZvcm1Kc29uUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZnY6IGdmdixcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1SZWxhdGl2ZVBhdGg6IGZvcm1QYXRoLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGZvcm1zLyoqLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWV9LyR7V2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZX1gLFxuICAgICAgICAgICAgICAgIHsgY3dkOiByZXBvc2l0b3J5Um9vdCB9XG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtSnNvblBhdGgpKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZnYgPSBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoKGZvcm1QYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtUGF0aDogcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBmb3JtUGF0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtUmVsYXRpdmVQYXRoOiBmb3JtUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyByZXNvbHZlR2xvYnNUb0dmdnMoZm9ybUdsb2JzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG1hc2sgb2YgZm9ybUdsb2JzKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGF3YWl0IGdsb2JBc3luYyhtYXNrLCB7IGN3ZDogcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIikgfSkpLmNvbmNhdChcbiAgICAgICAgICAgICAgICBhd2FpdCBnbG9iQXN5bmMoYGZvcm1zLyoqLyR7bWFza30vJHtXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWV9YCwge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcIi4uXCIpLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfLnVuaXEocmVzdWx0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIHZhbGlkYXRlR2xvYnMoZm9ybUdsb2JzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG1hc2sgb2YgZm9ybUdsb2JzKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGF3YWl0IGdsb2JBc3luYyhtYXNrLCB7IGN3ZDogcGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIikgfSkpLmNvbmNhdChcbiAgICAgICAgICAgICAgICBhd2FpdCBnbG9iQXN5bmMoYGZvcm1zLyoqLyR7bWFza30vJHtXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWV9YCwge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHBhdGguam9pbihmYXJtRGlyZWN0b3J5LCBcIi4uXCIpLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAobWFzay5pbmNsdWRlcyhcIipcIikgfHwgbWFzay5pbmNsdWRlcyhcIj9cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDQnNCw0YHQutCwIEdGViAke21hc2t9INC90LUg0YHQvtC+0YLQstC10YLRgdGC0YHQstGD0LXRgiDQvdC4INC+0LTQvdC+0Lkg0YTQvtGA0LzQtWApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg0KTQvtGA0LzRiyAke21hc2t9INC90LUg0L3QsNC50LTQtdC90L4uYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtR2xvYnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyByZXNvbHZlU3BlY2lmaWVycyhmb3JtR2xvYnNXaXRoU3BlY2lmaWVyczogc3RyaW5nW10sIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgZm9ybUdsb2JzV2l0aFNwZWNpZmllcnMubWFwKHggPT4gdGhpcy5yZXNvbHZlRm9ybUdsb2JTcGVjaWZpZXJzKHgsIGZhcm1EaXJlY3RvcnkpKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmVzdWx0cy5mbGF0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgcmVzb2x2ZUZvcm1HbG9iU3BlY2lmaWVycyhmb3JtR2xvYjogc3RyaW5nLCBmYXJtRGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGlmIChmb3JtR2xvYi5lbmRzV2l0aChcIjp3aXRoLXVpLXRlc3RzXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtcyA9IGF3YWl0IHRoaXMucmVzb2x2ZUdsb2JzVG9HZnZzKFtmb3JtR2xvYi5yZXBsYWNlKFwiOndpdGgtdWktdGVzdHNcIiwgXCJcIildLCBmYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtIG9mIGZvcm1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZm9ybSwgXCJ0ZXN0c1wiKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZm9ybSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZm9ybUdsb2IuZW5kc1dpdGgoXCI6d2l0aC1jaS1idWlsZFwiKSkge1xuICAgICAgICAgICAgY29uc3QgZm9ybXMgPSBhd2FpdCB0aGlzLnJlc29sdmVHbG9ic1RvR2Z2cyhbZm9ybUdsb2IucmVwbGFjZShcIjp3aXRoLWNpLWJ1aWxkXCIsIFwiXCIpXSwgZmFybURpcmVjdG9yeSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm9ybSBvZiBmb3Jtcykge1xuICAgICAgICAgICAgICAgIC8vIFRPRE9cbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBmb3JtLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmb3JtSnNvblBhdGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIG5ldyBOdWxsTG9nZ2VyKCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybUNvbmZpZy5idWlsZCA9PT0gXCJjaVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChmb3JtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtmb3JtR2xvYl07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHVwZGF0ZUFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mb3JtR2Z2cyA9IGF3YWl0IHRoaXMuZmFybURpcmVjdG9yeS5yZXNvbHZlRm9ybUdsb2JzKHRoaXMuZm9ybUdsb2JTdHJpbmdzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdXBkYXRlRm9yKGdmdjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1HZnZzID09IHVuZGVmaW5lZCB8fCAhKGF3YWl0IHRoaXMuaXNNYXRjaChnZnYpKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVBbGwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBlbnN1cmVGb3JtR2xvYnNSZXNvbHZlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUdmdnMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUFsbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGlzTWF0Y2goZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUdmdnMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYWxsIG1ldGhvZCBlbnN1cmVGb3JtR2xvYnNSZXNvbHZlZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtR2Z2cy5pbmNsdWRlcyhnZnYpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxjQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxxQkFBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sUUFBQSxHQUFB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
|
|
137
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2ZzRXh0cmEiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0Zvcm1QYXRoVXRpbHMiLCJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJfRnNVdGlscyIsIl9TdGF0aWNMb2dnZXIiLCJGb3JtR2xvYnMiLCJlbnVtZXJhdGVGb3Jtc0luUmVwb3NpdG9yeSIsInJlcG9zaXRvcnlSb290cyIsInJlc3VsdCIsInJlcG9zaXRvcnlSb290IiwiZm9ybUpzb25QYXRoIiwiZ2xvYkFzeW5jIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3JtSnNvbkZpbGVOYW1lIiwiY3dkIiwiZm9ybVBhdGgiLCJwYXRoIiwiZGlybmFtZSIsImdmdiIsImV4dHJhY3RHZnZGcm9tRm9ybVBhdGgiLCJwdXNoIiwiam9pbiIsImZvcm1SZWxhdGl2ZVBhdGgiLCJUZXN0RmFybURpciIsIkNhbmR5U3ViZGlyZWN0b3J5TmFtZSIsImVuc3VyZUVhY2hHbG9iUmVzb2x2ZXNJbnRvRXhpc3RpbmdGb3JtIiwiZm9ybUdsb2JzIiwiZmFybURpcmVjdG9yeSIsImZvcm1HbG9iIiwicmVzb2x2ZWRHZnZzIiwicmVzb2x2ZUdmdkdsb2JzIiwibGVuZ3RoIiwiRXJyb3IiLCJNYXAiLCJub3JtYWxpemUiLCJpc0Zvcm1NYXRjaFRvR2xvYiIsInNldCIsImVudHJpZXMiLCJtYXAiLCJyZXNvbHZlU3BlY2lmaWVycyIsImZvcm1HbG9ic1dpdGhTcGVjaWZpZXJzIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJ4IiwicmVzb2x2ZU9ubHlGb3JtR2xvYlNwZWNpZmllcnMiLCJmbGF0IiwiZ2Z2UmVnZXhwIiwiUmVnRXhwIiwicmVwbGFjZSIsInRlc3QiLCJpbmNsdWRlcyIsInBhdGhFeGlzdHMiLCJmb3JtQ29uZmlnIiwicmVhZEZvcm1Db25maWciLCJOdWxsTG9nZ2VyIiwiYnVpbGQiLCJlbmRzV2l0aCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQ29tbW9ucy9Gb3JtR2xvYnNVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbi9Gb3JtUGF0aFV0aWxzXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4vRnNVdGlsc1wiO1xuaW1wb3J0IHsgTnVsbExvZ2dlciB9IGZyb20gXCIuL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBGb3JtTG9jYXRpb25JbmZvIH0gZnJvbSBcIi4vRm9ybUxvY2F0aW9uSW5mb1wiO1xuXG5leHBvcnQgY2xhc3MgRm9ybUdsb2JzIHtcbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAuLi5yZXBvc2l0b3J5Um9vdHM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTxBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBBcnJheTx7IGdmdjogc3RyaW5nOyBmb3JtUGF0aDogc3RyaW5nOyBmb3JtUmVsYXRpdmVQYXRoOiBzdHJpbmcgfT4gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHJlcG9zaXRvcnlSb290IG9mIHJlcG9zaXRvcnlSb290cykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmb3JtSnNvblBhdGggb2YgYXdhaXQgZ2xvYkFzeW5jKGBjYW5keS5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsIHtcbiAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCR7V2VsbEtub3duRGlyZWN0b3JpZXMuVGVzdEZhcm1EaXJ9L2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LnJwbi5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYGNhbmR5LmRpYWRvYy5mYXJtL2Zvcm1zLyovJHtXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lfWAsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIGZvcm1QYXRoKSxcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbGF0aXZlUGF0aDogZm9ybVBhdGgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZvcm1Kc29uUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXG4gICAgICAgICAgICAgICAgYCoqLyR7V2VsbEtub3duRGlyZWN0b3JpZXMuQ2FuZHlTdWJkaXJlY3RvcnlOYW1lfS8ke1dlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWV9YCxcbiAgICAgICAgICAgICAgICB7IGN3ZDogcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBcImZvcm1zXCIpIH1cbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguZGlybmFtZShmb3JtSnNvblBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdmdiA9IGV4dHJhY3RHZnZGcm9tRm9ybVBhdGgoZm9ybVBhdGgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1QYXRoOiBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIFwiZm9ybXNcIiwgZm9ybVBhdGgpLFxuICAgICAgICAgICAgICAgICAgICBmb3JtUmVsYXRpdmVQYXRoOiBmb3JtUGF0aCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgZW5zdXJlRWFjaEdsb2JSZXNvbHZlc0ludG9FeGlzdGluZ0Zvcm0oXG4gICAgICAgIGZvcm1HbG9iczogc3RyaW5nW10sXG4gICAgICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgZm9yIChjb25zdCBmb3JtR2xvYiBvZiBmb3JtR2xvYnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkR2Z2cyA9IGF3YWl0IHRoaXMucmVzb2x2ZUdmdkdsb2JzKFtmb3JtR2xvYl0sIGZhcm1EaXJlY3RvcnkpO1xuICAgICAgICAgICAgaWYgKHJlc29sdmVkR2Z2cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYNCk0L7RgNC8INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjRhSAke2Zvcm1HbG9ifSDQvdC1INC90LDQudC00LXQvdC+LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtR2xvYnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyByZXNvbHZlR2Z2R2xvYnMoZm9ybUdsb2JzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxGb3JtTG9jYXRpb25JbmZvW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgeyBnZnYsIGZvcm1QYXRoIH0gb2YgYXdhaXQgRm9ybUdsb2JzLmVudW1lcmF0ZUZvcm1zSW5SZXBvc2l0b3J5KFxuICAgICAgICAgICAgcGF0aC5ub3JtYWxpemUocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwiLi5cIikpXG4gICAgICAgICkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZm9ybUdsb2Igb2YgZm9ybUdsb2JzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF3YWl0IEZvcm1HbG9icy5pc0Zvcm1NYXRjaFRvR2xvYihmb3JtR2xvYiwgZ2Z2LCBmb3JtUGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldChnZnYsIGZvcm1QYXRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gWy4uLnJlc3VsdC5lbnRyaWVzKCldLm1hcCgoW2dmdiwgZm9ybVBhdGhdKSA9PiAoeyBnZnY6IGdmdiwgZm9ybVBhdGg6IGZvcm1QYXRoIH0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIHJlc29sdmVTcGVjaWZpZXJzKGZvcm1HbG9ic1dpdGhTcGVjaWZpZXJzOiBzdHJpbmdbXSwgZmFybURpcmVjdG9yeTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICBmb3JtR2xvYnNXaXRoU3BlY2lmaWVycy5tYXAoeCA9PiB0aGlzLnJlc29sdmVPbmx5Rm9ybUdsb2JTcGVjaWZpZXJzKHgsIGZhcm1EaXJlY3RvcnkpKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gcmVzdWx0cy5mbGF0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgaXNGb3JtTWF0Y2hUb0dsb2IoZm9ybUdsb2I6IHN0cmluZywgZ2Z2OiBzdHJpbmcsIGZvcm1QYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZ2Z2UmVnZXhwID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAgIFwiXlwiICtcbiAgICAgICAgICAgICAgICBmb3JtR2xvYlxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcIjp3aXRoLXVpLXRlc3RzXCIsIFwiXCIpXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiOndpdGgtY2ktYnVpbGRcIiwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKi9naSwgXCJcXFxcZCpcIilcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcPy9naSwgXCJcXFxcZFwiKSArXG4gICAgICAgICAgICAgICAgXCIkXCJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGdmdlJlZ2V4cC50ZXN0KGdmdikpIHtcbiAgICAgICAgICAgIGlmIChmb3JtR2xvYi5pbmNsdWRlcyhcIjp3aXRoLXVpLXRlc3RzXCIpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4oZm9ybVBhdGgsIFwidGVzdHNcIikpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZvcm1HbG9iLmluY2x1ZGVzKFwiOndpdGgtY2ktYnVpbGRcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4oZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIG5ldyBOdWxsTG9nZ2VyKCkpO1xuICAgICAgICAgICAgICAgIGlmIChmb3JtQ29uZmlnLmJ1aWxkICE9PSBcImNpXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhc3luYyByZXNvbHZlT25seUZvcm1HbG9iU3BlY2lmaWVycyhmb3JtR2xvYjogc3RyaW5nLCBmYXJtRGlyZWN0b3J5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGlmIChmb3JtR2xvYi5lbmRzV2l0aChcIjp3aXRoLXVpLXRlc3RzXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMucmVzb2x2ZUdmdkdsb2JzKFtmb3JtR2xvYl0sIGZhcm1EaXJlY3RvcnkpKS5tYXAoeCA9PiB4Lmdmdik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1HbG9iLmVuZHNXaXRoKFwiOndpdGgtY2ktYnVpbGRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5yZXNvbHZlR2Z2R2xvYnMoW2Zvcm1HbG9iXSwgZmFybURpcmVjdG9yeSkpLm1hcCh4ID0+IHguZ2Z2KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2Zvcm1HbG9iXTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFHQSxJQUFBRSxnQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUdPLE1BQU1PLFNBQVMsQ0FBQztFQUNuQixhQUFvQkMsMEJBQTBCQSxDQUMxQyxHQUFHQyxlQUF5QixFQUMrQztJQUMz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
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL0NvbW1vbnMvRm9ybUxvY2F0aW9uSW5mby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZvcm1Mb2NhdGlvbkluZm8ge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGZvcm1QYXRoOiBzdHJpbmc7XG59XG4iXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -8,7 +8,9 @@ exports.DirectoryEntriesProducer = void 0;
|
|
|
8
8
|
var path = _interopRequireWildcard(require("path"));
|
|
9
9
|
var _chokidar = require("chokidar");
|
|
10
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
11
|
+
var _fsExtra = require("fs-extra");
|
|
11
12
|
var _FsUtils = require("../FsUtils");
|
|
13
|
+
var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
|
|
12
14
|
var _ChainableValueProducer = require("./ChainableValueProducer");
|
|
13
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -55,7 +57,9 @@ class DirectoryEntriesProducer extends _ChainableValueProducer.ObservableValuePr
|
|
|
55
57
|
});
|
|
56
58
|
for (const matchedPath of paths) {
|
|
57
59
|
if (await (0, _FsUtils.isDirectoryExists)(path.join(this.pathToDir, matchedPath))) {
|
|
58
|
-
|
|
60
|
+
if (await (0, _fsExtra.pathExists)(path.join(this.pathToDir, matchedPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName))) {
|
|
61
|
+
result.push(matchedPath);
|
|
62
|
+
}
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
65
|
}
|
|
@@ -70,4 +74,4 @@ class DirectoryEntriesProducer extends _ChainableValueProducer.ObservableValuePr
|
|
|
70
74
|
}
|
|
71
75
|
}
|
|
72
76
|
exports.DirectoryEntriesProducer = DirectoryEntriesProducer;
|
|
73
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2Nob2tpZGFyIiwiX2xvZGFzaCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZnNFeHRyYSIsIl9Gc1V0aWxzIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwiX0NoYWluYWJsZVZhbHVlUHJvZHVjZXIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiRGlyZWN0b3J5RW50cmllc1Byb2R1Y2VyIiwiT2JzZXJ2YWJsZVZhbHVlUHJvZHVjZXJCYXNlIiwiY29uc3RydWN0b3IiLCJwYXRoVG9EaXIiLCJtYXNrcyIsImxhc3RWYWx1ZSIsIndhdGNoZXIiLCJiZWdpbkxpc3RlbmluZyIsInVuZGVmaW5lZCIsIndhdGNoIiwiaWdub3JlSW5pdGlhbCIsImN3ZCIsImlnbm9yZVBlcm1pc3Npb25FcnJvcnMiLCJ1c2VQb2xsaW5nIiwiZGVwdGgiLCJoYW5kbGVBbnlGc0V2ZW50RGVib3VuY2VkIiwiXyIsImRlYm91bmNlIiwiaGFuZGxlQW55RnNFdmVudCIsIm9uIiwic3RvcExpc3RlbmluZyIsImNsb3NlIiwiZ2V0Q3VycmVudFZhbHVlIiwicmVzb2x2ZURpcmVjdG9yeUNvbnRlbnQiLCJyZXN1bHQiLCJtYXNrIiwicGF0aHMiLCJnbG9iQXN5bmMiLCJtYXRjaGVkUGF0aCIsImlzRGlyZWN0b3J5RXhpc3RzIiwiam9pbiIsInBhdGhFeGlzdHMiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJwdXNoIiwidW5pcSIsIm5leHRWYWx1ZSIsImlzRXF1YWwiLCJlbWl0VXBkYXRlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9Db21tb25zL1Rhc2tzQ29yZS9EaXJlY3RvcnlFbnRyaWVzUHJvZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBGU1dhdGNoZXIsIHdhdGNoIH0gZnJvbSBcImNob2tpZGFyXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdsb2JBc3luYywgaXNEaXJlY3RvcnlFeGlzdHMgfSBmcm9tIFwiLi4vRnNVdGlsc1wiO1xuaW1wb3J0IHsgV2VsbEtub3duRGlyZWN0b3JpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmltcG9ydCB7IE9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZSB9IGZyb20gXCIuL0NoYWluYWJsZVZhbHVlUHJvZHVjZXJcIjtcblxuZXhwb3J0IGNsYXNzIERpcmVjdG9yeUVudHJpZXNQcm9kdWNlciBleHRlbmRzIE9ic2VydmFibGVWYWx1ZVByb2R1Y2VyQmFzZTxzdHJpbmdbXT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcGF0aFRvRGlyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXNrczogc3RyaW5nW107XG4gICAgcHJpdmF0ZSBsYXN0VmFsdWU/OiBzdHJpbmdbXTtcbiAgICBwcml2YXRlIHdhdGNoZXI/OiBGU1dhdGNoZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGF0aFRvRGlyOiBzdHJpbmcsIG1hc2tzOiBzdHJpbmdbXSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBhdGhUb0RpciA9IHBhdGhUb0RpcjtcbiAgICAgICAgdGhpcy5tYXNrcyA9IG1hc2tzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBiZWdpbkxpc3RlbmluZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hlciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndhdGNoZXIgPSB3YXRjaCh0aGlzLm1hc2tzLCB7XG4gICAgICAgICAgICBpZ25vcmVJbml0aWFsOiB0cnVlLFxuICAgICAgICAgICAgY3dkOiB0aGlzLnBhdGhUb0RpcixcbiAgICAgICAgICAgIGlnbm9yZVBlcm1pc3Npb25FcnJvcnM6IGZhbHNlLFxuICAgICAgICAgICAgdXNlUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGRlcHRoOiAxLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgaGFuZGxlQW55RnNFdmVudERlYm91bmNlZCA9IF8uZGVib3VuY2UoKCkgPT4gdGhpcy5oYW5kbGVBbnlGc0V2ZW50KCksIDEwMDApO1xuICAgICAgICB0aGlzLndhdGNoZXIub24oXCJhbGxcIiwgaGFuZGxlQW55RnNFdmVudERlYm91bmNlZCk7XG4gICAgICAgIHRoaXMud2F0Y2hlci5vbihcImVycm9yXCIsIGhhbmRsZUFueUZzRXZlbnREZWJvdW5jZWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBzdG9wTGlzdGVuaW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy53YXRjaGVyICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgICAgICAgICAgdGhpcy53YXRjaGVyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgZ2V0Q3VycmVudFZhbHVlKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBhd2FpdCB0aGlzLnJlc29sdmVEaXJlY3RvcnlDb250ZW50KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlc29sdmVEaXJlY3RvcnlDb250ZW50KCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IG1hc2sgb2YgdGhpcy5tYXNrcykge1xuICAgICAgICAgICAgY29uc3QgcGF0aHMgPSBhd2FpdCBnbG9iQXN5bmMobWFzaywgeyBjd2Q6IHRoaXMucGF0aFRvRGlyIH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaGVkUGF0aCBvZiBwYXRocykge1xuICAgICAgICAgICAgICAgIGlmIChhd2FpdCBpc0RpcmVjdG9yeUV4aXN0cyhwYXRoLmpvaW4odGhpcy5wYXRoVG9EaXIsIG1hdGNoZWRQYXRoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGF0aEV4aXN0cyhwYXRoLmpvaW4odGhpcy5wYXRoVG9EaXIsIG1hdGNoZWRQYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChtYXRjaGVkUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF8udW5pcShyZXN1bHQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaGFuZGxlQW55RnNFdmVudCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gYXdhaXQgdGhpcy5yZXNvbHZlRGlyZWN0b3J5Q29udGVudCgpO1xuICAgICAgICBpZiAoIV8uaXNFcXVhbCh0aGlzLmxhc3RWYWx1ZSwgbmV4dFZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBuZXh0VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmVtaXRVcGRhdGUodGhpcy5sYXN0VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0scUJBQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLHVCQUFBLEdBQUFQLE9BQUE7QUFBdUUsU0FBQVEseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQVYsd0JBQUFjLEdBQUEsRUFBQUosV0FBQSxTQUFBQSxXQUFBLElBQUFJLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLFdBQUFELEdBQUEsUUFBQUEsR0FBQSxvQkFBQUEsR0FBQSx3QkFBQUEsR0FBQSw0QkFBQUUsT0FBQSxFQUFBRixHQUFBLFVBQUFHLEtBQUEsR0FBQVIsd0JBQUEsQ0FBQUMsV0FBQSxPQUFBTyxLQUFBLElBQUFBLEtBQUEsQ0FBQUMsR0FBQSxDQUFBSixHQUFBLFlBQUFHLEtBQUEsQ0FBQUUsR0FBQSxDQUFBTCxHQUFBLFNBQUFNLE1BQUEsV0FBQUMs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
|