ee-core 4.1.5 → 5.0.0-beta.5
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/dist/cjs/app/application.d.ts +41 -0
- package/dist/cjs/app/application.d.ts.map +1 -0
- package/dist/cjs/app/application.js +68 -0
- package/dist/cjs/app/application.js.map +1 -0
- package/dist/cjs/app/boot.d.ts +64 -0
- package/dist/cjs/app/boot.d.ts.map +1 -0
- package/dist/cjs/app/boot.js +138 -0
- package/dist/cjs/app/boot.js.map +1 -0
- package/dist/cjs/app/dir.d.ts +12 -0
- package/dist/cjs/app/dir.d.ts.map +1 -0
- package/dist/cjs/app/dir.js +88 -0
- package/dist/cjs/app/dir.js.map +1 -0
- package/dist/cjs/app/events.d.ts +71 -0
- package/dist/cjs/app/events.d.ts.map +1 -0
- package/dist/cjs/app/events.js +124 -0
- package/dist/cjs/app/events.js.map +1 -0
- package/dist/cjs/config/config_loader.d.ts +54 -0
- package/dist/cjs/config/config_loader.d.ts.map +1 -0
- package/dist/cjs/config/config_loader.js +137 -0
- package/dist/cjs/config/config_loader.js.map +1 -0
- package/dist/cjs/config/default_config.d.ts +8 -0
- package/dist/cjs/config/default_config.d.ts.map +1 -0
- package/dist/cjs/config/default_config.js +196 -0
- package/dist/cjs/config/default_config.js.map +1 -0
- package/dist/cjs/config/index.d.ts +34 -0
- package/dist/cjs/config/index.d.ts.map +1 -0
- package/dist/cjs/config/index.js +69 -0
- package/dist/cjs/config/index.js.map +1 -0
- package/dist/cjs/const/channel.d.ts +34 -0
- package/dist/cjs/const/channel.d.ts.map +1 -0
- package/dist/cjs/const/channel.js +37 -0
- package/dist/cjs/const/channel.js.map +1 -0
- package/dist/cjs/controller/controller_loader.d.ts +29 -0
- package/dist/cjs/controller/controller_loader.d.ts.map +1 -0
- package/dist/cjs/controller/controller_loader.js +158 -0
- package/dist/cjs/controller/controller_loader.js.map +1 -0
- package/dist/cjs/controller/index.d.ts +36 -0
- package/dist/cjs/controller/index.d.ts.map +1 -0
- package/dist/cjs/controller/index.js +88 -0
- package/dist/cjs/controller/index.js.map +1 -0
- package/dist/cjs/core/loader/file_loader.d.ts +112 -0
- package/dist/cjs/core/loader/file_loader.d.ts.map +1 -0
- package/dist/cjs/core/loader/file_loader.js +283 -0
- package/dist/cjs/core/loader/file_loader.js.map +1 -0
- package/dist/cjs/core/utils/index.d.ts +70 -0
- package/dist/cjs/core/utils/index.d.ts.map +1 -0
- package/dist/cjs/core/utils/index.js +181 -0
- package/dist/cjs/core/utils/index.js.map +1 -0
- package/dist/cjs/core/utils/timing.d.ts +65 -0
- package/dist/cjs/core/utils/timing.d.ts.map +1 -0
- package/dist/cjs/core/utils/timing.js +107 -0
- package/dist/cjs/core/utils/timing.js.map +1 -0
- package/dist/cjs/cross/cross.d.ts +104 -0
- package/dist/cjs/cross/cross.d.ts.map +1 -0
- package/dist/cjs/cross/cross.js +202 -0
- package/dist/cjs/cross/cross.js.map +1 -0
- package/dist/cjs/cross/crossProcess.d.ts +118 -0
- package/dist/cjs/cross/crossProcess.d.ts.map +1 -0
- package/dist/cjs/cross/crossProcess.js +262 -0
- package/dist/cjs/cross/crossProcess.js.map +1 -0
- package/dist/cjs/cross/index.d.ts +4 -0
- package/dist/cjs/cross/index.d.ts.map +1 -0
- package/dist/cjs/cross/index.js +9 -0
- package/dist/cjs/cross/index.js.map +1 -0
- package/dist/cjs/electron/app/index.d.ts +23 -0
- package/dist/cjs/electron/app/index.d.ts.map +1 -0
- package/dist/cjs/electron/app/index.js +99 -0
- package/dist/cjs/electron/app/index.js.map +1 -0
- package/dist/cjs/electron/index.d.ts +10 -0
- package/dist/cjs/electron/index.d.ts.map +1 -0
- package/dist/cjs/electron/index.js +35 -0
- package/dist/cjs/electron/index.js.map +1 -0
- package/dist/cjs/electron/window/index.d.ts +45 -0
- package/dist/cjs/electron/window/index.d.ts.map +1 -0
- package/dist/cjs/electron/window/index.js +311 -0
- package/dist/cjs/electron/window/index.js.map +1 -0
- package/dist/cjs/exception/index.d.ts +15 -0
- package/dist/cjs/exception/index.d.ts.map +1 -0
- package/dist/cjs/exception/index.js +145 -0
- package/dist/cjs/exception/index.js.map +1 -0
- package/dist/cjs/html/index.d.ts +21 -0
- package/dist/cjs/html/index.d.ts.map +1 -0
- package/dist/cjs/html/index.js +59 -0
- package/dist/cjs/html/index.js.map +1 -0
- package/dist/cjs/index.d.ts +60 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +245 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/jobs/child/app.d.ts +2 -0
- package/dist/cjs/jobs/child/app.d.ts.map +1 -0
- package/dist/cjs/jobs/child/app.js +132 -0
- package/dist/cjs/jobs/child/app.js.map +1 -0
- package/dist/cjs/jobs/child/index.d.ts +29 -0
- package/dist/cjs/jobs/child/index.d.ts.map +1 -0
- package/dist/cjs/jobs/child/index.js +78 -0
- package/dist/cjs/jobs/child/index.js.map +1 -0
- package/dist/cjs/jobs/child/jobProcess.d.ts +102 -0
- package/dist/cjs/jobs/child/jobProcess.d.ts.map +1 -0
- package/dist/cjs/jobs/child/jobProcess.js +196 -0
- package/dist/cjs/jobs/child/jobProcess.js.map +1 -0
- package/dist/cjs/jobs/child-pool/index.d.ts +126 -0
- package/dist/cjs/jobs/child-pool/index.d.ts.map +1 -0
- package/dist/cjs/jobs/child-pool/index.js +252 -0
- package/dist/cjs/jobs/child-pool/index.js.map +1 -0
- package/dist/cjs/jobs/index.d.ts +18 -0
- package/dist/cjs/jobs/index.d.ts.map +1 -0
- package/dist/cjs/jobs/index.js +22 -0
- package/dist/cjs/jobs/index.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/index.d.ts +7 -0
- package/dist/cjs/jobs/load-balancer/algorithm/index.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/index.js +32 -0
- package/dist/cjs/jobs/load-balancer/algorithm/index.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.d.ts +6 -0
- package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.js +27 -0
- package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/polling.d.ts +6 -0
- package/dist/cjs/jobs/load-balancer/algorithm/polling.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/polling.js +15 -0
- package/dist/cjs/jobs/load-balancer/algorithm/polling.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/random.d.ts +6 -0
- package/dist/cjs/jobs/load-balancer/algorithm/random.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/random.js +12 -0
- package/dist/cjs/jobs/load-balancer/algorithm/random.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/specify.d.ts +6 -0
- package/dist/cjs/jobs/load-balancer/algorithm/specify.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/specify.js +18 -0
- package/dist/cjs/jobs/load-balancer/algorithm/specify.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weights.d.ts +6 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weights.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weights.js +26 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weights.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts +6 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.js +32 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.d.ts +6 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.js +26 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.d.ts +6 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.js +22 -0
- package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/consts.d.ts +35 -0
- package/dist/cjs/jobs/load-balancer/consts.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/consts.js +36 -0
- package/dist/cjs/jobs/load-balancer/consts.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/index.d.ts +84 -0
- package/dist/cjs/jobs/load-balancer/index.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/index.js +195 -0
- package/dist/cjs/jobs/load-balancer/index.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/scheduler.d.ts +17 -0
- package/dist/cjs/jobs/load-balancer/scheduler.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/scheduler.js +36 -0
- package/dist/cjs/jobs/load-balancer/scheduler.js.map +1 -0
- package/dist/cjs/jobs/load-balancer/types.d.ts +43 -0
- package/dist/cjs/jobs/load-balancer/types.d.ts.map +1 -0
- package/dist/cjs/jobs/load-balancer/types.js +7 -0
- package/dist/cjs/jobs/load-balancer/types.js.map +1 -0
- package/dist/cjs/jobs/registry.d.ts +24 -0
- package/dist/cjs/jobs/registry.d.ts.map +1 -0
- package/dist/cjs/jobs/registry.js +52 -0
- package/dist/cjs/jobs/registry.js.map +1 -0
- package/dist/cjs/loader/index.d.ts +58 -0
- package/dist/cjs/loader/index.d.ts.map +1 -0
- package/dist/cjs/loader/index.js +151 -0
- package/dist/cjs/loader/index.js.map +1 -0
- package/dist/cjs/log/index.d.ts +59 -0
- package/dist/cjs/log/index.d.ts.map +1 -0
- package/dist/cjs/log/index.js +123 -0
- package/dist/cjs/log/index.js.map +1 -0
- package/dist/cjs/log/logger.d.ts +35 -0
- package/dist/cjs/log/logger.d.ts.map +1 -0
- package/dist/cjs/log/logger.js +246 -0
- package/dist/cjs/log/logger.js.map +1 -0
- package/dist/cjs/message/childMessage.d.ts +58 -0
- package/dist/cjs/message/childMessage.d.ts.map +1 -0
- package/dist/cjs/message/childMessage.js +118 -0
- package/dist/cjs/message/childMessage.js.map +1 -0
- package/dist/cjs/message/index.d.ts +2 -0
- package/dist/cjs/message/index.d.ts.map +1 -0
- package/dist/cjs/message/index.js +7 -0
- package/dist/cjs/message/index.js.map +1 -0
- package/dist/cjs/ps/index.d.ts +155 -0
- package/dist/cjs/ps/index.d.ts.map +1 -0
- package/dist/cjs/ps/index.js +369 -0
- package/dist/cjs/ps/index.js.map +1 -0
- package/dist/cjs/socket/httpServer.d.ts +74 -0
- package/dist/cjs/socket/httpServer.d.ts.map +1 -0
- package/dist/cjs/socket/httpServer.js +240 -0
- package/dist/cjs/socket/httpServer.js.map +1 -0
- package/dist/cjs/socket/index.d.ts +60 -0
- package/dist/cjs/socket/index.d.ts.map +1 -0
- package/dist/cjs/socket/index.js +103 -0
- package/dist/cjs/socket/index.js.map +1 -0
- package/dist/cjs/socket/ipcServer.d.ts +40 -0
- package/dist/cjs/socket/ipcServer.d.ts.map +1 -0
- package/dist/cjs/socket/ipcServer.js +124 -0
- package/dist/cjs/socket/ipcServer.js.map +1 -0
- package/dist/cjs/socket/socketServer.d.ts +43 -0
- package/dist/cjs/socket/socketServer.d.ts.map +1 -0
- package/dist/cjs/socket/socketServer.js +116 -0
- package/dist/cjs/socket/socketServer.js.map +1 -0
- package/dist/cjs/socket/utils.d.ts +13 -0
- package/dist/cjs/socket/utils.d.ts.map +1 -0
- package/dist/cjs/socket/utils.js +41 -0
- package/dist/cjs/socket/utils.js.map +1 -0
- package/dist/cjs/storage/index.d.ts +2 -0
- package/dist/cjs/storage/index.d.ts.map +1 -0
- package/dist/cjs/storage/index.js +6 -0
- package/dist/cjs/storage/index.js.map +1 -0
- package/dist/cjs/storage/sqliteStorage.d.ts +117 -0
- package/dist/cjs/storage/sqliteStorage.d.ts.map +1 -0
- package/dist/cjs/storage/sqliteStorage.js +197 -0
- package/dist/cjs/storage/sqliteStorage.js.map +1 -0
- package/dist/cjs/types/index.d.ts +524 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +3 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/utils/extend.d.ts +46 -0
- package/dist/cjs/utils/extend.d.ts.map +1 -0
- package/dist/cjs/utils/extend.js +105 -0
- package/dist/cjs/utils/extend.js.map +1 -0
- package/dist/cjs/utils/helper.d.ts +169 -0
- package/dist/cjs/utils/helper.d.ts.map +1 -0
- package/dist/cjs/utils/helper.js +351 -0
- package/dist/cjs/utils/helper.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +113 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +344 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/ip.d.ts +42 -0
- package/dist/cjs/utils/ip.d.ts.map +1 -0
- package/dist/cjs/utils/ip.js +276 -0
- package/dist/cjs/utils/ip.js.map +1 -0
- package/dist/cjs/utils/is.d.ts +138 -0
- package/dist/cjs/utils/is.d.ts.map +1 -0
- package/dist/cjs/utils/is.js +203 -0
- package/dist/cjs/utils/is.js.map +1 -0
- package/dist/cjs/utils/json.d.ts +64 -0
- package/dist/cjs/utils/json.d.ts.map +1 -0
- package/dist/cjs/utils/json.js +122 -0
- package/dist/cjs/utils/json.js.map +1 -0
- package/dist/cjs/utils/pargv.d.ts +67 -0
- package/dist/cjs/utils/pargv.d.ts.map +1 -0
- package/dist/cjs/utils/pargv.js +406 -0
- package/dist/cjs/utils/pargv.js.map +1 -0
- package/dist/cjs/utils/port/index.d.ts +48 -0
- package/dist/cjs/utils/port/index.d.ts.map +1 -0
- package/dist/cjs/utils/port/index.js +235 -0
- package/dist/cjs/utils/port/index.js.map +1 -0
- package/dist/cjs/utils/type_check.d.ts +88 -0
- package/dist/cjs/utils/type_check.d.ts.map +1 -0
- package/dist/cjs/utils/type_check.js +121 -0
- package/dist/cjs/utils/type_check.js.map +1 -0
- package/dist/cjs/utils/wrap.d.ts +31 -0
- package/dist/cjs/utils/wrap.d.ts.map +1 -0
- package/dist/cjs/utils/wrap.js +88 -0
- package/dist/cjs/utils/wrap.js.map +1 -0
- package/dist/esm/app/application.d.ts +41 -0
- package/dist/esm/app/application.d.ts.map +1 -0
- package/dist/esm/app/application.js +68 -0
- package/dist/esm/app/application.js.map +1 -0
- package/dist/esm/app/boot.d.ts +64 -0
- package/dist/esm/app/boot.d.ts.map +1 -0
- package/dist/esm/app/boot.js +138 -0
- package/dist/esm/app/boot.js.map +1 -0
- package/dist/esm/app/dir.d.ts +12 -0
- package/dist/esm/app/dir.d.ts.map +1 -0
- package/dist/esm/app/dir.js +88 -0
- package/dist/esm/app/dir.js.map +1 -0
- package/dist/esm/app/events.d.ts +71 -0
- package/dist/esm/app/events.d.ts.map +1 -0
- package/dist/esm/app/events.js +124 -0
- package/dist/esm/app/events.js.map +1 -0
- package/dist/esm/config/config_loader.d.ts +54 -0
- package/dist/esm/config/config_loader.d.ts.map +1 -0
- package/dist/esm/config/config_loader.js +137 -0
- package/dist/esm/config/config_loader.js.map +1 -0
- package/dist/esm/config/default_config.d.ts +8 -0
- package/dist/esm/config/default_config.d.ts.map +1 -0
- package/dist/esm/config/default_config.js +196 -0
- package/dist/esm/config/default_config.js.map +1 -0
- package/dist/esm/config/index.d.ts +34 -0
- package/dist/esm/config/index.d.ts.map +1 -0
- package/dist/esm/config/index.js +69 -0
- package/dist/esm/config/index.js.map +1 -0
- package/dist/esm/const/channel.d.ts +34 -0
- package/dist/esm/const/channel.d.ts.map +1 -0
- package/dist/esm/const/channel.js +37 -0
- package/dist/esm/const/channel.js.map +1 -0
- package/dist/esm/controller/controller_loader.d.ts +29 -0
- package/dist/esm/controller/controller_loader.d.ts.map +1 -0
- package/dist/esm/controller/controller_loader.js +158 -0
- package/dist/esm/controller/controller_loader.js.map +1 -0
- package/dist/esm/controller/index.d.ts +36 -0
- package/dist/esm/controller/index.d.ts.map +1 -0
- package/dist/esm/controller/index.js +88 -0
- package/dist/esm/controller/index.js.map +1 -0
- package/dist/esm/core/loader/file_loader.d.ts +112 -0
- package/dist/esm/core/loader/file_loader.d.ts.map +1 -0
- package/dist/esm/core/loader/file_loader.js +283 -0
- package/dist/esm/core/loader/file_loader.js.map +1 -0
- package/dist/esm/core/utils/index.d.ts +70 -0
- package/dist/esm/core/utils/index.d.ts.map +1 -0
- package/dist/esm/core/utils/index.js +148 -0
- package/dist/esm/core/utils/index.js.map +1 -0
- package/dist/esm/core/utils/timing.d.ts +65 -0
- package/dist/esm/core/utils/timing.d.ts.map +1 -0
- package/dist/esm/core/utils/timing.js +107 -0
- package/dist/esm/core/utils/timing.js.map +1 -0
- package/dist/esm/cross/cross.d.ts +104 -0
- package/dist/esm/cross/cross.d.ts.map +1 -0
- package/dist/esm/cross/cross.js +202 -0
- package/dist/esm/cross/cross.js.map +1 -0
- package/dist/esm/cross/crossProcess.d.ts +118 -0
- package/dist/esm/cross/crossProcess.d.ts.map +1 -0
- package/dist/esm/cross/crossProcess.js +262 -0
- package/dist/esm/cross/crossProcess.js.map +1 -0
- package/dist/esm/cross/index.d.ts +4 -0
- package/dist/esm/cross/index.d.ts.map +1 -0
- package/dist/esm/cross/index.js +9 -0
- package/dist/esm/cross/index.js.map +1 -0
- package/dist/esm/electron/app/index.d.ts +23 -0
- package/dist/esm/electron/app/index.d.ts.map +1 -0
- package/dist/esm/electron/app/index.js +99 -0
- package/dist/esm/electron/app/index.js.map +1 -0
- package/dist/esm/electron/index.d.ts +10 -0
- package/dist/esm/electron/index.d.ts.map +1 -0
- package/dist/esm/electron/index.js +35 -0
- package/dist/esm/electron/index.js.map +1 -0
- package/dist/esm/electron/window/index.d.ts +45 -0
- package/dist/esm/electron/window/index.d.ts.map +1 -0
- package/dist/esm/electron/window/index.js +311 -0
- package/dist/esm/electron/window/index.js.map +1 -0
- package/dist/esm/exception/index.d.ts +15 -0
- package/dist/esm/exception/index.d.ts.map +1 -0
- package/dist/esm/exception/index.js +145 -0
- package/dist/esm/exception/index.js.map +1 -0
- package/dist/esm/html/index.d.ts +21 -0
- package/dist/esm/html/index.d.ts.map +1 -0
- package/dist/esm/html/index.js +59 -0
- package/dist/esm/html/index.js.map +1 -0
- package/dist/esm/index.d.ts +60 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +245 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/jobs/child/app.d.ts +2 -0
- package/dist/esm/jobs/child/app.d.ts.map +1 -0
- package/dist/esm/jobs/child/app.js +132 -0
- package/dist/esm/jobs/child/app.js.map +1 -0
- package/dist/esm/jobs/child/index.d.ts +29 -0
- package/dist/esm/jobs/child/index.d.ts.map +1 -0
- package/dist/esm/jobs/child/index.js +78 -0
- package/dist/esm/jobs/child/index.js.map +1 -0
- package/dist/esm/jobs/child/jobProcess.d.ts +102 -0
- package/dist/esm/jobs/child/jobProcess.d.ts.map +1 -0
- package/dist/esm/jobs/child/jobProcess.js +196 -0
- package/dist/esm/jobs/child/jobProcess.js.map +1 -0
- package/dist/esm/jobs/child-pool/index.d.ts +126 -0
- package/dist/esm/jobs/child-pool/index.d.ts.map +1 -0
- package/dist/esm/jobs/child-pool/index.js +252 -0
- package/dist/esm/jobs/child-pool/index.js.map +1 -0
- package/dist/esm/jobs/index.d.ts +18 -0
- package/dist/esm/jobs/index.d.ts.map +1 -0
- package/dist/esm/jobs/index.js +22 -0
- package/dist/esm/jobs/index.js.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/index.d.ts +7 -0
- package/dist/esm/jobs/load-balancer/algorithm/index.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/index.js +32 -0
- package/dist/esm/jobs/load-balancer/algorithm/index.js.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.d.ts +6 -0
- package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.js +27 -0
- package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.js.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/polling.d.ts +6 -0
- package/dist/esm/jobs/load-balancer/algorithm/polling.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/polling.js +15 -0
- package/dist/esm/jobs/load-balancer/algorithm/polling.js.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/random.d.ts +6 -0
- package/dist/esm/jobs/load-balancer/algorithm/random.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/random.js +12 -0
- package/dist/esm/jobs/load-balancer/algorithm/random.js.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/specify.d.ts +6 -0
- package/dist/esm/jobs/load-balancer/algorithm/specify.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/specify.js +18 -0
- package/dist/esm/jobs/load-balancer/algorithm/specify.js.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/weights.d.ts +6 -0
- package/dist/esm/jobs/load-balancer/algorithm/weights.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/weights.js +26 -0
- package/dist/esm/jobs/load-balancer/algorithm/weights.js.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts +6 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.js +32 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.js.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.d.ts +6 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.js +26 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.js.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.d.ts +6 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.js +22 -0
- package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.js.map +1 -0
- package/dist/esm/jobs/load-balancer/consts.d.ts +35 -0
- package/dist/esm/jobs/load-balancer/consts.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/consts.js +36 -0
- package/dist/esm/jobs/load-balancer/consts.js.map +1 -0
- package/dist/esm/jobs/load-balancer/index.d.ts +84 -0
- package/dist/esm/jobs/load-balancer/index.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/index.js +195 -0
- package/dist/esm/jobs/load-balancer/index.js.map +1 -0
- package/dist/esm/jobs/load-balancer/scheduler.d.ts +17 -0
- package/dist/esm/jobs/load-balancer/scheduler.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/scheduler.js +36 -0
- package/dist/esm/jobs/load-balancer/scheduler.js.map +1 -0
- package/dist/esm/jobs/load-balancer/types.d.ts +43 -0
- package/dist/esm/jobs/load-balancer/types.d.ts.map +1 -0
- package/dist/esm/jobs/load-balancer/types.js +7 -0
- package/dist/esm/jobs/load-balancer/types.js.map +1 -0
- package/dist/esm/jobs/registry.d.ts +24 -0
- package/dist/esm/jobs/registry.d.ts.map +1 -0
- package/dist/esm/jobs/registry.js +52 -0
- package/dist/esm/jobs/registry.js.map +1 -0
- package/dist/esm/loader/index.d.ts +58 -0
- package/dist/esm/loader/index.d.ts.map +1 -0
- package/dist/esm/loader/index.js +151 -0
- package/dist/esm/loader/index.js.map +1 -0
- package/dist/esm/log/index.d.ts +59 -0
- package/dist/esm/log/index.d.ts.map +1 -0
- package/dist/esm/log/index.js +123 -0
- package/dist/esm/log/index.js.map +1 -0
- package/dist/esm/log/logger.d.ts +35 -0
- package/dist/esm/log/logger.d.ts.map +1 -0
- package/dist/esm/log/logger.js +246 -0
- package/dist/esm/log/logger.js.map +1 -0
- package/dist/esm/message/childMessage.d.ts +58 -0
- package/dist/esm/message/childMessage.d.ts.map +1 -0
- package/dist/esm/message/childMessage.js +118 -0
- package/dist/esm/message/childMessage.js.map +1 -0
- package/dist/esm/message/index.d.ts +2 -0
- package/dist/esm/message/index.d.ts.map +1 -0
- package/dist/esm/message/index.js +7 -0
- package/dist/esm/message/index.js.map +1 -0
- package/dist/esm/ps/index.d.ts +155 -0
- package/dist/esm/ps/index.d.ts.map +1 -0
- package/dist/esm/ps/index.js +369 -0
- package/dist/esm/ps/index.js.map +1 -0
- package/dist/esm/socket/httpServer.d.ts +74 -0
- package/dist/esm/socket/httpServer.d.ts.map +1 -0
- package/dist/esm/socket/httpServer.js +240 -0
- package/dist/esm/socket/httpServer.js.map +1 -0
- package/dist/esm/socket/index.d.ts +60 -0
- package/dist/esm/socket/index.d.ts.map +1 -0
- package/dist/esm/socket/index.js +103 -0
- package/dist/esm/socket/index.js.map +1 -0
- package/dist/esm/socket/ipcServer.d.ts +40 -0
- package/dist/esm/socket/ipcServer.d.ts.map +1 -0
- package/dist/esm/socket/ipcServer.js +124 -0
- package/dist/esm/socket/ipcServer.js.map +1 -0
- package/dist/esm/socket/socketServer.d.ts +43 -0
- package/dist/esm/socket/socketServer.d.ts.map +1 -0
- package/dist/esm/socket/socketServer.js +116 -0
- package/dist/esm/socket/socketServer.js.map +1 -0
- package/dist/esm/socket/utils.d.ts +13 -0
- package/dist/esm/socket/utils.d.ts.map +1 -0
- package/dist/esm/socket/utils.js +41 -0
- package/dist/esm/socket/utils.js.map +1 -0
- package/dist/esm/storage/index.d.ts +2 -0
- package/dist/esm/storage/index.d.ts.map +1 -0
- package/dist/esm/storage/index.js +6 -0
- package/dist/esm/storage/index.js.map +1 -0
- package/dist/esm/storage/sqliteStorage.d.ts +117 -0
- package/dist/esm/storage/sqliteStorage.d.ts.map +1 -0
- package/dist/esm/storage/sqliteStorage.js +197 -0
- package/dist/esm/storage/sqliteStorage.js.map +1 -0
- package/dist/esm/types/index.d.ts +524 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +3 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/utils/extend.d.ts +46 -0
- package/dist/esm/utils/extend.d.ts.map +1 -0
- package/dist/esm/utils/extend.js +105 -0
- package/dist/esm/utils/extend.js.map +1 -0
- package/dist/esm/utils/helper.d.ts +169 -0
- package/dist/esm/utils/helper.d.ts.map +1 -0
- package/dist/esm/utils/helper.js +351 -0
- package/dist/esm/utils/helper.js.map +1 -0
- package/dist/esm/utils/index.d.ts +113 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +344 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/ip.d.ts +42 -0
- package/dist/esm/utils/ip.d.ts.map +1 -0
- package/dist/esm/utils/ip.js +276 -0
- package/dist/esm/utils/ip.js.map +1 -0
- package/dist/esm/utils/is.d.ts +138 -0
- package/dist/esm/utils/is.d.ts.map +1 -0
- package/dist/esm/utils/is.js +203 -0
- package/dist/esm/utils/is.js.map +1 -0
- package/dist/esm/utils/json.d.ts +64 -0
- package/dist/esm/utils/json.d.ts.map +1 -0
- package/dist/esm/utils/json.js +122 -0
- package/dist/esm/utils/json.js.map +1 -0
- package/dist/esm/utils/pargv.d.ts +67 -0
- package/dist/esm/utils/pargv.d.ts.map +1 -0
- package/dist/esm/utils/pargv.js +406 -0
- package/dist/esm/utils/pargv.js.map +1 -0
- package/dist/esm/utils/port/index.d.ts +48 -0
- package/dist/esm/utils/port/index.d.ts.map +1 -0
- package/dist/esm/utils/port/index.js +235 -0
- package/dist/esm/utils/port/index.js.map +1 -0
- package/dist/esm/utils/type_check.d.ts +88 -0
- package/dist/esm/utils/type_check.d.ts.map +1 -0
- package/dist/esm/utils/type_check.js +121 -0
- package/dist/esm/utils/type_check.js.map +1 -0
- package/dist/esm/utils/wrap.d.ts +31 -0
- package/dist/esm/utils/wrap.d.ts.map +1 -0
- package/dist/esm/utils/wrap.js +88 -0
- package/dist/esm/utils/wrap.js.map +1 -0
- package/package.json +424 -27
- package/LICENSE +0 -21
- package/README.md +0 -66
- package/app/application.d.ts +0 -5
- package/app/application.js +0 -31
- package/app/boot.d.ts +0 -5
- package/app/boot.js +0 -81
- package/app/dir.d.ts +0 -1
- package/app/dir.js +0 -27
- package/app/events.d.ts +0 -14
- package/app/events.js +0 -56
- package/app/index.d.ts +0 -2
- package/app/index.js +0 -7
- package/config/config_loader.d.ts +0 -13
- package/config/config_loader.js +0 -66
- package/config/default_config.d.ts +0 -95
- package/config/default_config.js +0 -111
- package/config/index.d.ts +0 -28
- package/config/index.js +0 -25
- package/const/channel.d.ts +0 -16
- package/const/channel.js +0 -28
- package/controller/controller_loader.d.ts +0 -9
- package/controller/controller_loader.js +0 -78
- package/controller/index.d.ts +0 -2
- package/controller/index.js +0 -24
- package/core/index.d.ts +0 -2
- package/core/index.js +0 -12
- package/core/loader/file_loader.d.ts +0 -66
- package/core/loader/file_loader.js +0 -212
- package/core/utils/index.d.ts +0 -12
- package/core/utils/index.js +0 -83
- package/core/utils/timing.d.ts +0 -22
- package/core/utils/timing.js +0 -78
- package/cross/cross.d.ts +0 -19
- package/cross/cross.js +0 -153
- package/cross/crossProcess.d.ts +0 -29
- package/cross/crossProcess.js +0 -173
- package/cross/index.d.ts +0 -2
- package/cross/index.js +0 -8
- package/electron/app/index.d.ts +0 -5
- package/electron/app/index.js +0 -48
- package/electron/index.d.ts +0 -3
- package/electron/index.js +0 -16
- package/electron/window/index.d.ts +0 -6
- package/electron/window/index.js +0 -269
- package/exception/index.d.ts +0 -9
- package/exception/index.js +0 -101
- package/html/boot.html +0 -98
- package/html/cross-failure.html +0 -28
- package/html/failure.html +0 -28
- package/html/index.d.ts +0 -1
- package/html/index.js +0 -11
- package/index.d.ts +0 -2
- package/index.js +0 -7
- package/jobs/child/app.d.ts +0 -1
- package/jobs/child/app.js +0 -70
- package/jobs/child/index.d.ts +0 -13
- package/jobs/child/index.js +0 -85
- package/jobs/child/jobProcess.d.ts +0 -16
- package/jobs/child/jobProcess.js +0 -134
- package/jobs/child-pool/index.d.ts +0 -26
- package/jobs/child-pool/index.js +0 -190
- package/jobs/index.d.ts +0 -3
- package/jobs/index.js +0 -7
- package/jobs/load-balancer/algorithm/index.d.ts +0 -4
- package/jobs/load-balancer/algorithm/index.js +0 -12
- package/jobs/load-balancer/algorithm/minimumConnection.d.ts +0 -2
- package/jobs/load-balancer/algorithm/minimumConnection.js +0 -19
- package/jobs/load-balancer/algorithm/polling.d.ts +0 -2
- package/jobs/load-balancer/algorithm/polling.js +0 -12
- package/jobs/load-balancer/algorithm/random.d.ts +0 -2
- package/jobs/load-balancer/algorithm/random.js +0 -10
- package/jobs/load-balancer/algorithm/specify.d.ts +0 -2
- package/jobs/load-balancer/algorithm/specify.js +0 -15
- package/jobs/load-balancer/algorithm/weights.d.ts +0 -2
- package/jobs/load-balancer/algorithm/weights.js +0 -22
- package/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts +0 -2
- package/jobs/load-balancer/algorithm/weightsMinimumConnection.js +0 -30
- package/jobs/load-balancer/algorithm/weightsPolling.d.ts +0 -2
- package/jobs/load-balancer/algorithm/weightsPolling.js +0 -23
- package/jobs/load-balancer/algorithm/weightsRandom.d.ts +0 -2
- package/jobs/load-balancer/algorithm/weightsRandom.js +0 -17
- package/jobs/load-balancer/consts.d.ts +0 -8
- package/jobs/load-balancer/consts.js +0 -10
- package/jobs/load-balancer/index.d.ts +0 -96
- package/jobs/load-balancer/index.js +0 -202
- package/jobs/load-balancer/scheduler.d.ts +0 -16
- package/jobs/load-balancer/scheduler.js +0 -32
- package/loader/index.d.ts +0 -9
- package/loader/index.js +0 -99
- package/log/index.d.ts +0 -5
- package/log/index.js +0 -86
- package/log/logger.d.ts +0 -2
- package/log/logger.js +0 -95
- package/message/childMessage.d.ts +0 -10
- package/message/childMessage.js +0 -43
- package/message/index.d.ts +0 -3
- package/message/index.js +0 -10
- package/ps/index.d.ts +0 -39
- package/ps/index.js +0 -295
- package/socket/httpServer.d.ts +0 -8
- package/socket/httpServer.js +0 -199
- package/socket/index.d.ts +0 -10
- package/socket/index.js +0 -65
- package/socket/ipcServer.d.ts +0 -9
- package/socket/ipcServer.js +0 -106
- package/socket/socketServer.d.ts +0 -10
- package/socket/socketServer.js +0 -82
- package/storage/index.d.ts +0 -5
- package/storage/index.js +0 -7
- package/storage/sqliteStorage.d.ts +0 -16
- package/storage/sqliteStorage.js +0 -124
- package/tsconfig.json +0 -14
- package/utils/extend.d.ts +0 -2
- package/utils/extend.js +0 -78
- package/utils/helper.d.ts +0 -14
- package/utils/helper.js +0 -207
- package/utils/index.d.ts +0 -11
- package/utils/index.js +0 -198
- package/utils/ip.d.ts +0 -2
- package/utils/ip.js +0 -221
- package/utils/is.d.ts +0 -14
- package/utils/is.js +0 -112
- package/utils/json.d.ts +0 -5
- package/utils/json.js +0 -80
- package/utils/pargv.d.ts +0 -3
- package/utils/pargv.js +0 -267
- package/utils/port/index.d.ts +0 -1
- package/utils/port/index.js +0 -126
- package/utils/wrap.d.ts +0 -4
- package/utils/wrap.js +0 -41
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.JobProcess = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* @module jobs/child/jobProcess
|
|
9
|
+
* @description Child process manager. Encapsulates child_process.fork() creation and communication logic,
|
|
10
|
+
* providing the main process with the ability to create child processes, send messages, and terminate processes.
|
|
11
|
+
*
|
|
12
|
+
* Communication mechanism:
|
|
13
|
+
* - Main process sends JobMessage to child process via child.send()
|
|
14
|
+
* - Child process sends ProcessMessage to main process via process.send()
|
|
15
|
+
* - Messages are categorized by channel: showException (exception), sendToMain (business message)
|
|
16
|
+
* - Messages are dispatched by eventReceiver: childJob (global), forkProcess (per-process), all (both)
|
|
17
|
+
*/
|
|
18
|
+
const path_1 = __importDefault(require("path"));
|
|
19
|
+
const events_1 = require("events");
|
|
20
|
+
const child_process_1 = require("child_process");
|
|
21
|
+
const serialize_javascript_1 = __importDefault(require("serialize-javascript"));
|
|
22
|
+
const index_js_1 = require("../../log/index.js");
|
|
23
|
+
const index_js_2 = require("../../ps/index.js");
|
|
24
|
+
const index_js_3 = require("../../config/index.js");
|
|
25
|
+
const channel_js_1 = require("../../const/channel.js");
|
|
26
|
+
const helper_js_1 = require("../../utils/helper.js");
|
|
27
|
+
const index_js_4 = require("../../loader/index.js");
|
|
28
|
+
const extend_js_1 = require("../../utils/extend.js");
|
|
29
|
+
/**
|
|
30
|
+
* JobProcess - Child process manager
|
|
31
|
+
*
|
|
32
|
+
* Encapsulates the complete logic of forking a child process:
|
|
33
|
+
* 1. Determine app.js entry path (child process entry within node_modules/ee-core)
|
|
34
|
+
* 2. Configure working directory and environment variables
|
|
35
|
+
* 3. Fork the child process and register event listeners
|
|
36
|
+
* 4. Provide dispatch() and callFunc() for sending messages
|
|
37
|
+
* 5. Provide kill() for terminating the process
|
|
38
|
+
*/
|
|
39
|
+
class JobProcess {
|
|
40
|
+
constructor(host, opt = {}, config = { messageLog: false }) {
|
|
41
|
+
let cwd = (0, index_js_2.getBaseDir)();
|
|
42
|
+
// Locate app.js entry: child process startup file within the ee-core package
|
|
43
|
+
const currentFilePath = typeof __filename !== 'undefined' ? __filename : '';
|
|
44
|
+
const appPath = path_1.default.join(path_1.default.dirname(currentFilePath), 'app.js');
|
|
45
|
+
// After packaging, cwd must be outside app.asar (child processes need access to node_modules)
|
|
46
|
+
if ((0, index_js_2.isPackaged)()) {
|
|
47
|
+
cwd = path_1.default.join((0, index_js_2.getBaseDir)(), '..');
|
|
48
|
+
}
|
|
49
|
+
const defaultOptions = {
|
|
50
|
+
processArgs: {
|
|
51
|
+
type: 'childJob',
|
|
52
|
+
// Pass main process config to child process so it doesn't need to load from filesystem
|
|
53
|
+
eeConfig: (0, index_js_3.getConfig)(),
|
|
54
|
+
},
|
|
55
|
+
processOptions: {
|
|
56
|
+
cwd,
|
|
57
|
+
env: (0, index_js_2.allEnv)(),
|
|
58
|
+
stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
const options = (0, extend_js_1.extend)(true, defaultOptions, opt);
|
|
62
|
+
this.emitter = new events_1.EventEmitter();
|
|
63
|
+
this.host = host;
|
|
64
|
+
this.args = [];
|
|
65
|
+
this.sleeping = false;
|
|
66
|
+
this.config = config;
|
|
67
|
+
// Serialize arguments and pass them to the child process
|
|
68
|
+
this.args.push(JSON.stringify(options.processArgs));
|
|
69
|
+
this.child = (0, child_process_1.fork)(appPath, this.args, options.processOptions ?? {});
|
|
70
|
+
this.pid = this.child.pid;
|
|
71
|
+
this._init();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Initialize child process event listeners
|
|
75
|
+
*
|
|
76
|
+
* Listens for three types of events:
|
|
77
|
+
* - message: Process messages from the child process (exception display, business message forwarding)
|
|
78
|
+
* - exit: Child process exited, notify host to clean up
|
|
79
|
+
* - error: Child process error, notify host to clean up
|
|
80
|
+
*/
|
|
81
|
+
_init() {
|
|
82
|
+
const { messageLog } = this.config;
|
|
83
|
+
this.child.on('message', (m) => {
|
|
84
|
+
if (messageLog) {
|
|
85
|
+
index_js_1.coreLogger.info(`[jobs/child] received a message from child-process, message: ${(0, serialize_javascript_1.default)(m)}`);
|
|
86
|
+
}
|
|
87
|
+
// Exception message: log it
|
|
88
|
+
if (m.channel === channel_js_1.Processes.showException) {
|
|
89
|
+
index_js_1.coreLogger.error(`${m.data}`);
|
|
90
|
+
}
|
|
91
|
+
// Business message: dispatch based on eventReceiver
|
|
92
|
+
if (m.channel === channel_js_1.Processes.sendToMain) {
|
|
93
|
+
this._eventEmit(m);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// Capture child process stdout/stderr for debugging
|
|
97
|
+
const stdout = this.child.stdout;
|
|
98
|
+
const stderr = this.child.stderr;
|
|
99
|
+
if (stdout) {
|
|
100
|
+
stdout.on('data', (data) => {
|
|
101
|
+
index_js_1.coreLogger.info(`[jobs/child] stdout: ${data.toString().trim()}`);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
if (stderr) {
|
|
105
|
+
stderr.on('data', (data) => {
|
|
106
|
+
index_js_1.coreLogger.error(`[jobs/child] stderr: ${data.toString().trim()}`);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
this.child.on('exit', (code, signal) => {
|
|
110
|
+
const data = { pid: this.pid };
|
|
111
|
+
this.host.emit(channel_js_1.Events.childProcessExit, data);
|
|
112
|
+
index_js_1.coreLogger.info(`[jobs/child] received a exit from child-process, code:${code}, signal:${signal}, pid:${this.pid}`);
|
|
113
|
+
});
|
|
114
|
+
this.child.on('error', (err) => {
|
|
115
|
+
const data = { pid: this.pid };
|
|
116
|
+
this.host.emit(channel_js_1.Events.childProcessError, data);
|
|
117
|
+
index_js_1.coreLogger.error(`[jobs/child] received a error from child-process, error: ${err}, pid:${this.pid}`);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Dispatch messages to different event emitters based on eventReceiver
|
|
122
|
+
*
|
|
123
|
+
* - forkProcess: send only to in-process emitter
|
|
124
|
+
* - childJob: send only to host emitter
|
|
125
|
+
* - all / others: send to both
|
|
126
|
+
*/
|
|
127
|
+
_eventEmit(m) {
|
|
128
|
+
switch (m.eventReceiver) {
|
|
129
|
+
case channel_js_1.Receiver.forkProcess:
|
|
130
|
+
this.emitter.emit(m.event, m.data);
|
|
131
|
+
break;
|
|
132
|
+
case channel_js_1.Receiver.childJob:
|
|
133
|
+
this.host.emit(m.event, m.data);
|
|
134
|
+
break;
|
|
135
|
+
default:
|
|
136
|
+
this.host.emit(m.event, m.data);
|
|
137
|
+
this.emitter.emit(m.event, m.data);
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Send a dispatch message to the child process
|
|
143
|
+
*
|
|
144
|
+
* @param cmd - Command (e.g. 'run')
|
|
145
|
+
* @param jobPath - Task file path
|
|
146
|
+
* @param params - Task parameters
|
|
147
|
+
*/
|
|
148
|
+
dispatch(cmd, jobPath = '', ...params) {
|
|
149
|
+
const mid = (0, helper_js_1.getRandomString)();
|
|
150
|
+
const msg = {
|
|
151
|
+
mid,
|
|
152
|
+
cmd,
|
|
153
|
+
jobPath,
|
|
154
|
+
jobParams: params,
|
|
155
|
+
};
|
|
156
|
+
this.child.send(msg);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Call a specified method on the task instance in the child process
|
|
160
|
+
*
|
|
161
|
+
* Resolves the task file path, then sends a run command with the specified function name.
|
|
162
|
+
*
|
|
163
|
+
* @param jobPath - Task file path (relative paths are resolved to absolute paths)
|
|
164
|
+
* @param funcName - Method name to call
|
|
165
|
+
* @param params - Method arguments
|
|
166
|
+
*/
|
|
167
|
+
callFunc(jobPath = '', funcName = '', ...params) {
|
|
168
|
+
const fullPath = (0, index_js_4.getFullpath)(jobPath);
|
|
169
|
+
const mid = (0, helper_js_1.getRandomString)();
|
|
170
|
+
const msg = {
|
|
171
|
+
mid,
|
|
172
|
+
cmd: 'run',
|
|
173
|
+
jobPath: fullPath,
|
|
174
|
+
jobFunc: funcName,
|
|
175
|
+
jobFuncParams: params,
|
|
176
|
+
};
|
|
177
|
+
this.child.send(msg);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Terminate the child process
|
|
181
|
+
*
|
|
182
|
+
* First sends SIGINT for graceful exit, then sends SIGKILL to force termination after timeout.
|
|
183
|
+
*
|
|
184
|
+
* @param timeout - Timeout in milliseconds to wait for graceful exit
|
|
185
|
+
*/
|
|
186
|
+
kill(timeout = 1000) {
|
|
187
|
+
this.child.kill('SIGINT');
|
|
188
|
+
setTimeout(() => {
|
|
189
|
+
if (this.child.killed)
|
|
190
|
+
return;
|
|
191
|
+
this.child.kill('SIGKILL');
|
|
192
|
+
}, timeout);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.JobProcess = JobProcess;
|
|
196
|
+
//# sourceMappingURL=jobProcess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobProcess.js","sourceRoot":"","sources":["../../../../src/jobs/child/jobProcess.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module jobs/child-pool
|
|
3
|
+
* @description Child process pool manager. Maintains a set of child processes, distributes tasks
|
|
4
|
+
* through a load balancing algorithm, avoiding the overhead of frequent process creation and destruction.
|
|
5
|
+
*
|
|
6
|
+
* Core features:
|
|
7
|
+
* - Pool size: min=3, max=6, configurable
|
|
8
|
+
* - Load balancing: supports multiple algorithms (polling/weights/random, etc.), default is polling
|
|
9
|
+
* - Process binding: binds specific IDs to fixed processes via boundMap (e.g. session binding)
|
|
10
|
+
* - Auto cleanup: child processes are automatically removed from the pool on exit/error
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* ```ts
|
|
14
|
+
* const pool = new ChildPoolJob();
|
|
15
|
+
* await pool.create(3); // Create 3 child processes
|
|
16
|
+
* await pool.run('service/job'); // Load balancer selects a process to execute
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
import { EventEmitter } from 'events';
|
|
20
|
+
import { LoadBalancer } from '../load-balancer/index.js';
|
|
21
|
+
import { JobProcess } from '../child/jobProcess.js';
|
|
22
|
+
import type { JobsConfig } from '../../types/index.js';
|
|
23
|
+
/** Child process pool options */
|
|
24
|
+
export interface ChildPoolOptions {
|
|
25
|
+
/** Weight values for each process (used by weighted load balancing algorithms) */
|
|
26
|
+
weights?: number[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* ChildPoolJob - Child process pool
|
|
30
|
+
*
|
|
31
|
+
* Manages a set of child processes, distributes tasks through LoadBalancer.
|
|
32
|
+
* Inherits EventEmitter, listens for child process exit/error events for auto cleanup.
|
|
33
|
+
*/
|
|
34
|
+
export declare class ChildPoolJob extends EventEmitter {
|
|
35
|
+
/** Task configuration */
|
|
36
|
+
config: JobsConfig;
|
|
37
|
+
/** Binding map: boundId -> pid (binds specific IDs to fixed processes) */
|
|
38
|
+
boundMap: Map<string | number, number>;
|
|
39
|
+
/** Child process pool: pid -> JobProcess */
|
|
40
|
+
children: Record<number, JobProcess>;
|
|
41
|
+
/** Minimum number of processes */
|
|
42
|
+
min: number;
|
|
43
|
+
/** Maximum number of processes */
|
|
44
|
+
max: number;
|
|
45
|
+
/** Load balancing strategy name */
|
|
46
|
+
strategy: string;
|
|
47
|
+
/** Weight array for each process */
|
|
48
|
+
weights: number[];
|
|
49
|
+
/** Load balancer instance */
|
|
50
|
+
LB: LoadBalancer;
|
|
51
|
+
constructor(opt?: ChildPoolOptions);
|
|
52
|
+
/**
|
|
53
|
+
* Initialize event listeners
|
|
54
|
+
*
|
|
55
|
+
* Automatically removes child processes from the pool and load balancer on exit or error.
|
|
56
|
+
*/
|
|
57
|
+
_initEvents(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Remove a child process from the pool
|
|
60
|
+
*
|
|
61
|
+
* Removes from both children map and load balancer.
|
|
62
|
+
*/
|
|
63
|
+
_removeChild(pid: number): void;
|
|
64
|
+
/**
|
|
65
|
+
* Create a specified number of child processes
|
|
66
|
+
*
|
|
67
|
+
* New processes are added to the pool and load balancer.
|
|
68
|
+
* The count is limited by max; excess processes will not be created.
|
|
69
|
+
*
|
|
70
|
+
* @param number - Number of processes to create
|
|
71
|
+
* @returns List of all process PIDs after creation
|
|
72
|
+
* @throws Throws an error if the count is invalid or exceeds the maximum limit
|
|
73
|
+
*/
|
|
74
|
+
create(number?: number): Promise<string[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Registration handling after child process creation
|
|
77
|
+
*
|
|
78
|
+
* Adds the process to the children map and load balancer.
|
|
79
|
+
*/
|
|
80
|
+
_childCreated(childProcess: JobProcess): void;
|
|
81
|
+
/**
|
|
82
|
+
* Execute a task file
|
|
83
|
+
*
|
|
84
|
+
* Selects a child process via the load balancer and sends a run command to execute the task.
|
|
85
|
+
*
|
|
86
|
+
* @param filepath - Task file path
|
|
87
|
+
* @param params - Task parameters
|
|
88
|
+
* @returns The child process instance executing the task
|
|
89
|
+
*/
|
|
90
|
+
run(filepath: string, params?: Record<string, unknown>): Promise<JobProcess>;
|
|
91
|
+
/**
|
|
92
|
+
* Asynchronously execute a task file (alias for run)
|
|
93
|
+
*/
|
|
94
|
+
runPromise(filepath: string, params?: Record<string, unknown>): Promise<JobProcess>;
|
|
95
|
+
/**
|
|
96
|
+
* Get a bound child process
|
|
97
|
+
*
|
|
98
|
+
* The same boundId is always assigned to the same child process, suitable for session binding scenarios.
|
|
99
|
+
* If the bound process no longer exists, a new process is reassigned.
|
|
100
|
+
*
|
|
101
|
+
* @param boundId - Binding identifier (e.g. user ID, session ID)
|
|
102
|
+
* @returns Child process instance
|
|
103
|
+
*/
|
|
104
|
+
getBoundChild(boundId: string | number): Promise<JobProcess>;
|
|
105
|
+
/** Get a child process by PID */
|
|
106
|
+
getChildByPid(pid: number): JobProcess | null;
|
|
107
|
+
/**
|
|
108
|
+
* Get an available child process
|
|
109
|
+
*
|
|
110
|
+
* If the pool is empty, automatically creates one.
|
|
111
|
+
* Uses the load balancer to select a process.
|
|
112
|
+
*
|
|
113
|
+
* @returns Child process instance
|
|
114
|
+
* @throws Throws an error if retrieval fails
|
|
115
|
+
*/
|
|
116
|
+
getChild(): Promise<JobProcess>;
|
|
117
|
+
/** Get PID list of all child processes */
|
|
118
|
+
getPids(): string[];
|
|
119
|
+
/**
|
|
120
|
+
* Kill all child processes
|
|
121
|
+
*
|
|
122
|
+
* @param type - Kill mode: 'parallel' kills all at once, 'sequence' kills one per second
|
|
123
|
+
*/
|
|
124
|
+
killAll(type?: 'sequence' | 'parallel'): void;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/jobs/child-pool/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAA0B,MAAM,wBAAwB,CAAC;AAI5E,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,sBAAsB,CAAC;AAE7E,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,0EAA0E;IAC1E,QAAQ,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6BAA6B;IAC7B,EAAE,EAAE,YAAY,CAAC;gBAEL,GAAG,GAAE,gBAAqB;IAiCtC;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAanB;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAU/B;;;;;;;;;OASG;IACG,MAAM,CAAC,MAAM,SAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2B3C;;;;OAIG;IACH,aAAa,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI;IAc7C;;;;;;;;OAQG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQtF;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI7F;;;;;;;;OAQG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAelE,iCAAiC;IACjC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAI7C;;;;;;;;OAQG;IACG,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC;IA0BrC,0CAA0C;IAC1C,OAAO,IAAI,MAAM,EAAE;IAInB;;;;OAIG;IACH,OAAO,CAAC,IAAI,GAAE,UAAU,GAAG,UAAuB,GAAG,IAAI;CAgB1D"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChildPoolJob = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @module jobs/child-pool
|
|
6
|
+
* @description Child process pool manager. Maintains a set of child processes, distributes tasks
|
|
7
|
+
* through a load balancing algorithm, avoiding the overhead of frequent process creation and destruction.
|
|
8
|
+
*
|
|
9
|
+
* Core features:
|
|
10
|
+
* - Pool size: min=3, max=6, configurable
|
|
11
|
+
* - Load balancing: supports multiple algorithms (polling/weights/random, etc.), default is polling
|
|
12
|
+
* - Process binding: binds specific IDs to fixed processes via boundMap (e.g. session binding)
|
|
13
|
+
* - Auto cleanup: child processes are automatically removed from the pool on exit/error
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* ```ts
|
|
17
|
+
* const pool = new ChildPoolJob();
|
|
18
|
+
* await pool.create(3); // Create 3 child processes
|
|
19
|
+
* await pool.run('service/job'); // Load balancer selects a process to execute
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
const events_1 = require("events");
|
|
23
|
+
const index_js_1 = require("../load-balancer/index.js");
|
|
24
|
+
const index_js_2 = require("../../loader/index.js");
|
|
25
|
+
const jobProcess_js_1 = require("../child/jobProcess.js");
|
|
26
|
+
const channel_js_1 = require("../../const/channel.js");
|
|
27
|
+
const helper_js_1 = require("../../utils/helper.js");
|
|
28
|
+
const index_js_3 = require("../../config/index.js");
|
|
29
|
+
/**
|
|
30
|
+
* ChildPoolJob - Child process pool
|
|
31
|
+
*
|
|
32
|
+
* Manages a set of child processes, distributes tasks through LoadBalancer.
|
|
33
|
+
* Inherits EventEmitter, listens for child process exit/error events for auto cleanup.
|
|
34
|
+
*/
|
|
35
|
+
class ChildPoolJob extends events_1.EventEmitter {
|
|
36
|
+
constructor(opt = {}) {
|
|
37
|
+
super();
|
|
38
|
+
const options = {
|
|
39
|
+
weights: [],
|
|
40
|
+
...opt,
|
|
41
|
+
};
|
|
42
|
+
this.config = { messageLog: false };
|
|
43
|
+
this.boundMap = new Map();
|
|
44
|
+
this.children = {};
|
|
45
|
+
this.min = 3;
|
|
46
|
+
this.max = 6;
|
|
47
|
+
this.strategy = 'polling';
|
|
48
|
+
// Default weight is 1, can be customized via configuration
|
|
49
|
+
this.weights = new Array(this.max).fill(0).map((_v, i) => {
|
|
50
|
+
const w = options.weights[i];
|
|
51
|
+
return (0, helper_js_1.validValue)(w) ? w : 1;
|
|
52
|
+
});
|
|
53
|
+
const lbOpt = {
|
|
54
|
+
algorithm: index_js_1.LoadBalancer.Algorithm.polling,
|
|
55
|
+
targets: [],
|
|
56
|
+
};
|
|
57
|
+
this.LB = new index_js_1.LoadBalancer(lbOpt);
|
|
58
|
+
const cfg = (0, index_js_3.getConfig)().jobs;
|
|
59
|
+
if (cfg) {
|
|
60
|
+
this.config = cfg;
|
|
61
|
+
}
|
|
62
|
+
this._initEvents();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Initialize event listeners
|
|
66
|
+
*
|
|
67
|
+
* Automatically removes child processes from the pool and load balancer on exit or error.
|
|
68
|
+
*/
|
|
69
|
+
_initEvents() {
|
|
70
|
+
this.on(channel_js_1.Events.childProcessExit, (data) => {
|
|
71
|
+
if (data.pid !== undefined) {
|
|
72
|
+
this._removeChild(data.pid);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
this.on(channel_js_1.Events.childProcessError, (data) => {
|
|
76
|
+
if (data.pid !== undefined) {
|
|
77
|
+
this._removeChild(data.pid);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Remove a child process from the pool
|
|
83
|
+
*
|
|
84
|
+
* Removes from both children map and load balancer.
|
|
85
|
+
*/
|
|
86
|
+
_removeChild(pid) {
|
|
87
|
+
const length = Object.keys(this.children).length;
|
|
88
|
+
const lbOpt = {
|
|
89
|
+
id: pid,
|
|
90
|
+
weight: this.weights[length - 1] || 1,
|
|
91
|
+
};
|
|
92
|
+
this.LB.del(lbOpt);
|
|
93
|
+
delete this.children[pid];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create a specified number of child processes
|
|
97
|
+
*
|
|
98
|
+
* New processes are added to the pool and load balancer.
|
|
99
|
+
* The count is limited by max; excess processes will not be created.
|
|
100
|
+
*
|
|
101
|
+
* @param number - Number of processes to create
|
|
102
|
+
* @returns List of all process PIDs after creation
|
|
103
|
+
* @throws Throws an error if the count is invalid or exceeds the maximum limit
|
|
104
|
+
*/
|
|
105
|
+
async create(number = 3) {
|
|
106
|
+
if (number < 0 || number > this.max) {
|
|
107
|
+
throw new Error('[ee-core] [jobs/child-pool] The number is invalid !');
|
|
108
|
+
}
|
|
109
|
+
const currentNumber = Object.keys(this.children).length;
|
|
110
|
+
if (currentNumber > this.max) {
|
|
111
|
+
throw new Error(`[ee-core] [jobs/child-pool] The number of current processes number: ${currentNumber} is greater than the maximum: ${this.max} !`);
|
|
112
|
+
}
|
|
113
|
+
// Adjust creation count to not exceed maximum limit
|
|
114
|
+
if (number + currentNumber > this.max) {
|
|
115
|
+
number = this.max - currentNumber;
|
|
116
|
+
}
|
|
117
|
+
const options = {
|
|
118
|
+
processArgs: {
|
|
119
|
+
type: 'childPoolJob',
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
for (let i = 1; i <= number; i++) {
|
|
123
|
+
const task = new jobProcess_js_1.JobProcess(this, options, this.config);
|
|
124
|
+
this._childCreated(task);
|
|
125
|
+
}
|
|
126
|
+
return Object.keys(this.children);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Registration handling after child process creation
|
|
130
|
+
*
|
|
131
|
+
* Adds the process to the children map and load balancer.
|
|
132
|
+
*/
|
|
133
|
+
_childCreated(childProcess) {
|
|
134
|
+
const pid = childProcess.pid;
|
|
135
|
+
if (pid === undefined)
|
|
136
|
+
return;
|
|
137
|
+
this.children[pid] = childProcess;
|
|
138
|
+
const length = Object.keys(this.children).length;
|
|
139
|
+
const lbTask = {
|
|
140
|
+
id: pid,
|
|
141
|
+
weight: this.weights[length - 1] || 1,
|
|
142
|
+
};
|
|
143
|
+
this.LB.add(lbTask);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Execute a task file
|
|
147
|
+
*
|
|
148
|
+
* Selects a child process via the load balancer and sends a run command to execute the task.
|
|
149
|
+
*
|
|
150
|
+
* @param filepath - Task file path
|
|
151
|
+
* @param params - Task parameters
|
|
152
|
+
* @returns The child process instance executing the task
|
|
153
|
+
*/
|
|
154
|
+
async run(filepath, params = {}) {
|
|
155
|
+
const jobPath = (0, index_js_2.getFullpath)(filepath);
|
|
156
|
+
const childProcess = await this.getChild();
|
|
157
|
+
childProcess.dispatch('run', jobPath, params);
|
|
158
|
+
return childProcess;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Asynchronously execute a task file (alias for run)
|
|
162
|
+
*/
|
|
163
|
+
async runPromise(filepath, params = {}) {
|
|
164
|
+
return this.run(filepath, params);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get a bound child process
|
|
168
|
+
*
|
|
169
|
+
* The same boundId is always assigned to the same child process, suitable for session binding scenarios.
|
|
170
|
+
* If the bound process no longer exists, a new process is reassigned.
|
|
171
|
+
*
|
|
172
|
+
* @param boundId - Binding identifier (e.g. user ID, session ID)
|
|
173
|
+
* @returns Child process instance
|
|
174
|
+
*/
|
|
175
|
+
async getBoundChild(boundId) {
|
|
176
|
+
let proc;
|
|
177
|
+
const boundPid = this.boundMap.get(boundId);
|
|
178
|
+
if (boundPid !== undefined) {
|
|
179
|
+
proc = this.children[boundPid];
|
|
180
|
+
if (proc)
|
|
181
|
+
return proc;
|
|
182
|
+
}
|
|
183
|
+
// Bound process does not exist, retrieve and bind a new one
|
|
184
|
+
proc = await this.getChild();
|
|
185
|
+
this.boundMap.set(boundId, proc.pid ?? 0);
|
|
186
|
+
return proc;
|
|
187
|
+
}
|
|
188
|
+
/** Get a child process by PID */
|
|
189
|
+
getChildByPid(pid) {
|
|
190
|
+
return this.children[pid] || null;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get an available child process
|
|
194
|
+
*
|
|
195
|
+
* If the pool is empty, automatically creates one.
|
|
196
|
+
* Uses the load balancer to select a process.
|
|
197
|
+
*
|
|
198
|
+
* @returns Child process instance
|
|
199
|
+
* @throws Throws an error if retrieval fails
|
|
200
|
+
*/
|
|
201
|
+
async getChild() {
|
|
202
|
+
let proc;
|
|
203
|
+
const currentPids = Object.keys(this.children);
|
|
204
|
+
if (currentPids.length === 0) {
|
|
205
|
+
// Pool is empty, auto-create
|
|
206
|
+
const subIds = await this.create(1);
|
|
207
|
+
const firstId = subIds[0];
|
|
208
|
+
if (firstId) {
|
|
209
|
+
proc = this.children[parseInt(firstId, 10)];
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// Select via load balancer
|
|
214
|
+
const picked = this.LB.pickOne();
|
|
215
|
+
if (picked && typeof picked.id === 'number') {
|
|
216
|
+
proc = this.children[picked.id];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (!proc) {
|
|
220
|
+
throw new Error('[ee-core] [jobs/child-pool] Failed to obtain the child process !');
|
|
221
|
+
}
|
|
222
|
+
return proc;
|
|
223
|
+
}
|
|
224
|
+
/** Get PID list of all child processes */
|
|
225
|
+
getPids() {
|
|
226
|
+
return Object.keys(this.children);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Kill all child processes
|
|
230
|
+
*
|
|
231
|
+
* @param type - Kill mode: 'parallel' kills all at once, 'sequence' kills one per second
|
|
232
|
+
*/
|
|
233
|
+
killAll(type = 'parallel') {
|
|
234
|
+
let i = 1;
|
|
235
|
+
Object.keys(this.children).forEach(key => {
|
|
236
|
+
const proc = this.children[parseInt(key, 10)];
|
|
237
|
+
if (proc) {
|
|
238
|
+
if (type === 'sequence') {
|
|
239
|
+
setTimeout(() => {
|
|
240
|
+
proc.kill();
|
|
241
|
+
}, i * 1000);
|
|
242
|
+
i++;
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
proc.kill();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
exports.ChildPoolJob = ChildPoolJob;
|
|
252
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/jobs/child-pool/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,mCAAsC;AACtC,wDAAyD;AACzD,oDAAoD;AACpD,0DAA4E;AAC5E,uDAAgD;AAChD,qDAAmD;AACnD,oDAAkD;AASlD;;;;;GAKG;AACH,MAAa,YAAa,SAAQ,qBAAY;IAkB5C,YAAY,MAAwB,EAAE;QACpC,KAAK,EAAE,CAAC;QACR,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,EAAc;YACvB,GAAG,GAAG;SACP,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,2DAA2D;QAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACvD,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,IAAA,sBAAU,EAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,uBAAY,CAAC,SAAS,CAAC,OAAO;YACzC,OAAO,EAAE,EAAsC;SAChD,CAAC;QACF,IAAI,CAAC,EAAE,GAAG,IAAI,uBAAY,CAAC,KAAK,CAAC,CAAC;QAElC,MAAM,GAAG,GAAG,IAAA,oBAAS,GAAE,CAAC,IAA8B,CAAC;QACvD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,IAAI,CAAC,EAAE,CAAC,mBAAM,CAAC,gBAAgB,EAAE,CAAC,IAA0B,EAAE,EAAE;YAC9D,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,mBAAM,CAAC,iBAAiB,EAAE,CAAC,IAA0B,EAAE,EAAE;YAC/D,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,GAAW;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACjD,MAAM,KAAK,GAAG;YACZ,EAAE,EAAE,GAAG;YACP,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;SACtC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACrB,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACxD,IAAI,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,uEAAuE,aAAa,iCAAiC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACrJ,CAAC;QAED,oDAAoD;QACpD,IAAI,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC;QACpC,CAAC;QAED,MAAM,OAAO,GAAsB;YACjC,WAAW,EAAE;gBACX,IAAI,EAAE,cAAc;aACrB;SACF,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,0BAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,YAAwB;QACpC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;QAC7B,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO;QAE9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACjD,MAAM,MAAM,GAAG;YACb,EAAE,EAAE,GAAG;YACP,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;SACtC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,GAAG,CAAC,QAAgB,EAAE,SAAkC,EAAE;QAC9D,MAAM,OAAO,GAAG,IAAA,sBAAW,EAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3C,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAiB,EAAE,MAAM,CAAC,CAAC;QAExD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,SAAkC,EAAE;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAAC,OAAwB;QAC1C,IAAI,IAA4B,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;QAED,4DAA4D;QAC5D,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iCAAiC;IACjC,aAAa,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACpC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAA4B,CAAC;QACjC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,6BAA6B;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACL,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAgC,UAAU;QAChD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9C,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;oBACxB,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;oBACb,CAAC,EAAE,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA9PD,oCA8PC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module jobs
|
|
3
|
+
* @description Background task module entry. Provides child process task management and load balancing capabilities.
|
|
4
|
+
*
|
|
5
|
+
* Core components:
|
|
6
|
+
* - ChildJob: Single task execution, creates a new child process each time
|
|
7
|
+
* - ChildPoolJob: Process pool, reuses child processes, distributes tasks via load balancing
|
|
8
|
+
* - LoadBalancer: Load balancer, supports multiple scheduling algorithms
|
|
9
|
+
* - AlgorithmType: Algorithm type constants
|
|
10
|
+
*/
|
|
11
|
+
export { ChildJob } from './child/index.js';
|
|
12
|
+
export { ChildPoolJob } from './child-pool/index.js';
|
|
13
|
+
export { LoadBalancer } from './load-balancer/index.js';
|
|
14
|
+
export { AlgorithmType } from './load-balancer/consts.js';
|
|
15
|
+
export type { LoadBalancerTarget, LoadBalancerParams, LoadBalancerOptions } from './load-balancer/types.js';
|
|
16
|
+
export type { JobProcessOptions, JobMessage, ProcessMessage } from './child/jobProcess.js';
|
|
17
|
+
export type { ChildPoolOptions } from './child-pool/index.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jobs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC5G,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC3F,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlgorithmType = exports.LoadBalancer = exports.ChildPoolJob = exports.ChildJob = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @module jobs
|
|
6
|
+
* @description Background task module entry. Provides child process task management and load balancing capabilities.
|
|
7
|
+
*
|
|
8
|
+
* Core components:
|
|
9
|
+
* - ChildJob: Single task execution, creates a new child process each time
|
|
10
|
+
* - ChildPoolJob: Process pool, reuses child processes, distributes tasks via load balancing
|
|
11
|
+
* - LoadBalancer: Load balancer, supports multiple scheduling algorithms
|
|
12
|
+
* - AlgorithmType: Algorithm type constants
|
|
13
|
+
*/
|
|
14
|
+
var index_js_1 = require("./child/index.js");
|
|
15
|
+
Object.defineProperty(exports, "ChildJob", { enumerable: true, get: function () { return index_js_1.ChildJob; } });
|
|
16
|
+
var index_js_2 = require("./child-pool/index.js");
|
|
17
|
+
Object.defineProperty(exports, "ChildPoolJob", { enumerable: true, get: function () { return index_js_2.ChildPoolJob; } });
|
|
18
|
+
var index_js_3 = require("./load-balancer/index.js");
|
|
19
|
+
Object.defineProperty(exports, "LoadBalancer", { enumerable: true, get: function () { return index_js_3.LoadBalancer; } });
|
|
20
|
+
var consts_js_1 = require("./load-balancer/consts.js");
|
|
21
|
+
Object.defineProperty(exports, "AlgorithmType", { enumerable: true, get: function () { return consts_js_1.AlgorithmType; } });
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/jobs/index.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACH,6CAA4C;AAAnC,oGAAA,QAAQ,OAAA;AACjB,kDAAqD;AAA5C,wGAAA,YAAY,OAAA;AACrB,qDAAwD;AAA/C,wGAAA,YAAY,OAAA;AACrB,uDAA0D;AAAjD,0GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LoadBalancerTarget } from '../types.js';
|
|
2
|
+
/** Algorithm function type */
|
|
3
|
+
export type AlgorithmFn = (tasks: LoadBalancerTarget[], ...args: unknown[]) => LoadBalancerTarget | null;
|
|
4
|
+
/** Algorithm name -> algorithm function mapping */
|
|
5
|
+
declare const algorithms: Record<string, AlgorithmFn>;
|
|
6
|
+
export default algorithms;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/jobs/load-balancer/algorithm/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,8BAA8B;AAC9B,MAAM,MAAM,WAAW,GAAG,CACxB,KAAK,EAAE,kBAAkB,EAAE,EAC3B,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,kBAAkB,GAAG,IAAI,CAAC;AAE/B,mDAAmD;AACnD,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAS3C,CAAC;AAEF,eAAe,UAAU,CAAC"}
|