@kontur.candy/tools 2.223.3 → 2.224.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/distr/Common/ArrayUtils.js +4 -0
- package/distr/Common/ArrayUtils.js.map +1 -1
- package/distr/Common/CandyApiClient/CandyApiClient.js +10 -8
- package/distr/Common/CandyApiClient/CandyApiClient.js.map +1 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +51 -51
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js.map +1 -1
- package/distr/Common/CandyApiClient/ICandyApiClient.js.map +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js.map +1 -1
- package/distr/Common/CollectionUtils.js +1 -1
- package/distr/Common/CollectionUtils.js.map +1 -1
- package/distr/Common/Errors.js +4 -0
- package/distr/Common/Errors.js.map +1 -1
- package/distr/Common/FSPrinterClient/FSPrinterClient.js +1 -1
- package/distr/Common/FSPrinterClient/FSPrinterClient.js.map +1 -1
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +3 -3
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js.map +1 -1
- package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -1
- package/distr/Common/FormActionHandlers/ContextualActionNames.js.map +1 -1
- package/distr/Common/Funcs.js.map +1 -1
- package/distr/Common/GetRngSchemaFileExtension.js +1 -1
- package/distr/Common/GetRngSchemaFileExtension.js.map +1 -1
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +2 -1
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js.map +1 -1
- package/distr/Common/HttpClient/HttpClient.js +1 -1
- package/distr/Common/HttpClient/HttpClient.js.map +1 -1
- package/distr/Common/KCLangRuntimeUtils.js +6 -3
- package/distr/Common/KCLangRuntimeUtils.js.map +1 -1
- package/distr/Common/ModelPath/Map/Map2.js +2 -2
- package/distr/Common/ModelPath/Map/Map2.js.map +1 -1
- package/distr/Common/NdsPlusApiClient/INdsPlusApiClient.js +6 -0
- package/distr/Common/NdsPlusApiClient/INdsPlusApiClient.js.map +1 -0
- package/distr/Common/NdsPlusApiClient/NdsPlusApiClient.js +67 -0
- package/distr/Common/NdsPlusApiClient/NdsPlusApiClient.js.map +1 -0
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +5 -5
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js.map +1 -1
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -1
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js.map +1 -1
- package/distr/Common/NidusClient/NidusClientImpl.js +1 -1
- package/distr/Common/NidusClient/NidusClientImpl.js.map +1 -1
- package/distr/Common/PathConstants.js +2 -1
- package/distr/Common/PathConstants.js.map +1 -1
- package/distr/Common/TypingUtils.js +2 -2
- package/distr/Common/TypingUtils.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +8 -8
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathByGfvFiles.js +2 -2
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathByGfvFiles.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +2 -2
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +2 -2
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +1 -2
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js.map +1 -1
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js.map +1 -1
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +3 -3
- package/distr/Tools/src/BuildTasks/ReadFormSource.js.map +1 -1
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +4 -4
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js.map +1 -1
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js +1 -1
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js.map +1 -1
- package/distr/Tools/src/BuildTasks/copyStaticFiles.js +17 -0
- package/distr/Tools/src/BuildTasks/copyStaticFiles.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +4 -4
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +3 -3
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +5 -6
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +3 -3
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js.map +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +2 -2
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -1
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +2 -2
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js.map +1 -1
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js.map +1 -1
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +3 -3
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js.map +1 -1
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js +1 -1
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js.map +1 -1
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +12 -13
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js.map +1 -1
- package/distr/Tools/src/CandyCLI.js +2 -2
- package/distr/Tools/src/CandyCLI.js.map +1 -1
- package/distr/Tools/src/Commons/EventObject.js +1 -1
- package/distr/Tools/src/Commons/EventObject.js.map +1 -1
- package/distr/Tools/src/Commons/FormGlobsUtils.js +1 -2
- package/distr/Tools/src/Commons/FormGlobsUtils.js.map +1 -1
- package/distr/Tools/src/Commons/FsUtils.js +2 -2
- package/distr/Tools/src/Commons/FsUtils.js.map +1 -1
- package/distr/Tools/src/Commons/GitUtils.js +2 -1
- package/distr/Tools/src/Commons/GitUtils.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +3 -3
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +2 -2
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js.map +1 -1
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +2 -2
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js.map +1 -1
- package/distr/Tools/src/Commons/Logging/StaticLogger.js +5 -7
- package/distr/Tools/src/Commons/Logging/StaticLogger.js.map +1 -1
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js.map +1 -1
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +0 -3
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js.map +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js.map +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/SelfUpdate.js +1 -1
- package/distr/Tools/src/SelfUpdate.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +239 -207
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +101 -72
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +2 -2
package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonResultHandler.js","names":["JsonResultHandler","processResult","result","
|
|
1
|
+
{"version":3,"file":"JsonResultHandler.js","names":["JsonResultHandler","processResult","result","_req","res","json","exports"],"sources":["../../../../../../../src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.ts"],"sourcesContent":["import { Response } from \"express\";\n\nimport { IResultHandler } from \"./IResultHandler\";\n\nexport class JsonResultHandler implements IResultHandler {\n public async processResult(result: unknown, _req: Express.Request, res: Response): Promise<void> {\n res.json(result);\n }\n}\n"],"mappings":";;;;;;AAIO,MAAMA,iBAAiB,CAA2B;EACrD,MAAaC,aAAaA,CAACC,MAAe,EAAEC,IAAqB,EAAEC,GAAa,EAAiB;IAC7FA,GAAG,CAACC,IAAI,CAACH,MAAM,CAAC;EACpB;AACJ;AAACI,OAAA,CAAAN,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlainTextResultHandler.js","names":["PlainTextResultHandler","processResult","result","
|
|
1
|
+
{"version":3,"file":"PlainTextResultHandler.js","names":["PlainTextResultHandler","processResult","result","_req","res","send","trim","exports"],"sources":["../../../../../../../src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.ts"],"sourcesContent":["import { Response } from \"express\";\n\nimport { IResultHandler } from \"./IResultHandler\";\n\nexport class PlainTextResultHandler implements IResultHandler {\n public async processResult(result: string, _req: Express.Request, res: Response): Promise<void> {\n res.send(result.trim());\n }\n}\n"],"mappings":";;;;;;AAIO,MAAMA,sBAAsB,CAA2B;EAC1D,MAAaC,aAAaA,CAACC,MAAc,EAAEC,IAAqB,EAAEC,GAAa,EAAiB;IAC5FA,GAAG,CAACC,IAAI,CAACH,MAAM,CAACI,IAAI,CAAC,CAAC,CAAC;EAC3B;AACJ;AAACC,OAAA,CAAAP,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
|
@@ -17,7 +17,7 @@ class StreamResultHandler {
|
|
|
17
17
|
this.mimeType = void 0;
|
|
18
18
|
this.mimeType = mimeType;
|
|
19
19
|
}
|
|
20
|
-
async processResult(result,
|
|
20
|
+
async processResult(result, _req, res) {
|
|
21
21
|
if (result instanceof StreamResult) {
|
|
22
22
|
var _result$mimeType;
|
|
23
23
|
const mimeType = (_result$mimeType = result.mimeType) !== null && _result$mimeType !== void 0 ? _result$mimeType : this.mimeType;
|
package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamResultHandler.js","names":["_fs","require","path","_interopRequireWildcard","_https","_mimeTypes","_interopRequireDefault","_nodeFetch","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StreamResultHandler","constructor","mimeType","processResult","result","
|
|
1
|
+
{"version":3,"file":"StreamResultHandler.js","names":["_fs","require","path","_interopRequireWildcard","_https","_mimeTypes","_interopRequireDefault","_nodeFetch","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StreamResultHandler","constructor","mimeType","processResult","result","_req","res","StreamResult","_result$mimeType","header","stream","on","error","Error","status","send","pipe","FileStreamResult","_ref","_result$mimeType2","mime","lookup","extname","filePath","createReadStream","ProxyGetRequestToResult","_await$result$getMime","getMimeType","getStream","exports","undefined","url","startsWith","response","fetch","method","agent","Agent","rejectUnauthorized","body"],"sources":["../../../../../../../src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.ts"],"sourcesContent":["import { createReadStream } from \"fs\";\nimport * as path from \"path\";\nimport { Agent } from \"https\";\n\nimport { Response } from \"express\";\nimport mime from \"mime-types\";\nimport fetch from \"node-fetch\";\n\nimport { IResultHandler } from \"./IResultHandler\";\n\nexport class StreamResultHandler implements IResultHandler {\n private readonly mimeType: undefined | string;\n\n public constructor(mimeType?: string) {\n this.mimeType = mimeType;\n }\n\n public async processResult(result: StreamReturnResult, _req: Express.Request, res: Response): Promise<void> {\n if (result instanceof StreamResult) {\n const mimeType = result.mimeType ?? this.mimeType;\n if (mimeType) {\n res.header(\"Content-Type\", mimeType);\n }\n result.stream\n .on(\"error\", error => {\n if (error instanceof Error) {\n res.status(404);\n res.header(\"Content-Type\", \"text/plain\");\n res.send(`File not found`);\n return;\n }\n throw error;\n })\n .pipe(res);\n } else if (result instanceof FileStreamResult) {\n const mimeType = result.mimeType ?? this.mimeType ?? mime.lookup(path.extname(result.filePath));\n if (mimeType) {\n res.header(\"Content-Type\", mimeType);\n }\n createReadStream(result.filePath)\n .on(\"error\", error => {\n if (error instanceof Error) {\n res.status(404);\n res.header(\"Content-Type\", \"text/plain\");\n res.send(`${result.filePath} not found`);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw error;\n })\n .pipe(res);\n } else if (result instanceof ProxyGetRequestToResult) {\n const mimeType = (await result.getMimeType()) ?? this.mimeType;\n if (mimeType) {\n res.header(\"Content-Type\", mimeType);\n }\n (await result.getStream()).pipe(res);\n } else {\n if (this.mimeType) {\n res.header(\"Content-Type\", this.mimeType);\n }\n result.pipe(res);\n }\n }\n}\n\nexport class StreamResult {\n public readonly stream: NodeJS.ReadableStream;\n public readonly mimeType?: string;\n\n public constructor(stream: NodeJS.ReadableStream, mimeType?: string | false) {\n this.stream = stream;\n this.mimeType = mimeType === false ? undefined : mimeType;\n }\n}\n\nexport class FileStreamResult {\n public readonly filePath: string;\n public readonly mimeType?: string;\n\n public constructor(filePath: string, mimeType?: string | false) {\n this.filePath = filePath;\n this.mimeType = mimeType === false ? undefined : mimeType;\n }\n}\n\nexport class ProxyGetRequestToResult {\n public readonly url: string;\n public readonly mimeType?: string;\n\n public constructor(url: string, mimeType?: string) {\n this.url = url;\n this.mimeType = mimeType;\n }\n\n public async getStream(): Promise<NodeJS.ReadableStream> {\n if (this.url.startsWith(\"https\")) {\n const response = await fetch(this.url, {\n method: \"GET\",\n agent: new Agent({ rejectUnauthorized: false }),\n });\n return response.body;\n } else {\n const response = await fetch(this.url, {\n method: \"GET\",\n });\n return response.body;\n }\n }\n\n public getMimeType(): Promise<string | undefined> | string | undefined {\n return this.mimeType;\n }\n}\n\nexport type StreamReturnResult = StreamResult | FileStreamResult | NodeJS.ReadableStream | ProxyGetRequestToResult;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,7 +40,7 @@ class ExpressServerWrapper {
|
|
|
40
40
|
this.expressApplication.use(_bodyParser.default.raw({
|
|
41
41
|
type: "application/octet-stream"
|
|
42
42
|
}));
|
|
43
|
-
this.expressApplication.use((req,
|
|
43
|
+
this.expressApplication.use((req, _, next) => {
|
|
44
44
|
this.logger.verbose(req.url);
|
|
45
45
|
next();
|
|
46
46
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressServerWrapper.js","names":["http","_interopRequireWildcard","require","https","_bodyParser","_interopRequireDefault","_cookieParser","_express","_fsExtra","_Methods","_TypingUtils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ExpressServerWrapper","constructor","port","httpsPort","logger","name","expressApplication","singletonControllers","httpServer","httpsServer","express","use","cookieParser","bodyParser","json","limit","raw","type","req","res","next","verbose","url","configureApiRoutes","registerSigletonController","controller","push","start","_this$name","setupMiddleware","httpSetupAttributeRouting","beforeStart","startExpressApplication","_this$httpServer","afterStart","reject","console","log","undefined","_this$name2","stop","_this$httpServer2","_this$httpsServer","close","afterStop","createServer","cert","readFile","resolve","key","Promise","all","_this$httpServer3","listen","setTimeout","exports"],"sources":["../../../../../../src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.ts"],"sourcesContent":["import * as http from \"http\";\nimport * as https from \"https\";\n\nimport bodyParser from \"body-parser\";\nimport cookieParser from \"cookie-parser\";\nimport express, { Express } from \"express\";\nimport { readFile } from \"fs-extra\";\n\nimport { ILogger } from \"../../Logging/ILogger\";\nimport { httpSetupAttributeRouting } from \"../AttributeRouting/Methods\";\nimport { reject } from \"../../../../../Common/TypingUtils\";\n\nimport { SingletonController } from \"./SingletonController\";\n\nexport class ExpressServerWrapper {\n private readonly expressApplication: Express;\n private readonly port: number;\n private readonly httpsPort: undefined | number;\n private readonly singletonControllers: SingletonController[] = [];\n private readonly logger: ILogger;\n private readonly name: undefined | string;\n private httpServer?: http.Server;\n private httpsServer?: undefined | https.Server;\n\n public constructor(port: number, httpsPort: undefined | number, logger: ILogger, name?: string) {\n this.name = name;\n this.port = port;\n this.httpsPort = httpsPort;\n this.logger = logger;\n this.expressApplication = express();\n this.expressApplication.use(cookieParser());\n this.expressApplication.use(bodyParser.json({ limit: \"50mb\" }));\n this.expressApplication.use(bodyParser.raw({ type: \"application/x-www-form-urlencoded\" }));\n this.expressApplication.use(bodyParser.raw({ type: \"application/octet-stream\" }));\n this.expressApplication.use((req, res, next) => {\n this.logger.verbose(req.url);\n next();\n });\n this.configureApiRoutes();\n }\n\n public registerSigletonController(controller: SingletonController): void {\n this.singletonControllers.push(controller);\n }\n\n public async start(): Promise<void> {\n for (const controller of this.singletonControllers) {\n await controller.setupMiddleware(this.expressApplication);\n }\n for (const controller of this.singletonControllers) {\n httpSetupAttributeRouting(controller, this.expressApplication);\n }\n for (const controller of this.singletonControllers) {\n await controller.beforeStart();\n }\n await this.startExpressApplication();\n for (const controller of this.singletonControllers) {\n await controller.afterStart(this.httpServer ?? reject(), this.httpsServer);\n }\n // eslint-disable-next-line no-console\n console.log(`${this.name ?? \"Server\"} started at port ${this.port}!`);\n if (this.httpsPort != undefined) {\n // eslint-disable-next-line no-console\n console.log(`Also ${this.name ?? \"Server\"} started at https on port ${this.httpsPort}!`);\n }\n }\n\n public async stop(): Promise<void> {\n this.httpServer?.close();\n this.httpsServer?.close();\n for (const controller of this.singletonControllers) {\n await controller.afterStop();\n }\n }\n\n private async startExpressApplication(): Promise<void> {\n this.httpServer = http.createServer(this.expressApplication);\n this.httpsServer =\n this.httpsPort != undefined\n ? https.createServer(\n {\n cert: await readFile(require.resolve(\"../../../Keys/localhost.pem\")),\n key: await readFile(require.resolve(\"../../../Keys/localhost-key.pem\")),\n },\n this.expressApplication\n )\n : undefined;\n await Promise.all([\n new Promise<void>(resolve => {\n this.httpServer?.listen(this.port, async () => setTimeout(() => resolve(), 1));\n }),\n new Promise<void>(resolve => {\n if (this.httpsServer != undefined) {\n this.httpsServer.listen(this.httpsPort, async () => setTimeout(() => resolve(), 1));\n } else {\n resolve();\n }\n }),\n ]);\n }\n\n private configureApiRoutes(): void {\n // virtual\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ExpressServerWrapper.js","names":["http","_interopRequireWildcard","require","https","_bodyParser","_interopRequireDefault","_cookieParser","_express","_fsExtra","_Methods","_TypingUtils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ExpressServerWrapper","constructor","port","httpsPort","logger","name","expressApplication","singletonControllers","httpServer","httpsServer","express","use","cookieParser","bodyParser","json","limit","raw","type","req","_","next","verbose","url","configureApiRoutes","registerSigletonController","controller","push","start","_this$name","setupMiddleware","httpSetupAttributeRouting","beforeStart","startExpressApplication","_this$httpServer","afterStart","reject","console","log","undefined","_this$name2","stop","_this$httpServer2","_this$httpsServer","close","afterStop","createServer","cert","readFile","resolve","key","Promise","all","_this$httpServer3","listen","setTimeout","exports"],"sources":["../../../../../../src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.ts"],"sourcesContent":["import * as http from \"http\";\nimport * as https from \"https\";\n\nimport bodyParser from \"body-parser\";\nimport cookieParser from \"cookie-parser\";\nimport express, { Express } from \"express\";\nimport { readFile } from \"fs-extra\";\n\nimport { ILogger } from \"../../Logging/ILogger\";\nimport { httpSetupAttributeRouting } from \"../AttributeRouting/Methods\";\nimport { reject } from \"../../../../../Common/TypingUtils\";\n\nimport { SingletonController } from \"./SingletonController\";\n\nexport class ExpressServerWrapper {\n private readonly expressApplication: Express;\n private readonly port: number;\n private readonly httpsPort: undefined | number;\n private readonly singletonControllers: SingletonController[] = [];\n private readonly logger: ILogger;\n private readonly name: undefined | string;\n private httpServer?: http.Server;\n private httpsServer?: undefined | https.Server;\n\n public constructor(port: number, httpsPort: undefined | number, logger: ILogger, name?: string) {\n this.name = name;\n this.port = port;\n this.httpsPort = httpsPort;\n this.logger = logger;\n this.expressApplication = express();\n this.expressApplication.use(cookieParser());\n this.expressApplication.use(bodyParser.json({ limit: \"50mb\" }));\n this.expressApplication.use(bodyParser.raw({ type: \"application/x-www-form-urlencoded\" }));\n this.expressApplication.use(bodyParser.raw({ type: \"application/octet-stream\" }));\n this.expressApplication.use((req, _, next) => {\n this.logger.verbose(req.url);\n next();\n });\n this.configureApiRoutes();\n }\n\n public registerSigletonController(controller: SingletonController): void {\n this.singletonControllers.push(controller);\n }\n\n public async start(): Promise<void> {\n for (const controller of this.singletonControllers) {\n await controller.setupMiddleware(this.expressApplication);\n }\n for (const controller of this.singletonControllers) {\n httpSetupAttributeRouting(controller, this.expressApplication);\n }\n for (const controller of this.singletonControllers) {\n await controller.beforeStart();\n }\n await this.startExpressApplication();\n for (const controller of this.singletonControllers) {\n await controller.afterStart(this.httpServer ?? reject(), this.httpsServer);\n }\n // eslint-disable-next-line no-console\n console.log(`${this.name ?? \"Server\"} started at port ${this.port}!`);\n if (this.httpsPort != undefined) {\n // eslint-disable-next-line no-console\n console.log(`Also ${this.name ?? \"Server\"} started at https on port ${this.httpsPort}!`);\n }\n }\n\n public async stop(): Promise<void> {\n this.httpServer?.close();\n this.httpsServer?.close();\n for (const controller of this.singletonControllers) {\n await controller.afterStop();\n }\n }\n\n private async startExpressApplication(): Promise<void> {\n this.httpServer = http.createServer(this.expressApplication);\n this.httpsServer =\n this.httpsPort != undefined\n ? https.createServer(\n {\n cert: await readFile(require.resolve(\"../../../Keys/localhost.pem\")),\n key: await readFile(require.resolve(\"../../../Keys/localhost-key.pem\")),\n },\n this.expressApplication\n )\n : undefined;\n await Promise.all([\n new Promise<void>(resolve => {\n this.httpServer?.listen(this.port, async () => setTimeout(() => resolve(), 1));\n }),\n new Promise<void>(resolve => {\n if (this.httpsServer != undefined) {\n this.httpsServer.listen(this.httpsPort, async () => setTimeout(() => resolve(), 1));\n } else {\n resolve();\n }\n }),\n ]);\n }\n\n private configureApiRoutes(): void {\n // virtual\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,13 +8,13 @@ class SingletonController {
|
|
|
8
8
|
async beforeStart() {
|
|
9
9
|
// virtual
|
|
10
10
|
}
|
|
11
|
-
async setupMiddleware(
|
|
11
|
+
async setupMiddleware(_expressApplication) {
|
|
12
12
|
// virtual
|
|
13
13
|
}
|
|
14
14
|
async afterStop() {
|
|
15
15
|
// virtual
|
|
16
16
|
}
|
|
17
|
-
async afterStart(
|
|
17
|
+
async afterStart(_httpServer, _httpsServer) {
|
|
18
18
|
// virtual
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingletonController.js","names":["SingletonController","beforeStart","setupMiddleware","
|
|
1
|
+
{"version":3,"file":"SingletonController.js","names":["SingletonController","beforeStart","setupMiddleware","_expressApplication","afterStop","afterStart","_httpServer","_httpsServer","exports"],"sources":["../../../../../../src/Commons/HttpServer/ExpressWrapper/SingletonController.ts"],"sourcesContent":["import * as http from \"http\";\nimport * as https from \"https\";\n\nimport { Express } from \"express\";\n\nexport abstract class SingletonController {\n public async beforeStart(): Promise<void> {\n // virtual\n }\n\n public async setupMiddleware(_expressApplication: Express): Promise<void> {\n // virtual\n }\n\n public async afterStop(): Promise<void> {\n // virtual\n }\n\n public async afterStart(_httpServer: http.Server, _httpsServer?: https.Server): Promise<void> {\n // virtual\n }\n}\n"],"mappings":";;;;;;AAKO,MAAeA,mBAAmB,CAAC;EACtC,MAAaC,WAAWA,CAAA,EAAkB;IACtC;EAAA;EAGJ,MAAaC,eAAeA,CAACC,mBAA4B,EAAiB;IACtE;EAAA;EAGJ,MAAaC,SAASA,CAAA,EAAkB;IACpC;EAAA;EAGJ,MAAaC,UAAUA,CAACC,WAAwB,EAAEC,YAA2B,EAAiB;IAC1F;EAAA;AAER;AAACC,OAAA,CAAAR,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
@@ -7,21 +7,19 @@ exports.NullLogger = void 0;
|
|
|
7
7
|
exports.getLogger = getLogger;
|
|
8
8
|
exports.setLogger = setLogger;
|
|
9
9
|
class NullLogger {
|
|
10
|
-
warning(
|
|
10
|
+
warning() {
|
|
11
11
|
// empty implementation
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
|
-
error(_message) {
|
|
13
|
+
error() {
|
|
16
14
|
// empty implementation
|
|
17
15
|
}
|
|
18
|
-
log(
|
|
16
|
+
log() {
|
|
19
17
|
// empty implementation
|
|
20
18
|
}
|
|
21
|
-
verbose(
|
|
19
|
+
verbose() {
|
|
22
20
|
// empty implementation
|
|
23
21
|
}
|
|
24
|
-
withPrefix(
|
|
22
|
+
withPrefix() {
|
|
25
23
|
// empty implementation
|
|
26
24
|
return this;
|
|
27
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticLogger.js","names":["NullLogger","warning","
|
|
1
|
+
{"version":3,"file":"StaticLogger.js","names":["NullLogger","warning","error","log","verbose","withPrefix","exports","staticLoggerInstance","setLogger","logger","getLogger"],"sources":["../../../../../src/Commons/Logging/StaticLogger.ts"],"sourcesContent":["import { ILogger } from \"./ILogger\";\n\nexport class NullLogger implements ILogger {\n public warning(): void {\n // empty implementation\n }\n\n public error(): void {\n // empty implementation\n }\n\n public log(): void {\n // empty implementation\n }\n\n public verbose(): void {\n // empty implementation\n }\n\n public withPrefix(): ILogger {\n // empty implementation\n return this;\n }\n}\n\nlet staticLoggerInstance: ILogger = new NullLogger();\n\nexport function setLogger(logger: ILogger): void {\n staticLoggerInstance = logger;\n}\n\nexport function getLogger(): ILogger {\n return staticLoggerInstance;\n}\n"],"mappings":";;;;;;;;AAEO,MAAMA,UAAU,CAAoB;EAChCC,OAAOA,CAAA,EAAS;IACnB;EAAA;EAGGC,KAAKA,CAAA,EAAS;IACjB;EAAA;EAGGC,GAAGA,CAAA,EAAS;IACf;EAAA;EAGGC,OAAOA,CAAA,EAAS;IACnB;EAAA;EAGGC,UAAUA,CAAA,EAAY;IACzB;IACA,OAAO,IAAI;EACf;AACJ;AAACC,OAAA,CAAAN,UAAA,GAAAA,UAAA;AAED,IAAIO,oBAA6B,GAAG,IAAIP,UAAU,CAAC,CAAC;AAE7C,SAASQ,SAASA,CAACC,MAAe,EAAQ;EAC7CF,oBAAoB,GAAGE,MAAM;AACjC;AAEO,SAASC,SAASA,CAAA,EAAY;EACjC,OAAOH,oBAAoB;AAC/B","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandBasedOptionsParser.d.js","names":[],"sources":["../../../../../src/Commons/Options/CommandBasedOptionsParser.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\ntype OptionDefinition<T> =\n | {\n alias?: string;\n name: string;\n defaultValue: T;\n parse: (input: string) => T;\n multiple?: false;\n defaultOption?: boolean;\n doesNotRequireValue?: false;\n description: string;\n }\n | {\n alias?: string;\n name: string;\n defaultValue: T;\n parse: (input: string[]) => T;\n multiple: true;\n defaultOption: boolean;\n doesNotRequireValue?: false;\n description: string;\n }\n | {\n alias?: string;\n name: string;\n defaultValue: T;\n parse: (input: boolean) => T;\n multiple?: false;\n defaultOption?: false;\n doesNotRequireValue: true;\n description: string;\n };\n\nexport type OptionsDefinition<T> = Array<OptionDefinition<any>> & { __Opaque__: T };\n\nexport type CommandsDefinition<T> = Array<CommandDefinition<any, any>> & { __OPAQUE__: T };\n\ninterface CommandDefinition<T, O> {\n name: string;\n typeValue: T;\n options: OptionsDefinition<T>;\n description?: string;\n detailedDescription?: string;\n examples?: string;\n extendedDetails?: string;\n}\n\ntype OptionsDefinitionList<TArgs extends any[]> = { [P in keyof TArgs]: OptionDefinition<TArgs[P]> };\n\ntype And<TArgs extends any[]> = TArgs extends []\n ? object\n : TArgs extends [infer T1]\n ? T1\n : TArgs extends [infer T1, infer T2]\n ? T1 & T2\n : TArgs extends [infer T1, infer T2, infer T3]\n ? T1 & T2 & T3\n : TArgs extends [infer T1, infer T2, infer T3, infer T4]\n ? T1 & T2 & T3 & T4\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5]\n ? T1 & T2 & T3 & T4 & T5\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6]\n ? T1 & T2 & T3 & T4 & T5 & T6\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7]\n ? T1 & T2 & T3 & T4 & T5 & T6 & T7\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7, infer T8]\n ? T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8\n : TArgs extends [\n infer T1,\n infer T2,\n infer T3,\n infer T4,\n infer T5,\n infer T6,\n infer T7,\n infer T8,\n infer T9,\n ]\n ? T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9\n : never;\n\ntype Or<TArgs extends any[]> = TArgs extends []\n ? object\n : TArgs extends [infer T1]\n ? T1\n : TArgs extends [infer T1, infer T2]\n ? T1 | T2\n : TArgs extends [infer T1, infer T2, infer T3]\n ? T1 | T2 | T3\n : TArgs extends [infer T1, infer T2, infer T3, infer T4]\n ? T1 | T2 | T3 | T4\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5]\n ? T1 | T2 | T3 | T4 | T5\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6]\n ? T1 | T2 | T3 | T4 | T5 | T6\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7]\n ? T1 | T2 | T3 | T4 | T5 | T6 | T7\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7, infer T8]\n ? T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8\n : TArgs extends [\n infer T1,\n infer T2,\n infer T3,\n infer T4,\n infer T5,\n infer T6,\n infer T7,\n infer T8,\n infer T9,\n ]\n ? T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9\n : never;\n\nexport function optionsDefinition<TArgs extends any[]>(\n ...args: OptionsDefinitionList<TArgs>\n): OptionsDefinition<And<TArgs>>;\n\ninterface CommandDefinitionOptions {\n description?: string;\n detailedDescription?: string;\n examples?: string;\n extendedDetails?: string;\n}\n\nexport declare function commandDefinition<T, O>(\n name: string,\n type: T,\n def: OptionsDefinition<O>,\n options?: CommandDefinitionOptions\n): CommandDefinition<{ type: T }, O>;\n\nexport declare function commandsDefinition<T1, O1>(\n c1: CommandDefinition<T1, O1>\n): CommandsDefinition<T1 & { options: O1 }>;\nexport declare function commandsDefinition<T1, O1, T2, O2>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>\n): CommandsDefinition<(T1 & { options: O1 }) | (T2 & { options: O2 })>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>\n): CommandsDefinition<(T1 & { options: O1 }) | (T2 & { options: O2 }) | (T3 & { options: O3 })>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>\n): CommandsDefinition<\n (T1 & { options: O1 }) | (T2 & { options: O2 }) | (T3 & { options: O3 }) | (T4 & { options: O4 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5, T6, O6>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5, T6, O6, T7, O7>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5, T6, O6, T7, O7, T8, O8>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>,\n c8: CommandDefinition<T8, O8>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n | (T8 & { options: O8 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5, T6, O6, T7, O7, T8, O8, T9, O9>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>,\n c8: CommandDefinition<T8, O8>,\n c9: CommandDefinition<T9, O9>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n | (T8 & { options: O8 })\n | (T9 & { options: O9 })\n>;\nexport declare function commandsDefinition<\n T1,\n O1,\n T2,\n O2,\n T3,\n O3,\n T4,\n O4,\n T5,\n O5,\n T6,\n O6,\n T7,\n O7,\n T8,\n O8,\n T9,\n O9,\n T10,\n O10,\n>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>,\n c8: CommandDefinition<T8, O8>,\n c8: CommandDefinition<T9, O9>,\n c9: CommandDefinition<T10, O10>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n | (T8 & { options: O8 })\n | (T9 & { options: O9 })\n | (T10 & { options: O10 })\n>;\nexport declare function commandsDefinition<\n T1,\n O1,\n T2,\n O2,\n T3,\n O3,\n T4,\n O4,\n T5,\n O5,\n T6,\n O6,\n T7,\n O7,\n T8,\n O8,\n T9,\n O9,\n T10,\n O10,\n T11,\n O11,\n>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>,\n c8: CommandDefinition<T8, O8>,\n c8: CommandDefinition<T9, O9>,\n c9: CommandDefinition<T10, O10>,\n c10: CommandDefinition<T11, O11>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n | (T8 & { options: O8 })\n | (T9 & { options: O9 })\n | (T10 & { options: O10 })\n | (T11 & { options: O11 })\n>;\n\nexport declare function buildCommandBasedOptionsParser<T>(\n def: CommandsDefinition<T>,\n options: BuildCommandBasedOptionsParserConfig\n): CommandLineArgsParser<T>;\n\ninterface BuildCommandBasedOptionsParserConfig {\n commandName: string;\n commandDescription: string;\n usageString?: string;\n}\n\ninterface CommandLineArgsParser<T> {\n (input: string[]): T;\n getCommandListUsage(): stirng;\n getCommandUsage(type: T.type): stirng;\n}\n\nexport declare class InvalidCommandLineArgumentsError extends Error {\n public readonly usageText: string;\n public constructor(message: string, usageText: string);\n}\n\nexport declare class CommandLineArgumentsHelpRequestedError extends Error {\n public readonly usageText: string;\n public constructor(usageText: string);\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CommandBasedOptionsParser.d.js","names":[],"sources":["../../../../../src/Commons/Options/CommandBasedOptionsParser.d.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\ntype OptionDefinition<T> =\n | {\n alias?: string;\n name: string;\n defaultValue: T;\n parse: (input: string) => T;\n multiple?: false;\n defaultOption?: boolean;\n doesNotRequireValue?: false;\n description: string;\n }\n | {\n alias?: string;\n name: string;\n defaultValue: T;\n parse: (input: string[]) => T;\n multiple: true;\n defaultOption: boolean;\n doesNotRequireValue?: false;\n description: string;\n }\n | {\n alias?: string;\n name: string;\n defaultValue: T;\n parse: (input: boolean) => T;\n multiple?: false;\n defaultOption?: false;\n doesNotRequireValue: true;\n description: string;\n };\n\nexport type OptionsDefinition<T> = Array<OptionDefinition<any>> & { __Opaque__: T };\n\nexport type CommandsDefinition<T> = Array<CommandDefinition<any, any>> & { __OPAQUE__: T };\n\ninterface CommandDefinition<T, _O> {\n name: string;\n typeValue: T;\n options: OptionsDefinition<T>;\n description?: string;\n detailedDescription?: string;\n examples?: string;\n extendedDetails?: string;\n}\n\ntype OptionsDefinitionList<TArgs extends any[]> = { [P in keyof TArgs]: OptionDefinition<TArgs[P]> };\n\ntype And<TArgs extends any[]> = TArgs extends []\n ? object\n : TArgs extends [infer T1]\n ? T1\n : TArgs extends [infer T1, infer T2]\n ? T1 & T2\n : TArgs extends [infer T1, infer T2, infer T3]\n ? T1 & T2 & T3\n : TArgs extends [infer T1, infer T2, infer T3, infer T4]\n ? T1 & T2 & T3 & T4\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5]\n ? T1 & T2 & T3 & T4 & T5\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6]\n ? T1 & T2 & T3 & T4 & T5 & T6\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7]\n ? T1 & T2 & T3 & T4 & T5 & T6 & T7\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7, infer T8]\n ? T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8\n : TArgs extends [\n infer T1,\n infer T2,\n infer T3,\n infer T4,\n infer T5,\n infer T6,\n infer T7,\n infer T8,\n infer T9,\n ]\n ? T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9\n : never;\n\ntype Or<TArgs extends any[]> = TArgs extends []\n ? object\n : TArgs extends [infer T1]\n ? T1\n : TArgs extends [infer T1, infer T2]\n ? T1 | T2\n : TArgs extends [infer T1, infer T2, infer T3]\n ? T1 | T2 | T3\n : TArgs extends [infer T1, infer T2, infer T3, infer T4]\n ? T1 | T2 | T3 | T4\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5]\n ? T1 | T2 | T3 | T4 | T5\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6]\n ? T1 | T2 | T3 | T4 | T5 | T6\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7]\n ? T1 | T2 | T3 | T4 | T5 | T6 | T7\n : TArgs extends [infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7, infer T8]\n ? T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8\n : TArgs extends [\n infer T1,\n infer T2,\n infer T3,\n infer T4,\n infer T5,\n infer T6,\n infer T7,\n infer T8,\n infer T9,\n ]\n ? T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9\n : never;\n\nexport function optionsDefinition<TArgs extends any[]>(\n ...args: OptionsDefinitionList<TArgs>\n): OptionsDefinition<And<TArgs>>;\n\ninterface CommandDefinitionOptions {\n description?: string;\n detailedDescription?: string;\n examples?: string;\n extendedDetails?: string;\n}\n\nexport declare function commandDefinition<T, O>(\n name: string,\n type: T,\n def: OptionsDefinition<O>,\n options?: CommandDefinitionOptions\n): CommandDefinition<{ type: T }, O>;\n\nexport declare function commandsDefinition<T1, O1>(\n c1: CommandDefinition<T1, O1>\n): CommandsDefinition<T1 & { options: O1 }>;\nexport declare function commandsDefinition<T1, O1, T2, O2>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>\n): CommandsDefinition<(T1 & { options: O1 }) | (T2 & { options: O2 })>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>\n): CommandsDefinition<(T1 & { options: O1 }) | (T2 & { options: O2 }) | (T3 & { options: O3 })>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>\n): CommandsDefinition<\n (T1 & { options: O1 }) | (T2 & { options: O2 }) | (T3 & { options: O3 }) | (T4 & { options: O4 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5, T6, O6>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5, T6, O6, T7, O7>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5, T6, O6, T7, O7, T8, O8>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>,\n c8: CommandDefinition<T8, O8>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n | (T8 & { options: O8 })\n>;\nexport declare function commandsDefinition<T1, O1, T2, O2, T3, O3, T4, O4, T5, O5, T6, O6, T7, O7, T8, O8, T9, O9>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>,\n c8: CommandDefinition<T8, O8>,\n c9: CommandDefinition<T9, O9>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n | (T8 & { options: O8 })\n | (T9 & { options: O9 })\n>;\nexport declare function commandsDefinition<\n T1,\n O1,\n T2,\n O2,\n T3,\n O3,\n T4,\n O4,\n T5,\n O5,\n T6,\n O6,\n T7,\n O7,\n T8,\n O8,\n T9,\n O9,\n T10,\n O10,\n>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>,\n c8: CommandDefinition<T8, O8>,\n c8: CommandDefinition<T9, O9>,\n c9: CommandDefinition<T10, O10>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n | (T8 & { options: O8 })\n | (T9 & { options: O9 })\n | (T10 & { options: O10 })\n>;\nexport declare function commandsDefinition<\n T1,\n O1,\n T2,\n O2,\n T3,\n O3,\n T4,\n O4,\n T5,\n O5,\n T6,\n O6,\n T7,\n O7,\n T8,\n O8,\n T9,\n O9,\n T10,\n O10,\n T11,\n O11,\n>(\n c1: CommandDefinition<T1, O1>,\n c2: CommandDefinition<T2, O2>,\n c3: CommandDefinition<T3, O3>,\n c4: CommandDefinition<T4, O4>,\n c5: CommandDefinition<T5, O5>,\n c6: CommandDefinition<T6, O6>,\n c7: CommandDefinition<T7, O7>,\n c8: CommandDefinition<T8, O8>,\n c8: CommandDefinition<T9, O9>,\n c9: CommandDefinition<T10, O10>,\n c10: CommandDefinition<T11, O11>\n): CommandsDefinition<\n | (T1 & { options: O1 })\n | (T2 & { options: O2 })\n | (T3 & { options: O3 })\n | (T4 & { options: O4 })\n | (T5 & { options: O5 })\n | (T6 & { options: O6 })\n | (T7 & { options: O7 })\n | (T8 & { options: O8 })\n | (T9 & { options: O9 })\n | (T10 & { options: O10 })\n | (T11 & { options: O11 })\n>;\n\nexport declare function buildCommandBasedOptionsParser<T>(\n def: CommandsDefinition<T>,\n options: BuildCommandBasedOptionsParserConfig\n): CommandLineArgsParser<T>;\n\ninterface BuildCommandBasedOptionsParserConfig {\n commandName: string;\n commandDescription: string;\n usageString?: string;\n}\n\ninterface CommandLineArgsParser<T> {\n (input: string[]): T;\n getCommandListUsage(): stirng;\n getCommandUsage(type: T.type): stirng;\n}\n\nexport declare class InvalidCommandLineArgumentsError extends Error {\n public readonly usageText: string;\n public constructor(message: string, usageText: string);\n}\n\nexport declare class CommandLineArgumentsHelpRequestedError extends Error {\n public readonly usageText: string;\n public constructor(usageText: string);\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainableValueProducer.js","names":["_lodash","_interopRequireDefault","require","_pLimit","_IterableUtils","_TypingUtils","_GetCpuLimits","_AggregatedError","noop","ChainableValueProducer","constructor","errorListeners","onNext","_listener","Error","onError","listener","push","index","indexOf","splice","currentValue","transform","transformFunction","TransformValueProducer","do","action","ExecuteOnValueProducer","chainWith","nextItemFactory","attach","attachFactory","joinValues","evaluateAttachKey","AttachValueProducer","skipUpdatesUntilNextCompleted","SkipUpdatesUntilNextCompletedProducer","splitToChains","splitFunction","getKey","factory","SplitToChainsValueProducer","splitToParallelChains","ParallelSplitToChainsValueProducer","observe","beginObserve","detachListener","endObserve","emitError","error","errorObject","errorListener","exports","ObservableValueProducerBase","args","listeners","getCurrentValue","beginListening","stopListening","emitUpdate","value","notifyAllListenersAndWaitForComplete","nextValue","parent","lastAttachKey","attachedProducer","detachParentListener","detachAttachedListener","lastAttachedValue","lastParentValue","awaitingLastAttachedValue","isInObserveState","handleChangeAttachedValue","attachedValue","undefined","emitNextValue","handleChangeParentValue","parentValue","attachKey","delay","x","length","e","console","log","chains","handleChangeParentChain","key","chainValue","lastValue","emitValue","Object","values","map","filter","isNotNullOrUndefined","handleChangeParent","input","nextValuesMap","toMap","newKeys","_","difference","keys","removedKeys","newKey","_nextValuesMap$newKey","newChain","reject","newChainValue","valueProducer","removedKey","removedChain","result","errors","childValueProducer","childValue","AggregatedError","iterateValues","_nextValuesMap$newKey2","cpuLimit","getCpuLimits","concurrencyLimit","pLimit","Promise","all","_this$chains$key","detachFromParent","nextEmitToProcess","currentlyProcessingEmit","once","timeout","resolve","setTimeout"],"sources":["../../../../../src/Commons/TasksCore/ChainableValueProducer.ts"],"sourcesContent":["import _ from \"lodash\";\nimport pLimit from \"p-limit\";\n\nimport { ReasonOrError } from \"../ErrorUntyped\";\nimport { iterateValues } from \"../../../../Common/IterableUtils\";\nimport { reject } from \"../../../../Common/TypingUtils\";\nimport { getCpuLimits } from \"../GetCpuLimits\";\n\nimport { AggregatedError } from \"./AggregatedError\";\nimport { DetachListener, IValueProducer, ValueListener } from \"./BuildTask\";\n\nasync function noop(): Promise<void> {\n // empty function\n}\n\nexport class ChainableValueProducer<T> implements IValueProducer<T> {\n private readonly errorListeners: Array<ValueListener<Error>> = [];\n\n public onNext(_listener: (nextValue: T) => Promise<void>): DetachListener {\n throw new Error(\"AbstractError\");\n }\n\n public onError(listener: (error: Error) => Promise<void>): DetachListener {\n this.errorListeners.push(listener);\n return () => {\n const index = this.errorListeners.indexOf(listener);\n if (index >= 0) {\n this.errorListeners.splice(index, 1);\n }\n };\n }\n\n public get currentValue(): Promise<T> {\n throw new Error(\"AbstractError\");\n }\n\n public transform<TO>(transformFunction: (input: T) => Promise<TO>): TransformValueProducer<T, TO> {\n return new TransformValueProducer(this, transformFunction);\n }\n\n public do(action: (input: T) => Promise<void>): ExecuteOnValueProducer<T> {\n return new ExecuteOnValueProducer(this, action);\n }\n\n public chainWith<TO, TVP extends IValueProducer<TO>>(nextItemFactory: (prevItem: IValueProducer<T>) => TVP): TVP {\n return nextItemFactory(this);\n }\n\n public attach<TA, TO = T>(\n attachFactory: (value: T) => Promise<IValueProducer<TA>>,\n joinValues?: (original: T, attached: TA) => Promise<TO>,\n evaluateAttachKey?: (value: T) => Promise<string>\n ): AttachValueProducer<T, TA, TO> {\n return new AttachValueProducer(this, attachFactory, joinValues, evaluateAttachKey);\n }\n\n public skipUpdatesUntilNextCompleted(): SkipUpdatesUntilNextCompletedProducer<T> {\n return new SkipUpdatesUntilNextCompletedProducer(this);\n }\n\n public splitToChains<TI, TO>(\n splitFunction: (input: T) => TI[],\n getKey: (input: TI) => string,\n factory: (input: TI) => IValueProducer<TO>\n ): SplitToChainsValueProducer<T, TI, TO> {\n return new SplitToChainsValueProducer(this, splitFunction, getKey, factory);\n }\n\n public splitToParallelChains<TI, TO>(\n splitFunction: (input: T) => TI[],\n getKey: (input: TI) => string,\n factory: (input: TI) => IValueProducer<TO> | Promise<IValueProducer<TO>>\n ): ParallelSplitToChainsValueProducer<T, TI, TO> {\n return new ParallelSplitToChainsValueProducer(this, splitFunction, getKey, factory);\n }\n\n public async observe(listener: ValueListener<T> = noop): Promise<() => Promise<void>> {\n await this.beginObserve();\n await listener(await this.currentValue);\n const detachListener = this.onNext(listener);\n return async () => {\n detachListener();\n await this.endObserve();\n };\n }\n\n public async beginObserve(): Promise<void> {\n throw new Error(\"AbstractError\");\n }\n\n public async endObserve(): Promise<void> {\n throw new Error(\"AbstractError\");\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected async emitError(error: any): Promise<void> {\n const errorObject = error instanceof Error ? error : new Error(`${error}`);\n for (const errorListener of this.errorListeners) {\n await errorListener(errorObject);\n }\n }\n}\n\nexport class ObservableValueProducerBase<T> extends ChainableValueProducer<T> {\n public get currentValue(): Promise<T> {\n return this.getCurrentValue();\n }\n\n private readonly listeners: Array<ValueListener<T>> = [];\n\n protected async getCurrentValue(): Promise<T> {\n throw new Error(\"AbstractError\");\n }\n\n public async beginObserve(): Promise<void> {\n await this.beginListening();\n }\n\n public async endObserve(): Promise<void> {\n await this.stopListening();\n }\n\n protected async beginListening(): Promise<void> {\n throw new Error(\"AbstractError\");\n }\n\n protected async stopListening(): Promise<void> {\n throw new Error(\"AbstractError\");\n }\n\n protected async emitUpdate(value: T): Promise<void> {\n await this.notifyAllListenersAndWaitForComplete(value);\n }\n\n public onNext(listener: (nextValue: T) => Promise<void>): DetachListener {\n this.listeners.push(listener);\n return () => {\n const index = this.listeners.indexOf(listener);\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n };\n }\n\n private async notifyAllListenersAndWaitForComplete(nextValue: T): Promise<void> {\n for (const listener of this.listeners) {\n await listener(nextValue);\n }\n }\n}\n\nexport class AttachValueProducer<TI, TA, TO> extends ChainableValueProducer<TO> {\n private readonly parent: IValueProducer<TI>;\n private readonly attachFactory: (value: TI) => Promise<IValueProducer<TA>>;\n private readonly joinValues: (original: TI, attached: TA) => Promise<TO>;\n private lastAttachKey?: string;\n private attachedProducer?: IValueProducer<TA>;\n private readonly evaluateAttachKey: (value: TI) => Promise<string>;\n private readonly listeners: Array<ValueListener<TO>> = [];\n private detachParentListener?: DetachListener;\n private detachAttachedListener?: DetachListener;\n private lastAttachedValue?: TA;\n private lastParentValue?: TI;\n private awaitingLastAttachedValue = false;\n private isInObserveState = false;\n\n public constructor(\n parent: IValueProducer<TI>,\n attachFactory: (value: TI) => Promise<IValueProducer<TA>>,\n joinValues?: (original: TI, attached: TA) => Promise<TO>,\n evaluateAttachKey?: (value: TI) => Promise<string>\n ) {\n super();\n this.parent = parent;\n this.attachFactory = attachFactory;\n // Я не могу победить типизацию в этом месте, слишком много у меня кода получается\n // @ts-ignore\n this.joinValues = joinValues || (async x => x);\n this.evaluateAttachKey = evaluateAttachKey || (async () => \"STATIC-ATTACH-KEY\");\n }\n\n public async beginObserve(): Promise<void> {\n this.isInObserveState = true;\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n if (this.attachedProducer != undefined) {\n await this.attachedProducer.endObserve();\n }\n this.isInObserveState = false;\n }\n\n public get currentValue(): Promise<TO> {\n const getCurrentValue = async (): Promise<TO> => {\n const parentValue = await this.parent.currentValue;\n this.lastParentValue = parentValue;\n const attachKey = await this.evaluateAttachKey(parentValue);\n if (this.attachedProducer != undefined && this.detachAttachedListener == undefined) {\n this.detachAttachedListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n if (this.lastAttachKey == undefined || this.lastAttachKey !== attachKey) {\n this.lastAttachKey = attachKey;\n if (this.detachAttachedListener != undefined) {\n this.detachAttachedListener();\n }\n if (this.attachedProducer != undefined && this.isInObserveState) {\n await this.attachedProducer.endObserve();\n }\n this.attachedProducer = await this.attachFactory(parentValue);\n if (this.isInObserveState) {\n await this.attachedProducer.beginObserve();\n }\n this.detachAttachedListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n if (this.attachedProducer == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n const attachedValue = await this.attachedProducer.currentValue;\n this.lastAttachedValue = attachedValue;\n return this.joinValues(parentValue, attachedValue);\n };\n return getCurrentValue();\n }\n\n public async emitNextValue(value: TO): Promise<void> {\n for (const listener of this.listeners) {\n await listener(value);\n }\n }\n\n public onNext(listener: (nextValue: TO) => Promise<void>): DetachListener {\n this.listeners.push(listener);\n if (this.listeners.length === 1) {\n if (this.detachParentListener == undefined) {\n this.detachParentListener = this.parent.onNext(this.handleChangeParentValue);\n }\n if (this.attachedProducer != undefined && this.detachParentListener == undefined) {\n this.detachParentListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n }\n return () => {\n const index = this.listeners.indexOf(listener);\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n if (this.listeners.length === 0) {\n if (this.detachParentListener != undefined) {\n this.detachParentListener();\n }\n if (this.detachAttachedListener != undefined) {\n this.detachAttachedListener();\n }\n }\n };\n }\n\n private readonly handleChangeAttachedValue = async (attachedValue: TA): Promise<void> => {\n this.lastAttachedValue = attachedValue;\n if (!this.awaitingLastAttachedValue) {\n if (this.lastParentValue == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n await this.emitNextValue(await this.joinValues(this.lastParentValue, attachedValue));\n }\n };\n\n private readonly handleChangeParentValue = async (parentValue: TI): Promise<void> => {\n this.lastParentValue = parentValue;\n const attachKey = await this.evaluateAttachKey(parentValue);\n if (this.attachedProducer != undefined && this.detachAttachedListener == undefined) {\n this.detachAttachedListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n if (this.lastAttachKey == undefined || this.lastAttachKey !== attachKey) {\n this.lastAttachKey = attachKey;\n if (this.detachAttachedListener != undefined) {\n this.detachAttachedListener();\n }\n if (this.attachedProducer != undefined && this.isInObserveState) {\n await this.attachedProducer.endObserve();\n }\n this.attachedProducer = await this.attachFactory(parentValue);\n if (this.isInObserveState) {\n await this.attachedProducer.beginObserve();\n }\n this.detachAttachedListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n if (this.attachedProducer == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n // Просто немного обождем, вдруг придёт другое attachedValue\n this.awaitingLastAttachedValue = true;\n await delay(700);\n this.awaitingLastAttachedValue = false;\n let attachedValue = this.lastAttachedValue;\n if (attachedValue == undefined) {\n attachedValue = await this.attachedProducer.currentValue;\n }\n await this.emitNextValue(await this.joinValues(parentValue, attachedValue));\n };\n}\n\nexport class ExecuteOnValueProducer<T> extends ChainableValueProducer<T> {\n private readonly parent: IValueProducer<T>;\n private readonly action: (value: T) => Promise<void>;\n\n public constructor(parent: IValueProducer<T>, action: (value: T) => Promise<void>) {\n super();\n this.parent = parent;\n this.action = action;\n }\n\n public async beginObserve(): Promise<void> {\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n }\n\n public get currentValue(): Promise<T> {\n const getCurrentValue = async (): Promise<T> => {\n const value = await this.parent.currentValue;\n await this.action(value);\n return value;\n };\n return getCurrentValue();\n }\n\n public onNext(listener: (nextValue: T) => Promise<void>): DetachListener {\n return this.parent.onNext(async parentValue => {\n try {\n const value = parentValue;\n await this.action(value);\n await listener(value);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n await this.emitError(e);\n }\n });\n }\n}\n\nexport class TransformValueProducer<TI, TO> extends ChainableValueProducer<TO> {\n private readonly parent: IValueProducer<TI>;\n private readonly transformFunction: (value: TI) => Promise<TO>;\n\n public constructor(parent: IValueProducer<TI>, transformFunction: (value: TI) => Promise<TO>) {\n super();\n this.parent = parent;\n this.transformFunction = transformFunction;\n }\n\n public async beginObserve(): Promise<void> {\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n }\n\n public get currentValue(): Promise<TO> {\n const getCurrentValue = async (): Promise<TO> => this.transformFunction(await this.parent.currentValue);\n return getCurrentValue();\n }\n\n public onNext(listener: (nextValue: TO) => Promise<void>): DetachListener {\n return this.parent.onNext(async parentValue => {\n try {\n await listener(await this.transformFunction(parentValue));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n await this.emitError(e);\n }\n });\n }\n}\n\nexport class SplitToChainsValueProducer<T, TI, TO> extends ChainableValueProducer<TO[]> {\n private readonly parent: IValueProducer<T>;\n private readonly splitFunction: (input: T) => TI[];\n private readonly getKey: (input: TI) => string;\n private readonly factory: (input: TI) => IValueProducer<TO>;\n private readonly listeners: Array<ValueListener<TO[]>> = [];\n private readonly chains: {\n [key: string]: {\n valueProducer: IValueProducer<TO>;\n lastValue: undefined | TO;\n detachListener: DetachListener;\n };\n } = {};\n private isInObserveState = false;\n\n public constructor(\n parent: IValueProducer<T>,\n splitFunction: (input: T) => TI[],\n getKey: (input: TI) => string,\n factory: (input: TI) => IValueProducer<TO>\n ) {\n super();\n this.parent = parent;\n this.splitFunction = splitFunction;\n this.getKey = getKey;\n this.factory = factory;\n this.parent.onNext(this.handleChangeParent);\n }\n\n public get currentValue(): Promise<TO[]> {\n const getCurrentValue = async (): Promise<TO[]> => {\n const values = this.splitFunction(await this.parent.currentValue);\n const result: TO[] = [];\n const errors: ReasonOrError[] = [];\n for (const value of values) {\n const childValueProducer = this.factory(value);\n if (this.isInObserveState) {\n await childValueProducer.beginObserve();\n }\n try {\n const childValue = await childValueProducer.currentValue;\n result.push(childValue);\n const key = this.getKey(value);\n this.chains[key] = {\n lastValue: childValue,\n valueProducer: childValueProducer,\n detachListener: childValueProducer.onNext(x => this.handleChangeParentChain(x, key)),\n };\n } catch (e) {\n if (this.isInObserveState) {\n // eslint-disable-next-line no-console\n console.log(e);\n } else {\n errors.push(e);\n }\n const key = this.getKey(value);\n this.chains[key] = {\n lastValue: undefined,\n valueProducer: childValueProducer,\n detachListener: childValueProducer.onNext(x => this.handleChangeParentChain(x, key)),\n };\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n } else if (errors.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new AggregatedError(\"There are errors\", ...errors);\n }\n return result;\n };\n return getCurrentValue();\n }\n\n public async beginObserve(): Promise<void> {\n this.isInObserveState = true;\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n for (const value of iterateValues(this.chains)) {\n await value.valueProducer.endObserve();\n }\n this.isInObserveState = false;\n }\n\n public onNext(listener: (nextValue: TO[]) => Promise<void>): DetachListener {\n this.listeners.push(listener);\n return () => {\n const index = this.listeners.indexOf(listener);\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n };\n }\n\n private async emitValue(value: TO[]): Promise<void> {\n for (const listener of this.listeners) {\n await listener(value);\n }\n }\n\n private toMap(values: TI[]): { [key: string]: TI } {\n const result: { [key: string]: TI } = {};\n for (const value of values) {\n result[this.getKey(value)] = value;\n }\n return result;\n }\n\n private readonly handleChangeParentChain = async (nextValue: TO, key: string): Promise<void> => {\n const chainValue = this.chains[key];\n if (chainValue != undefined) {\n chainValue.lastValue = nextValue;\n }\n await this.emitValue(\n Object.values(this.chains)\n .map(x => x.lastValue)\n .filter(isNotNullOrUndefined)\n );\n };\n\n private readonly handleChangeParent = async (input: T): Promise<void> => {\n const values = this.splitFunction(input);\n const nextValuesMap = this.toMap(values);\n\n const newKeys = _.difference(Object.keys(nextValuesMap), Object.keys(this.chains));\n const removedKeys = _.difference(Object.keys(this.chains), Object.keys(nextValuesMap));\n for (const newKey of newKeys) {\n const newChain = this.factory(nextValuesMap[newKey] ?? reject());\n if (this.isInObserveState) {\n await newChain.beginObserve();\n }\n try {\n const newChainValue = await newChain.currentValue;\n this.chains[newKey] = {\n lastValue: newChainValue,\n valueProducer: newChain,\n detachListener: newChain.onNext(nextValue => this.handleChangeParentChain(nextValue, newKey)),\n };\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n this.chains[newKey] = {\n lastValue: undefined,\n valueProducer: newChain,\n detachListener: newChain.onNext(nextValue => this.handleChangeParentChain(nextValue, newKey)),\n };\n }\n }\n for (const removedKey of removedKeys) {\n const removedChain = this.chains[removedKey];\n removedChain?.detachListener();\n if (this.isInObserveState) {\n await removedChain?.valueProducer.endObserve();\n }\n // Я не знаю, как тут правильно\n delete this.chains[removedKey];\n }\n await this.emitValue(\n Object.values(this.chains)\n .map(x => x.lastValue)\n .filter(isNotNullOrUndefined)\n );\n };\n}\n\nexport class ParallelSplitToChainsValueProducer<T, TI, TO> extends ChainableValueProducer<TO[]> {\n private readonly parent: IValueProducer<T>;\n private readonly splitFunction: (input: T) => TI[];\n private readonly getKey: (input: TI) => string;\n private readonly factory: (input: TI) => IValueProducer<TO> | Promise<IValueProducer<TO>>;\n private readonly listeners: Array<ValueListener<TO[]>> = [];\n private readonly chains: {\n [key: string]: {\n valueProducer: IValueProducer<TO>;\n lastValue: undefined | TO;\n detachListener: DetachListener;\n };\n } = {};\n private isInObserveState = false;\n\n public constructor(\n parent: IValueProducer<T>,\n splitFunction: (input: T) => TI[],\n getKey: (input: TI) => string,\n factory: (input: TI) => IValueProducer<TO> | Promise<IValueProducer<TO>>\n ) {\n super();\n this.parent = parent;\n this.splitFunction = splitFunction;\n this.getKey = getKey;\n this.factory = factory;\n this.parent.onNext(this.handleChangeParent);\n }\n\n public get currentValue(): Promise<TO[]> {\n const getCurrentValue = async (): Promise<TO[]> => {\n const values = this.splitFunction(await this.parent.currentValue);\n const result: TO[] = [];\n const errors: ReasonOrError[] = [];\n const cpuLimit = getCpuLimits();\n // eslint-disable-next-line no-console\n console.log(`Use limit: ${cpuLimit}`);\n const concurrencyLimit = pLimit(cpuLimit);\n await Promise.all(\n values.map((value, index) =>\n concurrencyLimit(async () => {\n const childValueProducer = await this.factory(value);\n if (this.isInObserveState) {\n await childValueProducer.beginObserve();\n }\n try {\n const childValue = await childValueProducer.currentValue;\n result[index] = childValue;\n const key = this.getKey(value);\n this.chains[key] = {\n lastValue: childValue,\n valueProducer: childValueProducer,\n detachListener: childValueProducer.onNext(x => this.handleChangeParentChain(x, key)),\n };\n } catch (e) {\n if (this.isInObserveState) {\n // eslint-disable-next-line no-console\n console.log(e);\n } else {\n errors.push(e);\n }\n const key = this.getKey(value);\n this.chains[key] = {\n lastValue: undefined,\n valueProducer: childValueProducer,\n detachListener: childValueProducer.onNext(x => this.handleChangeParentChain(x, key)),\n };\n }\n })\n )\n );\n if (errors.length === 1) {\n throw errors[0];\n } else if (errors.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new AggregatedError(\"There are errors\", ...errors);\n }\n return result;\n };\n return getCurrentValue();\n }\n\n public async beginObserve(): Promise<void> {\n this.isInObserveState = true;\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n for (const key of Object.keys(this.chains)) {\n await this.chains[key]?.valueProducer.endObserve();\n }\n this.isInObserveState = false;\n }\n\n public onNext(listener: (nextValue: TO[]) => Promise<void>): DetachListener {\n this.listeners.push(listener);\n return () => {\n const index = this.listeners.indexOf(listener);\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n };\n }\n\n private async emitValue(value: TO[]): Promise<void> {\n for (const listener of this.listeners) {\n await listener(value);\n }\n }\n\n private toMap(values: TI[]): { [key: string]: TI } {\n const result: { [key: string]: TI } = {};\n for (const value of values) {\n result[this.getKey(value)] = value;\n }\n return result;\n }\n\n private readonly handleChangeParentChain = async (nextValue: TO, key: string): Promise<void> => {\n const chainValue = this.chains[key];\n if (chainValue != undefined) {\n chainValue.lastValue = nextValue;\n }\n await this.emitValue(\n Object.values(this.chains)\n .map(x => x.lastValue)\n .filter(isNotNullOrUndefined)\n );\n };\n\n private readonly handleChangeParent = async (input: T): Promise<void> => {\n const values = this.splitFunction(input);\n const nextValuesMap = this.toMap(values);\n\n const newKeys = _.difference(Object.keys(nextValuesMap), Object.keys(this.chains));\n const removedKeys = _.difference(Object.keys(this.chains), Object.keys(nextValuesMap));\n for (const newKey of newKeys) {\n const newChain = await this.factory(nextValuesMap[newKey] ?? reject());\n if (this.isInObserveState) {\n await newChain.beginObserve();\n }\n try {\n const newChainValue = await newChain.currentValue;\n this.chains[newKey] = {\n lastValue: newChainValue,\n valueProducer: newChain,\n detachListener: newChain.onNext(nextValue => this.handleChangeParentChain(nextValue, newKey)),\n };\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n this.chains[newKey] = {\n lastValue: undefined,\n valueProducer: newChain,\n detachListener: newChain.onNext(nextValue => this.handleChangeParentChain(nextValue, newKey)),\n };\n }\n }\n for (const removedKey of removedKeys) {\n const removedChain = this.chains[removedKey];\n removedChain?.detachListener();\n if (this.isInObserveState) {\n await removedChain?.valueProducer.endObserve();\n }\n // Я не знаю, как тут правильно\n delete this.chains[removedKey];\n }\n await this.emitValue(\n Object.values(this.chains)\n .map(x => x.lastValue)\n .filter(isNotNullOrUndefined)\n );\n };\n}\n\nexport class SkipUpdatesUntilNextCompletedProducer<T> extends ObservableValueProducerBase<T> {\n private readonly parent: IValueProducer<T>;\n private detachFromParent?: DetachListener;\n private lastParentValue?: T;\n\n private nextEmitToProcess?: () => Promise<void>;\n private currentlyProcessingEmit?: Promise<void>;\n\n public constructor(parent: IValueProducer<T>) {\n super();\n this.parent = parent;\n }\n\n protected async getCurrentValue(): Promise<T> {\n if (this.lastParentValue == undefined) {\n this.currentlyProcessingEmit = (async () => {\n this.lastParentValue = await this.parent.currentValue;\n })();\n await this.currentlyProcessingEmit;\n }\n if (this.lastParentValue == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n return this.lastParentValue;\n }\n\n protected async beginListening(): Promise<void> {\n await this.parent.beginObserve();\n if (this.detachFromParent == undefined) {\n this.detachFromParent = this.parent.onNext(nextValue => this.handleChangeParentValue(nextValue));\n }\n }\n\n protected async stopListening(): Promise<void> {\n if (this.detachFromParent != undefined) {\n this.detachFromParent();\n }\n await this.parent.endObserve();\n }\n\n private async handleChangeParentValue(nextValue: T): Promise<void> {\n this.lastParentValue = nextValue;\n this.nextEmitToProcess = _.once(() => this.emitUpdate(nextValue));\n if (this.currentlyProcessingEmit != undefined) {\n await this.currentlyProcessingEmit;\n }\n this.currentlyProcessingEmit = this.nextEmitToProcess();\n await this.currentlyProcessingEmit;\n this.currentlyProcessingEmit = undefined;\n }\n}\n\nfunction delay(timeout: number): Promise<void> {\n return new Promise<void>(resolve => {\n setTimeout(() => {\n resolve();\n }, timeout);\n });\n}\n\nfunction isNotNullOrUndefined<T>(input: T | undefined | null): input is T {\n return input != undefined;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ChainableValueProducer.js","names":["_lodash","_interopRequireDefault","require","_pLimit","_IterableUtils","_TypingUtils","_GetCpuLimits","_AggregatedError","noop","ChainableValueProducer","constructor","errorListeners","onError","listener","push","index","indexOf","splice","currentValue","Error","transform","transformFunction","TransformValueProducer","do","action","ExecuteOnValueProducer","chainWith","nextItemFactory","attach","attachFactory","joinValues","evaluateAttachKey","AttachValueProducer","skipUpdatesUntilNextCompleted","SkipUpdatesUntilNextCompletedProducer","splitToChains","splitFunction","getKey","factory","SplitToChainsValueProducer","splitToParallelChains","ParallelSplitToChainsValueProducer","observe","beginObserve","detachListener","onNext","endObserve","emitError","error","errorObject","errorListener","exports","ObservableValueProducerBase","args","listeners","getCurrentValue","beginListening","stopListening","emitUpdate","value","notifyAllListenersAndWaitForComplete","nextValue","parent","lastAttachKey","attachedProducer","detachParentListener","detachAttachedListener","lastAttachedValue","lastParentValue","awaitingLastAttachedValue","isInObserveState","handleChangeAttachedValue","attachedValue","undefined","emitNextValue","handleChangeParentValue","parentValue","attachKey","delay","x","length","e","console","log","chains","handleChangeParentChain","key","chainValue","lastValue","emitValue","Object","values","map","filter","isNotNullOrUndefined","handleChangeParent","input","nextValuesMap","toMap","newKeys","_","difference","keys","removedKeys","newKey","_nextValuesMap$newKey","newChain","reject","newChainValue","valueProducer","removedKey","removedChain","result","errors","childValueProducer","childValue","AggregatedError","iterateValues","_nextValuesMap$newKey2","cpuLimit","getCpuLimits","concurrencyLimit","pLimit","Promise","all","_this$chains$key","detachFromParent","nextEmitToProcess","currentlyProcessingEmit","once","timeout","resolve","setTimeout"],"sources":["../../../../../src/Commons/TasksCore/ChainableValueProducer.ts"],"sourcesContent":["import _ from \"lodash\";\nimport pLimit from \"p-limit\";\n\nimport { ReasonOrError } from \"../ErrorUntyped\";\nimport { iterateValues } from \"../../../../Common/IterableUtils\";\nimport { reject } from \"../../../../Common/TypingUtils\";\nimport { getCpuLimits } from \"../GetCpuLimits\";\n\nimport { AggregatedError } from \"./AggregatedError\";\nimport { DetachListener, IValueProducer, ValueListener } from \"./BuildTask\";\n\nasync function noop(): Promise<void> {\n // empty function\n}\n\nexport abstract class ChainableValueProducer<T> implements IValueProducer<T> {\n private readonly errorListeners: Array<ValueListener<Error>> = [];\n\n public abstract onNext(_listener: (nextValue: T) => Promise<void>): DetachListener;\n\n public onError(listener: (error: Error) => Promise<void>): DetachListener {\n this.errorListeners.push(listener);\n return () => {\n const index = this.errorListeners.indexOf(listener);\n if (index >= 0) {\n this.errorListeners.splice(index, 1);\n }\n };\n }\n\n public get currentValue(): Promise<T> {\n throw new Error(\"AbstractError\");\n }\n\n public transform<TO>(transformFunction: (input: T) => Promise<TO>): TransformValueProducer<T, TO> {\n return new TransformValueProducer(this, transformFunction);\n }\n\n public do(action: (input: T) => Promise<void>): ExecuteOnValueProducer<T> {\n return new ExecuteOnValueProducer(this, action);\n }\n\n public chainWith<TO, TVP extends IValueProducer<TO>>(nextItemFactory: (prevItem: IValueProducer<T>) => TVP): TVP {\n return nextItemFactory(this);\n }\n\n public attach<TA, TO = T>(\n attachFactory: (value: T) => Promise<IValueProducer<TA>>,\n joinValues?: (original: T, attached: TA) => Promise<TO>,\n evaluateAttachKey?: (value: T) => Promise<string>\n ): AttachValueProducer<T, TA, TO> {\n return new AttachValueProducer(this, attachFactory, joinValues, evaluateAttachKey);\n }\n\n public skipUpdatesUntilNextCompleted(): SkipUpdatesUntilNextCompletedProducer<T> {\n return new SkipUpdatesUntilNextCompletedProducer(this);\n }\n\n public splitToChains<TI, TO>(\n splitFunction: (input: T) => TI[],\n getKey: (input: TI) => string,\n factory: (input: TI) => IValueProducer<TO>\n ): SplitToChainsValueProducer<T, TI, TO> {\n return new SplitToChainsValueProducer(this, splitFunction, getKey, factory);\n }\n\n public splitToParallelChains<TI, TO>(\n splitFunction: (input: T) => TI[],\n getKey: (input: TI) => string,\n factory: (input: TI) => IValueProducer<TO> | Promise<IValueProducer<TO>>\n ): ParallelSplitToChainsValueProducer<T, TI, TO> {\n return new ParallelSplitToChainsValueProducer(this, splitFunction, getKey, factory);\n }\n\n public async observe(listener: ValueListener<T> = noop): Promise<() => Promise<void>> {\n await this.beginObserve();\n await listener(await this.currentValue);\n const detachListener = this.onNext(listener);\n return async () => {\n detachListener();\n await this.endObserve();\n };\n }\n\n public async beginObserve(): Promise<void> {\n throw new Error(\"AbstractError\");\n }\n\n public async endObserve(): Promise<void> {\n throw new Error(\"AbstractError\");\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected async emitError(error: any): Promise<void> {\n const errorObject = error instanceof Error ? error : new Error(`${error}`);\n for (const errorListener of this.errorListeners) {\n await errorListener(errorObject);\n }\n }\n}\n\nexport class ObservableValueProducerBase<T> extends ChainableValueProducer<T> {\n public get currentValue(): Promise<T> {\n return this.getCurrentValue();\n }\n\n private readonly listeners: Array<ValueListener<T>> = [];\n\n protected async getCurrentValue(): Promise<T> {\n throw new Error(\"AbstractError\");\n }\n\n public async beginObserve(): Promise<void> {\n await this.beginListening();\n }\n\n public async endObserve(): Promise<void> {\n await this.stopListening();\n }\n\n protected async beginListening(): Promise<void> {\n throw new Error(\"AbstractError\");\n }\n\n protected async stopListening(): Promise<void> {\n throw new Error(\"AbstractError\");\n }\n\n protected async emitUpdate(value: T): Promise<void> {\n await this.notifyAllListenersAndWaitForComplete(value);\n }\n\n public onNext(listener: (nextValue: T) => Promise<void>): DetachListener {\n this.listeners.push(listener);\n return () => {\n const index = this.listeners.indexOf(listener);\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n };\n }\n\n private async notifyAllListenersAndWaitForComplete(nextValue: T): Promise<void> {\n for (const listener of this.listeners) {\n await listener(nextValue);\n }\n }\n}\n\nexport class AttachValueProducer<TI, TA, TO> extends ChainableValueProducer<TO> {\n private readonly parent: IValueProducer<TI>;\n private readonly attachFactory: (value: TI) => Promise<IValueProducer<TA>>;\n private readonly joinValues: (original: TI, attached: TA) => Promise<TO>;\n private lastAttachKey?: string;\n private attachedProducer?: IValueProducer<TA>;\n private readonly evaluateAttachKey: (value: TI) => Promise<string>;\n private readonly listeners: Array<ValueListener<TO>> = [];\n private detachParentListener?: DetachListener;\n private detachAttachedListener?: DetachListener;\n private lastAttachedValue?: TA;\n private lastParentValue?: TI;\n private awaitingLastAttachedValue = false;\n private isInObserveState = false;\n\n public constructor(\n parent: IValueProducer<TI>,\n attachFactory: (value: TI) => Promise<IValueProducer<TA>>,\n joinValues?: (original: TI, attached: TA) => Promise<TO>,\n evaluateAttachKey?: (value: TI) => Promise<string>\n ) {\n super();\n this.parent = parent;\n this.attachFactory = attachFactory;\n // Я не могу победить типизацию в этом месте, слишком много у меня кода получается\n // @ts-ignore\n this.joinValues = joinValues || (async x => x);\n this.evaluateAttachKey = evaluateAttachKey || (async () => \"STATIC-ATTACH-KEY\");\n }\n\n public async beginObserve(): Promise<void> {\n this.isInObserveState = true;\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n if (this.attachedProducer != undefined) {\n await this.attachedProducer.endObserve();\n }\n this.isInObserveState = false;\n }\n\n public get currentValue(): Promise<TO> {\n const getCurrentValue = async (): Promise<TO> => {\n const parentValue = await this.parent.currentValue;\n this.lastParentValue = parentValue;\n const attachKey = await this.evaluateAttachKey(parentValue);\n if (this.attachedProducer != undefined && this.detachAttachedListener == undefined) {\n this.detachAttachedListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n if (this.lastAttachKey == undefined || this.lastAttachKey !== attachKey) {\n this.lastAttachKey = attachKey;\n if (this.detachAttachedListener != undefined) {\n this.detachAttachedListener();\n }\n if (this.attachedProducer != undefined && this.isInObserveState) {\n await this.attachedProducer.endObserve();\n }\n this.attachedProducer = await this.attachFactory(parentValue);\n if (this.isInObserveState) {\n await this.attachedProducer.beginObserve();\n }\n this.detachAttachedListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n if (this.attachedProducer == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n const attachedValue = await this.attachedProducer.currentValue;\n this.lastAttachedValue = attachedValue;\n return this.joinValues(parentValue, attachedValue);\n };\n return getCurrentValue();\n }\n\n public async emitNextValue(value: TO): Promise<void> {\n for (const listener of this.listeners) {\n await listener(value);\n }\n }\n\n public onNext(listener: (nextValue: TO) => Promise<void>): DetachListener {\n this.listeners.push(listener);\n if (this.listeners.length === 1) {\n if (this.detachParentListener == undefined) {\n this.detachParentListener = this.parent.onNext(this.handleChangeParentValue);\n }\n if (this.attachedProducer != undefined && this.detachParentListener == undefined) {\n this.detachParentListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n }\n return () => {\n const index = this.listeners.indexOf(listener);\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n if (this.listeners.length === 0) {\n if (this.detachParentListener != undefined) {\n this.detachParentListener();\n }\n if (this.detachAttachedListener != undefined) {\n this.detachAttachedListener();\n }\n }\n };\n }\n\n private readonly handleChangeAttachedValue = async (attachedValue: TA): Promise<void> => {\n this.lastAttachedValue = attachedValue;\n if (!this.awaitingLastAttachedValue) {\n if (this.lastParentValue == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n await this.emitNextValue(await this.joinValues(this.lastParentValue, attachedValue));\n }\n };\n\n private readonly handleChangeParentValue = async (parentValue: TI): Promise<void> => {\n this.lastParentValue = parentValue;\n const attachKey = await this.evaluateAttachKey(parentValue);\n if (this.attachedProducer != undefined && this.detachAttachedListener == undefined) {\n this.detachAttachedListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n if (this.lastAttachKey == undefined || this.lastAttachKey !== attachKey) {\n this.lastAttachKey = attachKey;\n if (this.detachAttachedListener != undefined) {\n this.detachAttachedListener();\n }\n if (this.attachedProducer != undefined && this.isInObserveState) {\n await this.attachedProducer.endObserve();\n }\n this.attachedProducer = await this.attachFactory(parentValue);\n if (this.isInObserveState) {\n await this.attachedProducer.beginObserve();\n }\n this.detachAttachedListener = this.attachedProducer.onNext(this.handleChangeAttachedValue);\n }\n if (this.attachedProducer == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n // Просто немного обождем, вдруг придёт другое attachedValue\n this.awaitingLastAttachedValue = true;\n await delay(700);\n this.awaitingLastAttachedValue = false;\n let attachedValue = this.lastAttachedValue;\n if (attachedValue == undefined) {\n attachedValue = await this.attachedProducer.currentValue;\n }\n await this.emitNextValue(await this.joinValues(parentValue, attachedValue));\n };\n}\n\nexport class ExecuteOnValueProducer<T> extends ChainableValueProducer<T> {\n private readonly parent: IValueProducer<T>;\n private readonly action: (value: T) => Promise<void>;\n\n public constructor(parent: IValueProducer<T>, action: (value: T) => Promise<void>) {\n super();\n this.parent = parent;\n this.action = action;\n }\n\n public async beginObserve(): Promise<void> {\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n }\n\n public get currentValue(): Promise<T> {\n const getCurrentValue = async (): Promise<T> => {\n const value = await this.parent.currentValue;\n await this.action(value);\n return value;\n };\n return getCurrentValue();\n }\n\n public onNext(listener: (nextValue: T) => Promise<void>): DetachListener {\n return this.parent.onNext(async parentValue => {\n try {\n const value = parentValue;\n await this.action(value);\n await listener(value);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n await this.emitError(e);\n }\n });\n }\n}\n\nexport class TransformValueProducer<TI, TO> extends ChainableValueProducer<TO> {\n private readonly parent: IValueProducer<TI>;\n private readonly transformFunction: (value: TI) => Promise<TO>;\n\n public constructor(parent: IValueProducer<TI>, transformFunction: (value: TI) => Promise<TO>) {\n super();\n this.parent = parent;\n this.transformFunction = transformFunction;\n }\n\n public async beginObserve(): Promise<void> {\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n }\n\n public get currentValue(): Promise<TO> {\n const getCurrentValue = async (): Promise<TO> => this.transformFunction(await this.parent.currentValue);\n return getCurrentValue();\n }\n\n public onNext(listener: (nextValue: TO) => Promise<void>): DetachListener {\n return this.parent.onNext(async parentValue => {\n try {\n await listener(await this.transformFunction(parentValue));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n await this.emitError(e);\n }\n });\n }\n}\n\nexport class SplitToChainsValueProducer<T, TI, TO> extends ChainableValueProducer<TO[]> {\n private readonly parent: IValueProducer<T>;\n private readonly splitFunction: (input: T) => TI[];\n private readonly getKey: (input: TI) => string;\n private readonly factory: (input: TI) => IValueProducer<TO>;\n private readonly listeners: Array<ValueListener<TO[]>> = [];\n private readonly chains: {\n [key: string]: {\n valueProducer: IValueProducer<TO>;\n lastValue: undefined | TO;\n detachListener: DetachListener;\n };\n } = {};\n private isInObserveState = false;\n\n public constructor(\n parent: IValueProducer<T>,\n splitFunction: (input: T) => TI[],\n getKey: (input: TI) => string,\n factory: (input: TI) => IValueProducer<TO>\n ) {\n super();\n this.parent = parent;\n this.splitFunction = splitFunction;\n this.getKey = getKey;\n this.factory = factory;\n this.parent.onNext(this.handleChangeParent);\n }\n\n public get currentValue(): Promise<TO[]> {\n const getCurrentValue = async (): Promise<TO[]> => {\n const values = this.splitFunction(await this.parent.currentValue);\n const result: TO[] = [];\n const errors: ReasonOrError[] = [];\n for (const value of values) {\n const childValueProducer = this.factory(value);\n if (this.isInObserveState) {\n await childValueProducer.beginObserve();\n }\n try {\n const childValue = await childValueProducer.currentValue;\n result.push(childValue);\n const key = this.getKey(value);\n this.chains[key] = {\n lastValue: childValue,\n valueProducer: childValueProducer,\n detachListener: childValueProducer.onNext(x => this.handleChangeParentChain(x, key)),\n };\n } catch (e) {\n if (this.isInObserveState) {\n // eslint-disable-next-line no-console\n console.log(e);\n } else {\n errors.push(e);\n }\n const key = this.getKey(value);\n this.chains[key] = {\n lastValue: undefined,\n valueProducer: childValueProducer,\n detachListener: childValueProducer.onNext(x => this.handleChangeParentChain(x, key)),\n };\n }\n }\n if (errors.length === 1) {\n throw errors[0];\n } else if (errors.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new AggregatedError(\"There are errors\", ...errors);\n }\n return result;\n };\n return getCurrentValue();\n }\n\n public async beginObserve(): Promise<void> {\n this.isInObserveState = true;\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n for (const value of iterateValues(this.chains)) {\n await value.valueProducer.endObserve();\n }\n this.isInObserveState = false;\n }\n\n public onNext(listener: (nextValue: TO[]) => Promise<void>): DetachListener {\n this.listeners.push(listener);\n return () => {\n const index = this.listeners.indexOf(listener);\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n };\n }\n\n private async emitValue(value: TO[]): Promise<void> {\n for (const listener of this.listeners) {\n await listener(value);\n }\n }\n\n private toMap(values: TI[]): { [key: string]: TI } {\n const result: { [key: string]: TI } = {};\n for (const value of values) {\n result[this.getKey(value)] = value;\n }\n return result;\n }\n\n private readonly handleChangeParentChain = async (nextValue: TO, key: string): Promise<void> => {\n const chainValue = this.chains[key];\n if (chainValue != undefined) {\n chainValue.lastValue = nextValue;\n }\n await this.emitValue(\n Object.values(this.chains)\n .map(x => x.lastValue)\n .filter(isNotNullOrUndefined)\n );\n };\n\n private readonly handleChangeParent = async (input: T): Promise<void> => {\n const values = this.splitFunction(input);\n const nextValuesMap = this.toMap(values);\n\n const newKeys = _.difference(Object.keys(nextValuesMap), Object.keys(this.chains));\n const removedKeys = _.difference(Object.keys(this.chains), Object.keys(nextValuesMap));\n for (const newKey of newKeys) {\n const newChain = this.factory(nextValuesMap[newKey] ?? reject());\n if (this.isInObserveState) {\n await newChain.beginObserve();\n }\n try {\n const newChainValue = await newChain.currentValue;\n this.chains[newKey] = {\n lastValue: newChainValue,\n valueProducer: newChain,\n detachListener: newChain.onNext(nextValue => this.handleChangeParentChain(nextValue, newKey)),\n };\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n this.chains[newKey] = {\n lastValue: undefined,\n valueProducer: newChain,\n detachListener: newChain.onNext(nextValue => this.handleChangeParentChain(nextValue, newKey)),\n };\n }\n }\n for (const removedKey of removedKeys) {\n const removedChain = this.chains[removedKey];\n removedChain?.detachListener();\n if (this.isInObserveState) {\n await removedChain?.valueProducer.endObserve();\n }\n // Я не знаю, как тут правильно\n delete this.chains[removedKey];\n }\n await this.emitValue(\n Object.values(this.chains)\n .map(x => x.lastValue)\n .filter(isNotNullOrUndefined)\n );\n };\n}\n\nexport class ParallelSplitToChainsValueProducer<T, TI, TO> extends ChainableValueProducer<TO[]> {\n private readonly parent: IValueProducer<T>;\n private readonly splitFunction: (input: T) => TI[];\n private readonly getKey: (input: TI) => string;\n private readonly factory: (input: TI) => IValueProducer<TO> | Promise<IValueProducer<TO>>;\n private readonly listeners: Array<ValueListener<TO[]>> = [];\n private readonly chains: {\n [key: string]: {\n valueProducer: IValueProducer<TO>;\n lastValue: undefined | TO;\n detachListener: DetachListener;\n };\n } = {};\n private isInObserveState = false;\n\n public constructor(\n parent: IValueProducer<T>,\n splitFunction: (input: T) => TI[],\n getKey: (input: TI) => string,\n factory: (input: TI) => IValueProducer<TO> | Promise<IValueProducer<TO>>\n ) {\n super();\n this.parent = parent;\n this.splitFunction = splitFunction;\n this.getKey = getKey;\n this.factory = factory;\n this.parent.onNext(this.handleChangeParent);\n }\n\n public get currentValue(): Promise<TO[]> {\n const getCurrentValue = async (): Promise<TO[]> => {\n const values = this.splitFunction(await this.parent.currentValue);\n const result: TO[] = [];\n const errors: ReasonOrError[] = [];\n const cpuLimit = getCpuLimits();\n // eslint-disable-next-line no-console\n console.log(`Use limit: ${cpuLimit}`);\n const concurrencyLimit = pLimit(cpuLimit);\n await Promise.all(\n values.map((value, index) =>\n concurrencyLimit(async () => {\n const childValueProducer = await this.factory(value);\n if (this.isInObserveState) {\n await childValueProducer.beginObserve();\n }\n try {\n const childValue = await childValueProducer.currentValue;\n result[index] = childValue;\n const key = this.getKey(value);\n this.chains[key] = {\n lastValue: childValue,\n valueProducer: childValueProducer,\n detachListener: childValueProducer.onNext(x => this.handleChangeParentChain(x, key)),\n };\n } catch (e) {\n if (this.isInObserveState) {\n // eslint-disable-next-line no-console\n console.log(e);\n } else {\n errors.push(e);\n }\n const key = this.getKey(value);\n this.chains[key] = {\n lastValue: undefined,\n valueProducer: childValueProducer,\n detachListener: childValueProducer.onNext(x => this.handleChangeParentChain(x, key)),\n };\n }\n })\n )\n );\n if (errors.length === 1) {\n throw errors[0];\n } else if (errors.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new AggregatedError(\"There are errors\", ...errors);\n }\n return result;\n };\n return getCurrentValue();\n }\n\n public async beginObserve(): Promise<void> {\n this.isInObserveState = true;\n await this.parent.beginObserve();\n }\n\n public async endObserve(): Promise<void> {\n await this.parent.endObserve();\n for (const key of Object.keys(this.chains)) {\n await this.chains[key]?.valueProducer.endObserve();\n }\n this.isInObserveState = false;\n }\n\n public onNext(listener: (nextValue: TO[]) => Promise<void>): DetachListener {\n this.listeners.push(listener);\n return () => {\n const index = this.listeners.indexOf(listener);\n if (index >= 0) {\n this.listeners.splice(index, 1);\n }\n };\n }\n\n private async emitValue(value: TO[]): Promise<void> {\n for (const listener of this.listeners) {\n await listener(value);\n }\n }\n\n private toMap(values: TI[]): { [key: string]: TI } {\n const result: { [key: string]: TI } = {};\n for (const value of values) {\n result[this.getKey(value)] = value;\n }\n return result;\n }\n\n private readonly handleChangeParentChain = async (nextValue: TO, key: string): Promise<void> => {\n const chainValue = this.chains[key];\n if (chainValue != undefined) {\n chainValue.lastValue = nextValue;\n }\n await this.emitValue(\n Object.values(this.chains)\n .map(x => x.lastValue)\n .filter(isNotNullOrUndefined)\n );\n };\n\n private readonly handleChangeParent = async (input: T): Promise<void> => {\n const values = this.splitFunction(input);\n const nextValuesMap = this.toMap(values);\n\n const newKeys = _.difference(Object.keys(nextValuesMap), Object.keys(this.chains));\n const removedKeys = _.difference(Object.keys(this.chains), Object.keys(nextValuesMap));\n for (const newKey of newKeys) {\n const newChain = await this.factory(nextValuesMap[newKey] ?? reject());\n if (this.isInObserveState) {\n await newChain.beginObserve();\n }\n try {\n const newChainValue = await newChain.currentValue;\n this.chains[newKey] = {\n lastValue: newChainValue,\n valueProducer: newChain,\n detachListener: newChain.onNext(nextValue => this.handleChangeParentChain(nextValue, newKey)),\n };\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(e);\n this.chains[newKey] = {\n lastValue: undefined,\n valueProducer: newChain,\n detachListener: newChain.onNext(nextValue => this.handleChangeParentChain(nextValue, newKey)),\n };\n }\n }\n for (const removedKey of removedKeys) {\n const removedChain = this.chains[removedKey];\n removedChain?.detachListener();\n if (this.isInObserveState) {\n await removedChain?.valueProducer.endObserve();\n }\n // Я не знаю, как тут правильно\n delete this.chains[removedKey];\n }\n await this.emitValue(\n Object.values(this.chains)\n .map(x => x.lastValue)\n .filter(isNotNullOrUndefined)\n );\n };\n}\n\nexport class SkipUpdatesUntilNextCompletedProducer<T> extends ObservableValueProducerBase<T> {\n private readonly parent: IValueProducer<T>;\n private detachFromParent?: DetachListener;\n private lastParentValue?: T;\n\n private nextEmitToProcess?: () => Promise<void>;\n private currentlyProcessingEmit?: Promise<void>;\n\n public constructor(parent: IValueProducer<T>) {\n super();\n this.parent = parent;\n }\n\n protected async getCurrentValue(): Promise<T> {\n if (this.lastParentValue == undefined) {\n this.currentlyProcessingEmit = (async () => {\n this.lastParentValue = await this.parent.currentValue;\n })();\n await this.currentlyProcessingEmit;\n }\n if (this.lastParentValue == undefined) {\n throw new Error(\"InvalidProgramState\");\n }\n return this.lastParentValue;\n }\n\n protected async beginListening(): Promise<void> {\n await this.parent.beginObserve();\n if (this.detachFromParent == undefined) {\n this.detachFromParent = this.parent.onNext(nextValue => this.handleChangeParentValue(nextValue));\n }\n }\n\n protected async stopListening(): Promise<void> {\n if (this.detachFromParent != undefined) {\n this.detachFromParent();\n }\n await this.parent.endObserve();\n }\n\n private async handleChangeParentValue(nextValue: T): Promise<void> {\n this.lastParentValue = nextValue;\n this.nextEmitToProcess = _.once(() => this.emitUpdate(nextValue));\n if (this.currentlyProcessingEmit != undefined) {\n await this.currentlyProcessingEmit;\n }\n this.currentlyProcessingEmit = this.nextEmitToProcess();\n await this.currentlyProcessingEmit;\n this.currentlyProcessingEmit = undefined;\n }\n}\n\nfunction delay(timeout: number): Promise<void> {\n return new Promise<void>(resolve => {\n setTimeout(() => {\n resolve();\n }, timeout);\n });\n}\n\nfunction isNotNullOrUndefined<T>(input: T | undefined | null): input is T {\n return input != undefined;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -89,7 +89,7 @@ class BuildCache {
|
|
|
89
89
|
const cachedFilePath = await this.existsFileCacheOrDownload(gfv, generatorSource.version, depsHash);
|
|
90
90
|
return cachedFilePath != undefined;
|
|
91
91
|
}
|
|
92
|
-
async setContent(generatorSource, gfv, depsHash,
|
|
92
|
+
async setContent(generatorSource, gfv, depsHash, fileName, fileContent) {
|
|
93
93
|
const cacheFilePath = CacheFile.getCacheFilePath(this.farmDirectory, gfv, generatorSource, depsHash);
|
|
94
94
|
if (!(await (0, _fsExtra.pathExists)(cacheFilePath))) {
|
|
95
95
|
return;
|