underpost 3.2.4 → 3.2.8

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 (141) hide show
  1. package/.github/workflows/release.cd.yml +1 -2
  2. package/CHANGELOG.md +268 -1
  3. package/CLI-HELP.md +26 -13
  4. package/Dockerfile +0 -4
  5. package/README.md +3 -3
  6. package/bin/build.js +13 -3
  7. package/bin/deploy.js +570 -1
  8. package/bin/file.js +5 -0
  9. package/conf.js +11 -2
  10. package/jsconfig.json +1 -1
  11. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -3
  12. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -3
  13. package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
  14. package/manifests/deployment/dd-test-development/deployment.yaml +136 -66
  15. package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
  16. package/package.json +20 -11
  17. package/src/api/core/core.controller.js +10 -10
  18. package/src/api/core/core.service.js +10 -10
  19. package/src/api/default/default.controller.js +10 -10
  20. package/src/api/default/default.service.js +10 -10
  21. package/src/api/document/document.controller.js +12 -12
  22. package/src/api/document/document.model.js +10 -16
  23. package/src/api/file/file.controller.js +8 -8
  24. package/src/api/file/file.model.js +10 -10
  25. package/src/api/file/file.service.js +36 -36
  26. package/src/api/test/test.controller.js +8 -8
  27. package/src/api/test/test.service.js +8 -8
  28. package/src/api/user/guest.service.js +99 -0
  29. package/src/api/user/user.controller.js +6 -6
  30. package/src/api/user/user.model.js +8 -13
  31. package/src/api/user/user.service.js +3 -20
  32. package/src/cli/deploy.js +33 -30
  33. package/src/cli/fs.js +62 -5
  34. package/src/cli/image.js +43 -1
  35. package/src/cli/index.js +5 -1
  36. package/src/cli/release.js +58 -2
  37. package/src/cli/repository.js +35 -3
  38. package/src/cli/run.js +304 -38
  39. package/src/cli/ssh.js +1 -1
  40. package/src/cli/static.js +43 -115
  41. package/src/client/Default.index.js +21 -33
  42. package/src/client/components/core/404.js +4 -4
  43. package/src/client/components/core/500.js +4 -4
  44. package/src/client/components/core/Account.js +73 -60
  45. package/src/client/components/core/AgGrid.js +23 -33
  46. package/src/client/components/core/Alert.js +12 -13
  47. package/src/client/components/core/AppStore.js +1 -1
  48. package/src/client/components/core/Auth.js +20 -32
  49. package/src/client/components/core/Badge.js +7 -13
  50. package/src/client/components/core/BtnIcon.js +15 -17
  51. package/src/client/components/core/CalendarCore.js +42 -63
  52. package/src/client/components/core/Chat.js +13 -15
  53. package/src/client/components/core/ClientEvents.js +87 -0
  54. package/src/client/components/core/ColorPaletteElement.js +309 -0
  55. package/src/client/components/core/Content.js +17 -14
  56. package/src/client/components/core/Css.js +15 -71
  57. package/src/client/components/core/CssCore.js +12 -16
  58. package/src/client/components/core/D3Chart.js +4 -4
  59. package/src/client/components/core/Docs.js +60 -59
  60. package/src/client/components/core/DropDown.js +69 -91
  61. package/src/client/components/core/EventBus.js +92 -0
  62. package/src/client/components/core/EventsUI.js +14 -17
  63. package/src/client/components/core/FileExplorer.js +102 -234
  64. package/src/client/components/core/FullScreen.js +47 -75
  65. package/src/client/components/core/Input.js +24 -69
  66. package/src/client/components/core/Keyboard.js +25 -18
  67. package/src/client/components/core/KeyboardAvoidance.js +145 -0
  68. package/src/client/components/core/LoadingAnimation.js +25 -31
  69. package/src/client/components/core/LogIn.js +41 -41
  70. package/src/client/components/core/LogOut.js +23 -14
  71. package/src/client/components/core/Modal.js +397 -176
  72. package/src/client/components/core/NotificationManager.js +14 -18
  73. package/src/client/components/core/Panel.js +54 -50
  74. package/src/client/components/core/PanelForm.js +25 -125
  75. package/src/client/components/core/Polyhedron.js +110 -214
  76. package/src/client/components/core/PublicProfile.js +39 -32
  77. package/src/client/components/core/Recover.js +52 -48
  78. package/src/client/components/core/Responsive.js +88 -32
  79. package/src/client/components/core/RichText.js +9 -18
  80. package/src/client/components/core/Router.js +24 -3
  81. package/src/client/components/core/SearchBox.js +37 -37
  82. package/src/client/components/core/SignUp.js +39 -30
  83. package/src/client/components/core/SocketIo.js +31 -2
  84. package/src/client/components/core/SocketIoHandler.js +6 -6
  85. package/src/client/components/core/ToggleSwitch.js +8 -20
  86. package/src/client/components/core/ToolTip.js +5 -17
  87. package/src/client/components/core/Translate.js +56 -59
  88. package/src/client/components/core/Validator.js +26 -16
  89. package/src/client/components/core/Wallet.js +15 -26
  90. package/src/client/components/core/Worker.js +140 -25
  91. package/src/client/components/core/windowGetDimensions.js +7 -7
  92. package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
  93. package/src/client/components/default/CssDefault.js +12 -12
  94. package/src/client/components/default/LogInDefault.js +6 -4
  95. package/src/client/components/default/LogOutDefault.js +6 -4
  96. package/src/client/components/default/RouterDefault.js +47 -0
  97. package/src/client/components/default/SettingsDefault.js +4 -4
  98. package/src/client/components/default/SignUpDefault.js +6 -4
  99. package/src/client/components/default/TranslateDefault.js +3 -3
  100. package/src/client/services/core/core.service.js +17 -49
  101. package/src/client/services/default/default.management.js +139 -242
  102. package/src/client/services/default/default.service.js +10 -16
  103. package/src/client/services/document/document.service.js +14 -19
  104. package/src/client/services/file/file.service.js +8 -13
  105. package/src/client/services/test/test.service.js +8 -13
  106. package/src/client/services/user/guest.service.js +79 -0
  107. package/src/client/services/user/user.management.js +5 -5
  108. package/src/client/services/user/user.service.js +14 -20
  109. package/src/client/ssr/body/404.js +3 -3
  110. package/src/client/ssr/body/500.js +3 -3
  111. package/src/client/ssr/body/CacheControl.js +5 -2
  112. package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
  113. package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
  114. package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
  115. package/src/client/ssr/offline/Maintenance.js +12 -11
  116. package/src/client/ssr/offline/NoNetworkConnection.js +3 -3
  117. package/src/client/ssr/pages/Test.js +2 -2
  118. package/src/client/sw/core.sw.js +212 -0
  119. package/src/index.js +1 -1
  120. package/src/runtime/express/Dockerfile +4 -4
  121. package/src/runtime/lampp/Dockerfile +8 -7
  122. package/src/runtime/wp/Dockerfile +11 -17
  123. package/src/server/backup.js +1 -2
  124. package/src/server/client-build-docs.js +45 -46
  125. package/src/server/client-build.js +334 -60
  126. package/src/server/client-formatted.js +47 -16
  127. package/src/server/conf.js +29 -13
  128. package/src/server/cron.js +6 -8
  129. package/src/server/dns.js +2 -1
  130. package/src/server/ipfs-client.js +232 -91
  131. package/src/server/process.js +13 -27
  132. package/src/server/start.js +6 -3
  133. package/src/server/valkey.js +134 -235
  134. package/tsconfig.docs.json +15 -0
  135. package/typedoc.json +20 -0
  136. package/jsdoc.json +0 -52
  137. package/src/client/components/core/ColorPalette.js +0 -5267
  138. package/src/client/components/core/JoyStick.js +0 -80
  139. package/src/client/components/default/RoutesDefault.js +0 -49
  140. package/src/client/sw/default.sw.js +0 -127
  141. package/src/client/sw/template.sw.js +0 -84
@@ -148,6 +148,23 @@ const getConfFolder = (deployId) => {
148
148
  : `./engine-private/conf/${deployId}`;
149
149
  };
150
150
 
151
+ /**
152
+ * Reads `engine-private/deploy/dd.cron` and returns the deploy-id string,
153
+ * or `null` if the file does not exist or is empty.
154
+ *
155
+ * @method cronDeployIdResolve
156
+ * @returns {string|null} The deploy-id from dd.cron, or null.
157
+ * @memberof ServerConfBuilder
158
+ */
159
+ const cronDeployIdResolve = () => {
160
+ const cronDeployFile = './engine-private/deploy/dd.cron';
161
+ if (fs.existsSync(cronDeployFile)) {
162
+ const id = fs.readFileSync(cronDeployFile, 'utf8').trim();
163
+ return id || null;
164
+ }
165
+ return null;
166
+ };
167
+
151
168
  /**
152
169
  * Loads the deployment-specific `.env` file referenced by `engine-private/deploy/dd.cron`
153
170
  * into `process.env`. Uses `NODE_ENV` to select the environment variant
@@ -162,15 +179,12 @@ function loadCronDeployEnv() {
162
179
  const envName = process.env.NODE_ENV || 'production';
163
180
 
164
181
  // 1) Load dd.cron env (takes full precedence)
165
- const cronDeployFile = './engine-private/deploy/dd.cron';
166
- if (fs.existsSync(cronDeployFile)) {
167
- const cronDeployId = fs.readFileSync(cronDeployFile, 'utf8').trim();
168
- if (cronDeployId) {
169
- const cronEnvPath = `./engine-private/conf/${cronDeployId}/.env.${envName}`;
170
- if (fs.existsSync(cronEnvPath)) {
171
- const cronEnv = dotenv.parse(fs.readFileSync(cronEnvPath, 'utf8'));
172
- process.env = { ...process.env, ...cronEnv };
173
- }
182
+ const cronDeployId = cronDeployIdResolve();
183
+ if (cronDeployId) {
184
+ const cronEnvPath = `./engine-private/conf/${cronDeployId}/.env.${envName}`;
185
+ if (fs.existsSync(cronEnvPath)) {
186
+ const cronEnv = dotenv.parse(fs.readFileSync(cronEnvPath, 'utf8'));
187
+ process.env = { ...process.env, ...cronEnv };
174
188
  }
175
189
  }
176
190
 
@@ -443,7 +457,7 @@ const loadConf = (deployId = DEFAULT_DEPLOY_ID, subConf) => {
443
457
  fs.removeSync(`${path}/.env.production`);
444
458
  fs.removeSync(`${path}/.env.development`);
445
459
  fs.removeSync(`${path}/.env.test`);
446
- 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`);
447
461
  shellExec(`git checkout ${path}/package.json`);
448
462
  shellExec(`git checkout ${path}/package-lock.json`);
449
463
  return;
@@ -1142,6 +1156,7 @@ const getDataDeploy = async (
1142
1156
 
1143
1157
  let buildDataDeploy = [];
1144
1158
  for (const deployObj of dataDeploy) {
1159
+ const isReplicaDeploy = fs.existsSync(`./engine-private/replica/${deployObj.deployId}`);
1145
1160
  const serverConf = loadReplicas(
1146
1161
  deployObj.deployId,
1147
1162
  loadConfServerJson(`./engine-private/conf/${deployObj.deployId}/conf.server.json`),
@@ -1149,7 +1164,7 @@ const getDataDeploy = async (
1149
1164
  let replicaDataDeploy = [];
1150
1165
  for (const host of Object.keys(serverConf))
1151
1166
  for (const path of Object.keys(serverConf[host])) {
1152
- if (serverConf[host][path].replicas && serverConf[host][path].singleReplica) {
1167
+ if (!isReplicaDeploy && serverConf[host][path].replicas && serverConf[host][path].singleReplica) {
1153
1168
  if (options && options.buildSingleReplica)
1154
1169
  await Underpost.repo.client(deployObj.deployId, '', host, path, {
1155
1170
  singleReplica: true,
@@ -1197,7 +1212,7 @@ const validateTemplatePath = (absolutePath = '') => {
1197
1212
  return false;
1198
1213
  }
1199
1214
  if (absolutePath.match('conf.dd-') && absolutePath.match('.js')) return false;
1200
- if (absolutePath.match('jsdoc.dd-') && absolutePath.match('.json')) return false;
1215
+ if (absolutePath.match('typedoc.dd-') && absolutePath.match('.json')) return false;
1201
1216
  if (
1202
1217
  absolutePath.match('src/client/services/') &&
1203
1218
  !clients.find((p) => absolutePath.match(`src/client/services/${p}/`))
@@ -1213,7 +1228,7 @@ const validateTemplatePath = (absolutePath = '') => {
1213
1228
  ) {
1214
1229
  return false;
1215
1230
  }
1216
- 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')) {
1217
1232
  return false;
1218
1233
  }
1219
1234
  if (
@@ -1776,4 +1791,5 @@ export {
1776
1791
  readConfJson,
1777
1792
  DEFAULT_DEPLOY_ID,
1778
1793
  loadCronDeployEnv,
1794
+ cronDeployIdResolve,
1779
1795
  };
@@ -64,11 +64,11 @@ const cronJobYamlFactory = ({
64
64
  .replace(/^-|-$/g, '')
65
65
  .substring(0, 52);
66
66
 
67
- const cronBin = dev ? 'node bin' : 'underpost';
67
+ const cronBin = 'node bin'; // dev ? 'node bin' : 'underpost';
68
68
  const flags = `${git ? '--git ' : ''}${dev ? '--dev ' : ''}${dryRun ? '--dry-run ' : ''}${k3s ? '--k3s ' : ''}${kind ? '--kind ' : ''}${kubeadm ? '--kubeadm ' : ''}`;
69
- const commands = [`cd ${enginePath}`, `node bin run secret`];
69
+ const commands = [`cd ${enginePath}`]; // `node bin run secret`
70
70
  if (cmd) commands.push(cmd);
71
- commands.push(`${cronBin} cron ${flags}${deployList} ${jobList}`);
71
+ commands.push(`${cronBin} cron ${deployList} ${jobList} ${flags}`);
72
72
  const fullCommand = commands.join(' &&\n ');
73
73
 
74
74
  return `apiVersion: batch/v1
@@ -272,17 +272,15 @@ class UnderpostCron {
272
272
  logger.warn(`package.json not found for deploy-id: ${deployId}`, { path: packageJsonPath });
273
273
  }
274
274
 
275
- // Generate and apply cron job manifests for this deploy-id
276
- const hasExplicitCluster = options.k3s || options.kind || options.kubeadm;
277
275
  await Underpost.cron.generateK8sCronJobs({
278
276
  deployId,
279
277
  namespace: options.namespace,
280
278
  image: options.image,
281
279
  apply: options.apply,
282
280
  createJobNow: options.createJobNow,
283
- git: options.git !== undefined ? options.git : true,
284
- dev: options.dev !== undefined ? options.dev : true,
285
- kubeadm: hasExplicitCluster ? !!options.kubeadm : true,
281
+ git: !!options.git,
282
+ dev: !!options.dev,
283
+ kubeadm: !!options.kubeadm,
286
284
  cmd: options.cmd || `node bin env ${deployId} production`,
287
285
  k3s: !!options.k3s,
288
286
  kind: !!options.kind,
package/src/server/dns.js CHANGED
@@ -265,7 +265,8 @@ class Dns {
265
265
  * @returns {Promise<void>}
266
266
  */
267
267
  static async callback(deployList) {
268
- loadCronDeployEnv();
268
+ // loadCronDeployEnv();
269
+
269
270
  const isOnline = await Dns.isInternetConnection();
270
271
 
271
272
  if (!isOnline) return;