cyberia 3.2.9 → 3.2.12
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/engine-cyberia.cd.yml +6 -0
- package/.github/workflows/npmpkg.ci.yml +1 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
- package/.github/workflows/release.cd.yml +1 -0
- package/.vscode/extensions.json +9 -9
- package/.vscode/settings.json +20 -4
- package/CHANGELOG.md +213 -1
- package/CLI-HELP.md +92 -23
- package/README.md +190 -348
- package/bin/build.js +24 -8
- package/bin/build.template.js +187 -0
- package/bin/cyberia.js +229 -52
- package/bin/deploy.js +12 -2
- package/bin/index.js +229 -52
- package/bump.config.js +26 -0
- package/conf.js +130 -24
- package/deployment.yaml +4 -2
- package/hardhat/package-lock.json +113 -144
- package/hardhat/package.json +4 -3
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +4 -2
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/deployment/dd-test-development/deployment.yaml +4 -2
- package/manifests/kind-config-dev.yaml +8 -0
- package/manifests/lxd/lxd-admin-profile.yaml +12 -3
- package/manifests/mongodb/pv-pvc.yaml +44 -8
- package/manifests/mongodb/statefulset.yaml +55 -68
- package/manifests/mongodb-4.4/headless-service.yaml +10 -0
- package/manifests/mongodb-4.4/kustomization.yaml +3 -1
- package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
- package/manifests/mongodb-4.4/pv-pvc.yaml +10 -14
- package/manifests/mongodb-4.4/statefulset.yaml +79 -0
- package/manifests/mongodb-4.4/storage-class.yaml +9 -0
- package/manifests/valkey/statefulset.yaml +1 -1
- package/manifests/valkey/valkey-nodeport.yaml +17 -0
- package/package.json +27 -15
- package/scripts/ipxe-setup.sh +52 -49
- package/scripts/k3s-node-setup.sh +81 -46
- package/scripts/lxd-vm-setup.sh +193 -8
- package/scripts/maas-nat-firewalld.sh +145 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +38 -33
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +16 -16
- package/src/api/core/core.router.js +19 -14
- package/src/api/core/core.service.js +5 -5
- package/src/api/crypto/crypto.router.js +18 -12
- package/src/api/crypto/crypto.service.js +3 -3
- package/src/api/cyberia-action/cyberia-action.model.js +1 -1
- package/src/api/cyberia-action/cyberia-action.router.js +22 -18
- package/src/api/cyberia-action/cyberia-action.service.js +5 -5
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +74 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +99 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +98 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +25 -20
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +6 -6
- package/src/api/cyberia-entity/cyberia-entity.router.js +22 -18
- package/src/api/cyberia-entity/cyberia-entity.service.js +5 -5
- package/src/api/cyberia-instance/cyberia-fallback-world.js +79 -4
- package/src/api/cyberia-instance/cyberia-instance.router.js +57 -52
- package/src/api/cyberia-instance/cyberia-instance.service.js +10 -10
- package/src/api/cyberia-instance/cyberia-world-generator.js +3 -3
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +14 -48
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +22 -18
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +5 -5
- package/src/api/cyberia-map/cyberia-map.router.js +35 -30
- package/src/api/cyberia-map/cyberia-map.service.js +7 -7
- package/src/api/cyberia-quest/cyberia-quest.model.js +1 -1
- package/src/api/cyberia-quest/cyberia-quest.router.js +22 -18
- package/src/api/cyberia-quest/cyberia-quest.service.js +5 -5
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +22 -18
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +5 -5
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +451 -0
- package/src/api/default/default.router.js +22 -18
- package/src/api/default/default.service.js +5 -5
- package/src/api/document/document.router.js +28 -23
- package/src/api/document/document.service.js +100 -23
- package/src/api/file/file.router.js +19 -13
- package/src/api/file/file.service.js +9 -7
- package/src/api/instance/instance.router.js +29 -24
- package/src/api/instance/instance.service.js +6 -6
- package/src/api/ipfs/ipfs.router.js +21 -16
- package/src/api/ipfs/ipfs.service.js +8 -8
- package/src/api/object-layer/object-layer.router.js +512 -507
- package/src/api/object-layer/object-layer.service.js +17 -14
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +22 -18
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +5 -5
- package/src/api/test/test.router.js +17 -12
- package/src/api/types.js +24 -0
- package/src/api/user/guest.service.js +5 -4
- package/src/api/user/user.router.js +297 -288
- package/src/api/user/user.service.js +100 -35
- package/src/cli/baremetal.js +132 -101
- package/src/cli/cluster.js +700 -232
- package/src/cli/db.js +59 -60
- package/src/cli/deploy.js +216 -137
- package/src/cli/fs.js +13 -3
- package/src/cli/index.js +80 -15
- package/src/cli/ipfs.js +4 -6
- package/src/cli/kubectl.js +4 -1
- package/src/cli/lxd.js +1099 -223
- package/src/cli/monitor.js +9 -3
- package/src/cli/release.js +334 -140
- package/src/cli/repository.js +68 -23
- package/src/cli/run.js +193 -49
- package/src/cli/secrets.js +11 -2
- package/src/cli/test.js +9 -3
- package/src/client/Default.index.js +9 -3
- package/src/client/components/core/Auth.js +5 -0
- package/src/client/components/core/ClientEvents.js +76 -0
- package/src/client/components/core/EventBus.js +4 -0
- package/src/client/components/core/Modal.js +82 -41
- package/src/client/components/core/PanelForm.js +56 -52
- package/src/client/components/core/Worker.js +162 -363
- package/src/client/components/cyberia/MapEngineCyberia.js +1 -1
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +330 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +50 -410
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +114 -327
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +200 -222
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +203 -185
- package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +2 -2
- package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
- package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +1 -1
- package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
- package/src/client/ssr/views/CyberiaServerMetrics.js +982 -0
- package/src/client/sw/core.sw.js +174 -112
- package/src/db/DataBaseProvider.js +115 -15
- package/src/db/mariadb/MariaDB.js +2 -1
- package/src/db/mongo/MongoBootstrap.js +657 -0
- package/src/db/mongo/MongooseDB.js +129 -21
- package/src/grpc/cyberia/grpc-server.js +25 -57
- package/src/index.js +1 -1
- package/src/runtime/cyberia-client/Dockerfile +24 -3
- package/src/runtime/cyberia-client/Dockerfile.dev +82 -0
- package/src/runtime/cyberia-server/Dockerfile +29 -4
- package/src/runtime/cyberia-server/Dockerfile.dev +71 -0
- package/src/runtime/express/Express.js +2 -2
- package/src/runtime/wp/Wp.js +8 -5
- package/src/server/auth.js +2 -2
- package/src/server/client-build-docs.js +1 -1
- package/src/server/client-build.js +94 -129
- package/src/server/conf.js +86 -83
- package/src/server/process.js +180 -19
- package/src/server/proxy.js +9 -2
- package/src/server/runtime.js +1 -1
- package/src/server/start.js +17 -5
- package/src/server/valkey.js +2 -0
- package/src/ws/IoInterface.js +16 -16
- package/src/ws/core/channels/core.ws.chat.js +11 -11
- package/src/ws/core/channels/core.ws.mailer.js +29 -29
- package/src/ws/core/channels/core.ws.stream.js +19 -19
- package/src/ws/core/core.ws.connection.js +8 -8
- package/src/ws/core/core.ws.server.js +6 -5
- package/src/ws/default/channels/default.ws.main.js +10 -10
- package/src/ws/default/default.ws.connection.js +4 -4
- package/src/ws/default/default.ws.server.js +4 -3
- package/bin/file.js +0 -202
- package/bin/vs.js +0 -74
- package/bin/zed.js +0 -84
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +0 -574
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +0 -467
- package/src/client/ssr/email/DefaultRecoverEmail.js +0 -21
- package/src/client/ssr/email/DefaultVerifyEmail.js +0 -17
- package/src/client/ssr/pages/CyberiaServerMetrics.js +0 -461
- /package/src/client/ssr/{offline → views}/Maintenance.js +0 -0
- /package/src/client/ssr/{offline → views}/NoNetworkConnection.js +0 -0
- /package/src/client/ssr/{pages → views}/Test.js +0 -0
|
@@ -11,41 +11,41 @@ import { IoChannel } from '../../IoInterface.js';
|
|
|
11
11
|
* and broadcast connection/disconnection events to other room members.
|
|
12
12
|
*/
|
|
13
13
|
class CoreWsStreamChannel {
|
|
14
|
-
/** @type {Object.<string, Object.<string, Array>>} Per-socket room/user args keyed by `[
|
|
14
|
+
/** @type {Object.<string, Object.<string, Array>>} Per-socket room/user args keyed by `[hostKeyContext][socketId]`. */
|
|
15
15
|
static #state = {};
|
|
16
16
|
|
|
17
17
|
/** @type {IoChannel} */
|
|
18
18
|
static #io = new IoChannel({
|
|
19
19
|
channel: 'stream',
|
|
20
20
|
stream: true,
|
|
21
|
-
controller(socket, client, payload,
|
|
21
|
+
controller(socket, client, payload, hostKeyContext, args) {
|
|
22
22
|
const [roomId, userId] = args;
|
|
23
23
|
|
|
24
24
|
// Collect existing users in the room before registering the new one
|
|
25
25
|
const existingUsers = [];
|
|
26
|
-
for (const entry of Object.values(CoreWsStreamChannel.#state[
|
|
26
|
+
for (const entry of Object.values(CoreWsStreamChannel.#state[hostKeyContext])) {
|
|
27
27
|
if (entry[0] === roomId && entry[1]) existingUsers.push(entry[1]);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
CoreWsStreamChannel.#state[
|
|
30
|
+
CoreWsStreamChannel.#state[hostKeyContext][socket.id] = args;
|
|
31
31
|
socket.join(roomId);
|
|
32
32
|
socket.to(roomId).emit('stream-user-connected', userId);
|
|
33
33
|
|
|
34
34
|
// Tell the joining user about everyone already in the room
|
|
35
35
|
if (existingUsers.length > 0) socket.emit('stream-existing-users', existingUsers);
|
|
36
36
|
},
|
|
37
|
-
connection(socket, client,
|
|
38
|
-
CoreWsStreamChannel.#state[
|
|
37
|
+
connection(socket, client, hostKeyContext) {
|
|
38
|
+
CoreWsStreamChannel.#state[hostKeyContext][socket.id] = [];
|
|
39
39
|
},
|
|
40
|
-
disconnect(socket, client, reason,
|
|
41
|
-
const entry = CoreWsStreamChannel.#state[
|
|
40
|
+
disconnect(socket, client, reason, hostKeyContext) {
|
|
41
|
+
const entry = CoreWsStreamChannel.#state[hostKeyContext]?.[socket.id];
|
|
42
42
|
if (!entry || entry.length === 0) {
|
|
43
|
-
if (CoreWsStreamChannel.#state[
|
|
43
|
+
if (CoreWsStreamChannel.#state[hostKeyContext]) delete CoreWsStreamChannel.#state[hostKeyContext][socket.id];
|
|
44
44
|
return;
|
|
45
45
|
}
|
|
46
46
|
const [roomId, userId] = entry;
|
|
47
47
|
socket.to(roomId).emit('stream-user-disconnected', userId);
|
|
48
|
-
delete CoreWsStreamChannel.#state[
|
|
48
|
+
delete CoreWsStreamChannel.#state[hostKeyContext][socket.id];
|
|
49
49
|
},
|
|
50
50
|
});
|
|
51
51
|
|
|
@@ -61,29 +61,29 @@ class CoreWsStreamChannel {
|
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
63
|
* Initializes state for a server instance.
|
|
64
|
-
* @param {string}
|
|
64
|
+
* @param {string} hostKeyContext - Unique server context ID (`${host}${path}`).
|
|
65
65
|
*/
|
|
66
|
-
static init(
|
|
67
|
-
this.#state[
|
|
66
|
+
static init(hostKeyContext) {
|
|
67
|
+
this.#state[hostKeyContext] = {};
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
/**
|
|
71
71
|
* Registers a socket connection.
|
|
72
72
|
* @param {import('socket.io').Socket} socket
|
|
73
|
-
* @param {string}
|
|
73
|
+
* @param {string} hostKeyContext
|
|
74
74
|
*/
|
|
75
|
-
static connection(socket,
|
|
76
|
-
return this.#io.connection(socket,
|
|
75
|
+
static connection(socket, hostKeyContext) {
|
|
76
|
+
return this.#io.connection(socket, hostKeyContext);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
80
|
* Handles socket disconnection.
|
|
81
81
|
* @param {import('socket.io').Socket} socket
|
|
82
82
|
* @param {string} reason
|
|
83
|
-
* @param {string}
|
|
83
|
+
* @param {string} hostKeyContext
|
|
84
84
|
*/
|
|
85
|
-
static disconnect(socket, reason,
|
|
86
|
-
return this.#io.disconnect(socket, reason,
|
|
85
|
+
static disconnect(socket, reason, hostKeyContext) {
|
|
86
|
+
return this.#io.disconnect(socket, reason, hostKeyContext);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
@@ -19,21 +19,21 @@ class CoreWsConnectionHandler {
|
|
|
19
19
|
/**
|
|
20
20
|
* Handles a new WebSocket connection.
|
|
21
21
|
* @param {import('socket.io').Socket} socket
|
|
22
|
-
* @param {string}
|
|
22
|
+
* @param {string} hostKeyContext
|
|
23
23
|
*/
|
|
24
|
-
static handle(socket,
|
|
24
|
+
static handle(socket, hostKeyContext) {
|
|
25
25
|
logger.info(`New connection established. Socket ID: ${socket.id}`);
|
|
26
26
|
|
|
27
|
-
CoreWsChatChannel.connection(socket,
|
|
28
|
-
CoreWsMailerChannel.connection(socket,
|
|
29
|
-
CoreWsStreamChannel.connection(socket,
|
|
27
|
+
CoreWsChatChannel.connection(socket, hostKeyContext);
|
|
28
|
+
CoreWsMailerChannel.connection(socket, hostKeyContext);
|
|
29
|
+
CoreWsStreamChannel.connection(socket, hostKeyContext);
|
|
30
30
|
|
|
31
31
|
socket.on('disconnect', (reason) => {
|
|
32
32
|
logger.info(`Connection disconnected. Socket ID: ${socket.id}, reason: ${reason}`);
|
|
33
33
|
|
|
34
|
-
CoreWsChatChannel.disconnect(socket, reason,
|
|
35
|
-
CoreWsMailerChannel.disconnect(socket, reason,
|
|
36
|
-
CoreWsStreamChannel.disconnect(socket, reason,
|
|
34
|
+
CoreWsChatChannel.disconnect(socket, reason, hostKeyContext);
|
|
35
|
+
CoreWsMailerChannel.disconnect(socket, reason, hostKeyContext);
|
|
36
|
+
CoreWsStreamChannel.disconnect(socket, reason, hostKeyContext);
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -10,6 +10,7 @@ import { CoreWsConnectionHandler } from './core.ws.connection.js';
|
|
|
10
10
|
import { CoreWsChatChannel } from './channels/core.ws.chat.js';
|
|
11
11
|
import { CoreWsMailerChannel } from './channels/core.ws.mailer.js';
|
|
12
12
|
import { CoreWsStreamChannel } from './channels/core.ws.stream.js';
|
|
13
|
+
import { resolveHostKeyContext } from '../../server/conf.js';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* @class CoreWsServer
|
|
@@ -27,13 +28,13 @@ class CoreWsServer {
|
|
|
27
28
|
*/
|
|
28
29
|
static create(httpServer, options) {
|
|
29
30
|
const { host, path } = options;
|
|
30
|
-
const
|
|
31
|
+
const hostKeyContext = resolveHostKeyContext({ host, path });
|
|
31
32
|
|
|
32
|
-
CoreWsChatChannel.init(
|
|
33
|
-
CoreWsMailerChannel.init(
|
|
34
|
-
CoreWsStreamChannel.init(
|
|
33
|
+
CoreWsChatChannel.init(hostKeyContext);
|
|
34
|
+
CoreWsMailerChannel.init(hostKeyContext);
|
|
35
|
+
CoreWsStreamChannel.init(hostKeyContext);
|
|
35
36
|
|
|
36
|
-
return IoServer.create(httpServer, options, (socket) => CoreWsConnectionHandler.handle(socket,
|
|
37
|
+
return IoServer.create(httpServer, options, (socket) => CoreWsConnectionHandler.handle(socket, hostKeyContext));
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
|
|
@@ -10,7 +10,7 @@ import { IoChannel } from '../../IoInterface.js';
|
|
|
10
10
|
* @classdesc Provides a no-op main channel for the default WebSocket server.
|
|
11
11
|
*/
|
|
12
12
|
class DefaultWsMainChannel {
|
|
13
|
-
/** @type {Object.<string, Object>} Per-instance state keyed by
|
|
13
|
+
/** @type {Object.<string, Object>} Per-instance state keyed by hostKeyContext. */
|
|
14
14
|
static #state = {};
|
|
15
15
|
|
|
16
16
|
/** @type {IoChannel} */
|
|
@@ -28,29 +28,29 @@ class DefaultWsMainChannel {
|
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* Initializes state for a server instance.
|
|
31
|
-
* @param {string}
|
|
31
|
+
* @param {string} hostKeyContext
|
|
32
32
|
*/
|
|
33
|
-
static init(
|
|
34
|
-
this.#state[
|
|
33
|
+
static init(hostKeyContext) {
|
|
34
|
+
this.#state[hostKeyContext] = {};
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* Registers a socket connection.
|
|
39
39
|
* @param {import('socket.io').Socket} socket
|
|
40
|
-
* @param {string}
|
|
40
|
+
* @param {string} hostKeyContext
|
|
41
41
|
*/
|
|
42
|
-
static connection(socket,
|
|
43
|
-
return this.#io.connection(socket,
|
|
42
|
+
static connection(socket, hostKeyContext) {
|
|
43
|
+
return this.#io.connection(socket, hostKeyContext);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Handles socket disconnection.
|
|
48
48
|
* @param {import('socket.io').Socket} socket
|
|
49
49
|
* @param {string} reason
|
|
50
|
-
* @param {string}
|
|
50
|
+
* @param {string} hostKeyContext
|
|
51
51
|
*/
|
|
52
|
-
static disconnect(socket, reason,
|
|
53
|
-
return this.#io.disconnect(socket, reason,
|
|
52
|
+
static disconnect(socket, reason, hostKeyContext) {
|
|
53
|
+
return this.#io.disconnect(socket, reason, hostKeyContext);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -17,17 +17,17 @@ class DefaultWsConnectionHandler {
|
|
|
17
17
|
/**
|
|
18
18
|
* Handles a new WebSocket connection.
|
|
19
19
|
* @param {import('socket.io').Socket} socket
|
|
20
|
-
* @param {string}
|
|
20
|
+
* @param {string} hostKeyContext
|
|
21
21
|
*/
|
|
22
|
-
static handle(socket,
|
|
22
|
+
static handle(socket, hostKeyContext) {
|
|
23
23
|
logger.info(`DefaultWsConnection ${socket.id}`);
|
|
24
24
|
|
|
25
|
-
DefaultWsMainChannel.connection(socket,
|
|
25
|
+
DefaultWsMainChannel.connection(socket, hostKeyContext);
|
|
26
26
|
|
|
27
27
|
socket.on('disconnect', (reason) => {
|
|
28
28
|
logger.info(`DefaultWsConnection ${socket.id} due to reason: ${reason}`);
|
|
29
29
|
|
|
30
|
-
DefaultWsMainChannel.disconnect(socket, reason,
|
|
30
|
+
DefaultWsMainChannel.disconnect(socket, reason, hostKeyContext);
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { IoServer } from '../IoServer.js';
|
|
9
9
|
import { DefaultWsConnectionHandler } from './default.ws.connection.js';
|
|
10
10
|
import { DefaultWsMainChannel } from './channels/default.ws.main.js';
|
|
11
|
+
import { resolveHostKeyContext } from '../../server/conf.js';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* @class DefaultWsServer
|
|
@@ -24,11 +25,11 @@ class DefaultWsServer {
|
|
|
24
25
|
*/
|
|
25
26
|
static create(httpServer, options) {
|
|
26
27
|
const { host, path } = options;
|
|
27
|
-
const
|
|
28
|
+
const hostKeyContext = resolveHostKeyContext({ host, path });
|
|
28
29
|
|
|
29
|
-
DefaultWsMainChannel.init(
|
|
30
|
+
DefaultWsMainChannel.init(hostKeyContext);
|
|
30
31
|
|
|
31
|
-
return IoServer.create(httpServer, options, (socket) => DefaultWsConnectionHandler.handle(socket,
|
|
32
|
+
return IoServer.create(httpServer, options, (socket) => DefaultWsConnectionHandler.handle(socket, hostKeyContext));
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
|
package/bin/file.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import fs from 'fs-extra';
|
|
2
|
-
|
|
3
|
-
import { loggerFactory } from '../src/server/logger.js';
|
|
4
|
-
import {
|
|
5
|
-
cap,
|
|
6
|
-
getCapVariableName,
|
|
7
|
-
getDirname,
|
|
8
|
-
newInstance,
|
|
9
|
-
uniqueArray,
|
|
10
|
-
} from '../src/client/components/core/CommonJs.js';
|
|
11
|
-
import { shellCd, shellExec } from '../src/server/process.js';
|
|
12
|
-
import walk from 'ignore-walk';
|
|
13
|
-
import { validateTemplatePath } from '../src/server/conf.js';
|
|
14
|
-
import dotenv from 'dotenv';
|
|
15
|
-
|
|
16
|
-
const logger = loggerFactory(import.meta);
|
|
17
|
-
|
|
18
|
-
dotenv.config({ path: `./engine-private/conf/dd-cron/.env.production`, override: true });
|
|
19
|
-
|
|
20
|
-
logger.info('argv', process.argv);
|
|
21
|
-
|
|
22
|
-
let [exe, dir, type] = process.argv;
|
|
23
|
-
let rawPath = process.argv[3].replaceAll(`'`, '');
|
|
24
|
-
let toPath = process.argv[4].replaceAll(`'`, '');
|
|
25
|
-
let path = `${rawPath}`.split('/');
|
|
26
|
-
path.pop();
|
|
27
|
-
path = path.join('/');
|
|
28
|
-
const file = `${rawPath}`.split('/').pop();
|
|
29
|
-
const ext = file.split('.')[1];
|
|
30
|
-
let name = getCapVariableName(file.split('.')[0]);
|
|
31
|
-
let content = '';
|
|
32
|
-
|
|
33
|
-
logger.info('File metadata', { path, file, ext, name });
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
switch (type) {
|
|
37
|
-
case 'update-template':
|
|
38
|
-
case 'copy-src':
|
|
39
|
-
console.log({ rawPath, toPath });
|
|
40
|
-
|
|
41
|
-
let result = await new Promise((resolve) =>
|
|
42
|
-
walk(
|
|
43
|
-
{
|
|
44
|
-
path: rawPath, // root dir to start in. defaults to process.cwd()
|
|
45
|
-
ignoreFiles: [`.gitignore`], // list of filenames. defaults to ['.ignore']
|
|
46
|
-
includeEmpty: false, // true to include empty dirs, default false
|
|
47
|
-
follow: false, // true to follow symlink dirs, default false
|
|
48
|
-
},
|
|
49
|
-
(...args) => resolve(args[1]),
|
|
50
|
-
),
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
result = result.filter((path) => !path.startsWith('.git'));
|
|
54
|
-
|
|
55
|
-
console.log('copy paths', result);
|
|
56
|
-
|
|
57
|
-
if (type === 'update-template') {
|
|
58
|
-
if (!fs.existsSync(toPath))
|
|
59
|
-
shellExec(`cd .. && underpost clone ${process.env.GITHUB_USERNAME}/pwa-microservices-template`);
|
|
60
|
-
else {
|
|
61
|
-
shellExec(`cd ${toPath} && git reset && git checkout . && git clean -f -d`);
|
|
62
|
-
shellExec(`underpost pull ${toPath} ${process.env.GITHUB_USERNAME}/pwa-microservices-template`);
|
|
63
|
-
shellExec(`sudo rm -rf ${toPath}/engine-private`);
|
|
64
|
-
shellExec(`sudo rm -rf ${toPath}/logs`);
|
|
65
|
-
}
|
|
66
|
-
} else {
|
|
67
|
-
fs.removeSync(toPath);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
for (const copyPath of result) {
|
|
71
|
-
if (copyPath === 'NaN') continue;
|
|
72
|
-
const folder = getDirname(`${toPath}/${copyPath}`);
|
|
73
|
-
const absolutePath = `${rawPath}/${copyPath}`;
|
|
74
|
-
|
|
75
|
-
if (type === 'update-template' && !validateTemplatePath(absolutePath)) continue;
|
|
76
|
-
|
|
77
|
-
if (!fs.existsSync(folder)) fs.mkdirSync(folder, { recursive: true });
|
|
78
|
-
|
|
79
|
-
logger.info('build', `${toPath}/${copyPath}`);
|
|
80
|
-
|
|
81
|
-
fs.copyFileSync(absolutePath, `${toPath}/${copyPath}`);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (type === 'update-template') {
|
|
85
|
-
fs.copySync(`./.vscode`, `../pwa-microservices-template/.vscode`);
|
|
86
|
-
// fs.copySync(`./.github`, `../pwa-microservices-template/.github`);
|
|
87
|
-
fs.copySync(`./src/client/public/default`, `../pwa-microservices-template/src/client/public/default`);
|
|
88
|
-
|
|
89
|
-
for (const checkoutPath of ['README.md', 'package.json'])
|
|
90
|
-
shellExec(`cd ../pwa-microservices-template && git checkout ${checkoutPath}`);
|
|
91
|
-
|
|
92
|
-
for (const deletePath of [
|
|
93
|
-
'./.github',
|
|
94
|
-
'./manifests/deployment/dd-lampp-development',
|
|
95
|
-
'./manifests/deployment/dd-cyberia-development',
|
|
96
|
-
'./manifests/deployment/dd-core-development',
|
|
97
|
-
'./manifests/deployment/dd-template-development',
|
|
98
|
-
'./src/server/object-layer.js',
|
|
99
|
-
'./src/server/atlas-sprite-sheet-generator.js',
|
|
100
|
-
'./src/server/shape-generator.js',
|
|
101
|
-
'./src/server/semantic-layer-generator.js',
|
|
102
|
-
'./src/server/semantic-layer-generator-floor.js',
|
|
103
|
-
'./src/server/semantic-layer-generator-skin.js',
|
|
104
|
-
'./src/server/semantic-layer-generator-resource.js',
|
|
105
|
-
'./src/server/besu-genesis-generator.js',
|
|
106
|
-
'./src/grpc/cyberia',
|
|
107
|
-
'./src/runtime/cyberia-server',
|
|
108
|
-
'./src/runtime/cyberia-client',
|
|
109
|
-
'./test/shape-generator.test.js',
|
|
110
|
-
'./src/client/public/cyberia-docs',
|
|
111
|
-
'bin/cyberia.js',
|
|
112
|
-
]) {
|
|
113
|
-
if (fs.existsSync(deletePath)) fs.removeSync('../pwa-microservices-template/' + deletePath);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
fs.mkdirSync(`../pwa-microservices-template/.github/workflows`, {
|
|
117
|
-
recursive: true,
|
|
118
|
-
});
|
|
119
|
-
for (const _path of [
|
|
120
|
-
`./.github/workflows/pwa-microservices-template-page.cd.yml`,
|
|
121
|
-
`./.github/workflows/pwa-microservices-template-test.ci.yml`,
|
|
122
|
-
`./.github/workflows/npmpkg.ci.yml`,
|
|
123
|
-
`./.github/workflows/ghpkg.ci.yml`,
|
|
124
|
-
`./.github/workflows/gitlab.ci.yml`,
|
|
125
|
-
`./.github/workflows/publish.ci.yml`,
|
|
126
|
-
`./.github/workflows/release.cd.yml`,
|
|
127
|
-
`./src/client/services/user/guest.service.js`,
|
|
128
|
-
'./src/api/user/guest.service.js',
|
|
129
|
-
'./src/ws/IoInterface.js',
|
|
130
|
-
'./src/ws/IoServer.js',
|
|
131
|
-
])
|
|
132
|
-
fs.copyFileSync(_path, `../pwa-microservices-template/${_path}`);
|
|
133
|
-
|
|
134
|
-
const originPackageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
|
|
135
|
-
const templatePackageJson = JSON.parse(fs.readFileSync('../pwa-microservices-template/package.json', 'utf8'));
|
|
136
|
-
|
|
137
|
-
const name = templatePackageJson.name;
|
|
138
|
-
const description = templatePackageJson.description;
|
|
139
|
-
const dev = templatePackageJson.scripts.dev;
|
|
140
|
-
const build = templatePackageJson.scripts.build;
|
|
141
|
-
|
|
142
|
-
templatePackageJson.dependencies = originPackageJson.dependencies;
|
|
143
|
-
templatePackageJson.devDependencies = originPackageJson.devDependencies;
|
|
144
|
-
templatePackageJson.version = originPackageJson.version;
|
|
145
|
-
templatePackageJson.scripts = originPackageJson.scripts;
|
|
146
|
-
templatePackageJson.overrides = originPackageJson.overrides;
|
|
147
|
-
templatePackageJson.name = name;
|
|
148
|
-
templatePackageJson.description = description;
|
|
149
|
-
// templatePackageJson.scripts.dev = dev;
|
|
150
|
-
// templatePackageJson.scripts.build = build;
|
|
151
|
-
templatePackageJson.keywords = uniqueArray(
|
|
152
|
-
['pwa', 'microservices', 'template', 'builder'].concat(templatePackageJson.keywords),
|
|
153
|
-
);
|
|
154
|
-
delete templatePackageJson.scripts['update:template'];
|
|
155
|
-
fs.writeFileSync(
|
|
156
|
-
'../pwa-microservices-template/package.json',
|
|
157
|
-
JSON.stringify(templatePackageJson, null, 4),
|
|
158
|
-
'utf8',
|
|
159
|
-
);
|
|
160
|
-
const originPackageLockJson = JSON.parse(fs.readFileSync('./package-lock.json', 'utf8'));
|
|
161
|
-
|
|
162
|
-
const templatePackageLockJson = JSON.parse(
|
|
163
|
-
fs.readFileSync('../pwa-microservices-template/package-lock.json', 'utf8'),
|
|
164
|
-
);
|
|
165
|
-
|
|
166
|
-
const originBasePackageLock = newInstance(templatePackageLockJson.packages['']);
|
|
167
|
-
templatePackageLockJson.name = name;
|
|
168
|
-
templatePackageLockJson.version = originPackageLockJson.version;
|
|
169
|
-
templatePackageLockJson.packages = originPackageLockJson.packages;
|
|
170
|
-
templatePackageLockJson.packages[''].name = name;
|
|
171
|
-
templatePackageLockJson.packages[''].version = originPackageLockJson.version;
|
|
172
|
-
templatePackageLockJson.packages[''].hasInstallScript = originBasePackageLock.hasInstallScript;
|
|
173
|
-
templatePackageLockJson.packages[''].license = originBasePackageLock.license;
|
|
174
|
-
fs.writeFileSync(
|
|
175
|
-
'../pwa-microservices-template/package-lock.json',
|
|
176
|
-
JSON.stringify(templatePackageLockJson, null, 4),
|
|
177
|
-
'utf8',
|
|
178
|
-
);
|
|
179
|
-
// Regenerate package-lock.json to match the modified package.json
|
|
180
|
-
// shellExec(`cd ../pwa-microservices-template && npm install --package-lock-only --ignore-scripts`);
|
|
181
|
-
fs.writeFileSync(
|
|
182
|
-
'../pwa-microservices-template/README.md',
|
|
183
|
-
fs
|
|
184
|
-
.readFileSync('./README.md', 'utf8')
|
|
185
|
-
.replace('<!-- template-title -->', '#### Base template for pwa/api-rest projects.'),
|
|
186
|
-
'utf8',
|
|
187
|
-
);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
break;
|
|
191
|
-
case 'create':
|
|
192
|
-
const buildPath = `${path}/${name}${ext ? `.${ext}` : ''}`;
|
|
193
|
-
logger.info('Build path', buildPath);
|
|
194
|
-
fs.mkdirSync(path, { recursive: true });
|
|
195
|
-
fs.writeFileSync(buildPath, content, 'utf8');
|
|
196
|
-
default:
|
|
197
|
-
logger.error('not found operator');
|
|
198
|
-
break;
|
|
199
|
-
}
|
|
200
|
-
} catch (error) {
|
|
201
|
-
logger.error(error, error.stack);
|
|
202
|
-
}
|
package/bin/vs.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import fs from 'fs-extra';
|
|
2
|
-
import { shellExec } from '../src/server/process.js';
|
|
3
|
-
import { loggerFactory } from '../src/server/logger.js';
|
|
4
|
-
|
|
5
|
-
const logger = loggerFactory(import.meta);
|
|
6
|
-
|
|
7
|
-
const vsCodeRootPath = '/root/.vscode-root';
|
|
8
|
-
const vsConfigRootPath = '/root/.config/Code';
|
|
9
|
-
|
|
10
|
-
const vsProgram = 'code';
|
|
11
|
-
|
|
12
|
-
switch (process.argv[2]) {
|
|
13
|
-
case 'info': {
|
|
14
|
-
logger.info('Formatted', 'Ctrl shift I');
|
|
15
|
-
logger.info('Command', 'Ctrl shift P');
|
|
16
|
-
logger.info('Search', 'Ctrl shift F');
|
|
17
|
-
logger.info('Debug', 'Ctrl shift D');
|
|
18
|
-
logger.info('New File', 'Ctrl N');
|
|
19
|
-
logger.info('Change tab', 'Ctrl Tab');
|
|
20
|
-
logger.info('Fold All', 'Ctrl K + Ctrl 0');
|
|
21
|
-
logger.info('Unfold All', 'Ctrl K + Ctrl J');
|
|
22
|
-
logger.info('Close All tabs', 'Ctrl K + W');
|
|
23
|
-
logger.info('Go to line number', 'Ctrl G');
|
|
24
|
-
logger.info('Change current project folder', 'Ctrl K + Ctrl O');
|
|
25
|
-
logger.info('Open new vs windows', 'Ctrl Shift N');
|
|
26
|
-
logger.info('Close current vs windows', 'Ctrl Shift W');
|
|
27
|
-
logger.info('Preview md', 'Ctrl shift V');
|
|
28
|
-
logger.info('Open git changes', 'Ctrl G + G');
|
|
29
|
-
logger.warn('Terminal shortcut configure with command pallette', 'Ctl shift T');
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
case 'import':
|
|
33
|
-
{
|
|
34
|
-
const extensions = JSON.parse(fs.readFileSync(`./.vscode/extensions.json`, 'utf8'));
|
|
35
|
-
extensions.recommendations.map((extension) => {
|
|
36
|
-
if (extension)
|
|
37
|
-
shellExec(
|
|
38
|
-
`sudo ${vsProgram} --user-data-dir="${vsCodeRootPath}" --no-sandbox --install-extension ${extension}`,
|
|
39
|
-
);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
break;
|
|
43
|
-
case 'export':
|
|
44
|
-
{
|
|
45
|
-
shellExec(
|
|
46
|
-
`sudo ${vsProgram} --user-data-dir="${vsCodeRootPath}" --no-sandbox --list-extensions > vs-extensions.txt`,
|
|
47
|
-
);
|
|
48
|
-
fs.writeFileSync(
|
|
49
|
-
`./.vscode/extensions.json`,
|
|
50
|
-
JSON.stringify(
|
|
51
|
-
{
|
|
52
|
-
recommendations: fs
|
|
53
|
-
.readFileSync(`./vs-extensions.txt`, 'utf8')
|
|
54
|
-
.split(`\n`)
|
|
55
|
-
.filter((ext) => ext.trim()),
|
|
56
|
-
},
|
|
57
|
-
null,
|
|
58
|
-
4,
|
|
59
|
-
),
|
|
60
|
-
'utf8',
|
|
61
|
-
);
|
|
62
|
-
fs.removeSync(`./vs-extensions.txt`);
|
|
63
|
-
}
|
|
64
|
-
break;
|
|
65
|
-
|
|
66
|
-
case 'clean': {
|
|
67
|
-
shellExec(`sudo rm -rf ${vsCodeRootPath}/*`);
|
|
68
|
-
shellExec(`sudo rm -rf ${vsConfigRootPath}`);
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
default:
|
|
72
|
-
shellExec(`sudo ${vsProgram} ${process.argv[2]} --user-data-dir="${vsCodeRootPath}" --no-sandbox`);
|
|
73
|
-
break;
|
|
74
|
-
}
|
package/bin/zed.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { shellExec } from '../src/server/process.js';
|
|
2
|
-
import fs from 'fs-extra';
|
|
3
|
-
import { loggerFactory } from '../src/server/logger.js';
|
|
4
|
-
import { getUnderpostRootPath } from '../src/server/conf.js';
|
|
5
|
-
|
|
6
|
-
const logger = loggerFactory(import.meta);
|
|
7
|
-
const underpostRoot = getUnderpostRootPath();
|
|
8
|
-
|
|
9
|
-
const settings = {
|
|
10
|
-
ui_font_size: 16,
|
|
11
|
-
buffer_font_size: 15,
|
|
12
|
-
theme: {
|
|
13
|
-
mode: 'system',
|
|
14
|
-
light: 'One Dark',
|
|
15
|
-
dark: 'One Dark',
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
features: {
|
|
19
|
-
edit_prediction_provider: 'copilot',
|
|
20
|
-
copilot: true,
|
|
21
|
-
},
|
|
22
|
-
|
|
23
|
-
show_edit_predictions: true,
|
|
24
|
-
|
|
25
|
-
edit_predictions: {
|
|
26
|
-
mode: 'eager',
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
const keyMap = [
|
|
31
|
-
{
|
|
32
|
-
context: 'Editor',
|
|
33
|
-
bindings: {
|
|
34
|
-
'ctrl-c': 'editor::Copy',
|
|
35
|
-
'ctrl-x': 'editor::Cut',
|
|
36
|
-
'ctrl-v': 'editor::Paste',
|
|
37
|
-
'ctrl-shift-c': 'editor::CopyAndTrim',
|
|
38
|
-
'ctrl-shift-v': 'editor::Paste',
|
|
39
|
-
'cmd-c': 'editor::Copy',
|
|
40
|
-
'cmd-x': 'editor::Cut',
|
|
41
|
-
'cmd-v': 'editor::Paste',
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
context: 'Terminal',
|
|
46
|
-
bindings: {
|
|
47
|
-
'ctrl-shift-c': 'terminal::Copy',
|
|
48
|
-
'ctrl-shift-v': 'terminal::Paste',
|
|
49
|
-
'cmd-shift-c': 'terminal::Copy',
|
|
50
|
-
'cmd-shift-v': 'terminal::Paste',
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
context: 'Editor && edit_prediction',
|
|
55
|
-
bindings: {
|
|
56
|
-
tab: 'editor::AcceptEditPrediction',
|
|
57
|
-
'alt-tab': 'editor::AcceptEditPrediction',
|
|
58
|
-
'alt-l': null,
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
context: 'Editor && edit_prediction_conflict',
|
|
63
|
-
bindings: {
|
|
64
|
-
'alt-l': 'editor::AcceptEditPrediction',
|
|
65
|
-
tab: 'editor::ComposeCompletion',
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
];
|
|
69
|
-
|
|
70
|
-
if (!fs.existsSync('/root/.config/zed')) fs.mkdirSync('/root/.config/zed', { recursive: true });
|
|
71
|
-
fs.writeFileSync(`/root/.config/zed/settings.json`, JSON.stringify(settings, null, 4), 'utf8');
|
|
72
|
-
fs.writeFileSync(`/root/.config/zed/keymap.json`, JSON.stringify(keyMap, null, 4), 'utf8');
|
|
73
|
-
|
|
74
|
-
shellExec(`ZED_ALLOW_ROOT=true zed ${process.argv[2] ? process.argv[2] : '.'}`);
|
|
75
|
-
|
|
76
|
-
logger.info('Connect copilot device', 'https://github.com/login/device');
|
|
77
|
-
logger.info('Comments', 'Ctrl shift 7');
|
|
78
|
-
logger.info('Unfold', 'Ctrl K + Ctrl J');
|
|
79
|
-
logger.info('Fold', 'Ctrl K + Ctrl 0');
|
|
80
|
-
logger.info('Command Palette', 'Ctrl Shift P');
|
|
81
|
-
logger.info('Open File', 'Ctrl P');
|
|
82
|
-
logger.info('Find in Files', 'Ctrl Shift F');
|
|
83
|
-
logger.info('Go to Line', 'Ctrl G');
|
|
84
|
-
logger.info('New file', 'Ctrl N');
|