@kontur.candy/tools 2.189.0 → 2.189.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"BuildServerBackendResourcesUpdatesController.js","names":["_fs","require","_path","_interopRequireDefault","_lodash","_AsyncUtils","_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","WellKnownDirectories","FormJsonFileName","map","globToRegexp","formsWatchingRegexps","CandySubdirectoryName","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","getLastUpdateTime","prevLastUpdateTime","undefined","toString","Promise","race","wait","delay","afterStop","_this$farmWatchers","_this$formWatchers","_this$resourcesWatche","i","close","_applyDecoratedDescriptor2","default","prototype","Object","getOwnPropertyDescriptor","awaiters","waitPromiseHandler","resolve","push","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 { delay } from \"../../../../../Common/AsyncUtils\";\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 \"forms/*/schemas/*.rng.xml\",\n \"forms/*/converters/*\",\n \"forms/*/mergers/*\",\n // NOTE Тут такое дело: почему-то иногда (иногда, то есть не всегда!), когда нам приходит запрос на\n // forms/*/presentations.json в этом классе возникает событие об измении этого файла и мы генерим очень много\n // лишних событий об измении ресурсов и CandyApi зависает. Я пока не смог разобраться почему это так.\n // \"forms/*/presentations.json\",\n `forms/*/${WellKnownDirectories.FormJsonFileName}`,\n \"forms/*/sugar/*.xml\",\n \"forms/*/normalize/*.xml\",\n \"forms/*/unmap/*.xml\",\n \"forms/*/map/*.xml\",\n \"forms/*/patch/*.xslt\",\n \"picklists/*\",\n ].map(globToRegexp);\n private readonly formsWatchingRegexps = [\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/schemas/*.rng.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/converters/*`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/mergers/*`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/presentations.json`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/${WellKnownDirectories.FormJsonFileName}`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/sugar/*.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/normalize/*.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/unmap/*.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/map/*.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/patch/*.xslt`,\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 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(path.join(config.farmDirectory, \"..\"));\n return watch(\n path.normalize(path.join(config.farmDirectory, \"..\")),\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 if (prevLastUpdateTime == undefined || prevLastUpdateTime < this.lastUpdateTime) {\n return this.lastUpdateTime.toString();\n }\n await Promise.race([this.updateMonitor.wait(), delay(60000)]);\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","_AsyncUtils","_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","WellKnownDirectories","FormJsonFileName","map","globToRegexp","formsWatchingRegexps","CandySubdirectoryName","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","undefined","toString","Promise","race","wait","delay","afterStop","_this$farmWatchers","_this$formWatchers","_this$resourcesWatche","i","close","_applyDecoratedDescriptor2","default","prototype","Object","getOwnPropertyDescriptor","awaiters","waitPromiseHandler","resolve","push","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 { delay } from \"../../../../../Common/AsyncUtils\";\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 \"forms/*/schemas/*.rng.xml\",\n \"forms/*/converters/*\",\n \"forms/*/mergers/*\",\n // NOTE Тут такое дело: почему-то иногда (иногда, то есть не всегда!), когда нам приходит запрос на\n // forms/*/presentations.json в этом классе возникает событие об измении этого файла и мы генерим очень много\n // лишних событий об измении ресурсов и CandyApi зависает. Я пока не смог разобраться почему это так.\n // \"forms/*/presentations.json\",\n `forms/*/${WellKnownDirectories.FormJsonFileName}`,\n \"forms/*/sugar/*.xml\",\n \"forms/*/normalize/*.xml\",\n \"forms/*/unmap/*.xml\",\n \"forms/*/map/*.xml\",\n \"forms/*/patch/*.xslt\",\n \"picklists/*\",\n ].map(globToRegexp);\n private readonly formsWatchingRegexps = [\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/schemas/*.rng.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/converters/*`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/mergers/*`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/presentations.json`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/${WellKnownDirectories.FormJsonFileName}`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/sugar/*.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/normalize/*.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/unmap/*.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/map/*.xml`,\n `forms/**/${WellKnownDirectories.CandySubdirectoryName}/patch/*.xslt`,\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 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 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 if (prevLastUpdateTime == undefined || prevLastUpdateTime < this.lastUpdateTime) {\n return this.lastUpdateTime.toString();\n }\n await Promise.race([this.updateMonitor.wait(), delay(60000)]);\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":";;;;;;;;AAAA,IAAAA,GAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AAGA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;AACA,IAAAQ,oBAAA,GAAAR,OAAA;AACA,IAAAS,qBAAA,GAAAT,OAAA;AAEA,IAAAU,aAAA,GAAAV,OAAA;AAA8C,IAAAW,IAAA,EAAAC,MAAA;AAAA,IAEjCC,4CAA4C,GAAAC,OAAA,CAAAD,4CAAA,IAAAF,IAAA,GA8DpD,IAAAI,gBAAO,EACJ,+CAA+C,EAC/CC,mBAAU,CAACC,SAAS,EACpB,IAAAC,sBAAc,EAAC,gBAAgB,EAAEC,gBAAQ,CAACC,MAAM,CACpD,CAAC,GAAAR,MAAA,GAlEE,MAAMC,4CAA4C,SAASQ,wCAAmB,CAAC;EAoC3EC,WAAWA,CAACC,aAA2B,EAAE;IAC5C,KAAK,CAAC,CAAC;IAAC,KApCJC,cAAc,GAAG,CAAC;IAAA,KACTC,aAAa,GAAY,IAAIC,OAAO,CAAC,CAAC;IAAA,KAC/CC,YAAY;IAAA,KACZC,YAAY;IAAA,KACHC,gBAAgB;IAAA,KAChBN,aAAa;IAAA,KACbO,mBAAmB,GAAG,CACnC,2BAA2B,EAC3B,sBAAsB,EACtB,mBAAmB;IACnB;IACA;IACA;IACA;IACA,WAAWC,0CAAoB,CAACC,gBAAgB,EAAE,EAClD,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,CAChB,CAACC,GAAG,CAACC,0BAAY,CAAC;IAAA,KACFC,oBAAoB,GAAG,CACpC,YAAYJ,0CAAoB,CAACK,qBAAqB,oBAAoB,EAC1E,YAAYL,0CAAoB,CAACK,qBAAqB,eAAe,EACrE,YAAYL,0CAAoB,CAACK,qBAAqB,YAAY,EAClE,YAAYL,0CAAoB,CAACK,qBAAqB,qBAAqB,EAC3E,YAAYL,0CAAoB,CAACK,qBAAqB,IAAIL,0CAAoB,CAACC,gBAAgB,EAAE,EACjG,YAAYD,0CAAoB,CAACK,qBAAqB,cAAc,EACpE,YAAYL,0CAAoB,CAACK,qBAAqB,kBAAkB,EACxE,YAAYL,0CAAoB,CAACK,qBAAqB,cAAc,EACpE,YAAYL,0CAAoB,CAACK,qBAAqB,YAAY,EAClE,YAAYL,0CAAoB,CAACK,qBAAqB,eAAe,CACxE,CAACH,GAAG,CAACC,0BAAY,CAAC;IAAA,KA+CFG,kBAAkB,GAAG,CAACC,SAAiB,EAAEC,QAAgB,EAAEC,OAAe,KAAK;MAC5F,IAAI,IAAI,CAACV,mBAAmB,CAACW,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,IAAI,CAACJ,QAAQ,CAAC,CAAC,EAAE;QACtD,IAAAK,QAAI,EAACC,aAAI,CAACC,IAAI,CAACN,OAAO,EAAED,QAAQ,CAAC,EAAE,CAACQ,GAAG,EAAEC,QAAQ,KAAK;UAClD,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAACH,QAAQ,CAACI,OAAO,EAAEJ,QAAQ,CAACK,OAAO,CAAC;UAC9D,IAAIJ,SAAS,GAAG,IAAI,CAACzB,cAAc,EAAE;YACjC,IAAI,CAACA,cAAc,GAAG8B,IAAI,CAACC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC9B,aAAa,CAAC+B,QAAQ,CAAC,CAAC;UACjC;QACJ,CAAC,CAAC;MACN;IACJ,CAAC;IAAA,KAEgBC,kBAAkB,GAAG,CAACnB,SAAiB,EAAEC,QAAgB,EAAEC,OAAe,KAAK;MAC5F,IAAI,IAAI,CAACL,oBAAoB,CAACM,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,IAAI,CAACJ,QAAQ,CAAC,CAAC,EAAE;QACvD,IAAAK,QAAI,EAACC,aAAI,CAACC,IAAI,CAACN,OAAO,EAAED,QAAQ,CAAC,EAAE,CAACQ,GAAG,EAAEC,QAAQ,KAAK;UAClD,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAACH,QAAQ,CAACI,OAAO,EAAEJ,QAAQ,CAACK,OAAO,CAAC;UAC9D,IAAIJ,SAAS,GAAG,IAAI,CAACzB,cAAc,EAAE;YACjC,IAAI,CAACA,cAAc,GAAG8B,IAAI,CAACC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC9B,aAAa,CAAC+B,QAAQ,CAAC,CAAC;UACjC;QACJ,CAAC,CAAC;MACN;IACJ,CAAC;IAjEG,IAAI,CAACjC,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,cAAc,GAAG8B,IAAI,CAACC,GAAG,CAAC,CAAC;EACpC;EAEA,MAAaG,WAAWA,CAAA,EAAkB;IACtC,IAAI,CAAC/B,YAAY,GAAG,IAAI,CAACJ,aAAa,CAACU,GAAG,CAAC0B,MAAM,IAC7C,IAAAC,SAAK,EACDD,MAAM,CAACE,aAAa,EACpB;MAAEC,SAAS,EAAE;IAAK,CAAC,EACnBC,eAAC,CAACC,QAAQ,CAAC,CAACtB,CAAS,EAAEuB,CAAS,KAAK,IAAI,CAAC5B,kBAAkB,CAACK,CAAC,EAAEuB,CAAC,EAAEN,MAAM,CAACE,aAAa,CAAC,EAAE,GAAG,CACjG,CACJ,CAAC;IACD,IAAI,CAACjC,YAAY,GAAG,IAAI,CAACL,aAAa,CAACU,GAAG,CAAC0B,MAAM,IAAI;MACjD,MAAMO,iBAAiB,GAAGrB,aAAI,CAACsB,SAAS,CACpCtB,aAAI,CAACC,IAAI,CAACa,MAAM,CAACE,aAAa,EAAE,IAAI,EAAE9B,0CAAoB,CAACqC,cAAc,CAC7E,CAAC;MACD,OAAO,IAAAR,SAAK,EACRM,iBAAiB,EACjB;QAAEJ,SAAS,EAAE;MAAK,CAAC,EACnBC,eAAC,CAACC,QAAQ,CAAC,CAACtB,CAAS,EAAEuB,CAAS,KAAK,IAAI,CAACR,kBAAkB,CAACf,CAAC,EAAEuB,CAAC,EAAEC,iBAAiB,CAAC,EAAE,GAAG,CAC9F,CAAC;IACL,CAAC,CAAC;EACN;EAEA,MAKaG,iBAAiBA,CAACC,kBAA2B,EAAmB;IACzE,IAAIA,kBAAkB,IAAIC,SAAS,IAAID,kBAAkB,GAAG,IAAI,CAAC9C,cAAc,EAAE;MAC7E,OAAO,IAAI,CAACA,cAAc,CAACgD,QAAQ,CAAC,CAAC;IACzC;IACA,MAAMC,OAAO,CAACC,IAAI,CAAC,CAAC,IAAI,CAACjD,aAAa,CAACkD,IAAI,CAAC,CAAC,EAAE,IAAAC,iBAAK,EAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,OAAO,IAAI,CAACpD,cAAc,CAACgD,QAAQ,CAAC,CAAC;EACzC;EAEA,MAAaK,SAASA,CAAA,EAAkB;IAAA,IAAAC,kBAAA,EAAAC,kBAAA,EAAAC,qBAAA;IACpC,CAAAF,kBAAA,OAAI,CAACnD,YAAY,cAAAmD,kBAAA,eAAjBA,kBAAA,CAAmB7C,GAAG,CAACgD,CAAC,IAAIA,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAAH,kBAAA,OAAI,CAACnD,YAAY,cAAAmD,kBAAA,eAAjBA,kBAAA,CAAmB9C,GAAG,CAACgD,CAAC,IAAIA,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAAF,qBAAA,OAAI,CAACnD,gBAAgB,cAAAmD,qBAAA,eAArBA,qBAAA,CAAuBE,KAAK,CAAC,CAAC;EAClC;AAyBJ,CAAC,OAAAC,0BAAA,CAAAC,OAAA,EAAAxE,MAAA,CAAAyE,SAAA,wBAAA1E,IAAA,GAAA2E,MAAA,CAAAC,wBAAA,CAAA3E,MAAA,CAAAyE,SAAA,wBAAAzE,MAAA,CAAAyE,SAAA,IAAAzE,MAAA;AAED,MAAMc,OAAO,CAAC;EAAAJ,YAAA;IAAA,KACFkE,QAAQ,GAAsB,EAAE;IAAA,KAcvBC,kBAAkB,GAAIC,OAAmB,IAAK;MAC3D,IAAI,CAACF,QAAQ,CAACG,IAAI,CAACD,OAAO,CAAC;IAC/B,CAAC;EAAA;EAdMf,IAAIA,CAAA,EAAkB;IACzB,OAAO,IAAIF,OAAO,CAAC,IAAI,CAACgB,kBAAkB,CAAC;EAC/C;EAEOjC,QAAQA,CAAA,EAAS;IACpB,MAAMgC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAACA,QAAQ,CAAC;IACnC,IAAI,CAACA,QAAQ,GAAG,EAAE;IAClB,KAAK,MAAMI,OAAO,IAAIJ,QAAQ,EAAE;MAC5BI,OAAO,CAAC,CAAC;IACb;EACJ;AAKJ","ignoreList":[]}
@@ -101,6 +101,17 @@ let BuildServerBuildFormsController = exports.BuildServerBuildFormsController =
101
101
  return result;
102
102
  }
103
103
  async getNormalizationFileContent(gfv) {
104
+ var _formConfig$settings$2, _formConfig$settings2;
105
+ const gfvInfos = (await Promise.all(this.allFarmDirectory.map(i => i.getAllGfvWithLocations()))).flat();
106
+ const gfvInfo = gfvInfos.find(x => x.gfv === gfv);
107
+ if (gfvInfo == null) {
108
+ return null;
109
+ }
110
+ const formConfig = await (0, _ResolveFormInfo.readFormConfig)(path.join(gfvInfo.formPath, _WellKnownDirectories.WellKnownDirectories.FormJsonFileName), (0, _StaticLogger.getLogger)());
111
+ const useServerSideFLangNormalization = (_formConfig$settings$2 = (_formConfig$settings2 = formConfig.settings) === null || _formConfig$settings2 === void 0 ? void 0 : _formConfig$settings2.useServerSideFLangNormalization) !== null && _formConfig$settings$2 !== void 0 ? _formConfig$settings$2 : false;
112
+ if (!useServerSideFLangNormalization) {
113
+ return null;
114
+ }
104
115
  const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);
105
116
  const resultStream = await buildFormDevServer.getGeneratedFileAsStream(`ServerSide.normalize`);
106
117
  return resultStream;
@@ -115,4 +126,4 @@ let BuildServerBuildFormsController = exports.BuildServerBuildFormsController =
115
126
  return devServer;
116
127
  }
117
128
  }, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJson", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJson"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJs", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getDevServerUpdateJsMap", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getDevServerUpdateJsMap"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormScript", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getFormScript"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormStyle", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getFormStyle"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormImages", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getFormImages"), _class.prototype)), _class));
118
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX21pbWVUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfU3RhdGljTG9nZ2VyIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwiX0J1aWxkRm9ybURldlNlcnZlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIiwiZXhwb3J0cyIsImh0dHBHZXQiLCJodHRwUmV0dXJuIiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVXJsUGFyYW0iLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJ1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzIiwiZW5naW5lRGlyZWN0b3J5IiwiYnVpbGREZWJ1Z09ubHkiLCJuaWdodGx5IiwiYWxsRmFybURpcmVjdG9yeSIsImFsbEZhcm1EaXJlY3RvcnlQYXRoIiwibmV4dEZyZWVQb3J0IiwiZGV2U2VydmVycyIsIm1hcCIsImZhcm0iLCJGYXJtRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImdldERldlNlcnZlclVwZGF0ZUpzb24iLCJ1cGRhdGVOYW1lIiwiZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyIiwiZ2V0RGV2U2VydmVyVXBkYXRlSnMiLCJnZXREZXZTZXJ2ZXJVcGRhdGVKc01hcCIsImdldEZvcm1TY3JpcHQiLCJmaWxlTmFtZSIsImZpbGVOYW1lV2l0aG91dEV4dCIsImdmdiIsImJ1aWxkRm9ybURldlNlcnZlciIsImdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyIiwiU3RyZWFtUmVzdWx0IiwiZ2V0RmlsZUFzU3RyZWFtIiwiZ2V0Rm9ybVN0eWxlIiwidGhlbWUiLCJyZXBsYWNlIiwiZ2V0Rm9ybUltYWdlcyIsIm1pbWUiLCJsb29rdXAiLCJmaWxlbmFtZSIsIm1pbWVUeXBlIiwiZGV2U2VydmVyIiwidmFsdWVzIiwidW5kZWZpbmVkIiwiTm90Rm91bmRXZWJFcnJvciIsImdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzIiwiUHJvbWlzZSIsImFsbCIsImdldEFsbEdmdnMiLCJmbGF0IiwiZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQiLCJyZXN1bHRTdHJlYW0iLCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0iLCJnZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzIiwicmVzdWx0IiwiZ2Z2SW5mb3MiLCJnZXRBbGxHZnZXaXRoTG9jYXRpb25zIiwiZm9ybVBhdGgiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyQiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsImpvaW4iLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJnZXRMb2dnZXIiLCJ1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uIiwic2V0dGluZ3MiLCJwdXNoIiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiQnVpbGRGb3JtRGV2U2VydmVyIiwic3RhcnQiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yMiIsInByb3RvdHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IG1pbWUgZnJvbSBcIm1pbWUtdHlwZXNcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHsgU3RyZWFtUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IFdlbGxLbm93bkRpcmVjdG9yaWVzIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9XZWxsS25vd25EaXJlY3Rvcmllc1wiO1xuXG5pbXBvcnQgeyBCdWlsZEZvcm1EZXZTZXJ2ZXIgfSBmcm9tIFwiLi9EZXZTZXJ2ZXJzL0J1aWxkRm9ybURldlNlcnZlclwiO1xuaW1wb3J0IHsgRmFybURpcmVjdG9yeSB9IGZyb20gXCIuL0RpcmVjdG9yaWVzL0Zhcm1EaXJlY3RvcnlcIjtcbmltcG9ydCB7IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIH0gZnJvbSBcIi4vSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXJcbiAgICBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXJcbiAgICBpbXBsZW1lbnRzIElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXG57XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtRGlyZWN0b3J5OiBGYXJtRGlyZWN0b3J5W107XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nW107XG4gICAgcHJpdmF0ZSBuZXh0RnJlZVBvcnQgPSAxMjAwMTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRldlNlcnZlcnM6IHsgW2dmdjogc3RyaW5nXTogdW5kZWZpbmVkIHwgQnVpbGRGb3JtRGV2U2VydmVyIH0gPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuZ2luZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmlnaHRseTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkRGVidWdPbmx5OiBib29sZWFuO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW10sXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICB1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzOiBib29sZWFuLFxuICAgICAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgYnVpbGREZWJ1Z09ubHk6IGJvb2xlYW4sXG4gICAgICAgIG5pZ2h0bHk6IGJvb2xlYW4gPSBmYWxzZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmFsbEZhcm1EaXJlY3RvcnkgPSBhbGxGYXJtQ29uZmlnLm1hcChmYXJtID0+IG5ldyBGYXJtRGlyZWN0b3J5KGZhcm0uZmFybURpcmVjdG9yeSkpO1xuICAgICAgICB0aGlzLmFsbEZhcm1EaXJlY3RvcnlQYXRoID0gYWxsRmFybUNvbmZpZy5tYXAoZmFybSA9PiBmYXJtLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICB0aGlzLmNhbmR5TW9kdWxlc0RpcmVjdG9yeSA9IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTtcbiAgICAgICAgdGhpcy5hbGxGYXJtQ29uZmlnID0gYWxsRmFybUNvbmZpZztcbiAgICAgICAgdGhpcy51c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzID0gdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcztcbiAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnkgPSBlbmdpbmVEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYnVpbGREZWJ1Z09ubHkgPSBidWlsZERlYnVnT25seTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvOnVwZGF0ZS5ob3QtdXBkYXRlLmpzb25cIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInVwZGF0ZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXREZXZTZXJ2ZXJVcGRhdGVKc29uKHVwZGF0ZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihgc3RhdGljLyR7dXBkYXRlTmFtZX0uaG90LXVwZGF0ZS5qc29uYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiLzp1cGRhdGUuaG90LXVwZGF0ZS5qc1wiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwidXBkYXRlXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldERldlNlcnZlclVwZGF0ZUpzKHVwZGF0ZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihgc3RhdGljLyR7dXBkYXRlTmFtZX0uaG90LXVwZGF0ZS5qc2ApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi86dXBkYXRlLmhvdC11cGRhdGUuanMubWFwXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJ1cGRhdGVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGV2U2VydmVyVXBkYXRlSnNNYXAodXBkYXRlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKGBzdGF0aWMvJHt1cGRhdGVOYW1lfS5ob3QtdXBkYXRlLmpzLm1hcGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICAvXlxcL3B1YmxpY1xcL3NjcmlwdHNcXC8oKChcXGR7Niw3fSkoLltcXHdcXC1dKik/KC5taW4pPykuanMpJC9pLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMFwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIxXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjJcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVNjcmlwdChmaWxlTmFtZTogc3RyaW5nLCBmaWxlTmFtZVdpdGhvdXRFeHQ6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBidWlsZEZvcm1EZXZTZXJ2ZXIgPSBhd2FpdCB0aGlzLmdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdik7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IGJ1aWxkRm9ybURldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2ZpbGVOYW1lfWApKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgL15cXC9wdWJsaWNcXC9zdHlsZXNcXC8oKChcXGR7Niw3fSkoLltcXHdcXC1dKik/KC5taW4pPykuY3NzKSQvaSxcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcInRleHQvY3NzXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIwXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjFcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMlwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIzXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TdHlsZShcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWVXaXRob3V0RXh0OiBzdHJpbmcsXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICB0aGVtZTogdW5kZWZpbmVkIHwgc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChcbiAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybURldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oYHN0YXRpYy9wdWJsaWMvc3R5bGVzLyR7ZmlsZU5hbWUucmVwbGFjZSh0aGVtZSA/PyBcIlwiLCBcIlwiKX1gKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3B1YmxpYy9pbWFnZXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtSW1hZ2VzKGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoXG4gICAgICAgICAgICBgc3RhdGljL3B1YmxpYy9pbWFnZXMvJHtmaWxlTmFtZX1gLFxuICAgICAgICAgICAgbWltZS5sb29rdXAoZmlsZU5hbWUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoZmlsZW5hbWU6IHN0cmluZywgbWltZVR5cGU/OiBzdHJpbmcgfCBmYWxzZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGRldlNlcnZlciBvZiBPYmplY3QudmFsdWVzKHRoaXMuZGV2U2VydmVycykpIHtcbiAgICAgICAgICAgIGlmIChkZXZTZXJ2ZXIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgZGV2U2VydmVyLmdldEZpbGVBc1N0cmVhbShmaWxlbmFtZSksIG1pbWVUeXBlKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IG5leHQgc2VydmVyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3RvcnkubWFwKGkgPT4gaS5nZXRBbGxHZnZzKCkpKSkuZmxhdCgpLm1hcChnZnYgPT4gYCR7Z2Z2fS5qc29uYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICBjb25zdCByZXN1bHRTdHJlYW0gPSBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtKGBBdHRhY2htZW50UGF0aHMuanNvbmApO1xuICAgICAgICByZXR1cm4gcmVzdWx0U3RyZWFtO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCBnZnZJbmZvcyA9IChhd2FpdCBQcm9taXNlLmFsbCh0aGlzLmFsbEZhcm1EaXJlY3RvcnkubWFwKGkgPT4gaS5nZXRBbGxHZnZXaXRoTG9jYXRpb25zKCkpKSkuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IHsgZ2Z2LCBmb3JtUGF0aCB9IG9mIGdmdkluZm9zKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKGZvcm1QYXRoLCBXZWxsS25vd25EaXJlY3Rvcmllcy5Gb3JtSnNvbkZpbGVOYW1lKSxcbiAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24gPSBmb3JtQ29uZmlnLnNldHRpbmdzPy51c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uID8/IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChgJHtnZnZ9Lm5vcm1hbGl6ZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgY29uc3QgcmVzdWx0U3RyZWFtID0gYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShgU2VydmVyU2lkZS5ub3JtYWxpemVgKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmVhbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdjogc3RyaW5nKTogUHJvbWlzZTxCdWlsZEZvcm1EZXZTZXJ2ZXI+IHtcbiAgICAgICAgbGV0IGRldlNlcnZlciA9IHRoaXMuZGV2U2VydmVyc1tnZnZdO1xuICAgICAgICBpZiAoZGV2U2VydmVyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZGV2U2VydmVyID0gbmV3IEJ1aWxkRm9ybURldlNlcnZlcihcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRGcmVlUG9ydCsrLFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyxcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZERlYnVnT25seSxcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aGlzLm5pZ2h0bHlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmRldlNlcnZlcnNbZ2Z2XSA9IGRldlNlcnZlcjtcbiAgICAgICAgICAgIGF3YWl0IGRldlNlcnZlci5zdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXZTZXJ2ZXI7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLElBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFHLGdCQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxpQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsb0JBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLG9CQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxhQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxxQkFBQSxHQUFBWCxPQUFBO0FBRUEsSUFBQVksbUJBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLGNBQUEsR0FBQWIsT0FBQTtBQUE0RCxJQUFBYyxJQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVB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
129
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXRoIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX21pbWVUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzb2x2ZUZvcm1JbmZvIiwiX01ldGhvZHMiLCJfTm90Rm91bmRXZWJFcnJvciIsIl9QYXJhbXMiLCJfUmVzdWx0cyIsIl9TdHJlYW1SZXN1bHRIYW5kbGVyIiwiX1NpbmdsZXRvbkNvbnRyb2xsZXIiLCJfU3RhdGljTG9nZ2VyIiwiX1dlbGxLbm93bkRpcmVjdG9yaWVzIiwiX0J1aWxkRm9ybURldlNlcnZlciIsIl9GYXJtRGlyZWN0b3J5IiwiX2RlYyIsIl9kZWMyIiwiX2RlYzMiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfY2xhc3MiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyIiwiZXhwb3J0cyIsImh0dHBHZXQiLCJodHRwUmV0dXJuIiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVXJsUGFyYW0iLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJ1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzIiwiZW5naW5lRGlyZWN0b3J5IiwiYnVpbGREZWJ1Z09ubHkiLCJuaWdodGx5IiwiYWxsRmFybURpcmVjdG9yeSIsImFsbEZhcm1EaXJlY3RvcnlQYXRoIiwibmV4dEZyZWVQb3J0IiwiZGV2U2VydmVycyIsIm1hcCIsImZhcm0iLCJGYXJtRGlyZWN0b3J5IiwiZmFybURpcmVjdG9yeSIsImdldERldlNlcnZlclVwZGF0ZUpzb24iLCJ1cGRhdGVOYW1lIiwiZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyIiwiZ2V0RGV2U2VydmVyVXBkYXRlSnMiLCJnZXREZXZTZXJ2ZXJVcGRhdGVKc01hcCIsImdldEZvcm1TY3JpcHQiLCJmaWxlTmFtZSIsImZpbGVOYW1lV2l0aG91dEV4dCIsImdmdiIsImJ1aWxkRm9ybURldlNlcnZlciIsImdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyIiwiU3RyZWFtUmVzdWx0IiwiZ2V0RmlsZUFzU3RyZWFtIiwiZ2V0Rm9ybVN0eWxlIiwidGhlbWUiLCJyZXBsYWNlIiwiZ2V0Rm9ybUltYWdlcyIsIm1pbWUiLCJsb29rdXAiLCJmaWxlbmFtZSIsIm1pbWVUeXBlIiwiZGV2U2VydmVyIiwidmFsdWVzIiwidW5kZWZpbmVkIiwiTm90Rm91bmRXZWJFcnJvciIsImdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzIiwiUHJvbWlzZSIsImFsbCIsImdldEFsbEdmdnMiLCJmbGF0IiwiZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQiLCJyZXN1bHRTdHJlYW0iLCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0iLCJnZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzIiwicmVzdWx0IiwiZ2Z2SW5mb3MiLCJnZXRBbGxHZnZXaXRoTG9jYXRpb25zIiwiZm9ybVBhdGgiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyQiLCJfZm9ybUNvbmZpZyRzZXR0aW5ncyIsImZvcm1Db25maWciLCJyZWFkRm9ybUNvbmZpZyIsImpvaW4iLCJXZWxsS25vd25EaXJlY3RvcmllcyIsIkZvcm1Kc29uRmlsZU5hbWUiLCJnZXRMb2dnZXIiLCJ1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uIiwic2V0dGluZ3MiLCJwdXNoIiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiX2Zvcm1Db25maWckc2V0dGluZ3MkMiIsIl9mb3JtQ29uZmlnJHNldHRpbmdzMiIsImdmdkluZm8iLCJmaW5kIiwieCIsIkJ1aWxkRm9ybURldlNlcnZlciIsInN0YXJ0IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcjIiLCJwcm90b3R5cGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQ0xJQ29tbWFuZHMvQnVpbGRTZXJ2ZXIvUmVzb3VyY2VzQ29udHJvbGxlcnMvQnVpbGRTZXJ2ZXJCdWlsZEZvcm1zQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBtaW1lIGZyb20gXCJtaW1lLXR5cGVzXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyByZWFkRm9ybUNvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9CdWlsZFRhc2tzL1Jlc29sdmVGb3JtSW5mb1wiO1xuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBOb3RGb3VuZFdlYkVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL05vdEZvdW5kV2ViRXJyb3JcIjtcbmltcG9ydCB7IGh0dHBUeXBlLCBodHRwVXJsUGFyYW0gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7IFN0cmVhbVJlc3VsdCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzL1N0cmVhbVJlc3VsdEhhbmRsZXJcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0xvZ2dpbmcvU3RhdGljTG9nZ2VyXCI7XG5pbXBvcnQgeyBXZWxsS25vd25EaXJlY3RvcmllcyB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vV2VsbEtub3duRGlyZWN0b3JpZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3JtRGV2U2VydmVyIH0gZnJvbSBcIi4vRGV2U2VydmVycy9CdWlsZEZvcm1EZXZTZXJ2ZXJcIjtcbmltcG9ydCB7IEZhcm1EaXJlY3RvcnkgfSBmcm9tIFwiLi9EaXJlY3Rvcmllcy9GYXJtRGlyZWN0b3J5XCI7XG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyXG4gICAgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyXG4gICAgaW1wbGVtZW50cyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeTogRmFybURpcmVjdG9yeVtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1tdO1xuICAgIHByaXZhdGUgbmV4dEZyZWVQb3J0ID0gMTIwMDE7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXZTZXJ2ZXJzOiB7IFtnZnY6IHN0cmluZ106IHVuZGVmaW5lZCB8IEJ1aWxkRm9ybURldlNlcnZlciB9ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgYWxsRmFybUNvbmZpZzogRmFybUNvbmZpZ1tdLFxuICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbixcbiAgICAgICAgZW5naW5lRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGJ1aWxkRGVidWdPbmx5OiBib29sZWFuLFxuICAgICAgICBuaWdodGx5OiBib29sZWFuID0gZmFsc2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uaWdodGx5ID0gbmlnaHRseTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5ID0gYWxsRmFybUNvbmZpZy5tYXAoZmFybSA9PiBuZXcgRmFybURpcmVjdG9yeShmYXJtLmZhcm1EaXJlY3RvcnkpKTtcbiAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5UGF0aCA9IGFsbEZhcm1Db25maWcubWFwKGZhcm0gPT4gZmFybS5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyA9IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM7XG4gICAgICAgIHRoaXMuZW5naW5lRGlyZWN0b3J5ID0gZW5naW5lRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5ID0gYnVpbGREZWJ1Z09ubHk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiLzp1cGRhdGUuaG90LXVwZGF0ZS5qc29uXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJ1cGRhdGVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGV2U2VydmVyVXBkYXRlSnNvbih1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNvbmApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi86dXBkYXRlLmhvdC11cGRhdGUuanNcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInVwZGF0ZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXREZXZTZXJ2ZXJVcGRhdGVKcyh1cGRhdGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRGaXJzdEV4aXN0c0ZpbGVBc1N0cmVhbUZyb21EZXZTZXJ2ZXIoYHN0YXRpYy8ke3VwZGF0ZU5hbWV9LmhvdC11cGRhdGUuanNgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvOnVwZGF0ZS5ob3QtdXBkYXRlLmpzLm1hcFwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwidXBkYXRlXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldERldlNlcnZlclVwZGF0ZUpzTWFwKHVwZGF0ZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldEZpcnN0RXhpc3RzRmlsZUFzU3RyZWFtRnJvbURldlNlcnZlcihgc3RhdGljLyR7dXBkYXRlTmFtZX0uaG90LXVwZGF0ZS5qcy5tYXBgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgL15cXC9wdWJsaWNcXC9zY3JpcHRzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmpzKSQvaSxcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjBcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMVwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIyXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY3JpcHQoZmlsZU5hbWU6IHN0cmluZywgZmlsZU5hbWVXaXRob3V0RXh0OiBzdHJpbmcsIGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtmaWxlTmFtZX1gKSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIC9eXFwvcHVibGljXFwvc3R5bGVzXFwvKCgoXFxkezYsN30pKC5bXFx3XFwtXSopPygubWluKT8pLmNzcykkL2ksXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJ0ZXh0L2Nzc1wiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMFwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIxXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjJcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiM1wiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU3R5bGUoXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lV2l0aG91dEV4dDogc3RyaW5nLFxuICAgICAgICBnZnY6IHN0cmluZyxcbiAgICAgICAgdGhlbWU6IHVuZGVmaW5lZCB8IHN0cmluZ1xuICAgICk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoXG4gICAgICAgICAgICBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2ZpbGVOYW1lLnJlcGxhY2UodGhlbWUgPz8gXCJcIiwgXCJcIil9YClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wdWJsaWMvaW1hZ2VzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybUltYWdlcyhmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKFxuICAgICAgICAgICAgYHN0YXRpYy9wdWJsaWMvaW1hZ2VzLyR7ZmlsZU5hbWV9YCxcbiAgICAgICAgICAgIG1pbWUubG9va3VwKGZpbGVOYW1lKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0Rmlyc3RFeGlzdHNGaWxlQXNTdHJlYW1Gcm9tRGV2U2VydmVyKGZpbGVuYW1lOiBzdHJpbmcsIG1pbWVUeXBlPzogc3RyaW5nIHwgZmFsc2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBkZXZTZXJ2ZXIgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmRldlNlcnZlcnMpKSB7XG4gICAgICAgICAgICBpZiAoZGV2U2VydmVyICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IGRldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oZmlsZW5hbWUpLCBtaW1lVHlwZSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRyeSBuZXh0IHNlcnZlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3J5Lm1hcChpID0+IGkuZ2V0QWxsR2Z2cygpKSkpLmZsYXQoKS5tYXAoZ2Z2ID0+IGAke2dmdn0uanNvbmApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgY29uc3QgcmVzdWx0U3RyZWFtID0gYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShgQXR0YWNobWVudFBhdGhzLmpzb25gKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmVhbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZ2Z2SW5mb3MgPSAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3J5Lm1hcChpID0+IGkuZ2V0QWxsR2Z2V2l0aExvY2F0aW9ucygpKSkpLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCB7IGdmdiwgZm9ybVBhdGggfSBvZiBnZnZJbmZvcykge1xuICAgICAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihmb3JtUGF0aCwgV2VsbEtub3duRGlyZWN0b3JpZXMuRm9ybUpzb25GaWxlTmFtZSksXG4gICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCB1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uID0gZm9ybUNvbmZpZy5zZXR0aW5ncz8udXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA/PyBmYWxzZTtcbiAgICAgICAgICAgIGlmICh1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7Z2Z2fS5ub3JtYWxpemVgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPE5vZGVKUy5SZWFkYWJsZVN0cmVhbSB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgZ2Z2SW5mb3MgPSAoYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5hbGxGYXJtRGlyZWN0b3J5Lm1hcChpID0+IGkuZ2V0QWxsR2Z2V2l0aExvY2F0aW9ucygpKSkpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZ2Z2SW5mbyA9IGdmdkluZm9zLmZpbmQoeCA9PiB4LmdmdiA9PT0gZ2Z2KTtcbiAgICAgICAgaWYgKGdmdkluZm8gPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKFxuICAgICAgICAgICAgcGF0aC5qb2luKGdmdkluZm8uZm9ybVBhdGgsIFdlbGxLbm93bkRpcmVjdG9yaWVzLkZvcm1Kc29uRmlsZU5hbWUpLFxuICAgICAgICAgICAgZ2V0TG9nZ2VyKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA9IGZvcm1Db25maWcuc2V0dGluZ3M/LnVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24gPz8gZmFsc2U7XG4gICAgICAgIGlmICghdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICBjb25zdCByZXN1bHRTdHJlYW0gPSBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtKGBTZXJ2ZXJTaWRlLm5vcm1hbGl6ZWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0U3RyZWFtO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEJ1aWxkRm9ybURldlNlcnZlcj4ge1xuICAgICAgICBsZXQgZGV2U2VydmVyID0gdGhpcy5kZXZTZXJ2ZXJzW2dmdl07XG4gICAgICAgIGlmIChkZXZTZXJ2ZXIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkZXZTZXJ2ZXIgPSBuZXcgQnVpbGRGb3JtRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMubmV4dEZyZWVQb3J0KyssXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxGYXJtQ29uZmlnLFxuICAgICAgICAgICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZGV2U2VydmVyc1tnZnZdID0gZGV2U2VydmVyO1xuICAgICAgICAgICAgYXdhaXQgZGV2U2VydmVyLnN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRldlNlcnZlcjtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBQUEsSUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGlCQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxvQkFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsb0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGFBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLHFCQUFBLEdBQUFYLE9BQUE7QUFFQSxJQUFBWSxtQkFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsY0FBQSxHQUFBYixPQUFBO0FBQTRELElBQUFjLElBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLEtBQUEsRUFBQUMsS0FBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUE7QUFBQSxTQUFBQyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBdkIsd0JBQUF1QixDQUFBLEVBQUFF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
@@ -1 +1 @@
1
- {"version":3,"file":"BuildServerBuildFormsController.js","names":["path","_interopRequireWildcard","require","_mimeTypes","_interopRequireDefault","_ResolveFormInfo","_Methods","_NotFoundWebError","_Params","_Results","_StreamResultHandler","_SingletonController","_StaticLogger","_WellKnownDirectories","_BuildFormDevServer","_FarmDirectory","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_class","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","BuildServerBuildFormsController","exports","httpGet","httpReturn","StreamWithMime","httpUrlParam","httpType","String","Stream","SingletonController","constructor","allFarmConfig","candyModulesDirectory","useGeneratorFromLocalSources","engineDirectory","buildDebugOnly","nightly","allFarmDirectory","allFarmDirectoryPath","nextFreePort","devServers","map","farm","FarmDirectory","farmDirectory","getDevServerUpdateJson","updateName","getFirstExistsFileAsStreamFromDevServer","getDevServerUpdateJs","getDevServerUpdateJsMap","getFormScript","fileName","fileNameWithoutExt","gfv","buildFormDevServer","getOrCreateBuildFormDevServer","StreamResult","getFileAsStream","getFormStyle","theme","replace","getFormImages","mime","lookup","filename","mimeType","devServer","values","undefined","NotFoundWebError","getAllAttachmentPathFileNames","Promise","all","getAllGfvs","flat","getAttachmentPathsFileContent","resultStream","getGeneratedFileAsStream","getAllNormalizationFileNames","result","gfvInfos","getAllGfvWithLocations","formPath","_formConfig$settings$","_formConfig$settings","formConfig","readFormConfig","join","WellKnownDirectories","FormJsonFileName","getLogger","useServerSideFLangNormalization","settings","push","getNormalizationFileContent","BuildFormDevServer","start","_applyDecoratedDescriptor2","prototype"],"sources":["../../../../../../src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.ts"],"sourcesContent":["import * as path from \"path\";\n\nimport mime from \"mime-types\";\nimport { FarmConfig } from \"Tools/src/CandyCLI\";\n\nimport { readFormConfig } from \"../../../BuildTasks/ResolveFormInfo\";\nimport { httpGet } from \"../../../Commons/HttpServer/AttributeRouting/Methods\";\nimport { NotFoundWebError } from \"../../../Commons/HttpServer/AttributeRouting/NotFoundWebError\";\nimport { httpType, httpUrlParam } from \"../../../Commons/HttpServer/AttributeRouting/Params\";\nimport { httpReturn } from \"../../../Commons/HttpServer/AttributeRouting/Results\";\nimport { StreamResult } from \"../../../Commons/HttpServer/AttributeRouting/Results/StreamResultHandler\";\nimport { SingletonController } from \"../../../Commons/HttpServer/ExpressWrapper/SingletonController\";\nimport { getLogger } from \"../../../Commons/Logging/StaticLogger\";\nimport { WellKnownDirectories } from \"../../../../../Common/WellKnownDirectories\";\n\nimport { BuildFormDevServer } from \"./DevServers/BuildFormDevServer\";\nimport { FarmDirectory } from \"./Directories/FarmDirectory\";\nimport { IGeneratedServerSideSourcesProvider } from \"./IGeneratedServerSideSourcesProvider\";\n\nexport class BuildServerBuildFormsController\n extends SingletonController\n implements IGeneratedServerSideSourcesProvider\n{\n private readonly allFarmDirectory: FarmDirectory[];\n private readonly allFarmDirectoryPath: string[];\n private nextFreePort = 12001;\n private readonly devServers: { [gfv: string]: undefined | BuildFormDevServer } = {};\n private readonly candyModulesDirectory: string;\n private readonly allFarmConfig: FarmConfig[];\n private readonly useGeneratorFromLocalSources: boolean;\n private readonly engineDirectory: string;\n private readonly nightly: boolean;\n private readonly buildDebugOnly: boolean;\n\n public constructor(\n allFarmConfig: FarmConfig[],\n candyModulesDirectory: string,\n useGeneratorFromLocalSources: boolean,\n engineDirectory: string,\n buildDebugOnly: boolean,\n nightly: boolean = false\n ) {\n super();\n this.nightly = nightly;\n this.allFarmDirectory = allFarmConfig.map(farm => new FarmDirectory(farm.farmDirectory));\n this.allFarmDirectoryPath = allFarmConfig.map(farm => farm.farmDirectory);\n this.candyModulesDirectory = candyModulesDirectory;\n this.allFarmConfig = allFarmConfig;\n this.useGeneratorFromLocalSources = useGeneratorFromLocalSources;\n this.engineDirectory = engineDirectory;\n this.buildDebugOnly = buildDebugOnly;\n }\n\n @httpGet(\n \"/:update.hot-update.json\",\n httpReturn.StreamWithMime(\"application/json\"),\n httpUrlParam(\"update\", httpType.String)\n )\n public async getDevServerUpdateJson(updateName: string): Promise<StreamResult> {\n return await this.getFirstExistsFileAsStreamFromDevServer(`static/${updateName}.hot-update.json`);\n }\n\n @httpGet(\n \"/:update.hot-update.js\",\n httpReturn.StreamWithMime(\"application/javascript\"),\n httpUrlParam(\"update\", httpType.String)\n )\n public async getDevServerUpdateJs(updateName: string): Promise<StreamResult> {\n return await this.getFirstExistsFileAsStreamFromDevServer(`static/${updateName}.hot-update.js`);\n }\n\n @httpGet(\n \"/:update.hot-update.js.map\",\n httpReturn.StreamWithMime(\"application/json\"),\n httpUrlParam(\"update\", httpType.String)\n )\n public async getDevServerUpdateJsMap(updateName: string): Promise<StreamResult> {\n return await this.getFirstExistsFileAsStreamFromDevServer(`static/${updateName}.hot-update.js.map`);\n }\n\n @httpGet(\n /^\\/public\\/scripts\\/(((\\d{6,7})(.[\\w\\-]*)?(.min)?).js)$/i,\n httpReturn.StreamWithMime(\"application/javascript\"),\n httpUrlParam(\"0\", httpType.String),\n httpUrlParam(\"1\", httpType.String),\n httpUrlParam(\"2\", httpType.String)\n )\n public async getFormScript(fileName: string, fileNameWithoutExt: string, gfv: string): Promise<StreamResult> {\n const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);\n return new StreamResult(await buildFormDevServer.getFileAsStream(`static/public/scripts/${fileName}`));\n }\n\n @httpGet(\n /^\\/public\\/styles\\/(((\\d{6,7})(.[\\w\\-]*)?(.min)?).css)$/i,\n httpReturn.StreamWithMime(\"text/css\"),\n httpUrlParam(\"0\", httpType.String),\n httpUrlParam(\"1\", httpType.String),\n httpUrlParam(\"2\", httpType.String),\n httpUrlParam(\"3\", httpType.String)\n )\n public async getFormStyle(\n fileName: string,\n fileNameWithoutExt: string,\n gfv: string,\n theme: undefined | string\n ): Promise<StreamResult> {\n const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);\n return new StreamResult(\n await buildFormDevServer.getFileAsStream(`static/public/styles/${fileName.replace(theme ?? \"\", \"\")}`)\n );\n }\n\n @httpGet(\"/public/images/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getFormImages(fileName: string): Promise<StreamResult> {\n return await this.getFirstExistsFileAsStreamFromDevServer(\n `static/public/images/${fileName}`,\n mime.lookup(fileName)\n );\n }\n\n private async getFirstExistsFileAsStreamFromDevServer(filename: string, mimeType?: string | false) {\n for (const devServer of Object.values(this.devServers)) {\n if (devServer != undefined) {\n try {\n return new StreamResult(await devServer.getFileAsStream(filename), mimeType);\n } catch {\n // try next server\n }\n }\n }\n throw new NotFoundWebError(\"File not found\", true);\n }\n\n public async getAllAttachmentPathFileNames(): Promise<string[]> {\n return (await Promise.all(this.allFarmDirectory.map(i => i.getAllGfvs()))).flat().map(gfv => `${gfv}.json`);\n }\n\n public async getAttachmentPathsFileContent(gfv: string): Promise<NodeJS.ReadableStream> {\n const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);\n const resultStream = await buildFormDevServer.getGeneratedFileAsStream(`AttachmentPaths.json`);\n return resultStream;\n }\n\n public async getAllNormalizationFileNames(): Promise<string[]> {\n const result: string[] = [];\n const gfvInfos = (await Promise.all(this.allFarmDirectory.map(i => i.getAllGfvWithLocations()))).flat();\n for (const { gfv, formPath } of gfvInfos) {\n const formConfig = await readFormConfig(\n path.join(formPath, WellKnownDirectories.FormJsonFileName),\n getLogger()\n );\n const useServerSideFLangNormalization = formConfig.settings?.useServerSideFLangNormalization ?? false;\n if (useServerSideFLangNormalization) {\n result.push(`${gfv}.normalize`);\n }\n }\n return result;\n }\n\n public async getNormalizationFileContent(gfv: string): Promise<NodeJS.ReadableStream> {\n const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);\n const resultStream = await buildFormDevServer.getGeneratedFileAsStream(`ServerSide.normalize`);\n return resultStream;\n }\n\n private async getOrCreateBuildFormDevServer(gfv: string): Promise<BuildFormDevServer> {\n let devServer = this.devServers[gfv];\n if (devServer == undefined) {\n devServer = new BuildFormDevServer(\n this.nextFreePort++,\n this.allFarmDirectoryPath,\n gfv,\n this.candyModulesDirectory,\n this.allFarmConfig,\n this.useGeneratorFromLocalSources,\n this.engineDirectory,\n this.buildDebugOnly,\n false,\n this.nightly\n );\n this.devServers[gfv] = devServer;\n await devServer.start();\n }\n return devServer;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BuildServerBuildFormsController.js","names":["path","_interopRequireWildcard","require","_mimeTypes","_interopRequireDefault","_ResolveFormInfo","_Methods","_NotFoundWebError","_Params","_Results","_StreamResultHandler","_SingletonController","_StaticLogger","_WellKnownDirectories","_BuildFormDevServer","_FarmDirectory","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_class","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","BuildServerBuildFormsController","exports","httpGet","httpReturn","StreamWithMime","httpUrlParam","httpType","String","Stream","SingletonController","constructor","allFarmConfig","candyModulesDirectory","useGeneratorFromLocalSources","engineDirectory","buildDebugOnly","nightly","allFarmDirectory","allFarmDirectoryPath","nextFreePort","devServers","map","farm","FarmDirectory","farmDirectory","getDevServerUpdateJson","updateName","getFirstExistsFileAsStreamFromDevServer","getDevServerUpdateJs","getDevServerUpdateJsMap","getFormScript","fileName","fileNameWithoutExt","gfv","buildFormDevServer","getOrCreateBuildFormDevServer","StreamResult","getFileAsStream","getFormStyle","theme","replace","getFormImages","mime","lookup","filename","mimeType","devServer","values","undefined","NotFoundWebError","getAllAttachmentPathFileNames","Promise","all","getAllGfvs","flat","getAttachmentPathsFileContent","resultStream","getGeneratedFileAsStream","getAllNormalizationFileNames","result","gfvInfos","getAllGfvWithLocations","formPath","_formConfig$settings$","_formConfig$settings","formConfig","readFormConfig","join","WellKnownDirectories","FormJsonFileName","getLogger","useServerSideFLangNormalization","settings","push","getNormalizationFileContent","_formConfig$settings$2","_formConfig$settings2","gfvInfo","find","x","BuildFormDevServer","start","_applyDecoratedDescriptor2","prototype"],"sources":["../../../../../../src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.ts"],"sourcesContent":["import * as path from \"path\";\n\nimport mime from \"mime-types\";\nimport { FarmConfig } from \"Tools/src/CandyCLI\";\n\nimport { readFormConfig } from \"../../../BuildTasks/ResolveFormInfo\";\nimport { httpGet } from \"../../../Commons/HttpServer/AttributeRouting/Methods\";\nimport { NotFoundWebError } from \"../../../Commons/HttpServer/AttributeRouting/NotFoundWebError\";\nimport { httpType, httpUrlParam } from \"../../../Commons/HttpServer/AttributeRouting/Params\";\nimport { httpReturn } from \"../../../Commons/HttpServer/AttributeRouting/Results\";\nimport { StreamResult } from \"../../../Commons/HttpServer/AttributeRouting/Results/StreamResultHandler\";\nimport { SingletonController } from \"../../../Commons/HttpServer/ExpressWrapper/SingletonController\";\nimport { getLogger } from \"../../../Commons/Logging/StaticLogger\";\nimport { WellKnownDirectories } from \"../../../../../Common/WellKnownDirectories\";\n\nimport { BuildFormDevServer } from \"./DevServers/BuildFormDevServer\";\nimport { FarmDirectory } from \"./Directories/FarmDirectory\";\nimport { IGeneratedServerSideSourcesProvider } from \"./IGeneratedServerSideSourcesProvider\";\n\nexport class BuildServerBuildFormsController\n extends SingletonController\n implements IGeneratedServerSideSourcesProvider\n{\n private readonly allFarmDirectory: FarmDirectory[];\n private readonly allFarmDirectoryPath: string[];\n private nextFreePort = 12001;\n private readonly devServers: { [gfv: string]: undefined | BuildFormDevServer } = {};\n private readonly candyModulesDirectory: string;\n private readonly allFarmConfig: FarmConfig[];\n private readonly useGeneratorFromLocalSources: boolean;\n private readonly engineDirectory: string;\n private readonly nightly: boolean;\n private readonly buildDebugOnly: boolean;\n\n public constructor(\n allFarmConfig: FarmConfig[],\n candyModulesDirectory: string,\n useGeneratorFromLocalSources: boolean,\n engineDirectory: string,\n buildDebugOnly: boolean,\n nightly: boolean = false\n ) {\n super();\n this.nightly = nightly;\n this.allFarmDirectory = allFarmConfig.map(farm => new FarmDirectory(farm.farmDirectory));\n this.allFarmDirectoryPath = allFarmConfig.map(farm => farm.farmDirectory);\n this.candyModulesDirectory = candyModulesDirectory;\n this.allFarmConfig = allFarmConfig;\n this.useGeneratorFromLocalSources = useGeneratorFromLocalSources;\n this.engineDirectory = engineDirectory;\n this.buildDebugOnly = buildDebugOnly;\n }\n\n @httpGet(\n \"/:update.hot-update.json\",\n httpReturn.StreamWithMime(\"application/json\"),\n httpUrlParam(\"update\", httpType.String)\n )\n public async getDevServerUpdateJson(updateName: string): Promise<StreamResult> {\n return await this.getFirstExistsFileAsStreamFromDevServer(`static/${updateName}.hot-update.json`);\n }\n\n @httpGet(\n \"/:update.hot-update.js\",\n httpReturn.StreamWithMime(\"application/javascript\"),\n httpUrlParam(\"update\", httpType.String)\n )\n public async getDevServerUpdateJs(updateName: string): Promise<StreamResult> {\n return await this.getFirstExistsFileAsStreamFromDevServer(`static/${updateName}.hot-update.js`);\n }\n\n @httpGet(\n \"/:update.hot-update.js.map\",\n httpReturn.StreamWithMime(\"application/json\"),\n httpUrlParam(\"update\", httpType.String)\n )\n public async getDevServerUpdateJsMap(updateName: string): Promise<StreamResult> {\n return await this.getFirstExistsFileAsStreamFromDevServer(`static/${updateName}.hot-update.js.map`);\n }\n\n @httpGet(\n /^\\/public\\/scripts\\/(((\\d{6,7})(.[\\w\\-]*)?(.min)?).js)$/i,\n httpReturn.StreamWithMime(\"application/javascript\"),\n httpUrlParam(\"0\", httpType.String),\n httpUrlParam(\"1\", httpType.String),\n httpUrlParam(\"2\", httpType.String)\n )\n public async getFormScript(fileName: string, fileNameWithoutExt: string, gfv: string): Promise<StreamResult> {\n const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);\n return new StreamResult(await buildFormDevServer.getFileAsStream(`static/public/scripts/${fileName}`));\n }\n\n @httpGet(\n /^\\/public\\/styles\\/(((\\d{6,7})(.[\\w\\-]*)?(.min)?).css)$/i,\n httpReturn.StreamWithMime(\"text/css\"),\n httpUrlParam(\"0\", httpType.String),\n httpUrlParam(\"1\", httpType.String),\n httpUrlParam(\"2\", httpType.String),\n httpUrlParam(\"3\", httpType.String)\n )\n public async getFormStyle(\n fileName: string,\n fileNameWithoutExt: string,\n gfv: string,\n theme: undefined | string\n ): Promise<StreamResult> {\n const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);\n return new StreamResult(\n await buildFormDevServer.getFileAsStream(`static/public/styles/${fileName.replace(theme ?? \"\", \"\")}`)\n );\n }\n\n @httpGet(\"/public/images/:filename\", httpReturn.Stream, httpUrlParam(\"filename\", httpType.String))\n public async getFormImages(fileName: string): Promise<StreamResult> {\n return await this.getFirstExistsFileAsStreamFromDevServer(\n `static/public/images/${fileName}`,\n mime.lookup(fileName)\n );\n }\n\n private async getFirstExistsFileAsStreamFromDevServer(filename: string, mimeType?: string | false) {\n for (const devServer of Object.values(this.devServers)) {\n if (devServer != undefined) {\n try {\n return new StreamResult(await devServer.getFileAsStream(filename), mimeType);\n } catch {\n // try next server\n }\n }\n }\n throw new NotFoundWebError(\"File not found\", true);\n }\n\n public async getAllAttachmentPathFileNames(): Promise<string[]> {\n return (await Promise.all(this.allFarmDirectory.map(i => i.getAllGfvs()))).flat().map(gfv => `${gfv}.json`);\n }\n\n public async getAttachmentPathsFileContent(gfv: string): Promise<NodeJS.ReadableStream> {\n const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);\n const resultStream = await buildFormDevServer.getGeneratedFileAsStream(`AttachmentPaths.json`);\n return resultStream;\n }\n\n public async getAllNormalizationFileNames(): Promise<string[]> {\n const result: string[] = [];\n const gfvInfos = (await Promise.all(this.allFarmDirectory.map(i => i.getAllGfvWithLocations()))).flat();\n for (const { gfv, formPath } of gfvInfos) {\n const formConfig = await readFormConfig(\n path.join(formPath, WellKnownDirectories.FormJsonFileName),\n getLogger()\n );\n const useServerSideFLangNormalization = formConfig.settings?.useServerSideFLangNormalization ?? false;\n if (useServerSideFLangNormalization) {\n result.push(`${gfv}.normalize`);\n }\n }\n return result;\n }\n\n public async getNormalizationFileContent(gfv: string): Promise<NodeJS.ReadableStream | null> {\n const gfvInfos = (await Promise.all(this.allFarmDirectory.map(i => i.getAllGfvWithLocations()))).flat();\n const gfvInfo = gfvInfos.find(x => x.gfv === gfv);\n if (gfvInfo == null) {\n return null;\n }\n const formConfig = await readFormConfig(\n path.join(gfvInfo.formPath, WellKnownDirectories.FormJsonFileName),\n getLogger()\n );\n const useServerSideFLangNormalization = formConfig.settings?.useServerSideFLangNormalization ?? false;\n if (!useServerSideFLangNormalization) {\n return null;\n }\n const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);\n const resultStream = await buildFormDevServer.getGeneratedFileAsStream(`ServerSide.normalize`);\n return resultStream;\n }\n\n private async getOrCreateBuildFormDevServer(gfv: string): Promise<BuildFormDevServer> {\n let devServer = this.devServers[gfv];\n if (devServer == undefined) {\n devServer = new BuildFormDevServer(\n this.nextFreePort++,\n this.allFarmDirectoryPath,\n gfv,\n this.candyModulesDirectory,\n this.allFarmConfig,\n this.useGeneratorFromLocalSources,\n this.engineDirectory,\n this.buildDebugOnly,\n false,\n this.nightly\n );\n this.devServers[gfv] = devServer;\n await devServer.start();\n }\n return devServer;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIge1xuICAgIGdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT47XG4gICAgZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+O1xuICAgIGdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nW10+O1xuICAgIGdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+O1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0NMSUNvbW1hbmRzL0J1aWxkU2VydmVyL1Jlc291cmNlc0NvbnRyb2xsZXJzL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIge1xuICAgIGdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT47XG4gICAgZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0gfCBudWxsPjtcbiAgICBnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPjtcbiAgICBnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPjtcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"IGeneratedServerSideSourcesProvider.js","names":[],"sources":["../../../../../../src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.ts"],"sourcesContent":["export interface IGeneratedServerSideSourcesProvider {\n getAllNormalizationFileNames(): Promise<string[]>;\n getNormalizationFileContent(gfv: string): Promise<NodeJS.ReadableStream>;\n getAllAttachmentPathFileNames(): Promise<string[]>;\n getAttachmentPathsFileContent(gfv: string): Promise<NodeJS.ReadableStream>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"IGeneratedServerSideSourcesProvider.js","names":[],"sources":["../../../../../../src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.ts"],"sourcesContent":["export interface IGeneratedServerSideSourcesProvider {\n getAllNormalizationFileNames(): Promise<string[]>;\n getNormalizationFileContent(gfv: string): Promise<NodeJS.ReadableStream | null>;\n getAllAttachmentPathFileNames(): Promise<string[]>;\n getAttachmentPathsFileContent(gfv: string): Promise<NodeJS.ReadableStream>;\n}\n"],"mappings":"","ignoreList":[]}