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
@@ -1,17 +1,16 @@
1
- SrrComponent = (render = { style: {}, renderStyle: () => '' }, options) =>
2
- html`
3
- <div style="${render.renderStyle('body')}">
4
- <div style="${render.renderStyle('.container')}">
5
- <h1 style="${render.renderStyle('h1')}">{{H1}}</h1>
6
- <p style="${render.renderStyle('p')}">{{P1}}</p>
7
- <img
8
- src="http${options.transport.secure ? 's' : ''}://${options.host}${options.path === '/'
9
- ? ''
10
- : options.path}/api/user/mailer/{{TOKEN}}"
11
- />
12
- </div>
13
- <div style="${render.renderStyle('.footer')}">
14
- <p>{{COMPANY}}</p>
15
- </div>
1
+ SrrComponent = (render = { style: {}, renderStyle: () => '' }, options) => html`
2
+ <div style="${render.renderStyle('body')}">
3
+ <div style="${render.renderStyle('.container')}">
4
+ <h1 style="${render.renderStyle('h1')}">{{H1}}</h1>
5
+ <p style="${render.renderStyle('p')}">{{P1}}</p>
6
+ <img
7
+ src="http${options.transport.secure ? 's' : ''}://${options.host}${options.path === '/'
8
+ ? ''
9
+ : options.path}/api/user/mailer/{{TOKEN}}"
10
+ />
16
11
  </div>
17
- `;
12
+ <div style="${render.renderStyle('.footer')}">
13
+ <p>{{COMPANY}}</p>
14
+ </div>
15
+ </div>
16
+ `;
@@ -15,7 +15,7 @@ const main = () => {
15
15
  es: 'El servidor está en mantenimiento <br> volveremos pronto.',
16
16
  },
17
17
  },
18
- Render: function (id) {
18
+ instance: function (id) {
19
19
  return this.Data[id][getLang()] ? this.Data[id][getLang()] : this.Data[id]['en'];
20
20
  },
21
21
  };
@@ -47,17 +47,18 @@ const main = () => {
47
47
  <div class="abs center" style="top: 45%">
48
48
  ${icon}
49
49
  <br />
50
- <br />${Translate.Render('server-maintenance')}
50
+ <br />${Translate.instance('server-maintenance')}
51
51
  </div>`,
52
52
  );
53
53
  };
54
54
 
55
- SrrComponent = () => html`<script>
56
- {
57
- const s = ${s};
58
- const append = ${append};
59
- const getLang = ${getLang};
60
- const main = ${main};
61
- window.onload = main;
62
- }
63
- </script>`;
55
+ SrrComponent = () =>
56
+ html`<script>
57
+ {
58
+ const s = ${s};
59
+ const append = ${append};
60
+ const getLang = ${getLang};
61
+ const main = ${main};
62
+ window.onload = main;
63
+ }
64
+ </script>`;
@@ -19,7 +19,7 @@ const main = () => {
19
19
  es: 'Volver a <br> la pagina principal',
20
20
  },
21
21
  },
22
- Render: function (id) {
22
+ instance: function (id) {
23
23
  return this.Data[id][getLang()] ? this.Data[id][getLang()] : this.Data[id]['en'];
24
24
  },
25
25
  };
@@ -49,9 +49,9 @@ const main = () => {
49
49
  ${icon}
50
50
  <br />
51
51
  <br />
52
- <br />${Translate.Render('no-internet-connection')} <br />
52
+ <br />${Translate.instance('no-internet-connection')} <br />
53
53
  <br />
54
- <a target="_top" href="${location.origin}">${Translate.Render('back')}</a>
54
+ <a target="_top" href="${location.origin}">${Translate.instance('back')}</a>
55
55
  </div>`,
56
56
  );
57
57
  };
@@ -15,7 +15,7 @@ const main = () => {
15
15
  es: 'Volver a <br> la pagina principal',
16
16
  },
17
17
  },
18
- Render: function (id) {
18
+ instance: function (id) {
19
19
  return this.Data[id][getLang()] ? this.Data[id][getLang()] : this.Data[id]['en'];
20
20
  },
21
21
  };
@@ -182,7 +182,7 @@ const main = () => {
182
182
  <span class="bold">Test Page</span>
183
183
  <br />
184
184
  <br />
185
- <a target="_top" href="${location.origin}">${Translate.Render('back')}</a>
185
+ <a target="_top" href="${location.origin}">${Translate.instance('back')}</a>
186
186
  </div>`,
187
187
  );
188
188
  };
@@ -0,0 +1,212 @@
1
+ // Workbox modules are bundled inline by esbuild — no CDN, no importScripts.
2
+ import { setCacheNameDetails, clientsClaim } from 'workbox-core';
3
+ import { precacheAndRoute, cleanupOutdatedCaches, matchPrecache } from 'workbox-precaching';
4
+ import { registerRoute, setCatchHandler } from 'workbox-routing';
5
+ import { StaleWhileRevalidate, NetworkFirst, NetworkOnly } from 'workbox-strategies';
6
+ import { CacheableResponsePlugin } from 'workbox-cacheable-response';
7
+ import { ExpirationPlugin } from 'workbox-expiration';
8
+ import { BackgroundSyncPlugin } from 'workbox-background-sync';
9
+
10
+ // ─── Runtime config injected by client-build.js ───────────────────────────────
11
+ const CACHE_PREFIX = self.renderPayload?.CACHE_PREFIX || 'engine-core-v3';
12
+ const PRE_CACHED_RESOURCES = Array.isArray(self.renderPayload?.PRE_CACHED_RESOURCES)
13
+ ? self.renderPayload.PRE_CACHED_RESOURCES
14
+ : [];
15
+ const PROXY_PATH = self.renderPayload?.PROXY_PATH || '/';
16
+ const OFFLINE_PATH = self.renderPayload?.OFFLINE_PATH || '/offline';
17
+ const MAINTENANCE_PATH = self.renderPayload?.MAINTENANCE_PATH || '/maintenance';
18
+ const proxyBase = PROXY_PATH === '/' ? '' : PROXY_PATH;
19
+ const normalizeRoutePath = (candidatePath, fallbackPath) => {
20
+ const routePath = typeof candidatePath === 'string' && candidatePath.length > 0 ? candidatePath : fallbackPath;
21
+ const withLeadingSlash = routePath.startsWith('/') ? routePath : `/${routePath}`;
22
+ const withoutTrailingSlash = withLeadingSlash.replace(/\/+$/, '');
23
+ return withoutTrailingSlash.length > 0 ? withoutTrailingSlash : '/';
24
+ };
25
+ const offlinePath = normalizeRoutePath(OFFLINE_PATH, '/offline');
26
+ const maintenancePath = normalizeRoutePath(MAINTENANCE_PATH, '/maintenance');
27
+ const toRouteIndexUrl = (routePath) => `${proxyBase}${routePath === '/' ? '' : routePath}/index.html`;
28
+ const offlineUrl = toRouteIndexUrl(offlinePath);
29
+ const maintenanceUrl = toRouteIndexUrl(maintenancePath);
30
+
31
+ // Dedicated cache for fallback pages — populated independently from precacheAndRoute
32
+ // so offline/maintenance pages are always available even if the main precache install fails.
33
+ const FALLBACK_CACHE_NAME = `${CACHE_PREFIX}-fallbacks`;
34
+
35
+ const getFallbackResponse = async (preferMaintenance) => {
36
+ const cache = await caches.open(FALLBACK_CACHE_NAME);
37
+ if (preferMaintenance) {
38
+ return (
39
+ (await cache.match(maintenanceUrl)) ||
40
+ (await matchPrecache(maintenanceUrl)) ||
41
+ (await cache.match(offlineUrl)) ||
42
+ (await matchPrecache(offlineUrl)) ||
43
+ Response.error()
44
+ );
45
+ }
46
+ return (
47
+ (await cache.match(offlineUrl)) ||
48
+ (await matchPrecache(offlineUrl)) ||
49
+ (await cache.match(maintenanceUrl)) ||
50
+ (await matchPrecache(maintenanceUrl)) ||
51
+ Response.error()
52
+ );
53
+ };
54
+
55
+ // ─── Core setup ───────────────────────────────────────────────────────────────
56
+ setCacheNameDetails({ prefix: CACHE_PREFIX });
57
+ clientsClaim();
58
+
59
+ self.addEventListener('install', (event) => {
60
+ self.skipWaiting();
61
+ // Cache fallback pages in a dedicated cache so they are available even if
62
+ // precacheAndRoute fails (e.g. some asset in the manifest returns non-200).
63
+ event.waitUntil(
64
+ caches.open(FALLBACK_CACHE_NAME).then((cache) =>
65
+ // Try together first; fall back to individual adds so a single failure
66
+ // does not prevent the other page from being cached.
67
+ cache
68
+ .addAll([offlineUrl, maintenanceUrl])
69
+ .catch(() => Promise.all([cache.add(offlineUrl).catch(() => {}), cache.add(maintenanceUrl).catch(() => {})])),
70
+ ),
71
+ );
72
+ });
73
+
74
+ self.addEventListener('activate', (event) => {
75
+ event.waitUntil(
76
+ (async () => {
77
+ if ('navigationPreload' in self.registration) {
78
+ await self.registration.navigationPreload.enable();
79
+ }
80
+ })(),
81
+ );
82
+ });
83
+
84
+ self.addEventListener('message', (event) => {
85
+ const payload = event.data || {};
86
+
87
+ if (payload.status === 'skipWaiting') {
88
+ self.skipWaiting();
89
+ return;
90
+ }
91
+
92
+ if (payload.status === 'workbox-reset') {
93
+ event.waitUntil(
94
+ (async () => {
95
+ const cacheNames = await caches.keys();
96
+ await Promise.all(cacheNames.map((cacheName) => caches.delete(cacheName)));
97
+ if (event.ports && event.ports[0]) {
98
+ event.ports[0].postMessage({ status: 'workbox-reset-done', deleted: cacheNames.length });
99
+ }
100
+ })(),
101
+ );
102
+ }
103
+ });
104
+
105
+ // ─── Precaching ───────────────────────────────────────────────────────────────
106
+ precacheAndRoute(PRE_CACHED_RESOURCES.map((url) => ({ url, revision: null })));
107
+ cleanupOutdatedCaches();
108
+
109
+ // ─── Static assets: StaleWhileRevalidate ─────────────────────────────────────
110
+ registerRoute(
111
+ ({ request, url }) =>
112
+ request.method === 'GET' &&
113
+ url.origin === self.location.origin &&
114
+ ['style', 'script', 'font', 'image'].includes(request.destination),
115
+ new StaleWhileRevalidate({
116
+ cacheName: `${CACHE_PREFIX}-assets`,
117
+ plugins: [
118
+ new CacheableResponsePlugin({
119
+ statuses: [0, 200],
120
+ }),
121
+ new ExpirationPlugin({
122
+ maxEntries: 350,
123
+ maxAgeSeconds: 30 * 24 * 60 * 60, // 30 days
124
+ }),
125
+ ],
126
+ }),
127
+ );
128
+
129
+ // ─── API GET: NetworkFirst with short timeout ─────────────────────────────────
130
+ registerRoute(
131
+ ({ request, url }) => request.method === 'GET' && url.pathname.includes('/api/'),
132
+ new NetworkFirst({
133
+ cacheName: `${CACHE_PREFIX}-api-get`,
134
+ networkTimeoutSeconds: 5,
135
+ plugins: [
136
+ new CacheableResponsePlugin({
137
+ statuses: [0, 200],
138
+ }),
139
+ new ExpirationPlugin({
140
+ maxEntries: 120,
141
+ maxAgeSeconds: 5 * 60, // 5 minutes
142
+ }),
143
+ ],
144
+ }),
145
+ );
146
+
147
+ // ─── API mutations: NetworkOnly + background sync replay ─────────────────────
148
+ registerRoute(
149
+ ({ request, url }) => request.method !== 'GET' && url.pathname.includes('/api/'),
150
+ new NetworkOnly({
151
+ plugins: [
152
+ new BackgroundSyncPlugin('api-mutation-queue', {
153
+ maxRetentionTime: 24 * 60, // 24 hours
154
+ }),
155
+ ],
156
+ }),
157
+ );
158
+
159
+ // ─── Navigation: NetworkFirst with offline fallback ───────────────────────────
160
+ registerRoute(
161
+ ({ request }) => request.mode === 'navigate',
162
+ async ({ event }) => {
163
+ const navigationStrategy = new NetworkFirst({
164
+ cacheName: `${CACHE_PREFIX}-pages`,
165
+ networkTimeoutSeconds: 4,
166
+ plugins: [
167
+ new CacheableResponsePlugin({
168
+ statuses: [0, 200],
169
+ }),
170
+ new ExpirationPlugin({
171
+ maxEntries: 60,
172
+ maxAgeSeconds: 12 * 60 * 60, // 12 hours
173
+ }),
174
+ ],
175
+ });
176
+
177
+ // Distinguish server-down (online but unreachable) from no-network (offline).
178
+ // navigator.onLine is false only when the device has no network at all.
179
+ const isOnline = () => typeof navigator !== 'undefined' && navigator.onLine !== false;
180
+
181
+ try {
182
+ const preload = await event.preloadResponse;
183
+ if (preload) {
184
+ if (preload.status >= 500) {
185
+ return getFallbackResponse(true);
186
+ }
187
+ return preload;
188
+ }
189
+
190
+ const networkResponse = await navigationStrategy.handle({ event, request: event.request });
191
+ if (networkResponse && networkResponse.status >= 500) {
192
+ return getFallbackResponse(true);
193
+ }
194
+ return networkResponse;
195
+ } catch (_) {
196
+ // If device reports it has network but the request failed, it means the
197
+ // server is unreachable/down → show maintenance. True offline → show offline.
198
+ return getFallbackResponse(isOnline());
199
+ }
200
+ },
201
+ );
202
+
203
+ // ─── Global catch handler ─────────────────────────────────────────────────────
204
+ setCatchHandler(async ({ request }) => {
205
+ if (request.mode === 'navigate') {
206
+ return getFallbackResponse(typeof navigator !== 'undefined' && navigator.onLine !== false);
207
+ }
208
+ return new Response(JSON.stringify({ status: 'error', message: 'request failed' }), {
209
+ status: 503,
210
+ headers: { 'Content-Type': 'application/json' },
211
+ });
212
+ });