@kontur.candy/tools 2.229.0 → 2.230.0
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/distr/Common/UUID.js
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.isValidGuid = void 0;
|
|
6
7
|
exports.uuid = uuid;
|
|
8
|
+
var _TypingUtils = require("./TypingUtils");
|
|
7
9
|
function uuid() {
|
|
8
10
|
return uuidV4Pattern.replace(/[018]/g, randomHexDigit);
|
|
9
11
|
}
|
|
@@ -11,4 +13,7 @@ function randomHexDigit(placeholder) {
|
|
|
11
13
|
return (Number(placeholder) ^ Math.random() * 16 >> Number(placeholder) / 4).toString(16);
|
|
12
14
|
}
|
|
13
15
|
const uuidV4Pattern = "10000000-1000-4000-8000-100000000000";
|
|
16
|
+
const guidMatch = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
17
|
+
const isValidGuid = value => (0, _TypingUtils.isNotNullOrEmpty)(value) && guidMatch.test(value);
|
|
18
|
+
exports.isValidGuid = isValidGuid;
|
|
14
19
|
//# sourceMappingURL=UUID.js.map
|
package/distr/Common/UUID.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UUID.js","names":["uuid","uuidV4Pattern","replace","randomHexDigit","placeholder","Number","Math","random","toString"],"sources":["../../../Common/UUID.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"UUID.js","names":["_TypingUtils","require","uuid","uuidV4Pattern","replace","randomHexDigit","placeholder","Number","Math","random","toString","guidMatch","isValidGuid","value","isNotNullOrEmpty","test","exports"],"sources":["../../../Common/UUID.ts"],"sourcesContent":["import { isNotNullOrEmpty } from \"./TypingUtils\";\n\nexport function uuid(): string {\n return uuidV4Pattern.replace(/[018]/g, randomHexDigit);\n}\n\nfunction randomHexDigit(placeholder: string): string {\n return (Number(placeholder) ^ ((Math.random() * 16) >> (Number(placeholder) / 4))).toString(16);\n}\n\nconst uuidV4Pattern = \"10000000-1000-4000-8000-100000000000\";\n\nconst guidMatch = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\nexport const isValidGuid = (value: string): boolean => isNotNullOrEmpty(value) && guidMatch.test(value);\n"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,SAASC,IAAIA,CAAA,EAAW;EAC3B,OAAOC,aAAa,CAACC,OAAO,CAAC,QAAQ,EAAEC,cAAc,CAAC;AAC1D;AAEA,SAASA,cAAcA,CAACC,WAAmB,EAAU;EACjD,OAAO,CAACC,MAAM,CAACD,WAAW,CAAC,GAAKE,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAMF,MAAM,CAACD,WAAW,CAAC,GAAG,CAAG,EAAEI,QAAQ,CAAC,EAAE,CAAC;AACnG;AAEA,MAAMP,aAAa,GAAG,sCAAsC;AAE5D,MAAMQ,SAAS,GAAG,4EAA4E;AACvF,MAAMC,WAAW,GAAIC,KAAa,IAAc,IAAAC,6BAAgB,EAACD,KAAK,CAAC,IAAIF,SAAS,CAACI,IAAI,CAACF,KAAK,CAAC;AAACG,OAAA,CAAAJ,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -101,9 +101,8 @@ class FormGlobs {
|
|
|
101
101
|
}));
|
|
102
102
|
}
|
|
103
103
|
static async resolveSpecifiers(formGlobsWithSpecifiers, farmDirectory) {
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
return resolvedGlobs;
|
|
104
|
+
const results = await Promise.all(formGlobsWithSpecifiers.map(x => this.resolveOnlyFormGlobSpecifiers(x, farmDirectory)));
|
|
105
|
+
return results.flat();
|
|
107
106
|
}
|
|
108
107
|
static async isFormMatchToGlob(formGlob, gfv, formPath) {
|
|
109
108
|
const gfvRegexp = new RegExp("^" + formGlob.replace(":with-ui-tests", "").replace(":with-ci-build", "").replace(/\*/gi, "\\d*").replace(/\?/gi, "\\d") + "$");
|
|
@@ -124,6 +123,15 @@ class FormGlobs {
|
|
|
124
123
|
}
|
|
125
124
|
return false;
|
|
126
125
|
}
|
|
126
|
+
static async resolveOnlyFormGlobSpecifiers(formGlob, farmDirectory) {
|
|
127
|
+
if (formGlob.endsWith(":with-ui-tests")) {
|
|
128
|
+
return (await this.resolveGfvGlobs([formGlob], farmDirectory)).map(x => x.gfv);
|
|
129
|
+
}
|
|
130
|
+
if (formGlob.endsWith(":with-ci-build")) {
|
|
131
|
+
return (await this.resolveGfvGlobs([formGlob], farmDirectory)).map(x => x.gfv);
|
|
132
|
+
}
|
|
133
|
+
return [formGlob];
|
|
134
|
+
}
|
|
127
135
|
}
|
|
128
136
|
exports.FormGlobs = FormGlobs;
|
|
129
137
|
//# sourceMappingURL=FormGlobsUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormGlobsUtils.js","names":["_path","_interopRequireDefault","require","_fsExtra","_ResolveFormInfo","_FormPathUtils","_WellKnownDirectories","_FsUtils","FormGlobs","enumerateFormsInRepository","repositoryRoots","result","repositoryRoot","formJsonPath","globAsync","WellKnownDirectories","FormJsonFileName","cwd","formPath","path","dirname","gfv","extractGfvFromFormPath","push","join","formRelativePath","TestFarmDir","CandySubdirectoryName","resolveGfvGlobs","formGlobs","farmDirectory","throwErrorIfUnusedGlobFound","Map","foundGlobs","Set","forms","normalize","formGlob","isFormMatchToGlob","set","add","maxAbsemtGlobsToLog","absentGlobs","Iterator","from","filter","has","take","toArray","length","Error","entries","map","resolveSpecifiers","formGlobsWithSpecifiers","suitableGlobs","x","endsWith","resolvedGlobs","gfvRegexp","RegExp","replace","test","includes","pathExists","formConfig","readFormConfig","build","exports"],"sources":["../../../../src/Commons/FormGlobsUtils.ts"],"sourcesContent":["import path from \"path\";\n\nimport { pathExists } from \"fs-extra\";\n\nimport { readFormConfig } from \"../BuildTasks/ResolveFormInfo\";\nimport { extractGfvFromFormPath } from \"../../../Common/FormPathUtils\";\nimport { WellKnownDirectories } from \"../../../Common/WellKnownDirectories\";\n\nimport { globAsync } from \"./FsUtils\";\nimport { FormLocationInfo } from \"./FormLocationInfo\";\n\nexport interface GfvInfo {\n gfv: string;\n formPath: string;\n formRelativePath: string;\n}\n\nexport class FormGlobs {\n public static async enumerateFormsInRepository(...repositoryRoots: string[]): Promise<GfvInfo[]> {\n const result: GfvInfo[] = [];\n\n for (const repositoryRoot of repositoryRoots) {\n for (const formJsonPath of await globAsync(`candy.farm/forms/*/${WellKnownDirectories.FormJsonFileName}`, {\n cwd: repositoryRoot,\n })) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, formPath),\n formRelativePath: formPath,\n });\n }\n for (const formJsonPath of await globAsync(\n `${WellKnownDirectories.TestFarmDir}/forms/*/${WellKnownDirectories.FormJsonFileName}`,\n {\n cwd: repositoryRoot,\n }\n )) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, formPath),\n formRelativePath: formPath,\n });\n }\n for (const formJsonPath of await globAsync(\n `candy.rpn.farm/forms/*/${WellKnownDirectories.FormJsonFileName}`,\n {\n cwd: repositoryRoot,\n }\n )) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, formPath),\n formRelativePath: formPath,\n });\n }\n for (const formJsonPath of await globAsync(\n `candy.diadoc.farm/forms/*/${WellKnownDirectories.FormJsonFileName}`,\n {\n cwd: repositoryRoot,\n }\n )) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, formPath),\n formRelativePath: formPath,\n });\n }\n for (const formJsonPath of await globAsync(\n `**/${WellKnownDirectories.CandySubdirectoryName}/${WellKnownDirectories.FormJsonFileName}`,\n { cwd: path.join(repositoryRoot, \"forms\") }\n )) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, \"forms\", formPath),\n formRelativePath: formPath,\n });\n }\n }\n return result;\n }\n\n public static async resolveGfvGlobs(\n formGlobs: string[],\n farmDirectory: string,\n throwErrorIfUnusedGlobFound: boolean = true\n ): Promise<FormLocationInfo[]> {\n const result: Map<string, string> = new Map();\n const foundGlobs = new Set<string>();\n\n const forms = await FormGlobs.enumerateFormsInRepository(path.normalize(path.join(farmDirectory, \"..\")));\n for (const { gfv, formPath } of forms) {\n for (const formGlob of formGlobs) {\n if (await FormGlobs.isFormMatchToGlob(formGlob, gfv, formPath)) {\n result.set(gfv, formPath);\n foundGlobs.add(formGlob);\n }\n }\n }\n\n if (throwErrorIfUnusedGlobFound) {\n const maxAbsemtGlobsToLog = 10;\n const absentGlobs = Iterator.from(formGlobs)\n .filter(formGlob => !foundGlobs.has(formGlob))\n .take(maxAbsemtGlobsToLog)\n .toArray();\n if (absentGlobs.length > 0) {\n throw new Error(`Форм соответствующих ${absentGlobs.join(\", \")} не найдено.`);\n }\n }\n\n return [...result.entries()].map(([gfv, formPath]) => ({ gfv: gfv, formPath: formPath }));\n }\n\n public static async resolveSpecifiers(formGlobsWithSpecifiers: string[], farmDirectory: string): Promise<string[]> {\n const suitableGlobs = formGlobsWithSpecifiers.filter(\n x => x.endsWith(\":with-ui-tests\") || x.endsWith(\":with-ci-build\")\n );\n const resolvedGlobs = (await this.resolveGfvGlobs(suitableGlobs, farmDirectory, false)).map(x => x.gfv);\n return resolvedGlobs;\n }\n\n private static async isFormMatchToGlob(formGlob: string, gfv: string, formPath: string) {\n const gfvRegexp = new RegExp(\n \"^\" +\n formGlob\n .replace(\":with-ui-tests\", \"\")\n .replace(\":with-ci-build\", \"\")\n .replace(/\\*/gi, \"\\\\d*\")\n .replace(/\\?/gi, \"\\\\d\") +\n \"$\"\n );\n if (gfvRegexp.test(gfv)) {\n if (formGlob.includes(\":with-ui-tests\")) {\n if (!(await pathExists(path.join(formPath, \"test\")))) {\n return false;\n }\n }\n if (formGlob.includes(\":with-ci-build\")) {\n const formJsonPath = path.join(formPath, WellKnownDirectories.FormJsonFileName);\n const formConfig = await readFormConfig(formJsonPath);\n if (formConfig.build !== \"ci\") {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FormGlobsUtils.js","names":["_path","_interopRequireDefault","require","_fsExtra","_ResolveFormInfo","_FormPathUtils","_WellKnownDirectories","_FsUtils","FormGlobs","enumerateFormsInRepository","repositoryRoots","result","repositoryRoot","formJsonPath","globAsync","WellKnownDirectories","FormJsonFileName","cwd","formPath","path","dirname","gfv","extractGfvFromFormPath","push","join","formRelativePath","TestFarmDir","CandySubdirectoryName","resolveGfvGlobs","formGlobs","farmDirectory","throwErrorIfUnusedGlobFound","Map","foundGlobs","Set","forms","normalize","formGlob","isFormMatchToGlob","set","add","maxAbsemtGlobsToLog","absentGlobs","Iterator","from","filter","has","take","toArray","length","Error","entries","map","resolveSpecifiers","formGlobsWithSpecifiers","results","Promise","all","x","resolveOnlyFormGlobSpecifiers","flat","gfvRegexp","RegExp","replace","test","includes","pathExists","formConfig","readFormConfig","build","endsWith","exports"],"sources":["../../../../src/Commons/FormGlobsUtils.ts"],"sourcesContent":["import path from \"path\";\n\nimport { pathExists } from \"fs-extra\";\n\nimport { readFormConfig } from \"../BuildTasks/ResolveFormInfo\";\nimport { extractGfvFromFormPath } from \"../../../Common/FormPathUtils\";\nimport { WellKnownDirectories } from \"../../../Common/WellKnownDirectories\";\n\nimport { globAsync } from \"./FsUtils\";\nimport { FormLocationInfo } from \"./FormLocationInfo\";\n\nexport interface GfvInfo {\n gfv: string;\n formPath: string;\n formRelativePath: string;\n}\n\nexport class FormGlobs {\n public static async enumerateFormsInRepository(...repositoryRoots: string[]): Promise<GfvInfo[]> {\n const result: GfvInfo[] = [];\n\n for (const repositoryRoot of repositoryRoots) {\n for (const formJsonPath of await globAsync(`candy.farm/forms/*/${WellKnownDirectories.FormJsonFileName}`, {\n cwd: repositoryRoot,\n })) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, formPath),\n formRelativePath: formPath,\n });\n }\n for (const formJsonPath of await globAsync(\n `${WellKnownDirectories.TestFarmDir}/forms/*/${WellKnownDirectories.FormJsonFileName}`,\n {\n cwd: repositoryRoot,\n }\n )) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, formPath),\n formRelativePath: formPath,\n });\n }\n for (const formJsonPath of await globAsync(\n `candy.rpn.farm/forms/*/${WellKnownDirectories.FormJsonFileName}`,\n {\n cwd: repositoryRoot,\n }\n )) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, formPath),\n formRelativePath: formPath,\n });\n }\n for (const formJsonPath of await globAsync(\n `candy.diadoc.farm/forms/*/${WellKnownDirectories.FormJsonFileName}`,\n {\n cwd: repositoryRoot,\n }\n )) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, formPath),\n formRelativePath: formPath,\n });\n }\n for (const formJsonPath of await globAsync(\n `**/${WellKnownDirectories.CandySubdirectoryName}/${WellKnownDirectories.FormJsonFileName}`,\n { cwd: path.join(repositoryRoot, \"forms\") }\n )) {\n const formPath = path.dirname(formJsonPath);\n const gfv = extractGfvFromFormPath(formPath);\n result.push({\n gfv: gfv,\n formPath: path.join(repositoryRoot, \"forms\", formPath),\n formRelativePath: formPath,\n });\n }\n }\n return result;\n }\n\n public static async resolveGfvGlobs(\n formGlobs: string[],\n farmDirectory: string,\n throwErrorIfUnusedGlobFound: boolean = true\n ): Promise<FormLocationInfo[]> {\n const result: Map<string, string> = new Map();\n const foundGlobs = new Set<string>();\n\n const forms = await FormGlobs.enumerateFormsInRepository(path.normalize(path.join(farmDirectory, \"..\")));\n for (const { gfv, formPath } of forms) {\n for (const formGlob of formGlobs) {\n if (await FormGlobs.isFormMatchToGlob(formGlob, gfv, formPath)) {\n result.set(gfv, formPath);\n foundGlobs.add(formGlob);\n }\n }\n }\n\n if (throwErrorIfUnusedGlobFound) {\n const maxAbsemtGlobsToLog = 10;\n const absentGlobs = Iterator.from(formGlobs)\n .filter(formGlob => !foundGlobs.has(formGlob))\n .take(maxAbsemtGlobsToLog)\n .toArray();\n if (absentGlobs.length > 0) {\n throw new Error(`Форм соответствующих ${absentGlobs.join(\", \")} не найдено.`);\n }\n }\n\n return [...result.entries()].map(([gfv, formPath]) => ({ gfv: gfv, formPath: formPath }));\n }\n\n public static async resolveSpecifiers(formGlobsWithSpecifiers: string[], farmDirectory: string): Promise<string[]> {\n const results = await Promise.all(\n formGlobsWithSpecifiers.map(x => this.resolveOnlyFormGlobSpecifiers(x, farmDirectory))\n );\n\n return results.flat();\n }\n\n private static async isFormMatchToGlob(formGlob: string, gfv: string, formPath: string) {\n const gfvRegexp = new RegExp(\n \"^\" +\n formGlob\n .replace(\":with-ui-tests\", \"\")\n .replace(\":with-ci-build\", \"\")\n .replace(/\\*/gi, \"\\\\d*\")\n .replace(/\\?/gi, \"\\\\d\") +\n \"$\"\n );\n if (gfvRegexp.test(gfv)) {\n if (formGlob.includes(\":with-ui-tests\")) {\n if (!(await pathExists(path.join(formPath, \"test\")))) {\n return false;\n }\n }\n if (formGlob.includes(\":with-ci-build\")) {\n const formJsonPath = path.join(formPath, WellKnownDirectories.FormJsonFileName);\n const formConfig = await readFormConfig(formJsonPath);\n if (formConfig.build !== \"ci\") {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n private static async resolveOnlyFormGlobSpecifiers(formGlob: string, farmDirectory: string): Promise<string[]> {\n if (formGlob.endsWith(\":with-ui-tests\")) {\n return (await this.resolveGfvGlobs([formGlob], farmDirectory)).map(x => x.gfv);\n }\n if (formGlob.endsWith(\":with-ci-build\")) {\n return (await this.resolveGfvGlobs([formGlob], farmDirectory)).map(x => x.gfv);\n }\n return [formGlob];\n }\n}\n"],"mappings":"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","ignoreList":[]}
|