@kontur.candy/tools 2.191.0 → 2.191.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.
|
@@ -18,4 +18,4 @@ function extractGfvFromFormPath(formPath) {
|
|
|
18
18
|
console.trace(`[Error] Unable to determine gfv from path: ${formPath}`);
|
|
19
19
|
throw new Error(`Unable to determine gfv from path: ${formPath}`);
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfV2VsbEtub3duRGlyZWN0b3JpZXMiLCJyZXF1aXJlIiwiZXh0cmFjdEdmdkZyb21Gb3JtUGF0aCIsImZvcm1QYXRoIiwiX21hdGNoJGdyb3VwcyRnZnYiLCJfbWF0Y2gkZ3JvdXBzIiwiX21hdGNoJGdyb3VwczIiLCJyZWdleHAiLCJSZWdFeHAiLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkNhbmR5U3ViZGlyZWN0b3J5TmFtZSIsIlRlc3RGYXJtRGlyIiwibWF0Y2giLCJleGVjIiwiZ2Z2IiwiZ3JvdXBzIiwiY29uc29sZSIsInRyYWNlIiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi9Db21tb24vRm9ybVBhdGhVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuL1dlbGxLbm93bkRpcmVjdG9yaWVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0R2Z2RnJvbUZvcm1QYXRoKGZvcm1QYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoXG4gICAgICAgIGAoW1xcXFwvXFxcXFxcXFxdKD88Z2Z2MT5cXFxcZHs2LH0pW1xcXFwvXFxcXFxcXFxdJHtXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWV9KXwoKChcXFxcLmZhcm0pfCgke1dlbGxLbm93bkRpcmVjdG9yaWVzLlRlc3RGYXJtRGlyfSkpW1xcXFwvXFxcXFxcXFxdZm9ybXNbXFxcXC9cXFxcXFxcXF0oPzxnZnYyPlxcXFxkezYsfSkpYFxuICAgICk7XG4gICAgY29uc3QgbWF0Y2ggPSByZWdleHAuZXhlYyhmb3JtUGF0aCk7XG4gICAgY29uc3QgZ2Z2ID0gbWF0Y2g/Lmdyb3Vwcz8uW1wiZ2Z2MVwiXSA/PyBtYXRjaD8uZ3JvdXBzPy5bXCJnZnYyXCJdO1xuICAgIGlmIChnZnYpIHtcbiAgICAgICAgcmV0dXJuIGdmdjtcbiAgICB9XG4gICAgLy8g0J7RiNC40LHQutCwINC90LUg0LTQvtC70LXRgtCw0LXRgiDQtNC+INC60L7QvdGB0L7Qu9C4INC/0YDQuCDRgNCw0LHQvtGC0LUg0YEg0YHQtdGA0LLQuNGB0YDQsNC90LXRgNCwLiDQn9C+0Y3RgtC+0LzRgyDQtNC+0L8uINC60L7QvdGB0L7Qu9GM0LrQsFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS50cmFjZShgW0Vycm9yXSBVbmFibGUgdG8gZGV0ZXJtaW5lIGdmdiBmcm9tIHBhdGg6ICR7Zm9ybVBhdGh9YCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZGV0ZXJtaW5lIGdmdiBmcm9tIHBhdGg6ICR7Zm9ybVBhdGh9YCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHFCQUFBLEdBQUFDLE9BQUE7QUFFTyxTQUFTQyxzQkFBc0JBLENBQUNDLFFBQWdCLEVBQVU7RUFBQSxJQUFBQyxpQkFBQSxFQUFBQyxhQUFBLEVBQUFDLGNBQUE7RUFDN0QsTUFBTUMsTUFBTSxHQUFHLElBQUlDLE1BQU0sQ0FDckIsc0NBQXNDQywwQ0FBb0IsQ0FBQ0MscUJBQXFCLGtCQUFrQkQsMENBQW9CLENBQUNFLFdBQVcsNENBQ3RJLENBQUM7RUFDRCxNQUFNQyxLQUFLLEdBQUdMLE1BQU0sQ0FBQ00sSUFBSSxDQUFDVixRQUFRLENBQUM7RUFDbkMsTUFBTVcsR0FBRyxJQUFBVixpQkFBQSxHQUFHUSxLQUFLLGFBQUxBLEtBQUssZ0JBQUFQLGFBQUEsR0FBTE8sS0FBSyxDQUFFRyxNQUFNLGNBQUFWLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZ0IsTUFBTSxDQUFDLGNBQUFELGlCQUFBLGNBQUFBLGlCQUFBLEdBQUlRLEtBQUssYUFBTEEsS0FBSyxnQkFBQU4sY0FBQSxHQUFMTSxLQUFLLENBQUVHLE1BQU0sY0FBQVQsY0FBQSx1QkFBYkEsY0FBQSxDQUFnQixNQUFNLENBQUM7RUFDOUQsSUFBSVEsR0FBRyxFQUFFO0lBQ0wsT0FBT0EsR0FBRztFQUNkO0VBQ0E7RUFDQTtFQUNBRSxPQUFPLENBQUNDLEtBQUssQ0FBQyw4Q0FBOENkLFFBQVEsRUFBRSxDQUFDO0VBQ3ZFLE1BQU0sSUFBSWUsS0FBSyxDQUFDLHNDQUFzQ2YsUUFBUSxFQUFFLENBQUM7QUFDckUiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormPathUtils.js","names":["_WellKnownDirectories","require","extractGfvFromFormPath","formPath","_match$groups$gfv","_match$groups","_match$groups2","regexp","RegExp","WellKnownDirectories","CandySubdirectoryName","TestFarmDir","match","exec","gfv","groups","console","trace","Error"],"sources":["../../../Common/FormPathUtils.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"FormPathUtils.js","names":["_WellKnownDirectories","require","extractGfvFromFormPath","formPath","_match$groups$gfv","_match$groups","_match$groups2","regexp","RegExp","WellKnownDirectories","CandySubdirectoryName","TestFarmDir","match","exec","gfv","groups","console","trace","Error"],"sources":["../../../Common/FormPathUtils.ts"],"sourcesContent":["import { WellKnownDirectories } from \"./WellKnownDirectories\";\n\nexport function extractGfvFromFormPath(formPath: string): string {\n const regexp = new RegExp(\n `([\\\\/\\\\\\\\](?<gfv1>\\\\d{6,})[\\\\/\\\\\\\\]${WellKnownDirectories.CandySubdirectoryName})|(((\\\\.farm)|(${WellKnownDirectories.TestFarmDir}))[\\\\/\\\\\\\\]forms[\\\\/\\\\\\\\](?<gfv2>\\\\d{6,}))`\n );\n const match = regexp.exec(formPath);\n const gfv = match?.groups?.[\"gfv1\"] ?? match?.groups?.[\"gfv2\"];\n if (gfv) {\n return gfv;\n }\n // Ошибка не долетает до консоли при работе с сервисранера. Поэтому доп. консолька\n // eslint-disable-next-line no-console\n console.trace(`[Error] Unable to determine gfv from path: ${formPath}`);\n throw new Error(`Unable to determine gfv from path: ${formPath}`);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AAEO,SAASC,sBAAsBA,CAACC,QAAgB,EAAU;EAAA,IAAAC,iBAAA,EAAAC,aAAA,EAAAC,cAAA;EAC7D,MAAMC,MAAM,GAAG,IAAIC,MAAM,CACrB,sCAAsCC,0CAAoB,CAACC,qBAAqB,kBAAkBD,0CAAoB,CAACE,WAAW,4CACtI,CAAC;EACD,MAAMC,KAAK,GAAGL,MAAM,CAACM,IAAI,CAACV,QAAQ,CAAC;EACnC,MAAMW,GAAG,IAAAV,iBAAA,GAAGQ,KAAK,aAALA,KAAK,gBAAAP,aAAA,GAALO,KAAK,CAAEG,MAAM,cAAAV,aAAA,uBAAbA,aAAA,CAAgB,MAAM,CAAC,cAAAD,iBAAA,cAAAA,iBAAA,GAAIQ,KAAK,aAALA,KAAK,gBAAAN,cAAA,GAALM,KAAK,CAAEG,MAAM,cAAAT,cAAA,uBAAbA,cAAA,CAAgB,MAAM,CAAC;EAC9D,IAAIQ,GAAG,EAAE;IACL,OAAOA,GAAG;EACd;EACA;EACA;EACAE,OAAO,CAACC,KAAK,CAAC,8CAA8Cd,QAAQ,EAAE,CAAC;EACvE,MAAM,IAAIe,KAAK,CAAC,sCAAsCf,QAAQ,EAAE,CAAC;AACrE","ignoreList":[]}
|
|
@@ -35,7 +35,7 @@ async function runInitForm(context, options) {
|
|
|
35
35
|
} = splitGfv(gfv);
|
|
36
36
|
const formPath = path.join(repositoryRoot, _WellKnownDirectories.WellKnownDirectories.FormsDirectory, g.toString(), f.toString().padStart(3, "0"), gfv.toString(), _WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName);
|
|
37
37
|
if (await (0, _fsExtra.pathExists)(formPath)) {
|
|
38
|
-
const errorMessage = `Directory for '${gfv}' already exists.`;
|
|
38
|
+
const errorMessage = `Directory for '${gfv}' already exists in Candy folder.`;
|
|
39
39
|
gfvLogger.error(errorMessage);
|
|
40
40
|
throw new Error(errorMessage);
|
|
41
41
|
}
|
|
@@ -114,4 +114,4 @@ function splitGfv(gfv) {
|
|
|
114
114
|
v: gfvNumber % 100
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsInBhdGgiLCJfZnNFeHRyYSIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0ZzVXRpbHMiLCJfQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlciIsIl9XZWxsS25vd25EaXJlY3RvcmllcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsInJ1bkluaXRGb3JtIiwiY29udGV4dCIsIm9wdGlvbnMiLCJsb2dnZXIiLCJnZnZzIiwidW5kZWZpbmVkIiwiSW52YWxpZENvbW1hbmRMaW5lQXJndW1lbnRzRXJyb3IiLCJyZXBvc2l0b3J5Um9vdCIsInByb2Nlc3MiLCJjd2QiLCJ0ZW1wbGF0ZURpciIsImpvaW4iLCJfX2Rpcm5hbWUiLCJiYXNlbmFtZSIsIm5vcm1hbGl6ZSIsImlzRGlyZWN0b3J5RXhpc3RzIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3Jtc0RpcmVjdG9yeSIsIkVycm9yIiwiZ2Z2IiwiZ2Z2TG9nZ2VyIiwid2l0aFByZWZpeCIsImciLCJmIiwic3BsaXRHZnYiLCJmb3JtUGF0aCIsInRvU3RyaW5nIiwicGFkU3RhcnQiLCJDYW5keVN1YmRpcmVjdG9yeU5hbWUiLCJwYXRoRXhpc3RzIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3IiLCJ0ZW1wT3V0cHV0RGlyIiwicm1kaXIiLCJyZWN1cnNpdmUiLCJsb2ciLCJlbnN1cmVEaXIiLCJoaWdobGFuZGVyRmFybVBhdGgiLCJobFJuZ1BhdGgxIiwiaGxSbmdQYXRoMiIsInJlbGF0aXZlRmlsZVBhdGgiLCJnbG9iQXN5bmMiLCJ0YXJnZXRSZWxhdGl2ZVBhdGgiLCJyZXBsYWNlIiwidmVyYm9zZSIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImhscm5nIiwiZXhpc3RzSGxSbmdQYXRoIiwiY29udGVudCIsInJlYWRGaWxlIiwidGFyZ2V0Q29udGVudCIsIndyaXRlRmlsZSIsImluY2x1ZGVzIiwiZm9ybUpzb25QYXRoIiwiRm9ybUpzb25GaWxlTmFtZSIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsImRlcGVuZGVuY2llcyIsImVuZ2luZSIsImdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uIiwiZ2VuZXJhdG9yIiwiZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24iLCJ3cml0ZUpzb24iLCJzcGFjZXMiLCJtb3ZlRGlyZWN0b3J5Iiwic291cmNlUGF0aCIsInRhcmdldFBhdGgiLCJiYXNlZGlyIiwiZGlybmFtZSIsInBsYXRmb3JtIiwicmVuYW1lIiwibW92ZSIsImdmdk51bWJlciIsIk51bWJlciIsIk1hdGgiLCJmbG9vciIsInYiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvSW5pdEZvcm0vUnVuSW5pdEZvcm0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGVuc3VyZURpciwgbW92ZSwgcGF0aEV4aXN0cywgcmVhZEZpbGUsIHJlbmFtZSwgcm1kaXIsIHN0YXQsIHdyaXRlRmlsZSwgd3JpdGVKc29uIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uLCBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgcmVhZEZvcm1Db25maWcgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jLCBpc0RpcmVjdG9yeUV4aXN0cyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IEludmFsaWRDb21tYW5kTGluZUFyZ3VtZW50c0Vycm9yIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvT3B0aW9ucy9Db21tYW5kQmFzZWRPcHRpb25zUGFyc2VyXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgSW5pdEZvcm1PcHRpb25zIH0gZnJvbSBcIi4vSW5pdEZvcm1PcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Jbml0Rm9ybShjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LCBvcHRpb25zOiBJbml0Rm9ybU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlcjtcbiAgICBpZiAob3B0aW9ucy5nZnZzID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbW1hbmRMaW5lQXJndW1lbnRzRXJyb3IoXCLQndC1INGD0LrQsNC30LDQvdCwIEdWRiDQtNC70Y8g0YHQvtC30LTQsNC90LjRj1wiLCBcIlwiKTtcbiAgICB9XG5cbiAgICBsZXQgcmVwb3NpdG9yeVJvb3QgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IHRlbXBsYXRlRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCJFbXB0eUZvcm1UZW1wbGF0ZVwiKTtcbiAgICBpZiAoXG4gICAgICAgIHBhdGguYmFzZW5hbWUocHJvY2Vzcy5jd2QoKSkgPT09IFwiY2FuZHkuZmFybVwiIHx8XG4gICAgICAgIHBhdGguYmFzZW5hbWUocHJvY2Vzcy5jd2QoKSkgPT09IFwiY2FuZHkuZGlhZG9jLmZhcm1cIiB8fFxuICAgICAgICBwYXRoLmJhc2VuYW1lKHByb2Nlc3MuY3dkKCkpID09PSBcImNhbmR5LnJwbi5mYXJtXCIgfHxcbiAgICAgICAgcGF0aC5iYXNlbmFtZShwcm9jZXNzLmN3ZCgpKSA9PT0gXCJUZXN0RmFybVwiXG4gICAgKSB7XG4gICAgICAgIHJlcG9zaXRvcnlSb290ID0gcGF0aC5ub3JtYWxpemUocGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBcIi4uXCIpKTtcbiAgICB9XG5cbiAgICBpZiAoIShhd2FpdCBpc0RpcmVjdG9yeUV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1zRGlyZWN0b3J5KSkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcItCi0LXQutGD0YnQsNGPINC00LjRgNC10LrRgtC+0YDQuNGPINC90LUg0L/QvtGF0L7QttCwINC90LAg0LrQsNGC0LDQu9C+0LMg0YEg0LjRgdGF0L7QtNC90LjQutCw0LzQuCDRhNC+0YDQvFwiKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGdmdiBvZiBvcHRpb25zLmdmdnMpIHtcbiAgICAgICAgY29uc3QgZ2Z2TG9nZ2VyID0gbG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KTtcbiAgICAgICAgY29uc3QgeyBnLCBmIH0gPSBzcGxpdEdmdihnZnYpO1xuICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgIHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybXNEaXJlY3RvcnksXG4gICAgICAgICAgICBnLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBmLnRvU3RyaW5nKCkucGFkU3RhcnQoMywgXCIwXCIpLFxuICAgICAgICAgICAgZ2Z2LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZm9ybVBhdGgpKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgRGlyZWN0b3J5IGZvciAnJHtnZnZ9JyBhbHJlYWR5IGV4aXN0cy5gO1xuICAgICAgICAgICAgZ2Z2TG9nZ2VyLmVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZW1wT3V0cHV0RGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCIudG1wXCIsIGdmdik7XG4gICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHRlbXBPdXRwdXREaXIpKSB7XG4gICAgICAgICAgICBhd2FpdCBybWRpcih0ZW1wT3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBnZnZMb2dnZXIubG9nKGBDcmVhdGluZyBkaXJlY3Rvcnkgd2l0aCBzb3VyY2VzIGZyb20gdGVtcGxhdGVgKTtcbiAgICAgICAgYXdhaXQgZW5zdXJlRGlyKHRlbXBPdXRwdXREaXIpO1xuICAgICAgICBjb25zdCBoaWdobGFuZGVyRmFybVBhdGggPSBwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIFwiaGlnaGxhbmRlci5mYXJtXCIsIFwiRm9ybXNcIiwgZ2Z2KTtcbiAgICAgICAgY29uc3QgaGxSbmdQYXRoMSA9IHBhdGguam9pbihoaWdobGFuZGVyRmFybVBhdGgsIGAke2dmdn0u0YHRhdC10LzQsC5ybmcueG1sYCk7XG4gICAgICAgIGNvbnN0IGhsUm5nUGF0aDIgPSBwYXRoLmpvaW4oaGlnaGxhbmRlckZhcm1QYXRoLCBcIkhpZ2hsYW5kZXJcIiwgYCR7Z2Z2fS7RgdGF0LXQvNCwLnJuZy54bWxgKTtcbiAgICAgICAgZm9yIChjb25zdCByZWxhdGl2ZUZpbGVQYXRoIG9mIGF3YWl0IGdsb2JBc3luYyhcIioqLypcIiwgeyBjd2Q6IHRlbXBsYXRlRGlyIH0pKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRSZWxhdGl2ZVBhdGggPSByZWxhdGl2ZUZpbGVQYXRoLnJlcGxhY2UoL3tnZnZ9L2csIGdmdik7XG4gICAgICAgICAgICBnZnZMb2dnZXIudmVyYm9zZShgUHJvY2Vzc2luZyB0ZW1wbGF0ZSBwYXRoICR7cmVsYXRpdmVGaWxlUGF0aH1gKTtcbiAgICAgICAgICAgIGlmICgoYXdhaXQgc3RhdChwYXRoLmpvaW4odGVtcGxhdGVEaXIsIHJlbGF0aXZlRmlsZVBhdGgpKSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGVuc3VyZURpcihwYXRoLmpvaW4odGVtcE91dHB1dERpciwgdGFyZ2V0UmVsYXRpdmVQYXRoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5obHJuZyAmJlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRSZWxhdGl2ZVBhdGggPT09IGBzY2hlbWFzLyR7Z2Z2fS4wLnJuZy54bWxgICYmXG4gICAgICAgICAgICAgICAgICAgICgoYXdhaXQgcGF0aEV4aXN0cyhobFJuZ1BhdGgxKSkgfHwgKGF3YWl0IHBhdGhFeGlzdHMoaGxSbmdQYXRoMikpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdHNIbFJuZ1BhdGggPSAoYXdhaXQgcGF0aEV4aXN0cyhobFJuZ1BhdGgxKSkgPyBobFJuZ1BhdGgxIDogaGxSbmdQYXRoMjtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2TG9nZ2VyLmxvZyhgQ29weSBzY2hlbWEgcm5nIGZpbGUgZnJvbSBoaWdobGFuZGVyLmZhcm0uYCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShleGlzdHNIbFJuZ1BhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldENvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoL3tnZnZ9L2csIGdmdik7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLmpvaW4odGVtcE91dHB1dERpciwgdGFyZ2V0UmVsYXRpdmVQYXRoKSwgdGFyZ2V0Q29udGVudCwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0UmVsYXRpdmVQYXRoLmluY2x1ZGVzKFwiaGVscGVycy9hZGRQcmlsMS50eHRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v0L/RgNC4INC60L7Qv9C40YDQvtCy0LDQvdC40LgganMg0YTQsNC50LvQvtCyIGJhYmVsINC90LDRgdC+0LLRi9Cy0LDQtdGCIHVzZSBzdHJpY3QsINC+0LHQvtGI0LvQuCDRgtCw0LrQuNC8INC/0YPRgtC10LxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShwYXRoLmpvaW4odGVtcGxhdGVEaXIsIHJlbGF0aXZlRmlsZVBhdGgpLCBcInV0Zi04XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbih0ZW1wT3V0cHV0RGlyLCB0YXJnZXRSZWxhdGl2ZVBhdGgucmVwbGFjZShcIi50eHRcIiwgXCIuanNcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ1dGYtOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHBhdGguam9pbih0ZW1wbGF0ZURpciwgcmVsYXRpdmVGaWxlUGF0aCksIFwidXRmLThcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRDb250ZW50ID0gY29udGVudC5yZXBsYWNlKC97Z2Z2fS9nLCBnZnYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGguam9pbih0ZW1wT3V0cHV0RGlyLCB0YXJnZXRSZWxhdGl2ZVBhdGgpLCB0YXJnZXRDb250ZW50LCBcInV0Zi04XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ2Z2TG9nZ2VyLnZlcmJvc2UoYFByb2Nlc3NlZCB0ZW1wbGF0ZSBwYXRoICR7cmVsYXRpdmVGaWxlUGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtSnNvblBhdGggPSBwYXRoLmpvaW4odGVtcE91dHB1dERpciwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSk7XG4gICAgICAgIGNvbnN0IGZvcm1Db25maWcgPSBhd2FpdCByZWFkRm9ybUNvbmZpZyhmb3JtSnNvblBhdGgsIGdmdkxvZ2dlcik7XG4gICAgICAgIGZvcm1Db25maWcuZGVwZW5kZW5jaWVzID0ge1xuICAgICAgICAgICAgZW5naW5lOiBhd2FpdCBnZXRMYXN0U3RhYmxlRW5naW5lVmVyc2lvbigpLFxuICAgICAgICAgICAgZ2VuZXJhdG9yOiBhd2FpdCBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbigpLFxuICAgICAgICB9O1xuICAgICAgICBnZnZMb2dnZXIubG9nKGBTZXQgbGFzdCBzdGFibGUgdmVyc2lvbiAke2Zvcm1Db25maWcuZGVwZW5kZW5jaWVzLmVuZ2luZX1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVKc29uKGZvcm1Kc29uUGF0aCwgZm9ybUNvbmZpZywgeyBzcGFjZXM6IDIgfSk7XG4gICAgICAgIGdmdkxvZ2dlci5sb2coYE1vdmluZyBwcmVwYXJlZCBzb3VyY2VzIHRvICcke3JlcG9zaXRvcnlSb290fSdgKTtcbiAgICAgICAgYXdhaXQgbW92ZURpcmVjdG9yeSh0ZW1wT3V0cHV0RGlyLCBmb3JtUGF0aCk7XG4gICAgICAgIGdmdkxvZ2dlci5sb2coYEZvcm0gY3JlYXRpbmcgY29tcGxldGVkLiBQYXRoOiAnJHtmb3JtUGF0aH0nYCk7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBtb3ZlRGlyZWN0b3J5KHNvdXJjZVBhdGg6IHN0cmluZywgdGFyZ2V0UGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYmFzZWRpciA9IHBhdGguZGlybmFtZSh0YXJnZXRQYXRoKTtcbiAgICBhd2FpdCBlbnN1cmVEaXIoYmFzZWRpcik7XG4gICAgaWYgKG9zLnBsYXRmb3JtKCkgIT09IFwid2luMzJcIikge1xuICAgICAgICBhd2FpdCByZW5hbWUoc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNvdXJjZVBhdGhbMF0gPT09IHRhcmdldFBhdGhbMF0pIHtcbiAgICAgICAgICAgIGF3YWl0IHJlbmFtZShzb3VyY2VQYXRoLCB0YXJnZXRQYXRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF3YWl0IG1vdmUoc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNwbGl0R2Z2KGdmdjogc3RyaW5nIHwgbnVtYmVyKTogeyBnOiBudW1iZXI7IGY6IG51bWJlcjsgdjogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGdmdk51bWJlciA9IHR5cGVvZiBnZnYgPT09IFwic3RyaW5nXCIgPyBOdW1iZXIoZ2Z2KSA6IGdmdjtcbiAgICByZXR1cm4ge1xuICAgICAgICBnOiBNYXRoLmZsb29yKGdmdk51bWJlciAvIDEwMDAwMCksXG4gICAgICAgIGY6IE1hdGguZmxvb3IoKGdmdk51bWJlciAlIDEwMDAwMCkgLyAxMDApLFxuICAgICAgICB2OiBnZnZOdW1iZXIgJSAxMDAsXG4gICAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsRUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsSUFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsc0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGdCQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSwwQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8scUJBQUEsR0FBQVAsT0FBQTtBQUErRSxTQUFBUSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBVix3QkFBQVUsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFdBQUFLLE9BQUEsRUFBQUwsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFHLEdBQUEsQ0FBQU4sQ0FBQSxVQUFBRyxDQUFBLENBQUFJLEdBQUEsQ0FBQVAsQ0FBQSxPQUFBUSxDQUFBLEtBQUFDLFNBQUEsVUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxDQUFBLElBQUFkLENBQUEsb0JBQUFjLENBQUEsT0FBQUMsY0FBQSxDQUFB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
|
|
117
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsInBhdGgiLCJfZnNFeHRyYSIsIl9QdWJsaXNoZWRWZXJzaW9uVXRpbHMiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX0ZzVXRpbHMiLCJfQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlciIsIl9XZWxsS25vd25EaXJlY3RvcmllcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsInJ1bkluaXRGb3JtIiwiY29udGV4dCIsIm9wdGlvbnMiLCJsb2dnZXIiLCJnZnZzIiwidW5kZWZpbmVkIiwiSW52YWxpZENvbW1hbmRMaW5lQXJndW1lbnRzRXJyb3IiLCJyZXBvc2l0b3J5Um9vdCIsInByb2Nlc3MiLCJjd2QiLCJ0ZW1wbGF0ZURpciIsImpvaW4iLCJfX2Rpcm5hbWUiLCJiYXNlbmFtZSIsIm5vcm1hbGl6ZSIsImlzRGlyZWN0b3J5RXhpc3RzIiwiV2VsbEtub3duRGlyZWN0b3JpZXMiLCJGb3Jtc0RpcmVjdG9yeSIsIkVycm9yIiwiZ2Z2IiwiZ2Z2TG9nZ2VyIiwid2l0aFByZWZpeCIsImciLCJmIiwic3BsaXRHZnYiLCJmb3JtUGF0aCIsInRvU3RyaW5nIiwicGFkU3RhcnQiLCJDYW5keVN1YmRpcmVjdG9yeU5hbWUiLCJwYXRoRXhpc3RzIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3IiLCJ0ZW1wT3V0cHV0RGlyIiwicm1kaXIiLCJyZWN1cnNpdmUiLCJsb2ciLCJlbnN1cmVEaXIiLCJoaWdobGFuZGVyRmFybVBhdGgiLCJobFJuZ1BhdGgxIiwiaGxSbmdQYXRoMiIsInJlbGF0aXZlRmlsZVBhdGgiLCJnbG9iQXN5bmMiLCJ0YXJnZXRSZWxhdGl2ZVBhdGgiLCJyZXBsYWNlIiwidmVyYm9zZSIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImhscm5nIiwiZXhpc3RzSGxSbmdQYXRoIiwiY29udGVudCIsInJlYWRGaWxlIiwidGFyZ2V0Q29udGVudCIsIndyaXRlRmlsZSIsImluY2x1ZGVzIiwiZm9ybUpzb25QYXRoIiwiRm9ybUpzb25GaWxlTmFtZSIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsImRlcGVuZGVuY2llcyIsImVuZ2luZSIsImdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uIiwiZ2VuZXJhdG9yIiwiZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24iLCJ3cml0ZUpzb24iLCJzcGFjZXMiLCJtb3ZlRGlyZWN0b3J5Iiwic291cmNlUGF0aCIsInRhcmdldFBhdGgiLCJiYXNlZGlyIiwiZGlybmFtZSIsInBsYXRmb3JtIiwicmVuYW1lIiwibW92ZSIsImdmdk51bWJlciIsIk51bWJlciIsIk1hdGgiLCJmbG9vciIsInYiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvSW5pdEZvcm0vUnVuSW5pdEZvcm0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGVuc3VyZURpciwgbW92ZSwgcGF0aEV4aXN0cywgcmVhZEZpbGUsIHJlbmFtZSwgcm1kaXIsIHN0YXQsIHdyaXRlRmlsZSwgd3JpdGVKc29uIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5cbmltcG9ydCB7IGdldExhc3RTdGFibGVFbmdpbmVWZXJzaW9uLCBnZXRMYXN0U3RhYmxlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgcmVhZEZvcm1Db25maWcgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IENvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Db25zb2xlQXBwbGljYXRpb24vQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dFwiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jLCBpc0RpcmVjdG9yeUV4aXN0cyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IEludmFsaWRDb21tYW5kTGluZUFyZ3VtZW50c0Vycm9yIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvT3B0aW9ucy9Db21tYW5kQmFzZWRPcHRpb25zUGFyc2VyXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgSW5pdEZvcm1PcHRpb25zIH0gZnJvbSBcIi4vSW5pdEZvcm1PcHRpb25zXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5Jbml0Rm9ybShjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LCBvcHRpb25zOiBJbml0Rm9ybU9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBjb250ZXh0LmxvZ2dlcjtcbiAgICBpZiAob3B0aW9ucy5nZnZzID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbW1hbmRMaW5lQXJndW1lbnRzRXJyb3IoXCLQndC1INGD0LrQsNC30LDQvdCwIEdWRiDQtNC70Y8g0YHQvtC30LTQsNC90LjRj1wiLCBcIlwiKTtcbiAgICB9XG5cbiAgICBsZXQgcmVwb3NpdG9yeVJvb3QgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IHRlbXBsYXRlRGlyID0gcGF0aC5qb2luKF9fZGlybmFtZSwgXCJFbXB0eUZvcm1UZW1wbGF0ZVwiKTtcbiAgICBpZiAoXG4gICAgICAgIHBhdGguYmFzZW5hbWUocHJvY2Vzcy5jd2QoKSkgPT09IFwiY2FuZHkuZmFybVwiIHx8XG4gICAgICAgIHBhdGguYmFzZW5hbWUocHJvY2Vzcy5jd2QoKSkgPT09IFwiY2FuZHkuZGlhZG9jLmZhcm1cIiB8fFxuICAgICAgICBwYXRoLmJhc2VuYW1lKHByb2Nlc3MuY3dkKCkpID09PSBcImNhbmR5LnJwbi5mYXJtXCIgfHxcbiAgICAgICAgcGF0aC5iYXNlbmFtZShwcm9jZXNzLmN3ZCgpKSA9PT0gXCJUZXN0RmFybVwiXG4gICAgKSB7XG4gICAgICAgIHJlcG9zaXRvcnlSb290ID0gcGF0aC5ub3JtYWxpemUocGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBcIi4uXCIpKTtcbiAgICB9XG5cbiAgICBpZiAoIShhd2FpdCBpc0RpcmVjdG9yeUV4aXN0cyhwYXRoLmpvaW4ocmVwb3NpdG9yeVJvb3QsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1zRGlyZWN0b3J5KSkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcItCi0LXQutGD0YnQsNGPINC00LjRgNC10LrRgtC+0YDQuNGPINC90LUg0L/QvtGF0L7QttCwINC90LAg0LrQsNGC0LDQu9C+0LMg0YEg0LjRgdGF0L7QtNC90LjQutCw0LzQuCDRhNC+0YDQvFwiKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGdmdiBvZiBvcHRpb25zLmdmdnMpIHtcbiAgICAgICAgY29uc3QgZ2Z2TG9nZ2VyID0gbG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KTtcbiAgICAgICAgY29uc3QgeyBnLCBmIH0gPSBzcGxpdEdmdihnZnYpO1xuICAgICAgICBjb25zdCBmb3JtUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgIHJlcG9zaXRvcnlSb290LFxuICAgICAgICAgICAgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybXNEaXJlY3RvcnksXG4gICAgICAgICAgICBnLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBmLnRvU3RyaW5nKCkucGFkU3RhcnQoMywgXCIwXCIpLFxuICAgICAgICAgICAgZ2Z2LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBXZWxsS25vd25EaXJlY3Rvcmllcy5DYW5keVN1YmRpcmVjdG9yeU5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZm9ybVBhdGgpKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgRGlyZWN0b3J5IGZvciAnJHtnZnZ9JyBhbHJlYWR5IGV4aXN0cyBpbiBDYW5keSBmb2xkZXIuYDtcbiAgICAgICAgICAgIGdmdkxvZ2dlci5lcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGVtcE91dHB1dERpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLnRtcFwiLCBnZnYpO1xuICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyh0ZW1wT3V0cHV0RGlyKSkge1xuICAgICAgICAgICAgYXdhaXQgcm1kaXIodGVtcE91dHB1dERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2Z2TG9nZ2VyLmxvZyhgQ3JlYXRpbmcgZGlyZWN0b3J5IHdpdGggc291cmNlcyBmcm9tIHRlbXBsYXRlYCk7XG4gICAgICAgIGF3YWl0IGVuc3VyZURpcih0ZW1wT3V0cHV0RGlyKTtcbiAgICAgICAgY29uc3QgaGlnaGxhbmRlckZhcm1QYXRoID0gcGF0aC5qb2luKHJlcG9zaXRvcnlSb290LCBcImhpZ2hsYW5kZXIuZmFybVwiLCBcIkZvcm1zXCIsIGdmdik7XG4gICAgICAgIGNvbnN0IGhsUm5nUGF0aDEgPSBwYXRoLmpvaW4oaGlnaGxhbmRlckZhcm1QYXRoLCBgJHtnZnZ9LtGB0YXQtdC80LAucm5nLnhtbGApO1xuICAgICAgICBjb25zdCBobFJuZ1BhdGgyID0gcGF0aC5qb2luKGhpZ2hsYW5kZXJGYXJtUGF0aCwgXCJIaWdobGFuZGVyXCIsIGAke2dmdn0u0YHRhdC10LzQsC5ybmcueG1sYCk7XG4gICAgICAgIGZvciAoY29uc3QgcmVsYXRpdmVGaWxlUGF0aCBvZiBhd2FpdCBnbG9iQXN5bmMoXCIqKi8qXCIsIHsgY3dkOiB0ZW1wbGF0ZURpciB9KSkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UmVsYXRpdmVQYXRoID0gcmVsYXRpdmVGaWxlUGF0aC5yZXBsYWNlKC97Z2Z2fS9nLCBnZnYpO1xuICAgICAgICAgICAgZ2Z2TG9nZ2VyLnZlcmJvc2UoYFByb2Nlc3NpbmcgdGVtcGxhdGUgcGF0aCAke3JlbGF0aXZlRmlsZVBhdGh9YCk7XG4gICAgICAgICAgICBpZiAoKGF3YWl0IHN0YXQocGF0aC5qb2luKHRlbXBsYXRlRGlyLCByZWxhdGl2ZUZpbGVQYXRoKSkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBlbnN1cmVEaXIocGF0aC5qb2luKHRlbXBPdXRwdXREaXIsIHRhcmdldFJlbGF0aXZlUGF0aCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuaGxybmcgJiZcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVsYXRpdmVQYXRoID09PSBgc2NoZW1hcy8ke2dmdn0uMC5ybmcueG1sYCAmJlxuICAgICAgICAgICAgICAgICAgICAoKGF3YWl0IHBhdGhFeGlzdHMoaGxSbmdQYXRoMSkpIHx8IChhd2FpdCBwYXRoRXhpc3RzKGhsUm5nUGF0aDIpKSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RzSGxSbmdQYXRoID0gKGF3YWl0IHBhdGhFeGlzdHMoaGxSbmdQYXRoMSkpID8gaGxSbmdQYXRoMSA6IGhsUm5nUGF0aDI7XG4gICAgICAgICAgICAgICAgICAgIGdmdkxvZ2dlci5sb2coYENvcHkgc2NoZW1hIHJuZyBmaWxlIGZyb20gaGlnaGxhbmRlci5mYXJtLmApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUoZXhpc3RzSGxSbmdQYXRoLCBcInV0Zi04XCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRDb250ZW50ID0gY29udGVudC5yZXBsYWNlKC97Z2Z2fS9nLCBnZnYpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUocGF0aC5qb2luKHRlbXBPdXRwdXREaXIsIHRhcmdldFJlbGF0aXZlUGF0aCksIHRhcmdldENvbnRlbnQsIFwidXRmLThcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFJlbGF0aXZlUGF0aC5pbmNsdWRlcyhcImhlbHBlcnMvYWRkUHJpbDEudHh0XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL9C/0YDQuCDQutC+0L/QuNGA0L7QstCw0L3QuNC4IGpzINGE0LDQudC70L7QsiBiYWJlbCDQvdCw0YHQvtCy0YvQstCw0LXRgiB1c2Ugc3RyaWN0LCDQvtCx0L7RiNC70Lgg0YLQsNC60LjQvCDQv9GD0YLQtdC8XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUocGF0aC5qb2luKHRlbXBsYXRlRGlyLCByZWxhdGl2ZUZpbGVQYXRoKSwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4odGVtcE91dHB1dERpciwgdGFyZ2V0UmVsYXRpdmVQYXRoLnJlcGxhY2UoXCIudHh0XCIsIFwiLmpzXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidXRmLThcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShwYXRoLmpvaW4odGVtcGxhdGVEaXIsIHJlbGF0aXZlRmlsZVBhdGgpLCBcInV0Zi04XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0Q29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgve2dmdn0vZywgZ2Z2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLmpvaW4odGVtcE91dHB1dERpciwgdGFyZ2V0UmVsYXRpdmVQYXRoKSwgdGFyZ2V0Q29udGVudCwgXCJ1dGYtOFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdmdkxvZ2dlci52ZXJib3NlKGBQcm9jZXNzZWQgdGVtcGxhdGUgcGF0aCAke3JlbGF0aXZlRmlsZVBhdGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybUpzb25QYXRoID0gcGF0aC5qb2luKHRlbXBPdXRwdXREaXIsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpO1xuICAgICAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBnZnZMb2dnZXIpO1xuICAgICAgICBmb3JtQ29uZmlnLmRlcGVuZGVuY2llcyA9IHtcbiAgICAgICAgICAgIGVuZ2luZTogYXdhaXQgZ2V0TGFzdFN0YWJsZUVuZ2luZVZlcnNpb24oKSxcbiAgICAgICAgICAgIGdlbmVyYXRvcjogYXdhaXQgZ2V0TGFzdFN0YWJsZUdlbmVyYXRvclZlcnNpb24oKSxcbiAgICAgICAgfTtcbiAgICAgICAgZ2Z2TG9nZ2VyLmxvZyhgU2V0IGxhc3Qgc3RhYmxlIHZlcnNpb24gJHtmb3JtQ29uZmlnLmRlcGVuZGVuY2llcy5lbmdpbmV9YCk7XG4gICAgICAgIGF3YWl0IHdyaXRlSnNvbihmb3JtSnNvblBhdGgsIGZvcm1Db25maWcsIHsgc3BhY2VzOiAyIH0pO1xuICAgICAgICBnZnZMb2dnZXIubG9nKGBNb3ZpbmcgcHJlcGFyZWQgc291cmNlcyB0byAnJHtyZXBvc2l0b3J5Um9vdH0nYCk7XG4gICAgICAgIGF3YWl0IG1vdmVEaXJlY3RvcnkodGVtcE91dHB1dERpciwgZm9ybVBhdGgpO1xuICAgICAgICBnZnZMb2dnZXIubG9nKGBGb3JtIGNyZWF0aW5nIGNvbXBsZXRlZC4gUGF0aDogJyR7Zm9ybVBhdGh9J2ApO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbW92ZURpcmVjdG9yeShzb3VyY2VQYXRoOiBzdHJpbmcsIHRhcmdldFBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJhc2VkaXIgPSBwYXRoLmRpcm5hbWUodGFyZ2V0UGF0aCk7XG4gICAgYXdhaXQgZW5zdXJlRGlyKGJhc2VkaXIpO1xuICAgIGlmIChvcy5wbGF0Zm9ybSgpICE9PSBcIndpbjMyXCIpIHtcbiAgICAgICAgYXdhaXQgcmVuYW1lKHNvdXJjZVBhdGgsIHRhcmdldFBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzb3VyY2VQYXRoWzBdID09PSB0YXJnZXRQYXRoWzBdKSB7XG4gICAgICAgICAgICBhd2FpdCByZW5hbWUoc291cmNlUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhd2FpdCBtb3ZlKHNvdXJjZVBhdGgsIHRhcmdldFBhdGgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzcGxpdEdmdihnZnY6IHN0cmluZyB8IG51bWJlcik6IHsgZzogbnVtYmVyOyBmOiBudW1iZXI7IHY6IG51bWJlciB9IHtcbiAgICBjb25zdCBnZnZOdW1iZXIgPSB0eXBlb2YgZ2Z2ID09PSBcInN0cmluZ1wiID8gTnVtYmVyKGdmdikgOiBnZnY7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZzogTWF0aC5mbG9vcihnZnZOdW1iZXIgLyAxMDAwMDApLFxuICAgICAgICBmOiBNYXRoLmZsb29yKChnZnZOdW1iZXIgJSAxMDAwMDApIC8gMTAwKSxcbiAgICAgICAgdjogZ2Z2TnVtYmVyICUgMTAwLFxuICAgIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEVBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLElBQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLHNCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxnQkFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sMEJBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLHFCQUFBLEdBQUFQLE9BQUE7QUFBK0UsU0FBQVEseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVYsd0JBQUFVLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunInitForm.js","names":["os","_interopRequireWildcard","require","path","_fsExtra","_PublishedVersionUtils","_ResolveFormInfo","_FsUtils","_CommandBasedOptionsParser","_WellKnownDirectories","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","runInitForm","context","options","logger","gfvs","undefined","InvalidCommandLineArgumentsError","repositoryRoot","process","cwd","templateDir","join","__dirname","basename","normalize","isDirectoryExists","WellKnownDirectories","FormsDirectory","Error","gfv","gfvLogger","withPrefix","g","f","splitGfv","formPath","toString","padStart","CandySubdirectoryName","pathExists","errorMessage","error","tempOutputDir","rmdir","recursive","log","ensureDir","highlanderFarmPath","hlRngPath1","hlRngPath2","relativeFilePath","globAsync","targetRelativePath","replace","verbose","stat","isDirectory","hlrng","existsHlRngPath","content","readFile","targetContent","writeFile","includes","formJsonPath","FormJsonFileName","formConfig","readFormConfig","dependencies","engine","getLastStableEngineVersion","generator","getLastStableGeneratorVersion","writeJson","spaces","moveDirectory","sourcePath","targetPath","basedir","dirname","platform","rename","move","gfvNumber","Number","Math","floor","v"],"sources":["../../../../../src/CLICommands/InitForm/RunInitForm.ts"],"sourcesContent":["import * as os from \"os\";\nimport * as path from \"path\";\n\nimport { ensureDir, move, pathExists, readFile, rename, rmdir, stat, writeFile, writeJson } from \"fs-extra\";\n\nimport { getLastStableEngineVersion, getLastStableGeneratorVersion } from \"../../BuildTasks/PublishedVersionUtils\";\nimport { readFormConfig } from \"../../BuildTasks/ResolveFormInfo\";\nimport { ConsoleApplicationContext } from \"../../Commons/ConsoleApplication/ConsoleApplicationContext\";\nimport { globAsync, isDirectoryExists } from \"../../Commons/FsUtils\";\nimport { InvalidCommandLineArgumentsError } from \"../../Commons/Options/CommandBasedOptionsParser\";\nimport { WellKnownDirectories } from \"../../../../Common/WellKnownDirectories\";\n\nimport { InitFormOptions } from \"./InitFormOptions\";\n\nexport async function runInitForm(context: ConsoleApplicationContext, options: InitFormOptions): Promise<void> {\n const logger = context.logger;\n if (options.gfvs == undefined) {\n throw new InvalidCommandLineArgumentsError(\"Не указана GVF для создания\", \"\");\n }\n\n let repositoryRoot = process.cwd();\n const templateDir = path.join(__dirname, \"EmptyFormTemplate\");\n if (\n path.basename(process.cwd()) === \"candy.farm\" ||\n path.basename(process.cwd()) === \"candy.diadoc.farm\" ||\n path.basename(process.cwd()) === \"candy.rpn.farm\" ||\n path.basename(process.cwd()) === \"TestFarm\"\n ) {\n repositoryRoot = path.normalize(path.join(repositoryRoot, \"..\"));\n }\n\n if (!(await isDirectoryExists(path.join(repositoryRoot, WellKnownDirectories.FormsDirectory)))) {\n throw new Error(\"Текущая директория не похожа на каталог с исходниками форм\");\n }\n\n for (const gfv of options.gfvs) {\n const gfvLogger = logger.withPrefix(gfv);\n const { g, f } = splitGfv(gfv);\n const formPath = path.join(\n repositoryRoot,\n WellKnownDirectories.FormsDirectory,\n g.toString(),\n f.toString().padStart(3, \"0\"),\n gfv.toString(),\n WellKnownDirectories.CandySubdirectoryName\n );\n if (await pathExists(formPath)) {\n const errorMessage = `Directory for '${gfv}' already exists.`;\n gfvLogger.error(errorMessage);\n throw new Error(errorMessage);\n }\n const tempOutputDir = path.join(__dirname, \".tmp\", gfv);\n if (await pathExists(tempOutputDir)) {\n await rmdir(tempOutputDir, { recursive: true });\n }\n gfvLogger.log(`Creating directory with sources from template`);\n await ensureDir(tempOutputDir);\n const highlanderFarmPath = path.join(repositoryRoot, \"highlander.farm\", \"Forms\", gfv);\n const hlRngPath1 = path.join(highlanderFarmPath, `${gfv}.схема.rng.xml`);\n const hlRngPath2 = path.join(highlanderFarmPath, \"Highlander\", `${gfv}.схема.rng.xml`);\n for (const relativeFilePath of await globAsync(\"**/*\", { cwd: templateDir })) {\n const targetRelativePath = relativeFilePath.replace(/{gfv}/g, gfv);\n gfvLogger.verbose(`Processing template path ${relativeFilePath}`);\n if ((await stat(path.join(templateDir, relativeFilePath))).isDirectory()) {\n await ensureDir(path.join(tempOutputDir, targetRelativePath));\n } else {\n if (\n options.hlrng &&\n targetRelativePath === `schemas/${gfv}.0.rng.xml` &&\n ((await pathExists(hlRngPath1)) || (await pathExists(hlRngPath2)))\n ) {\n const existsHlRngPath = (await pathExists(hlRngPath1)) ? hlRngPath1 : hlRngPath2;\n gfvLogger.log(`Copy schema rng file from highlander.farm.`);\n const content = await readFile(existsHlRngPath, \"utf-8\");\n const targetContent = content.replace(/{gfv}/g, gfv);\n await writeFile(path.join(tempOutputDir, targetRelativePath), targetContent, \"utf-8\");\n } else {\n if (targetRelativePath.includes(\"helpers/addPril1.txt\")) {\n //при копировании js файлов babel насовывает use strict, обошли таким путем\n const content = await readFile(path.join(templateDir, relativeFilePath), \"utf-8\");\n await writeFile(\n path.join(tempOutputDir, targetRelativePath.replace(\".txt\", \".js\")),\n content,\n \"utf-8\"\n );\n } else {\n const content = await readFile(path.join(templateDir, relativeFilePath), \"utf-8\");\n const targetContent = content.replace(/{gfv}/g, gfv);\n await writeFile(path.join(tempOutputDir, targetRelativePath), targetContent, \"utf-8\");\n }\n }\n }\n gfvLogger.verbose(`Processed template path ${relativeFilePath}`);\n }\n const formJsonPath = path.join(tempOutputDir, WellKnownDirectories.FormJsonFileName);\n const formConfig = await readFormConfig(formJsonPath, gfvLogger);\n formConfig.dependencies = {\n engine: await getLastStableEngineVersion(),\n generator: await getLastStableGeneratorVersion(),\n };\n gfvLogger.log(`Set last stable version ${formConfig.dependencies.engine}`);\n await writeJson(formJsonPath, formConfig, { spaces: 2 });\n gfvLogger.log(`Moving prepared sources to '${repositoryRoot}'`);\n await moveDirectory(tempOutputDir, formPath);\n gfvLogger.log(`Form creating completed. Path: '${formPath}'`);\n }\n}\n\nasync function moveDirectory(sourcePath: string, targetPath: string): Promise<void> {\n const basedir = path.dirname(targetPath);\n await ensureDir(basedir);\n if (os.platform() !== \"win32\") {\n await rename(sourcePath, targetPath);\n } else {\n if (sourcePath[0] === targetPath[0]) {\n await rename(sourcePath, targetPath);\n } else {\n await move(sourcePath, targetPath);\n }\n }\n}\n\nfunction splitGfv(gfv: string | number): { g: number; f: number; v: number } {\n const gfvNumber = typeof gfv === \"string\" ? Number(gfv) : gfv;\n return {\n g: Math.floor(gfvNumber / 100000),\n f: Math.floor((gfvNumber % 100000) / 100),\n v: gfvNumber % 100,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"RunInitForm.js","names":["os","_interopRequireWildcard","require","path","_fsExtra","_PublishedVersionUtils","_ResolveFormInfo","_FsUtils","_CommandBasedOptionsParser","_WellKnownDirectories","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","runInitForm","context","options","logger","gfvs","undefined","InvalidCommandLineArgumentsError","repositoryRoot","process","cwd","templateDir","join","__dirname","basename","normalize","isDirectoryExists","WellKnownDirectories","FormsDirectory","Error","gfv","gfvLogger","withPrefix","g","f","splitGfv","formPath","toString","padStart","CandySubdirectoryName","pathExists","errorMessage","error","tempOutputDir","rmdir","recursive","log","ensureDir","highlanderFarmPath","hlRngPath1","hlRngPath2","relativeFilePath","globAsync","targetRelativePath","replace","verbose","stat","isDirectory","hlrng","existsHlRngPath","content","readFile","targetContent","writeFile","includes","formJsonPath","FormJsonFileName","formConfig","readFormConfig","dependencies","engine","getLastStableEngineVersion","generator","getLastStableGeneratorVersion","writeJson","spaces","moveDirectory","sourcePath","targetPath","basedir","dirname","platform","rename","move","gfvNumber","Number","Math","floor","v"],"sources":["../../../../../src/CLICommands/InitForm/RunInitForm.ts"],"sourcesContent":["import * as os from \"os\";\nimport * as path from \"path\";\n\nimport { ensureDir, move, pathExists, readFile, rename, rmdir, stat, writeFile, writeJson } from \"fs-extra\";\n\nimport { getLastStableEngineVersion, getLastStableGeneratorVersion } from \"../../BuildTasks/PublishedVersionUtils\";\nimport { readFormConfig } from \"../../BuildTasks/ResolveFormInfo\";\nimport { ConsoleApplicationContext } from \"../../Commons/ConsoleApplication/ConsoleApplicationContext\";\nimport { globAsync, isDirectoryExists } from \"../../Commons/FsUtils\";\nimport { InvalidCommandLineArgumentsError } from \"../../Commons/Options/CommandBasedOptionsParser\";\nimport { WellKnownDirectories } from \"../../../../Common/WellKnownDirectories\";\n\nimport { InitFormOptions } from \"./InitFormOptions\";\n\nexport async function runInitForm(context: ConsoleApplicationContext, options: InitFormOptions): Promise<void> {\n const logger = context.logger;\n if (options.gfvs == undefined) {\n throw new InvalidCommandLineArgumentsError(\"Не указана GVF для создания\", \"\");\n }\n\n let repositoryRoot = process.cwd();\n const templateDir = path.join(__dirname, \"EmptyFormTemplate\");\n if (\n path.basename(process.cwd()) === \"candy.farm\" ||\n path.basename(process.cwd()) === \"candy.diadoc.farm\" ||\n path.basename(process.cwd()) === \"candy.rpn.farm\" ||\n path.basename(process.cwd()) === \"TestFarm\"\n ) {\n repositoryRoot = path.normalize(path.join(repositoryRoot, \"..\"));\n }\n\n if (!(await isDirectoryExists(path.join(repositoryRoot, WellKnownDirectories.FormsDirectory)))) {\n throw new Error(\"Текущая директория не похожа на каталог с исходниками форм\");\n }\n\n for (const gfv of options.gfvs) {\n const gfvLogger = logger.withPrefix(gfv);\n const { g, f } = splitGfv(gfv);\n const formPath = path.join(\n repositoryRoot,\n WellKnownDirectories.FormsDirectory,\n g.toString(),\n f.toString().padStart(3, \"0\"),\n gfv.toString(),\n WellKnownDirectories.CandySubdirectoryName\n );\n if (await pathExists(formPath)) {\n const errorMessage = `Directory for '${gfv}' already exists in Candy folder.`;\n gfvLogger.error(errorMessage);\n throw new Error(errorMessage);\n }\n const tempOutputDir = path.join(__dirname, \".tmp\", gfv);\n if (await pathExists(tempOutputDir)) {\n await rmdir(tempOutputDir, { recursive: true });\n }\n gfvLogger.log(`Creating directory with sources from template`);\n await ensureDir(tempOutputDir);\n const highlanderFarmPath = path.join(repositoryRoot, \"highlander.farm\", \"Forms\", gfv);\n const hlRngPath1 = path.join(highlanderFarmPath, `${gfv}.схема.rng.xml`);\n const hlRngPath2 = path.join(highlanderFarmPath, \"Highlander\", `${gfv}.схема.rng.xml`);\n for (const relativeFilePath of await globAsync(\"**/*\", { cwd: templateDir })) {\n const targetRelativePath = relativeFilePath.replace(/{gfv}/g, gfv);\n gfvLogger.verbose(`Processing template path ${relativeFilePath}`);\n if ((await stat(path.join(templateDir, relativeFilePath))).isDirectory()) {\n await ensureDir(path.join(tempOutputDir, targetRelativePath));\n } else {\n if (\n options.hlrng &&\n targetRelativePath === `schemas/${gfv}.0.rng.xml` &&\n ((await pathExists(hlRngPath1)) || (await pathExists(hlRngPath2)))\n ) {\n const existsHlRngPath = (await pathExists(hlRngPath1)) ? hlRngPath1 : hlRngPath2;\n gfvLogger.log(`Copy schema rng file from highlander.farm.`);\n const content = await readFile(existsHlRngPath, \"utf-8\");\n const targetContent = content.replace(/{gfv}/g, gfv);\n await writeFile(path.join(tempOutputDir, targetRelativePath), targetContent, \"utf-8\");\n } else {\n if (targetRelativePath.includes(\"helpers/addPril1.txt\")) {\n //при копировании js файлов babel насовывает use strict, обошли таким путем\n const content = await readFile(path.join(templateDir, relativeFilePath), \"utf-8\");\n await writeFile(\n path.join(tempOutputDir, targetRelativePath.replace(\".txt\", \".js\")),\n content,\n \"utf-8\"\n );\n } else {\n const content = await readFile(path.join(templateDir, relativeFilePath), \"utf-8\");\n const targetContent = content.replace(/{gfv}/g, gfv);\n await writeFile(path.join(tempOutputDir, targetRelativePath), targetContent, \"utf-8\");\n }\n }\n }\n gfvLogger.verbose(`Processed template path ${relativeFilePath}`);\n }\n const formJsonPath = path.join(tempOutputDir, WellKnownDirectories.FormJsonFileName);\n const formConfig = await readFormConfig(formJsonPath, gfvLogger);\n formConfig.dependencies = {\n engine: await getLastStableEngineVersion(),\n generator: await getLastStableGeneratorVersion(),\n };\n gfvLogger.log(`Set last stable version ${formConfig.dependencies.engine}`);\n await writeJson(formJsonPath, formConfig, { spaces: 2 });\n gfvLogger.log(`Moving prepared sources to '${repositoryRoot}'`);\n await moveDirectory(tempOutputDir, formPath);\n gfvLogger.log(`Form creating completed. Path: '${formPath}'`);\n }\n}\n\nasync function moveDirectory(sourcePath: string, targetPath: string): Promise<void> {\n const basedir = path.dirname(targetPath);\n await ensureDir(basedir);\n if (os.platform() !== \"win32\") {\n await rename(sourcePath, targetPath);\n } else {\n if (sourcePath[0] === targetPath[0]) {\n await rename(sourcePath, targetPath);\n } else {\n await move(sourcePath, targetPath);\n }\n }\n}\n\nfunction splitGfv(gfv: string | number): { g: number; f: number; v: number } {\n const gfvNumber = typeof gfv === \"string\" ? Number(gfv) : gfv;\n return {\n g: Math.floor(gfvNumber / 100000),\n f: Math.floor((gfvNumber % 100000) / 100),\n v: gfvNumber % 100,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|