ee-core 5.0.0-beta.2 → 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 +36 -1
- package/dist/cjs/app/application.d.ts.map +1 -1
- package/dist/cjs/app/application.js +49 -2
- package/dist/cjs/app/application.js.map +1 -1
- package/dist/cjs/app/boot.d.ts +56 -1
- package/dist/cjs/app/boot.d.ts.map +1 -1
- package/dist/cjs/app/boot.js +74 -11
- package/dist/cjs/app/boot.js.map +1 -1
- package/dist/cjs/app/dir.d.ts +10 -0
- package/dist/cjs/app/dir.d.ts.map +1 -1
- package/dist/cjs/app/dir.js +71 -10
- package/dist/cjs/app/dir.js.map +1 -1
- package/dist/cjs/app/events.d.ts +58 -2
- package/dist/cjs/app/events.d.ts.map +1 -1
- package/dist/cjs/app/events.js +92 -12
- package/dist/cjs/app/events.js.map +1 -1
- package/dist/cjs/config/config_loader.d.ts +44 -0
- package/dist/cjs/config/config_loader.d.ts.map +1 -1
- package/dist/cjs/config/config_loader.js +82 -1
- package/dist/cjs/config/config_loader.js.map +1 -1
- package/dist/cjs/config/default_config.d.ts +5 -0
- package/dist/cjs/config/default_config.d.ts.map +1 -1
- package/dist/cjs/config/default_config.js +98 -11
- package/dist/cjs/config/default_config.js.map +1 -1
- package/dist/cjs/config/index.d.ts +31 -1
- package/dist/cjs/config/index.d.ts.map +1 -1
- package/dist/cjs/config/index.js +52 -0
- package/dist/cjs/config/index.js.map +1 -1
- package/dist/cjs/const/channel.d.ts +17 -0
- package/dist/cjs/const/channel.d.ts.map +1 -1
- package/dist/cjs/const/channel.js +17 -0
- package/dist/cjs/const/channel.js.map +1 -1
- package/dist/cjs/controller/controller_loader.d.ts +20 -1
- package/dist/cjs/controller/controller_loader.d.ts.map +1 -1
- package/dist/cjs/controller/controller_loader.js +89 -9
- package/dist/cjs/controller/controller_loader.js.map +1 -1
- package/dist/cjs/controller/index.d.ts +32 -0
- package/dist/cjs/controller/index.d.ts.map +1 -1
- package/dist/cjs/controller/index.js +66 -0
- package/dist/cjs/controller/index.js.map +1 -1
- package/dist/cjs/core/loader/file_loader.d.ts +78 -27
- package/dist/cjs/core/loader/file_loader.d.ts.map +1 -1
- package/dist/cjs/core/loader/file_loader.js +194 -68
- package/dist/cjs/core/loader/file_loader.js.map +1 -1
- package/dist/cjs/core/utils/index.d.ts +57 -2
- package/dist/cjs/core/utils/index.d.ts.map +1 -1
- package/dist/cjs/core/utils/index.js +120 -12
- package/dist/cjs/core/utils/index.js.map +1 -1
- package/dist/cjs/core/utils/timing.d.ts +47 -0
- package/dist/cjs/core/utils/timing.d.ts.map +1 -1
- package/dist/cjs/core/utils/timing.js +42 -2
- package/dist/cjs/core/utils/timing.js.map +1 -1
- package/dist/cjs/cross/cross.d.ts +81 -2
- package/dist/cjs/cross/cross.d.ts.map +1 -1
- package/dist/cjs/cross/cross.js +86 -16
- package/dist/cjs/cross/cross.js.map +1 -1
- package/dist/cjs/cross/crossProcess.d.ts +85 -14
- package/dist/cjs/cross/crossProcess.d.ts.map +1 -1
- package/dist/cjs/cross/crossProcess.js +85 -13
- package/dist/cjs/cross/crossProcess.js.map +1 -1
- package/dist/cjs/electron/app/index.d.ts +17 -1
- package/dist/cjs/electron/app/index.d.ts.map +1 -1
- package/dist/cjs/electron/app/index.js +27 -3
- package/dist/cjs/electron/app/index.js.map +1 -1
- package/dist/cjs/electron/index.d.ts +6 -0
- package/dist/cjs/electron/index.d.ts.map +1 -1
- package/dist/cjs/electron/index.js +16 -1
- package/dist/cjs/electron/index.js.map +1 -1
- package/dist/cjs/electron/window/index.d.ts +37 -0
- package/dist/cjs/electron/window/index.d.ts.map +1 -1
- package/dist/cjs/electron/window/index.js +144 -88
- package/dist/cjs/electron/window/index.js.map +1 -1
- package/dist/cjs/exception/index.d.ts +12 -0
- package/dist/cjs/exception/index.d.ts.map +1 -1
- package/dist/cjs/exception/index.js +67 -9
- package/dist/cjs/exception/index.js.map +1 -1
- package/dist/cjs/html/index.d.ts +19 -0
- package/dist/cjs/html/index.d.ts.map +1 -1
- package/dist/cjs/html/index.js +42 -0
- package/dist/cjs/html/index.js.map +1 -1
- package/dist/cjs/index.d.ts +35 -7
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +127 -80
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/jobs/child/app.js +86 -25
- package/dist/cjs/jobs/child/app.js.map +1 -1
- package/dist/cjs/jobs/child/index.d.ts +5 -5
- package/dist/cjs/jobs/child/index.js +5 -5
- package/dist/cjs/jobs/child/jobProcess.d.ts +68 -0
- package/dist/cjs/jobs/child/jobProcess.d.ts.map +1 -1
- package/dist/cjs/jobs/child/jobProcess.js +86 -11
- package/dist/cjs/jobs/child/jobProcess.js.map +1 -1
- package/dist/cjs/jobs/child-pool/index.d.ts +96 -0
- package/dist/cjs/jobs/child-pool/index.d.ts.map +1 -1
- package/dist/cjs/jobs/child-pool/index.js +91 -4
- package/dist/cjs/jobs/child-pool/index.js.map +1 -1
- package/dist/cjs/jobs/index.d.ts +10 -0
- package/dist/cjs/jobs/index.d.ts.map +1 -1
- package/dist/cjs/jobs/index.js +10 -0
- package/dist/cjs/jobs/index.js.map +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/index.d.ts +2 -0
- package/dist/cjs/jobs/load-balancer/algorithm/index.d.ts.map +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/index.js +6 -0
- package/dist/cjs/jobs/load-balancer/algorithm/index.js.map +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.d.ts +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/minimumConnection.js +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/polling.d.ts +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/polling.js +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/random.d.ts +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/random.js +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/specify.d.ts +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/specify.js +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weights.d.ts +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weights.d.ts.map +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weights.js +4 -8
- package/dist/cjs/jobs/load-balancer/algorithm/weights.js.map +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts.map +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.js +6 -11
- package/dist/cjs/jobs/load-balancer/algorithm/weightsMinimumConnection.js.map +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.d.ts +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weightsPolling.js +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.d.ts +1 -1
- package/dist/cjs/jobs/load-balancer/algorithm/weightsRandom.js +1 -1
- package/dist/cjs/jobs/load-balancer/consts.d.ts +22 -0
- package/dist/cjs/jobs/load-balancer/consts.d.ts.map +1 -1
- package/dist/cjs/jobs/load-balancer/consts.js +22 -0
- package/dist/cjs/jobs/load-balancer/consts.js.map +1 -1
- package/dist/cjs/jobs/load-balancer/index.d.ts +18 -18
- package/dist/cjs/jobs/load-balancer/index.js +18 -18
- package/dist/cjs/jobs/load-balancer/scheduler.d.ts +3 -3
- package/dist/cjs/jobs/load-balancer/scheduler.js +3 -3
- package/dist/cjs/jobs/load-balancer/types.d.ts +21 -0
- package/dist/cjs/jobs/load-balancer/types.d.ts.map +1 -1
- package/dist/cjs/jobs/load-balancer/types.js +4 -0
- package/dist/cjs/jobs/load-balancer/types.js.map +1 -1
- 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 +52 -0
- package/dist/cjs/loader/index.d.ts.map +1 -1
- package/dist/cjs/loader/index.js +79 -10
- package/dist/cjs/loader/index.js.map +1 -1
- package/dist/cjs/log/index.d.ts +41 -0
- package/dist/cjs/log/index.d.ts.map +1 -1
- package/dist/cjs/log/index.js +59 -20
- package/dist/cjs/log/index.js.map +1 -1
- package/dist/cjs/log/logger.d.ts +26 -0
- package/dist/cjs/log/logger.d.ts.map +1 -1
- package/dist/cjs/log/logger.js +122 -2
- package/dist/cjs/log/logger.js.map +1 -1
- package/dist/cjs/message/childMessage.d.ts +50 -0
- package/dist/cjs/message/childMessage.d.ts.map +1 -1
- package/dist/cjs/message/childMessage.js +83 -2
- package/dist/cjs/message/childMessage.js.map +1 -1
- package/dist/cjs/ps/index.d.ts +112 -0
- package/dist/cjs/ps/index.d.ts.map +1 -1
- package/dist/cjs/ps/index.js +175 -41
- package/dist/cjs/ps/index.js.map +1 -1
- package/dist/cjs/socket/httpServer.d.ts +58 -5
- package/dist/cjs/socket/httpServer.d.ts.map +1 -1
- package/dist/cjs/socket/httpServer.js +94 -28
- package/dist/cjs/socket/httpServer.js.map +1 -1
- package/dist/cjs/socket/index.d.ts +45 -3
- package/dist/cjs/socket/index.d.ts.map +1 -1
- package/dist/cjs/socket/index.js +50 -14
- package/dist/cjs/socket/index.js.map +1 -1
- package/dist/cjs/socket/ipcServer.d.ts +31 -1
- package/dist/cjs/socket/ipcServer.d.ts.map +1 -1
- package/dist/cjs/socket/ipcServer.js +60 -43
- package/dist/cjs/socket/ipcServer.js.map +1 -1
- package/dist/cjs/socket/socketServer.d.ts +32 -1
- package/dist/cjs/socket/socketServer.d.ts.map +1 -1
- package/dist/cjs/socket/socketServer.js +53 -14
- package/dist/cjs/socket/socketServer.js.map +1 -1
- 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/sqliteStorage.d.ts +93 -4
- package/dist/cjs/storage/sqliteStorage.d.ts.map +1 -1
- package/dist/cjs/storage/sqliteStorage.js +121 -9
- package/dist/cjs/storage/sqliteStorage.js.map +1 -1
- package/dist/cjs/types/index.d.ts +373 -5
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/utils/extend.d.ts +44 -1
- package/dist/cjs/utils/extend.d.ts.map +1 -1
- package/dist/cjs/utils/extend.js +67 -19
- package/dist/cjs/utils/extend.js.map +1 -1
- package/dist/cjs/utils/helper.d.ts +154 -1
- package/dist/cjs/utils/helper.d.ts.map +1 -1
- package/dist/cjs/utils/helper.js +205 -28
- package/dist/cjs/utils/helper.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +93 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +136 -12
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/ip.d.ts +29 -0
- package/dist/cjs/utils/ip.d.ts.map +1 -1
- package/dist/cjs/utils/ip.js +95 -4
- package/dist/cjs/utils/ip.js.map +1 -1
- package/dist/cjs/utils/is.d.ts +123 -0
- package/dist/cjs/utils/is.d.ts.map +1 -1
- package/dist/cjs/utils/is.js +126 -14
- package/dist/cjs/utils/is.js.map +1 -1
- package/dist/cjs/utils/json.d.ts +54 -0
- package/dist/cjs/utils/json.d.ts.map +1 -1
- package/dist/cjs/utils/json.js +62 -0
- package/dist/cjs/utils/json.js.map +1 -1
- package/dist/cjs/utils/pargv.d.ts +51 -0
- package/dist/cjs/utils/pargv.d.ts.map +1 -1
- package/dist/cjs/utils/pargv.js +141 -3
- package/dist/cjs/utils/pargv.js.map +1 -1
- package/dist/cjs/utils/port/index.d.ts +42 -0
- package/dist/cjs/utils/port/index.d.ts.map +1 -1
- package/dist/cjs/utils/port/index.js +130 -7
- package/dist/cjs/utils/port/index.js.map +1 -1
- package/dist/cjs/utils/type_check.d.ts +79 -0
- package/dist/cjs/utils/type_check.d.ts.map +1 -1
- package/dist/cjs/utils/type_check.js +87 -1
- package/dist/cjs/utils/type_check.js.map +1 -1
- package/dist/cjs/utils/wrap.d.ts +26 -0
- package/dist/cjs/utils/wrap.d.ts.map +1 -1
- package/dist/cjs/utils/wrap.js +47 -10
- package/dist/cjs/utils/wrap.js.map +1 -1
- package/dist/esm/app/application.d.ts +36 -1
- package/dist/esm/app/application.d.ts.map +1 -1
- package/dist/esm/app/application.js +49 -2
- package/dist/esm/app/application.js.map +1 -1
- package/dist/esm/app/boot.d.ts +56 -1
- package/dist/esm/app/boot.d.ts.map +1 -1
- package/dist/esm/app/boot.js +74 -11
- package/dist/esm/app/boot.js.map +1 -1
- package/dist/esm/app/dir.d.ts +10 -0
- package/dist/esm/app/dir.d.ts.map +1 -1
- package/dist/esm/app/dir.js +71 -10
- package/dist/esm/app/dir.js.map +1 -1
- package/dist/esm/app/events.d.ts +58 -2
- package/dist/esm/app/events.d.ts.map +1 -1
- package/dist/esm/app/events.js +92 -12
- package/dist/esm/app/events.js.map +1 -1
- package/dist/esm/config/config_loader.d.ts +44 -0
- package/dist/esm/config/config_loader.d.ts.map +1 -1
- package/dist/esm/config/config_loader.js +82 -1
- package/dist/esm/config/config_loader.js.map +1 -1
- package/dist/esm/config/default_config.d.ts +5 -0
- package/dist/esm/config/default_config.d.ts.map +1 -1
- package/dist/esm/config/default_config.js +98 -11
- package/dist/esm/config/default_config.js.map +1 -1
- package/dist/esm/config/index.d.ts +31 -1
- package/dist/esm/config/index.d.ts.map +1 -1
- package/dist/esm/config/index.js +52 -0
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/const/channel.d.ts +17 -0
- package/dist/esm/const/channel.d.ts.map +1 -1
- package/dist/esm/const/channel.js +17 -0
- package/dist/esm/const/channel.js.map +1 -1
- package/dist/esm/controller/controller_loader.d.ts +20 -1
- package/dist/esm/controller/controller_loader.d.ts.map +1 -1
- package/dist/esm/controller/controller_loader.js +89 -9
- package/dist/esm/controller/controller_loader.js.map +1 -1
- package/dist/esm/controller/index.d.ts +32 -0
- package/dist/esm/controller/index.d.ts.map +1 -1
- package/dist/esm/controller/index.js +66 -0
- package/dist/esm/controller/index.js.map +1 -1
- package/dist/esm/core/loader/file_loader.d.ts +78 -27
- package/dist/esm/core/loader/file_loader.d.ts.map +1 -1
- package/dist/esm/core/loader/file_loader.js +194 -68
- package/dist/esm/core/loader/file_loader.js.map +1 -1
- package/dist/esm/core/utils/index.d.ts +57 -2
- package/dist/esm/core/utils/index.d.ts.map +1 -1
- package/dist/esm/core/utils/index.js +87 -12
- package/dist/esm/core/utils/index.js.map +1 -1
- package/dist/esm/core/utils/timing.d.ts +47 -0
- package/dist/esm/core/utils/timing.d.ts.map +1 -1
- package/dist/esm/core/utils/timing.js +42 -2
- package/dist/esm/core/utils/timing.js.map +1 -1
- package/dist/esm/cross/cross.d.ts +81 -2
- package/dist/esm/cross/cross.d.ts.map +1 -1
- package/dist/esm/cross/cross.js +86 -16
- package/dist/esm/cross/cross.js.map +1 -1
- package/dist/esm/cross/crossProcess.d.ts +85 -14
- package/dist/esm/cross/crossProcess.d.ts.map +1 -1
- package/dist/esm/cross/crossProcess.js +85 -13
- package/dist/esm/cross/crossProcess.js.map +1 -1
- package/dist/esm/electron/app/index.d.ts +17 -1
- package/dist/esm/electron/app/index.d.ts.map +1 -1
- package/dist/esm/electron/app/index.js +27 -3
- package/dist/esm/electron/app/index.js.map +1 -1
- package/dist/esm/electron/index.d.ts +6 -0
- package/dist/esm/electron/index.d.ts.map +1 -1
- package/dist/esm/electron/index.js +16 -1
- package/dist/esm/electron/index.js.map +1 -1
- package/dist/esm/electron/window/index.d.ts +37 -0
- package/dist/esm/electron/window/index.d.ts.map +1 -1
- package/dist/esm/electron/window/index.js +144 -88
- package/dist/esm/electron/window/index.js.map +1 -1
- package/dist/esm/exception/index.d.ts +12 -0
- package/dist/esm/exception/index.d.ts.map +1 -1
- package/dist/esm/exception/index.js +67 -9
- package/dist/esm/exception/index.js.map +1 -1
- package/dist/esm/html/index.d.ts +19 -0
- package/dist/esm/html/index.d.ts.map +1 -1
- package/dist/esm/html/index.js +42 -0
- package/dist/esm/html/index.js.map +1 -1
- package/dist/esm/index.d.ts +35 -7
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +127 -80
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/jobs/child/app.js +86 -25
- package/dist/esm/jobs/child/app.js.map +1 -1
- package/dist/esm/jobs/child/index.d.ts +5 -5
- package/dist/esm/jobs/child/index.js +5 -5
- package/dist/esm/jobs/child/jobProcess.d.ts +68 -0
- package/dist/esm/jobs/child/jobProcess.d.ts.map +1 -1
- package/dist/esm/jobs/child/jobProcess.js +86 -11
- package/dist/esm/jobs/child/jobProcess.js.map +1 -1
- package/dist/esm/jobs/child-pool/index.d.ts +96 -0
- package/dist/esm/jobs/child-pool/index.d.ts.map +1 -1
- package/dist/esm/jobs/child-pool/index.js +91 -4
- package/dist/esm/jobs/child-pool/index.js.map +1 -1
- package/dist/esm/jobs/index.d.ts +10 -0
- package/dist/esm/jobs/index.d.ts.map +1 -1
- package/dist/esm/jobs/index.js +10 -0
- package/dist/esm/jobs/index.js.map +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/index.d.ts +2 -0
- package/dist/esm/jobs/load-balancer/algorithm/index.d.ts.map +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/index.js +6 -0
- package/dist/esm/jobs/load-balancer/algorithm/index.js.map +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.d.ts +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/minimumConnection.js +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/polling.d.ts +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/polling.js +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/random.d.ts +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/random.js +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/specify.d.ts +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/specify.js +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weights.d.ts +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weights.d.ts.map +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weights.js +4 -8
- package/dist/esm/jobs/load-balancer/algorithm/weights.js.map +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.d.ts.map +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.js +6 -11
- package/dist/esm/jobs/load-balancer/algorithm/weightsMinimumConnection.js.map +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.d.ts +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weightsPolling.js +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.d.ts +1 -1
- package/dist/esm/jobs/load-balancer/algorithm/weightsRandom.js +1 -1
- package/dist/esm/jobs/load-balancer/consts.d.ts +22 -0
- package/dist/esm/jobs/load-balancer/consts.d.ts.map +1 -1
- package/dist/esm/jobs/load-balancer/consts.js +22 -0
- package/dist/esm/jobs/load-balancer/consts.js.map +1 -1
- package/dist/esm/jobs/load-balancer/index.d.ts +18 -18
- package/dist/esm/jobs/load-balancer/index.js +18 -18
- package/dist/esm/jobs/load-balancer/scheduler.d.ts +3 -3
- package/dist/esm/jobs/load-balancer/scheduler.js +3 -3
- package/dist/esm/jobs/load-balancer/types.d.ts +21 -0
- package/dist/esm/jobs/load-balancer/types.d.ts.map +1 -1
- package/dist/esm/jobs/load-balancer/types.js +4 -0
- package/dist/esm/jobs/load-balancer/types.js.map +1 -1
- 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 +52 -0
- package/dist/esm/loader/index.d.ts.map +1 -1
- package/dist/esm/loader/index.js +79 -10
- package/dist/esm/loader/index.js.map +1 -1
- package/dist/esm/log/index.d.ts +41 -0
- package/dist/esm/log/index.d.ts.map +1 -1
- package/dist/esm/log/index.js +59 -20
- package/dist/esm/log/index.js.map +1 -1
- package/dist/esm/log/logger.d.ts +26 -0
- package/dist/esm/log/logger.d.ts.map +1 -1
- package/dist/esm/log/logger.js +122 -2
- package/dist/esm/log/logger.js.map +1 -1
- package/dist/esm/message/childMessage.d.ts +50 -0
- package/dist/esm/message/childMessage.d.ts.map +1 -1
- package/dist/esm/message/childMessage.js +83 -2
- package/dist/esm/message/childMessage.js.map +1 -1
- package/dist/esm/ps/index.d.ts +112 -0
- package/dist/esm/ps/index.d.ts.map +1 -1
- package/dist/esm/ps/index.js +175 -41
- package/dist/esm/ps/index.js.map +1 -1
- package/dist/esm/socket/httpServer.d.ts +58 -5
- package/dist/esm/socket/httpServer.d.ts.map +1 -1
- package/dist/esm/socket/httpServer.js +94 -28
- package/dist/esm/socket/httpServer.js.map +1 -1
- package/dist/esm/socket/index.d.ts +45 -3
- package/dist/esm/socket/index.d.ts.map +1 -1
- package/dist/esm/socket/index.js +50 -14
- package/dist/esm/socket/index.js.map +1 -1
- package/dist/esm/socket/ipcServer.d.ts +31 -1
- package/dist/esm/socket/ipcServer.d.ts.map +1 -1
- package/dist/esm/socket/ipcServer.js +60 -43
- package/dist/esm/socket/ipcServer.js.map +1 -1
- package/dist/esm/socket/socketServer.d.ts +32 -1
- package/dist/esm/socket/socketServer.d.ts.map +1 -1
- package/dist/esm/socket/socketServer.js +53 -14
- package/dist/esm/socket/socketServer.js.map +1 -1
- 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/sqliteStorage.d.ts +93 -4
- package/dist/esm/storage/sqliteStorage.d.ts.map +1 -1
- package/dist/esm/storage/sqliteStorage.js +121 -9
- package/dist/esm/storage/sqliteStorage.js.map +1 -1
- package/dist/esm/types/index.d.ts +373 -5
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/esm/utils/extend.d.ts +44 -1
- package/dist/esm/utils/extend.d.ts.map +1 -1
- package/dist/esm/utils/extend.js +67 -19
- package/dist/esm/utils/extend.js.map +1 -1
- package/dist/esm/utils/helper.d.ts +154 -1
- package/dist/esm/utils/helper.d.ts.map +1 -1
- package/dist/esm/utils/helper.js +205 -28
- package/dist/esm/utils/helper.js.map +1 -1
- package/dist/esm/utils/index.d.ts +93 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +136 -12
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/ip.d.ts +29 -0
- package/dist/esm/utils/ip.d.ts.map +1 -1
- package/dist/esm/utils/ip.js +95 -4
- package/dist/esm/utils/ip.js.map +1 -1
- package/dist/esm/utils/is.d.ts +123 -0
- package/dist/esm/utils/is.d.ts.map +1 -1
- package/dist/esm/utils/is.js +126 -14
- package/dist/esm/utils/is.js.map +1 -1
- package/dist/esm/utils/json.d.ts +54 -0
- package/dist/esm/utils/json.d.ts.map +1 -1
- package/dist/esm/utils/json.js +62 -0
- package/dist/esm/utils/json.js.map +1 -1
- package/dist/esm/utils/pargv.d.ts +51 -0
- package/dist/esm/utils/pargv.d.ts.map +1 -1
- package/dist/esm/utils/pargv.js +141 -3
- package/dist/esm/utils/pargv.js.map +1 -1
- package/dist/esm/utils/port/index.d.ts +42 -0
- package/dist/esm/utils/port/index.d.ts.map +1 -1
- package/dist/esm/utils/port/index.js +130 -7
- package/dist/esm/utils/port/index.js.map +1 -1
- package/dist/esm/utils/type_check.d.ts +79 -0
- package/dist/esm/utils/type_check.d.ts.map +1 -1
- package/dist/esm/utils/type_check.js +87 -1
- package/dist/esm/utils/type_check.js.map +1 -1
- package/dist/esm/utils/wrap.d.ts +26 -0
- package/dist/esm/utils/wrap.d.ts.map +1 -1
- package/dist/esm/utils/wrap.js +47 -10
- package/dist/esm/utils/wrap.js.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipcServer.js","sourceRoot":"","sources":["../../../src/socket/ipcServer.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"ipcServer.js","sourceRoot":"","sources":["../../../src/socket/ipcServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,43 @@
|
|
|
1
1
|
import { Server } from 'socket.io';
|
|
2
2
|
import type { SocketServerConfig } from '../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* SocketServer - SocketIO server
|
|
5
|
+
*
|
|
6
|
+
* Created using factory pattern (static create()), because initialization requires async port acquisition.
|
|
7
|
+
* When enable=false in config, the service will not start after creation.
|
|
8
|
+
*/
|
|
3
9
|
export declare class SocketServer {
|
|
10
|
+
/** SocketIO server configuration */
|
|
4
11
|
config: SocketServerConfig;
|
|
12
|
+
/** Channel separator */
|
|
5
13
|
channelSeparator: string;
|
|
14
|
+
/** Currently connected socket instance */
|
|
6
15
|
socket: ReturnType<Server['on']> | undefined;
|
|
16
|
+
/** SocketIO Server instance */
|
|
7
17
|
io: Server | undefined;
|
|
8
|
-
constructor();
|
|
18
|
+
private constructor();
|
|
19
|
+
/**
|
|
20
|
+
* Factory method: create and initialize SocketServer
|
|
21
|
+
*
|
|
22
|
+
* @returns Fully initialized SocketServer instance
|
|
23
|
+
*/
|
|
24
|
+
static create(): Promise<SocketServer>;
|
|
25
|
+
/**
|
|
26
|
+
* Initialize SocketIO server
|
|
27
|
+
*
|
|
28
|
+
* Acquires an available port then creates a SocketIO Server instance.
|
|
29
|
+
* The port number is written to process.env.EE_SOCKET_PORT for other modules to access.
|
|
30
|
+
*/
|
|
9
31
|
init(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Listen for client connections and handle messages
|
|
34
|
+
*
|
|
35
|
+
* After client connects, listens on the configured channel (default 'socket-channel').
|
|
36
|
+
* Upon receiving a message, routes via cmd path to the corresponding controller method for execution.
|
|
37
|
+
*
|
|
38
|
+
* Message format: { cmd: string, args: unknown }
|
|
39
|
+
* Return method: Results are sent back to client via callback function
|
|
40
|
+
*/
|
|
10
41
|
connect(): void;
|
|
11
42
|
}
|
|
12
43
|
//# sourceMappingURL=socketServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketServer.d.ts","sourceRoot":"","sources":["../../../src/socket/socketServer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socketServer.d.ts","sourceRoot":"","sources":["../../../src/socket/socketServer.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAMnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK5D;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,oCAAoC;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,wBAAwB;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAC7C,+BAA+B;IAC/B,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvB,OAAO;IAQP;;;;OAIG;WACU,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAM5C;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B;;;;;;;;OAQG;IACH,OAAO,IAAI,IAAI;CA+BhB"}
|
|
@@ -4,22 +4,59 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.SocketServer = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* @module socket/socketServer
|
|
9
|
+
* @description SocketIO server. Provides WebSocket/HTTP polling communication for
|
|
10
|
+
* third-party software (non-Electron renderer processes) to call main process controller methods.
|
|
11
|
+
*
|
|
12
|
+
* Communication protocol:
|
|
13
|
+
* - After client connects, send messages on a specified channel: { cmd: 'controller/user/add', args: {...} }
|
|
14
|
+
* - Server parses the cmd path and calls the corresponding controller method
|
|
15
|
+
* - Controller execution result is returned to client via callback
|
|
16
|
+
*
|
|
17
|
+
* Use cases:
|
|
18
|
+
* - Local other processes (Go/Python backends) communicating with Electron main process
|
|
19
|
+
* - Remote control panels operating the application via WebSocket
|
|
20
|
+
*/
|
|
7
21
|
const debug_1 = __importDefault(require("debug"));
|
|
8
|
-
const type_check_js_1 = require("../utils/type_check.js");
|
|
9
22
|
const socket_io_1 = require("socket.io");
|
|
10
23
|
const index_js_1 = require("../log/index.js");
|
|
11
24
|
const index_js_2 = require("../config/index.js");
|
|
12
25
|
const channel_js_1 = require("../const/channel.js");
|
|
13
26
|
const index_js_3 = require("../controller/index.js");
|
|
14
27
|
const index_js_4 = require("../utils/port/index.js");
|
|
28
|
+
const utils_js_1 = require("./utils.js");
|
|
15
29
|
const debugLog = (0, debug_1.default)('ee-core:socket:socketServer');
|
|
30
|
+
/**
|
|
31
|
+
* SocketServer - SocketIO server
|
|
32
|
+
*
|
|
33
|
+
* Created using factory pattern (static create()), because initialization requires async port acquisition.
|
|
34
|
+
* When enable=false in config, the service will not start after creation.
|
|
35
|
+
*/
|
|
16
36
|
class SocketServer {
|
|
17
37
|
constructor() {
|
|
18
38
|
const config = (0, index_js_2.getConfig)();
|
|
19
39
|
this.config = config.socketServer;
|
|
20
40
|
this.channelSeparator = config.mainServer.channelSeparator || '/';
|
|
21
|
-
this.
|
|
41
|
+
this.socket = undefined;
|
|
42
|
+
this.io = undefined;
|
|
22
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Factory method: create and initialize SocketServer
|
|
46
|
+
*
|
|
47
|
+
* @returns Fully initialized SocketServer instance
|
|
48
|
+
*/
|
|
49
|
+
static async create() {
|
|
50
|
+
const instance = new SocketServer();
|
|
51
|
+
await instance.init();
|
|
52
|
+
return instance;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Initialize SocketIO server
|
|
56
|
+
*
|
|
57
|
+
* Acquires an available port then creates a SocketIO Server instance.
|
|
58
|
+
* The port number is written to process.env.EE_SOCKET_PORT for other modules to access.
|
|
59
|
+
*/
|
|
23
60
|
async init() {
|
|
24
61
|
if (this.config.enable === false) {
|
|
25
62
|
return;
|
|
@@ -34,6 +71,15 @@ class SocketServer {
|
|
|
34
71
|
this.io = new socket_io_1.Server(port, this.config);
|
|
35
72
|
this.connect();
|
|
36
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Listen for client connections and handle messages
|
|
76
|
+
*
|
|
77
|
+
* After client connects, listens on the configured channel (default 'socket-channel').
|
|
78
|
+
* Upon receiving a message, routes via cmd path to the corresponding controller method for execution.
|
|
79
|
+
*
|
|
80
|
+
* Message format: { cmd: string, args: unknown }
|
|
81
|
+
* Return method: Results are sent back to client via callback function
|
|
82
|
+
*/
|
|
37
83
|
connect() {
|
|
38
84
|
const controller = (0, index_js_3.getController)();
|
|
39
85
|
if (!this.io)
|
|
@@ -46,19 +92,8 @@ class SocketServer {
|
|
|
46
92
|
try {
|
|
47
93
|
const cmd = message.cmd;
|
|
48
94
|
const args = message.args;
|
|
49
|
-
let fn = null;
|
|
50
95
|
debugLog('[socket] channel %s', cmd);
|
|
51
|
-
|
|
52
|
-
const actions = cmd.split(this.channelSeparator);
|
|
53
|
-
debugLog('[findFn] channel %o', actions);
|
|
54
|
-
let obj = { controller };
|
|
55
|
-
actions.forEach((key) => {
|
|
56
|
-
obj = obj[key];
|
|
57
|
-
if (!obj)
|
|
58
|
-
throw new Error(`class or function '${key}' not exists`);
|
|
59
|
-
});
|
|
60
|
-
fn = obj;
|
|
61
|
-
}
|
|
96
|
+
const fn = (0, utils_js_1.resolveControllerFn)(controller, cmd, this.channelSeparator);
|
|
62
97
|
if (!fn)
|
|
63
98
|
throw new Error('function not exists');
|
|
64
99
|
const result = await fn.call(controller, args);
|
|
@@ -68,6 +103,10 @@ class SocketServer {
|
|
|
68
103
|
}
|
|
69
104
|
catch (err) {
|
|
70
105
|
index_js_1.coreLogger.error('[socket/socketServer] throw error:', err);
|
|
106
|
+
// Return error to client so it's not silently lost
|
|
107
|
+
if (callback) {
|
|
108
|
+
callback({ __EE_ERROR__: true, message: err instanceof Error ? err.message : String(err) });
|
|
109
|
+
}
|
|
71
110
|
}
|
|
72
111
|
});
|
|
73
112
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socketServer.js","sourceRoot":"","sources":["../../../src/socket/socketServer.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"socketServer.js","sourceRoot":"","sources":["../../../src/socket/socketServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve controller function from channel/command path string
|
|
3
|
+
*
|
|
4
|
+
* Splits cmd by separator, then traverses the controller object tree level by level to find the corresponding function.
|
|
5
|
+
* Example: cmd='controller/user/add', separator='/' → looks up controller.user.add
|
|
6
|
+
*
|
|
7
|
+
* @param controller - Controller method mapping object
|
|
8
|
+
* @param cmd - Channel/command path string (non-string types return null directly)
|
|
9
|
+
* @param separator - Path separator
|
|
10
|
+
* @returns Controller method function, or null if resolution fails
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveControllerFn(controller: Record<string, unknown>, cmd: string, separator: string): ((...args: unknown[]) => unknown) | null;
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/socket/utils.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAChB,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,IAAI,CAoB1C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveControllerFn = resolveControllerFn;
|
|
4
|
+
/**
|
|
5
|
+
* @module socket/utils
|
|
6
|
+
* @description Shared utility functions for the socket module.
|
|
7
|
+
* Provides controller function resolution, used by HttpServer, IpcServer, and SocketServer.
|
|
8
|
+
*/
|
|
9
|
+
const type_check_js_1 = require("../utils/type_check.js");
|
|
10
|
+
const index_js_1 = require("../log/index.js");
|
|
11
|
+
/**
|
|
12
|
+
* Resolve controller function from channel/command path string
|
|
13
|
+
*
|
|
14
|
+
* Splits cmd by separator, then traverses the controller object tree level by level to find the corresponding function.
|
|
15
|
+
* Example: cmd='controller/user/add', separator='/' → looks up controller.user.add
|
|
16
|
+
*
|
|
17
|
+
* @param controller - Controller method mapping object
|
|
18
|
+
* @param cmd - Channel/command path string (non-string types return null directly)
|
|
19
|
+
* @param separator - Path separator
|
|
20
|
+
* @returns Controller method function, or null if resolution fails
|
|
21
|
+
*/
|
|
22
|
+
function resolveControllerFn(controller, cmd, separator) {
|
|
23
|
+
// Guard: non-string types (e.g., numbers passed via WebSocket) return directly
|
|
24
|
+
if (typeof cmd !== 'string')
|
|
25
|
+
return null;
|
|
26
|
+
const actions = cmd.split(separator);
|
|
27
|
+
let obj = { controller };
|
|
28
|
+
for (const key of actions) {
|
|
29
|
+
obj = obj[key];
|
|
30
|
+
if (!obj) {
|
|
31
|
+
index_js_1.coreLogger.error(`[resolveControllerFn] class or function '${key}' not exists in path '${cmd}'`);
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (!(0, type_check_js_1.isFunction)(obj)) {
|
|
36
|
+
index_js_1.coreLogger.error(`[resolveControllerFn] resolved path '${cmd}' is not a function`);
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return obj;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/socket/utils.ts"],"names":[],"mappings":";;AAmBA,kDAwBC;AA3CD;;;;GAIG;AACH,0DAAoD;AACpD,8CAA6C;AAE7C;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CACjC,UAAmC,EACnC,GAAW,EACX,SAAiB;IAEjB,+EAA+E;IAC/E,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,GAAG,GAA4B,EAAE,UAAU,EAAE,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,GAAG,GAAG,GAAG,CAAC,GAAG,CAA4B,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,qBAAU,CAAC,KAAK,CAAC,4CAA4C,GAAG,yBAAyB,GAAG,GAAG,CAAC,CAAC;YACjG,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAA,0BAAU,EAAC,GAAG,CAAC,EAAE,CAAC;QACrB,qBAAU,CAAC,KAAK,CAAC,wCAAwC,GAAG,qBAAqB,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAiD,CAAC;AAC3D,CAAC"}
|
|
@@ -1,28 +1,117 @@
|
|
|
1
1
|
import Database from 'better-sqlite3';
|
|
2
|
+
/**
|
|
3
|
+
* SqliteStorage - SQLite database storage class
|
|
4
|
+
*
|
|
5
|
+
* Encapsulates the database instance creation flow of better-sqlite3, automatically inferring
|
|
6
|
+
* the storage mode based on the provided database name and completing initialization tasks
|
|
7
|
+
* such as directory creation and file path calculation.
|
|
8
|
+
*
|
|
9
|
+
* Storage modes:
|
|
10
|
+
* - memory: In-memory database, name is ":memory:", not persisted to disk
|
|
11
|
+
* - onlyName: Filename only (e.g. "app.db"), stored under {dataDir}/db/
|
|
12
|
+
* - relative: Relative path (e.g. "sub/app.db"), resolved relative to {dataDir}/db/
|
|
13
|
+
* - absolute: Absolute path (e.g. "/tmp/app.db"), uses the specified path directly
|
|
14
|
+
*
|
|
15
|
+
* Security:
|
|
16
|
+
* The constructor validates the database name for path traversal, disallowing ".." in the name
|
|
17
|
+
* to prevent malicious input from accessing files outside the intended directory.
|
|
18
|
+
*/
|
|
2
19
|
export declare class SqliteStorage {
|
|
20
|
+
/** Database name (original input value) */
|
|
3
21
|
name: string;
|
|
22
|
+
/** Storage mode: memory / onlyName / relative / absolute */
|
|
4
23
|
mode: string;
|
|
24
|
+
/** Absolute path of the directory containing the database file */
|
|
5
25
|
dbDir: string;
|
|
26
|
+
/** Database filename (only the filename part, excluding directory) */
|
|
6
27
|
fileName: string;
|
|
28
|
+
/** better-sqlite3 database instance */
|
|
7
29
|
db: Database.Database;
|
|
30
|
+
/**
|
|
31
|
+
* Create a SqliteStorage instance
|
|
32
|
+
*
|
|
33
|
+
* Initialization flow:
|
|
34
|
+
* 1. Validate that the name is non-empty and does not contain path traversal characters ".."
|
|
35
|
+
* 2. Infer storage mode from the name (getMode)
|
|
36
|
+
* 3. Create the database file directory (_createDatabaseDir)
|
|
37
|
+
* 4. Extract the filename part (_formatFileName)
|
|
38
|
+
* 5. Open the database connection (_initDB)
|
|
39
|
+
*
|
|
40
|
+
* @param name - Database name or path. Supports the following formats:
|
|
41
|
+
* - ":memory:" - In-memory database
|
|
42
|
+
* - "app.db" - Filename only, stored under {dataDir}/db/
|
|
43
|
+
* - "sub/app.db" - Relative path, relative to {dataDir}/db/
|
|
44
|
+
* - "/tmp/app.db" - Absolute path
|
|
45
|
+
* @param opt - better-sqlite3 database options, defaults merged with timeout: 5000
|
|
46
|
+
* @throws Asserts error if name is empty or contains ".." path traversal characters
|
|
47
|
+
*/
|
|
8
48
|
constructor(name: string, opt?: Record<string, unknown>);
|
|
9
49
|
/**
|
|
10
|
-
*
|
|
50
|
+
* Initialize the database connection
|
|
51
|
+
*
|
|
52
|
+
* Determines the database path based on storage mode:
|
|
53
|
+
* - memory mode: Uses ":memory:" as the path, better-sqlite3 creates the database in memory
|
|
54
|
+
* - file mode: Uses getFilePath() to get the full database file path
|
|
55
|
+
*
|
|
56
|
+
* In file mode, additionally validates that the database file was created successfully.
|
|
57
|
+
* If the file does not exist, throws an assertion error (possibly due to insufficient directory permissions, etc.).
|
|
58
|
+
*
|
|
59
|
+
* @param opt - better-sqlite3 database options, defaults merged with { timeout: 5000 }
|
|
60
|
+
* @returns better-sqlite3 Database instance
|
|
61
|
+
* @throws Asserts error if the database file was not created successfully in file mode
|
|
11
62
|
*/
|
|
12
63
|
_initDB(opt?: Record<string, unknown>): Database.Database;
|
|
13
64
|
/**
|
|
14
|
-
*
|
|
65
|
+
* Extract the database filename
|
|
66
|
+
*
|
|
67
|
+
* - memory mode: Returns the ":memory:" original name directly
|
|
68
|
+
* - file mode: Uses path.basename to extract the pure filename part, removing directory prefix
|
|
69
|
+
*
|
|
70
|
+
* @param name - Original database name
|
|
71
|
+
* @returns Filename part (returns ":memory:" for memory mode, pure filename for file mode)
|
|
15
72
|
*/
|
|
16
73
|
_formatFileName(name: string): string;
|
|
17
74
|
/**
|
|
18
|
-
*
|
|
75
|
+
* Create the directory for the database file
|
|
76
|
+
*
|
|
77
|
+
* The directory path is determined by storage mode:
|
|
78
|
+
* - absolute mode: Uses the directory part from the database name (path.dirname)
|
|
79
|
+
* - Other modes: Uses {dataDir}/db as the default directory
|
|
80
|
+
*
|
|
81
|
+
* If the directory does not exist, it is created automatically with permission 0o755
|
|
82
|
+
* (owner can read/write/execute, others can read/execute).
|
|
83
|
+
*
|
|
84
|
+
* @returns Absolute path of the directory containing the database file
|
|
19
85
|
*/
|
|
20
86
|
_createDatabaseDir(): string;
|
|
21
87
|
/**
|
|
22
|
-
*
|
|
88
|
+
* Infer storage mode from the database name
|
|
89
|
+
*
|
|
90
|
+
* Inference logic:
|
|
91
|
+
* 1. Name is ":memory:" -> memory mode
|
|
92
|
+
* 2. Name contains path separators (/ or \):
|
|
93
|
+
* - Absolute path -> absolute mode
|
|
94
|
+
* - Relative path -> relative mode
|
|
95
|
+
* 3. Name contains no path separators -> onlyName mode
|
|
96
|
+
*
|
|
97
|
+
* @param name - Database name or path
|
|
98
|
+
* @returns Storage mode string: memory / onlyName / relative / absolute
|
|
23
99
|
*/
|
|
24
100
|
getMode(name: string): string;
|
|
101
|
+
/**
|
|
102
|
+
* Get the directory containing the database file
|
|
103
|
+
*
|
|
104
|
+
* @returns Absolute path of the database directory
|
|
105
|
+
*/
|
|
25
106
|
getDbDir(): string;
|
|
107
|
+
/**
|
|
108
|
+
* Get the full path of the database file
|
|
109
|
+
*
|
|
110
|
+
* Composed by joining dbDir and fileName, only meaningful for file modes
|
|
111
|
+
* (in memory mode this path has no practical use).
|
|
112
|
+
*
|
|
113
|
+
* @returns Absolute path of the database file
|
|
114
|
+
*/
|
|
26
115
|
getFilePath(): string;
|
|
27
116
|
}
|
|
28
117
|
//# sourceMappingURL=sqliteStorage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqliteStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/sqliteStorage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sqliteStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/sqliteStorage.ts"],"names":[],"mappings":"AA6BA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAa;IACxB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IAEb,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IAEb,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IAEd,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAEtB;;;;;;;;;;;;;;;;;OAiBG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAY3D;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,QAAQ,CAAC,QAAQ;IAmB7D;;;;;;;;OAQG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOrC;;;;;;;;;;;OAWG;IACH,kBAAkB,IAAI,MAAM;IAc5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAe7B;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;;;;;OAOG;IACH,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -4,15 +4,78 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.SqliteStorage = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* @module storage/sqliteStorage
|
|
9
|
+
* @description SQLite database storage module. Based on better-sqlite3, provides synchronous database operations,
|
|
10
|
+
* supporting three database file location modes (name only, relative path, absolute path) and in-memory database (:memory:).
|
|
11
|
+
*
|
|
12
|
+
* Core responsibilities:
|
|
13
|
+
* - Automatically determine storage mode based on database name (onlyName / relative / absolute / memory)
|
|
14
|
+
* - Automatically create the database directory (ensures the directory exists before opening the database file)
|
|
15
|
+
* - Prevent path traversal attacks (validates that ".." is not present in the name during construction)
|
|
16
|
+
* - Provide a unified interface for obtaining database file paths
|
|
17
|
+
*
|
|
18
|
+
* Usage examples:
|
|
19
|
+
* ```ts
|
|
20
|
+
* // Name-only mode: file stored at {dataDir}/db/{name}.db
|
|
21
|
+
* const db1 = new SqliteStorage('myapp.db');
|
|
22
|
+
*
|
|
23
|
+
* // Relative path mode: file stored at {dataDir}/db/sub/myapp.db
|
|
24
|
+
* const db2 = new SqliteStorage('sub/myapp.db');
|
|
25
|
+
*
|
|
26
|
+
* // Absolute path mode: file stored at the specified path
|
|
27
|
+
* const db3 = new SqliteStorage('/tmp/data/myapp.db');
|
|
28
|
+
*
|
|
29
|
+
* // In-memory mode: not persisted, data is lost when the process exits
|
|
30
|
+
* const db4 = new SqliteStorage(':memory:');
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
7
33
|
const assert_1 = __importDefault(require("assert"));
|
|
8
34
|
const fs_1 = __importDefault(require("fs"));
|
|
9
35
|
const path_1 = __importDefault(require("path"));
|
|
10
36
|
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
11
37
|
const helper_js_1 = require("../utils/helper.js");
|
|
12
38
|
const index_js_1 = require("../ps/index.js");
|
|
39
|
+
/**
|
|
40
|
+
* SqliteStorage - SQLite database storage class
|
|
41
|
+
*
|
|
42
|
+
* Encapsulates the database instance creation flow of better-sqlite3, automatically inferring
|
|
43
|
+
* the storage mode based on the provided database name and completing initialization tasks
|
|
44
|
+
* such as directory creation and file path calculation.
|
|
45
|
+
*
|
|
46
|
+
* Storage modes:
|
|
47
|
+
* - memory: In-memory database, name is ":memory:", not persisted to disk
|
|
48
|
+
* - onlyName: Filename only (e.g. "app.db"), stored under {dataDir}/db/
|
|
49
|
+
* - relative: Relative path (e.g. "sub/app.db"), resolved relative to {dataDir}/db/
|
|
50
|
+
* - absolute: Absolute path (e.g. "/tmp/app.db"), uses the specified path directly
|
|
51
|
+
*
|
|
52
|
+
* Security:
|
|
53
|
+
* The constructor validates the database name for path traversal, disallowing ".." in the name
|
|
54
|
+
* to prevent malicious input from accessing files outside the intended directory.
|
|
55
|
+
*/
|
|
13
56
|
class SqliteStorage {
|
|
57
|
+
/**
|
|
58
|
+
* Create a SqliteStorage instance
|
|
59
|
+
*
|
|
60
|
+
* Initialization flow:
|
|
61
|
+
* 1. Validate that the name is non-empty and does not contain path traversal characters ".."
|
|
62
|
+
* 2. Infer storage mode from the name (getMode)
|
|
63
|
+
* 3. Create the database file directory (_createDatabaseDir)
|
|
64
|
+
* 4. Extract the filename part (_formatFileName)
|
|
65
|
+
* 5. Open the database connection (_initDB)
|
|
66
|
+
*
|
|
67
|
+
* @param name - Database name or path. Supports the following formats:
|
|
68
|
+
* - ":memory:" - In-memory database
|
|
69
|
+
* - "app.db" - Filename only, stored under {dataDir}/db/
|
|
70
|
+
* - "sub/app.db" - Relative path, relative to {dataDir}/db/
|
|
71
|
+
* - "/tmp/app.db" - Absolute path
|
|
72
|
+
* @param opt - better-sqlite3 database options, defaults merged with timeout: 5000
|
|
73
|
+
* @throws Asserts error if name is empty or contains ".." path traversal characters
|
|
74
|
+
*/
|
|
14
75
|
constructor(name, opt = {}) {
|
|
15
76
|
(0, assert_1.default)(name, `db name ${name} Cannot be empty`);
|
|
77
|
+
// Prevent path traversal attacks: disallow ".." in the name to avoid directory backtracking
|
|
78
|
+
(0, assert_1.default)(!name.includes('..'), `db name ${name} contains path traversal`);
|
|
16
79
|
this.name = name;
|
|
17
80
|
this.mode = this.getMode(name);
|
|
18
81
|
this.dbDir = this._createDatabaseDir();
|
|
@@ -20,24 +83,41 @@ class SqliteStorage {
|
|
|
20
83
|
this.db = this._initDB(opt);
|
|
21
84
|
}
|
|
22
85
|
/**
|
|
23
|
-
*
|
|
86
|
+
* Initialize the database connection
|
|
87
|
+
*
|
|
88
|
+
* Determines the database path based on storage mode:
|
|
89
|
+
* - memory mode: Uses ":memory:" as the path, better-sqlite3 creates the database in memory
|
|
90
|
+
* - file mode: Uses getFilePath() to get the full database file path
|
|
91
|
+
*
|
|
92
|
+
* In file mode, additionally validates that the database file was created successfully.
|
|
93
|
+
* If the file does not exist, throws an assertion error (possibly due to insufficient directory permissions, etc.).
|
|
94
|
+
*
|
|
95
|
+
* @param opt - better-sqlite3 database options, defaults merged with { timeout: 5000 }
|
|
96
|
+
* @returns better-sqlite3 Database instance
|
|
97
|
+
* @throws Asserts error if the database file was not created successfully in file mode
|
|
24
98
|
*/
|
|
25
99
|
_initDB(opt = {}) {
|
|
26
100
|
const options = Object.assign({ timeout: 5000 }, opt);
|
|
27
|
-
//
|
|
101
|
+
// Storage type: db file, in-memory (:memory:)
|
|
28
102
|
let dbPath = this.name;
|
|
29
103
|
if (this.mode !== 'memory') {
|
|
30
104
|
dbPath = this.getFilePath();
|
|
31
105
|
}
|
|
32
106
|
const db = new better_sqlite3_1.default(dbPath, options);
|
|
33
|
-
//
|
|
107
|
+
// For file mode, check if the file was created successfully
|
|
34
108
|
if (this.mode !== 'memory') {
|
|
35
109
|
(0, assert_1.default)(fs_1.default.existsSync(dbPath), `error: db ${dbPath} not exists`);
|
|
36
110
|
}
|
|
37
111
|
return db;
|
|
38
112
|
}
|
|
39
113
|
/**
|
|
40
|
-
*
|
|
114
|
+
* Extract the database filename
|
|
115
|
+
*
|
|
116
|
+
* - memory mode: Returns the ":memory:" original name directly
|
|
117
|
+
* - file mode: Uses path.basename to extract the pure filename part, removing directory prefix
|
|
118
|
+
*
|
|
119
|
+
* @param name - Original database name
|
|
120
|
+
* @returns Filename part (returns ":memory:" for memory mode, pure filename for file mode)
|
|
41
121
|
*/
|
|
42
122
|
_formatFileName(name) {
|
|
43
123
|
if (this.mode === 'memory') {
|
|
@@ -46,11 +126,21 @@ class SqliteStorage {
|
|
|
46
126
|
return path_1.default.basename(name);
|
|
47
127
|
}
|
|
48
128
|
/**
|
|
49
|
-
*
|
|
129
|
+
* Create the directory for the database file
|
|
130
|
+
*
|
|
131
|
+
* The directory path is determined by storage mode:
|
|
132
|
+
* - absolute mode: Uses the directory part from the database name (path.dirname)
|
|
133
|
+
* - Other modes: Uses {dataDir}/db as the default directory
|
|
134
|
+
*
|
|
135
|
+
* If the directory does not exist, it is created automatically with permission 0o755
|
|
136
|
+
* (owner can read/write/execute, others can read/execute).
|
|
137
|
+
*
|
|
138
|
+
* @returns Absolute path of the directory containing the database file
|
|
50
139
|
*/
|
|
51
140
|
_createDatabaseDir() {
|
|
52
141
|
let dbDir = path_1.default.join((0, index_js_1.getDataDir)(), 'db');
|
|
53
142
|
if (this.mode === 'absolute') {
|
|
143
|
+
// Absolute path mode: directory is taken from the path part of the name, not the default data/db
|
|
54
144
|
dbDir = path_1.default.dirname(this.name);
|
|
55
145
|
}
|
|
56
146
|
if (!fs_1.default.existsSync(dbDir)) {
|
|
@@ -59,24 +149,46 @@ class SqliteStorage {
|
|
|
59
149
|
return dbDir;
|
|
60
150
|
}
|
|
61
151
|
/**
|
|
62
|
-
*
|
|
152
|
+
* Infer storage mode from the database name
|
|
153
|
+
*
|
|
154
|
+
* Inference logic:
|
|
155
|
+
* 1. Name is ":memory:" -> memory mode
|
|
156
|
+
* 2. Name contains path separators (/ or \):
|
|
157
|
+
* - Absolute path -> absolute mode
|
|
158
|
+
* - Relative path -> relative mode
|
|
159
|
+
* 3. Name contains no path separators -> onlyName mode
|
|
160
|
+
*
|
|
161
|
+
* @param name - Database name or path
|
|
162
|
+
* @returns Storage mode string: memory / onlyName / relative / absolute
|
|
63
163
|
*/
|
|
64
164
|
getMode(name) {
|
|
65
|
-
//
|
|
165
|
+
// Memory mode
|
|
66
166
|
if (name === ':memory:') {
|
|
67
167
|
return 'memory';
|
|
68
168
|
}
|
|
69
|
-
|
|
70
|
-
// 路径模式
|
|
169
|
+
// Path mode
|
|
71
170
|
const normalized = name.replace(/[/\\]/g, '/');
|
|
72
171
|
if (normalized.indexOf('/') !== -1) {
|
|
73
172
|
return path_1.default.isAbsolute(name) ? 'absolute' : 'relative';
|
|
74
173
|
}
|
|
75
174
|
return 'onlyName';
|
|
76
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Get the directory containing the database file
|
|
178
|
+
*
|
|
179
|
+
* @returns Absolute path of the database directory
|
|
180
|
+
*/
|
|
77
181
|
getDbDir() {
|
|
78
182
|
return this.dbDir;
|
|
79
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Get the full path of the database file
|
|
186
|
+
*
|
|
187
|
+
* Composed by joining dbDir and fileName, only meaningful for file modes
|
|
188
|
+
* (in memory mode this path has no practical use).
|
|
189
|
+
*
|
|
190
|
+
* @returns Absolute path of the database file
|
|
191
|
+
*/
|
|
80
192
|
getFilePath() {
|
|
81
193
|
return path_1.default.join(this.dbDir, this.fileName);
|
|
82
194
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqliteStorage.js","sourceRoot":"","sources":["../../../src/storage/sqliteStorage.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,4CAAoB;AACpB,gDAAwB;AACxB,oEAAsC;AACtC,kDAA2C;AAC3C,6CAA4C;AAE5C,MAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"sqliteStorage.js","sourceRoot":"","sources":["../../../src/storage/sqliteStorage.ts"],"names":[],"mappings":"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"}
|