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.
Files changed (169) hide show
  1. package/.github/workflows/engine-cyberia.cd.yml +6 -0
  2. package/.github/workflows/npmpkg.ci.yml +1 -0
  3. package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
  4. package/.github/workflows/release.cd.yml +1 -0
  5. package/.vscode/extensions.json +9 -9
  6. package/.vscode/settings.json +20 -4
  7. package/CHANGELOG.md +213 -1
  8. package/CLI-HELP.md +92 -23
  9. package/README.md +190 -348
  10. package/bin/build.js +24 -8
  11. package/bin/build.template.js +187 -0
  12. package/bin/cyberia.js +229 -52
  13. package/bin/deploy.js +12 -2
  14. package/bin/index.js +229 -52
  15. package/bump.config.js +26 -0
  16. package/conf.js +130 -24
  17. package/deployment.yaml +4 -2
  18. package/hardhat/package-lock.json +113 -144
  19. package/hardhat/package.json +4 -3
  20. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
  21. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
  22. package/manifests/deployment/dd-cyberia-development/deployment.yaml +4 -2
  23. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  24. package/manifests/deployment/dd-test-development/deployment.yaml +4 -2
  25. package/manifests/kind-config-dev.yaml +8 -0
  26. package/manifests/lxd/lxd-admin-profile.yaml +12 -3
  27. package/manifests/mongodb/pv-pvc.yaml +44 -8
  28. package/manifests/mongodb/statefulset.yaml +55 -68
  29. package/manifests/mongodb-4.4/headless-service.yaml +10 -0
  30. package/manifests/mongodb-4.4/kustomization.yaml +3 -1
  31. package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
  32. package/manifests/mongodb-4.4/pv-pvc.yaml +10 -14
  33. package/manifests/mongodb-4.4/statefulset.yaml +79 -0
  34. package/manifests/mongodb-4.4/storage-class.yaml +9 -0
  35. package/manifests/valkey/statefulset.yaml +1 -1
  36. package/manifests/valkey/valkey-nodeport.yaml +17 -0
  37. package/package.json +27 -15
  38. package/scripts/ipxe-setup.sh +52 -49
  39. package/scripts/k3s-node-setup.sh +81 -46
  40. package/scripts/lxd-vm-setup.sh +193 -8
  41. package/scripts/maas-nat-firewalld.sh +145 -0
  42. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +38 -33
  43. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +16 -16
  44. package/src/api/core/core.router.js +19 -14
  45. package/src/api/core/core.service.js +5 -5
  46. package/src/api/crypto/crypto.router.js +18 -12
  47. package/src/api/crypto/crypto.service.js +3 -3
  48. package/src/api/cyberia-action/cyberia-action.model.js +1 -1
  49. package/src/api/cyberia-action/cyberia-action.router.js +22 -18
  50. package/src/api/cyberia-action/cyberia-action.service.js +5 -5
  51. package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +74 -0
  52. package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +99 -0
  53. package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +98 -0
  54. package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
  55. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +25 -20
  56. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +6 -6
  57. package/src/api/cyberia-entity/cyberia-entity.router.js +22 -18
  58. package/src/api/cyberia-entity/cyberia-entity.service.js +5 -5
  59. package/src/api/cyberia-instance/cyberia-fallback-world.js +79 -4
  60. package/src/api/cyberia-instance/cyberia-instance.router.js +57 -52
  61. package/src/api/cyberia-instance/cyberia-instance.service.js +10 -10
  62. package/src/api/cyberia-instance/cyberia-world-generator.js +3 -3
  63. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +14 -48
  64. package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +22 -18
  65. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +5 -5
  66. package/src/api/cyberia-map/cyberia-map.router.js +35 -30
  67. package/src/api/cyberia-map/cyberia-map.service.js +7 -7
  68. package/src/api/cyberia-quest/cyberia-quest.model.js +1 -1
  69. package/src/api/cyberia-quest/cyberia-quest.router.js +22 -18
  70. package/src/api/cyberia-quest/cyberia-quest.service.js +5 -5
  71. package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +22 -18
  72. package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +5 -5
  73. package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +451 -0
  74. package/src/api/default/default.router.js +22 -18
  75. package/src/api/default/default.service.js +5 -5
  76. package/src/api/document/document.router.js +28 -23
  77. package/src/api/document/document.service.js +100 -23
  78. package/src/api/file/file.router.js +19 -13
  79. package/src/api/file/file.service.js +9 -7
  80. package/src/api/instance/instance.router.js +29 -24
  81. package/src/api/instance/instance.service.js +6 -6
  82. package/src/api/ipfs/ipfs.router.js +21 -16
  83. package/src/api/ipfs/ipfs.service.js +8 -8
  84. package/src/api/object-layer/object-layer.router.js +512 -507
  85. package/src/api/object-layer/object-layer.service.js +17 -14
  86. package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +22 -18
  87. package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +5 -5
  88. package/src/api/test/test.router.js +17 -12
  89. package/src/api/types.js +24 -0
  90. package/src/api/user/guest.service.js +5 -4
  91. package/src/api/user/user.router.js +297 -288
  92. package/src/api/user/user.service.js +100 -35
  93. package/src/cli/baremetal.js +132 -101
  94. package/src/cli/cluster.js +700 -232
  95. package/src/cli/db.js +59 -60
  96. package/src/cli/deploy.js +216 -137
  97. package/src/cli/fs.js +13 -3
  98. package/src/cli/index.js +80 -15
  99. package/src/cli/ipfs.js +4 -6
  100. package/src/cli/kubectl.js +4 -1
  101. package/src/cli/lxd.js +1099 -223
  102. package/src/cli/monitor.js +9 -3
  103. package/src/cli/release.js +334 -140
  104. package/src/cli/repository.js +68 -23
  105. package/src/cli/run.js +193 -49
  106. package/src/cli/secrets.js +11 -2
  107. package/src/cli/test.js +9 -3
  108. package/src/client/Default.index.js +9 -3
  109. package/src/client/components/core/Auth.js +5 -0
  110. package/src/client/components/core/ClientEvents.js +76 -0
  111. package/src/client/components/core/EventBus.js +4 -0
  112. package/src/client/components/core/Modal.js +82 -41
  113. package/src/client/components/core/PanelForm.js +56 -52
  114. package/src/client/components/core/Worker.js +162 -363
  115. package/src/client/components/cyberia/MapEngineCyberia.js +1 -1
  116. package/src/client/components/cyberia/SharedDefaultsCyberia.js +330 -0
  117. package/src/client/public/cyberia-docs/ARCHITECTURE.md +50 -410
  118. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +114 -327
  119. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +200 -222
  120. package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +203 -185
  121. package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
  122. package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +2 -2
  123. package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
  124. package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
  125. package/src/client/public/cyberia-docs/WHITE-PAPER.md +1 -1
  126. package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
  127. package/src/client/ssr/views/CyberiaServerMetrics.js +982 -0
  128. package/src/client/sw/core.sw.js +174 -112
  129. package/src/db/DataBaseProvider.js +115 -15
  130. package/src/db/mariadb/MariaDB.js +2 -1
  131. package/src/db/mongo/MongoBootstrap.js +657 -0
  132. package/src/db/mongo/MongooseDB.js +129 -21
  133. package/src/grpc/cyberia/grpc-server.js +25 -57
  134. package/src/index.js +1 -1
  135. package/src/runtime/cyberia-client/Dockerfile +24 -3
  136. package/src/runtime/cyberia-client/Dockerfile.dev +82 -0
  137. package/src/runtime/cyberia-server/Dockerfile +29 -4
  138. package/src/runtime/cyberia-server/Dockerfile.dev +71 -0
  139. package/src/runtime/express/Express.js +2 -2
  140. package/src/runtime/wp/Wp.js +8 -5
  141. package/src/server/auth.js +2 -2
  142. package/src/server/client-build-docs.js +1 -1
  143. package/src/server/client-build.js +94 -129
  144. package/src/server/conf.js +86 -83
  145. package/src/server/process.js +180 -19
  146. package/src/server/proxy.js +9 -2
  147. package/src/server/runtime.js +1 -1
  148. package/src/server/start.js +17 -5
  149. package/src/server/valkey.js +2 -0
  150. package/src/ws/IoInterface.js +16 -16
  151. package/src/ws/core/channels/core.ws.chat.js +11 -11
  152. package/src/ws/core/channels/core.ws.mailer.js +29 -29
  153. package/src/ws/core/channels/core.ws.stream.js +19 -19
  154. package/src/ws/core/core.ws.connection.js +8 -8
  155. package/src/ws/core/core.ws.server.js +6 -5
  156. package/src/ws/default/channels/default.ws.main.js +10 -10
  157. package/src/ws/default/default.ws.connection.js +4 -4
  158. package/src/ws/default/default.ws.server.js +4 -3
  159. package/bin/file.js +0 -202
  160. package/bin/vs.js +0 -74
  161. package/bin/zed.js +0 -84
  162. package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +0 -574
  163. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +0 -467
  164. package/src/client/ssr/email/DefaultRecoverEmail.js +0 -21
  165. package/src/client/ssr/email/DefaultVerifyEmail.js +0 -17
  166. package/src/client/ssr/pages/CyberiaServerMetrics.js +0 -461
  167. /package/src/client/ssr/{offline → views}/Maintenance.js +0 -0
  168. /package/src/client/ssr/{offline → views}/NoNetworkConnection.js +0 -0
  169. /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 `[wsManagementId][socketId]`. */
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, wsManagementId, args) {
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[wsManagementId])) {
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[wsManagementId][socket.id] = args;
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, wsManagementId) {
38
- CoreWsStreamChannel.#state[wsManagementId][socket.id] = [];
37
+ connection(socket, client, hostKeyContext) {
38
+ CoreWsStreamChannel.#state[hostKeyContext][socket.id] = [];
39
39
  },
40
- disconnect(socket, client, reason, wsManagementId) {
41
- const entry = CoreWsStreamChannel.#state[wsManagementId]?.[socket.id];
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[wsManagementId]) delete CoreWsStreamChannel.#state[wsManagementId][socket.id];
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[wsManagementId][socket.id];
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} wsManagementId - Unique server context ID (`${host}${path}`).
64
+ * @param {string} hostKeyContext - Unique server context ID (`${host}${path}`).
65
65
  */
66
- static init(wsManagementId) {
67
- this.#state[wsManagementId] = {};
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} wsManagementId
73
+ * @param {string} hostKeyContext
74
74
  */
75
- static connection(socket, wsManagementId) {
76
- return this.#io.connection(socket, wsManagementId);
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} wsManagementId
83
+ * @param {string} hostKeyContext
84
84
  */
85
- static disconnect(socket, reason, wsManagementId) {
86
- return this.#io.disconnect(socket, reason, wsManagementId);
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} wsManagementId
22
+ * @param {string} hostKeyContext
23
23
  */
24
- static handle(socket, wsManagementId) {
24
+ static handle(socket, hostKeyContext) {
25
25
  logger.info(`New connection established. Socket ID: ${socket.id}`);
26
26
 
27
- CoreWsChatChannel.connection(socket, wsManagementId);
28
- CoreWsMailerChannel.connection(socket, wsManagementId);
29
- CoreWsStreamChannel.connection(socket, wsManagementId);
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, wsManagementId);
35
- CoreWsMailerChannel.disconnect(socket, reason, wsManagementId);
36
- CoreWsStreamChannel.disconnect(socket, reason, wsManagementId);
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 wsManagementId = `${host}${path}`;
31
+ const hostKeyContext = resolveHostKeyContext({ host, path });
31
32
 
32
- CoreWsChatChannel.init(wsManagementId);
33
- CoreWsMailerChannel.init(wsManagementId);
34
- CoreWsStreamChannel.init(wsManagementId);
33
+ CoreWsChatChannel.init(hostKeyContext);
34
+ CoreWsMailerChannel.init(hostKeyContext);
35
+ CoreWsStreamChannel.init(hostKeyContext);
35
36
 
36
- return IoServer.create(httpServer, options, (socket) => CoreWsConnectionHandler.handle(socket, wsManagementId));
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 wsManagementId. */
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} wsManagementId
31
+ * @param {string} hostKeyContext
32
32
  */
33
- static init(wsManagementId) {
34
- this.#state[wsManagementId] = {};
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} wsManagementId
40
+ * @param {string} hostKeyContext
41
41
  */
42
- static connection(socket, wsManagementId) {
43
- return this.#io.connection(socket, wsManagementId);
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} wsManagementId
50
+ * @param {string} hostKeyContext
51
51
  */
52
- static disconnect(socket, reason, wsManagementId) {
53
- return this.#io.disconnect(socket, reason, wsManagementId);
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} wsManagementId
20
+ * @param {string} hostKeyContext
21
21
  */
22
- static handle(socket, wsManagementId) {
22
+ static handle(socket, hostKeyContext) {
23
23
  logger.info(`DefaultWsConnection ${socket.id}`);
24
24
 
25
- DefaultWsMainChannel.connection(socket, wsManagementId);
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, wsManagementId);
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 wsManagementId = `${host}${path}`;
28
+ const hostKeyContext = resolveHostKeyContext({ host, path });
28
29
 
29
- DefaultWsMainChannel.init(wsManagementId);
30
+ DefaultWsMainChannel.init(hostKeyContext);
30
31
 
31
- return IoServer.create(httpServer, options, (socket) => DefaultWsConnectionHandler.handle(socket, wsManagementId));
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');