underpost 2.7.91 → 2.7.92

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 (50) hide show
  1. package/bin/deploy.js +13 -11
  2. package/bin/file.js +1 -0
  3. package/bin/hwt.js +59 -0
  4. package/bin/index.js +1 -1
  5. package/conf.js +28 -4
  6. package/docker-compose.yml +1 -1
  7. package/package.json +133 -133
  8. package/src/client/components/core/404.js +20 -0
  9. package/src/client/components/core/500.js +20 -0
  10. package/src/client/{ssr/common → components/core}/Alert.js +13 -11
  11. package/src/client/components/core/Docs.js +1 -1
  12. package/src/client/components/core/Modal.js +5 -6
  13. package/src/client/components/core/Translate.js +21 -5
  14. package/src/client/components/core/VanillaJs.js +2 -1
  15. package/src/client/components/core/Worker.js +10 -11
  16. package/src/client/components/default/MenuDefault.js +68 -0
  17. package/src/client/components/default/RoutesDefault.js +2 -0
  18. package/src/client/public/default/plantuml/client-conf.svg +1 -1
  19. package/src/client/public/default/plantuml/client-schema.svg +1 -1
  20. package/src/client/public/default/plantuml/cron-schema.svg +1 -1
  21. package/src/client/public/default/plantuml/server-conf.svg +1 -1
  22. package/src/client/public/default/plantuml/server-schema.svg +1 -1
  23. package/src/client/public/default/plantuml/ssr-conf.svg +1 -1
  24. package/src/client/public/default/plantuml/ssr-schema.svg +1 -1
  25. package/src/client/ssr/Render.js +1 -6
  26. package/src/client/ssr/{components/body → body}/CacheControl.js +1 -1
  27. package/src/client/ssr/mailer/DefaultRecoverEmail.js +21 -0
  28. package/src/client/ssr/mailer/DefaultVerifyEmail.js +17 -0
  29. package/src/client/ssr/offline/NoNetworkConnection.js +65 -0
  30. package/src/client/ssr/pages/Test.js +196 -0
  31. package/src/client/sw/default.sw.js +43 -166
  32. package/src/mailer/EmailRender.js +2 -4
  33. package/src/mailer/MailerProvider.js +4 -1
  34. package/src/server/client-build.js +100 -74
  35. package/src/server/client-formatted.js +2 -4
  36. package/src/server/conf.js +40 -13
  37. package/src/server/proxy.js +0 -2
  38. package/src/server/runtime.js +38 -10
  39. package/src/client/ssr/common/SsrCore.js +0 -91
  40. package/src/client/ssr/common/Translate.js +0 -26
  41. package/src/client/ssr/common/Worker.js +0 -28
  42. package/src/client/ssr/components/head/PwaDefault.js +0 -60
  43. /package/src/client/ssr/{components/body → body}/DefaultSplashScreen.js +0 -0
  44. /package/src/client/ssr/{components/email → email}/DefaultRecoverEmail.js +0 -0
  45. /package/src/client/ssr/{components/email → email}/DefaultVerifyEmail.js +0 -0
  46. /package/src/client/ssr/{components/head → head}/Css.js +0 -0
  47. /package/src/client/ssr/{components/head → head}/DefaultScripts.js +0 -0
  48. /package/src/client/ssr/{components/head → head}/Production.js +0 -0
  49. /package/src/client/ssr/{components/head → head}/Pwa.js +0 -0
  50. /package/src/client/ssr/{components/head → head}/Seo.js +0 -0
@@ -66,11 +66,7 @@ const Translate = {
66
66
 
67
67
  const TranslateCore = {
68
68
  Init: async function () {
69
- s('html').lang = localStorage.getItem('lang')
70
- ? localStorage.getItem('lang')
71
- : getLang() && getLang().match('es')
72
- ? 'es'
73
- : 'en';
69
+ s('html').lang = getLang();
74
70
  Translate.Data = {
75
71
  ...Translate.Data,
76
72
  isEmpty: {
@@ -252,6 +248,26 @@ const TranslateCore = {
252
248
  en: 'Comments',
253
249
  es: 'Comentarios',
254
250
  },
251
+ ['server-maintenance']: {
252
+ en: "The server is under maintenance <br> we'll be back soon.",
253
+ es: 'El servidor está en mantenimiento <br> volveremos pronto.',
254
+ },
255
+ ['no-internet-connection']: {
256
+ en: 'No internet connection <br> verify your network',
257
+ es: 'Sin conexión a internet <br> verifica tu red',
258
+ },
259
+ ['page-not-found']: {
260
+ en: 'Page not found',
261
+ es: 'Página no encontrada',
262
+ },
263
+ ['page-broken']: {
264
+ es: 'Algo salio mal',
265
+ en: 'Something went wrong',
266
+ },
267
+ ['back']: {
268
+ en: 'Back to <br> homepage',
269
+ es: 'Volver a <br> la pagina principal',
270
+ },
255
271
  },
256
272
  };
257
273
  Translate.Data['warning-upload-no-selects-file'] = {
@@ -428,7 +428,8 @@ const isDevInstance = () => location.origin.match('localhost') && location.port;
428
428
 
429
429
  const getDataFromInputFile = async (file) => Array.from(new Uint8Array(await file.arrayBuffer()));
430
430
 
431
- const getLang = () => navigator.language || navigator.userLanguage;
431
+ const getLang = () =>
432
+ (localStorage.getItem('lang') || navigator.language || navigator.userLanguage || s('html').lang).slice(0, 2);
432
433
 
433
434
  export {
434
435
  s,
@@ -13,6 +13,15 @@ const Worker = {
13
13
  devMode: () => location.origin.match('localhost') || location.origin.match('127.0.0.1'),
14
14
  instance: async function ({ router, render }) {
15
15
  logger.warn('Init');
16
+ window.ononline = async () => {
17
+ logger.warn('ononline');
18
+ };
19
+ window.onoffline = async () => {
20
+ logger.warn('onoffline');
21
+ };
22
+ setTimeout(() => {
23
+ if ('onLine' in navigator && navigator.onLine) window.ononline();
24
+ });
16
25
  navigator.serviceWorker.addEventListener('controllerchange', () => {
17
26
  logger.info('The controller of current browsing context has changed.');
18
27
  });
@@ -48,12 +57,9 @@ const Worker = {
48
57
  // channel.postMessage({ title: 'Hello from Client broadcast message' });
49
58
  // channel.close();
50
59
  });
60
+ this.RouterInstance = router();
51
61
  const isInstall = await this.status();
52
62
  if (!isInstall) await this.install();
53
- else await this.update();
54
- await this.updateOfflineSrc();
55
- // else if (location.hostname === 'localhost') await this.update();
56
- this.RouterInstance = router();
57
63
  await render();
58
64
  LoadRouter(this.RouterInstance);
59
65
  LoadingAnimation.removeSplashScreen();
@@ -212,13 +218,6 @@ const Worker = {
212
218
  }
213
219
  });
214
220
  },
215
- updateOfflineSrc: async function () {
216
- try {
217
- await fetch(`${getProxyPath()}offline.html`);
218
- } catch (error) {
219
- logger.error('error');
220
- }
221
- },
222
221
  // TODO: GPS management
223
222
  RenderSetting: async function () {
224
223
  setTimeout(() => {
@@ -17,6 +17,8 @@ import { Badge } from '../core/Badge.js';
17
17
  import { Docs } from '../core/Docs.js';
18
18
  import { Recover } from '../core/Recover.js';
19
19
  import { DefaultManagement } from '../../services/default/default.management.js';
20
+ import { Page500 } from '../core/500.js';
21
+ import { Page404 } from '../core/404.js';
20
22
 
21
23
  const MenuDefault = {
22
24
  Data: {},
@@ -136,6 +138,28 @@ const MenuDefault = {
136
138
  handleContainerClass: 'handle-btn-container',
137
139
  tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('default-management')),
138
140
  })}
141
+ ${await BtnIcon.Render({
142
+ class: 'in wfa main-btn-menu main-btn-404 hide',
143
+ label: renderMenuLabel({
144
+ icon: html`<i class="fa-solid fa-triangle-exclamation"></i>`,
145
+ text: html`<span class="menu-label-text">${Translate.Render('404')}</span>`,
146
+ }),
147
+ attrs: `data-id="404"`,
148
+ tabHref: `${getProxyPath()}404`,
149
+ handleContainerClass: 'handle-btn-container',
150
+ tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('404')),
151
+ })}
152
+ ${await BtnIcon.Render({
153
+ class: 'in wfa main-btn-menu main-btn-500 hide',
154
+ label: renderMenuLabel({
155
+ icon: html`<i class="fa-solid fa-circle-exclamation"></i>`,
156
+ text: html`<span class="menu-label-text">${Translate.Render('500')}</span>`,
157
+ }),
158
+ attrs: `data-id="500"`,
159
+ tabHref: `${getProxyPath()}500`,
160
+ handleContainerClass: 'handle-btn-container',
161
+ tooltipHtml: await Badge.Render(buildBadgeToolTipMenuOption('500')),
162
+ })}
139
163
  </div>
140
164
  `,
141
165
  barConfig: newInstance(barConfig),
@@ -383,6 +407,50 @@ const MenuDefault = {
383
407
  heightBottomBar,
384
408
  });
385
409
  });
410
+
411
+ EventsUI.onClick(`.main-btn-404`, async () => {
412
+ const { barConfig } = await Themes[Css.currentTheme]();
413
+ await Modal.Render({
414
+ id: 'modal-404',
415
+ route: '404',
416
+ barConfig,
417
+ title: renderViewTitle({
418
+ icon: html`<i class="fa-solid fa-triangle-exclamation"></i>`,
419
+ text: Translate.Render('404'),
420
+ }),
421
+ html: async () => await Page404.Render({ idModal: 'modal-404' }),
422
+ handleType: 'bar',
423
+ maximize: true,
424
+ mode: 'view',
425
+ slideMenu: 'modal-menu',
426
+ RouterInstance,
427
+ heightTopBar,
428
+ heightBottomBar,
429
+ observer: true,
430
+ });
431
+ });
432
+
433
+ EventsUI.onClick(`.main-btn-500`, async () => {
434
+ const { barConfig } = await Themes[Css.currentTheme]();
435
+ await Modal.Render({
436
+ id: 'modal-500',
437
+ route: '500',
438
+ barConfig,
439
+ title: renderViewTitle({
440
+ icon: html`<i class="fa-solid fa-circle-exclamation"></i>`,
441
+ text: Translate.Render('500'),
442
+ }),
443
+ html: async () => await Page500.Render({ idModal: 'modal-500' }),
444
+ handleType: 'bar',
445
+ maximize: true,
446
+ mode: 'view',
447
+ slideMenu: 'modal-menu',
448
+ RouterInstance,
449
+ heightTopBar,
450
+ heightBottomBar,
451
+ observer: true,
452
+ });
453
+ });
386
454
  },
387
455
  };
388
456
 
@@ -36,6 +36,8 @@ const RoutesDefault = () => {
36
36
  render: () => s(`.main-btn-default-management`).click(),
37
37
  translateTitle: true,
38
38
  },
39
+ '/404': { title: '404 Not Found', render: () => s(`.main-btn-404`).click() },
40
+ '/500': { title: '500 Server Error', render: () => s(`.main-btn-500`).click() },
39
41
  };
40
42
  };
41
43