cyberia 3.2.5 → 3.2.12
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/.github/workflows/engine-cyberia.cd.yml +8 -2
- package/.github/workflows/npmpkg.ci.yml +1 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
- package/.github/workflows/release.cd.yml +2 -2
- package/.vscode/extensions.json +9 -9
- package/.vscode/settings.json +20 -4
- package/CHANGELOG.md +563 -1
- package/CLI-HELP.md +130 -34
- package/Dockerfile +0 -4
- package/README.md +194 -607
- package/bin/build.js +42 -12
- package/bin/build.template.js +187 -0
- package/bin/cyberia.js +1367 -281
- package/bin/deploy.js +582 -3
- package/bin/index.js +1367 -281
- package/bump.config.js +26 -0
- package/conf.js +195 -111
- package/deployment.yaml +6 -222
- package/hardhat/package-lock.json +118 -149
- package/hardhat/package.json +5 -4
- package/jsconfig.json +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -2
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -2
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +6 -222
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +10 -118
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
- package/manifests/deployment/dd-test-development/deployment.yaml +138 -66
- package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
- package/manifests/kind-config-dev.yaml +8 -0
- package/manifests/lxd/lxd-admin-profile.yaml +12 -3
- package/manifests/mongodb/pv-pvc.yaml +44 -8
- package/manifests/mongodb/statefulset.yaml +55 -68
- package/manifests/mongodb-4.4/headless-service.yaml +10 -0
- package/manifests/mongodb-4.4/kustomization.yaml +3 -1
- package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
- package/manifests/mongodb-4.4/pv-pvc.yaml +10 -14
- package/manifests/mongodb-4.4/statefulset.yaml +79 -0
- package/manifests/mongodb-4.4/storage-class.yaml +9 -0
- package/manifests/valkey/statefulset.yaml +1 -1
- package/manifests/valkey/valkey-nodeport.yaml +17 -0
- package/package.json +45 -24
- package/proxy.yaml +10 -118
- package/scripts/ipxe-setup.sh +52 -49
- package/scripts/k3s-node-setup.sh +83 -48
- package/scripts/lxd-vm-setup.sh +193 -8
- package/scripts/maas-nat-firewalld.sh +145 -0
- package/scripts/nat-iptables.sh +103 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +18 -18
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +7 -14
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +38 -33
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +91 -36
- package/src/api/core/core.controller.js +10 -10
- package/src/api/core/core.router.js +19 -14
- package/src/api/core/core.service.js +15 -15
- package/src/api/crypto/crypto.controller.js +8 -8
- package/src/api/crypto/crypto.router.js +18 -12
- package/src/api/crypto/crypto.service.js +11 -11
- package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
- package/src/api/cyberia-action/cyberia-action.model.js +87 -0
- package/src/api/cyberia-action/cyberia-action.router.js +31 -0
- package/src/api/cyberia-action/cyberia-action.service.js +42 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +74 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +99 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +98 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +13 -13
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +11 -11
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +25 -20
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +22 -22
- package/src/api/cyberia-entity/cyberia-entity.controller.js +10 -10
- package/src/api/cyberia-entity/cyberia-entity.router.js +22 -18
- package/src/api/cyberia-entity/cyberia-entity.service.js +15 -15
- package/src/api/cyberia-instance/cyberia-fallback-world.js +83 -198
- package/src/api/cyberia-instance/cyberia-instance.controller.js +14 -14
- package/src/api/cyberia-instance/cyberia-instance.model.js +3 -0
- package/src/api/cyberia-instance/cyberia-instance.router.js +57 -52
- package/src/api/cyberia-instance/cyberia-instance.service.js +32 -67
- package/src/api/cyberia-instance/cyberia-portal-connector.js +20 -246
- package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +10 -10
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +18 -49
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +22 -18
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +19 -15
- package/src/api/cyberia-map/cyberia-map.controller.js +10 -10
- package/src/api/cyberia-map/cyberia-map.router.js +35 -30
- package/src/api/cyberia-map/cyberia-map.service.js +17 -17
- package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
- package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +31 -0
- package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +31 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +451 -0
- package/src/api/default/default.controller.js +10 -10
- package/src/api/default/default.router.js +22 -18
- package/src/api/default/default.service.js +15 -15
- package/src/api/document/document.controller.js +12 -12
- package/src/api/document/document.model.js +10 -16
- package/src/api/document/document.router.js +28 -23
- package/src/api/document/document.service.js +100 -23
- package/src/api/file/file.controller.js +8 -8
- package/src/api/file/file.model.js +10 -10
- package/src/api/file/file.router.js +19 -13
- package/src/api/file/file.service.js +45 -43
- package/src/api/instance/instance.controller.js +10 -10
- package/src/api/instance/instance.model.js +4 -10
- package/src/api/instance/instance.router.js +29 -24
- package/src/api/instance/instance.service.js +16 -16
- package/src/api/ipfs/ipfs.controller.js +12 -12
- package/src/api/ipfs/ipfs.model.js +4 -13
- package/src/api/ipfs/ipfs.router.js +21 -16
- package/src/api/ipfs/ipfs.service.js +22 -36
- package/src/api/object-layer/object-layer.controller.js +12 -12
- package/src/api/object-layer/object-layer.model.js +4 -17
- package/src/api/object-layer/object-layer.router.js +512 -507
- package/src/api/object-layer/object-layer.service.js +29 -26
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +22 -18
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +19 -15
- package/src/api/test/test.controller.js +8 -8
- package/src/api/test/test.router.js +17 -12
- package/src/api/test/test.service.js +8 -8
- package/src/api/types.js +24 -0
- package/src/api/user/guest.service.js +100 -0
- package/src/api/user/user.controller.js +6 -6
- package/src/api/user/user.model.js +8 -13
- package/src/api/user/user.router.js +297 -288
- package/src/api/user/user.service.js +103 -55
- package/src/cli/baremetal.js +132 -101
- package/src/cli/cluster.js +732 -217
- package/src/cli/db.js +106 -62
- package/src/cli/deploy.js +260 -149
- package/src/cli/fs.js +90 -9
- package/src/cli/image.js +43 -1
- package/src/cli/index.js +106 -16
- package/src/cli/ipfs.js +4 -6
- package/src/cli/kubectl.js +4 -1
- package/src/cli/lxd.js +1099 -223
- package/src/cli/monitor.js +9 -3
- package/src/cli/release.js +336 -86
- package/src/cli/repository.js +136 -53
- package/src/cli/run.js +599 -76
- package/src/cli/secrets.js +11 -2
- package/src/cli/ssh.js +1 -1
- package/src/cli/static.js +43 -115
- package/src/cli/test.js +9 -3
- package/src/client/Cryptokoyn.index.js +18 -21
- package/src/client/CyberiaPortal.index.js +19 -23
- package/src/client/Default.index.js +30 -36
- package/src/client/Itemledger.index.js +20 -26
- package/src/client/Underpost.index.js +19 -23
- package/src/client/components/core/404.js +4 -4
- package/src/client/components/core/500.js +4 -4
- package/src/client/components/core/Account.js +73 -60
- package/src/client/components/core/AgGrid.js +23 -33
- package/src/client/components/core/Alert.js +12 -13
- package/src/client/components/core/AppStore.js +1 -1
- package/src/client/components/core/Auth.js +40 -37
- package/src/client/components/core/Badge.js +7 -13
- package/src/client/components/core/BtnIcon.js +15 -17
- package/src/client/components/core/CalendarCore.js +42 -63
- package/src/client/components/core/Chat.js +13 -15
- package/src/client/components/core/ClientEvents.js +163 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/Content.js +17 -14
- package/src/client/components/core/Css.js +15 -71
- package/src/client/components/core/CssCore.js +12 -16
- package/src/client/components/core/D3Chart.js +4 -4
- package/src/client/components/core/Docs.js +64 -91
- package/src/client/components/core/DropDown.js +69 -91
- package/src/client/components/core/EventBus.js +96 -0
- package/src/client/components/core/EventsUI.js +14 -17
- package/src/client/components/core/FileExplorer.js +96 -228
- package/src/client/components/core/FullScreen.js +47 -75
- package/src/client/components/core/Input.js +24 -69
- package/src/client/components/core/Keyboard.js +25 -18
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +25 -31
- package/src/client/components/core/LogIn.js +41 -41
- package/src/client/components/core/LogOut.js +23 -14
- package/src/client/components/core/Modal.js +544 -219
- package/src/client/components/core/NotificationManager.js +14 -18
- package/src/client/components/core/Panel.js +54 -50
- package/src/client/components/core/PanelForm.js +81 -177
- package/src/client/components/core/Polyhedron.js +110 -214
- package/src/client/components/core/PublicProfile.js +39 -32
- package/src/client/components/core/Recover.js +48 -44
- package/src/client/components/core/Responsive.js +88 -32
- package/src/client/components/core/RichText.js +9 -18
- package/src/client/components/core/Router.js +24 -3
- package/src/client/components/core/SearchBox.js +37 -37
- package/src/client/components/core/SignUp.js +39 -30
- package/src/client/components/core/SocketIo.js +31 -2
- package/src/client/components/core/SocketIoHandler.js +6 -6
- package/src/client/components/core/ToggleSwitch.js +8 -20
- package/src/client/components/core/ToolTip.js +5 -17
- package/src/client/components/core/Translate.js +56 -59
- package/src/client/components/core/Validator.js +26 -16
- package/src/client/components/core/Wallet.js +15 -26
- package/src/client/components/core/Worker.js +211 -276
- package/src/client/components/core/windowGetDimensions.js +7 -7
- package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +57 -57
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +6 -4
- package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
- package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
- package/src/client/components/cyberia/InstanceEngineCyberia.js +141 -60
- package/src/client/components/cyberia/MapEngineCyberia.js +691 -214
- package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +1204 -94
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +196 -298
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +330 -0
- package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +102 -102
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -4
- package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
- package/src/client/components/default/CssDefault.js +12 -12
- package/src/client/components/default/LogInDefault.js +6 -4
- package/src/client/components/default/LogOutDefault.js +6 -4
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +4 -4
- package/src/client/components/default/SignUpDefault.js +6 -4
- package/src/client/components/default/TranslateDefault.js +3 -3
- package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +57 -57
- package/src/client/components/itemledger/CssItemledger.js +15 -15
- package/src/client/components/itemledger/LogInItemledger.js +6 -4
- package/src/client/components/itemledger/LogOutItemledger.js +6 -4
- package/src/client/components/itemledger/RouterItemledger.js +38 -0
- package/src/client/components/itemledger/SettingsItemledger.js +4 -4
- package/src/client/components/itemledger/SignUpItemledger.js +6 -4
- package/src/client/components/itemledger/TranslateItemledger.js +3 -3
- package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +88 -88
- package/src/client/components/underpost/CssUnderpost.js +14 -14
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
- package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
- package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
- package/src/client/components/underpost/LogInUnderpost.js +6 -4
- package/src/client/components/underpost/LogOutUnderpost.js +6 -4
- package/src/client/components/underpost/RouterUnderpost.js +45 -0
- package/src/client/components/underpost/SettingsUnderpost.js +4 -4
- package/src/client/components/underpost/SignUpUnderpost.js +6 -4
- package/src/client/components/underpost/TranslateUnderpost.js +4 -4
- package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +83 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +204 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +291 -0
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +278 -0
- package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
- package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -0
- package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
- package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +732 -0
- package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
- package/src/client/services/core/core.service.js +17 -49
- package/src/client/services/crypto/crypto.service.js +8 -13
- package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
- package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
- package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +10 -16
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +5 -5
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +10 -16
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +6 -6
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +12 -18
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +10 -16
- package/src/client/services/cyberia-map/cyberia-map.management.js +6 -6
- package/src/client/services/cyberia-map/cyberia-map.service.js +12 -18
- package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
- package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
- package/src/client/services/default/default.management.js +159 -267
- package/src/client/services/default/default.service.js +10 -16
- package/src/client/services/document/document.service.js +14 -19
- package/src/client/services/file/file.service.js +8 -13
- package/src/client/services/instance/instance.management.js +5 -5
- package/src/client/services/instance/instance.service.js +10 -15
- package/src/client/services/ipfs/ipfs.service.js +12 -18
- package/src/client/services/object-layer/object-layer.management.js +12 -12
- package/src/client/services/object-layer/object-layer.service.js +20 -26
- package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
- package/src/client/services/test/test.service.js +8 -13
- package/src/client/services/user/guest.service.js +86 -0
- package/src/client/services/user/user.management.js +5 -5
- package/src/client/services/user/user.service.js +14 -20
- package/src/client/ssr/body/404.js +3 -3
- package/src/client/ssr/body/500.js +3 -3
- package/src/client/ssr/body/CacheControl.js +5 -2
- package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
- package/src/client/ssr/head/PwaItemledger.js +197 -60
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
- package/src/client/ssr/views/CyberiaServerMetrics.js +982 -0
- package/src/client/ssr/{offline → views}/Maintenance.js +12 -11
- package/src/client/ssr/{offline → views}/NoNetworkConnection.js +3 -3
- package/src/client/ssr/{pages → views}/Test.js +2 -2
- package/src/client/sw/core.sw.js +274 -0
- package/src/db/DataBaseProvider.js +115 -15
- package/src/db/mariadb/MariaDB.js +2 -1
- package/src/db/mongo/MongoBootstrap.js +657 -0
- package/src/db/mongo/MongooseDB.js +129 -21
- package/src/grpc/cyberia/grpc-server.js +185 -105
- package/src/index.js +1 -1
- package/src/runtime/cyberia-client/Dockerfile +101 -0
- package/src/runtime/cyberia-client/Dockerfile.dev +82 -0
- package/src/runtime/cyberia-server/Dockerfile +62 -0
- package/src/runtime/cyberia-server/Dockerfile.dev +71 -0
- package/src/runtime/express/Dockerfile +4 -4
- package/src/runtime/express/Express.js +2 -2
- package/src/runtime/lampp/Dockerfile +8 -7
- package/src/runtime/wp/Dockerfile +11 -17
- package/src/runtime/wp/Wp.js +8 -5
- package/src/server/atlas-sprite-sheet-generator.js +4 -2
- package/src/server/auth.js +2 -2
- package/src/server/client-build-docs.js +46 -47
- package/src/server/client-build.js +371 -132
- package/src/server/client-formatted.js +47 -16
- package/src/server/conf.js +91 -87
- package/src/server/data-query.js +32 -20
- package/src/server/dns.js +22 -0
- package/src/server/ipfs-client.js +232 -91
- package/src/server/object-layer.js +1 -6
- package/src/server/process.js +192 -45
- package/src/server/proxy.js +9 -2
- package/src/server/runtime.js +1 -1
- package/src/server/semantic-layer-generator-floor.js +11 -51
- package/src/server/semantic-layer-generator-resource.js +259 -0
- package/src/server/semantic-layer-generator-skin.js +41 -171
- package/src/server/semantic-layer-generator.js +122 -14
- package/src/server/shape-generator.js +108 -0
- package/src/server/start.js +34 -8
- package/src/server/valkey.js +143 -235
- package/src/ws/IoInterface.js +16 -16
- package/src/ws/core/channels/core.ws.chat.js +11 -11
- package/src/ws/core/channels/core.ws.mailer.js +29 -29
- package/src/ws/core/channels/core.ws.stream.js +19 -19
- package/src/ws/core/core.ws.connection.js +8 -8
- package/src/ws/core/core.ws.server.js +6 -5
- package/src/ws/default/channels/default.ws.main.js +10 -10
- package/src/ws/default/default.ws.connection.js +4 -4
- package/src/ws/default/default.ws.server.js +4 -3
- package/tsconfig.docs.json +15 -0
- package/typedoc.dd-cyberia.json +29 -0
- package/typedoc.json +29 -0
- package/WHITE-PAPER.md +0 -1540
- package/bin/file.js +0 -196
- package/bin/vs.js +0 -74
- package/bin/zed.js +0 -84
- package/hardhat/README.md +0 -531
- package/hardhat/WHITE-PAPER.md +0 -1540
- package/jsdoc.dd-cyberia.json +0 -68
- package/jsdoc.json +0 -68
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +0 -413
- package/src/api/object-layer/README.md +0 -672
- package/src/client/components/core/ColorPalette.js +0 -5267
- package/src/client/components/core/JoyStick.js +0 -80
- package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +0 -223
- package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -62
- package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
- package/src/client/components/default/RoutesDefault.js +0 -49
- package/src/client/components/itemledger/RoutesItemledger.js +0 -40
- package/src/client/components/underpost/RoutesUnderpost.js +0 -47
- package/src/client/ssr/email/DefaultRecoverEmail.js +0 -21
- package/src/client/ssr/email/DefaultVerifyEmail.js +0 -17
- package/src/client/ssr/pages/CyberiaServerMetrics.js +0 -461
- package/src/client/sw/default.sw.js +0 -127
- package/src/client/sw/template.sw.js +0 -84
- package/src/grpc/cyberia/OFF_CHAIN_ECONOMY.md +0 -305
- package/src/grpc/cyberia/README.md +0 -326
|
@@ -27,6 +27,13 @@ const escapeRegExp = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
|
27
27
|
*/
|
|
28
28
|
const srcFormatted = (src) => src.replace(/(?<=[\s({[,;=+!?:^])(html|css)`/g, '`');
|
|
29
29
|
|
|
30
|
+
const resolveBrowserImportPath = (basePrefix, relativePath) => {
|
|
31
|
+
if (/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(basePrefix)) {
|
|
32
|
+
return new URL(relativePath, basePrefix.endsWith('/') ? basePrefix : `${basePrefix}/`).toString();
|
|
33
|
+
}
|
|
34
|
+
return path.posix.normalize(`${basePrefix}${relativePath}`);
|
|
35
|
+
};
|
|
36
|
+
|
|
30
37
|
/**
|
|
31
38
|
* Converts a JavaScript object into a string that can be embedded in client-side code
|
|
32
39
|
* and parsed back into an object (e.g., 'JSON.parse(`{...}`)').
|
|
@@ -52,7 +59,14 @@ const JSONweb = (data) => {
|
|
|
52
59
|
* @returns {import('esbuild').Plugin}
|
|
53
60
|
* @memberof clientFormatted
|
|
54
61
|
*/
|
|
55
|
-
const importRewritePlugin = ({
|
|
62
|
+
const importRewritePlugin = ({
|
|
63
|
+
dists = [],
|
|
64
|
+
proxyPath,
|
|
65
|
+
basePath = '',
|
|
66
|
+
module = '',
|
|
67
|
+
baseHost = '',
|
|
68
|
+
externalizeBareImports = true,
|
|
69
|
+
}) => ({
|
|
56
70
|
name: 'import-rewrite',
|
|
57
71
|
setup(build) {
|
|
58
72
|
const prefix = `${baseHost}${proxyPath !== '/' ? `${proxyPath}/` : '/'}`;
|
|
@@ -69,26 +83,35 @@ const importRewritePlugin = ({ dists = [], proxyPath, basePath = '', module = ''
|
|
|
69
83
|
}
|
|
70
84
|
}
|
|
71
85
|
|
|
72
|
-
// Rewrite relative imports to absolute paths based on proxy path and module
|
|
86
|
+
// Rewrite app-relative imports to absolute paths based on proxy path and module.
|
|
87
|
+
// Do not touch node_modules relative imports so esbuild can bundle package internals.
|
|
73
88
|
build.onResolve({ filter: /^\.\.?\// }, (args) => {
|
|
74
|
-
const
|
|
75
|
-
if (
|
|
76
|
-
return
|
|
77
|
-
path: `${basePrefix}${module ? `${module}/` : ''}${args.path.slice(2)}`,
|
|
78
|
-
external: true,
|
|
79
|
-
};
|
|
89
|
+
const normalizedImporter = (args.importer || '').replace(/\\/g, '/');
|
|
90
|
+
if (!normalizedImporter.includes('/src/client/')) {
|
|
91
|
+
return;
|
|
80
92
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
93
|
+
|
|
94
|
+
// Extract the path relative to /src/client/
|
|
95
|
+
// Handle cases where the path might have duplicates or be in various formats
|
|
96
|
+
const srcClientIndex = normalizedImporter.lastIndexOf('/src/client/');
|
|
97
|
+
if (srcClientIndex === -1) {
|
|
98
|
+
return;
|
|
86
99
|
}
|
|
100
|
+
const importerFromClientRoot = normalizedImporter.substring(srcClientIndex + '/src/client/'.length);
|
|
101
|
+
const importerDir = path.posix.dirname(importerFromClientRoot);
|
|
102
|
+
const resolvedFromClientRoot = path.posix.normalize(path.posix.join(importerDir, args.path));
|
|
103
|
+
const result = resolveBrowserImportPath(prefix, resolvedFromClientRoot);
|
|
104
|
+
|
|
105
|
+
return {
|
|
106
|
+
path: result,
|
|
107
|
+
external: true,
|
|
108
|
+
};
|
|
87
109
|
});
|
|
88
110
|
|
|
89
|
-
//
|
|
111
|
+
// For client app modules we externalize bare imports; for SW builds we let esbuild bundle them.
|
|
90
112
|
build.onResolve({ filter: /.*/ }, (args) => {
|
|
91
113
|
if (args.kind === 'entry-point') return;
|
|
114
|
+
if (!externalizeBareImports) return;
|
|
92
115
|
return { path: args.path, external: true };
|
|
93
116
|
});
|
|
94
117
|
},
|
|
@@ -111,7 +134,15 @@ const importRewritePlugin = ({ dists = [], proxyPath, basePath = '', module = ''
|
|
|
111
134
|
*/
|
|
112
135
|
const transformClientJs = async (
|
|
113
136
|
srcPath,
|
|
114
|
-
{
|
|
137
|
+
{
|
|
138
|
+
dists = [],
|
|
139
|
+
proxyPath,
|
|
140
|
+
basePath = '',
|
|
141
|
+
module = '',
|
|
142
|
+
baseHost = '',
|
|
143
|
+
minify: shouldMinify = false,
|
|
144
|
+
externalizeBareImports = true,
|
|
145
|
+
} = {},
|
|
115
146
|
) => {
|
|
116
147
|
const src = fs.readFileSync(srcPath, 'utf8');
|
|
117
148
|
const stripped = srcFormatted(src);
|
|
@@ -130,7 +161,7 @@ const transformClientJs = async (
|
|
|
130
161
|
target: 'esnext',
|
|
131
162
|
minify: shouldMinify,
|
|
132
163
|
logLevel: 'warning',
|
|
133
|
-
plugins: [importRewritePlugin({ dists, proxyPath, basePath, module, baseHost })],
|
|
164
|
+
plugins: [importRewritePlugin({ dists, proxyPath, basePath, module, baseHost, externalizeBareImports })],
|
|
134
165
|
});
|
|
135
166
|
|
|
136
167
|
return result.outputFiles[0].text;
|
package/src/server/conf.js
CHANGED
|
@@ -41,6 +41,20 @@ const logger = loggerFactory(import.meta);
|
|
|
41
41
|
*/
|
|
42
42
|
const ENV_REF_PREFIX = 'env:';
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Resolves a standardized context key from host/path descriptors.
|
|
46
|
+
* The key is used across DB, WS, mailer, and cache registries.
|
|
47
|
+
*
|
|
48
|
+
* @method resolveHostKeyContext
|
|
49
|
+
* @param {{host?: string, path?: string}|string} [context={ host: '', path: '' }] - Context object or prebuilt key.
|
|
50
|
+
* @returns {string} Host key context string.
|
|
51
|
+
* @memberof ServerConfBuilder
|
|
52
|
+
*/
|
|
53
|
+
const resolveHostKeyContext = (context = { host: '', path: '' }) => {
|
|
54
|
+
if (typeof context === 'string') return context;
|
|
55
|
+
return `${context.host || ''}${context.path || ''}`;
|
|
56
|
+
};
|
|
57
|
+
|
|
44
58
|
/**
|
|
45
59
|
* Recursively walks a configuration object and replaces every string value that
|
|
46
60
|
* starts with {@link ENV_REF_PREFIX} (`"env:"`) with the corresponding
|
|
@@ -320,25 +334,29 @@ const Config = {
|
|
|
320
334
|
|
|
321
335
|
if (!fs.existsSync(folder)) fs.mkdirSync(folder, { recursive: true });
|
|
322
336
|
|
|
323
|
-
const
|
|
337
|
+
const sharedEnvTemplate = fs.existsSync('./.env.example')
|
|
324
338
|
? fs.readFileSync('./.env.example', 'utf8')
|
|
325
339
|
: fs.existsSync('./.env.production')
|
|
326
340
|
? fs.readFileSync('./.env.production', 'utf8')
|
|
327
341
|
: '';
|
|
328
342
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
fs.
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
)
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
343
|
+
const envTemplates = {
|
|
344
|
+
production: fs.existsSync('./.env.production') ? fs.readFileSync('./.env.production', 'utf8') : sharedEnvTemplate,
|
|
345
|
+
development: fs.existsSync('./.env.development')
|
|
346
|
+
? fs.readFileSync('./.env.development', 'utf8')
|
|
347
|
+
: sharedEnvTemplate
|
|
348
|
+
? sharedEnvTemplate.replace('NODE_ENV=production', 'NODE_ENV=development').replace('PORT=3000', 'PORT=4000')
|
|
349
|
+
: '',
|
|
350
|
+
test: fs.existsSync('./.env.test')
|
|
351
|
+
? fs.readFileSync('./.env.test', 'utf8')
|
|
352
|
+
: sharedEnvTemplate
|
|
353
|
+
? sharedEnvTemplate.replace('NODE_ENV=production', 'NODE_ENV=test').replace('PORT=3000', 'PORT=5000')
|
|
354
|
+
: '',
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
for (const [envName, envTemplate] of Object.entries(envTemplates)) {
|
|
358
|
+
if (!envTemplate) continue;
|
|
359
|
+
fs.writeFileSync(`${folder}/.env.${envName}`, envTemplate.replaceAll('dd-default', deployId), 'utf8');
|
|
342
360
|
}
|
|
343
361
|
|
|
344
362
|
fs.writeFileSync(
|
|
@@ -457,7 +475,7 @@ const loadConf = (deployId = DEFAULT_DEPLOY_ID, subConf) => {
|
|
|
457
475
|
fs.removeSync(`${path}/.env.production`);
|
|
458
476
|
fs.removeSync(`${path}/.env.development`);
|
|
459
477
|
fs.removeSync(`${path}/.env.test`);
|
|
460
|
-
if (fs.existsSync(`${path}/
|
|
478
|
+
if (fs.existsSync(`${path}/typedoc.json`)) shellExec(`git checkout ${path}/typedoc.json`);
|
|
461
479
|
shellExec(`git checkout ${path}/package.json`);
|
|
462
480
|
shellExec(`git checkout ${path}/package-lock.json`);
|
|
463
481
|
return;
|
|
@@ -1156,6 +1174,7 @@ const getDataDeploy = async (
|
|
|
1156
1174
|
|
|
1157
1175
|
let buildDataDeploy = [];
|
|
1158
1176
|
for (const deployObj of dataDeploy) {
|
|
1177
|
+
const isReplicaDeploy = fs.existsSync(`./engine-private/replica/${deployObj.deployId}`);
|
|
1159
1178
|
const serverConf = loadReplicas(
|
|
1160
1179
|
deployObj.deployId,
|
|
1161
1180
|
loadConfServerJson(`./engine-private/conf/${deployObj.deployId}/conf.server.json`),
|
|
@@ -1163,7 +1182,7 @@ const getDataDeploy = async (
|
|
|
1163
1182
|
let replicaDataDeploy = [];
|
|
1164
1183
|
for (const host of Object.keys(serverConf))
|
|
1165
1184
|
for (const path of Object.keys(serverConf[host])) {
|
|
1166
|
-
if (serverConf[host][path].replicas && serverConf[host][path].singleReplica) {
|
|
1185
|
+
if (!isReplicaDeploy && serverConf[host][path].replicas && serverConf[host][path].singleReplica) {
|
|
1167
1186
|
if (options && options.buildSingleReplica)
|
|
1168
1187
|
await Underpost.repo.client(deployObj.deployId, '', host, path, {
|
|
1169
1188
|
singleReplica: true,
|
|
@@ -1207,11 +1226,15 @@ const validateTemplatePath = (absolutePath = '') => {
|
|
|
1207
1226
|
const confSsr = DefaultConf.ssr[ssr];
|
|
1208
1227
|
const clients = DefaultConf.client.default.services;
|
|
1209
1228
|
|
|
1210
|
-
if (
|
|
1229
|
+
if (
|
|
1230
|
+
absolutePath.match('src/api') &&
|
|
1231
|
+
!absolutePath.match('src/api/types.js') &&
|
|
1232
|
+
!confServer.apis.find((p) => absolutePath.match(`src/api/${p}/`))
|
|
1233
|
+
) {
|
|
1211
1234
|
return false;
|
|
1212
1235
|
}
|
|
1213
1236
|
if (absolutePath.match('conf.dd-') && absolutePath.match('.js')) return false;
|
|
1214
|
-
if (absolutePath.match('
|
|
1237
|
+
if (absolutePath.match('typedoc.dd-') && absolutePath.match('.json')) return false;
|
|
1215
1238
|
if (
|
|
1216
1239
|
absolutePath.match('src/client/services/') &&
|
|
1217
1240
|
!clients.find((p) => absolutePath.match(`src/client/services/${p}/`))
|
|
@@ -1227,7 +1250,7 @@ const validateTemplatePath = (absolutePath = '') => {
|
|
|
1227
1250
|
) {
|
|
1228
1251
|
return false;
|
|
1229
1252
|
}
|
|
1230
|
-
if (absolutePath.match('src/client/sw/') && !
|
|
1253
|
+
if (absolutePath.match('src/client/sw/') && !absolutePath.match('src/client/sw/core.sw.js')) {
|
|
1231
1254
|
return false;
|
|
1232
1255
|
}
|
|
1233
1256
|
if (
|
|
@@ -1249,14 +1272,8 @@ const validateTemplatePath = (absolutePath = '') => {
|
|
|
1249
1272
|
return false;
|
|
1250
1273
|
}
|
|
1251
1274
|
if (
|
|
1252
|
-
absolutePath.match('src/client/ssr/
|
|
1253
|
-
!confSsr.
|
|
1254
|
-
) {
|
|
1255
|
-
return false;
|
|
1256
|
-
}
|
|
1257
|
-
if (
|
|
1258
|
-
absolutePath.match('src/client/ssr/pages') &&
|
|
1259
|
-
!confSsr.pages.find((p) => absolutePath.match(`src/client/ssr/pages/${p.client}.js`))
|
|
1275
|
+
absolutePath.match('src/client/ssr/views') &&
|
|
1276
|
+
!(confSsr.views || []).find((p) => absolutePath.match(`src/client/ssr/views/${p.client}.js`))
|
|
1260
1277
|
) {
|
|
1261
1278
|
return false;
|
|
1262
1279
|
}
|
|
@@ -1278,15 +1295,17 @@ const validateTemplatePath = (absolutePath = '') => {
|
|
|
1278
1295
|
/**
|
|
1279
1296
|
* @method awaitDeployMonitor
|
|
1280
1297
|
* @description Waits for the deploy monitor.
|
|
1281
|
-
* @param {boolean} [
|
|
1298
|
+
* @param {boolean} [isFinal=false] - If true, logs when the final (non-replica) deployment completes.
|
|
1282
1299
|
* @param {number} [deltaMs=1000] - The delta ms.
|
|
1283
1300
|
* @returns {Promise<void>} - The await deploy monitor.
|
|
1284
1301
|
* @memberof ServerConfBuilder
|
|
1285
1302
|
*/
|
|
1286
|
-
const awaitDeployMonitor = async (
|
|
1287
|
-
|
|
1303
|
+
const awaitDeployMonitor = async (isFinal = false, deltaMs = 1000) => {
|
|
1304
|
+
Underpost.env.set('await-deploy', new Date().toISOString());
|
|
1305
|
+
if (isFinal) logger.info('Final deployment running (no replica)');
|
|
1288
1306
|
await timer(deltaMs);
|
|
1289
|
-
if (Underpost.env.get('
|
|
1307
|
+
if (Underpost.env.get('container-status') === 'error') throw new Error('Container status error');
|
|
1308
|
+
if (Underpost.env.get('await-deploy')) return await awaitDeployMonitor(isFinal, deltaMs);
|
|
1290
1309
|
};
|
|
1291
1310
|
|
|
1292
1311
|
/**
|
|
@@ -1311,59 +1330,6 @@ const mergeFile = async (parts = [], outputFilePath) => {
|
|
|
1311
1330
|
});
|
|
1312
1331
|
};
|
|
1313
1332
|
|
|
1314
|
-
/**
|
|
1315
|
-
* @method rebuildConfFactory
|
|
1316
|
-
* @description Rebuilds the conf factory.
|
|
1317
|
-
* @param {object} options - The options.
|
|
1318
|
-
* @param {string} options.deployId - The deploy ID.
|
|
1319
|
-
* @param {string} options.valkey - The valkey.
|
|
1320
|
-
* @param {boolean} [options.mongo=false] - The mongo.
|
|
1321
|
-
* @returns {object} - The rebuild conf factory.
|
|
1322
|
-
* @memberof ServerConfBuilder
|
|
1323
|
-
*/
|
|
1324
|
-
const rebuildConfFactory = ({ deployId, valkey, mongo }) => {
|
|
1325
|
-
const confServer = loadReplicas(deployId, loadConfServerJson(`./engine-private/conf/${deployId}/conf.server.json`));
|
|
1326
|
-
const hosts = {};
|
|
1327
|
-
for (const host of Object.keys(confServer)) {
|
|
1328
|
-
hosts[host] = {};
|
|
1329
|
-
for (const path of Object.keys(confServer[host])) {
|
|
1330
|
-
if (!confServer[host][path].db) continue;
|
|
1331
|
-
const { singleReplica, replicas, db } = confServer[host][path];
|
|
1332
|
-
const { provider } = db;
|
|
1333
|
-
if (singleReplica) {
|
|
1334
|
-
for (const replica of replicas) {
|
|
1335
|
-
const deployIdReplica = buildReplicaId({ replica, deployId });
|
|
1336
|
-
const confServerReplica = loadConfServerJson(`./engine-private/replica/${deployIdReplica}/conf.server.json`);
|
|
1337
|
-
for (const _host of Object.keys(confServerReplica)) {
|
|
1338
|
-
for (const _path of Object.keys(confServerReplica[_host])) {
|
|
1339
|
-
hosts[host][_path] = { replica: { host, path } };
|
|
1340
|
-
confServerReplica[_host][_path].valkey = valkey;
|
|
1341
|
-
switch (provider) {
|
|
1342
|
-
case 'mongoose':
|
|
1343
|
-
confServerReplica[_host][_path].db.host = mongo.host;
|
|
1344
|
-
break;
|
|
1345
|
-
}
|
|
1346
|
-
}
|
|
1347
|
-
}
|
|
1348
|
-
fs.writeFileSync(
|
|
1349
|
-
`./engine-private/replica/${deployIdReplica}/conf.server.json`,
|
|
1350
|
-
JSON.stringify(confServerReplica, null, 4),
|
|
1351
|
-
'utf8',
|
|
1352
|
-
);
|
|
1353
|
-
}
|
|
1354
|
-
} else hosts[host][path] = {};
|
|
1355
|
-
confServer[host][path].valkey = valkey;
|
|
1356
|
-
switch (provider) {
|
|
1357
|
-
case 'mongoose':
|
|
1358
|
-
confServer[host][path].db.host = mongo.host;
|
|
1359
|
-
break;
|
|
1360
|
-
}
|
|
1361
|
-
}
|
|
1362
|
-
}
|
|
1363
|
-
fs.writeFileSync(`./engine-private/conf/${deployId}/conf.server.json`, JSON.stringify(confServer, null, 4), 'utf8');
|
|
1364
|
-
return { hosts };
|
|
1365
|
-
};
|
|
1366
|
-
|
|
1367
1333
|
/**
|
|
1368
1334
|
* @method getPathsSSR
|
|
1369
1335
|
* @description Gets the paths SSR.
|
|
@@ -1376,8 +1342,7 @@ const getPathsSSR = (conf) => {
|
|
|
1376
1342
|
for (const o of conf.head) paths.push(`src/client/ssr/head/${o}.js`);
|
|
1377
1343
|
for (const o of conf.body) paths.push(`src/client/ssr/body/${o}.js`);
|
|
1378
1344
|
for (const o of Object.keys(conf.mailer)) paths.push(`src/client/ssr/mailer/${conf.mailer[o]}.js`);
|
|
1379
|
-
for (const o of conf.
|
|
1380
|
-
for (const o of conf.pages) paths.push(`src/client/ssr/pages/${o.client}.js`);
|
|
1345
|
+
for (const o of conf.views || []) paths.push(`src/client/ssr/views/${o.client}.js`);
|
|
1381
1346
|
return paths;
|
|
1382
1347
|
};
|
|
1383
1348
|
|
|
@@ -1745,6 +1710,44 @@ const loadConfServerJson = (jsonPath, options) => {
|
|
|
1745
1710
|
return options && options.resolve === true ? resolveConfSecrets(raw) : raw;
|
|
1746
1711
|
};
|
|
1747
1712
|
|
|
1713
|
+
/**
|
|
1714
|
+
* Creates and writes the /etc/hosts file for a deployment.
|
|
1715
|
+
* @method etcHostFactory
|
|
1716
|
+
* @param {Array<string>} hosts - List of hosts to be added to the hosts file.
|
|
1717
|
+
* @param {object} options - Options for the hosts file creation.
|
|
1718
|
+
* @param {boolean} options.append - Whether to append to the existing hosts file.
|
|
1719
|
+
* @returns {object} - Object containing the rendered hosts file.
|
|
1720
|
+
* @memberof ServerConfBuilder
|
|
1721
|
+
*/
|
|
1722
|
+
const etcHostFactory = (hosts = [], options = { append: false }) => {
|
|
1723
|
+
hosts = hosts.map((host) => {
|
|
1724
|
+
try {
|
|
1725
|
+
if (!host.startsWith('http')) host = `http://${host}`;
|
|
1726
|
+
const hostname = new URL(host).hostname;
|
|
1727
|
+
logger.info('Hostname extract valid', { host, hostname });
|
|
1728
|
+
return hostname;
|
|
1729
|
+
} catch (e) {
|
|
1730
|
+
logger.warn('No hostname extract valid', host);
|
|
1731
|
+
return host;
|
|
1732
|
+
}
|
|
1733
|
+
});
|
|
1734
|
+
const renderHosts = `127.0.0.1 ${hosts.join(
|
|
1735
|
+
' ',
|
|
1736
|
+
)} localhost localhost.localdomain localhost4 localhost4.localdomain4
|
|
1737
|
+
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6`;
|
|
1738
|
+
|
|
1739
|
+
if (options && options.append && fs.existsSync(`/etc/hosts`)) {
|
|
1740
|
+
fs.writeFileSync(
|
|
1741
|
+
`/etc/hosts`,
|
|
1742
|
+
fs.readFileSync(`/etc/hosts`, 'utf8') +
|
|
1743
|
+
`
|
|
1744
|
+
${renderHosts}`,
|
|
1745
|
+
'utf8',
|
|
1746
|
+
);
|
|
1747
|
+
} else fs.writeFileSync(`/etc/hosts`, renderHosts, 'utf8');
|
|
1748
|
+
return { renderHosts };
|
|
1749
|
+
};
|
|
1750
|
+
|
|
1748
1751
|
export {
|
|
1749
1752
|
Config,
|
|
1750
1753
|
loadConf,
|
|
@@ -1773,7 +1776,6 @@ export {
|
|
|
1773
1776
|
pathPortAssignmentFactory,
|
|
1774
1777
|
deployRangePortFactory,
|
|
1775
1778
|
awaitDeployMonitor,
|
|
1776
|
-
rebuildConfFactory,
|
|
1777
1779
|
buildCliDoc,
|
|
1778
1780
|
getInstanceContext,
|
|
1779
1781
|
buildApiConf,
|
|
@@ -1783,6 +1785,7 @@ export {
|
|
|
1783
1785
|
devProxyHostFactory,
|
|
1784
1786
|
isTlsDevProxy,
|
|
1785
1787
|
getTlsHosts,
|
|
1788
|
+
resolveHostKeyContext,
|
|
1786
1789
|
resolveConfSecrets,
|
|
1787
1790
|
loadConfServerJson,
|
|
1788
1791
|
getConfFolder,
|
|
@@ -1791,4 +1794,5 @@ export {
|
|
|
1791
1794
|
DEFAULT_DEPLOY_ID,
|
|
1792
1795
|
loadCronDeployEnv,
|
|
1793
1796
|
cronDeployIdResolve,
|
|
1797
|
+
etcHostFactory,
|
|
1794
1798
|
};
|
package/src/server/data-query.js
CHANGED
|
@@ -5,7 +5,16 @@
|
|
|
5
5
|
* @namespace DataQuery
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @class DataQuery
|
|
10
|
+
* @description Utility class for parsing request query parameters into Mongoose query options,
|
|
11
|
+
* including support for AG Grid filterModel and sortModel. Provides a static `parse`
|
|
12
|
+
* method that takes in request query parameters and returns an object containing the MongoDB
|
|
13
|
+
* query, sort options, pagination skip/limit, and page number. Designed to be used in API
|
|
14
|
+
* controllers to handle complex querying needs from the frontend.
|
|
15
|
+
* @memberof DataQuery
|
|
16
|
+
*/
|
|
17
|
+
class DataQuery {
|
|
9
18
|
/**
|
|
10
19
|
* Parse request query parameters into Mongoose query options
|
|
11
20
|
* @param {Object} params - The request query parameters (req.query)
|
|
@@ -20,7 +29,7 @@ export const DataQuery = {
|
|
|
20
29
|
* @memberof DataQuery
|
|
21
30
|
* @returns {Object} { query, sort, skip, limit, page }
|
|
22
31
|
*/
|
|
23
|
-
parse
|
|
32
|
+
static parse(params = {}) {
|
|
24
33
|
let { filterModel, sortModel, page, limit, sort: sortParam, asc, order, query: defaultQuery } = params;
|
|
25
34
|
|
|
26
35
|
// === 1. Pagination ===
|
|
@@ -35,7 +44,7 @@ export const DataQuery = {
|
|
|
35
44
|
const query = DataQuery._parseFilter(filterModel, defaultQuery);
|
|
36
45
|
|
|
37
46
|
return { query, sort, skip, limit, page };
|
|
38
|
-
}
|
|
47
|
+
}
|
|
39
48
|
|
|
40
49
|
/**
|
|
41
50
|
* Parse sort parameters from AG Grid sortModel or simple sort params
|
|
@@ -47,7 +56,7 @@ export const DataQuery = {
|
|
|
47
56
|
* @return {Object} sort object for Mongoose
|
|
48
57
|
* @memberof DataQuery
|
|
49
58
|
*/
|
|
50
|
-
_parseSort
|
|
59
|
+
static _parseSort(sortModel, sortParam, asc, order) {
|
|
51
60
|
const sort = {};
|
|
52
61
|
|
|
53
62
|
// Parse sortModel from string if needed
|
|
@@ -90,7 +99,7 @@ export const DataQuery = {
|
|
|
90
99
|
}
|
|
91
100
|
|
|
92
101
|
return sort;
|
|
93
|
-
}
|
|
102
|
+
}
|
|
94
103
|
|
|
95
104
|
/**
|
|
96
105
|
* Parse filter parameters from AG Grid filterModel
|
|
@@ -100,7 +109,7 @@ export const DataQuery = {
|
|
|
100
109
|
* @return {Object} query object for Mongoose
|
|
101
110
|
* @memberof DataQuery
|
|
102
111
|
*/
|
|
103
|
-
_parseFilter
|
|
112
|
+
static _parseFilter(filterModel, defaultQuery) {
|
|
104
113
|
let query = defaultQuery ? { ...defaultQuery } : {};
|
|
105
114
|
|
|
106
115
|
// Parse filterModel from string if needed
|
|
@@ -127,7 +136,7 @@ export const DataQuery = {
|
|
|
127
136
|
});
|
|
128
137
|
|
|
129
138
|
return query;
|
|
130
|
-
}
|
|
139
|
+
}
|
|
131
140
|
|
|
132
141
|
/**
|
|
133
142
|
* Parse a single field filter
|
|
@@ -137,7 +146,7 @@ export const DataQuery = {
|
|
|
137
146
|
* @return {Object|null} query condition for the field or null if invalid
|
|
138
147
|
* @memberof DataQuery
|
|
139
148
|
*/
|
|
140
|
-
_parseFieldFilter
|
|
149
|
+
static _parseFieldFilter(field, filter) {
|
|
141
150
|
if (!filter || !filter.filterType) {
|
|
142
151
|
return null;
|
|
143
152
|
}
|
|
@@ -158,7 +167,7 @@ export const DataQuery = {
|
|
|
158
167
|
default:
|
|
159
168
|
return null;
|
|
160
169
|
}
|
|
161
|
-
}
|
|
170
|
+
}
|
|
162
171
|
|
|
163
172
|
/**
|
|
164
173
|
* Parse text filter
|
|
@@ -168,7 +177,7 @@ export const DataQuery = {
|
|
|
168
177
|
* @return {Object|null} query condition for the text field or null if invalid
|
|
169
178
|
* @memberof DataQuery
|
|
170
179
|
*/
|
|
171
|
-
_parseTextFilter
|
|
180
|
+
static _parseTextFilter(field, filter) {
|
|
172
181
|
const { type, filter: filterValue } = filter;
|
|
173
182
|
|
|
174
183
|
if (filterValue === null || filterValue === undefined || filterValue === '') {
|
|
@@ -219,7 +228,7 @@ export const DataQuery = {
|
|
|
219
228
|
}
|
|
220
229
|
|
|
221
230
|
return query;
|
|
222
|
-
}
|
|
231
|
+
}
|
|
223
232
|
|
|
224
233
|
/**
|
|
225
234
|
* Parse number filter
|
|
@@ -229,7 +238,7 @@ export const DataQuery = {
|
|
|
229
238
|
* @return {Object|null} query condition for the number field or null if invalid
|
|
230
239
|
* @memberof DataQuery
|
|
231
240
|
*/
|
|
232
|
-
_parseNumberFilter
|
|
241
|
+
static _parseNumberFilter(field, filter) {
|
|
233
242
|
const { type, filter: filterValue, filterTo } = filter;
|
|
234
243
|
|
|
235
244
|
if (filterValue === null || filterValue === undefined) {
|
|
@@ -281,7 +290,7 @@ export const DataQuery = {
|
|
|
281
290
|
}
|
|
282
291
|
|
|
283
292
|
return query;
|
|
284
|
-
}
|
|
293
|
+
}
|
|
285
294
|
|
|
286
295
|
/**
|
|
287
296
|
* Parse date filter
|
|
@@ -291,7 +300,7 @@ export const DataQuery = {
|
|
|
291
300
|
* @return {Object|null} query condition for the date field or null if invalid
|
|
292
301
|
* @memberof DataQuery
|
|
293
302
|
*/
|
|
294
|
-
_parseDateFilter
|
|
303
|
+
static _parseDateFilter(field, filter) {
|
|
295
304
|
const { type, dateFrom, dateTo } = filter;
|
|
296
305
|
|
|
297
306
|
// Handle blank/notBlank without dates
|
|
@@ -391,7 +400,7 @@ export const DataQuery = {
|
|
|
391
400
|
}
|
|
392
401
|
|
|
393
402
|
return query;
|
|
394
|
-
}
|
|
403
|
+
}
|
|
395
404
|
|
|
396
405
|
/**
|
|
397
406
|
* Parse set filter
|
|
@@ -401,7 +410,7 @@ export const DataQuery = {
|
|
|
401
410
|
* @return {Object|null} query condition for the set field or null if invalid
|
|
402
411
|
* @memberof DataQuery
|
|
403
412
|
*/
|
|
404
|
-
_parseSetFilter
|
|
413
|
+
static _parseSetFilter(field, filter) {
|
|
405
414
|
const { values } = filter;
|
|
406
415
|
|
|
407
416
|
if (!Array.isArray(values) || values.length === 0) {
|
|
@@ -409,7 +418,7 @@ export const DataQuery = {
|
|
|
409
418
|
}
|
|
410
419
|
|
|
411
420
|
return { [field]: { $in: values } };
|
|
412
|
-
}
|
|
421
|
+
}
|
|
413
422
|
|
|
414
423
|
/**
|
|
415
424
|
* Parse multi filter (combines multiple filters with AND/OR)
|
|
@@ -419,7 +428,7 @@ export const DataQuery = {
|
|
|
419
428
|
* @return {Object|null} query condition for the multi filter or null if invalid
|
|
420
429
|
* @memberof DataQuery
|
|
421
430
|
*/
|
|
422
|
-
_parseMultiFilter
|
|
431
|
+
static _parseMultiFilter(field, filter) {
|
|
423
432
|
const { filterModels, operator } = filter;
|
|
424
433
|
|
|
425
434
|
if (!Array.isArray(filterModels) || filterModels.length === 0) {
|
|
@@ -445,5 +454,8 @@ export const DataQuery = {
|
|
|
445
454
|
// AND operator (default)
|
|
446
455
|
return { $and: conditions };
|
|
447
456
|
}
|
|
448
|
-
}
|
|
449
|
-
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
export { DataQuery };
|
|
461
|
+
export default DataQuery;
|
package/src/server/dns.js
CHANGED
|
@@ -101,6 +101,22 @@ class Dns {
|
|
|
101
101
|
return ipv4.address;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Gets the MAC address of the main (default route) network interface.
|
|
106
|
+
* @static
|
|
107
|
+
* @memberof UnderpostDns
|
|
108
|
+
* @returns {string|null} The MAC address, or null if not found.
|
|
109
|
+
*/
|
|
110
|
+
static getMainInterfaceMac() {
|
|
111
|
+
const interfaceName = Dns.getDefaultNetworkInterface();
|
|
112
|
+
const networkInfo = os.networkInterfaces()[interfaceName];
|
|
113
|
+
if (!networkInfo || networkInfo.length === 0) {
|
|
114
|
+
logger.error(`Could not find network interface: ${interfaceName}`);
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
return networkInfo[0].mac;
|
|
118
|
+
}
|
|
119
|
+
|
|
104
120
|
/**
|
|
105
121
|
* Setup nftables tables and chains if they don't exist.
|
|
106
122
|
* @static
|
|
@@ -491,6 +507,12 @@ class Dns {
|
|
|
491
507
|
});
|
|
492
508
|
}
|
|
493
509
|
|
|
510
|
+
if (options.mac) {
|
|
511
|
+
const mac = Dns.getMainInterfaceMac();
|
|
512
|
+
console.log(mac);
|
|
513
|
+
return mac;
|
|
514
|
+
}
|
|
515
|
+
|
|
494
516
|
let ip;
|
|
495
517
|
if (options.dhcp) ip = Dns.getLocalIPv4Address();
|
|
496
518
|
else ip = await Dns.getPublicIp();
|