@kontur.candy/tools 2.218.0 → 2.219.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +685 -314
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +154 -108
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -26,7 +26,7 @@ let BuildServerBackendResourcesUpdatesController = exports.BuildServerBackendRes
|
|
|
26
26
|
this.resourcesWatcher = void 0;
|
|
27
27
|
this.allFarmConfig = void 0;
|
|
28
28
|
this.farmWatchingRegexps = ["sugarTemplates", "legacyfetchfunctions", "jsHelpers", `images`, "tour", "controls", "commonResources", "externalConverters"].map(_GlobToRegexp.globToRegexp);
|
|
29
|
-
this.formsWatchingRegexps = [`**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/schemas`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/converters`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/mergers`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/autocalc`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/validations`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/fetchfunctions`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/helpers`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/sugar`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/normalize`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/unmap`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/map`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/patch`].map(_GlobToRegexp.globToRegexp);
|
|
29
|
+
this.formsWatchingRegexps = [`**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/schemas`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/converters`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/mergers`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/autocalc`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/validations`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/fetchfunctions`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/helpers`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/${_WellKnownDirectories.WellKnownDirectories.FormJsonFileName}`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/sugar`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/normalize`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/normalizers`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/unmap`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/map`, `**/**/**/${_WellKnownDirectories.WellKnownDirectories.CandySubdirectoryName}/patch`].map(_GlobToRegexp.globToRegexp);
|
|
30
30
|
this.handleFarmFSUpdate = (eventType, filePath, rootDir) => {
|
|
31
31
|
if (this.farmWatchingRegexps.some(x => x.test(filePath))) {
|
|
32
32
|
(0, _fs.stat)(_path.default.join(rootDir, filePath), (err, fileStat) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildServerBackendResourcesUpdatesController.js","names":["_fs","require","_path","_interopRequireDefault","_lodash","_Methods","_Params","_Results","_SingletonController","_WellKnownDirectories","_GlobToRegexp","_dec","_class","BuildServerBackendResourcesUpdatesController","exports","httpGet","httpReturn","PlainText","httpQueryParam","httpType","Number","SingletonController","constructor","allFarmConfig","lastUpdateTime","updateMonitor","Monitor","farmWatchers","formWatchers","resourcesWatcher","farmWatchingRegexps","map","globToRegexp","formsWatchingRegexps","WellKnownDirectories","CandySubdirectoryName","FormJsonFileName","handleFarmFSUpdate","eventType","filePath","rootDir","some","x","test","stat","path","join","err","fileStat","fileTicks","Math","max","mtimeMs","ctimeMs","Date","now","pulseAll","handleFormFSUpdate","beforeStart","config","watch","farmDirectory","recursive","_","debounce","y","formRootDirectory","normalize","FormsDirectory","getLastUpdateTime","prevLastUpdateTime","toString","afterStop","_this$farmWatchers","_this$formWatchers","_this$resourcesWatche","i","close","_applyDecoratedDescriptor2","default","prototype","Object","getOwnPropertyDescriptor","awaiters","waitPromiseHandler","resolve","push","wait","Promise","awaiter"],"sources":["../../../../../../src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.ts"],"sourcesContent":["import { FSWatcher, watch, stat } from \"fs\";\nimport path from \"path\";\n\nimport _ from \"lodash\";\nimport { FarmConfig } from \"Tools/src/CandyCLI\";\n\nimport { httpGet } from \"../../../Commons/HttpServer/AttributeRouting/Methods\";\nimport { httpQueryParam, httpType } from \"../../../Commons/HttpServer/AttributeRouting/Params\";\nimport { httpReturn } from \"../../../Commons/HttpServer/AttributeRouting/Results\";\nimport { SingletonController } from \"../../../Commons/HttpServer/ExpressWrapper/SingletonController\";\nimport { WellKnownDirectories } from \"../../../../../Common/WellKnownDirectories\";\n\nimport { globToRegexp } from \"./GlobToRegexp\";\n\nexport class BuildServerBackendResourcesUpdatesController extends SingletonController {\n private lastUpdateTime = 0;\n private readonly updateMonitor: Monitor = new Monitor();\n private farmWatchers?: FSWatcher[];\n private formWatchers?: FSWatcher[];\n private readonly resourcesWatcher?: FSWatcher;\n private readonly allFarmConfig: FarmConfig[];\n private readonly farmWatchingRegexps = [\n \"sugarTemplates\",\n \"legacyfetchfunctions\",\n \"jsHelpers\",\n `images`,\n \"tour\",\n \"controls\",\n \"commonResources\",\n \"externalConverters\",\n ].map(globToRegexp);\n private readonly formsWatchingRegexps = [\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/schemas`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/converters`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/mergers`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/autocalc`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/validations`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/fetchfunctions`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/helpers`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/${WellKnownDirectories.FormJsonFileName}`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/sugar`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/normalize`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/unmap`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/map`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/patch`,\n ].map(globToRegexp);\n\n public constructor(allFarmConfig: FarmConfig[]) {\n super();\n this.allFarmConfig = allFarmConfig;\n this.lastUpdateTime = Date.now();\n }\n\n public async beforeStart(): Promise<void> {\n this.farmWatchers = this.allFarmConfig.map(config =>\n // @ts-ignore\n watch(\n config.farmDirectory,\n { recursive: true },\n _.debounce((x: string, y: string) => this.handleFarmFSUpdate(x, y, config.farmDirectory), 200)\n )\n );\n this.formWatchers = this.allFarmConfig.map(config => {\n const formRootDirectory = path.normalize(\n path.join(config.farmDirectory, \"..\", WellKnownDirectories.FormsDirectory)\n );\n\n // @ts-ignore\n return watch(\n formRootDirectory,\n { recursive: true },\n _.debounce((x: string, y: string) => this.handleFormFSUpdate(x, y, formRootDirectory), 200)\n );\n });\n }\n\n @httpGet(\n \"/updates-observer/check-last-update-long-poll\",\n httpReturn.PlainText,\n httpQueryParam(\"prevLastUpdate\", httpType.Number)\n )\n public async getLastUpdateTime(prevLastUpdateTime?: number): Promise<string> {\n return this.lastUpdateTime.toString();\n }\n\n public async afterStop(): Promise<void> {\n this.farmWatchers?.map(i => i.close());\n this.formWatchers?.map(i => i.close());\n this.resourcesWatcher?.close();\n }\n\n private readonly handleFarmFSUpdate = (eventType: string, filePath: string, rootDir: string) => {\n if (this.farmWatchingRegexps.some(x => x.test(filePath))) {\n stat(path.join(rootDir, filePath), (err, fileStat) => {\n const fileTicks = Math.max(fileStat.mtimeMs, fileStat.ctimeMs);\n if (fileTicks > this.lastUpdateTime) {\n this.lastUpdateTime = Date.now();\n this.updateMonitor.pulseAll();\n }\n });\n }\n };\n\n private readonly handleFormFSUpdate = (eventType: string, filePath: string, rootDir: string) => {\n if (this.formsWatchingRegexps.some(x => x.test(filePath))) {\n stat(path.join(rootDir, filePath), (err, fileStat) => {\n const fileTicks = Math.max(fileStat.mtimeMs, fileStat.ctimeMs);\n if (fileTicks > this.lastUpdateTime) {\n this.lastUpdateTime = Date.now();\n this.updateMonitor.pulseAll();\n }\n });\n }\n };\n}\n\nclass Monitor {\n private awaiters: Array<() => void> = [];\n\n public wait(): Promise<void> {\n return new Promise(this.waitPromiseHandler);\n }\n\n public pulseAll(): void {\n const awaiters = [...this.awaiters];\n this.awaiters = [];\n for (const awaiter of awaiters) {\n awaiter();\n }\n }\n\n private readonly waitPromiseHandler = (resolve: () => void) => {\n this.awaiters.push(resolve);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"BuildServerBackendResourcesUpdatesController.js","names":["_fs","require","_path","_interopRequireDefault","_lodash","_Methods","_Params","_Results","_SingletonController","_WellKnownDirectories","_GlobToRegexp","_dec","_class","BuildServerBackendResourcesUpdatesController","exports","httpGet","httpReturn","PlainText","httpQueryParam","httpType","Number","SingletonController","constructor","allFarmConfig","lastUpdateTime","updateMonitor","Monitor","farmWatchers","formWatchers","resourcesWatcher","farmWatchingRegexps","map","globToRegexp","formsWatchingRegexps","WellKnownDirectories","CandySubdirectoryName","FormJsonFileName","handleFarmFSUpdate","eventType","filePath","rootDir","some","x","test","stat","path","join","err","fileStat","fileTicks","Math","max","mtimeMs","ctimeMs","Date","now","pulseAll","handleFormFSUpdate","beforeStart","config","watch","farmDirectory","recursive","_","debounce","y","formRootDirectory","normalize","FormsDirectory","getLastUpdateTime","prevLastUpdateTime","toString","afterStop","_this$farmWatchers","_this$formWatchers","_this$resourcesWatche","i","close","_applyDecoratedDescriptor2","default","prototype","Object","getOwnPropertyDescriptor","awaiters","waitPromiseHandler","resolve","push","wait","Promise","awaiter"],"sources":["../../../../../../src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.ts"],"sourcesContent":["import { FSWatcher, watch, stat } from \"fs\";\nimport path from \"path\";\n\nimport _ from \"lodash\";\nimport { FarmConfig } from \"Tools/src/CandyCLI\";\n\nimport { httpGet } from \"../../../Commons/HttpServer/AttributeRouting/Methods\";\nimport { httpQueryParam, httpType } from \"../../../Commons/HttpServer/AttributeRouting/Params\";\nimport { httpReturn } from \"../../../Commons/HttpServer/AttributeRouting/Results\";\nimport { SingletonController } from \"../../../Commons/HttpServer/ExpressWrapper/SingletonController\";\nimport { WellKnownDirectories } from \"../../../../../Common/WellKnownDirectories\";\n\nimport { globToRegexp } from \"./GlobToRegexp\";\n\nexport class BuildServerBackendResourcesUpdatesController extends SingletonController {\n private lastUpdateTime = 0;\n private readonly updateMonitor: Monitor = new Monitor();\n private farmWatchers?: FSWatcher[];\n private formWatchers?: FSWatcher[];\n private readonly resourcesWatcher?: FSWatcher;\n private readonly allFarmConfig: FarmConfig[];\n private readonly farmWatchingRegexps = [\n \"sugarTemplates\",\n \"legacyfetchfunctions\",\n \"jsHelpers\",\n `images`,\n \"tour\",\n \"controls\",\n \"commonResources\",\n \"externalConverters\",\n ].map(globToRegexp);\n private readonly formsWatchingRegexps = [\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/schemas`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/converters`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/mergers`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/autocalc`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/validations`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/fetchfunctions`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/helpers`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/${WellKnownDirectories.FormJsonFileName}`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/sugar`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/normalize`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/normalizers`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/unmap`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/map`,\n `**/**/**/${WellKnownDirectories.CandySubdirectoryName}/patch`,\n ].map(globToRegexp);\n\n public constructor(allFarmConfig: FarmConfig[]) {\n super();\n this.allFarmConfig = allFarmConfig;\n this.lastUpdateTime = Date.now();\n }\n\n public async beforeStart(): Promise<void> {\n this.farmWatchers = this.allFarmConfig.map(config =>\n // @ts-ignore\n watch(\n config.farmDirectory,\n { recursive: true },\n _.debounce((x: string, y: string) => this.handleFarmFSUpdate(x, y, config.farmDirectory), 200)\n )\n );\n this.formWatchers = this.allFarmConfig.map(config => {\n const formRootDirectory = path.normalize(\n path.join(config.farmDirectory, \"..\", WellKnownDirectories.FormsDirectory)\n );\n\n // @ts-ignore\n return watch(\n formRootDirectory,\n { recursive: true },\n _.debounce((x: string, y: string) => this.handleFormFSUpdate(x, y, formRootDirectory), 200)\n );\n });\n }\n\n @httpGet(\n \"/updates-observer/check-last-update-long-poll\",\n httpReturn.PlainText,\n httpQueryParam(\"prevLastUpdate\", httpType.Number)\n )\n public async getLastUpdateTime(prevLastUpdateTime?: number): Promise<string> {\n return this.lastUpdateTime.toString();\n }\n\n public async afterStop(): Promise<void> {\n this.farmWatchers?.map(i => i.close());\n this.formWatchers?.map(i => i.close());\n this.resourcesWatcher?.close();\n }\n\n private readonly handleFarmFSUpdate = (eventType: string, filePath: string, rootDir: string) => {\n if (this.farmWatchingRegexps.some(x => x.test(filePath))) {\n stat(path.join(rootDir, filePath), (err, fileStat) => {\n const fileTicks = Math.max(fileStat.mtimeMs, fileStat.ctimeMs);\n if (fileTicks > this.lastUpdateTime) {\n this.lastUpdateTime = Date.now();\n this.updateMonitor.pulseAll();\n }\n });\n }\n };\n\n private readonly handleFormFSUpdate = (eventType: string, filePath: string, rootDir: string) => {\n if (this.formsWatchingRegexps.some(x => x.test(filePath))) {\n stat(path.join(rootDir, filePath), (err, fileStat) => {\n const fileTicks = Math.max(fileStat.mtimeMs, fileStat.ctimeMs);\n if (fileTicks > this.lastUpdateTime) {\n this.lastUpdateTime = Date.now();\n this.updateMonitor.pulseAll();\n }\n });\n }\n };\n}\n\nclass Monitor {\n private awaiters: Array<() => void> = [];\n\n public wait(): Promise<void> {\n return new Promise(this.waitPromiseHandler);\n }\n\n public pulseAll(): void {\n const awaiters = [...this.awaiters];\n this.awaiters = [];\n for (const awaiter of awaiters) {\n awaiter();\n }\n }\n\n private readonly waitPromiseHandler = (resolve: () => void) => {\n this.awaiters.push(resolve);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -147,7 +147,7 @@ class BuildFormDevServer {
|
|
|
147
147
|
}).attach(async fi => (0, _AcquireFormGenerator.generatorFactory)(fi.generatorSource, this.candyModulesDirectory, false, undefined), async (fi, y) => ({
|
|
148
148
|
...fi,
|
|
149
149
|
generator: y
|
|
150
|
-
}), async fi => (0, _AcquireFormGenerator.getGeneratorSourceKey)(fi.generatorSource)).attach(async fi => _Observe.Observe.files(fi.formSourcesPath, "../../controls/**/generator/*", "schemas/**/*", "sugar/**/*", "controls/**/*", "autocalc/**/*", "helpers/**/*", "validations/**/*", "localization/**/*")).do(async fi => {
|
|
150
|
+
}), async fi => (0, _AcquireFormGenerator.getGeneratorSourceKey)(fi.generatorSource)).attach(async fi => _Observe.Observe.files(fi.formSourcesPath, "../../controls/**/generator/*", "schemas/**/*", "sugar/**/*", "controls/**/*", "autocalc/**/*", "helpers/**/*", "normalizers/**/*", "validations/**/*", "localization/**/*")).do(async fi => {
|
|
151
151
|
try {
|
|
152
152
|
const FormsDirWithHlPath = this.farmConfigArray.find(i => i.farmDirectory == farmDirectory);
|
|
153
153
|
if (FormsDirWithHlPath == undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildFormDevServer.js","names":["path","_interopRequireWildcard","require","_stream","_https","_nodeFetch","_interopRequireDefault","_pLimit","_fsExtra","_GenerateForm","_AcquireFormGenerator","_PublishedVersionUtils","_ResolveFormInfo","_AsyncUtils","_Observe","_FsUtils","_FormPathUtils","_TypingUtils","_WellKnownDirectories","_ReportGeneratorErrorToPageBody","_RunFormCompilationViaWebpackDevServer","_WebpackHybridFileSystem","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","buildGfvToPathMap","repositoryRoots","result","Map","repositoryRoot","formPaths","globAsync","WellKnownDirectories","CandySubdirectoryName","cwd","formPath","gfv","extractGfvFromFormPath","join","BuildFormDevServer","constructor","port","allFarmConfig","candyModulesDirectory","farmConfigArray","useGeneratorFromLocalSources","engineDirectory","buildDebugOnly","skipCodeReformatting","nightly","farmDirectory","startParallelLimit","generateChain","webpackDevServerStarted","webpackHybridFileSystem","gfvPaths","undefined","pLimit","findFormPath","_this$gfvPaths","map","x","_this$gfvPaths$get","reject","normalize","formDirPath","allPossibleFilePath","pth","pathExists","Error","writeErrorInEntryAndShowInBrowser","_this$webpackHybridFi","formEntryPointPath","writeBatch","getReportGeneratorErrorToPageBodyScript","formatError","start","WebpackHybridFileSystem","Observe","file","FormJsonFileName","transform","formJsonFile","resolveFormInfo","generatorSource","resolveLocalGeneratorSource","engineSource","resolveLocalEngineSource","generatorVersion","engineVersion","resolveGeneratorVersion","resolveEngineVersion","attach","fi","generatorFactory","y","generator","getGeneratorSourceKey","files","formSourcesPath","do","FormsDirWithHlPath","find","generateForm","hlFarmDirectoryPath","resourcesHash","observe","runFormCompilationViaWebpackDevServer","getGeneratedFileAsStream","filename","delay","resultFileName","GeneratedFormSubdirectory","_this$webpackHybridFi2","statSync","Promise","resolve","_this$webpackHybridFi3","readFile","error","data","Readable","from","getFileAsStream","response","fetch","method","agent","Agent","rejectUnauthorized","compress","status","textResponse","text","buffer","stack","exports"],"sources":["../../../../../../../src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.ts"],"sourcesContent":["import * as path from \"path\";\nimport { Readable } from \"stream\";\nimport { Agent } from \"https\";\n\nimport fetch from \"node-fetch\";\nimport pLimit, { Limit } from \"p-limit\";\nimport { FarmConfig } from \"Tools/src/CandyCLI\";\nimport { pathExists } from \"fs-extra\";\n\nimport { generateForm } from \"../../../../BuildTasks/Form/GenerateForm\";\nimport { generatorFactory, getGeneratorSourceKey } from \"../../../../BuildTasks/Generator/AcquireFormGenerator\";\nimport {\n resolveEngineVersion,\n resolveGeneratorVersion,\n resolveLocalEngineSource,\n resolveLocalGeneratorSource,\n} from \"../../../../BuildTasks/PublishedVersionUtils\";\nimport { resolveFormInfo } from \"../../../../BuildTasks/ResolveFormInfo\";\nimport { delay } from \"../../../../../../Common/AsyncUtils\";\nimport { ReasonOrError } from \"../../../../Commons/ErrorUntyped\";\nimport { ChainableValueProducer } from \"../../../../Commons/TasksCore/ChainableValueProducer\";\nimport { Observe } from \"../../../../Commons/TasksCore/Observe\";\nimport { globAsync } from \"../../../../Commons/FsUtils\";\nimport { extractGfvFromFormPath } from \"../../../../../../Common/FormPathUtils\";\nimport { reject } from \"../../../../../../Common/TypingUtils\";\nimport { WellKnownDirectories } from \"../../../../../../Common/WellKnownDirectories\";\n\nimport { getReportGeneratorErrorToPageBodyScript } from \"./ReportGeneratorErrorToPageBody\";\nimport { runFormCompilationViaWebpackDevServer } from \"./RunFormCompilationViaWebpackDevServer\";\nimport { WebpackHybridFileSystem } from \"./WebpackInMemoryUtils/WebpackHybridFileSystem\";\n\nasync function buildGfvToPathMap(repositoryRoots: string[]): Promise<Map<string, string>> {\n const result = new Map<string, string>();\n\n for (const repositoryRoot of repositoryRoots) {\n const formPaths = await globAsync(`forms/**/*/${WellKnownDirectories.CandySubdirectoryName}`, {\n cwd: repositoryRoot,\n });\n for (const formPath of formPaths) {\n const gfv = extractGfvFromFormPath(formPath);\n result.set(gfv, path.join(repositoryRoot, formPath));\n }\n }\n\n return result;\n}\n\nexport class BuildFormDevServer {\n private readonly port: number;\n private readonly allFarmConfig: string[];\n private readonly gfv: string;\n private readonly candyModulesDirectory: string;\n private farmDirectory: string;\n private formPath: string;\n private readonly farmConfigArray: FarmConfig[];\n private readonly startParallelLimit: Limit;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private generateChain?: ChainableValueProducer<any>;\n private webpackDevServerStarted = false;\n private readonly useGeneratorFromLocalSources: boolean;\n private readonly engineDirectory: string;\n private readonly nightly: boolean;\n private readonly buildDebugOnly: boolean;\n private readonly skipCodeReformatting: boolean;\n private webpackHybridFileSystem?: WebpackHybridFileSystem;\n private gfvPaths: undefined | Map<string, string> = undefined;\n\n public constructor(\n port: number,\n allFarmConfig: string[],\n gfv: string,\n candyModulesDirectory: string,\n farmConfigArray: FarmConfig[],\n useGeneratorFromLocalSources: boolean,\n engineDirectory: string,\n buildDebugOnly: boolean,\n skipCodeReformatting: boolean,\n nightly: boolean\n ) {\n this.port = port;\n this.allFarmConfig = allFarmConfig;\n this.gfv = gfv;\n this.candyModulesDirectory = candyModulesDirectory;\n this.farmConfigArray = farmConfigArray;\n this.startParallelLimit = pLimit(1);\n this.useGeneratorFromLocalSources = useGeneratorFromLocalSources;\n this.engineDirectory = engineDirectory;\n this.buildDebugOnly = buildDebugOnly;\n this.skipCodeReformatting = skipCodeReformatting;\n this.nightly = nightly;\n this.farmDirectory = \"\";\n this.formPath = \"\";\n }\n\n private async findFormPath(gfv: string): Promise<{ formPath: string; farmDirectory: string }> {\n this.gfvPaths = this.gfvPaths ?? (await buildGfvToPathMap(this.allFarmConfig.map(x => path.join(x, \"..\"))));\n\n if (this.gfvPaths.has(gfv)) {\n const formPath = this.gfvPaths.get(gfv) ?? reject();\n return {\n formPath: formPath ?? reject(),\n farmDirectory: path.normalize(path.join(formPath, \"..\", \"..\", \"..\", \"..\", \"..\", \"candy.farm\")),\n };\n }\n\n let farmDirectory: string | undefined;\n let formDirPath = \"\";\n\n const allPossibleFilePath = this.allFarmConfig.map(i => path.join(i, \"forms\", this.gfv));\n for (const pth of allPossibleFilePath) {\n if (await pathExists(pth)) {\n formDirPath = pth;\n farmDirectory = path.join(pth, \"..\", \"..\");\n break;\n }\n }\n\n if (formDirPath === \"\") {\n throw Error(\"formDirPath not found\");\n }\n if (farmDirectory == undefined || !(await pathExists(farmDirectory))) {\n throw Error(`FarmDirectory = ${this.farmDirectory} not exist`);\n }\n return {\n formPath: formDirPath,\n farmDirectory: farmDirectory,\n };\n }\n\n private async writeErrorInEntryAndShowInBrowser(e: unknown) {\n const formEntryPointPath = path.join(this.formPath, \"form\", \"web.js\");\n await this.webpackHybridFileSystem?.writeBatch({\n [formEntryPointPath]: getReportGeneratorErrorToPageBodyScript(this.formatError(e)),\n });\n }\n\n public start(): Promise<void> {\n return this.startParallelLimit(async () => {\n if (this.generateChain != undefined) {\n return;\n }\n\n const { formPath, farmDirectory } = await this.findFormPath(this.gfv);\n this.farmDirectory = farmDirectory;\n this.formPath = formPath;\n this.webpackHybridFileSystem = new WebpackHybridFileSystem(path.join(this.formPath, \"form\"));\n\n this.generateChain = Observe.file(path.join(this.formPath, WellKnownDirectories.FormJsonFileName))\n .transform(formJsonFile =>\n resolveFormInfo(\n formJsonFile,\n this.formPath,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n this.nightly\n )\n )\n .transform(async x => {\n if (this.useGeneratorFromLocalSources) {\n return {\n ...x,\n generatorSource: resolveLocalGeneratorSource(this.engineDirectory),\n engineSource: resolveLocalEngineSource(this.engineDirectory),\n };\n } else {\n if (x.generatorVersion == undefined) {\n throw new Error(\"generatorVersion is no defined\");\n }\n if (x.engineVersion == undefined) {\n throw new Error(\"engineVersion is no defined\");\n }\n return {\n ...x,\n generatorSource: await resolveGeneratorVersion(x.generatorVersion),\n engineSource: await resolveEngineVersion(x.engineVersion),\n };\n }\n })\n .attach(\n async fi => generatorFactory(fi.generatorSource, this.candyModulesDirectory, false, undefined),\n async (fi, y) => ({ ...fi, generator: y }),\n async fi => getGeneratorSourceKey(fi.generatorSource)\n )\n .attach(async fi =>\n Observe.files(\n fi.formSourcesPath,\n \"../../controls/**/generator/*\",\n \"schemas/**/*\",\n \"sugar/**/*\",\n \"controls/**/*\",\n \"autocalc/**/*\",\n \"helpers/**/*\",\n \"validations/**/*\",\n \"localization/**/*\"\n )\n )\n .do(async fi => {\n try {\n const FormsDirWithHlPath = this.farmConfigArray.find(i => i.farmDirectory == farmDirectory);\n if (FormsDirWithHlPath == undefined) {\n throw Error(\"FormsDirWithHlPath === undefined\");\n }\n await generateForm(\n fi.formSourcesPath,\n this.farmDirectory,\n FormsDirWithHlPath.hlFarmDirectoryPath,\n fi.generator,\n undefined,\n {\n skipCodeReformatting: this.skipCodeReformatting,\n resourcesHash: \"local-hash\",\n },\n this.webpackHybridFileSystem\n );\n } catch (e) {\n await this.writeErrorInEntryAndShowInBrowser(e);\n }\n });\n try {\n await this.generateChain.observe();\n } catch (e) {\n await this.writeErrorInEntryAndShowInBrowser(e);\n }\n\n await runFormCompilationViaWebpackDevServer(\n this.gfv,\n this.farmDirectory,\n this.formPath,\n path.join(this.farmDirectory, \"res\"),\n \"local-hash\",\n this.buildDebugOnly,\n this.webpackHybridFileSystem,\n this.port\n );\n this.webpackDevServerStarted = true;\n });\n }\n\n public async getGeneratedFileAsStream(filename: string): Promise<NodeJS.ReadableStream> {\n while (!this.webpackDevServerStarted) {\n await delay(500);\n }\n let resultFileName = \"\";\n const formPath = await this.findFormPath(this.gfv);\n const allPossibleFilePath = [\n path.join(formPath.formPath, WellKnownDirectories.GeneratedFormSubdirectory, filename),\n ];\n for (const pth of allPossibleFilePath) {\n try {\n if (this.webpackHybridFileSystem?.statSync(pth)) {\n resultFileName = pth;\n break;\n }\n } catch (e) {\n continue;\n }\n }\n if (resultFileName === \"\") {\n throw Error(`getGeneratedFileAsStream ${filename} not found`);\n }\n\n return new Promise((resolve, r) => {\n this.webpackHybridFileSystem?.readFile(resultFileName, \"utf-8\", (error, data) => {\n if (error) {\n r(error);\n } else {\n resolve(Readable.from([data]));\n }\n });\n });\n }\n\n public async getFileAsStream(filename: string): Promise<NodeJS.ReadableStream> {\n while (!this.webpackDevServerStarted) {\n await delay(500);\n }\n const response = await fetch(`https://localhost:${this.port}/${filename}`, {\n method: \"GET\",\n agent: new Agent({ rejectUnauthorized: false }),\n compress: true,\n });\n if (response.status != 200) {\n const textResponse = await response.text();\n throw new Error(textResponse);\n }\n const buffer = await response.buffer();\n return Readable.from(buffer);\n }\n\n private formatError(e: ReasonOrError): string {\n if (e instanceof Error) {\n return `${e}\\n${e.stack}`;\n }\n return `${e}`;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"BuildFormDevServer.js","names":["path","_interopRequireWildcard","require","_stream","_https","_nodeFetch","_interopRequireDefault","_pLimit","_fsExtra","_GenerateForm","_AcquireFormGenerator","_PublishedVersionUtils","_ResolveFormInfo","_AsyncUtils","_Observe","_FsUtils","_FormPathUtils","_TypingUtils","_WellKnownDirectories","_ReportGeneratorErrorToPageBody","_RunFormCompilationViaWebpackDevServer","_WebpackHybridFileSystem","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","buildGfvToPathMap","repositoryRoots","result","Map","repositoryRoot","formPaths","globAsync","WellKnownDirectories","CandySubdirectoryName","cwd","formPath","gfv","extractGfvFromFormPath","join","BuildFormDevServer","constructor","port","allFarmConfig","candyModulesDirectory","farmConfigArray","useGeneratorFromLocalSources","engineDirectory","buildDebugOnly","skipCodeReformatting","nightly","farmDirectory","startParallelLimit","generateChain","webpackDevServerStarted","webpackHybridFileSystem","gfvPaths","undefined","pLimit","findFormPath","_this$gfvPaths","map","x","_this$gfvPaths$get","reject","normalize","formDirPath","allPossibleFilePath","pth","pathExists","Error","writeErrorInEntryAndShowInBrowser","_this$webpackHybridFi","formEntryPointPath","writeBatch","getReportGeneratorErrorToPageBodyScript","formatError","start","WebpackHybridFileSystem","Observe","file","FormJsonFileName","transform","formJsonFile","resolveFormInfo","generatorSource","resolveLocalGeneratorSource","engineSource","resolveLocalEngineSource","generatorVersion","engineVersion","resolveGeneratorVersion","resolveEngineVersion","attach","fi","generatorFactory","y","generator","getGeneratorSourceKey","files","formSourcesPath","do","FormsDirWithHlPath","find","generateForm","hlFarmDirectoryPath","resourcesHash","observe","runFormCompilationViaWebpackDevServer","getGeneratedFileAsStream","filename","delay","resultFileName","GeneratedFormSubdirectory","_this$webpackHybridFi2","statSync","Promise","resolve","_this$webpackHybridFi3","readFile","error","data","Readable","from","getFileAsStream","response","fetch","method","agent","Agent","rejectUnauthorized","compress","status","textResponse","text","buffer","stack","exports"],"sources":["../../../../../../../src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.ts"],"sourcesContent":["import * as path from \"path\";\nimport { Readable } from \"stream\";\nimport { Agent } from \"https\";\n\nimport fetch from \"node-fetch\";\nimport pLimit, { Limit } from \"p-limit\";\nimport { FarmConfig } from \"Tools/src/CandyCLI\";\nimport { pathExists } from \"fs-extra\";\n\nimport { generateForm } from \"../../../../BuildTasks/Form/GenerateForm\";\nimport { generatorFactory, getGeneratorSourceKey } from \"../../../../BuildTasks/Generator/AcquireFormGenerator\";\nimport {\n resolveEngineVersion,\n resolveGeneratorVersion,\n resolveLocalEngineSource,\n resolveLocalGeneratorSource,\n} from \"../../../../BuildTasks/PublishedVersionUtils\";\nimport { resolveFormInfo } from \"../../../../BuildTasks/ResolveFormInfo\";\nimport { delay } from \"../../../../../../Common/AsyncUtils\";\nimport { ReasonOrError } from \"../../../../Commons/ErrorUntyped\";\nimport { ChainableValueProducer } from \"../../../../Commons/TasksCore/ChainableValueProducer\";\nimport { Observe } from \"../../../../Commons/TasksCore/Observe\";\nimport { globAsync } from \"../../../../Commons/FsUtils\";\nimport { extractGfvFromFormPath } from \"../../../../../../Common/FormPathUtils\";\nimport { reject } from \"../../../../../../Common/TypingUtils\";\nimport { WellKnownDirectories } from \"../../../../../../Common/WellKnownDirectories\";\n\nimport { getReportGeneratorErrorToPageBodyScript } from \"./ReportGeneratorErrorToPageBody\";\nimport { runFormCompilationViaWebpackDevServer } from \"./RunFormCompilationViaWebpackDevServer\";\nimport { WebpackHybridFileSystem } from \"./WebpackInMemoryUtils/WebpackHybridFileSystem\";\n\nasync function buildGfvToPathMap(repositoryRoots: string[]): Promise<Map<string, string>> {\n const result = new Map<string, string>();\n\n for (const repositoryRoot of repositoryRoots) {\n const formPaths = await globAsync(`forms/**/*/${WellKnownDirectories.CandySubdirectoryName}`, {\n cwd: repositoryRoot,\n });\n for (const formPath of formPaths) {\n const gfv = extractGfvFromFormPath(formPath);\n result.set(gfv, path.join(repositoryRoot, formPath));\n }\n }\n\n return result;\n}\n\nexport class BuildFormDevServer {\n private readonly port: number;\n private readonly allFarmConfig: string[];\n private readonly gfv: string;\n private readonly candyModulesDirectory: string;\n private farmDirectory: string;\n private formPath: string;\n private readonly farmConfigArray: FarmConfig[];\n private readonly startParallelLimit: Limit;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private generateChain?: ChainableValueProducer<any>;\n private webpackDevServerStarted = false;\n private readonly useGeneratorFromLocalSources: boolean;\n private readonly engineDirectory: string;\n private readonly nightly: boolean;\n private readonly buildDebugOnly: boolean;\n private readonly skipCodeReformatting: boolean;\n private webpackHybridFileSystem?: WebpackHybridFileSystem;\n private gfvPaths: undefined | Map<string, string> = undefined;\n\n public constructor(\n port: number,\n allFarmConfig: string[],\n gfv: string,\n candyModulesDirectory: string,\n farmConfigArray: FarmConfig[],\n useGeneratorFromLocalSources: boolean,\n engineDirectory: string,\n buildDebugOnly: boolean,\n skipCodeReformatting: boolean,\n nightly: boolean\n ) {\n this.port = port;\n this.allFarmConfig = allFarmConfig;\n this.gfv = gfv;\n this.candyModulesDirectory = candyModulesDirectory;\n this.farmConfigArray = farmConfigArray;\n this.startParallelLimit = pLimit(1);\n this.useGeneratorFromLocalSources = useGeneratorFromLocalSources;\n this.engineDirectory = engineDirectory;\n this.buildDebugOnly = buildDebugOnly;\n this.skipCodeReformatting = skipCodeReformatting;\n this.nightly = nightly;\n this.farmDirectory = \"\";\n this.formPath = \"\";\n }\n\n private async findFormPath(gfv: string): Promise<{ formPath: string; farmDirectory: string }> {\n this.gfvPaths = this.gfvPaths ?? (await buildGfvToPathMap(this.allFarmConfig.map(x => path.join(x, \"..\"))));\n\n if (this.gfvPaths.has(gfv)) {\n const formPath = this.gfvPaths.get(gfv) ?? reject();\n return {\n formPath: formPath ?? reject(),\n farmDirectory: path.normalize(path.join(formPath, \"..\", \"..\", \"..\", \"..\", \"..\", \"candy.farm\")),\n };\n }\n\n let farmDirectory: string | undefined;\n let formDirPath = \"\";\n\n const allPossibleFilePath = this.allFarmConfig.map(i => path.join(i, \"forms\", this.gfv));\n for (const pth of allPossibleFilePath) {\n if (await pathExists(pth)) {\n formDirPath = pth;\n farmDirectory = path.join(pth, \"..\", \"..\");\n break;\n }\n }\n\n if (formDirPath === \"\") {\n throw Error(\"formDirPath not found\");\n }\n if (farmDirectory == undefined || !(await pathExists(farmDirectory))) {\n throw Error(`FarmDirectory = ${this.farmDirectory} not exist`);\n }\n return {\n formPath: formDirPath,\n farmDirectory: farmDirectory,\n };\n }\n\n private async writeErrorInEntryAndShowInBrowser(e: unknown) {\n const formEntryPointPath = path.join(this.formPath, \"form\", \"web.js\");\n await this.webpackHybridFileSystem?.writeBatch({\n [formEntryPointPath]: getReportGeneratorErrorToPageBodyScript(this.formatError(e)),\n });\n }\n\n public start(): Promise<void> {\n return this.startParallelLimit(async () => {\n if (this.generateChain != undefined) {\n return;\n }\n\n const { formPath, farmDirectory } = await this.findFormPath(this.gfv);\n this.farmDirectory = farmDirectory;\n this.formPath = formPath;\n this.webpackHybridFileSystem = new WebpackHybridFileSystem(path.join(this.formPath, \"form\"));\n\n this.generateChain = Observe.file(path.join(this.formPath, WellKnownDirectories.FormJsonFileName))\n .transform(formJsonFile =>\n resolveFormInfo(\n formJsonFile,\n this.formPath,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n this.nightly\n )\n )\n .transform(async x => {\n if (this.useGeneratorFromLocalSources) {\n return {\n ...x,\n generatorSource: resolveLocalGeneratorSource(this.engineDirectory),\n engineSource: resolveLocalEngineSource(this.engineDirectory),\n };\n } else {\n if (x.generatorVersion == undefined) {\n throw new Error(\"generatorVersion is no defined\");\n }\n if (x.engineVersion == undefined) {\n throw new Error(\"engineVersion is no defined\");\n }\n return {\n ...x,\n generatorSource: await resolveGeneratorVersion(x.generatorVersion),\n engineSource: await resolveEngineVersion(x.engineVersion),\n };\n }\n })\n .attach(\n async fi => generatorFactory(fi.generatorSource, this.candyModulesDirectory, false, undefined),\n async (fi, y) => ({ ...fi, generator: y }),\n async fi => getGeneratorSourceKey(fi.generatorSource)\n )\n .attach(async fi =>\n Observe.files(\n fi.formSourcesPath,\n \"../../controls/**/generator/*\",\n \"schemas/**/*\",\n \"sugar/**/*\",\n \"controls/**/*\",\n \"autocalc/**/*\",\n \"helpers/**/*\",\n \"normalizers/**/*\",\n \"validations/**/*\",\n \"localization/**/*\"\n )\n )\n .do(async fi => {\n try {\n const FormsDirWithHlPath = this.farmConfigArray.find(i => i.farmDirectory == farmDirectory);\n if (FormsDirWithHlPath == undefined) {\n throw Error(\"FormsDirWithHlPath === undefined\");\n }\n await generateForm(\n fi.formSourcesPath,\n this.farmDirectory,\n FormsDirWithHlPath.hlFarmDirectoryPath,\n fi.generator,\n undefined,\n {\n skipCodeReformatting: this.skipCodeReformatting,\n resourcesHash: \"local-hash\",\n },\n this.webpackHybridFileSystem\n );\n } catch (e) {\n await this.writeErrorInEntryAndShowInBrowser(e);\n }\n });\n try {\n await this.generateChain.observe();\n } catch (e) {\n await this.writeErrorInEntryAndShowInBrowser(e);\n }\n\n await runFormCompilationViaWebpackDevServer(\n this.gfv,\n this.farmDirectory,\n this.formPath,\n path.join(this.farmDirectory, \"res\"),\n \"local-hash\",\n this.buildDebugOnly,\n this.webpackHybridFileSystem,\n this.port\n );\n this.webpackDevServerStarted = true;\n });\n }\n\n public async getGeneratedFileAsStream(filename: string): Promise<NodeJS.ReadableStream> {\n while (!this.webpackDevServerStarted) {\n await delay(500);\n }\n let resultFileName = \"\";\n const formPath = await this.findFormPath(this.gfv);\n const allPossibleFilePath = [\n path.join(formPath.formPath, WellKnownDirectories.GeneratedFormSubdirectory, filename),\n ];\n for (const pth of allPossibleFilePath) {\n try {\n if (this.webpackHybridFileSystem?.statSync(pth)) {\n resultFileName = pth;\n break;\n }\n } catch (e) {\n continue;\n }\n }\n if (resultFileName === \"\") {\n throw Error(`getGeneratedFileAsStream ${filename} not found`);\n }\n\n return new Promise((resolve, r) => {\n this.webpackHybridFileSystem?.readFile(resultFileName, \"utf-8\", (error, data) => {\n if (error) {\n r(error);\n } else {\n resolve(Readable.from([data]));\n }\n });\n });\n }\n\n public async getFileAsStream(filename: string): Promise<NodeJS.ReadableStream> {\n while (!this.webpackDevServerStarted) {\n await delay(500);\n }\n const response = await fetch(`https://localhost:${this.port}/${filename}`, {\n method: \"GET\",\n agent: new Agent({ rejectUnauthorized: false }),\n compress: true,\n });\n if (response.status != 200) {\n const textResponse = await response.text();\n throw new Error(textResponse);\n }\n const buffer = await response.buffer();\n return Readable.from(buffer);\n }\n\n private formatError(e: ReasonOrError): string {\n if (e instanceof Error) {\n return `${e}\\n${e.stack}`;\n }\n return `${e}`;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|