@kontur.candy/tools 2.247.0 → 2.249.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 +9 -1
- package/distr/Common/CandyApiClient/CandyApiClient.js +3 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js.map +1 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +3 -0
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js.map +1 -1
- package/distr/Common/CandyApiClient/ICandyApiClient.js.map +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js.map +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/MaxCallExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/MaxCallExpression.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/MinCallExpression.js +15 -0
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/MinCallExpression.js.map +1 -0
- package/distr/Common/KCLangRuntimeUtils.js +9 -0
- package/distr/Common/KCLangRuntimeUtils.js.map +1 -1
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +3 -29
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js.map +1 -1
- package/distr/Common/ModelPath/BaseModelFieldPath.js +42 -0
- package/distr/Common/ModelPath/BaseModelFieldPath.js.map +1 -0
- package/distr/Common/ModelPath/RelativeModelFieldPath.js +29 -0
- package/distr/Common/ModelPath/RelativeModelFieldPath.js.map +1 -0
- package/distr/Tools/src/BuildTasks/CandyWidget/BuildCandyWidgetTask.js +40 -0
- package/distr/Tools/src/BuildTasks/CandyWidget/BuildCandyWidgetTask.js.map +1 -0
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +4 -0
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Form/WriteKClangFiles.js +21 -0
- package/distr/Tools/src/BuildTasks/Form/WriteKClangFiles.js.map +1 -0
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +11 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +8 -2
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +10 -0
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js.map +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +6 -3
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -1
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +1 -1
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js.map +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +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/Form/WriteAllKClangFiles.js +0 -15
- package/distr/Tools/src/BuildTasks/Form/WriteAllKClangFiles.js.map +0 -1
package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadSourcesAndProcessSugarWorker.js","names":["_IterableUtils","require","_GeneratorRequireUtils","_TypedProcessWorker","TypedProcessWorker","start","pathToGeneratorProcessSugar","formSourcesPath","farmDirectory","hlFarmDirectoryPath","generationOptions","purgeCache","requestNumber","send","formSource","importer","GeneratorSourcesImporter","readSources","importReadSources","processSugar","importProcessSugar","formContent","sugarContent","resources","result","key","formContentItem","iterateEntries","Buffer","payload","toString","encoding","type","gfv","generatedForm","error","Error","_formSource","errorText","stack","_formSource2"],"sources":["../../../../../../src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.ts"],"sourcesContent":["import { GeneratedForm, GenerationOptions } from \"../../Form/GenerateForm\";\nimport { FormSource } from \"../../ReadFormSource\";\nimport { iterateEntries } from \"../../../../../Common/IterableUtils\";\n\nimport { GeneratorSourcesImporter } from \"./GeneratorRequireUtils\";\nimport { TypedProcessWorker } from \"./TypedProcessWorker\";\n\nexport interface GeneratedFormInterProcessMessage {\n [relativeFileName: string]: string | { payload: string; encoding: string };\n}\n\nexport type CallMessage = [string, string, string, string, undefined | GenerationOptions, boolean, number];\nexport type CallResponse =\n | { type: \"Result\"; gfv: string; generatedForm: GeneratedFormInterProcessMessage; requestNumber: number }\n | { type: \"Error\"; gfv?: string; errorText: string; requestNumber: number };\n\nTypedProcessWorker.start<CallMessage, CallResponse>(\n async (\n [\n pathToGeneratorProcessSugar,\n formSourcesPath,\n farmDirectory,\n hlFarmDirectoryPath,\n generationOptions,\n purgeCache,\n requestNumber,\n ],\n send\n ): Promise<void> => {\n let formSource: FormSource | undefined;\n try {\n const importer = new GeneratorSourcesImporter(purgeCache);\n const readSources = await importer.importReadSources(pathToGeneratorProcessSugar);\n formSource = await readSources(formSourcesPath, farmDirectory, hlFarmDirectoryPath);\n\n const processSugar = await importer.importProcessSugar(pathToGeneratorProcessSugar);\n\n const formContent: GeneratedForm = await processSugar(\n formSource.sugarContent,\n formSource.resources,\n generationOptions\n );\n\n // eslint-disable-next-line no-warning-comments\n // TODO(2026-
|
|
1
|
+
{"version":3,"file":"ReadSourcesAndProcessSugarWorker.js","names":["_IterableUtils","require","_GeneratorRequireUtils","_TypedProcessWorker","TypedProcessWorker","start","pathToGeneratorProcessSugar","formSourcesPath","farmDirectory","hlFarmDirectoryPath","generationOptions","purgeCache","requestNumber","send","formSource","importer","GeneratorSourcesImporter","readSources","importReadSources","processSugar","importProcessSugar","formContent","sugarContent","resources","result","key","formContentItem","iterateEntries","Buffer","payload","toString","encoding","type","gfv","generatedForm","error","Error","_formSource","errorText","stack","_formSource2"],"sources":["../../../../../../src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.ts"],"sourcesContent":["import { GeneratedForm, GenerationOptions } from \"../../Form/GenerateForm\";\nimport { FormSource } from \"../../ReadFormSource\";\nimport { iterateEntries } from \"../../../../../Common/IterableUtils\";\n\nimport { GeneratorSourcesImporter } from \"./GeneratorRequireUtils\";\nimport { TypedProcessWorker } from \"./TypedProcessWorker\";\n\nexport interface GeneratedFormInterProcessMessage {\n [relativeFileName: string]: string | { payload: string; encoding: string };\n}\n\nexport type CallMessage = [string, string, string, string, undefined | GenerationOptions, boolean, number];\nexport type CallResponse =\n | { type: \"Result\"; gfv: string; generatedForm: GeneratedFormInterProcessMessage; requestNumber: number }\n | { type: \"Error\"; gfv?: string; errorText: string; requestNumber: number };\n\nTypedProcessWorker.start<CallMessage, CallResponse>(\n async (\n [\n pathToGeneratorProcessSugar,\n formSourcesPath,\n farmDirectory,\n hlFarmDirectoryPath,\n generationOptions,\n purgeCache,\n requestNumber,\n ],\n send\n ): Promise<void> => {\n let formSource: FormSource | undefined;\n try {\n const importer = new GeneratorSourcesImporter(purgeCache);\n const readSources = await importer.importReadSources(pathToGeneratorProcessSugar);\n formSource = await readSources(formSourcesPath, farmDirectory, hlFarmDirectoryPath);\n\n const processSugar = await importer.importProcessSugar(pathToGeneratorProcessSugar);\n\n const formContent: GeneratedForm = await processSugar(\n formSource.sugarContent,\n formSource.resources,\n generationOptions\n );\n\n // eslint-disable-next-line no-warning-comments\n // TODO(2026-05-31): временно отключаем валидацию компиляции Flang на бэкенде (исправить в задаче https://yt.skbkontur.ru/issue/FS-9242)\n // const validator = new GeneratorSourcesValidator(generationOptions);\n // await validator.validate(formContent);\n\n const result: GeneratedFormInterProcessMessage = {};\n\n // NOTE Because only JSON are allowed for IPC we need to convert Buffer -> Base64\n // Another solution is use a stream, but formContent still need to convert or send by chunks\n for (const [key, formContentItem] of iterateEntries(formContent)) {\n // @ts-ignore\n result[key] =\n formContentItem instanceof Buffer\n ? { payload: formContentItem.toString(\"base64\"), encoding: \"base64\" }\n : formContentItem;\n }\n\n send({\n type: \"Result\",\n gfv: formSource.resources.gfv,\n generatedForm: result,\n requestNumber: requestNumber,\n });\n } catch (error) {\n if (error instanceof Error) {\n send({\n type: \"Error\",\n gfv: formSource?.resources.gfv,\n errorText: `${error.toString()}\\n${error.stack}`,\n requestNumber: requestNumber,\n });\n } else {\n send({\n type: \"Error\",\n gfv: formSource?.resources.gfv,\n errorText: `${error}`,\n requestNumber: requestNumber,\n });\n }\n }\n }\n);\n"],"mappings":";;AAEA,IAAAA,cAAA,GAAAC,OAAA;AAEA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAWAG,sCAAkB,CAACC,KAAK,CACpB,OACI,CACIC,2BAA2B,EAC3BC,eAAe,EACfC,aAAa,EACbC,mBAAmB,EACnBC,iBAAiB,EACjBC,UAAU,EACVC,aAAa,CAChB,EACDC,IAAI,KACY;EAChB,IAAIC,UAAkC;EACtC,IAAI;IACA,MAAMC,QAAQ,GAAG,IAAIC,+CAAwB,CAACL,UAAU,CAAC;IACzD,MAAMM,WAAW,GAAG,MAAMF,QAAQ,CAACG,iBAAiB,CAACZ,2BAA2B,CAAC;IACjFQ,UAAU,GAAG,MAAMG,WAAW,CAACV,eAAe,EAAEC,aAAa,EAAEC,mBAAmB,CAAC;IAEnF,MAAMU,YAAY,GAAG,MAAMJ,QAAQ,CAACK,kBAAkB,CAACd,2BAA2B,CAAC;IAEnF,MAAMe,WAA0B,GAAG,MAAMF,YAAY,CACjDL,UAAU,CAACQ,YAAY,EACvBR,UAAU,CAACS,SAAS,EACpBb,iBACJ,CAAC;;IAED;IACA;IACA;IACA;;IAEA,MAAMc,MAAwC,GAAG,CAAC,CAAC;;IAEnD;IACA;IACA,KAAK,MAAM,CAACC,GAAG,EAAEC,eAAe,CAAC,IAAI,IAAAC,6BAAc,EAACN,WAAW,CAAC,EAAE;MAC9D;MACAG,MAAM,CAACC,GAAG,CAAC,GACPC,eAAe,YAAYE,MAAM,GAC3B;QAAEC,OAAO,EAAEH,eAAe,CAACI,QAAQ,CAAC,QAAQ,CAAC;QAAEC,QAAQ,EAAE;MAAS,CAAC,GACnEL,eAAe;IAC7B;IAEAb,IAAI,CAAC;MACDmB,IAAI,EAAE,QAAQ;MACdC,GAAG,EAAEnB,UAAU,CAACS,SAAS,CAACU,GAAG;MAC7BC,aAAa,EAAEV,MAAM;MACrBZ,aAAa,EAAEA;IACnB,CAAC,CAAC;EACN,CAAC,CAAC,OAAOuB,KAAK,EAAE;IACZ,IAAIA,KAAK,YAAYC,KAAK,EAAE;MAAA,IAAAC,WAAA;MACxBxB,IAAI,CAAC;QACDmB,IAAI,EAAE,OAAO;QACbC,GAAG,GAAAI,WAAA,GAAEvB,UAAU,cAAAuB,WAAA,uBAAVA,WAAA,CAAYd,SAAS,CAACU,GAAG;QAC9BK,SAAS,EAAE,GAAGH,KAAK,CAACL,QAAQ,CAAC,CAAC,KAAKK,KAAK,CAACI,KAAK,EAAE;QAChD3B,aAAa,EAAEA;MACnB,CAAC,CAAC;IACN,CAAC,MAAM;MAAA,IAAA4B,YAAA;MACH3B,IAAI,CAAC;QACDmB,IAAI,EAAE,OAAO;QACbC,GAAG,GAAAO,YAAA,GAAE1B,UAAU,cAAA0B,YAAA,uBAAVA,YAAA,CAAYjB,SAAS,CAACU,GAAG;QAC9BK,SAAS,EAAE,GAAGH,KAAK,EAAE;QACrBvB,aAAa,EAAEA;MACnB,CAAC,CAAC;IACN;EACJ;AACJ,CACJ,CAAC","ignoreList":[]}
|
|
@@ -107,8 +107,18 @@ const buildFormsOptionsDefinition = exports.buildFormsOptionsDefinition = (0, _C
|
|
|
107
107
|
}),
|
|
108
108
|
description: "Использовать версию движка и генератора из файловой системы",
|
|
109
109
|
doesNotRequireValue: true
|
|
110
|
+
}, {
|
|
111
|
+
name: "build-candy-widget",
|
|
112
|
+
doesNotRequireValue: true,
|
|
113
|
+
defaultValue: {
|
|
114
|
+
buildCandyWidget: false
|
|
115
|
+
},
|
|
116
|
+
parse: input => ({
|
|
117
|
+
buildCandyWidget: input
|
|
118
|
+
}),
|
|
119
|
+
description: "Собирать candy-виджет"
|
|
110
120
|
}, _CommonOptionDefintions.devModeOption, _CommonOptionDefintions.logVerbosityOption), {
|
|
111
|
-
description: "Выполняет сборку одной или нескольких форм.\n" + "Подробнее: https://git.skbkontur.ru/
|
|
121
|
+
description: "Выполняет сборку одной или нескольких форм.\n" + "Подробнее: https://git.skbkontur.ru/forms/candy/-/blob/master/Tools/README.md#candy-build",
|
|
112
122
|
detailedDescription: `
|
|
113
123
|
Основной сценарий: выполняет сборку форм в каталог с ресурсами. Действия, которые выполняет команда:
|
|
114
124
|
|
|
@@ -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","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}\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 devModeOption,\n logVerbosityOption\n ),\n {\n description:\n \"Выполняет сборку одной или нескольких форм.\\n\" +\n \"Подробнее: https://git.skbkontur.ru/ke/candy-utils/blob/new-candy-tool-cli/README.md\",\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","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":[]}
|
|
@@ -28,12 +28,15 @@ var _TimingUtils = require("../../Commons/TimingUtils");
|
|
|
28
28
|
var _CacheAssetsPlugin = require("../../FormWebpackConfiguration/CacheAssetsPlugin");
|
|
29
29
|
var _TypingUtils = require("../../../../Common/TypingUtils");
|
|
30
30
|
var _WriteAttachmentPathFiles = require("../../BuildTasks/Form/WriteAttachmentPathFiles");
|
|
31
|
+
var _EmptyProducer = require("../../Commons/TasksCore/EmptyProducer");
|
|
31
32
|
var _GetRngSchemaFileExtension = require("../../../../Common/GetRngSchemaFileExtension");
|
|
32
33
|
var _FormPathUtils = require("../../../../Common/FormPathUtils");
|
|
33
34
|
var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
|
|
34
35
|
var _WriteAttachmentPathByGfvFiles = require("../../BuildTasks/Form/WriteAttachmentPathByGfvFiles");
|
|
35
|
-
var
|
|
36
|
+
var _WriteKClangFiles = require("../../BuildTasks/Form/WriteKClangFiles");
|
|
36
37
|
var _WriteExtendedSchemaFiles = require("../../BuildTasks/Form/WriteExtendedSchemaFiles");
|
|
38
|
+
var _EngineStructureUtils = require("../../BuildTasks/EngineStructureUtils");
|
|
39
|
+
var _BuildCandyWidgetTask = require("../../BuildTasks/CandyWidget/BuildCandyWidgetTask");
|
|
37
40
|
function getGeneratorVersion(generatorSource) {
|
|
38
41
|
if (generatorSource.type === "PublishedGenerator") {
|
|
39
42
|
return generatorSource.version;
|
|
@@ -180,7 +183,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
180
183
|
farmDirectory: farmDirectory
|
|
181
184
|
} : undefined;
|
|
182
185
|
await (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, formDirPath, resourcesDirectory, undefined, buildCache, buildCacheOptions, fi.buildCacheExist);
|
|
183
|
-
await (0,
|
|
186
|
+
await (0, _WriteKClangFiles.writeKClangFiles)(fi.formName, formDirPath, resourcesDirectory, undefined, buildCache, buildCacheOptions, fi.buildCacheExist);
|
|
184
187
|
await (0, _WriteExtendedSchemaFiles.writeExtendedSchemaFiles)(fi.formName, formDirPath, resourcesDirectory, undefined, buildCache, buildCacheOptions, fi.buildCacheExist);
|
|
185
188
|
await (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, formDirPath, resourcesDirectory, undefined, buildCache, buildCacheOptions);
|
|
186
189
|
await (0, _WriteAttachmentPathByGfvFiles.writeAttachmentPathByGfvFiles)(fi.formName, formDirPath, resourcesDirectory, undefined, buildCache, buildCacheOptions);
|
|
@@ -197,6 +200,8 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
197
200
|
});
|
|
198
201
|
};
|
|
199
202
|
const buildFormsChain = _Observe.Observe.fixedFormDirectories(formInfos.map(x => _path.default.relative(repositoryRoot, x.formPath))).splitToParallelChains(x => x, x => x, createChainForForm);
|
|
203
|
+
const candyWidgetsConfigTask = await (0, _EngineStructureUtils.createClientViteConfigTask)(engineDirectory);
|
|
204
|
+
const buildCandyWidgetChain = !options.buildCandyWidget ? new _EmptyProducer.EmptyProducer() : candyWidgetsConfigTask.chainWith(p => new _BuildCandyWidgetTask.BuildCandyWidgetTask(p));
|
|
200
205
|
if (options.clean) {
|
|
201
206
|
await cleanTargetDirectory(resourcesDirectory, context.logger);
|
|
202
207
|
}
|
|
@@ -221,6 +226,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
221
226
|
await resourcesExternalConvertersChain.currentValue;
|
|
222
227
|
await staticResourcesForProductionChain.currentValue;
|
|
223
228
|
await buildFormsChain.currentValue;
|
|
229
|
+
await buildCandyWidgetChain.currentValue;
|
|
224
230
|
// eslint-disable-next-line no-console
|
|
225
231
|
console.log(_chalk.default.greenBright("Build success"));
|
|
226
232
|
} finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunBuildForms.js","names":["_path","_interopRequireDefault","require","_chalk","_fsExtra","_nodeNotifier","_AcquireFormEngine","_EngineSource","_CompileForm","_GenerateForm","_NullFormGenerator","_WriteFLangNormalizationFiles","_FSTask","_AcquireFormGenerator","_PublishedVersionUtils","_ResolveFormInfo","_WriteFormMeta","_FormGlobsUtils","_StaticLogger","_Observe","_SingleValueProducer","_TimingUtils","_CacheAssetsPlugin","_TypingUtils","_WriteAttachmentPathFiles","_GetRngSchemaFileExtension","_FormPathUtils","_WellKnownDirectories","_WriteAttachmentPathByGfvFiles","_WriteAllKClangFiles","_WriteExtendedSchemaFiles","getGeneratorVersion","generatorSource","type","version","Error","runBuildForms","context","options","farmDirectory","resourcesDirectory","engineDirectory","candyModulesDirectory","hlFarmDirectoryPath","buildOptions","pickListsChain","Observe","files","path","join","do","x","FSTask","copyRecursively","logger","withPrefix","formInfos","FormGlobs","resolveGfvGlobs","formGlobs","staticResourcesForProductionChain","__dirname","getLogger","resourcesExternalConvertersChain","empty","copiedEngines","Set","repositoryRoot","buildCache","BuildCache","buildCacheMode","createChainForForm","formRelativePath","gfv","extractGfvFromFormPath","formDirPath","pathExists","WellKnownDirectories","FormJsonFileName","warning","value","formSchemasDirPath","rngSchemaMask","getRngSchemaFileExtension","rngSchemaExtension","file","transform","formJsonFile","resolveFormInfo","upgradeFormJson","useLastStableVersion","usePrereleaseVersion","fi","mode","FormBuildMode","NormalBuild","generatorVersion","undefined","engineVersion","resolveGeneratorVersion","engineSource","resolveEngineVersion","attach","SingleValueProducer","NullFormGenerator","generatorFactory","useVersionFromCache","y","generator","getGeneratorSourceKey","engineFactory","has","getEngineSourceKey","add","watch","formSourcesPath","dependenciesHash","supportsDependenciesExtraction","getAllDependenciesHash","buildCacheExist","exists","_fi$dependenciesHash","log","generateForm","skipCodeReformatting","skipGeneratedCodeReformatting","resourcesHash","_fi$dependenciesHash2","_fi$dependenciesHash3","extract","buildCacheOptions","depsHash","compileForm","formName","reject","writeFormMeta","themes","writeFLangNormalizationFiles","writeAllKClangFiles","writeExtendedSchemaFiles","writeAttachmentPathFiles","writeAttachmentPathByGfvFiles","modifier","content","replace","modifyFilesContent","notifier","notify","title","message","buildFormsChain","fixedFormDirectories","map","relative","formPath","splitToParallelChains","clean","cleanTargetDirectory","stopObserve1","observe","stopObserve2","stopObserve3","stopObserve5","waitForExit","startDate","Date","now","currentValue","console","chalk","greenBright","totalTime","printTime","emptyDir"],"sources":["../../../../../src/CLICommands/BuildForms/RunBuildForms.ts"],"sourcesContent":["import path from \"path\";\n\nimport chalk from \"chalk\";\nimport { emptyDir, pathExists } from \"fs-extra\";\nimport notifier from \"node-notifier\";\n\nimport { engineFactory } from \"../../BuildTasks/Engine/AcquireFormEngine\";\nimport { getEngineSourceKey } from \"../../BuildTasks/Engine/EngineSource\";\nimport { compileForm } from \"../../BuildTasks/Form/CompileForm\";\nimport { generateForm } from \"../../BuildTasks/Form/GenerateForm\";\nimport { NullFormGenerator } from \"../../BuildTasks/Form/NullFormGenerator\";\nimport { writeFLangNormalizationFiles } from \"../../BuildTasks/Form/WriteFLangNormalizationFiles\";\nimport { FSTask } from \"../../BuildTasks/FSTask\";\nimport {\n generatorFactory,\n GeneratorSource,\n getGeneratorSourceKey,\n} from \"../../BuildTasks/Generator/AcquireFormGenerator\";\nimport { resolveEngineVersion, resolveGeneratorVersion } from \"../../BuildTasks/PublishedVersionUtils\";\nimport { FormBuildMode, resolveFormInfo } from \"../../BuildTasks/ResolveFormInfo\";\nimport { writeFormMeta } from \"../../BuildTasks/WriteFormMeta\";\nimport { ConsoleApplicationContext } from \"../../Commons/ConsoleApplication/ConsoleApplicationContext\";\nimport { FormGlobs } from \"../../Commons/FormGlobsUtils\";\nimport { ILogger } from \"../../Commons/Logging/ILogger\";\nimport { getLogger } from \"../../Commons/Logging/StaticLogger\";\nimport { Observe } from \"../../Commons/TasksCore/Observe\";\nimport { SingleValueProducer } from \"../../Commons/TasksCore/SingleValueProducer\";\nimport { printTime } from \"../../Commons/TimingUtils\";\nimport { BuildCache } from \"../../FormWebpackConfiguration/CacheAssetsPlugin\";\nimport { reject } from \"../../../../Common/TypingUtils\";\nimport { writeAttachmentPathFiles } from \"../../BuildTasks/Form/WriteAttachmentPathFiles\";\nimport { ChainableValueProducer } from \"../../Commons/TasksCore/ChainableValueProducer\";\nimport { EmptyProducer } from \"../../Commons/TasksCore/EmptyProducer\";\nimport { getRngSchemaFileExtension } from \"../../../../Common/GetRngSchemaFileExtension\";\nimport { extractGfvFromFormPath } from \"../../../../Common/FormPathUtils\";\nimport { WellKnownDirectories } from \"../../../../Common/WellKnownDirectories\";\nimport { writeAttachmentPathByGfvFiles } from \"../../BuildTasks/Form/WriteAttachmentPathByGfvFiles\";\nimport { writeAllKClangFiles } from \"../../BuildTasks/Form/WriteAllKClangFiles\";\nimport { writeExtendedSchemaFiles } from \"../../BuildTasks/Form/WriteExtendedSchemaFiles\";\n\nimport { BuildFormsOptions } from \"./BuildFormsOptions\";\n\nfunction getGeneratorVersion(generatorSource: GeneratorSource): string {\n if (generatorSource.type === \"PublishedGenerator\") {\n return generatorSource.version;\n } else {\n throw new Error(\"InvalidProgramState\");\n }\n}\n\nexport async function runBuildForms(\n context: ConsoleApplicationContext,\n options: BuildFormsOptions,\n farmDirectory: string,\n resourcesDirectory: string,\n engineDirectory: string,\n candyModulesDirectory: string,\n hlFarmDirectoryPath: string\n): Promise<void> {\n const buildOptions = options;\n\n const pickListsChain = Observe.files(path.join(farmDirectory, \"picklists\"), \"*.json\").do(x =>\n FSTask.copyRecursively(context.logger.withPrefix(\"PICKLISTS\"), x, path.join(resourcesDirectory, \"picklists\"))\n );\n\n const formInfos = await FormGlobs.resolveGfvGlobs(options.formGlobs, farmDirectory);\n\n const staticResourcesForProductionChain = Observe.files(\n path.join(__dirname, \"..\", \"..\", \"StaticFilesForProductionResourcesDir\"),\n \"*.js\",\n \"*.js.map\"\n ).do(x =>\n FSTask.copyRecursively(getLogger().withPrefix(\"STATICS\"), x, path.join(resourcesDirectory, \"public\", \"scripts\"))\n );\n\n /** Конвертеры описи для форм, которые пока не реализованы на кенди, сама механика описи перенесена в формы в кенди апи, поэтому они должны быть в candy.resources\n * Реализуется только при общем билде форм: candy build *\n * */\n let resourcesExternalConvertersChain: ChainableValueProducer<string> | EmptyProducer = Observe.empty();\n if (options.formGlobs[0] === \"*\") {\n resourcesExternalConvertersChain = Observe.files(path.join(farmDirectory, \"externalConverters\"), \"*.xslt\").do(\n x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"EXTERNAL-CONVERTERS\"),\n x,\n path.join(resourcesDirectory, \"converters\")\n )\n );\n }\n\n const copiedEngines = new Set<string>();\n\n const repositoryRoot = path.join(farmDirectory, \"..\");\n const buildCache = new BuildCache(farmDirectory, options.buildCacheMode);\n\n const createChainForForm = async (formRelativePath: string) => {\n const gfv = extractGfvFromFormPath(formRelativePath);\n const formDirPath = path.join(repositoryRoot, formRelativePath);\n\n if (!(await pathExists(path.join(formDirPath, WellKnownDirectories.FormJsonFileName)))) {\n context.logger.warning(\n `Form ${gfv} does not have form.json file. To include this form to build process restart build`\n );\n return Observe.value({});\n }\n const formSchemasDirPath = path.join(formDirPath, \"schemas\");\n const rngSchemaMask = `*${getRngSchemaFileExtension(formSchemasDirPath, gfv)}`;\n const rngSchemaExtension = getRngSchemaFileExtension(formSchemasDirPath, gfv);\n\n if (rngSchemaExtension == \".rng.xml\") {\n throw new Error(\n `Недопустимое название схемы ${gfv + rngSchemaExtension} используй команду candy rename ${gfv} в каталоге candy.farm`\n );\n }\n if (await pathExists(path.join(formDirPath, \"presentations.json\"))) {\n throw new Error(\n `presentations.json больше не используется, удали его из ${formDirPath} или используй команду candy rename ${gfv} в каталоге candy.farm`\n );\n }\n\n return Observe.file(path.join(formDirPath, WellKnownDirectories.FormJsonFileName))\n .transform(formJsonFile =>\n resolveFormInfo(\n formJsonFile,\n formDirPath,\n engineDirectory,\n context.logger.withPrefix(`FORM:${gfv}`),\n options.upgradeFormJson,\n options.useLastStableVersion,\n options.usePrereleaseVersion\n )\n )\n .transform(async fi => {\n if (fi.mode === FormBuildMode.NormalBuild) {\n if (fi.generatorVersion == undefined) {\n throw new Error(\"generatorVersion is not defined\");\n }\n if (fi.engineVersion == undefined) {\n throw new Error(\"engineVersion is not defined\");\n }\n return {\n ...fi,\n generatorSource: await resolveGeneratorVersion(\n fi.generatorVersion,\n context.logger.withPrefix(gfv)\n ),\n engineSource: await resolveEngineVersion(fi.engineVersion, context.logger.withPrefix(gfv)),\n };\n } else {\n return {\n ...fi,\n generatorSource: undefined,\n engineSource: undefined,\n };\n }\n })\n .attach(\n async fi => {\n if (fi.generatorSource == undefined) {\n return new SingleValueProducer(new NullFormGenerator());\n } else {\n return generatorFactory(fi.generatorSource, candyModulesDirectory, options.useVersionFromCache);\n }\n },\n async (fi, y) => ({ ...fi, generator: y }),\n async fi =>\n fi.generatorSource != undefined ? getGeneratorSourceKey(fi.generatorSource) : \"NullFormGenerator\"\n )\n .attach(\n async fi => {\n if (fi.engineSource === undefined) {\n return new SingleValueProducer(\"NullEngine\");\n }\n return engineFactory(fi.engineSource, candyModulesDirectory, options.useVersionFromCache).do(\n async x => {\n if (!copiedEngines.has(getEngineSourceKey(fi.engineSource))) {\n await FSTask.copyRecursively(\n getLogger().withPrefix(\"ENGINE\"),\n x,\n path.join(resourcesDirectory, \"public\")\n );\n copiedEngines.add(getEngineSourceKey(fi.engineSource));\n }\n }\n );\n },\n async fi => fi,\n async fi => (fi.engineSource != undefined ? getEngineSourceKey(fi.engineSource) : \"NullEngine\")\n )\n .attach(async fi =>\n buildOptions.watch\n ? Observe.files(\n fi.formSourcesPath,\n \"../../controls/**/*\",\n \"../../xsltTemplates/**/*\",\n \"../../jsHelpers/**/*\",\n `./${WellKnownDirectories.FormJsonFileName}`,\n \"schemas/**/*\",\n \"sugar/**/*\",\n \"controls/**/*\",\n \"autocalc/**/*\",\n \"helpers/**/*\",\n \"normalizers/**/*\",\n \"validations/**/*\",\n \"localization/**/*\"\n )\n : Observe.value(fi.formSourcesPath)\n )\n .transform(async fi => {\n let dependenciesHash: undefined | string;\n if (fi.mode !== FormBuildMode.NormalBuild) {\n return {\n ...fi,\n dependenciesHash: undefined,\n };\n }\n if (await fi.generator.supportsDependenciesExtraction()) {\n dependenciesHash = await fi.generator.getAllDependenciesHash(\n formDirPath,\n farmDirectory,\n hlFarmDirectoryPath\n );\n }\n return {\n ...fi,\n dependenciesHash: dependenciesHash,\n };\n })\n .transform(async fi => {\n let buildCacheExist: boolean = false;\n if (fi.dependenciesHash != undefined && fi.generatorSource != undefined) {\n buildCacheExist = await buildCache.exists(fi.generatorSource, gfv, fi.dependenciesHash);\n }\n return {\n ...fi,\n buildCacheExist: buildCacheExist,\n };\n })\n .do(async fi => {\n if (fi.generatorSource == undefined) {\n return undefined;\n }\n if (fi.buildCacheExist) {\n context.logger.withPrefix(`GENERATE:${gfv}`).log(\"Skipped due build cache exits\");\n return undefined;\n }\n\n return generateForm(fi.formSourcesPath, farmDirectory, hlFarmDirectoryPath, fi.generator, undefined, {\n skipCodeReformatting: options.skipGeneratedCodeReformatting,\n resourcesHash: fi.dependenciesHash ?? \"UndefinedResourcesHash\",\n });\n })\n .attach(async () =>\n buildOptions.watch\n ? Observe.files(path.join(formDirPath, \"form\"), \"**/*\")\n : Observe.value(path.join(formDirPath, \"form\"))\n )\n .do(async fi => {\n if (fi.generatorSource == undefined) {\n return;\n }\n if (fi.dependenciesHash != undefined && fi.buildCacheExist) {\n context.logger.withPrefix(`COMPILE:${gfv}`).log(\"Skipped due build cache exists\");\n await buildCache.extract(fi.generatorSource, gfv, fi.dependenciesHash, resourcesDirectory);\n return;\n }\n const buildCacheOptions =\n fi.dependenciesHash != undefined\n ? {\n depsHash: fi.dependenciesHash,\n generatorVersion: getGeneratorVersion(fi.generatorSource),\n gfv: gfv,\n mode: options.buildCacheMode,\n farmDirectory: farmDirectory,\n }\n : undefined;\n\n await compileForm(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n fi.dependenciesHash ??\n reject(\n \"This version of generator is not supported due to dependencies extraction is not supported\"\n ),\n false,\n undefined,\n options.mode === \"production\",\n buildCacheOptions\n );\n\n await writeFormMeta(\n resourcesDirectory,\n gfv,\n fi.engineSource,\n fi.dependenciesHash ??\n reject(\n \"This version of generator is not supported due to dependencies extraction is not supported\"\n ),\n fi.themes,\n buildCache,\n buildCacheOptions\n );\n })\n .do(async fi => {\n if (fi.generatorSource == undefined) {\n return;\n }\n const buildCacheOptions =\n fi.dependenciesHash != undefined\n ? {\n depsHash: fi.dependenciesHash,\n generatorVersion: getGeneratorVersion(fi.generatorSource),\n gfv: gfv,\n mode: options.buildCacheMode,\n farmDirectory: farmDirectory,\n }\n : undefined;\n await writeFLangNormalizationFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions,\n fi.buildCacheExist\n );\n await writeAllKClangFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions,\n fi.buildCacheExist\n );\n await writeExtendedSchemaFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions,\n fi.buildCacheExist\n );\n await writeAttachmentPathFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions\n );\n await writeAttachmentPathByGfvFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions\n );\n })\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"schemas\"), rngSchemaMask).do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"SCHEMAS\"),\n x,\n path.join(resourcesDirectory, \"schemas\")\n )\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"converters\"), \"*\").do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"CONVERTERS\"),\n x,\n path.join(resourcesDirectory, \"converters\")\n )\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"mergers\"), \"*\").do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"MERGERS\"),\n x,\n path.join(resourcesDirectory, \"mergers\")\n )\n )\n )\n .attach(async fi => {\n const modifier = (content: string): string =>\n content.replace(/<x:include href=\"[./]+/g, '<x:include href=\"');\n return Observe.files(path.join(fi.formSourcesPath, \"converters\"), \"*\").do(x =>\n FSTask.modifyFilesContent(\n getLogger().withPrefix(\"FIX-XSLT-INCLUDE\"),\n x,\n path.join(resourcesDirectory, \"converters\"),\n \"**/*.xslt\",\n modifier\n )\n );\n })\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"..\", \"..\", \"xsltTemplates\"), \"*\").do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"XSLT-TEMPLATES\"),\n x,\n path.join(resourcesDirectory, \"converters\", \"xsltTemplates\")\n )\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"normalize\"), \"*.xml\").do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"NORMALIZE\"),\n x,\n path.join(resourcesDirectory, \"normalize\")\n )\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"patch\"), \"*.xslt\").do(x =>\n FSTask.copyRecursively(getLogger().withPrefix(\"PATCH\"), x, path.join(resourcesDirectory, \"patch\"))\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"map\"), \"*.xml\").do(x =>\n FSTask.copyRecursively(getLogger().withPrefix(\"MAP\"), x, path.join(resourcesDirectory, \"map\"))\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"unmap\"), \"*.xml\").do(x =>\n FSTask.copyRecursively(getLogger().withPrefix(\"UNMAP\"), x, path.join(resourcesDirectory, \"unmap\"))\n )\n )\n .do(async fi => {\n if (buildOptions.watch) {\n notifier.notify({\n title: `${fi.formName}: сборка завершена`,\n message: `Engine: ${\n fi.engineSource == undefined\n ? \"[NoEngine]\"\n : fi.engineSource.type === \"LocalEngineSources\"\n ? \"local\"\n : fi.engineSource.version\n }`,\n });\n }\n });\n };\n\n const buildFormsChain = Observe.fixedFormDirectories(\n formInfos.map(x => path.relative(repositoryRoot, x.formPath))\n ).splitToParallelChains(\n x => x,\n x => x,\n createChainForForm\n );\n\n if (options.clean) {\n await cleanTargetDirectory(resourcesDirectory, context.logger);\n }\n\n if (buildOptions.watch) {\n const stopObserve1 = await pickListsChain.observe();\n const stopObserve2 = await buildFormsChain.observe();\n const stopObserve3 = await staticResourcesForProductionChain.observe();\n const stopObserve5 = await resourcesExternalConvertersChain.observe();\n await context.waitForExit();\n if (stopObserve3 != undefined) {\n await stopObserve3();\n }\n if (stopObserve5 != undefined) {\n await stopObserve5();\n }\n await stopObserve2();\n await stopObserve1();\n } else {\n const startDate = Date.now();\n try {\n await pickListsChain.currentValue;\n await resourcesExternalConvertersChain.currentValue;\n await staticResourcesForProductionChain.currentValue;\n await buildFormsChain.currentValue;\n // eslint-disable-next-line no-console\n console.log(chalk.greenBright(\"Build success\"));\n } finally {\n const totalTime = Date.now() - startDate;\n // eslint-disable-next-line no-console\n console.log(`Total time: ${printTime(totalTime)}`);\n }\n }\n}\n\nasync function cleanTargetDirectory(resourcesDirectory: string, logger: ILogger): Promise<void> {\n logger.log(\"Cleaning resource directory. \" + resourcesDirectory);\n await emptyDir(resourcesDirectory);\n logger.log(\"Resource directory clean\");\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"RunBuildForms.js","names":["_path","_interopRequireDefault","require","_chalk","_fsExtra","_nodeNotifier","_AcquireFormEngine","_EngineSource","_CompileForm","_GenerateForm","_NullFormGenerator","_WriteFLangNormalizationFiles","_FSTask","_AcquireFormGenerator","_PublishedVersionUtils","_ResolveFormInfo","_WriteFormMeta","_FormGlobsUtils","_StaticLogger","_Observe","_SingleValueProducer","_TimingUtils","_CacheAssetsPlugin","_TypingUtils","_WriteAttachmentPathFiles","_EmptyProducer","_GetRngSchemaFileExtension","_FormPathUtils","_WellKnownDirectories","_WriteAttachmentPathByGfvFiles","_WriteKClangFiles","_WriteExtendedSchemaFiles","_EngineStructureUtils","_BuildCandyWidgetTask","getGeneratorVersion","generatorSource","type","version","Error","runBuildForms","context","options","farmDirectory","resourcesDirectory","engineDirectory","candyModulesDirectory","hlFarmDirectoryPath","buildOptions","pickListsChain","Observe","files","path","join","do","x","FSTask","copyRecursively","logger","withPrefix","formInfos","FormGlobs","resolveGfvGlobs","formGlobs","staticResourcesForProductionChain","__dirname","getLogger","resourcesExternalConvertersChain","empty","copiedEngines","Set","repositoryRoot","buildCache","BuildCache","buildCacheMode","createChainForForm","formRelativePath","gfv","extractGfvFromFormPath","formDirPath","pathExists","WellKnownDirectories","FormJsonFileName","warning","value","formSchemasDirPath","rngSchemaMask","getRngSchemaFileExtension","rngSchemaExtension","file","transform","formJsonFile","resolveFormInfo","upgradeFormJson","useLastStableVersion","usePrereleaseVersion","fi","mode","FormBuildMode","NormalBuild","generatorVersion","undefined","engineVersion","resolveGeneratorVersion","engineSource","resolveEngineVersion","attach","SingleValueProducer","NullFormGenerator","generatorFactory","useVersionFromCache","y","generator","getGeneratorSourceKey","engineFactory","has","getEngineSourceKey","add","watch","formSourcesPath","dependenciesHash","supportsDependenciesExtraction","getAllDependenciesHash","buildCacheExist","exists","_fi$dependenciesHash","log","generateForm","skipCodeReformatting","skipGeneratedCodeReformatting","resourcesHash","_fi$dependenciesHash2","_fi$dependenciesHash3","extract","buildCacheOptions","depsHash","compileForm","formName","reject","writeFormMeta","themes","writeFLangNormalizationFiles","writeKClangFiles","writeExtendedSchemaFiles","writeAttachmentPathFiles","writeAttachmentPathByGfvFiles","modifier","content","replace","modifyFilesContent","notifier","notify","title","message","buildFormsChain","fixedFormDirectories","map","relative","formPath","splitToParallelChains","candyWidgetsConfigTask","createClientViteConfigTask","buildCandyWidgetChain","buildCandyWidget","EmptyProducer","chainWith","p","BuildCandyWidgetTask","clean","cleanTargetDirectory","stopObserve1","observe","stopObserve2","stopObserve3","stopObserve5","waitForExit","startDate","Date","now","currentValue","console","chalk","greenBright","totalTime","printTime","emptyDir"],"sources":["../../../../../src/CLICommands/BuildForms/RunBuildForms.ts"],"sourcesContent":["import path from \"path\";\n\nimport chalk from \"chalk\";\nimport { emptyDir, pathExists } from \"fs-extra\";\nimport notifier from \"node-notifier\";\n\nimport { engineFactory } from \"../../BuildTasks/Engine/AcquireFormEngine\";\nimport { getEngineSourceKey } from \"../../BuildTasks/Engine/EngineSource\";\nimport { compileForm } from \"../../BuildTasks/Form/CompileForm\";\nimport { generateForm } from \"../../BuildTasks/Form/GenerateForm\";\nimport { NullFormGenerator } from \"../../BuildTasks/Form/NullFormGenerator\";\nimport { writeFLangNormalizationFiles } from \"../../BuildTasks/Form/WriteFLangNormalizationFiles\";\nimport { FSTask } from \"../../BuildTasks/FSTask\";\nimport {\n generatorFactory,\n GeneratorSource,\n getGeneratorSourceKey,\n} from \"../../BuildTasks/Generator/AcquireFormGenerator\";\nimport { resolveEngineVersion, resolveGeneratorVersion } from \"../../BuildTasks/PublishedVersionUtils\";\nimport { FormBuildMode, resolveFormInfo } from \"../../BuildTasks/ResolveFormInfo\";\nimport { writeFormMeta } from \"../../BuildTasks/WriteFormMeta\";\nimport { ConsoleApplicationContext } from \"../../Commons/ConsoleApplication/ConsoleApplicationContext\";\nimport { FormGlobs } from \"../../Commons/FormGlobsUtils\";\nimport { ILogger } from \"../../Commons/Logging/ILogger\";\nimport { getLogger } from \"../../Commons/Logging/StaticLogger\";\nimport { Observe } from \"../../Commons/TasksCore/Observe\";\nimport { SingleValueProducer } from \"../../Commons/TasksCore/SingleValueProducer\";\nimport { printTime } from \"../../Commons/TimingUtils\";\nimport { BuildCache } from \"../../FormWebpackConfiguration/CacheAssetsPlugin\";\nimport { reject } from \"../../../../Common/TypingUtils\";\nimport { writeAttachmentPathFiles } from \"../../BuildTasks/Form/WriteAttachmentPathFiles\";\nimport { ChainableValueProducer } from \"../../Commons/TasksCore/ChainableValueProducer\";\nimport { EmptyProducer } from \"../../Commons/TasksCore/EmptyProducer\";\nimport { getRngSchemaFileExtension } from \"../../../../Common/GetRngSchemaFileExtension\";\nimport { extractGfvFromFormPath } from \"../../../../Common/FormPathUtils\";\nimport { WellKnownDirectories } from \"../../../../Common/WellKnownDirectories\";\nimport { writeAttachmentPathByGfvFiles } from \"../../BuildTasks/Form/WriteAttachmentPathByGfvFiles\";\nimport { writeKClangFiles } from \"../../BuildTasks/Form/WriteKClangFiles\";\nimport { writeExtendedSchemaFiles } from \"../../BuildTasks/Form/WriteExtendedSchemaFiles\";\nimport { createClientViteConfigTask } from \"../../BuildTasks/EngineStructureUtils\";\nimport { BuildCandyWidgetTask } from \"../../BuildTasks/CandyWidget/BuildCandyWidgetTask\";\n\nimport { BuildFormsOptions } from \"./BuildFormsOptions\";\n\nfunction getGeneratorVersion(generatorSource: GeneratorSource): string {\n if (generatorSource.type === \"PublishedGenerator\") {\n return generatorSource.version;\n } else {\n throw new Error(\"InvalidProgramState\");\n }\n}\n\nexport async function runBuildForms(\n context: ConsoleApplicationContext,\n options: BuildFormsOptions,\n farmDirectory: string,\n resourcesDirectory: string,\n engineDirectory: string,\n candyModulesDirectory: string,\n hlFarmDirectoryPath: string\n): Promise<void> {\n const buildOptions = options;\n\n const pickListsChain = Observe.files(path.join(farmDirectory, \"picklists\"), \"*.json\").do(x =>\n FSTask.copyRecursively(context.logger.withPrefix(\"PICKLISTS\"), x, path.join(resourcesDirectory, \"picklists\"))\n );\n\n const formInfos = await FormGlobs.resolveGfvGlobs(options.formGlobs, farmDirectory);\n\n const staticResourcesForProductionChain = Observe.files(\n path.join(__dirname, \"..\", \"..\", \"StaticFilesForProductionResourcesDir\"),\n \"*.js\",\n \"*.js.map\"\n ).do(x =>\n FSTask.copyRecursively(getLogger().withPrefix(\"STATICS\"), x, path.join(resourcesDirectory, \"public\", \"scripts\"))\n );\n\n /** Конвертеры описи для форм, которые пока не реализованы на кенди, сама механика описи перенесена в формы в кенди апи, поэтому они должны быть в candy.resources\n * Реализуется только при общем билде форм: candy build *\n * */\n let resourcesExternalConvertersChain: ChainableValueProducer<string> | EmptyProducer = Observe.empty();\n if (options.formGlobs[0] === \"*\") {\n resourcesExternalConvertersChain = Observe.files(path.join(farmDirectory, \"externalConverters\"), \"*.xslt\").do(\n x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"EXTERNAL-CONVERTERS\"),\n x,\n path.join(resourcesDirectory, \"converters\")\n )\n );\n }\n\n const copiedEngines = new Set<string>();\n\n const repositoryRoot = path.join(farmDirectory, \"..\");\n const buildCache = new BuildCache(farmDirectory, options.buildCacheMode);\n\n const createChainForForm = async (formRelativePath: string) => {\n const gfv = extractGfvFromFormPath(formRelativePath);\n const formDirPath = path.join(repositoryRoot, formRelativePath);\n\n if (!(await pathExists(path.join(formDirPath, WellKnownDirectories.FormJsonFileName)))) {\n context.logger.warning(\n `Form ${gfv} does not have form.json file. To include this form to build process restart build`\n );\n return Observe.value({});\n }\n const formSchemasDirPath = path.join(formDirPath, \"schemas\");\n const rngSchemaMask = `*${getRngSchemaFileExtension(formSchemasDirPath, gfv)}`;\n const rngSchemaExtension = getRngSchemaFileExtension(formSchemasDirPath, gfv);\n\n if (rngSchemaExtension == \".rng.xml\") {\n throw new Error(\n `Недопустимое название схемы ${gfv + rngSchemaExtension} используй команду candy rename ${gfv} в каталоге candy.farm`\n );\n }\n if (await pathExists(path.join(formDirPath, \"presentations.json\"))) {\n throw new Error(\n `presentations.json больше не используется, удали его из ${formDirPath} или используй команду candy rename ${gfv} в каталоге candy.farm`\n );\n }\n\n return Observe.file(path.join(formDirPath, WellKnownDirectories.FormJsonFileName))\n .transform(formJsonFile =>\n resolveFormInfo(\n formJsonFile,\n formDirPath,\n engineDirectory,\n context.logger.withPrefix(`FORM:${gfv}`),\n options.upgradeFormJson,\n options.useLastStableVersion,\n options.usePrereleaseVersion\n )\n )\n .transform(async fi => {\n if (fi.mode === FormBuildMode.NormalBuild) {\n if (fi.generatorVersion == undefined) {\n throw new Error(\"generatorVersion is not defined\");\n }\n if (fi.engineVersion == undefined) {\n throw new Error(\"engineVersion is not defined\");\n }\n return {\n ...fi,\n generatorSource: await resolveGeneratorVersion(\n fi.generatorVersion,\n context.logger.withPrefix(gfv)\n ),\n engineSource: await resolveEngineVersion(fi.engineVersion, context.logger.withPrefix(gfv)),\n };\n } else {\n return {\n ...fi,\n generatorSource: undefined,\n engineSource: undefined,\n };\n }\n })\n .attach(\n async fi => {\n if (fi.generatorSource == undefined) {\n return new SingleValueProducer(new NullFormGenerator());\n } else {\n return generatorFactory(fi.generatorSource, candyModulesDirectory, options.useVersionFromCache);\n }\n },\n async (fi, y) => ({ ...fi, generator: y }),\n async fi =>\n fi.generatorSource != undefined ? getGeneratorSourceKey(fi.generatorSource) : \"NullFormGenerator\"\n )\n .attach(\n async fi => {\n if (fi.engineSource === undefined) {\n return new SingleValueProducer(\"NullEngine\");\n }\n return engineFactory(fi.engineSource, candyModulesDirectory, options.useVersionFromCache).do(\n async x => {\n if (!copiedEngines.has(getEngineSourceKey(fi.engineSource))) {\n await FSTask.copyRecursively(\n getLogger().withPrefix(\"ENGINE\"),\n x,\n path.join(resourcesDirectory, \"public\")\n );\n copiedEngines.add(getEngineSourceKey(fi.engineSource));\n }\n }\n );\n },\n async fi => fi,\n async fi => (fi.engineSource != undefined ? getEngineSourceKey(fi.engineSource) : \"NullEngine\")\n )\n .attach(async fi =>\n buildOptions.watch\n ? Observe.files(\n fi.formSourcesPath,\n \"../../controls/**/*\",\n \"../../xsltTemplates/**/*\",\n \"../../jsHelpers/**/*\",\n `./${WellKnownDirectories.FormJsonFileName}`,\n \"schemas/**/*\",\n \"sugar/**/*\",\n \"controls/**/*\",\n \"autocalc/**/*\",\n \"helpers/**/*\",\n \"normalizers/**/*\",\n \"validations/**/*\",\n \"localization/**/*\"\n )\n : Observe.value(fi.formSourcesPath)\n )\n .transform(async fi => {\n let dependenciesHash: undefined | string;\n if (fi.mode !== FormBuildMode.NormalBuild) {\n return {\n ...fi,\n dependenciesHash: undefined,\n };\n }\n if (await fi.generator.supportsDependenciesExtraction()) {\n dependenciesHash = await fi.generator.getAllDependenciesHash(\n formDirPath,\n farmDirectory,\n hlFarmDirectoryPath\n );\n }\n return {\n ...fi,\n dependenciesHash: dependenciesHash,\n };\n })\n .transform(async fi => {\n let buildCacheExist: boolean = false;\n if (fi.dependenciesHash != undefined && fi.generatorSource != undefined) {\n buildCacheExist = await buildCache.exists(fi.generatorSource, gfv, fi.dependenciesHash);\n }\n return {\n ...fi,\n buildCacheExist: buildCacheExist,\n };\n })\n .do(async fi => {\n if (fi.generatorSource == undefined) {\n return undefined;\n }\n if (fi.buildCacheExist) {\n context.logger.withPrefix(`GENERATE:${gfv}`).log(\"Skipped due build cache exits\");\n return undefined;\n }\n\n return generateForm(fi.formSourcesPath, farmDirectory, hlFarmDirectoryPath, fi.generator, undefined, {\n skipCodeReformatting: options.skipGeneratedCodeReformatting,\n resourcesHash: fi.dependenciesHash ?? \"UndefinedResourcesHash\",\n });\n })\n .attach(async () =>\n buildOptions.watch\n ? Observe.files(path.join(formDirPath, \"form\"), \"**/*\")\n : Observe.value(path.join(formDirPath, \"form\"))\n )\n .do(async fi => {\n if (fi.generatorSource == undefined) {\n return;\n }\n if (fi.dependenciesHash != undefined && fi.buildCacheExist) {\n context.logger.withPrefix(`COMPILE:${gfv}`).log(\"Skipped due build cache exists\");\n await buildCache.extract(fi.generatorSource, gfv, fi.dependenciesHash, resourcesDirectory);\n return;\n }\n const buildCacheOptions =\n fi.dependenciesHash != undefined\n ? {\n depsHash: fi.dependenciesHash,\n generatorVersion: getGeneratorVersion(fi.generatorSource),\n gfv: gfv,\n mode: options.buildCacheMode,\n farmDirectory: farmDirectory,\n }\n : undefined;\n\n await compileForm(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n fi.dependenciesHash ??\n reject(\n \"This version of generator is not supported due to dependencies extraction is not supported\"\n ),\n false,\n undefined,\n options.mode === \"production\",\n buildCacheOptions\n );\n\n await writeFormMeta(\n resourcesDirectory,\n gfv,\n fi.engineSource,\n fi.dependenciesHash ??\n reject(\n \"This version of generator is not supported due to dependencies extraction is not supported\"\n ),\n fi.themes,\n buildCache,\n buildCacheOptions\n );\n })\n .do(async fi => {\n if (fi.generatorSource == undefined) {\n return;\n }\n const buildCacheOptions =\n fi.dependenciesHash != undefined\n ? {\n depsHash: fi.dependenciesHash,\n generatorVersion: getGeneratorVersion(fi.generatorSource),\n gfv: gfv,\n mode: options.buildCacheMode,\n farmDirectory: farmDirectory,\n }\n : undefined;\n await writeFLangNormalizationFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions,\n fi.buildCacheExist\n );\n await writeKClangFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions,\n fi.buildCacheExist\n );\n await writeExtendedSchemaFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions,\n fi.buildCacheExist\n );\n await writeAttachmentPathFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions\n );\n await writeAttachmentPathByGfvFiles(\n fi.formName,\n formDirPath,\n resourcesDirectory,\n undefined,\n buildCache,\n buildCacheOptions\n );\n })\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"schemas\"), rngSchemaMask).do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"SCHEMAS\"),\n x,\n path.join(resourcesDirectory, \"schemas\")\n )\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"converters\"), \"*\").do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"CONVERTERS\"),\n x,\n path.join(resourcesDirectory, \"converters\")\n )\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"mergers\"), \"*\").do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"MERGERS\"),\n x,\n path.join(resourcesDirectory, \"mergers\")\n )\n )\n )\n .attach(async fi => {\n const modifier = (content: string): string =>\n content.replace(/<x:include href=\"[./]+/g, '<x:include href=\"');\n return Observe.files(path.join(fi.formSourcesPath, \"converters\"), \"*\").do(x =>\n FSTask.modifyFilesContent(\n getLogger().withPrefix(\"FIX-XSLT-INCLUDE\"),\n x,\n path.join(resourcesDirectory, \"converters\"),\n \"**/*.xslt\",\n modifier\n )\n );\n })\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"..\", \"..\", \"xsltTemplates\"), \"*\").do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"XSLT-TEMPLATES\"),\n x,\n path.join(resourcesDirectory, \"converters\", \"xsltTemplates\")\n )\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"normalize\"), \"*.xml\").do(x =>\n FSTask.copyRecursively(\n getLogger().withPrefix(\"NORMALIZE\"),\n x,\n path.join(resourcesDirectory, \"normalize\")\n )\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"patch\"), \"*.xslt\").do(x =>\n FSTask.copyRecursively(getLogger().withPrefix(\"PATCH\"), x, path.join(resourcesDirectory, \"patch\"))\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"map\"), \"*.xml\").do(x =>\n FSTask.copyRecursively(getLogger().withPrefix(\"MAP\"), x, path.join(resourcesDirectory, \"map\"))\n )\n )\n .attach(async fi =>\n Observe.files(path.join(fi.formSourcesPath, \"unmap\"), \"*.xml\").do(x =>\n FSTask.copyRecursively(getLogger().withPrefix(\"UNMAP\"), x, path.join(resourcesDirectory, \"unmap\"))\n )\n )\n .do(async fi => {\n if (buildOptions.watch) {\n notifier.notify({\n title: `${fi.formName}: сборка завершена`,\n message: `Engine: ${\n fi.engineSource == undefined\n ? \"[NoEngine]\"\n : fi.engineSource.type === \"LocalEngineSources\"\n ? \"local\"\n : fi.engineSource.version\n }`,\n });\n }\n });\n };\n\n const buildFormsChain = Observe.fixedFormDirectories(\n formInfos.map(x => path.relative(repositoryRoot, x.formPath))\n ).splitToParallelChains(\n x => x,\n x => x,\n createChainForForm\n );\n\n const candyWidgetsConfigTask = await createClientViteConfigTask(engineDirectory);\n const buildCandyWidgetChain = !options.buildCandyWidget\n ? new EmptyProducer()\n : candyWidgetsConfigTask.chainWith(p => new BuildCandyWidgetTask(p));\n\n if (options.clean) {\n await cleanTargetDirectory(resourcesDirectory, context.logger);\n }\n\n if (buildOptions.watch) {\n const stopObserve1 = await pickListsChain.observe();\n const stopObserve2 = await buildFormsChain.observe();\n const stopObserve3 = await staticResourcesForProductionChain.observe();\n const stopObserve5 = await resourcesExternalConvertersChain.observe();\n await context.waitForExit();\n if (stopObserve3 != undefined) {\n await stopObserve3();\n }\n if (stopObserve5 != undefined) {\n await stopObserve5();\n }\n await stopObserve2();\n await stopObserve1();\n } else {\n const startDate = Date.now();\n try {\n await pickListsChain.currentValue;\n await resourcesExternalConvertersChain.currentValue;\n await staticResourcesForProductionChain.currentValue;\n await buildFormsChain.currentValue;\n await buildCandyWidgetChain.currentValue;\n // eslint-disable-next-line no-console\n console.log(chalk.greenBright(\"Build success\"));\n } finally {\n const totalTime = Date.now() - startDate;\n // eslint-disable-next-line no-console\n console.log(`Total time: ${printTime(totalTime)}`);\n }\n }\n}\n\nasync function cleanTargetDirectory(resourcesDirectory: string, logger: ILogger): Promise<void> {\n logger.log(\"Cleaning resource directory. \" + resourcesDirectory);\n await emptyDir(resourcesDirectory);\n logger.log(\"Resource directory clean\");\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -91,6 +91,16 @@ const devBuildCommandDefinition = exports.devBuildCommandDefinition = (0, _Comma
|
|
|
91
91
|
}),
|
|
92
92
|
doesNotRequireValue: true,
|
|
93
93
|
description: "Собирать только debug-сборки движка и форм. " + "ВНИМАНИЕ: при работе в браузере необходимо использовать параметр ?debug=true"
|
|
94
|
+
}, {
|
|
95
|
+
name: "build-candy-widget",
|
|
96
|
+
doesNotRequireValue: true,
|
|
97
|
+
defaultValue: {
|
|
98
|
+
buildCandyWidget: false
|
|
99
|
+
},
|
|
100
|
+
parse: input => ({
|
|
101
|
+
buildCandyWidget: input
|
|
102
|
+
}),
|
|
103
|
+
description: "Собирать candy-виджет"
|
|
94
104
|
}, _CommonOptionDefintions.devModeOption, _CommonOptionDefintions.logVerbosityOption), {
|
|
95
105
|
description: "Выполняет сборку форм с ипользованием локальных исходников движка и генератора.",
|
|
96
106
|
detailedDescription: `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevBuildOptions.js","names":["_CommandBasedOptionsParser","require","_CommonOptionDefintions","devBuildCommandDefinition","exports","commandDefinition","optionsDefinition","alias","name","defaultValue","watch","parse","input","doesNotRequireValue","description","formGlobs","defaultOption","multiple","skipGeneration","skipWebPackCompilation","skipBuildEngine","skipGeneratedCodeReformatting","continueOnError","buildDebugOnly","devModeOption","logVerbosityOption","detailedDescription","trim","examples"],"sources":["../../../../../src/CLICommands/DevBuild/DevBuildOptions.ts"],"sourcesContent":["import { commandDefinition, optionsDefinition } from \"../../Commons/Options/CommandBasedOptionsParser\";\nimport { CommonOptions } from \"../CommonOptions/CommonOptions\";\nimport { devModeOption, logVerbosityOption } from \"../CommonOptions/CommonOptionDefintions\";\n\nexport interface DevelopmentBuildOptions extends CommonOptions {\n watch: boolean;\n formGlobs: string[];\n skipGeneration: boolean;\n skipBuildEngine: boolean;\n skipWebPackCompilation: boolean;\n buildDebugOnly: boolean;\n skipGeneratedCodeReformatting: boolean;\n continueOnError: boolean;\n}\n\nexport const devBuildCommandDefinition = commandDefinition<\"dev-build\", DevelopmentBuildOptions>(\n \"dev-build\",\n \"dev-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 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 alias: \"n\",\n name: \"skip-generation\",\n defaultValue: { skipGeneration: false },\n parse: (input: boolean) => ({ skipGeneration: input }),\n doesNotRequireValue: true,\n description:\n \"Не выполнять генарцию формы из сахара, будет выполняться только компиляция исходников формы из каталога форм.\",\n },\n {\n name: \"skip-webpack\",\n defaultValue: { skipWebPackCompilation: false },\n parse: (input: boolean) => ({ skipWebPackCompilation: input }),\n doesNotRequireValue: true,\n description: \"Не запускать компиляцию сгенерированного кода. Для отладки результатов генерации.\",\n },\n {\n name: \"skip-engine\",\n defaultValue: { skipBuildEngine: false },\n parse: (input: boolean) => ({ skipBuildEngine: input }),\n doesNotRequireValue: true,\n description: \"Не запускать сборку runtime-движка. Для отладки результатов генерации.\",\n },\n {\n name: \"no-reformat\",\n doesNotRequireValue: true,\n defaultValue: { skipGeneratedCodeReformatting: false },\n parse: (input: boolean) => ({ skipGeneratedCodeReformatting: input }),\n description:\n \"Отлючает форматирование генерируемого кода. Работает, только если версия генератора поддерживает эту опцию. Используется для ускорения сборки форм.\",\n },\n {\n name: \"continue-on-error\",\n doesNotRequireValue: true,\n defaultValue: { continueOnError: false },\n parse: (input: boolean) => ({ continueOnError: input }),\n description: \"Не генерирует код ошибки в случае ошибки при генерации или компиляции формы.\",\n },\n {\n alias: \"d\",\n name: \"debug-only\",\n defaultValue: { buildDebugOnly: false },\n parse: (input: boolean) => ({ buildDebugOnly: input }),\n doesNotRequireValue: true,\n description:\n \"Собирать только debug-сборки движка и форм. \" +\n \"ВНИМАНИЕ: при работе в браузере необходимо использовать параметр ?debug=true\",\n },\n devModeOption,\n logVerbosityOption\n ),\n {\n description: \"Выполняет сборку форм с ипользованием локальных исходников движка и генератора.\",\n detailedDescription: `\nВыполняет сборку форм с ипользованием локальных исходников движка и генератора.\n\n### **ВАЖНО**\nЭта команда собирает выполняет сборку форм в каталог ресурсов, но результаты сборки не являеются корректными для выкатывания в продакшен.\n`.trim(),\n examples: `\n### Написание и просмотр форм\n\nВ каталоге candy.farm запустить команды\n\n\\`\\`\\`\ncandy build 123456 -w\n\\`\\`\\`\n\n\\`\\`\\`\ncandy local-server\n\\`\\`\\`\n\n* Переход на url http://localhost:9080/123456/form -- создаст черновик и откроет редактор\n* Inner черновиков находится в каталоге candy.resources/.data\n\n### Сборка формы для релиза\n\n\\`\\`\\`\ncandy build 123456\n\\`\\`\\`\n\n### Переключение и сборка формы на использование последней стабильной\n\n\\`\\`\\`\ncandy build 123456 --use-last-stable-version\n\\`\\`\\`\n\nЗатем можно использовать пункт 'Написание и просмотр форм'\n\n### Отладка форм с локальным движком\n\nВ каталоге candy.farm запустить команды\n\n\\`\\`\\`\ncandy dev-build 123456 -w\n\\`\\`\\`\n\n\\`\\`\\`\ncandy local-server\n\\`\\`\\`\n\n* Переход на url http://localhost:9080/123456/form -- создаст черновик и откроет редактор\n* Inner черновиков находится в каталоге candy.resources/.data\n\n### Разработка и отладка движка\n\nВ этом случае удобно использовать сборку только отладочных скриптов.\n\n\\`\\`\\`\ncandy dev-build 123456 --watch --debug-only\n\\`\\`\\`\n\n\\`\\`\\`\ncandy local-server --redirect-to-debug-scripts\n\\`\\`\\`\n\n* Переход на url http://localhost:9080/123456/form -- создаст черновик и откроет редактор\n* Inner черновиков находится в каталоге candy.resources/.data\n`.trim(),\n }\n);\n"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AAEA,IAAAC,uBAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"file":"DevBuildOptions.js","names":["_CommandBasedOptionsParser","require","_CommonOptionDefintions","devBuildCommandDefinition","exports","commandDefinition","optionsDefinition","alias","name","defaultValue","watch","parse","input","doesNotRequireValue","description","formGlobs","defaultOption","multiple","skipGeneration","skipWebPackCompilation","skipBuildEngine","skipGeneratedCodeReformatting","continueOnError","buildDebugOnly","buildCandyWidget","devModeOption","logVerbosityOption","detailedDescription","trim","examples"],"sources":["../../../../../src/CLICommands/DevBuild/DevBuildOptions.ts"],"sourcesContent":["import { commandDefinition, optionsDefinition } from \"../../Commons/Options/CommandBasedOptionsParser\";\nimport { CommonOptions } from \"../CommonOptions/CommonOptions\";\nimport { devModeOption, logVerbosityOption } from \"../CommonOptions/CommonOptionDefintions\";\n\nexport interface DevelopmentBuildOptions extends CommonOptions {\n watch: boolean;\n formGlobs: string[];\n skipGeneration: boolean;\n skipBuildEngine: boolean;\n skipWebPackCompilation: boolean;\n buildDebugOnly: boolean;\n skipGeneratedCodeReformatting: boolean;\n continueOnError: boolean;\n buildCandyWidget: boolean;\n}\n\nexport const devBuildCommandDefinition = commandDefinition<\"dev-build\", DevelopmentBuildOptions>(\n \"dev-build\",\n \"dev-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 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 alias: \"n\",\n name: \"skip-generation\",\n defaultValue: { skipGeneration: false },\n parse: (input: boolean) => ({ skipGeneration: input }),\n doesNotRequireValue: true,\n description:\n \"Не выполнять генарцию формы из сахара, будет выполняться только компиляция исходников формы из каталога форм.\",\n },\n {\n name: \"skip-webpack\",\n defaultValue: { skipWebPackCompilation: false },\n parse: (input: boolean) => ({ skipWebPackCompilation: input }),\n doesNotRequireValue: true,\n description: \"Не запускать компиляцию сгенерированного кода. Для отладки результатов генерации.\",\n },\n {\n name: \"skip-engine\",\n defaultValue: { skipBuildEngine: false },\n parse: (input: boolean) => ({ skipBuildEngine: input }),\n doesNotRequireValue: true,\n description: \"Не запускать сборку runtime-движка. Для отладки результатов генерации.\",\n },\n {\n name: \"no-reformat\",\n doesNotRequireValue: true,\n defaultValue: { skipGeneratedCodeReformatting: false },\n parse: (input: boolean) => ({ skipGeneratedCodeReformatting: input }),\n description:\n \"Отлючает форматирование генерируемого кода. Работает, только если версия генератора поддерживает эту опцию. Используется для ускорения сборки форм.\",\n },\n {\n name: \"continue-on-error\",\n doesNotRequireValue: true,\n defaultValue: { continueOnError: false },\n parse: (input: boolean) => ({ continueOnError: input }),\n description: \"Не генерирует код ошибки в случае ошибки при генерации или компиляции формы.\",\n },\n {\n alias: \"d\",\n name: \"debug-only\",\n defaultValue: { buildDebugOnly: false },\n parse: (input: boolean) => ({ buildDebugOnly: input }),\n doesNotRequireValue: true,\n description:\n \"Собирать только debug-сборки движка и форм. \" +\n \"ВНИМАНИЕ: при работе в браузере необходимо использовать параметр ?debug=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 detailedDescription: `\nВыполняет сборку форм с ипользованием локальных исходников движка и генератора.\n\n### **ВАЖНО**\nЭта команда собирает выполняет сборку форм в каталог ресурсов, но результаты сборки не являеются корректными для выкатывания в продакшен.\n`.trim(),\n examples: `\n### Написание и просмотр форм\n\nВ каталоге candy.farm запустить команды\n\n\\`\\`\\`\ncandy build 123456 -w\n\\`\\`\\`\n\n\\`\\`\\`\ncandy local-server\n\\`\\`\\`\n\n* Переход на url http://localhost:9080/123456/form -- создаст черновик и откроет редактор\n* Inner черновиков находится в каталоге candy.resources/.data\n\n### Сборка формы для релиза\n\n\\`\\`\\`\ncandy build 123456\n\\`\\`\\`\n\n### Переключение и сборка формы на использование последней стабильной\n\n\\`\\`\\`\ncandy build 123456 --use-last-stable-version\n\\`\\`\\`\n\nЗатем можно использовать пункт 'Написание и просмотр форм'\n\n### Отладка форм с локальным движком\n\nВ каталоге candy.farm запустить команды\n\n\\`\\`\\`\ncandy dev-build 123456 -w\n\\`\\`\\`\n\n\\`\\`\\`\ncandy local-server\n\\`\\`\\`\n\n* Переход на url http://localhost:9080/123456/form -- создаст черновик и откроет редактор\n* Inner черновиков находится в каталоге candy.resources/.data\n\n### Разработка и отладка движка\n\nВ этом случае удобно использовать сборку только отладочных скриптов.\n\n\\`\\`\\`\ncandy dev-build 123456 --watch --debug-only\n\\`\\`\\`\n\n\\`\\`\\`\ncandy local-server --redirect-to-debug-scripts\n\\`\\`\\`\n\n* Переход на url http://localhost:9080/123456/form -- создаст черновик и откроет редактор\n* Inner черновиков находится в каталоге candy.resources/.data\n`.trim(),\n }\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -28,14 +28,17 @@ var _GetRngSchemaFileExtension = require("../../../../Common/GetRngSchemaFileExt
|
|
|
28
28
|
var _FormPathUtils = require("../../../../Common/FormPathUtils");
|
|
29
29
|
var _WellKnownDirectories = require("../../../../Common/WellKnownDirectories");
|
|
30
30
|
var _WriteAttachmentPathByGfvFiles = require("../../BuildTasks/Form/WriteAttachmentPathByGfvFiles");
|
|
31
|
-
var
|
|
31
|
+
var _WriteKClangFiles = require("../../BuildTasks/Form/WriteKClangFiles");
|
|
32
32
|
var _WriteExtendedSchemaFiles = require("../../BuildTasks/Form/WriteExtendedSchemaFiles");
|
|
33
|
+
var _BuildCandyWidgetTask = require("../../BuildTasks/CandyWidget/BuildCandyWidgetTask");
|
|
33
34
|
async function runDevBuild(context, options, engineDirectory, resourcesDirectory, farmDirectory, candyModulesDirectory, hlFarmDirectoryPath) {
|
|
34
35
|
const devBuildOptions = options;
|
|
35
36
|
const engineWebpackConfigTask = await (0, _EngineStructureUtils.createEngineWebpackConfigTask)(engineDirectory);
|
|
36
37
|
const buildEngineChain = options.skipBuildEngine ? new _EmptyProducer.EmptyProducer() : engineWebpackConfigTask.chainWith(p => new _BuildLocalEngineTask.BuildLocalEngineTask(p, resourcesDirectory, options.buildDebugOnly));
|
|
37
38
|
const clientWebpackConfigTask = await (0, _EngineStructureUtils.createClientWebpackConfigTask)(engineDirectory);
|
|
38
39
|
const buildClientJsChain = options.skipBuildEngine ? new _EmptyProducer.EmptyProducer() : clientWebpackConfigTask.chainWith(p => new _BuildClientJsTask.BuildClientJsTask(p, resourcesDirectory));
|
|
40
|
+
const candyWidgetsConfigTask = await (0, _EngineStructureUtils.createClientViteConfigTask)(engineDirectory);
|
|
41
|
+
const buildCandyWidgetChain = options.skipBuildEngine && !options.buildCandyWidget ? new _EmptyProducer.EmptyProducer() : candyWidgetsConfigTask.chainWith(p => new _BuildCandyWidgetTask.BuildCandyWidgetTask(p));
|
|
39
42
|
const staticResourcesChain = _Observe.Observe.files(_path.default.join(__dirname, "..", "..", "StaticFilesForResourcesDir"), "*.js").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("STATICS"), x, _path.default.join(resourcesDirectory, "public", "scripts")));
|
|
40
43
|
const pickListsChain = _Observe.Observe.files(_path.default.join(farmDirectory, "picklists"), "*.json").do(x => _FSTask.FSTask.copyRecursively(context.logger.withPrefix("PICKLISTS"), x, _path.default.join(resourcesDirectory, "picklists")));
|
|
41
44
|
const repositoryRoot = _path.default.join(farmDirectory, "..");
|
|
@@ -76,7 +79,7 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
76
79
|
return undefined;
|
|
77
80
|
}
|
|
78
81
|
return (0, _CompileForm.compileForm)(fi.formName, formDirPath, resourcesDirectory, fi.dependenciesHash, options.buildDebugOnly, undefined, false);
|
|
79
|
-
}).do(fi => (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, formDirPath, resourcesDirectory)).do(fi => (0,
|
|
82
|
+
}).do(fi => (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, formDirPath, resourcesDirectory)).do(fi => (0, _WriteKClangFiles.writeKClangFiles)(fi.formName, formDirPath, resourcesDirectory)).do(fi => (0, _WriteExtendedSchemaFiles.writeExtendedSchemaFiles)(fi.formName, formDirPath, resourcesDirectory)).do(fi => (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, formDirPath, resourcesDirectory)).do(fi => (0, _WriteAttachmentPathByGfvFiles.writeAttachmentPathByGfvFiles)(fi.formName, formDirPath, resourcesDirectory)).do(fi => (0, _WriteFormMeta.writeFormMeta)(resourcesDirectory, gfv, fi.engineSource, fi.dependenciesHash, fi.themes)).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), rngSchemaMask).do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "mergers"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MERGERS"), x, _path.default.join(resourcesDirectory, "mergers")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap"))));
|
|
80
83
|
};
|
|
81
84
|
const buildFormsChain = _Observe.Observe.fixedFormDirectories(formInfos.map(x => _path.default.relative(repositoryRoot, x.formPath))).splitToParallelChains(x => x, x => x, createChainForForm);
|
|
82
85
|
if (devBuildOptions.watch) {
|
|
@@ -95,7 +98,7 @@ async function runDevBuild(context, options, engineDirectory, resourcesDirectory
|
|
|
95
98
|
await stopObserve6();
|
|
96
99
|
} else {
|
|
97
100
|
const startDate = Date.now();
|
|
98
|
-
await Promise.all([buildEngineChain.currentValue, buildClientJsChain.currentValue, staticResourcesChain.currentValue, resourcesExternalConvertersChain.currentValue, (async () => {
|
|
101
|
+
await Promise.all([buildEngineChain.currentValue, buildClientJsChain.currentValue, buildCandyWidgetChain.currentValue, staticResourcesChain.currentValue, resourcesExternalConvertersChain.currentValue, (async () => {
|
|
99
102
|
try {
|
|
100
103
|
await pickListsChain.currentValue;
|
|
101
104
|
await buildFormsChain.currentValue;
|