@kontur.candy/tools 2.254.0 → 2.255.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/README.md +0 -16
- package/distr/Common/AsyncUtils.js +7 -0
- package/distr/Common/AsyncUtils.js.map +1 -1
- package/distr/Common/IntRangeUtils.js +4 -0
- package/distr/Common/IntRangeUtils.js.map +1 -1
- package/distr/Common/TypingUtils.js +4 -0
- package/distr/Common/TypingUtils.js.map +1 -1
- package/distr/Common/async/Channel.js +64 -0
- package/distr/Common/async/Channel.js.map +1 -0
- package/distr/Common/async/pool/AsyncPool.js +145 -0
- package/distr/Common/async/pool/AsyncPool.js.map +1 -0
- package/distr/Common/async/pool/FixedPool.js +29 -0
- package/distr/Common/async/pool/FixedPool.js.map +1 -0
- package/distr/Common/async/pool/LimitedPool.js +81 -0
- package/distr/Common/async/pool/LimitedPool.js.map +1 -0
- package/distr/Common/async/pool/Registry.js +73 -0
- package/distr/Common/async/pool/Registry.js.map +1 -0
- package/distr/Common/async/pool/index.js +13 -0
- package/distr/Common/async/pool/index.js.map +1 -0
- package/distr/Common/ds/LinkedList.js +64 -0
- package/distr/Common/ds/LinkedList.js.map +1 -0
- package/distr/Common/multithread/ThreadPool.js +74 -0
- package/distr/Common/multithread/ThreadPool.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +2 -1
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +0 -3
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +13 -4
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +29 -107
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorPool.js +62 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorPool.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +29 -36
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +28 -35
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedThreadWorker.js +14 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedThreadWorker.js.map +1 -0
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +1 -1
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +0 -10
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +2 -6
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +0 -22
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +1 -3
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +2 -5
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js.map +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +0 -10
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js.map +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +1 -2
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -1
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +1 -1
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js.map +1 -1
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js +1 -1
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js.map +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +0 -40
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js.map +0 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +0 -19
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js.map +0 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.GeneratorPool = void 0;
|
|
8
|
+
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
9
|
+
var _ThreadPool = require("../../../../../Common/multithread/ThreadPool");
|
|
10
|
+
var _IterableUtils = require("../../../../../Common/IterableUtils");
|
|
11
|
+
const WORKER_MAX_OLD_GENERATION_MB = 512;
|
|
12
|
+
|
|
13
|
+
// Candy always runs from compiled `distr/` where `.js` file exists.
|
|
14
|
+
const WORKER_JS_FILENAME = "ReadSourcesAndProcessSugarWorker.js";
|
|
15
|
+
const defaultWorkerScriptPath = _nodePath.default.join(__dirname, WORKER_JS_FILENAME);
|
|
16
|
+
class GeneratorPool {
|
|
17
|
+
constructor(generatorPath, options = {}) {
|
|
18
|
+
this.pool = void 0;
|
|
19
|
+
const {
|
|
20
|
+
maxWorkers = 1,
|
|
21
|
+
workerPath = defaultWorkerScriptPath
|
|
22
|
+
} = options;
|
|
23
|
+
this.pool = new _ThreadPool.ThreadPool({
|
|
24
|
+
workerPath: workerPath,
|
|
25
|
+
size: Math.max(1, maxWorkers),
|
|
26
|
+
workerOptions: {
|
|
27
|
+
workerData: {
|
|
28
|
+
generatorPath: generatorPath
|
|
29
|
+
},
|
|
30
|
+
resourceLimits: {
|
|
31
|
+
maxOldGenerationSizeMb: WORKER_MAX_OLD_GENERATION_MB
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async generate(message) {
|
|
37
|
+
if (!this.pool) {
|
|
38
|
+
throw new Error("GeneratorPool: exec on disposed pool");
|
|
39
|
+
}
|
|
40
|
+
const response = await this.pool.exec(message);
|
|
41
|
+
if (response.type === "Error") {
|
|
42
|
+
throw new Error(response.errorText);
|
|
43
|
+
}
|
|
44
|
+
return this.reconstructForm(response.generatedForm);
|
|
45
|
+
}
|
|
46
|
+
async dispose() {
|
|
47
|
+
var _this$pool;
|
|
48
|
+
await ((_this$pool = this.pool) === null || _this$pool === void 0 ? void 0 : _this$pool.dispose());
|
|
49
|
+
this.pool = undefined;
|
|
50
|
+
}
|
|
51
|
+
reconstructForm(formContent) {
|
|
52
|
+
const result = {};
|
|
53
|
+
for (const [key, item] of (0, _IterableUtils.iterateEntries)(formContent)) {
|
|
54
|
+
// Transferred ArrayBuffer -> reconstruct a Buffer (zero-copy view).
|
|
55
|
+
// String values pass through as-is.
|
|
56
|
+
result[key] = item instanceof ArrayBuffer ? Buffer.from(item) : item;
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.GeneratorPool = GeneratorPool;
|
|
62
|
+
//# sourceMappingURL=GeneratorPool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeneratorPool.js","names":["_nodePath","_interopRequireDefault","require","_ThreadPool","_IterableUtils","WORKER_MAX_OLD_GENERATION_MB","WORKER_JS_FILENAME","defaultWorkerScriptPath","path","join","__dirname","GeneratorPool","constructor","generatorPath","options","pool","maxWorkers","workerPath","ThreadPool","size","Math","max","workerOptions","workerData","resourceLimits","maxOldGenerationSizeMb","generate","message","Error","response","exec","type","errorText","reconstructForm","generatedForm","dispose","_this$pool","undefined","formContent","result","key","item","iterateEntries","ArrayBuffer","Buffer","from","exports"],"sources":["../../../../../../src/BuildTasks/Generator/GeneratorWorker/GeneratorPool.ts"],"sourcesContent":["import path from \"node:path\";\n\nimport { ThreadPool } from \"../../../../../Common/multithread/ThreadPool\";\nimport { GeneratedForm } from \"../../Form/GenerateForm\";\nimport { iterateEntries } from \"../../../../../Common/IterableUtils\";\n\nimport type { CallMessage, CallResponse, GeneratedFormWorkerMessage } from \"./ReadSourcesAndProcessSugarWorker\";\n\nconst WORKER_MAX_OLD_GENERATION_MB = 512;\n\n// Candy always runs from compiled `distr/` where `.js` file exists.\nconst WORKER_JS_FILENAME = \"ReadSourcesAndProcessSugarWorker.js\";\nconst defaultWorkerScriptPath = path.join(__dirname, WORKER_JS_FILENAME);\n\ninterface Options {\n workerPath?: string;\n maxWorkers?: number;\n}\n\nexport class GeneratorPool {\n private pool?: ThreadPool;\n\n public constructor(generatorPath: string, options: Options = {}) {\n const { maxWorkers = 1, workerPath = defaultWorkerScriptPath } = options;\n this.pool = new ThreadPool({\n workerPath: workerPath,\n size: Math.max(1, maxWorkers),\n workerOptions: {\n workerData: { generatorPath: generatorPath },\n resourceLimits: { maxOldGenerationSizeMb: WORKER_MAX_OLD_GENERATION_MB },\n },\n });\n }\n\n public async generate(message: CallMessage): Promise<GeneratedForm> {\n if (!this.pool) {\n throw new Error(\"GeneratorPool: exec on disposed pool\");\n }\n const response = await this.pool.exec<CallMessage, CallResponse>(message);\n if (response.type === \"Error\") {\n throw new Error(response.errorText);\n }\n return this.reconstructForm(response.generatedForm);\n }\n\n public async dispose(): Promise<void> {\n await this.pool?.dispose();\n this.pool = undefined;\n }\n\n private reconstructForm(formContent: GeneratedFormWorkerMessage): GeneratedForm {\n const result: GeneratedForm = {};\n for (const [key, item] of iterateEntries(formContent)) {\n // Transferred ArrayBuffer -> reconstruct a Buffer (zero-copy view).\n // String values pass through as-is.\n result[key] = item instanceof ArrayBuffer ? Buffer.from(item) : item;\n }\n return result;\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AAIA,MAAMG,4BAA4B,GAAG,GAAG;;AAExC;AACA,MAAMC,kBAAkB,GAAG,qCAAqC;AAChE,MAAMC,uBAAuB,GAAGC,iBAAI,CAACC,IAAI,CAACC,SAAS,EAAEJ,kBAAkB,CAAC;AAOjE,MAAMK,aAAa,CAAC;EAGhBC,WAAWA,CAACC,aAAqB,EAAEC,OAAgB,GAAG,CAAC,CAAC,EAAE;IAAA,KAFzDC,IAAI;IAGR,MAAM;MAAEC,UAAU,GAAG,CAAC;MAAEC,UAAU,GAAGV;IAAwB,CAAC,GAAGO,OAAO;IACxE,IAAI,CAACC,IAAI,GAAG,IAAIG,sBAAU,CAAC;MACvBD,UAAU,EAAEA,UAAU;MACtBE,IAAI,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEL,UAAU,CAAC;MAC7BM,aAAa,EAAE;QACXC,UAAU,EAAE;UAAEV,aAAa,EAAEA;QAAc,CAAC;QAC5CW,cAAc,EAAE;UAAEC,sBAAsB,EAAEpB;QAA6B;MAC3E;IACJ,CAAC,CAAC;EACN;EAEA,MAAaqB,QAAQA,CAACC,OAAoB,EAA0B;IAChE,IAAI,CAAC,IAAI,CAACZ,IAAI,EAAE;MACZ,MAAM,IAAIa,KAAK,CAAC,sCAAsC,CAAC;IAC3D;IACA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACd,IAAI,CAACe,IAAI,CAA4BH,OAAO,CAAC;IACzE,IAAIE,QAAQ,CAACE,IAAI,KAAK,OAAO,EAAE;MAC3B,MAAM,IAAIH,KAAK,CAACC,QAAQ,CAACG,SAAS,CAAC;IACvC;IACA,OAAO,IAAI,CAACC,eAAe,CAACJ,QAAQ,CAACK,aAAa,CAAC;EACvD;EAEA,MAAaC,OAAOA,CAAA,EAAkB;IAAA,IAAAC,UAAA;IAClC,QAAAA,UAAA,GAAM,IAAI,CAACrB,IAAI,cAAAqB,UAAA,uBAATA,UAAA,CAAWD,OAAO,CAAC,CAAC;IAC1B,IAAI,CAACpB,IAAI,GAAGsB,SAAS;EACzB;EAEQJ,eAAeA,CAACK,WAAuC,EAAiB;IAC5E,MAAMC,MAAqB,GAAG,CAAC,CAAC;IAChC,KAAK,MAAM,CAACC,GAAG,EAAEC,IAAI,CAAC,IAAI,IAAAC,6BAAc,EAACJ,WAAW,CAAC,EAAE;MACnD;MACA;MACAC,MAAM,CAACC,GAAG,CAAC,GAAGC,IAAI,YAAYE,WAAW,GAAGC,MAAM,CAACC,IAAI,CAACJ,IAAI,CAAC,GAAGA,IAAI;IACxE;IACA,OAAOF,MAAM;EACjB;AACJ;AAACO,OAAA,CAAAnC,aAAA,GAAAA,aAAA","ignoreList":[]}
|
|
@@ -3,44 +3,37 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.importGenerator = exports.GeneratorSourcesValidator = void 0;
|
|
7
7
|
var _ToolsApiClient = require("../../../Commons/ApiClient/ToolsApiClient");
|
|
8
|
-
|
|
9
|
-
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
requireUncachedAllNamed(module) {
|
|
40
|
-
return (0, _RequireUncached.requireUncachedAllNamed)(module, this.purgeCache);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
exports.GeneratorSourcesImporter = GeneratorSourcesImporter;
|
|
10
|
+
const isEsModule = obj => Boolean(obj && obj.__esModule);
|
|
11
|
+
const interopRequireDefault = obj => isEsModule(obj) ? obj : {
|
|
12
|
+
default: obj
|
|
13
|
+
};
|
|
14
|
+
// eslint-disable-next-line no-warning-comments
|
|
15
|
+
// TODO(04-06-2027) -- избавиться от этой обертки, импортировать движок напрямую
|
|
16
|
+
/**
|
|
17
|
+
* Эта обертка существует для сохранения обратной совместимости
|
|
18
|
+
* между Tools и движками, экспортирующими `getDictionary` и `getLocalizedSugar`
|
|
19
|
+
* единым объектом `localization`
|
|
20
|
+
*/
|
|
21
|
+
const importGenerator = path => {
|
|
22
|
+
var _generator$getDiction, _generator$getLocaliz;
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
24
|
+
const generator = interopRequireDefault(require(path));
|
|
25
|
+
const legacyLocalization = generator.localization;
|
|
26
|
+
return {
|
|
27
|
+
processSugar: generator.processSugar,
|
|
28
|
+
readSources: generator.readSources,
|
|
29
|
+
getSugarTexts: generator.getSugarTexts,
|
|
30
|
+
getAllDependencies: generator.getAllDependencies,
|
|
31
|
+
getAllDependenciesHash: generator.getAllDependenciesHash,
|
|
32
|
+
getDictionary: (_generator$getDiction = generator.getDictionary) !== null && _generator$getDiction !== void 0 ? _generator$getDiction : legacyLocalization.getDictionary,
|
|
33
|
+
getLocalizedSugar: (_generator$getLocaliz = generator.getLocalizedSugar) !== null && _generator$getLocaliz !== void 0 ? _generator$getLocaliz : legacyLocalization.getLocalizedSugar
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
exports.importGenerator = importGenerator;
|
|
44
37
|
class GeneratorSourcesValidator {
|
|
45
38
|
constructor(generationOptions) {
|
|
46
39
|
this.isLocalDebug = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeneratorRequireUtils.js","names":["_ToolsApiClient","require","
|
|
1
|
+
{"version":3,"file":"GeneratorRequireUtils.js","names":["_ToolsApiClient","require","isEsModule","obj","Boolean","__esModule","interopRequireDefault","default","importGenerator","path","_generator$getDiction","_generator$getLocaliz","generator","legacyLocalization","localization","processSugar","readSources","getSugarTexts","getAllDependencies","getAllDependenciesHash","getDictionary","getLocalizedSugar","exports","GeneratorSourcesValidator","constructor","generationOptions","isLocalDebug","apiClient","validate","formContent","compileNormalizationRulesOrDie","_compileResult$diagno","_compileResult$diagno2","normalizationRules","compileResult","compileNormalizationRules","diagnosticMessages","length","Error","JSON","stringify","sourceText","resourcesHash","ToolsApiClient"],"sources":["../../../../../../src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.ts"],"sourcesContent":["import { FormGenerator, GeneratedForm, GenerationOptions } from \"../../Form/GenerateForm\";\nimport { FormResources, SugarContent } from \"../../FormSource\";\nimport { ToolsApiClient } from \"../../../Commons/ApiClient/ToolsApiClient\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RequireResult = any;\nconst isEsModule = (obj: RequireResult): boolean => Boolean(obj && obj.__esModule);\nconst interopRequireDefault = (obj: RequireResult): RequireResult => (isEsModule(obj) ? obj : { default: obj });\n\ntype ProcessSugarFunc = (\n sugarFiles: SugarContent,\n resources: FormResources,\n generationOptions?: GenerationOptions\n) => GeneratedForm | Promise<GeneratedForm>;\n\ntype LocalizationEntryPoint = Pick<FormGenerator, \"getLocalizedSugar\" | \"getDictionary\">;\n\nexport interface Generator {\n readSources: FormGenerator[\"readSources\"];\n processSugar: ProcessSugarFunc;\n getSugarTexts: FormGenerator[\"getSugarTexts\"];\n getAllDependencies: FormGenerator[\"getAllDependencies\"];\n getAllDependenciesHash: FormGenerator[\"getAllDependenciesHash\"];\n getDictionary: FormGenerator[\"getDictionary\"];\n getLocalizedSugar: FormGenerator[\"getLocalizedSugar\"];\n}\n\n// eslint-disable-next-line no-warning-comments\n// TODO(04-06-2027) -- избавиться от этой обертки, импортировать движок напрямую\n/**\n * Эта обертка существует для сохранения обратной совместимости\n * между Tools и движками, экспортирующими `getDictionary` и `getLocalizedSugar`\n * единым объектом `localization`\n */\nexport const importGenerator = (path: string): Generator => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const generator = interopRequireDefault(require(path));\n const legacyLocalization = generator.localization as LocalizationEntryPoint;\n return {\n processSugar: generator.processSugar,\n readSources: generator.readSources,\n getSugarTexts: generator.getSugarTexts,\n getAllDependencies: generator.getAllDependencies,\n getAllDependenciesHash: generator.getAllDependenciesHash,\n getDictionary: generator.getDictionary ?? legacyLocalization.getDictionary,\n getLocalizedSugar: generator.getLocalizedSugar ?? legacyLocalization.getLocalizedSugar,\n };\n};\n\nexport class GeneratorSourcesValidator {\n private readonly isLocalDebug: boolean;\n private readonly apiClient: ToolsApiClient;\n\n public constructor(generationOptions: GenerationOptions | undefined) {\n this.isLocalDebug = generationOptions?.resourcesHash == \"local-hash\";\n this.apiClient = new ToolsApiClient();\n }\n\n public validate = async (formContent: GeneratedForm): Promise<void> => {\n if (!this.isLocalDebug) {\n return;\n }\n await this.compileNormalizationRulesOrDie(formContent);\n };\n\n private readonly compileNormalizationRulesOrDie = async (formContent: GeneratedForm): Promise<void> => {\n const normalizationRules = formContent[\"ServerSide.normalize\"];\n if (!normalizationRules || typeof normalizationRules !== \"string\") {\n return;\n }\n const compileResult = await this.apiClient.compileNormalizationRules(normalizationRules, \"formulas\");\n if (!compileResult || (compileResult?.diagnosticMessages?.length ?? 0) == 0) {\n return;\n }\n\n throw Error(\n `Invalid ServerSide.normalize:\\r\\n\n ${JSON.stringify(compileResult.diagnosticMessages)}\\r\\n\n ${compileResult.sourceText}`\n );\n };\n}\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAEA;;AAEA,MAAMC,UAAU,GAAIC,GAAkB,IAAcC,OAAO,CAACD,GAAG,IAAIA,GAAG,CAACE,UAAU,CAAC;AAClF,MAAMC,qBAAqB,GAAIH,GAAkB,IAAqBD,UAAU,CAACC,GAAG,CAAC,GAAGA,GAAG,GAAG;EAAEI,OAAO,EAAEJ;AAAI,CAAE;AAoB/G;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,eAAe,GAAIC,IAAY,IAAgB;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EACxD;EACA,MAAMC,SAAS,GAAGN,qBAAqB,CAACL,OAAO,CAACQ,IAAI,CAAC,CAAC;EACtD,MAAMI,kBAAkB,GAAGD,SAAS,CAACE,YAAsC;EAC3E,OAAO;IACHC,YAAY,EAAEH,SAAS,CAACG,YAAY;IACpCC,WAAW,EAAEJ,SAAS,CAACI,WAAW;IAClCC,aAAa,EAAEL,SAAS,CAACK,aAAa;IACtCC,kBAAkB,EAAEN,SAAS,CAACM,kBAAkB;IAChDC,sBAAsB,EAAEP,SAAS,CAACO,sBAAsB;IACxDC,aAAa,GAAAV,qBAAA,GAAEE,SAAS,CAACQ,aAAa,cAAAV,qBAAA,cAAAA,qBAAA,GAAIG,kBAAkB,CAACO,aAAa;IAC1EC,iBAAiB,GAAAV,qBAAA,GAAEC,SAAS,CAACS,iBAAiB,cAAAV,qBAAA,cAAAA,qBAAA,GAAIE,kBAAkB,CAACQ;EACzE,CAAC;AACL,CAAC;AAACC,OAAA,CAAAd,eAAA,GAAAA,eAAA;AAEK,MAAMe,yBAAyB,CAAC;EAI5BC,WAAWA,CAACC,iBAAgD,EAAE;IAAA,KAHpDC,YAAY;IAAA,KACZC,SAAS;IAAA,KAOnBC,QAAQ,GAAG,MAAOC,WAA0B,IAAoB;MACnE,IAAI,CAAC,IAAI,CAACH,YAAY,EAAE;QACpB;MACJ;MACA,MAAM,IAAI,CAACI,8BAA8B,CAACD,WAAW,CAAC;IAC1D,CAAC;IAAA,KAEgBC,8BAA8B,GAAG,MAAOD,WAA0B,IAAoB;MAAA,IAAAE,qBAAA,EAAAC,sBAAA;MACnG,MAAMC,kBAAkB,GAAGJ,WAAW,CAAC,sBAAsB,CAAC;MAC9D,IAAI,CAACI,kBAAkB,IAAI,OAAOA,kBAAkB,KAAK,QAAQ,EAAE;QAC/D;MACJ;MACA,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACP,SAAS,CAACQ,yBAAyB,CAACF,kBAAkB,EAAE,UAAU,CAAC;MACpG,IAAI,CAACC,aAAa,IAAI,EAAAH,qBAAA,GAACG,aAAa,aAAbA,aAAa,gBAAAF,sBAAA,GAAbE,aAAa,CAAEE,kBAAkB,cAAAJ,sBAAA,uBAAjCA,sBAAA,CAAmCK,MAAM,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,CAAC,KAAK,CAAC,EAAE;QACzE;MACJ;MAEA,MAAMO,KAAK,CACP;AACZ,eAAeC,IAAI,CAACC,SAAS,CAACN,aAAa,CAACE,kBAAkB,CAAC;AAC/D,eAAeF,aAAa,CAACO,UAAU,EAC/B,CAAC;IACL,CAAC;IA1BG,IAAI,CAACf,YAAY,GAAG,CAAAD,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAEiB,aAAa,KAAI,YAAY;IACpE,IAAI,CAACf,SAAS,GAAG,IAAIgB,8BAAc,CAAC,CAAC;EACzC;AAyBJ;AAACrB,OAAA,CAAAC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _nodeWorker_threads = require("node:worker_threads");
|
|
3
4
|
var _IterableUtils = require("../../../../../Common/IterableUtils");
|
|
4
5
|
var _GeneratorRequireUtils = require("./GeneratorRequireUtils");
|
|
5
|
-
var
|
|
6
|
-
|
|
6
|
+
var _TypedThreadWorker = require("./TypedThreadWorker");
|
|
7
|
+
const {
|
|
8
|
+
generatorPath
|
|
9
|
+
} = _nodeWorker_threads.workerData;
|
|
10
|
+
const generator = (0, _GeneratorRequireUtils.importGenerator)(generatorPath);
|
|
11
|
+
(0, _TypedThreadWorker.startWorker)(async ([formPath, farmPath, options], send) => {
|
|
7
12
|
let formSource;
|
|
8
13
|
try {
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
formSource = await readSources(formSourcesPath, farmDirectory);
|
|
12
|
-
const processSugar = await importer.importProcessSugar();
|
|
13
|
-
const formContent = await processSugar(formSource.sugarContent, formSource.resources, generationOptions);
|
|
14
|
+
formSource = await generator.readSources(formPath, farmPath);
|
|
15
|
+
const formContent = await generator.processSugar(formSource.sugarContent, formSource.resources, options);
|
|
14
16
|
|
|
15
17
|
// eslint-disable-next-line no-warning-comments
|
|
16
18
|
// TODO(2026-06-30): временно отключаем валидацию компиляции Flang на бэкенде (исправить в задаче https://yt.skbkontur.ru/issue/FS-9242)
|
|
@@ -18,40 +20,31 @@ _TypedProcessWorker.TypedProcessWorker.start(async ([pathToGeneratorProcessSugar
|
|
|
18
20
|
// await validator.validate(formContent);
|
|
19
21
|
|
|
20
22
|
const result = {};
|
|
21
|
-
|
|
22
|
-
// NOTE Because only JSON are allowed for IPC we need to convert Buffer -> Base64
|
|
23
|
-
// Another solution is use a stream, but formContent still need to convert or send by chunks
|
|
23
|
+
const transferList = [];
|
|
24
24
|
for (const [key, formContentItem] of (0, _IterableUtils.iterateEntries)(formContent)) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
if (formContentItem instanceof Buffer) {
|
|
26
|
+
// Buffer.buffer is typed as ArrayBuffer | SharedArrayBuffer,
|
|
27
|
+
// but Node.js Buffers never use SharedArrayBuffer in practice.
|
|
28
|
+
const content = formContentItem.buffer.slice(formContentItem.byteOffset, formContentItem.byteOffset + formContentItem.byteLength);
|
|
29
|
+
result[key] = content;
|
|
30
|
+
transferList.push(content);
|
|
31
|
+
} else {
|
|
32
|
+
result[key] = formContentItem;
|
|
33
|
+
}
|
|
30
34
|
}
|
|
31
35
|
send({
|
|
32
36
|
type: "Result",
|
|
33
37
|
gfv: formSource.resources.gfv,
|
|
34
|
-
generatedForm: result
|
|
35
|
-
|
|
36
|
-
});
|
|
38
|
+
generatedForm: result
|
|
39
|
+
}, transferList);
|
|
37
40
|
} catch (error) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
});
|
|
46
|
-
} else {
|
|
47
|
-
var _formSource2;
|
|
48
|
-
send({
|
|
49
|
-
type: "Error",
|
|
50
|
-
gfv: (_formSource2 = formSource) === null || _formSource2 === void 0 ? void 0 : _formSource2.resources.gfv,
|
|
51
|
-
errorText: `${error}`,
|
|
52
|
-
requestNumber: requestNumber
|
|
53
|
-
});
|
|
54
|
-
}
|
|
41
|
+
var _formSource;
|
|
42
|
+
const errorText = error instanceof Error ? `${error.toString()}\n${error.stack}` : `${error}`;
|
|
43
|
+
send({
|
|
44
|
+
type: "Error",
|
|
45
|
+
gfv: (_formSource = formSource) === null || _formSource === void 0 ? void 0 : _formSource.resources.gfv,
|
|
46
|
+
errorText: errorText
|
|
47
|
+
});
|
|
55
48
|
}
|
|
56
49
|
});
|
|
57
50
|
//# sourceMappingURL=ReadSourcesAndProcessSugarWorker.js.map
|
package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadSourcesAndProcessSugarWorker.js","names":["
|
|
1
|
+
{"version":3,"file":"ReadSourcesAndProcessSugarWorker.js","names":["_nodeWorker_threads","require","_IterableUtils","_GeneratorRequireUtils","_TypedThreadWorker","generatorPath","workerData","generator","importGenerator","startWorker","formPath","farmPath","options","send","formSource","readSources","formContent","processSugar","sugarContent","resources","result","transferList","key","formContentItem","iterateEntries","Buffer","content","buffer","slice","byteOffset","byteLength","push","type","gfv","generatedForm","error","_formSource","errorText","Error","toString","stack"],"sources":["../../../../../../src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.ts"],"sourcesContent":["import { workerData } from \"node:worker_threads\";\n\nimport type { GeneratedForm, GenerationOptions } from \"../../Form/GenerateForm\";\nimport type { FormSource } from \"../../FormSource\";\nimport { iterateEntries } from \"../../../../../Common/IterableUtils\";\n\nimport { importGenerator } from \"./GeneratorRequireUtils\";\nimport { startWorker } from \"./TypedThreadWorker\";\n\nexport interface GeneratedFormWorkerMessage {\n [relativeFileName: string]: string | ArrayBuffer;\n}\n\nexport type CallMessage = [formPath: string, farmPath: string, options: GenerationOptions | undefined];\n\nexport type CallResponse =\n | { type: \"Result\"; gfv: string; generatedForm: GeneratedFormWorkerMessage }\n | { type: \"Error\"; gfv?: string; errorText: string };\n\nconst { generatorPath } = workerData as { generatorPath: string };\nconst generator = importGenerator(generatorPath);\n\nstartWorker<CallMessage, CallResponse>(async ([formPath, farmPath, options], send): Promise<void> => {\n let formSource: FormSource | undefined;\n try {\n formSource = await generator.readSources(formPath, farmPath);\n const formContent: GeneratedForm = await generator.processSugar(\n formSource.sugarContent,\n formSource.resources,\n options\n );\n\n // eslint-disable-next-line no-warning-comments\n // TODO(2026-06-30): временно отключаем валидацию компиляции Flang на бэкенде (исправить в задаче https://yt.skbkontur.ru/issue/FS-9242)\n // const validator = new GeneratorSourcesValidator(generationOptions);\n // await validator.validate(formContent);\n\n const result: GeneratedFormWorkerMessage = {};\n const transferList: ArrayBuffer[] = [];\n\n for (const [key, formContentItem] of iterateEntries(formContent)) {\n if (formContentItem instanceof Buffer) {\n // Buffer.buffer is typed as ArrayBuffer | SharedArrayBuffer,\n // but Node.js Buffers never use SharedArrayBuffer in practice.\n const content = formContentItem.buffer.slice(\n formContentItem.byteOffset,\n formContentItem.byteOffset + formContentItem.byteLength\n ) as ArrayBuffer;\n result[key] = content;\n transferList.push(content);\n } else {\n result[key] = formContentItem as string;\n }\n }\n\n send(\n {\n type: \"Result\",\n gfv: formSource.resources.gfv,\n generatedForm: result,\n },\n transferList\n );\n } catch (error) {\n const errorText = error instanceof Error ? `${error.toString()}\\n${error.stack}` : `${error}`;\n send({\n type: \"Error\",\n gfv: formSource?.resources.gfv,\n errorText: errorText,\n });\n }\n});\n"],"mappings":";;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAIA,IAAAC,cAAA,GAAAD,OAAA;AAEA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA;AAYA,MAAM;EAAEI;AAAc,CAAC,GAAGC,8BAAuC;AACjE,MAAMC,SAAS,GAAG,IAAAC,sCAAe,EAACH,aAAa,CAAC;AAEhD,IAAAI,8BAAW,EAA4B,OAAO,CAACC,QAAQ,EAAEC,QAAQ,EAAEC,OAAO,CAAC,EAAEC,IAAI,KAAoB;EACjG,IAAIC,UAAkC;EACtC,IAAI;IACAA,UAAU,GAAG,MAAMP,SAAS,CAACQ,WAAW,CAACL,QAAQ,EAAEC,QAAQ,CAAC;IAC5D,MAAMK,WAA0B,GAAG,MAAMT,SAAS,CAACU,YAAY,CAC3DH,UAAU,CAACI,YAAY,EACvBJ,UAAU,CAACK,SAAS,EACpBP,OACJ,CAAC;;IAED;IACA;IACA;IACA;;IAEA,MAAMQ,MAAkC,GAAG,CAAC,CAAC;IAC7C,MAAMC,YAA2B,GAAG,EAAE;IAEtC,KAAK,MAAM,CAACC,GAAG,EAAEC,eAAe,CAAC,IAAI,IAAAC,6BAAc,EAACR,WAAW,CAAC,EAAE;MAC9D,IAAIO,eAAe,YAAYE,MAAM,EAAE;QACnC;QACA;QACA,MAAMC,OAAO,GAAGH,eAAe,CAACI,MAAM,CAACC,KAAK,CACxCL,eAAe,CAACM,UAAU,EAC1BN,eAAe,CAACM,UAAU,GAAGN,eAAe,CAACO,UACjD,CAAgB;QAChBV,MAAM,CAACE,GAAG,CAAC,GAAGI,OAAO;QACrBL,YAAY,CAACU,IAAI,CAACL,OAAO,CAAC;MAC9B,CAAC,MAAM;QACHN,MAAM,CAACE,GAAG,CAAC,GAAGC,eAAyB;MAC3C;IACJ;IAEAV,IAAI,CACA;MACImB,IAAI,EAAE,QAAQ;MACdC,GAAG,EAAEnB,UAAU,CAACK,SAAS,CAACc,GAAG;MAC7BC,aAAa,EAAEd;IACnB,CAAC,EACDC,YACJ,CAAC;EACL,CAAC,CAAC,OAAOc,KAAK,EAAE;IAAA,IAAAC,WAAA;IACZ,MAAMC,SAAS,GAAGF,KAAK,YAAYG,KAAK,GAAG,GAAGH,KAAK,CAACI,QAAQ,CAAC,CAAC,KAAKJ,KAAK,CAACK,KAAK,EAAE,GAAG,GAAGL,KAAK,EAAE;IAC7FtB,IAAI,CAAC;MACDmB,IAAI,EAAE,OAAO;MACbC,GAAG,GAAAG,WAAA,GAAEtB,UAAU,cAAAsB,WAAA,uBAAVA,WAAA,CAAYjB,SAAS,CAACc,GAAG;MAC9BI,SAAS,EAAEA;IACf,CAAC,CAAC;EACN;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.startWorker = void 0;
|
|
7
|
+
var _nodeWorker_threads = require("node:worker_threads");
|
|
8
|
+
const startWorker = handle => {
|
|
9
|
+
_nodeWorker_threads.parentPort === null || _nodeWorker_threads.parentPort === void 0 || _nodeWorker_threads.parentPort.on("message", async msg => {
|
|
10
|
+
await handle(msg, (out, transfer) => _nodeWorker_threads.parentPort === null || _nodeWorker_threads.parentPort === void 0 ? void 0 : _nodeWorker_threads.parentPort.postMessage(out, transfer));
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
exports.startWorker = startWorker;
|
|
14
|
+
//# sourceMappingURL=TypedThreadWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypedThreadWorker.js","names":["_nodeWorker_threads","require","startWorker","handle","parentPort","on","msg","out","transfer","postMessage","exports"],"sources":["../../../../../../src/BuildTasks/Generator/GeneratorWorker/TypedThreadWorker.ts"],"sourcesContent":["import { parentPort, TransferListItem } from \"node:worker_threads\";\n\ntype Send<Out> = (out: Out, transfer?: TransferListItem[]) => void;\ntype Handle<In, Out> = (msg: In, send: Send<Out>) => Promise<void>;\n\nexport const startWorker = <In, Out>(handle: Handle<In, Out>): void => {\n parentPort?.on(\"message\", async (msg: In) => {\n await handle(msg, (out, transfer) => parentPort?.postMessage(out, transfer));\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAKO,MAAMC,WAAW,GAAaC,MAAuB,IAAW;EACnEC,8BAAU,aAAVA,8BAAU,eAAVA,8BAAU,CAAEC,EAAE,CAAC,SAAS,EAAE,MAAOC,GAAO,IAAK;IACzC,MAAMH,MAAM,CAACG,GAAG,EAAE,CAACC,GAAG,EAAEC,QAAQ,KAAKJ,8BAAU,aAAVA,8BAAU,uBAAVA,8BAAU,CAAEK,WAAW,CAACF,GAAG,EAAEC,QAAQ,CAAC,CAAC;EAChF,CAAC,CAAC;AACN,CAAC;AAACE,OAAA,CAAAR,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -20,7 +20,7 @@ let FormBuildMode = exports.FormBuildMode = /*#__PURE__*/function (FormBuildMode
|
|
|
20
20
|
FormBuildMode[FormBuildMode["NoEditor"] = 1] = "NoEditor";
|
|
21
21
|
return FormBuildMode;
|
|
22
22
|
}({});
|
|
23
|
-
async function resolveFormInfo(formJsonFile, pathToForm,
|
|
23
|
+
async function resolveFormInfo(formJsonFile, pathToForm, logger = (0, _StaticLogger.getLogger)(), upgradeFormJson = false, useLastStableVersion = false, usePrereleaseVersion, nightly = false) {
|
|
24
24
|
var _formConfig$dependenc, _formConfig$dependenc2, _formConfig$settings$;
|
|
25
25
|
const formConfig = await readFormConfig(formJsonFile);
|
|
26
26
|
if (useLastStableVersion && usePrereleaseVersion != undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolveFormInfo.js","names":["_fsExtra","require","_lodash","_FsUtils","_StaticLogger","_FormPathUtils","_PublishedVersionUtils","_Version","FormBuildMode","exports","resolveFormInfo","formJsonFile","pathToForm","_engineDirectory","logger","getLogger","upgradeFormJson","useLastStableVersion","usePrereleaseVersion","nightly","_formConfig$dependenc","_formConfig$dependenc2","_formConfig$settings$","formConfig","readFormConfig","undefined","Error","dependencies","engine","getLastStableEngineVersion","generator","getLastStableGeneratorVersion","log","writeFileAsync","JSON","stringify","prereleaseVersionFormJson","getPrereleaseVersionFormJson","generatorVersion","parseCandyVersionSpec","engineVersion","type","preId","themes","mode","NoEditor","NormalBuild","formName","extractGfvFromFormPath","formSourcesPath","useServerSideNormalization","settings","useServerSideFLangNormalization","isNewFormJsonFormat","readJson","getFormConfigFromSource","_formConfig$dependenc3","_formConfig$dependenc4","_formConfig$settings","_formConfig$mode","isValidSemVerVersionRange","pickBy","x","build"],"sources":["../../../../src/BuildTasks/ResolveFormInfo.ts"],"sourcesContent":["import { readJson } from \"fs-extra\";\nimport { pickBy } from \"lodash\";\n\nimport { writeFileAsync } from \"../Commons/FsUtils\";\nimport { ILogger } from \"../Commons/Logging/ILogger\";\nimport { getLogger } from \"../Commons/Logging/StaticLogger\";\nimport { extractGfvFromFormPath } from \"../../../Common/FormPathUtils\";\n\nimport {\n getLastStableEngineVersion,\n getLastStableGeneratorVersion,\n getPrereleaseVersionFormJson,\n} from \"./PublishedVersionUtils\";\nimport { CandyVersionSpec, isValidSemVerVersionRange, parseCandyVersionSpec } from \"./Version\";\n\nexport enum FormBuildMode {\n NormalBuild,\n NoEditor,\n}\n\nexport interface FormInfo {\n themes?: string[];\n mode: FormBuildMode;\n formName: string;\n formSourcesPath: string;\n generatorVersion: undefined | CandyVersionSpec;\n engineVersion: undefined | CandyVersionSpec;\n useServerSideNormalization: boolean;\n}\n\nexport interface FormConfigContent {\n themes?: string[];\n build?: \"ci\" | \"manual\";\n mode?: \"no-editor\";\n dependencies?: {\n generator?: string;\n engine?: string;\n };\n settings?: {\n useServerSideFLangNormalization?: boolean;\n autoCalculationCalculatorImpl?: \"calculator2\";\n disableFlangRulesForEnableAutoFieldFeature?: boolean;\n disableFlangRulesForFormulaAndInitNormalizer?: boolean;\n };\n}\n\ninterface FormConfig {\n themes?: string[];\n build?: \"ci\" | \"manual\";\n mode?: \"no-editor\" | \"normal-build\";\n dependencies?: {\n generator: undefined | string;\n engine: undefined | string;\n };\n settings: {\n useServerSideFLangNormalization: boolean;\n autoCalculationCalculatorImpl?: \"calculator2\" | \"default\";\n disableFlangRulesForEnableAutoFieldFeature?: boolean;\n disableFlangRulesForFormulaAndInitNormalizer?: boolean;\n };\n}\n\nexport async function resolveFormInfo(\n formJsonFile: string,\n pathToForm: string,\n _engineDirectory: undefined | string,\n logger: ILogger = getLogger(),\n upgradeFormJson: boolean = false,\n useLastStableVersion: boolean = false,\n usePrereleaseVersion?: string,\n nightly: boolean = false\n): Promise<FormInfo> {\n const formConfig = await readFormConfig(formJsonFile);\n if (useLastStableVersion && usePrereleaseVersion != undefined) {\n throw new Error(\"Необходимо использовать либо флаг useLastStableVersion либо usePrereleaseVersion\");\n }\n if (useLastStableVersion) {\n formConfig.dependencies = {\n engine: await getLastStableEngineVersion(),\n generator: await getLastStableGeneratorVersion(),\n };\n logger.log(`Updated to last stable version ${formConfig.dependencies.engine}`);\n await writeFileAsync(formJsonFile, JSON.stringify(formConfig, undefined, \" \"), \"utf8\");\n }\n if (usePrereleaseVersion != undefined) {\n const prereleaseVersionFormJson = await getPrereleaseVersionFormJson(usePrereleaseVersion);\n if (prereleaseVersionFormJson != undefined) {\n formConfig.dependencies = {\n engine: prereleaseVersionFormJson,\n generator: prereleaseVersionFormJson,\n };\n logger.log(`Updated to last prerelease version ${formConfig.dependencies.engine}`);\n }\n await writeFileAsync(formJsonFile, JSON.stringify(formConfig, undefined, \" \"), \"utf8\");\n }\n let generatorVersion =\n formConfig.dependencies?.generator != undefined\n ? parseCandyVersionSpec(formConfig.dependencies.generator)\n : undefined;\n let engineVersion =\n formConfig.dependencies?.engine != undefined\n ? parseCandyVersionSpec(formConfig.dependencies.engine)\n : undefined;\n if (nightly) {\n generatorVersion = { type: \"pre\", preId: \"nightly\" };\n engineVersion = { type: \"pre\", preId: \"nightly\" };\n }\n if (upgradeFormJson) {\n await writeFileAsync(formJsonFile, JSON.stringify(formConfig, undefined, \" \"), \"utf8\");\n }\n return {\n themes: formConfig.themes,\n mode: formConfig.mode === \"no-editor\" ? FormBuildMode.NoEditor : FormBuildMode.NormalBuild,\n formName: extractGfvFromFormPath(pathToForm),\n formSourcesPath: pathToForm,\n generatorVersion: generatorVersion,\n engineVersion: engineVersion,\n useServerSideNormalization: formConfig.settings.useServerSideFLangNormalization ?? false,\n };\n}\n\nexport async function isNewFormJsonFormat(formJsonFile: string): Promise<boolean> {\n const formConfig: FormConfigContent = await readJson(formJsonFile);\n return formConfig.dependencies != undefined;\n}\n\nexport async function readFormConfig(formJsonFile: string): Promise<FormConfig> {\n const formConfig: FormConfigContent = await readJson(formJsonFile);\n return getFormConfigFromSource(formConfig);\n}\n\nexport function getFormConfigFromSource(formConfig: FormConfigContent): FormConfig {\n if (\n formConfig.dependencies?.generator != undefined &&\n !isValidSemVerVersionRange(formConfig.dependencies.generator)\n ) {\n throw new Error(`${formConfig.dependencies.generator} is not valid version format`);\n }\n\n if (formConfig.dependencies?.engine != undefined && !isValidSemVerVersionRange(formConfig.dependencies.engine)) {\n throw new Error(`${formConfig.dependencies.engine} is not valid version format`);\n }\n\n const settings = {\n useServerSideFLangNormalization: false,\n ...pickBy(formConfig.settings ?? {}, x => x !== undefined),\n };\n\n return {\n themes: formConfig.themes,\n build: formConfig.build || \"manual\",\n mode: formConfig.mode ?? \"normal-build\",\n settings: settings,\n dependencies:\n formConfig.dependencies != undefined\n ? {\n generator: formConfig.dependencies.generator,\n engine: formConfig.dependencies.engine,\n }\n : undefined,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ResolveFormInfo.js","names":["_fsExtra","require","_lodash","_FsUtils","_StaticLogger","_FormPathUtils","_PublishedVersionUtils","_Version","FormBuildMode","exports","resolveFormInfo","formJsonFile","pathToForm","logger","getLogger","upgradeFormJson","useLastStableVersion","usePrereleaseVersion","nightly","_formConfig$dependenc","_formConfig$dependenc2","_formConfig$settings$","formConfig","readFormConfig","undefined","Error","dependencies","engine","getLastStableEngineVersion","generator","getLastStableGeneratorVersion","log","writeFileAsync","JSON","stringify","prereleaseVersionFormJson","getPrereleaseVersionFormJson","generatorVersion","parseCandyVersionSpec","engineVersion","type","preId","themes","mode","NoEditor","NormalBuild","formName","extractGfvFromFormPath","formSourcesPath","useServerSideNormalization","settings","useServerSideFLangNormalization","isNewFormJsonFormat","readJson","getFormConfigFromSource","_formConfig$dependenc3","_formConfig$dependenc4","_formConfig$settings","_formConfig$mode","isValidSemVerVersionRange","pickBy","x","build"],"sources":["../../../../src/BuildTasks/ResolveFormInfo.ts"],"sourcesContent":["import { readJson } from \"fs-extra\";\nimport { pickBy } from \"lodash\";\n\nimport { writeFileAsync } from \"../Commons/FsUtils\";\nimport { ILogger } from \"../Commons/Logging/ILogger\";\nimport { getLogger } from \"../Commons/Logging/StaticLogger\";\nimport { extractGfvFromFormPath } from \"../../../Common/FormPathUtils\";\n\nimport {\n getLastStableEngineVersion,\n getLastStableGeneratorVersion,\n getPrereleaseVersionFormJson,\n} from \"./PublishedVersionUtils\";\nimport { CandyVersionSpec, isValidSemVerVersionRange, parseCandyVersionSpec } from \"./Version\";\n\nexport enum FormBuildMode {\n NormalBuild,\n NoEditor,\n}\n\nexport interface FormInfo {\n themes?: string[];\n mode: FormBuildMode;\n formName: string;\n formSourcesPath: string;\n generatorVersion: undefined | CandyVersionSpec;\n engineVersion: undefined | CandyVersionSpec;\n useServerSideNormalization: boolean;\n}\n\nexport interface FormConfigContent {\n themes?: string[];\n build?: \"ci\" | \"manual\";\n mode?: \"no-editor\";\n dependencies?: {\n generator?: string;\n engine?: string;\n };\n settings?: {\n useServerSideFLangNormalization?: boolean;\n autoCalculationCalculatorImpl?: \"calculator2\";\n disableFlangRulesForEnableAutoFieldFeature?: boolean;\n disableFlangRulesForFormulaAndInitNormalizer?: boolean;\n };\n}\n\ninterface FormConfig {\n themes?: string[];\n build?: \"ci\" | \"manual\";\n mode?: \"no-editor\" | \"normal-build\";\n dependencies?: {\n generator: undefined | string;\n engine: undefined | string;\n };\n settings: {\n useServerSideFLangNormalization: boolean;\n autoCalculationCalculatorImpl?: \"calculator2\" | \"default\";\n disableFlangRulesForEnableAutoFieldFeature?: boolean;\n disableFlangRulesForFormulaAndInitNormalizer?: boolean;\n };\n}\n\nexport async function resolveFormInfo(\n formJsonFile: string,\n pathToForm: string,\n logger: ILogger = getLogger(),\n upgradeFormJson: boolean = false,\n useLastStableVersion: boolean = false,\n usePrereleaseVersion?: string,\n nightly: boolean = false\n): Promise<FormInfo> {\n const formConfig = await readFormConfig(formJsonFile);\n if (useLastStableVersion && usePrereleaseVersion != undefined) {\n throw new Error(\"Необходимо использовать либо флаг useLastStableVersion либо usePrereleaseVersion\");\n }\n if (useLastStableVersion) {\n formConfig.dependencies = {\n engine: await getLastStableEngineVersion(),\n generator: await getLastStableGeneratorVersion(),\n };\n logger.log(`Updated to last stable version ${formConfig.dependencies.engine}`);\n await writeFileAsync(formJsonFile, JSON.stringify(formConfig, undefined, \" \"), \"utf8\");\n }\n if (usePrereleaseVersion != undefined) {\n const prereleaseVersionFormJson = await getPrereleaseVersionFormJson(usePrereleaseVersion);\n if (prereleaseVersionFormJson != undefined) {\n formConfig.dependencies = {\n engine: prereleaseVersionFormJson,\n generator: prereleaseVersionFormJson,\n };\n logger.log(`Updated to last prerelease version ${formConfig.dependencies.engine}`);\n }\n await writeFileAsync(formJsonFile, JSON.stringify(formConfig, undefined, \" \"), \"utf8\");\n }\n let generatorVersion =\n formConfig.dependencies?.generator != undefined\n ? parseCandyVersionSpec(formConfig.dependencies.generator)\n : undefined;\n let engineVersion =\n formConfig.dependencies?.engine != undefined\n ? parseCandyVersionSpec(formConfig.dependencies.engine)\n : undefined;\n if (nightly) {\n generatorVersion = { type: \"pre\", preId: \"nightly\" };\n engineVersion = { type: \"pre\", preId: \"nightly\" };\n }\n if (upgradeFormJson) {\n await writeFileAsync(formJsonFile, JSON.stringify(formConfig, undefined, \" \"), \"utf8\");\n }\n return {\n themes: formConfig.themes,\n mode: formConfig.mode === \"no-editor\" ? FormBuildMode.NoEditor : FormBuildMode.NormalBuild,\n formName: extractGfvFromFormPath(pathToForm),\n formSourcesPath: pathToForm,\n generatorVersion: generatorVersion,\n engineVersion: engineVersion,\n useServerSideNormalization: formConfig.settings.useServerSideFLangNormalization ?? false,\n };\n}\n\nexport async function isNewFormJsonFormat(formJsonFile: string): Promise<boolean> {\n const formConfig: FormConfigContent = await readJson(formJsonFile);\n return formConfig.dependencies != undefined;\n}\n\nexport async function readFormConfig(formJsonFile: string): Promise<FormConfig> {\n const formConfig: FormConfigContent = await readJson(formJsonFile);\n return getFormConfigFromSource(formConfig);\n}\n\nexport function getFormConfigFromSource(formConfig: FormConfigContent): FormConfig {\n if (\n formConfig.dependencies?.generator != undefined &&\n !isValidSemVerVersionRange(formConfig.dependencies.generator)\n ) {\n throw new Error(`${formConfig.dependencies.generator} is not valid version format`);\n }\n\n if (formConfig.dependencies?.engine != undefined && !isValidSemVerVersionRange(formConfig.dependencies.engine)) {\n throw new Error(`${formConfig.dependencies.engine} is not valid version format`);\n }\n\n const settings = {\n useServerSideFLangNormalization: false,\n ...pickBy(formConfig.settings ?? {}, x => x !== undefined),\n };\n\n return {\n themes: formConfig.themes,\n build: formConfig.build || \"manual\",\n mode: formConfig.mode ?? \"normal-build\",\n settings: settings,\n dependencies:\n formConfig.dependencies != undefined\n ? {\n generator: formConfig.dependencies.generator,\n engine: formConfig.dependencies.engine,\n }\n : undefined,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -75,16 +75,6 @@ const buildFormsOptionsDefinition = exports.buildFormsOptionsDefinition = (0, _C
|
|
|
75
75
|
usePrereleaseVersion: input
|
|
76
76
|
}),
|
|
77
77
|
description: "Устанавливает версию движка в файла form.json в последнюю пререлизную версию в заданным preid. В файле версии генератора и движка будут установлены в pre:some-preid."
|
|
78
|
-
}, {
|
|
79
|
-
name: "no-reformat",
|
|
80
|
-
doesNotRequireValue: true,
|
|
81
|
-
defaultValue: {
|
|
82
|
-
skipGeneratedCodeReformatting: true
|
|
83
|
-
},
|
|
84
|
-
parse: input => ({
|
|
85
|
-
skipGeneratedCodeReformatting: input
|
|
86
|
-
}),
|
|
87
|
-
description: "Отлючает форматирование генерируемого кода. Работает, только если версия генератора поддерживает эту опцию. Используется для ускорения сборки форм. (default: true)"
|
|
88
78
|
}, {
|
|
89
79
|
alias: "g",
|
|
90
80
|
name: "gfvs",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildFormsOptions.js","names":["_CommandBasedOptionsParser","require","_CommonOptionDefintions","_BuildCacheMode","buildFormsOptionsDefinition","exports","commandDefinition","optionsDefinition","alias","name","defaultValue","watch","parse","input","doesNotRequireValue","description","clean","mode","upgradeFormJson","buildCacheMode","BuildCacheMode","ReadOnly","parseBuildCacheMode","useLastStableVersion","usePrereleaseVersion","undefined","skipGeneratedCodeReformatting","formGlobs","defaultOption","multiple","useVersionFromCache","buildCandyWidget","devModeOption","logVerbosityOption","detailedDescription","trim","examples","extendedDetails"],"sources":["../../../../../src/CLICommands/BuildForms/BuildFormsOptions.ts"],"sourcesContent":["import { commandDefinition, optionsDefinition } from \"../../Commons/Options/CommandBasedOptionsParser\";\nimport { CommonOptions } from \"../CommonOptions/CommonOptions\";\nimport { devModeOption, logVerbosityOption } from \"../CommonOptions/CommonOptionDefintions\";\n\nimport { BuildCacheMode, parseBuildCacheMode } from \"./BuildCacheMode\";\n\nexport interface BuildFormsOptions extends CommonOptions {\n watch: boolean;\n clean: boolean;\n formGlobs: string[];\n upgradeFormJson: boolean;\n useLastStableVersion: boolean;\n usePrereleaseVersion?: string;\n skipGeneratedCodeReformatting: boolean;\n useVersionFromCache: boolean;\n mode: \"development\" | \"production\";\n buildCacheMode: BuildCacheMode;\n buildCandyWidget: boolean;\n}\n\nexport const buildFormsOptionsDefinition = commandDefinition<\"build\", BuildFormsOptions>(\n \"build\",\n \"build\",\n optionsDefinition(\n {\n alias: \"w\",\n name: \"watch\",\n defaultValue: { watch: false },\n parse: input => ({ watch: input }),\n doesNotRequireValue: true,\n description:\n \"Watch-режим. Выполняет сборку форм, а затем пересобирает при изменениях. В том числе движка, генератора и статических ресурсов.\",\n },\n {\n name: \"clean\",\n defaultValue: { clean: false },\n parse: input => ({ clean: input }),\n doesNotRequireValue: true,\n description:\n \"Полностью очищает целевой каталог ресурсов. Используется при полной сборке форм для продакшена\",\n },\n {\n name: \"mode\",\n defaultValue: { mode: \"development\" },\n parse: (input: string) => ({ mode: input }),\n description:\n \"Разделение сборок на продовую (mode=production) и не продовую (mode=development). По умолчанию development\",\n },\n {\n name: \"upgrade-form-json\",\n defaultValue: { upgradeFormJson: false },\n parse: input => ({ upgradeFormJson: input }),\n doesNotRequireValue: true,\n description: \"Форсирует изменение формата файла form.json на новый\",\n },\n {\n name: \"build-cache\",\n defaultValue: { buildCacheMode: BuildCacheMode.ReadOnly },\n parse: (input: string) => ({ buildCacheMode: parseBuildCacheMode(input) }),\n description:\n \"Задаёт режим использования кэша сборки. Возможные значения:\\n\" +\n \" disabled - не использовать кэш\\n\" +\n \" readonly - использовать кэш для сборки, но не обновляет его (значение по умолчанию)\\n\" +\n \" update - использовать кэш для сборки и презаписывать, если не совпадает\\n\" +\n \" force-update - всегда выполнять сборку и обновить значения в кэше\\n\" +\n \"Отключается при использовании watch-режима\",\n },\n {\n name: \"use-last-stable-version\",\n defaultValue: { useLastStableVersion: false },\n parse: input => ({ useLastStableVersion: input }),\n doesNotRequireValue: true,\n description:\n \"Устанавливает версию движка в файла `form.json` в последнюю стабильную версию. Аналогичен запуску candy-build с параметром -ge master\",\n },\n {\n name: \"use-prerelease-version\",\n defaultValue: { usePrereleaseVersion: undefined as undefined | string },\n parse: (input: string) => ({ usePrereleaseVersion: input }),\n description:\n \"Устанавливает версию движка в файла form.json в последнюю пререлизную версию в заданным preid. В файле версии генератора и движка будут установлены в pre:some-preid.\",\n },\n {\n name: \"no-reformat\",\n doesNotRequireValue: true,\n defaultValue: { skipGeneratedCodeReformatting: true },\n parse: (input: boolean) => ({ skipGeneratedCodeReformatting: input }),\n description:\n \"Отлючает форматирование генерируемого кода. Работает, только если версия генератора поддерживает эту опцию. Используется для ускорения сборки форм. (default: true)\",\n },\n {\n alias: \"g\",\n name: \"gfvs\",\n defaultValue: { formGlobs: [] },\n parse: (input: string[]) => ({ formGlobs: input }),\n defaultOption: true,\n multiple: true,\n description: \"Одна или несколько GFV или GFV-масок для пересборки. Может содержать значки `?` и `*`.\",\n },\n {\n name: \"use-version-from-cache\",\n defaultValue: { useVersionFromCache: false },\n parse: (input: boolean) => ({ useVersionFromCache: input }),\n description: \"Использовать версию движка и генератора из файловой системы\",\n doesNotRequireValue: true,\n },\n {\n name: \"build-candy-widget\",\n doesNotRequireValue: true,\n defaultValue: { buildCandyWidget: false },\n parse: (input: boolean) => ({ buildCandyWidget: input }),\n description: \"Собирать candy-виджет\",\n },\n devModeOption,\n logVerbosityOption\n ),\n {\n description:\n \"Выполняет сборку одной или нескольких форм.\\n\" +\n \"Подробнее: https://git.skbkontur.ru/forms/candy/-/blob/master/Tools/README.md#candy-build\",\n\n detailedDescription: `\nОсновной сценарий: выполняет сборку форм в каталог с ресурсами. Действия, которые выполняет команда:\n\n* Получение движка форм версии указанной в \\`form.json\\`,\n* получение генератора форм версии указанной в \\`form.json\\`,\n* генерация и компиляция формы в каталог ресурсов,\n* создание файлов \\`{gfv}.metas.json\\` в каталоге ресурсов\n* копирование конвертеров в каталог ресурсов,\n* копирование схемы в каталог ресурсов.\n`.trim(),\n\n examples: `\n\\`\\`\\`\n# Сборка формы 104816\ncandy build 104816\n\\`\\`\\`\n\n\\`\\`\\`\n# Сборка все формы группы 1\ncandy build 1?????\n\\`\\`\\`\n\n\\`\\`\\`\n# Собрать форму 104816 и следить за изменениями\ncandy build 104816 -w\n\\`\\`\\`\n\n\\`\\`\\`\n# Использовать последнюю пререлизную версию движка с preid=bso\ncandy build 104816 --use-prerelease-version bso\n\\`\\`\\`\n`.trim(),\n\n extendedDetails: `\n### Версионирование\n\nПри сборке форм, учитывается версия движка и генератора указанные файле form.json. Версии могут указывать не на конкретную версию, а адресовать диапазон в соответствии с [semver](https://semver.org/lang/ru/).\nВ этом случае будет выбрана последняя подходящая версия.\n\nФайл form.json должен выглядеть следующим образом:\n\\`\\`\\`\n{\n // Опционально\n \"themes\": [\"имя-темы\", ...],\n \"dependencies\": {\n \"engine\": \"[версия-движка]\",\n \"generator\": \"[версия-генератора]\"\n }\n}\n\\`\\`\\`\n\n\\`версия-движка\\`, \\`версия-генератора\\` - Соответственно, диапазоны версий. На данный момент всегда совпадают.\n\nДопустимые варианты версий:\n* Версия в формате [semver](https://semver.org/lang/ru/).\n* Версия с префиксом pre. Например, \\`pre:my-stange-branch-name\\`, где \\`my-stange-branch-name\\` - название предрелизной версии, выпускаемой разработчиками Candy, для предварительного выпуска форм.\nВерсия с префиксом pre используются для движков, которые не являются стабильными и используются для предварительных сборок форм.\n`.trim(),\n }\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"BuildFormsOptions.js","names":["_CommandBasedOptionsParser","require","_CommonOptionDefintions","_BuildCacheMode","buildFormsOptionsDefinition","exports","commandDefinition","optionsDefinition","alias","name","defaultValue","watch","parse","input","doesNotRequireValue","description","clean","mode","upgradeFormJson","buildCacheMode","BuildCacheMode","ReadOnly","parseBuildCacheMode","useLastStableVersion","usePrereleaseVersion","undefined","formGlobs","defaultOption","multiple","useVersionFromCache","buildCandyWidget","devModeOption","logVerbosityOption","detailedDescription","trim","examples","extendedDetails"],"sources":["../../../../../src/CLICommands/BuildForms/BuildFormsOptions.ts"],"sourcesContent":["import { commandDefinition, optionsDefinition } from \"../../Commons/Options/CommandBasedOptionsParser\";\nimport { CommonOptions } from \"../CommonOptions/CommonOptions\";\nimport { devModeOption, logVerbosityOption } from \"../CommonOptions/CommonOptionDefintions\";\n\nimport { BuildCacheMode, parseBuildCacheMode } from \"./BuildCacheMode\";\n\nexport interface BuildFormsOptions extends CommonOptions {\n watch: boolean;\n clean: boolean;\n formGlobs: string[];\n upgradeFormJson: boolean;\n useLastStableVersion: boolean;\n usePrereleaseVersion?: string;\n useVersionFromCache: boolean;\n mode: \"development\" | \"production\";\n buildCacheMode: BuildCacheMode;\n buildCandyWidget: boolean;\n}\n\nexport const buildFormsOptionsDefinition = commandDefinition<\"build\", BuildFormsOptions>(\n \"build\",\n \"build\",\n optionsDefinition(\n {\n alias: \"w\",\n name: \"watch\",\n defaultValue: { watch: false },\n parse: input => ({ watch: input }),\n doesNotRequireValue: true,\n description:\n \"Watch-режим. Выполняет сборку форм, а затем пересобирает при изменениях. В том числе движка, генератора и статических ресурсов.\",\n },\n {\n name: \"clean\",\n defaultValue: { clean: false },\n parse: input => ({ clean: input }),\n doesNotRequireValue: true,\n description:\n \"Полностью очищает целевой каталог ресурсов. Используется при полной сборке форм для продакшена\",\n },\n {\n name: \"mode\",\n defaultValue: { mode: \"development\" },\n parse: (input: string) => ({ mode: input }),\n description:\n \"Разделение сборок на продовую (mode=production) и не продовую (mode=development). По умолчанию development\",\n },\n {\n name: \"upgrade-form-json\",\n defaultValue: { upgradeFormJson: false },\n parse: input => ({ upgradeFormJson: input }),\n doesNotRequireValue: true,\n description: \"Форсирует изменение формата файла form.json на новый\",\n },\n {\n name: \"build-cache\",\n defaultValue: { buildCacheMode: BuildCacheMode.ReadOnly },\n parse: (input: string) => ({ buildCacheMode: parseBuildCacheMode(input) }),\n description:\n \"Задаёт режим использования кэша сборки. Возможные значения:\\n\" +\n \" disabled - не использовать кэш\\n\" +\n \" readonly - использовать кэш для сборки, но не обновляет его (значение по умолчанию)\\n\" +\n \" update - использовать кэш для сборки и презаписывать, если не совпадает\\n\" +\n \" force-update - всегда выполнять сборку и обновить значения в кэше\\n\" +\n \"Отключается при использовании watch-режима\",\n },\n {\n name: \"use-last-stable-version\",\n defaultValue: { useLastStableVersion: false },\n parse: input => ({ useLastStableVersion: input }),\n doesNotRequireValue: true,\n description:\n \"Устанавливает версию движка в файла `form.json` в последнюю стабильную версию. Аналогичен запуску candy-build с параметром -ge master\",\n },\n {\n name: \"use-prerelease-version\",\n defaultValue: { usePrereleaseVersion: undefined as undefined | string },\n parse: (input: string) => ({ usePrereleaseVersion: input }),\n description:\n \"Устанавливает версию движка в файла form.json в последнюю пререлизную версию в заданным preid. В файле версии генератора и движка будут установлены в pre:some-preid.\",\n },\n {\n alias: \"g\",\n name: \"gfvs\",\n defaultValue: { formGlobs: [] },\n parse: (input: string[]) => ({ formGlobs: input }),\n defaultOption: true,\n multiple: true,\n description: \"Одна или несколько GFV или GFV-масок для пересборки. Может содержать значки `?` и `*`.\",\n },\n {\n name: \"use-version-from-cache\",\n defaultValue: { useVersionFromCache: false },\n parse: (input: boolean) => ({ useVersionFromCache: input }),\n description: \"Использовать версию движка и генератора из файловой системы\",\n doesNotRequireValue: true,\n },\n {\n name: \"build-candy-widget\",\n doesNotRequireValue: true,\n defaultValue: { buildCandyWidget: false },\n parse: (input: boolean) => ({ buildCandyWidget: input }),\n description: \"Собирать candy-виджет\",\n },\n devModeOption,\n logVerbosityOption\n ),\n {\n description:\n \"Выполняет сборку одной или нескольких форм.\\n\" +\n \"Подробнее: https://git.skbkontur.ru/forms/candy/-/blob/master/Tools/README.md#candy-build\",\n\n detailedDescription: `\nОсновной сценарий: выполняет сборку форм в каталог с ресурсами. Действия, которые выполняет команда:\n\n* Получение движка форм версии указанной в \\`form.json\\`,\n* получение генератора форм версии указанной в \\`form.json\\`,\n* генерация и компиляция формы в каталог ресурсов,\n* создание файлов \\`{gfv}.metas.json\\` в каталоге ресурсов\n* копирование конвертеров в каталог ресурсов,\n* копирование схемы в каталог ресурсов.\n`.trim(),\n\n examples: `\n\\`\\`\\`\n# Сборка формы 104816\ncandy build 104816\n\\`\\`\\`\n\n\\`\\`\\`\n# Сборка все формы группы 1\ncandy build 1?????\n\\`\\`\\`\n\n\\`\\`\\`\n# Собрать форму 104816 и следить за изменениями\ncandy build 104816 -w\n\\`\\`\\`\n\n\\`\\`\\`\n# Использовать последнюю пререлизную версию движка с preid=bso\ncandy build 104816 --use-prerelease-version bso\n\\`\\`\\`\n`.trim(),\n\n extendedDetails: `\n### Версионирование\n\nПри сборке форм, учитывается версия движка и генератора указанные файле form.json. Версии могут указывать не на конкретную версию, а адресовать диапазон в соответствии с [semver](https://semver.org/lang/ru/).\nВ этом случае будет выбрана последняя подходящая версия.\n\nФайл form.json должен выглядеть следующим образом:\n\\`\\`\\`\n{\n // Опционально\n \"themes\": [\"имя-темы\", ...],\n \"dependencies\": {\n \"engine\": \"[версия-движка]\",\n \"generator\": \"[версия-генератора]\"\n }\n}\n\\`\\`\\`\n\n\\`версия-движка\\`, \\`версия-генератора\\` - Соответственно, диапазоны версий. На данный момент всегда совпадают.\n\nДопустимые варианты версий:\n* Версия в формате [semver](https://semver.org/lang/ru/).\n* Версия с префиксом pre. Например, \\`pre:my-stange-branch-name\\`, где \\`my-stange-branch-name\\` - название предрелизной версии, выпускаемой разработчиками Candy, для предварительного выпуска форм.\nВерсия с префиксом pre используются для движков, которые не являются стабильными и используются для предварительных сборок форм.\n`.trim(),\n }\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -76,7 +76,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
76
76
|
if (await (0, _fsExtra.pathExists)(_path.default.join(formDirPath, "presentations.json"))) {
|
|
77
77
|
throw new Error(`presentations.json больше не используется, удали его из ${formDirPath} или используй команду candy rename ${gfv} в каталоге candy.farm`);
|
|
78
78
|
}
|
|
79
|
-
return _Observe.Observe.file(_path.default.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName)).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, formDirPath,
|
|
79
|
+
return _Observe.Observe.file(_path.default.join(formDirPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName)).transform(formJsonFile => (0, _ResolveFormInfo.resolveFormInfo)(formJsonFile, formDirPath, context.logger.withPrefix(`FORM:${gfv}`), options.upgradeFormJson, options.useLastStableVersion, options.usePrereleaseVersion)).transform(async fi => {
|
|
80
80
|
if (fi.mode === _ResolveFormInfo.FormBuildMode.NormalBuild) {
|
|
81
81
|
if (fi.generatorVersion == undefined) {
|
|
82
82
|
throw new Error("generatorVersion is not defined");
|
|
@@ -116,16 +116,13 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
118
|
}, async fi => fi, async fi => fi.engineSource != undefined ? (0, _EngineSource.getEngineSourceKey)(fi.engineSource) : "NullEngine").attach(async fi => buildOptions.watch ? _Observe.Observe.files(fi.formSourcesPath, "../../controls/**/*", "../../xsltTemplates/**/*", "../../jsHelpers/**/*", `./${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, "schemas/**/*", "sugar/**/*", "controls/**/*", "autocalc/**/*", "helpers/**/*", "normalizers/**/*", "validations/**/*", "localization/**/*") : _Observe.Observe.value(fi.formSourcesPath)).transform(async fi => {
|
|
119
|
-
let dependenciesHash;
|
|
120
119
|
if (fi.mode !== _ResolveFormInfo.FormBuildMode.NormalBuild) {
|
|
121
120
|
return {
|
|
122
121
|
...fi,
|
|
123
122
|
dependenciesHash: undefined
|
|
124
123
|
};
|
|
125
124
|
}
|
|
126
|
-
|
|
127
|
-
dependenciesHash = await fi.generator.getAllDependenciesHash(formDirPath, farmDirectory);
|
|
128
|
-
}
|
|
125
|
+
const dependenciesHash = await fi.generator.getAllDependenciesHash(formDirPath, farmDirectory);
|
|
129
126
|
return {
|
|
130
127
|
...fi,
|
|
131
128
|
dependenciesHash: dependenciesHash
|
|
@@ -149,7 +146,6 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
149
146
|
return undefined;
|
|
150
147
|
}
|
|
151
148
|
return (0, _GenerateForm.generateForm)(fi.formSourcesPath, farmDirectory, fi.generator, undefined, {
|
|
152
|
-
skipCodeReformatting: options.skipGeneratedCodeReformatting,
|
|
153
149
|
resourcesHash: (_fi$dependenciesHash = fi.dependenciesHash) !== null && _fi$dependenciesHash !== void 0 ? _fi$dependenciesHash : "UndefinedResourcesHash"
|
|
154
150
|
});
|
|
155
151
|
}).attach(async () => buildOptions.watch ? _Observe.Observe.files(_path.default.join(formDirPath, "form"), "**/*") : _Observe.Observe.value(_path.default.join(formDirPath, "form"))).do(async fi => {
|