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,64 @@
|
|
|
1
|
+
/** JSON write options */
|
|
2
|
+
export interface JsonWriteOptions {
|
|
3
|
+
/** Number of indent spaces, default 2 */
|
|
4
|
+
space?: number;
|
|
5
|
+
/** JSON.stringify replacer function for custom serialization logic */
|
|
6
|
+
replacer?: (key: string, value: unknown) => unknown;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Strictly parse a JSON string
|
|
10
|
+
*
|
|
11
|
+
* Unlike JSON.parse, additionally validates that the parsed result must be an object type,
|
|
12
|
+
* preventing primitive type values (such as strings, numbers) from being parsed.
|
|
13
|
+
*
|
|
14
|
+
* @param str - JSON string
|
|
15
|
+
* @returns Parsed object
|
|
16
|
+
* @throws Error - Throws when parse result is not an object
|
|
17
|
+
*/
|
|
18
|
+
export declare function strictParse(str: string): unknown;
|
|
19
|
+
/**
|
|
20
|
+
* Synchronously read a JSON file
|
|
21
|
+
*
|
|
22
|
+
* Reads file content and parses it as an object; throws if file does not exist.
|
|
23
|
+
*
|
|
24
|
+
* @param filepath - JSON file path
|
|
25
|
+
* @returns Parsed object
|
|
26
|
+
* @throws Error - Throws when file does not exist
|
|
27
|
+
*/
|
|
28
|
+
export declare function readSync(filepath: string): unknown;
|
|
29
|
+
/**
|
|
30
|
+
* Synchronously write a JSON file
|
|
31
|
+
*
|
|
32
|
+
* Automatically creates the target directory, objects are automatically serialized to JSON string,
|
|
33
|
+
* non-object values are converted to string for writing. Default uses 2-space indentation.
|
|
34
|
+
*
|
|
35
|
+
* @param filepath - Target file path
|
|
36
|
+
* @param str - Content to write, objects will be serialized by JSON.stringify
|
|
37
|
+
* @param options - Write options (indentation, replacer)
|
|
38
|
+
*/
|
|
39
|
+
export declare function writeSync(filepath: string, str: unknown, options?: JsonWriteOptions): void;
|
|
40
|
+
/**
|
|
41
|
+
* Asynchronously read a JSON file
|
|
42
|
+
*
|
|
43
|
+
* First checks if the file exists and is a regular file, then reads and parses it.
|
|
44
|
+
* Uses fs.promises async API, does not block the event loop.
|
|
45
|
+
*
|
|
46
|
+
* @param filepath - JSON file path
|
|
47
|
+
* @returns Promise of the parsed object
|
|
48
|
+
* @throws Error - Throws when file does not exist or is not a file
|
|
49
|
+
*/
|
|
50
|
+
export declare function read(filepath: string): Promise<unknown>;
|
|
51
|
+
/**
|
|
52
|
+
* Asynchronously write a JSON file
|
|
53
|
+
*
|
|
54
|
+
* Automatically creates the target directory, objects are automatically serialized to JSON string,
|
|
55
|
+
* non-object values are converted to string for writing. Default uses 2-space indentation.
|
|
56
|
+
* Uses fs.promises async API, does not block the event loop.
|
|
57
|
+
*
|
|
58
|
+
* @param filepath - Target file path
|
|
59
|
+
* @param str - Content to write, objects will be serialized by JSON.stringify
|
|
60
|
+
* @param options - Write options (indentation, replacer)
|
|
61
|
+
* @returns Promise that resolves when writing is complete
|
|
62
|
+
*/
|
|
63
|
+
export declare function write(filepath: string, str: unknown, options?: JsonWriteOptions): Promise<void>;
|
|
64
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/utils/json.ts"],"names":[],"mappings":"AASA,yBAAyB;AACzB,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CACrD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAc9F;AAED;;;;;;;;;GASG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnG"}
|
|
@@ -0,0 +1,122 @@
|
|
|
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.strictParse = strictParse;
|
|
7
|
+
exports.readSync = readSync;
|
|
8
|
+
exports.writeSync = writeSync;
|
|
9
|
+
exports.read = read;
|
|
10
|
+
exports.write = write;
|
|
11
|
+
/**
|
|
12
|
+
* @module utils/json
|
|
13
|
+
* @description JSON file read/write utility. Provides synchronous and asynchronous JSON file
|
|
14
|
+
* read/write functions, automatically handling directory creation, object serialization, and
|
|
15
|
+
* file path checking, simplifying JSON file operations in framework and business code.
|
|
16
|
+
*/
|
|
17
|
+
const fs_1 = __importDefault(require("fs"));
|
|
18
|
+
const path_1 = __importDefault(require("path"));
|
|
19
|
+
/**
|
|
20
|
+
* Strictly parse a JSON string
|
|
21
|
+
*
|
|
22
|
+
* Unlike JSON.parse, additionally validates that the parsed result must be an object type,
|
|
23
|
+
* preventing primitive type values (such as strings, numbers) from being parsed.
|
|
24
|
+
*
|
|
25
|
+
* @param str - JSON string
|
|
26
|
+
* @returns Parsed object
|
|
27
|
+
* @throws Error - Throws when parse result is not an object
|
|
28
|
+
*/
|
|
29
|
+
function strictParse(str) {
|
|
30
|
+
const obj = JSON.parse(str);
|
|
31
|
+
// Ensure parse result is an object, excluding null, primitive values, and arrays
|
|
32
|
+
if (!obj || typeof obj !== 'object') {
|
|
33
|
+
throw new Error('JSON string is not object');
|
|
34
|
+
}
|
|
35
|
+
return obj;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Synchronously read a JSON file
|
|
39
|
+
*
|
|
40
|
+
* Reads file content and parses it as an object; throws if file does not exist.
|
|
41
|
+
*
|
|
42
|
+
* @param filepath - JSON file path
|
|
43
|
+
* @returns Parsed object
|
|
44
|
+
* @throws Error - Throws when file does not exist
|
|
45
|
+
*/
|
|
46
|
+
function readSync(filepath) {
|
|
47
|
+
if (!fs_1.default.existsSync(filepath)) {
|
|
48
|
+
throw new Error(filepath + ' is not found');
|
|
49
|
+
}
|
|
50
|
+
return JSON.parse(fs_1.default.readFileSync(filepath, 'utf8'));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Synchronously write a JSON file
|
|
54
|
+
*
|
|
55
|
+
* Automatically creates the target directory, objects are automatically serialized to JSON string,
|
|
56
|
+
* non-object values are converted to string for writing. Default uses 2-space indentation.
|
|
57
|
+
*
|
|
58
|
+
* @param filepath - Target file path
|
|
59
|
+
* @param str - Content to write, objects will be serialized by JSON.stringify
|
|
60
|
+
* @param options - Write options (indentation, replacer)
|
|
61
|
+
*/
|
|
62
|
+
function writeSync(filepath, str, options = {}) {
|
|
63
|
+
const opts = { space: 2, ...options };
|
|
64
|
+
// Ensure target directory exists, avoiding write errors due to missing directory
|
|
65
|
+
fs_1.default.mkdirSync(path_1.default.dirname(filepath), { recursive: true });
|
|
66
|
+
let content;
|
|
67
|
+
if (typeof str === 'object') {
|
|
68
|
+
content = JSON.stringify(str, opts.replacer, opts.space) + '\n';
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Non-object values are converted to string directly for writing
|
|
72
|
+
content = String(str);
|
|
73
|
+
}
|
|
74
|
+
fs_1.default.writeFileSync(filepath, content);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Asynchronously read a JSON file
|
|
78
|
+
*
|
|
79
|
+
* First checks if the file exists and is a regular file, then reads and parses it.
|
|
80
|
+
* Uses fs.promises async API, does not block the event loop.
|
|
81
|
+
*
|
|
82
|
+
* @param filepath - JSON file path
|
|
83
|
+
* @returns Promise of the parsed object
|
|
84
|
+
* @throws Error - Throws when file does not exist or is not a file
|
|
85
|
+
*/
|
|
86
|
+
function read(filepath) {
|
|
87
|
+
return fs_1.default.promises
|
|
88
|
+
.stat(filepath)
|
|
89
|
+
.then((stats) => {
|
|
90
|
+
// Ensure path points to a regular file, not a directory
|
|
91
|
+
if (!stats.isFile()) {
|
|
92
|
+
throw new Error(filepath + ' is not found');
|
|
93
|
+
}
|
|
94
|
+
return fs_1.default.promises.readFile(filepath, 'utf8');
|
|
95
|
+
})
|
|
96
|
+
.then((buf) => JSON.parse(buf));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Asynchronously write a JSON file
|
|
100
|
+
*
|
|
101
|
+
* Automatically creates the target directory, objects are automatically serialized to JSON string,
|
|
102
|
+
* non-object values are converted to string for writing. Default uses 2-space indentation.
|
|
103
|
+
* Uses fs.promises async API, does not block the event loop.
|
|
104
|
+
*
|
|
105
|
+
* @param filepath - Target file path
|
|
106
|
+
* @param str - Content to write, objects will be serialized by JSON.stringify
|
|
107
|
+
* @param options - Write options (indentation, replacer)
|
|
108
|
+
* @returns Promise that resolves when writing is complete
|
|
109
|
+
*/
|
|
110
|
+
function write(filepath, str, options = {}) {
|
|
111
|
+
const opts = { space: 2, ...options };
|
|
112
|
+
let content;
|
|
113
|
+
if (typeof str === 'object') {
|
|
114
|
+
content = JSON.stringify(str, opts.replacer, opts.space) + '\n';
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
content = String(str);
|
|
118
|
+
}
|
|
119
|
+
// First ensure directory exists, then write the file
|
|
120
|
+
return fs_1.default.promises.mkdir(path_1.default.dirname(filepath), { recursive: true }).then(() => fs_1.default.promises.writeFile(filepath, content));
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/utils/json.ts"],"names":[],"mappings":";;;;;AA2BA,kCAOC;AAWD,4BAKC;AAYD,8BAcC;AAYD,oBAWC;AAcD,sBAYC;AA7HD;;;;;GAKG;AACH,4CAAoB;AACpB,gDAAwB;AAUxB;;;;;;;;;GASG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,iFAAiF;IACjF,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,QAAQ,CAAC,QAAgB;IACvC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,SAAS,CAAC,QAAgB,EAAE,GAAY,EAAE,UAA4B,EAAE;IACtF,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAEtC,iFAAiF;IACjF,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,OAAe,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,QAAoD,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC9G,CAAC;SAAM,CAAC;QACN,iEAAiE;QACjE,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,IAAI,CAAC,QAAgB;IACnC,OAAO,YAAE,CAAC,QAAQ;SACf,IAAI,CAAC,QAAQ,CAAC;SACd,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,wDAAwD;QACxD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,KAAK,CAAC,QAAgB,EAAE,GAAY,EAAE,UAA4B,EAAE;IAClF,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAEtC,IAAI,OAAe,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,QAAoD,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC9G,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,qDAAqD;IACrD,OAAO,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7H,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module utils/pargv
|
|
3
|
+
* @description Lightweight command line argument parser. Provides parseArgv() function that
|
|
4
|
+
* parses a string array into a structured key-value object, supporting short options,
|
|
5
|
+
* long options, aliases, boolean flags, nested properties, and more.
|
|
6
|
+
*
|
|
7
|
+
* Parsing steps:
|
|
8
|
+
* 1. Initialization phase: process boolean/string/alias/default configuration, build flag mappings
|
|
9
|
+
* 2. Split phase: separate arguments into options and non-options parts using '--' as delimiter
|
|
10
|
+
* 3. Item-by-item parsing phase:
|
|
11
|
+
* - `--key=value`: long option with equals sign assignment
|
|
12
|
+
* - `--no-key`: long option negation form (boolean false)
|
|
13
|
+
* - `--key value`: long option followed by value
|
|
14
|
+
* - `-abc`: short option combination (each letter is a separate option)
|
|
15
|
+
* - Bare values: stored in argv._ array
|
|
16
|
+
* 4. Default value filling: fill default values for keys that did not appear
|
|
17
|
+
* 5. Non-option argument handling: based on '--' option, store in argv['--'] or argv._
|
|
18
|
+
*
|
|
19
|
+
* Security: automatically skips __proto__ and constructor properties, preventing prototype chain pollution.
|
|
20
|
+
*/
|
|
21
|
+
/** Command line parsing options */
|
|
22
|
+
export interface ParseArgvOptions {
|
|
23
|
+
/** Declare boolean-type parameters. When true, all --flags are treated as boolean; or specify a list of parameter names */
|
|
24
|
+
boolean?: boolean | string[];
|
|
25
|
+
/** Parameter alias mapping, e.g. { h: 'help', v: 'version' } */
|
|
26
|
+
alias?: Record<string, string | string[]>;
|
|
27
|
+
/** Declare string-type parameters; these parameters will not be auto-converted to numbers */
|
|
28
|
+
string?: string | string[];
|
|
29
|
+
/** Parameter default value mapping */
|
|
30
|
+
default?: Record<string, unknown>;
|
|
31
|
+
/** Unknown argument handler function; returning false prevents the argument from being parsed */
|
|
32
|
+
unknown?: (arg: string) => boolean | void;
|
|
33
|
+
/** Stop parsing when the first non-option argument is encountered; remaining arguments go into _ array */
|
|
34
|
+
stopEarly?: boolean;
|
|
35
|
+
/** Whether to put arguments after '--' into argv['--'] array instead of argv._ */
|
|
36
|
+
'--'?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/** Parsed result object */
|
|
39
|
+
export interface ParsedArgv {
|
|
40
|
+
/** Non-option argument list (bare values and positional arguments) */
|
|
41
|
+
_: (string | number)[];
|
|
42
|
+
/** Argument list after '--' separator (only present when opts['--'] is true) */
|
|
43
|
+
'--'?: string[];
|
|
44
|
+
/** Parsed key-value pairs; key names support dot notation nesting (e.g. 'a.b' -> { a: { b: ... } }) */
|
|
45
|
+
[key: string]: unknown;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Parse command line argument array
|
|
49
|
+
*
|
|
50
|
+
* Parses a process.argv-style string array into a structured key-value object.
|
|
51
|
+
*
|
|
52
|
+
* @param args - Argument array (typically process.argv.slice(2))
|
|
53
|
+
* @param opts - Parsing options
|
|
54
|
+
* @returns Parsed result object
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* parseArgv(['--name=foo', '-p', '8080', '--verbose', 'file.txt'], {
|
|
59
|
+
* boolean: ['verbose'],
|
|
60
|
+
* alias: { p: 'port' },
|
|
61
|
+
* string: ['name'],
|
|
62
|
+
* })
|
|
63
|
+
* // => { _: ['file.txt'], name: 'foo', port: 8080, verbose: true }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function parseArgv(args: string[], opts?: ParseArgvOptions): ParsedArgv;
|
|
67
|
+
//# sourceMappingURL=pargv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pargv.d.ts","sourceRoot":"","sources":["../../../src/utils/pargv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAiDH,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,2HAA2H;IAC3H,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC7B,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC1C,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,iGAAiG;IACjG,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IAC1C,0GAA0G;IAC1G,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kFAAkF;IAClF,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,2BAA2B;AAC3B,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACvB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,uGAAuG;IACvG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,UAAU,CA0U7E"}
|
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @module utils/pargv
|
|
4
|
+
* @description Lightweight command line argument parser. Provides parseArgv() function that
|
|
5
|
+
* parses a string array into a structured key-value object, supporting short options,
|
|
6
|
+
* long options, aliases, boolean flags, nested properties, and more.
|
|
7
|
+
*
|
|
8
|
+
* Parsing steps:
|
|
9
|
+
* 1. Initialization phase: process boolean/string/alias/default configuration, build flag mappings
|
|
10
|
+
* 2. Split phase: separate arguments into options and non-options parts using '--' as delimiter
|
|
11
|
+
* 3. Item-by-item parsing phase:
|
|
12
|
+
* - `--key=value`: long option with equals sign assignment
|
|
13
|
+
* - `--no-key`: long option negation form (boolean false)
|
|
14
|
+
* - `--key value`: long option followed by value
|
|
15
|
+
* - `-abc`: short option combination (each letter is a separate option)
|
|
16
|
+
* - Bare values: stored in argv._ array
|
|
17
|
+
* 4. Default value filling: fill default values for keys that did not appear
|
|
18
|
+
* 5. Non-option argument handling: based on '--' option, store in argv['--'] or argv._
|
|
19
|
+
*
|
|
20
|
+
* Security: automatically skips __proto__ and constructor properties, preventing prototype chain pollution.
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.parseArgv = parseArgv;
|
|
24
|
+
/**
|
|
25
|
+
* Check if an object has the specified nested key path
|
|
26
|
+
*
|
|
27
|
+
* Traverses down the key path, only checking key existence at the last level (not retrieving value).
|
|
28
|
+
*
|
|
29
|
+
* @param obj - Target object
|
|
30
|
+
* @param keys - Key path array (e.g. ['a', 'b', 'c'])
|
|
31
|
+
* @returns true if the key path exists
|
|
32
|
+
*/
|
|
33
|
+
function hasKey(obj, keys) {
|
|
34
|
+
let o = obj;
|
|
35
|
+
// Traverse to second-to-last level, retrieving values
|
|
36
|
+
keys.slice(0, -1).forEach(function (key) {
|
|
37
|
+
o = o[key] || {};
|
|
38
|
+
});
|
|
39
|
+
const key = keys[keys.length - 1];
|
|
40
|
+
if (!key)
|
|
41
|
+
return false;
|
|
42
|
+
return key in o;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Determine if a string is in numeric format
|
|
46
|
+
*
|
|
47
|
+
* Supports hexadecimal (0x prefix), decimal integers and decimals, scientific notation.
|
|
48
|
+
*
|
|
49
|
+
* @param x - String to check
|
|
50
|
+
* @returns true if the string is a valid numeric format
|
|
51
|
+
*/
|
|
52
|
+
function isNumber(x) {
|
|
53
|
+
if (/^0x[0-9a-f]+$/i.test(x))
|
|
54
|
+
return true;
|
|
55
|
+
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Detect if a key name is constructor or __proto__
|
|
59
|
+
*
|
|
60
|
+
* Used to prevent prototype chain pollution attacks; these special properties should not be set.
|
|
61
|
+
*
|
|
62
|
+
* @param obj - Target object
|
|
63
|
+
* @param key - Key name
|
|
64
|
+
* @returns true if the key is a dangerous property
|
|
65
|
+
*/
|
|
66
|
+
function isConstructorOrProto(obj, key) {
|
|
67
|
+
return (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__';
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Parse command line argument array
|
|
71
|
+
*
|
|
72
|
+
* Parses a process.argv-style string array into a structured key-value object.
|
|
73
|
+
*
|
|
74
|
+
* @param args - Argument array (typically process.argv.slice(2))
|
|
75
|
+
* @param opts - Parsing options
|
|
76
|
+
* @returns Parsed result object
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* parseArgv(['--name=foo', '-p', '8080', '--verbose', 'file.txt'], {
|
|
81
|
+
* boolean: ['verbose'],
|
|
82
|
+
* alias: { p: 'port' },
|
|
83
|
+
* string: ['name'],
|
|
84
|
+
* })
|
|
85
|
+
* // => { _: ['file.txt'], name: 'foo', port: 8080, verbose: true }
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
function parseArgv(args, opts) {
|
|
89
|
+
if (!opts)
|
|
90
|
+
opts = {};
|
|
91
|
+
// Step 1: Build flag mapping, recording which parameters are boolean or string type
|
|
92
|
+
const flags = {
|
|
93
|
+
bools: {},
|
|
94
|
+
strings: {},
|
|
95
|
+
unknownFn: null,
|
|
96
|
+
};
|
|
97
|
+
if (typeof opts.unknown === 'function') {
|
|
98
|
+
flags.unknownFn = opts.unknown;
|
|
99
|
+
}
|
|
100
|
+
// When boolean option is true, all --flag form arguments are treated as boolean
|
|
101
|
+
if (typeof opts.boolean === 'boolean' && opts.boolean) {
|
|
102
|
+
flags.allBools = true;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
// Otherwise only mark specified parameter names as boolean
|
|
106
|
+
[].concat(opts.boolean || []).filter(Boolean).forEach(function (key) {
|
|
107
|
+
flags.bools[key] = true;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
// Step 2: Build bidirectional alias mapping
|
|
111
|
+
const aliases = {};
|
|
112
|
+
/**
|
|
113
|
+
* Check if any alias of the specified key is boolean
|
|
114
|
+
*
|
|
115
|
+
* @param key - Parameter key name
|
|
116
|
+
* @returns true if any alias of the key is boolean
|
|
117
|
+
*/
|
|
118
|
+
function aliasIsBoolean(key) {
|
|
119
|
+
return aliases[key]?.some(function (x) {
|
|
120
|
+
return flags.bools[x];
|
|
121
|
+
}) ?? false;
|
|
122
|
+
}
|
|
123
|
+
// Build bidirectional alias mapping: each alias can map to all other aliases and the original key
|
|
124
|
+
const aliasOpts = opts.alias || {};
|
|
125
|
+
Object.keys(aliasOpts).forEach(function (key) {
|
|
126
|
+
const aliasValue = aliasOpts[key];
|
|
127
|
+
if (!aliasValue)
|
|
128
|
+
return;
|
|
129
|
+
const aliasList = [].concat(aliasValue);
|
|
130
|
+
aliases[key] = aliasList;
|
|
131
|
+
aliasList.forEach(function (x) {
|
|
132
|
+
// Each alias maps to the original key + other aliases (excluding itself)
|
|
133
|
+
const filtered = aliasList.filter(function (y) {
|
|
134
|
+
return x !== y;
|
|
135
|
+
});
|
|
136
|
+
aliases[x] = [key].concat(filtered);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
// Step 3: Mark string options in the flag mapping (aliases also need to be synced)
|
|
140
|
+
const stringOpts = opts.string || [];
|
|
141
|
+
const stringList = [].concat(stringOpts).filter(Boolean);
|
|
142
|
+
stringList.forEach(function (key) {
|
|
143
|
+
flags.strings[key] = true;
|
|
144
|
+
if (aliases[key]) {
|
|
145
|
+
[].concat(aliases[key]).forEach(function (k) {
|
|
146
|
+
flags.strings[k] = true;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
// Step 4: Extract default values, fill after parsing is complete
|
|
151
|
+
const defaults = opts.default || {};
|
|
152
|
+
// Initialize result object
|
|
153
|
+
const argv = { _: [] };
|
|
154
|
+
/**
|
|
155
|
+
* Determine if a parameter key has been defined (via flags or aliases)
|
|
156
|
+
*
|
|
157
|
+
* @param key - Parameter key name
|
|
158
|
+
* @param arg - Original argument string
|
|
159
|
+
* @returns true if the key has been declared
|
|
160
|
+
*/
|
|
161
|
+
function argDefined(key, arg) {
|
|
162
|
+
return (
|
|
163
|
+
// In allBools mode, --flag form arguments are all considered defined
|
|
164
|
+
(!!flags.allBools && /^--[^=]+$/.test(arg)) ||
|
|
165
|
+
!!flags.strings[key] ||
|
|
166
|
+
!!flags.bools[key] ||
|
|
167
|
+
!!aliases[key]);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Set a value along a nested key path
|
|
171
|
+
*
|
|
172
|
+
* Supports dot-separated nested properties, e.g. 'a.b.c' -> obj.a.b.c = value.
|
|
173
|
+
* If the value already exists, repeated arguments with the same key are collected as an array.
|
|
174
|
+
*
|
|
175
|
+
* @param obj - Target object
|
|
176
|
+
* @param keys - Key path array
|
|
177
|
+
* @param value - Value to set
|
|
178
|
+
*/
|
|
179
|
+
function setKey(obj, keys, value) {
|
|
180
|
+
let o = obj;
|
|
181
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
182
|
+
const key = keys[i];
|
|
183
|
+
// Skip dangerous properties, preventing prototype chain pollution
|
|
184
|
+
if (!key || isConstructorOrProto(o, key))
|
|
185
|
+
return;
|
|
186
|
+
// Auto-create object if intermediate level doesn't exist
|
|
187
|
+
if (o[key] === undefined)
|
|
188
|
+
o[key] = {};
|
|
189
|
+
const oValue = o[key];
|
|
190
|
+
// Prevent overwriting built-in prototype objects
|
|
191
|
+
if (oValue === Object.prototype ||
|
|
192
|
+
oValue === Number.prototype ||
|
|
193
|
+
oValue === String.prototype) {
|
|
194
|
+
o[key] = {};
|
|
195
|
+
}
|
|
196
|
+
if (oValue === Array.prototype)
|
|
197
|
+
o[key] = {};
|
|
198
|
+
o = o[key];
|
|
199
|
+
}
|
|
200
|
+
const lastKey = keys[keys.length - 1];
|
|
201
|
+
// Last level also checks for dangerous properties
|
|
202
|
+
if (!lastKey || isConstructorOrProto(o, lastKey))
|
|
203
|
+
return;
|
|
204
|
+
if (o === Object.prototype || o === Number.prototype || o === String.prototype) {
|
|
205
|
+
o = {};
|
|
206
|
+
}
|
|
207
|
+
if (o === Array.prototype)
|
|
208
|
+
o = {};
|
|
209
|
+
if (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') {
|
|
210
|
+
// First assignment or boolean parameter: set directly
|
|
211
|
+
o[lastKey] = value;
|
|
212
|
+
}
|
|
213
|
+
else if (Array.isArray(o[lastKey])) {
|
|
214
|
+
// Existing array: append value
|
|
215
|
+
o[lastKey].push(value);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
// Existing single value: convert to array
|
|
219
|
+
o[lastKey] = [o[lastKey], value];
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Set parameter value and sync to all aliases
|
|
224
|
+
*
|
|
225
|
+
* @param key - Parameter key name
|
|
226
|
+
* @param val - Parameter value
|
|
227
|
+
* @param arg - Original argument string (for unknown check)
|
|
228
|
+
*/
|
|
229
|
+
function setArg(key, val, arg) {
|
|
230
|
+
// Unknown argument check: if argument is undeclared and unknown function returns false, skip it
|
|
231
|
+
if (arg && flags.unknownFn && !argDefined(key, arg)) {
|
|
232
|
+
if (flags.unknownFn(arg) === false)
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
// Non-string-type parameters with numeric format values are auto-converted to numbers
|
|
236
|
+
const value = !flags.strings[key] && isNumber(val) ? Number(val) : val;
|
|
237
|
+
setKey(argv, key.split('.'), value);
|
|
238
|
+
// Sync value to all aliases
|
|
239
|
+
(aliases[key] || []).forEach(function (x) {
|
|
240
|
+
setKey(argv, x.split('.'), value);
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
// Step 5: Pre-set default values for boolean parameters (false when unspecified)
|
|
244
|
+
Object.keys(flags.bools).forEach(function (key) {
|
|
245
|
+
setArg(key, defaults[key] === undefined ? false : defaults[key]);
|
|
246
|
+
});
|
|
247
|
+
let notFlags = [];
|
|
248
|
+
// Step 6: Split arguments before and after '--'
|
|
249
|
+
const dashIndex = args.indexOf('--');
|
|
250
|
+
if (dashIndex !== -1) {
|
|
251
|
+
// All arguments after '--' are treated as non-option arguments
|
|
252
|
+
notFlags = args.slice(dashIndex + 1);
|
|
253
|
+
args = args.slice(0, dashIndex);
|
|
254
|
+
}
|
|
255
|
+
// Step 7: Parse arguments item by item
|
|
256
|
+
for (let i = 0; i < args.length; i++) {
|
|
257
|
+
const arg = args[i];
|
|
258
|
+
if (!arg)
|
|
259
|
+
continue;
|
|
260
|
+
let next;
|
|
261
|
+
// Case 1: --key=value long option with equals sign assignment
|
|
262
|
+
if (/^--.+?=/.test(arg)) {
|
|
263
|
+
const m = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
264
|
+
if (!m)
|
|
265
|
+
continue;
|
|
266
|
+
const argKey = m[1];
|
|
267
|
+
if (!argKey)
|
|
268
|
+
continue;
|
|
269
|
+
let value = m[2];
|
|
270
|
+
// Boolean parameter values only recognize true/false
|
|
271
|
+
if (flags.bools[argKey]) {
|
|
272
|
+
value = value !== 'false' ? 'true' : 'false';
|
|
273
|
+
}
|
|
274
|
+
setArg(argKey, value, arg);
|
|
275
|
+
}
|
|
276
|
+
else if (/^--no-.+/.test(arg)) {
|
|
277
|
+
// Case 2: --no-key negation form, equivalent to --key=false
|
|
278
|
+
const m = arg.match(/^--no-(.+)$/);
|
|
279
|
+
if (!m)
|
|
280
|
+
continue;
|
|
281
|
+
const argKey = m[1];
|
|
282
|
+
if (!argKey)
|
|
283
|
+
continue;
|
|
284
|
+
setArg(argKey, false, arg);
|
|
285
|
+
}
|
|
286
|
+
else if (/^--.+/.test(arg)) {
|
|
287
|
+
// Case 3: --key [value] long option followed by optional value
|
|
288
|
+
const m = arg.match(/^--(.+)$/);
|
|
289
|
+
if (!m)
|
|
290
|
+
continue;
|
|
291
|
+
const argKey = m[1];
|
|
292
|
+
if (!argKey)
|
|
293
|
+
continue;
|
|
294
|
+
next = args[i + 1];
|
|
295
|
+
if (next !== undefined &&
|
|
296
|
+
!/^(-|--)[^-]/.test(next) &&
|
|
297
|
+
!flags.bools[argKey] &&
|
|
298
|
+
!flags.allBools &&
|
|
299
|
+
(aliases[argKey] ? !aliasIsBoolean(argKey) : true)) {
|
|
300
|
+
// Next argument is a value, not a new option
|
|
301
|
+
setArg(argKey, next, arg);
|
|
302
|
+
i += 1;
|
|
303
|
+
}
|
|
304
|
+
else if (next && /^(true|false)$/.test(next)) {
|
|
305
|
+
// Explicit boolean value
|
|
306
|
+
setArg(argKey, next === 'true', arg);
|
|
307
|
+
i += 1;
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
// No value: string type set to empty string, boolean type set to true
|
|
311
|
+
setArg(argKey, flags.strings[argKey] ? '' : true, arg);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
else if (/^-[^-]+/.test(arg)) {
|
|
315
|
+
// Case 4: -abc short option combination
|
|
316
|
+
const letters = arg.slice(1, -1).split('');
|
|
317
|
+
let broken = false;
|
|
318
|
+
for (let j = 0; j < letters.length; j++) {
|
|
319
|
+
const letter = letters[j];
|
|
320
|
+
if (!letter)
|
|
321
|
+
continue;
|
|
322
|
+
next = arg.slice(j + 2);
|
|
323
|
+
if (next === '-') {
|
|
324
|
+
setArg(letter, next, arg);
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
// -a=value form
|
|
328
|
+
if (/[A-Za-z]/.test(letter) && next && next[0] === '=') {
|
|
329
|
+
setArg(letter, next.slice(1), arg);
|
|
330
|
+
broken = true;
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
// -a123 form (letter followed by digits)
|
|
334
|
+
if (/[A-Za-z]/.test(letter) && next && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
335
|
+
setArg(letter, next, arg);
|
|
336
|
+
broken = true;
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
const nextLetter = letters[j + 1];
|
|
340
|
+
if (nextLetter && nextLetter.match(/\W/)) {
|
|
341
|
+
// Non-alphanumeric character treated as start of value
|
|
342
|
+
setArg(letter, arg.slice(j + 2), arg);
|
|
343
|
+
broken = true;
|
|
344
|
+
break;
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
// Regular short option flag
|
|
348
|
+
setArg(letter, flags.strings[letter] ? '' : true, arg);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// Handle the last character of a short option combination, which may need the next argument as value
|
|
352
|
+
const lastChar = arg.slice(-1);
|
|
353
|
+
const shortKey = lastChar;
|
|
354
|
+
if (!broken && shortKey !== '-') {
|
|
355
|
+
const nextArg = args[i + 1];
|
|
356
|
+
if (nextArg &&
|
|
357
|
+
!/^(-|--)[^-]/.test(nextArg) &&
|
|
358
|
+
!flags.bools[shortKey] &&
|
|
359
|
+
(aliases[shortKey] ? !aliasIsBoolean(shortKey) : true)) {
|
|
360
|
+
setArg(shortKey, nextArg, arg);
|
|
361
|
+
i += 1;
|
|
362
|
+
}
|
|
363
|
+
else if (nextArg && /^(true|false)$/.test(nextArg)) {
|
|
364
|
+
setArg(shortKey, nextArg === 'true', arg);
|
|
365
|
+
i += 1;
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
setArg(shortKey, flags.strings[shortKey] ? '' : true, arg);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
// Case 5: bare value argument, store in _ array
|
|
374
|
+
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
375
|
+
argv._.push((flags.strings._ || !isNumber(arg) ? arg : Number(arg)));
|
|
376
|
+
}
|
|
377
|
+
// In stopEarly mode, all subsequent arguments go into _ array
|
|
378
|
+
if (opts.stopEarly) {
|
|
379
|
+
argv._.push.apply(argv._, args.slice(i + 1));
|
|
380
|
+
break;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
// Step 8: Fill default values (only for keys not present in parsing)
|
|
385
|
+
Object.keys(defaults).forEach(function (k) {
|
|
386
|
+
if (!hasKey(argv, k.split('.'))) {
|
|
387
|
+
setKey(argv, k.split('.'), defaults[k]);
|
|
388
|
+
(aliases[k] || []).forEach(function (x) {
|
|
389
|
+
setKey(argv, x.split('.'), defaults[k]);
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
});
|
|
393
|
+
// Step 9: Handle non-option arguments after '--' separator
|
|
394
|
+
if (opts['--']) {
|
|
395
|
+
// Store in dedicated argv['--'] array
|
|
396
|
+
argv['--'] = notFlags.slice();
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
// Append to _ array
|
|
400
|
+
notFlags.forEach(function (k) {
|
|
401
|
+
argv._.push(k);
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
return argv;
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=pargv.js.map
|