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.
- package/.github/workflows/release.cd.yml +1 -2
- package/CHANGELOG.md +268 -1
- package/CLI-HELP.md +26 -13
- package/Dockerfile +0 -4
- package/README.md +3 -3
- package/bin/build.js +13 -3
- package/bin/deploy.js +570 -1
- package/bin/file.js +5 -0
- package/conf.js +11 -2
- package/jsconfig.json +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +2 -3
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +2 -3
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -6
- package/manifests/deployment/dd-test-development/deployment.yaml +136 -66
- package/manifests/deployment/dd-test-development/proxy.yaml +41 -5
- package/package.json +20 -11
- package/src/api/core/core.controller.js +10 -10
- package/src/api/core/core.service.js +10 -10
- package/src/api/default/default.controller.js +10 -10
- package/src/api/default/default.service.js +10 -10
- package/src/api/document/document.controller.js +12 -12
- package/src/api/document/document.model.js +10 -16
- package/src/api/file/file.controller.js +8 -8
- package/src/api/file/file.model.js +10 -10
- package/src/api/file/file.service.js +36 -36
- package/src/api/test/test.controller.js +8 -8
- package/src/api/test/test.service.js +8 -8
- package/src/api/user/guest.service.js +99 -0
- package/src/api/user/user.controller.js +6 -6
- package/src/api/user/user.model.js +8 -13
- package/src/api/user/user.service.js +3 -20
- package/src/cli/deploy.js +33 -30
- package/src/cli/fs.js +62 -5
- package/src/cli/image.js +43 -1
- package/src/cli/index.js +5 -1
- package/src/cli/release.js +58 -2
- package/src/cli/repository.js +35 -3
- package/src/cli/run.js +304 -38
- package/src/cli/ssh.js +1 -1
- package/src/cli/static.js +43 -115
- package/src/client/Default.index.js +21 -33
- package/src/client/components/core/404.js +4 -4
- package/src/client/components/core/500.js +4 -4
- package/src/client/components/core/Account.js +73 -60
- package/src/client/components/core/AgGrid.js +23 -33
- package/src/client/components/core/Alert.js +12 -13
- package/src/client/components/core/AppStore.js +1 -1
- package/src/client/components/core/Auth.js +20 -32
- package/src/client/components/core/Badge.js +7 -13
- package/src/client/components/core/BtnIcon.js +15 -17
- package/src/client/components/core/CalendarCore.js +42 -63
- package/src/client/components/core/Chat.js +13 -15
- package/src/client/components/core/ClientEvents.js +87 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/Content.js +17 -14
- package/src/client/components/core/Css.js +15 -71
- package/src/client/components/core/CssCore.js +12 -16
- package/src/client/components/core/D3Chart.js +4 -4
- package/src/client/components/core/Docs.js +60 -59
- package/src/client/components/core/DropDown.js +69 -91
- package/src/client/components/core/EventBus.js +92 -0
- package/src/client/components/core/EventsUI.js +14 -17
- package/src/client/components/core/FileExplorer.js +102 -234
- package/src/client/components/core/FullScreen.js +47 -75
- package/src/client/components/core/Input.js +24 -69
- package/src/client/components/core/Keyboard.js +25 -18
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +25 -31
- package/src/client/components/core/LogIn.js +41 -41
- package/src/client/components/core/LogOut.js +23 -14
- package/src/client/components/core/Modal.js +397 -176
- package/src/client/components/core/NotificationManager.js +14 -18
- package/src/client/components/core/Panel.js +54 -50
- package/src/client/components/core/PanelForm.js +25 -125
- package/src/client/components/core/Polyhedron.js +110 -214
- package/src/client/components/core/PublicProfile.js +39 -32
- package/src/client/components/core/Recover.js +52 -48
- package/src/client/components/core/Responsive.js +88 -32
- package/src/client/components/core/RichText.js +9 -18
- package/src/client/components/core/Router.js +24 -3
- package/src/client/components/core/SearchBox.js +37 -37
- package/src/client/components/core/SignUp.js +39 -30
- package/src/client/components/core/SocketIo.js +31 -2
- package/src/client/components/core/SocketIoHandler.js +6 -6
- package/src/client/components/core/ToggleSwitch.js +8 -20
- package/src/client/components/core/ToolTip.js +5 -17
- package/src/client/components/core/Translate.js +56 -59
- package/src/client/components/core/Validator.js +26 -16
- package/src/client/components/core/Wallet.js +15 -26
- package/src/client/components/core/Worker.js +140 -25
- package/src/client/components/core/windowGetDimensions.js +7 -7
- package/src/client/components/default/{MenuDefault.js → AppShellDefault.js} +87 -87
- package/src/client/components/default/CssDefault.js +12 -12
- package/src/client/components/default/LogInDefault.js +6 -4
- package/src/client/components/default/LogOutDefault.js +6 -4
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +4 -4
- package/src/client/components/default/SignUpDefault.js +6 -4
- package/src/client/components/default/TranslateDefault.js +3 -3
- package/src/client/services/core/core.service.js +17 -49
- package/src/client/services/default/default.management.js +139 -242
- package/src/client/services/default/default.service.js +10 -16
- package/src/client/services/document/document.service.js +14 -19
- package/src/client/services/file/file.service.js +8 -13
- package/src/client/services/test/test.service.js +8 -13
- package/src/client/services/user/guest.service.js +79 -0
- package/src/client/services/user/user.management.js +5 -5
- package/src/client/services/user/user.service.js +14 -20
- package/src/client/ssr/body/404.js +3 -3
- package/src/client/ssr/body/500.js +3 -3
- package/src/client/ssr/body/CacheControl.js +5 -2
- package/src/client/ssr/body/DefaultSplashScreen.js +19 -12
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +19 -20
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +15 -16
- package/src/client/ssr/offline/Maintenance.js +12 -11
- package/src/client/ssr/offline/NoNetworkConnection.js +3 -3
- package/src/client/ssr/pages/Test.js +2 -2
- package/src/client/sw/core.sw.js +212 -0
- package/src/index.js +1 -1
- package/src/runtime/express/Dockerfile +4 -4
- package/src/runtime/lampp/Dockerfile +8 -7
- package/src/runtime/wp/Dockerfile +11 -17
- package/src/server/backup.js +1 -2
- package/src/server/client-build-docs.js +45 -46
- package/src/server/client-build.js +334 -60
- package/src/server/client-formatted.js +47 -16
- package/src/server/conf.js +29 -13
- package/src/server/cron.js +6 -8
- package/src/server/dns.js +2 -1
- package/src/server/ipfs-client.js +232 -91
- package/src/server/process.js +13 -27
- package/src/server/start.js +6 -3
- package/src/server/valkey.js +134 -235
- package/tsconfig.docs.json +15 -0
- package/typedoc.json +20 -0
- package/jsdoc.json +0 -52
- package/src/client/components/core/ColorPalette.js +0 -5267
- package/src/client/components/core/JoyStick.js +0 -80
- package/src/client/components/default/RoutesDefault.js +0 -49
- package/src/client/sw/default.sw.js +0 -127
- package/src/client/sw/template.sw.js +0 -84
package/src/server/conf.js
CHANGED
|
@@ -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
|
|
166
|
-
if (
|
|
167
|
-
const
|
|
168
|
-
if (
|
|
169
|
-
const
|
|
170
|
-
|
|
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}/
|
|
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('
|
|
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/') && !
|
|
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
|
};
|
package/src/server/cron.js
CHANGED
|
@@ -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}
|
|
69
|
+
const commands = [`cd ${enginePath}`]; // `node bin run secret`
|
|
70
70
|
if (cmd) commands.push(cmd);
|
|
71
|
-
commands.push(`${cronBin} cron ${
|
|
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
|
|
284
|
-
dev: options.dev
|
|
285
|
-
kubeadm:
|
|
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