cyberia 3.2.5 → 3.2.9

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.
Files changed (301) hide show
  1. package/.github/workflows/engine-cyberia.cd.yml +2 -2
  2. package/.github/workflows/release.cd.yml +1 -2
  3. package/CHANGELOG.md +351 -1
  4. package/CLI-HELP.md +40 -13
  5. package/Dockerfile +0 -4
  6. package/README.md +242 -497
  7. package/bin/build.js +19 -5
  8. package/bin/cyberia.js +1149 -240
  9. package/bin/deploy.js +570 -1
  10. package/bin/file.js +6 -0
  11. package/bin/index.js +1149 -240
  12. package/bin/vs.js +1 -1
  13. package/conf.js +67 -89
  14. package/deployment.yaml +4 -222
  15. package/hardhat/package-lock.json +32 -32
  16. package/hardhat/package.json +3 -3
  17. package/jsconfig.json +1 -1
  18. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -2
  19. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -2
  20. package/manifests/deployment/dd-cyberia-development/deployment.yaml +4 -222
  21. package/manifests/deployment/dd-cyberia-development/proxy.yaml +10 -118
  22. package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
  23. package/manifests/deployment/dd-test-development/deployment.yaml +136 -66
  24. package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
  25. package/package.json +23 -14
  26. package/proxy.yaml +10 -118
  27. package/scripts/k3s-node-setup.sh +2 -2
  28. package/scripts/nat-iptables.sh +103 -18
  29. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +18 -18
  30. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +7 -14
  31. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +76 -21
  32. package/src/api/core/core.controller.js +10 -10
  33. package/src/api/core/core.service.js +10 -10
  34. package/src/api/crypto/crypto.controller.js +8 -8
  35. package/src/api/crypto/crypto.service.js +8 -8
  36. package/src/api/cyberia-action/cyberia-action.controller.js +74 -0
  37. package/src/api/cyberia-action/cyberia-action.model.js +87 -0
  38. package/src/api/cyberia-action/cyberia-action.router.js +27 -0
  39. package/src/api/cyberia-action/cyberia-action.service.js +42 -0
  40. package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +13 -13
  41. package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +11 -11
  42. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +2 -2
  43. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +16 -16
  44. package/src/api/cyberia-entity/cyberia-entity.controller.js +10 -10
  45. package/src/api/cyberia-entity/cyberia-entity.service.js +10 -10
  46. package/src/api/cyberia-instance/cyberia-fallback-world.js +19 -209
  47. package/src/api/cyberia-instance/cyberia-instance.controller.js +14 -14
  48. package/src/api/cyberia-instance/cyberia-instance.model.js +3 -0
  49. package/src/api/cyberia-instance/cyberia-instance.service.js +22 -57
  50. package/src/api/cyberia-instance/cyberia-portal-connector.js +20 -246
  51. package/src/api/cyberia-instance/cyberia-world-generator.js +505 -0
  52. package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +10 -10
  53. package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +216 -55
  54. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +4 -1
  55. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +18 -14
  56. package/src/api/cyberia-map/cyberia-map.controller.js +10 -10
  57. package/src/api/cyberia-map/cyberia-map.service.js +10 -10
  58. package/src/api/cyberia-quest/cyberia-quest.controller.js +74 -0
  59. package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
  60. package/src/api/cyberia-quest/cyberia-quest.router.js +27 -0
  61. package/src/api/cyberia-quest/cyberia-quest.service.js +42 -0
  62. package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +74 -0
  63. package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
  64. package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +27 -0
  65. package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
  66. package/src/api/default/default.controller.js +10 -10
  67. package/src/api/default/default.service.js +10 -10
  68. package/src/api/document/document.controller.js +12 -12
  69. package/src/api/document/document.model.js +10 -16
  70. package/src/api/file/file.controller.js +8 -8
  71. package/src/api/file/file.model.js +10 -10
  72. package/src/api/file/file.service.js +36 -36
  73. package/src/api/instance/instance.controller.js +10 -10
  74. package/src/api/instance/instance.model.js +4 -10
  75. package/src/api/instance/instance.service.js +10 -10
  76. package/src/api/ipfs/ipfs.controller.js +12 -12
  77. package/src/api/ipfs/ipfs.model.js +4 -13
  78. package/src/api/ipfs/ipfs.service.js +14 -28
  79. package/src/api/object-layer/object-layer.controller.js +12 -12
  80. package/src/api/object-layer/object-layer.model.js +4 -17
  81. package/src/api/object-layer/object-layer.service.js +12 -12
  82. package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +10 -10
  83. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +6 -16
  84. package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +18 -14
  85. package/src/api/test/test.controller.js +8 -8
  86. package/src/api/test/test.service.js +8 -8
  87. package/src/api/user/guest.service.js +99 -0
  88. package/src/api/user/user.controller.js +6 -6
  89. package/src/api/user/user.model.js +8 -13
  90. package/src/api/user/user.service.js +3 -20
  91. package/src/cli/cluster.js +61 -14
  92. package/src/cli/db.js +47 -2
  93. package/src/cli/deploy.js +67 -35
  94. package/src/cli/fs.js +79 -8
  95. package/src/cli/image.js +43 -1
  96. package/src/cli/index.js +26 -1
  97. package/src/cli/release.js +57 -1
  98. package/src/cli/repository.js +69 -31
  99. package/src/cli/run.js +415 -36
  100. package/src/cli/ssh.js +1 -1
  101. package/src/cli/static.js +43 -115
  102. package/src/client/Cryptokoyn.index.js +18 -21
  103. package/src/client/CyberiaPortal.index.js +19 -23
  104. package/src/client/Default.index.js +21 -33
  105. package/src/client/Itemledger.index.js +20 -26
  106. package/src/client/Underpost.index.js +19 -23
  107. package/src/client/components/core/404.js +4 -4
  108. package/src/client/components/core/500.js +4 -4
  109. package/src/client/components/core/Account.js +73 -60
  110. package/src/client/components/core/AgGrid.js +23 -33
  111. package/src/client/components/core/Alert.js +12 -13
  112. package/src/client/components/core/AppStore.js +1 -1
  113. package/src/client/components/core/Auth.js +35 -37
  114. package/src/client/components/core/Badge.js +7 -13
  115. package/src/client/components/core/BtnIcon.js +15 -17
  116. package/src/client/components/core/CalendarCore.js +42 -63
  117. package/src/client/components/core/Chat.js +13 -15
  118. package/src/client/components/core/ClientEvents.js +87 -0
  119. package/src/client/components/core/ColorPaletteElement.js +309 -0
  120. package/src/client/components/core/Content.js +17 -14
  121. package/src/client/components/core/Css.js +15 -71
  122. package/src/client/components/core/CssCore.js +12 -16
  123. package/src/client/components/core/D3Chart.js +4 -4
  124. package/src/client/components/core/Docs.js +64 -91
  125. package/src/client/components/core/DropDown.js +69 -91
  126. package/src/client/components/core/EventBus.js +92 -0
  127. package/src/client/components/core/EventsUI.js +14 -17
  128. package/src/client/components/core/FileExplorer.js +96 -228
  129. package/src/client/components/core/FullScreen.js +47 -75
  130. package/src/client/components/core/Input.js +24 -69
  131. package/src/client/components/core/Keyboard.js +25 -18
  132. package/src/client/components/core/KeyboardAvoidance.js +145 -0
  133. package/src/client/components/core/LoadingAnimation.js +25 -31
  134. package/src/client/components/core/LogIn.js +41 -41
  135. package/src/client/components/core/LogOut.js +23 -14
  136. package/src/client/components/core/Modal.js +462 -178
  137. package/src/client/components/core/NotificationManager.js +14 -18
  138. package/src/client/components/core/Panel.js +54 -50
  139. package/src/client/components/core/PanelForm.js +25 -125
  140. package/src/client/components/core/Polyhedron.js +110 -214
  141. package/src/client/components/core/PublicProfile.js +39 -32
  142. package/src/client/components/core/Recover.js +48 -44
  143. package/src/client/components/core/Responsive.js +88 -32
  144. package/src/client/components/core/RichText.js +9 -18
  145. package/src/client/components/core/Router.js +24 -3
  146. package/src/client/components/core/SearchBox.js +37 -37
  147. package/src/client/components/core/SignUp.js +39 -30
  148. package/src/client/components/core/SocketIo.js +31 -2
  149. package/src/client/components/core/SocketIoHandler.js +6 -6
  150. package/src/client/components/core/ToggleSwitch.js +8 -20
  151. package/src/client/components/core/ToolTip.js +5 -17
  152. package/src/client/components/core/Translate.js +56 -59
  153. package/src/client/components/core/Validator.js +26 -16
  154. package/src/client/components/core/Wallet.js +15 -26
  155. package/src/client/components/core/Worker.js +163 -27
  156. package/src/client/components/core/windowGetDimensions.js +7 -7
  157. package/src/client/components/cryptokoyn/{MenuCryptokoyn.js → AppShellCryptokoyn.js} +57 -57
  158. package/src/client/components/cryptokoyn/CssCryptokoyn.js +15 -15
  159. package/src/client/components/cryptokoyn/LogInCryptokoyn.js +6 -4
  160. package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +6 -4
  161. package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
  162. package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +4 -4
  163. package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +6 -4
  164. package/src/client/components/cyberia/InstanceEngineCyberia.js +141 -60
  165. package/src/client/components/cyberia/MapEngineCyberia.js +691 -214
  166. package/src/client/components/cyberia/ObjectLayerEngine.js +19 -0
  167. package/src/client/components/cyberia/ObjectLayerEngineModal.js +1204 -94
  168. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +196 -298
  169. package/src/client/components/cyberia-portal/{MenuCyberiaPortal.js → AppShellCyberiaPortal.js} +102 -102
  170. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +305 -61
  171. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +15 -15
  172. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +6 -4
  173. package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +6 -4
  174. package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +4 -4
  175. package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +60 -0
  176. package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +4 -4
  177. package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +6 -4
  178. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -4
  179. package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
  180. package/src/client/components/default/CssDefault.js +12 -12
  181. package/src/client/components/default/LogInDefault.js +6 -4
  182. package/src/client/components/default/LogOutDefault.js +6 -4
  183. package/src/client/components/default/RouterDefault.js +47 -0
  184. package/src/client/components/default/SettingsDefault.js +4 -4
  185. package/src/client/components/default/SignUpDefault.js +6 -4
  186. package/src/client/components/default/TranslateDefault.js +3 -3
  187. package/src/client/components/itemledger/{MenuItemledger.js → AppShellItemledger.js} +57 -57
  188. package/src/client/components/itemledger/CssItemledger.js +15 -15
  189. package/src/client/components/itemledger/LogInItemledger.js +6 -4
  190. package/src/client/components/itemledger/LogOutItemledger.js +6 -4
  191. package/src/client/components/itemledger/RouterItemledger.js +38 -0
  192. package/src/client/components/itemledger/SettingsItemledger.js +4 -4
  193. package/src/client/components/itemledger/SignUpItemledger.js +6 -4
  194. package/src/client/components/itemledger/TranslateItemledger.js +3 -3
  195. package/src/client/components/underpost/{MenuUnderpost.js → AppShellUnderpost.js} +88 -88
  196. package/src/client/components/underpost/CssUnderpost.js +14 -14
  197. package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +4 -4
  198. package/src/client/components/underpost/DocumentSearchProvider.js +1 -1
  199. package/src/client/components/underpost/LabGalleryUnderpost.js +12 -15
  200. package/src/client/components/underpost/LogInUnderpost.js +6 -4
  201. package/src/client/components/underpost/LogOutUnderpost.js +6 -4
  202. package/src/client/components/underpost/RouterUnderpost.js +45 -0
  203. package/src/client/components/underpost/SettingsUnderpost.js +4 -4
  204. package/src/client/components/underpost/SignUpUnderpost.js +6 -4
  205. package/src/client/components/underpost/TranslateUnderpost.js +4 -4
  206. package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +235 -0
  207. package/src/client/public/cyberia-docs/ARCHITECTURE.md +443 -0
  208. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +417 -0
  209. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +313 -0
  210. package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +260 -0
  211. package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +241 -0
  212. package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
  213. package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +279 -0
  214. package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +206 -0
  215. package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
  216. package/src/client/public/cyberia-docs/WHITE-PAPER.md +732 -0
  217. package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +14 -20
  218. package/src/client/services/core/core.service.js +17 -49
  219. package/src/client/services/crypto/crypto.service.js +8 -13
  220. package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
  221. package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +10 -16
  222. package/src/client/services/cyberia-entity/cyberia-entity.management.js +5 -5
  223. package/src/client/services/cyberia-entity/cyberia-entity.service.js +10 -16
  224. package/src/client/services/cyberia-instance/cyberia-instance.management.js +6 -6
  225. package/src/client/services/cyberia-instance/cyberia-instance.service.js +12 -18
  226. package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +10 -16
  227. package/src/client/services/cyberia-map/cyberia-map.management.js +6 -6
  228. package/src/client/services/cyberia-map/cyberia-map.service.js +12 -18
  229. package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
  230. package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
  231. package/src/client/services/default/default.management.js +159 -267
  232. package/src/client/services/default/default.service.js +10 -16
  233. package/src/client/services/document/document.service.js +14 -19
  234. package/src/client/services/file/file.service.js +8 -13
  235. package/src/client/services/instance/instance.management.js +5 -5
  236. package/src/client/services/instance/instance.service.js +10 -15
  237. package/src/client/services/ipfs/ipfs.service.js +12 -18
  238. package/src/client/services/object-layer/object-layer.management.js +12 -12
  239. package/src/client/services/object-layer/object-layer.service.js +20 -26
  240. package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +10 -16
  241. package/src/client/services/test/test.service.js +8 -13
  242. package/src/client/services/user/guest.service.js +86 -0
  243. package/src/client/services/user/user.management.js +5 -5
  244. package/src/client/services/user/user.service.js +14 -20
  245. package/src/client/ssr/body/404.js +3 -3
  246. package/src/client/ssr/body/500.js +3 -3
  247. package/src/client/ssr/body/CacheControl.js +5 -2
  248. package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
  249. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +13 -6
  250. package/src/client/ssr/head/PwaItemledger.js +197 -60
  251. package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
  252. package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
  253. package/src/client/ssr/offline/Maintenance.js +12 -11
  254. package/src/client/ssr/offline/NoNetworkConnection.js +3 -3
  255. package/src/client/ssr/pages/Test.js +2 -2
  256. package/src/client/sw/core.sw.js +212 -0
  257. package/src/grpc/cyberia/grpc-server.js +179 -67
  258. package/src/index.js +1 -1
  259. package/src/runtime/cyberia-client/Dockerfile +80 -0
  260. package/src/runtime/cyberia-server/Dockerfile +37 -0
  261. package/src/runtime/express/Dockerfile +4 -4
  262. package/src/runtime/lampp/Dockerfile +8 -7
  263. package/src/runtime/wp/Dockerfile +11 -17
  264. package/src/server/atlas-sprite-sheet-generator.js +4 -2
  265. package/src/server/client-build-docs.js +45 -46
  266. package/src/server/client-build.js +334 -60
  267. package/src/server/client-formatted.js +47 -16
  268. package/src/server/conf.js +5 -4
  269. package/src/server/data-query.js +32 -20
  270. package/src/server/dns.js +22 -0
  271. package/src/server/ipfs-client.js +232 -91
  272. package/src/server/object-layer.js +1 -6
  273. package/src/server/process.js +13 -27
  274. package/src/server/semantic-layer-generator-floor.js +11 -51
  275. package/src/server/semantic-layer-generator-resource.js +259 -0
  276. package/src/server/semantic-layer-generator-skin.js +41 -171
  277. package/src/server/semantic-layer-generator.js +122 -14
  278. package/src/server/shape-generator.js +108 -0
  279. package/src/server/start.js +17 -3
  280. package/src/server/valkey.js +141 -235
  281. package/tsconfig.docs.json +15 -0
  282. package/typedoc.dd-cyberia.json +29 -0
  283. package/typedoc.json +29 -0
  284. package/WHITE-PAPER.md +0 -1540
  285. package/hardhat/README.md +0 -531
  286. package/hardhat/WHITE-PAPER.md +0 -1540
  287. package/jsdoc.dd-cyberia.json +0 -68
  288. package/jsdoc.json +0 -68
  289. package/src/api/object-layer/README.md +0 -672
  290. package/src/client/components/core/ColorPalette.js +0 -5267
  291. package/src/client/components/core/JoyStick.js +0 -80
  292. package/src/client/components/cryptokoyn/RoutesCryptokoyn.js +0 -39
  293. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +0 -62
  294. package/src/client/components/cyberia-portal/ServerCyberiaPortal.js +0 -136
  295. package/src/client/components/default/RoutesDefault.js +0 -49
  296. package/src/client/components/itemledger/RoutesItemledger.js +0 -40
  297. package/src/client/components/underpost/RoutesUnderpost.js +0 -47
  298. package/src/client/sw/default.sw.js +0 -127
  299. package/src/client/sw/template.sw.js +0 -84
  300. package/src/grpc/cyberia/OFF_CHAIN_ECONOMY.md +0 -305
  301. 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 = ({ dists = [], proxyPath, basePath = '', module = '', baseHost = '' }) => ({
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 basePrefix = `${prefix}${basePath ? `${basePath}/` : ''}`;
75
- if (args.path.startsWith('./')) {
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
- if (args.path.startsWith('../')) {
82
- return {
83
- path: `${basePrefix}${args.path.slice(3)}`,
84
- external: true,
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
- // Mark any remaining imports as external
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
- { dists = [], proxyPath, basePath = '', module = '', baseHost = '', minify: shouldMinify = false } = {},
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;
@@ -457,7 +457,7 @@ const loadConf = (deployId = DEFAULT_DEPLOY_ID, subConf) => {
457
457
  fs.removeSync(`${path}/.env.production`);
458
458
  fs.removeSync(`${path}/.env.development`);
459
459
  fs.removeSync(`${path}/.env.test`);
460
- if (fs.existsSync(`${path}/jsdoc.json`)) shellExec(`git checkout ${path}/jsdoc.json`);
460
+ if (fs.existsSync(`${path}/typedoc.json`)) shellExec(`git checkout ${path}/typedoc.json`);
461
461
  shellExec(`git checkout ${path}/package.json`);
462
462
  shellExec(`git checkout ${path}/package-lock.json`);
463
463
  return;
@@ -1156,6 +1156,7 @@ const getDataDeploy = async (
1156
1156
 
1157
1157
  let buildDataDeploy = [];
1158
1158
  for (const deployObj of dataDeploy) {
1159
+ const isReplicaDeploy = fs.existsSync(`./engine-private/replica/${deployObj.deployId}`);
1159
1160
  const serverConf = loadReplicas(
1160
1161
  deployObj.deployId,
1161
1162
  loadConfServerJson(`./engine-private/conf/${deployObj.deployId}/conf.server.json`),
@@ -1163,7 +1164,7 @@ const getDataDeploy = async (
1163
1164
  let replicaDataDeploy = [];
1164
1165
  for (const host of Object.keys(serverConf))
1165
1166
  for (const path of Object.keys(serverConf[host])) {
1166
- if (serverConf[host][path].replicas && serverConf[host][path].singleReplica) {
1167
+ if (!isReplicaDeploy && serverConf[host][path].replicas && serverConf[host][path].singleReplica) {
1167
1168
  if (options && options.buildSingleReplica)
1168
1169
  await Underpost.repo.client(deployObj.deployId, '', host, path, {
1169
1170
  singleReplica: true,
@@ -1211,7 +1212,7 @@ const validateTemplatePath = (absolutePath = '') => {
1211
1212
  return false;
1212
1213
  }
1213
1214
  if (absolutePath.match('conf.dd-') && absolutePath.match('.js')) return false;
1214
- if (absolutePath.match('jsdoc.dd-') && absolutePath.match('.json')) return false;
1215
+ if (absolutePath.match('typedoc.dd-') && absolutePath.match('.json')) return false;
1215
1216
  if (
1216
1217
  absolutePath.match('src/client/services/') &&
1217
1218
  !clients.find((p) => absolutePath.match(`src/client/services/${p}/`))
@@ -1227,7 +1228,7 @@ const validateTemplatePath = (absolutePath = '') => {
1227
1228
  ) {
1228
1229
  return false;
1229
1230
  }
1230
- if (absolutePath.match('src/client/sw/') && !clients.find((p) => absolutePath.match(`src/client/sw/${p}.sw.js`))) {
1231
+ if (absolutePath.match('src/client/sw/') && !absolutePath.match('src/client/sw/core.sw.js')) {
1231
1232
  return false;
1232
1233
  }
1233
1234
  if (
@@ -5,7 +5,16 @@
5
5
  * @namespace DataQuery
6
6
  */
7
7
 
8
- export const DataQuery = {
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: (params = {}) => {
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: (sortModel, sortParam, asc, order) => {
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: (filterModel, defaultQuery) => {
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: (field, filter) => {
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: (field, filter) => {
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: (field, filter) => {
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: (field, filter) => {
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: (field, filter) => {
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: (field, filter) => {
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();