underpost 2.8.87 → 2.8.88

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 (99) hide show
  1. package/.env.development +35 -3
  2. package/.env.production +39 -4
  3. package/.env.test +35 -3
  4. package/.github/workflows/ghpkg.ci.yml +1 -1
  5. package/.github/workflows/npmpkg.ci.yml +1 -1
  6. package/.github/workflows/pwa-microservices-template-page.cd.yml +6 -5
  7. package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
  8. package/.github/workflows/release.cd.yml +3 -3
  9. package/README.md +56 -2
  10. package/bin/build.js +4 -0
  11. package/bin/deploy.js +62 -8
  12. package/bin/file.js +3 -2
  13. package/cli.md +8 -2
  14. package/conf.js +30 -4
  15. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  16. package/manifests/deployment/dd-test-development/deployment.yaml +174 -0
  17. package/manifests/deployment/dd-test-development/proxy.yaml +51 -0
  18. package/package.json +6 -5
  19. package/src/api/core/core.router.js +2 -1
  20. package/src/api/default/default.controller.js +6 -1
  21. package/src/api/default/default.router.js +6 -2
  22. package/src/api/default/default.service.js +10 -1
  23. package/src/api/document/document.controller.js +66 -0
  24. package/src/api/document/document.model.js +51 -0
  25. package/src/api/document/document.router.js +24 -0
  26. package/src/api/document/document.service.js +125 -0
  27. package/src/api/file/file.controller.js +15 -1
  28. package/src/api/file/file.router.js +2 -1
  29. package/src/api/test/test.router.js +1 -1
  30. package/src/api/user/postman_collection.json +216 -0
  31. package/src/api/user/user.controller.js +25 -60
  32. package/src/api/user/user.model.js +29 -7
  33. package/src/api/user/user.router.js +9 -3
  34. package/src/api/user/user.service.js +84 -32
  35. package/src/cli/baremetal.js +33 -3
  36. package/src/cli/cloud-init.js +11 -0
  37. package/src/cli/cron.js +0 -1
  38. package/src/cli/deploy.js +46 -23
  39. package/src/cli/index.js +5 -0
  40. package/src/cli/lxd.js +7 -0
  41. package/src/cli/repository.js +42 -6
  42. package/src/cli/run.js +45 -13
  43. package/src/cli/ssh.js +20 -6
  44. package/src/client/Default.index.js +42 -1
  45. package/src/client/components/core/Account.js +10 -2
  46. package/src/client/components/core/AgGrid.js +30 -8
  47. package/src/client/components/core/Auth.js +99 -56
  48. package/src/client/components/core/BtnIcon.js +3 -2
  49. package/src/client/components/core/CalendarCore.js +2 -3
  50. package/src/client/components/core/CommonJs.js +1 -2
  51. package/src/client/components/core/Content.js +15 -12
  52. package/src/client/components/core/Css.js +2 -1
  53. package/src/client/components/core/CssCore.js +6 -1
  54. package/src/client/components/core/Docs.js +5 -5
  55. package/src/client/components/core/FileExplorer.js +3 -3
  56. package/src/client/components/core/Input.js +22 -17
  57. package/src/client/components/core/JoyStick.js +2 -2
  58. package/src/client/components/core/LoadingAnimation.js +2 -2
  59. package/src/client/components/core/LogIn.js +16 -23
  60. package/src/client/components/core/LogOut.js +5 -1
  61. package/src/client/components/core/Logger.js +4 -1
  62. package/src/client/components/core/Modal.js +82 -53
  63. package/src/client/components/core/ObjectLayerEngineModal.js +2 -1
  64. package/src/client/components/core/Pagination.js +207 -0
  65. package/src/client/components/core/Panel.js +10 -10
  66. package/src/client/components/core/PanelForm.js +130 -33
  67. package/src/client/components/core/Recover.js +2 -2
  68. package/src/client/components/core/Router.js +210 -34
  69. package/src/client/components/core/SignUp.js +1 -2
  70. package/src/client/components/core/Stream.js +1 -1
  71. package/src/client/components/core/VanillaJs.js +3 -84
  72. package/src/client/components/core/Worker.js +2 -2
  73. package/src/client/components/default/LogInDefault.js +0 -6
  74. package/src/client/components/default/LogOutDefault.js +0 -16
  75. package/src/client/components/default/MenuDefault.js +97 -44
  76. package/src/client/components/default/RoutesDefault.js +5 -2
  77. package/src/client/services/core/core.service.js +8 -20
  78. package/src/client/services/default/default.management.js +115 -18
  79. package/src/client/services/default/default.service.js +13 -4
  80. package/src/client/services/document/document.service.js +97 -0
  81. package/src/client/services/file/file.service.js +2 -0
  82. package/src/client/services/test/test.service.js +3 -0
  83. package/src/client/services/user/user.management.js +6 -0
  84. package/src/client/services/user/user.service.js +15 -4
  85. package/src/client/ssr/Render.js +1 -1
  86. package/src/client/ssr/head/DefaultScripts.js +3 -0
  87. package/src/client/ssr/head/Seo.js +1 -0
  88. package/src/index.js +24 -2
  89. package/src/runtime/lampp/Lampp.js +89 -2
  90. package/src/runtime/xampp/Xampp.js +48 -1
  91. package/src/server/auth.js +519 -155
  92. package/src/server/backup.js +2 -2
  93. package/src/server/conf.js +66 -8
  94. package/src/server/process.js +2 -1
  95. package/src/server/runtime.js +135 -286
  96. package/src/server/ssl.js +1 -2
  97. package/src/server/ssr.js +85 -0
  98. package/src/server/start.js +2 -2
  99. package/src/server/valkey.js +2 -1
@@ -61,10 +61,10 @@ class BackUp {
61
61
  }
62
62
  shellExec(
63
63
  `cd ./engine-private/cron-backups` +
64
- ` && underpost pull . underpostnet/cron-backups` +
64
+ ` && underpost pull . ${process.env.GITHUB_USERNAME}/cron-backups` +
65
65
  ` && git add .` +
66
66
  ` && underpost cmt . backup cron-job '${new Date().toLocaleDateString()}'` +
67
- ` && underpost push . underpostnet/cron-backups`,
67
+ ` && underpost push . ${process.env.GITHUB_USERNAME}/cron-backups`,
68
68
  {
69
69
  disableLog: true,
70
70
  },
@@ -14,6 +14,7 @@ import { loggerFactory } from './logger.js';
14
14
  import { shellExec } from './process.js';
15
15
  import { DefaultConf } from '../../conf.js';
16
16
  import splitFile from 'split-file';
17
+ import UnderpostRootEnv from '../cli/env.js';
17
18
 
18
19
  colors.enable();
19
20
 
@@ -26,18 +27,19 @@ const Config = {
26
27
  build: async function (deployContext = 'dd-default', deployList, subConf) {
27
28
  if (typeof process.argv[2] === 'string' && process.argv[2].startsWith('dd-')) deployContext = process.argv[2];
28
29
  if (!fs.existsSync(`./tmp`)) fs.mkdirSync(`./tmp`, { recursive: true });
29
- fs.writeFileSync(`./tmp/await-deploy`, '', 'utf8');
30
+ UnderpostRootEnv.API.set('await-deploy', new Date().toISOString());
30
31
  if (fs.existsSync(`./engine-private/replica/${deployContext}`))
31
32
  return loadConf(deployContext, process.env.NODE_ENV, subConf);
32
33
  else if (deployContext.startsWith('dd-')) return loadConf(deployContext, process.env.NODE_ENV, subConf);
33
34
  if (deployContext === 'proxy') Config.buildProxy(deployContext, deployList, subConf);
34
35
  },
35
- deployIdFactory: function (deployId = 'dd-default') {
36
+ deployIdFactory: function (deployId = 'dd-default', options = { cluster: false }) {
36
37
  if (!deployId.startsWith('dd-')) deployId = `dd-${deployId}`;
37
38
 
38
39
  logger.info('Build deployId', deployId);
39
40
 
40
41
  const folder = `./engine-private/conf/${deployId}`;
42
+ const repoName = `engine-${deployId.split('dd-')[1]}`;
41
43
 
42
44
  if (!fs.existsSync(folder)) fs.mkdirSync(folder, { recursive: true });
43
45
  fs.writeFileSync(
@@ -55,10 +57,48 @@ const Config = {
55
57
  fs.readFileSync('./.env.test', 'utf8').replaceAll('dd-default', deployId),
56
58
  'utf8',
57
59
  );
58
- fs.writeFileSync(`${folder}/package.json`, fs.readFileSync('./package.json', 'utf8'), 'utf8');
60
+ fs.writeFileSync(
61
+ `${folder}/package.json`,
62
+ fs.readFileSync('./package.json', 'utf8').replaceAll('dd-default', deployId),
63
+ 'utf8',
64
+ );
59
65
 
60
66
  this.buildTmpConf(folder);
61
67
 
68
+ if (options.cluster === true) {
69
+ fs.writeFileSync(
70
+ `./.github/workflows/${repoName}.cd.yml`,
71
+ fs.readFileSync(`./.github/workflows/engine-test.cd.yml`, 'utf8').replaceAll('test', deployId.split('dd-')[1]),
72
+ 'utf8',
73
+ );
74
+ fs.writeFileSync(
75
+ `./.github/workflows/${repoName}.ci.yml`,
76
+ fs.readFileSync(`./.github/workflows/engine-test.ci.yml`, 'utf8').replaceAll('test', deployId.split('dd-')[1]),
77
+ 'utf8',
78
+ );
79
+ shellExec(`node bin/deploy update-default-conf ${deployId}`);
80
+
81
+ if (!fs.existsSync(`./engine-private/deploy/dd.router`))
82
+ fs.writeFileSync(`./engine-private/deploy/dd.router`, '', 'utf8');
83
+
84
+ fs.writeFileSync(
85
+ `./engine-private/deploy/dd.router`,
86
+ fs.readFileSync(`./engine-private/deploy/dd.router`, 'utf8').trim() + `,${deployId}`,
87
+ 'utf8',
88
+ );
89
+ const updateRepo = (stage = 1) => {
90
+ shellExec(`git add . && git commit -m "Add base deployId ${deployId} cluster files stage:${stage}"`);
91
+ shellExec(
92
+ `cd engine-private && git add . && git commit -m "Add base deployId ${deployId} cluster files stage:${stage}"`,
93
+ );
94
+ };
95
+ updateRepo(1);
96
+ shellExec(`node bin run --build --dev sync`);
97
+ updateRepo(2);
98
+ shellExec(`node bin run --build sync`);
99
+ updateRepo(3);
100
+ }
101
+
62
102
  return { deployIdFolder: folder, deployId };
63
103
  },
64
104
  buildTmpConf: function (folder = './conf') {
@@ -556,7 +596,7 @@ const buildPortProxyRouter = (port, proxyRouter) => {
556
596
  // build router
557
597
  Object.keys(hosts).map((hostKey) => {
558
598
  let { host, path, target, proxy, peer } = hosts[hostKey];
559
- if (process.env.NODE_ENV === 'development') host = `localhost`;
599
+ if (process.env.NODE_ENV === 'development' && process.argv.includes('localhost')) host = `localhost`;
560
600
 
561
601
  if (!proxy.includes(port)) {
562
602
  logger.warn('Proxy port not set on conf', { port, host, path, proxy, target });
@@ -656,7 +696,7 @@ const validateTemplatePath = (absolutePath = '') => {
656
696
  const confServer = DefaultConf.server[host][path];
657
697
  const confClient = DefaultConf.client[client];
658
698
  const confSsr = DefaultConf.ssr[ssr];
659
- const clients = Object.keys(confClient).concat(['core', 'test', 'default', 'user']);
699
+ const clients = DefaultConf.client.default.services;
660
700
 
661
701
  if (absolutePath.match('src/api') && !confServer.apis.find((p) => absolutePath.match(`src/api/${p}/`))) {
662
702
  return false;
@@ -726,9 +766,9 @@ const validateTemplatePath = (absolutePath = '') => {
726
766
  };
727
767
 
728
768
  const awaitDeployMonitor = async (init = false, deltaMs = 1000) => {
729
- if (init) fs.writeFileSync(`./tmp/await-deploy`, '', 'utf8');
769
+ if (init) UnderpostRootEnv.API.set('await-deploy', new Date().toISOString());
730
770
  await timer(deltaMs);
731
- if (fs.existsSync(`./tmp/await-deploy`)) return await awaitDeployMonitor();
771
+ if (UnderpostRootEnv.API.get('await-deploy')) return await awaitDeployMonitor();
732
772
  };
733
773
 
734
774
  const getCronBackUpFolder = (host = '', path = '') => {
@@ -917,7 +957,7 @@ const buildCliDoc = (program, oldVersion, newVersion) => {
917
957
  baseOptions +
918
958
  `
919
959
 
920
- <a target="_top" href="https://github.com/underpostnet/pwa-microservices-template/blob/master/cli.md">See complete CLI Docs here.</a>
960
+ <a target="_top" href="https://github.com/${process.env.GITHUB_USERNAME}/pwa-microservices-template/blob/master/cli.md">See complete CLI Docs here.</a>
921
961
 
922
962
  `
923
963
  ).replaceAll(oldVersion, newVersion),
@@ -925,6 +965,23 @@ const buildCliDoc = (program, oldVersion, newVersion) => {
925
965
  );
926
966
  };
927
967
 
968
+ const getInstanceContext = async (options = { singleReplica, replicas, redirect: '' }) => {
969
+ const { singleReplica, replicas, redirect } = options;
970
+
971
+ if (singleReplica && replicas && replicas.length > 0)
972
+ return {
973
+ singleReplicaHost: true,
974
+ };
975
+
976
+ const redirectTarget = redirect
977
+ ? redirect[redirect.length - 1] === '/'
978
+ ? redirect.slice(0, -1)
979
+ : redirect
980
+ : undefined;
981
+
982
+ return { redirectTarget };
983
+ };
984
+
928
985
  export {
929
986
  Cmd,
930
987
  Config,
@@ -957,4 +1014,5 @@ export {
957
1014
  awaitDeployMonitor,
958
1015
  rebuildConfFactory,
959
1016
  buildCliDoc,
1017
+ getInstanceContext,
960
1018
  };
@@ -5,6 +5,7 @@ import dotenv from 'dotenv';
5
5
  import fs from 'fs-extra';
6
6
  import { loggerFactory } from './logger.js';
7
7
  import clipboard from 'clipboardy';
8
+ import UnderpostRootEnv from '../cli/env.js';
8
9
 
9
10
  dotenv.config();
10
11
 
@@ -47,7 +48,7 @@ const ProcessController = {
47
48
  this.logger.info(`process on exit`, args);
48
49
  });
49
50
  this.onSigListen();
50
- if (fs.existsSync(`./tmp/await-deploy`)) fs.remove(`./tmp/await-deploy`);
51
+ UnderpostRootEnv.API.delete('await-deploy');
51
52
  },
52
53
  };
53
54