@underpostnet/cyberia 3.3.77 → 3.4.0

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 (105) hide show
  1. package/.env.example +1 -0
  2. package/.github/workflows/coverall.cyberia.ci.yml +12 -3
  3. package/.github/workflows/cyberia-client.cd.yml +2 -1
  4. package/.github/workflows/cyberia-server.cd.yml +2 -1
  5. package/.github/workflows/docker-image.cyberia-client.ci.yml +1 -1
  6. package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +1 -1
  7. package/.github/workflows/docker-image.cyberia-server.ci.yml +1 -1
  8. package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +1 -1
  9. package/.github/workflows/docker-image.engine-cyberia.ci.yml +1 -1
  10. package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +1 -1
  11. package/.github/workflows/engine-cyberia.ci.yml +6 -0
  12. package/.github/workflows/ghpkg.ci.yml +19 -2
  13. package/.github/workflows/gitlab.ci.yml +8 -6
  14. package/.github/workflows/hardhat.ci.yml +4 -1
  15. package/.github/workflows/npmpkg.ci.yml +9 -5
  16. package/.github/workflows/publish.ci.yml +21 -12
  17. package/.github/workflows/publish.cyberia.ci.yml +25 -14
  18. package/.github/workflows/pwa-microservices-template-page.cd.yml +4 -2
  19. package/CHANGELOG.md +75 -140
  20. package/CLI-HELP.md +28 -1
  21. package/Dockerfile +1 -1
  22. package/Dockerfile.dev +1 -1
  23. package/Dockerfile.test +1 -1
  24. package/README.md +1 -1
  25. package/bin/build.js +2 -4
  26. package/bin/cyberia.js +4 -4
  27. package/bin/index.js +4 -4
  28. package/compose.env +1 -0
  29. package/conf.js +1 -1042
  30. package/deploy/cyberia-client/deploy.sh +13 -11
  31. package/deploy/cyberia-server/deploy.sh +13 -11
  32. package/deploy/dd-cyberia/sync-deploy.sh +7 -28
  33. package/deploy/lib/config.sh +1 -1
  34. package/deploy/lib/github-actions-logging.sh +3 -2
  35. package/deploy/pwa-microservices-template/deploy.sh +7 -1
  36. package/deployment.yaml +1 -1
  37. package/docker-compose.yml +7 -7
  38. package/docs/coverage/cyberia/api/cyberia-instance/cyberia-fallback-capture.js.html +1 -1
  39. package/docs/coverage/cyberia/api/cyberia-instance/index.html +1 -1
  40. package/docs/coverage/cyberia/api/cyberia-server-defaults/cyberia-server-defaults.js.html +1 -1
  41. package/docs/coverage/cyberia/api/cyberia-server-defaults/index.html +1 -1
  42. package/docs/coverage/cyberia/api/object-layer/index.html +1 -1
  43. package/docs/coverage/cyberia/api/object-layer/object-layer.model.js.html +1 -1
  44. package/docs/coverage/cyberia/index.html +1 -1
  45. package/docs/coverage/cyberia/projects/cyberia/atlas-sprite-sheet-generator.js.html +1 -1
  46. package/docs/coverage/cyberia/projects/cyberia/index.html +1 -1
  47. package/docs/coverage/cyberia/projects/cyberia/instance-backup.js.html +1 -1
  48. package/docs/coverage/cyberia/projects/cyberia/instance-data.js.html +1 -1
  49. package/docs/coverage/cyberia/projects/cyberia/shape-generator.js.html +1 -1
  50. package/docs/coverage/cyberia/projects/cyberia/stat-balance.js.html +1 -1
  51. package/hardhat/package-lock.json +6 -6
  52. package/hardhat/package.json +2 -2
  53. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
  54. package/manifests/cronjobs/dd-cron/dd-cron-vultr.yaml +1 -1
  55. package/manifests/deployment/dd-cyberia-development/deployment.yaml +1 -1
  56. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  57. package/package.json +19 -17
  58. package/scripts/test-monitor.sh +1 -1
  59. package/src/api/file/file.router.js +7 -1
  60. package/src/cli/baremetal.js +1 -1
  61. package/src/cli/docker-compose.js +1 -1
  62. package/src/cli/index.js +36 -0
  63. package/src/cli/kubectl.js +4 -3
  64. package/src/cli/release.js +2 -0
  65. package/src/cli/repository.js +7 -2
  66. package/src/cli/run.js +1 -1
  67. package/src/cli/secrets.js +393 -200
  68. package/src/cli/socketsecurity.js +260 -0
  69. package/src/client/components/core/CssCore.js +3 -0
  70. package/src/client/components/core/Modal.js +160 -36
  71. package/src/client/components/core/SearchBox.js +0 -1
  72. package/src/client/components/underpost/AppShellUnderpost.js +13 -1
  73. package/src/client/components/underpost/CssUnderpost.js +15 -2
  74. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +8 -0
  75. package/src/client/public/cyberia-docs/CYBERIA.md +1 -1
  76. package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +54 -56
  77. package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
  78. package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +30 -29
  79. package/src/client/public/cyberia-docs/WHITE-PAPER.md +1 -1
  80. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +54 -25
  81. package/src/client/ssr/head/Css.js +12 -10
  82. package/src/client/ssr/views/Cyberia404.js +6 -10
  83. package/src/client/ssr/views/NotFound.js +75 -0
  84. package/src/client-builder/client-bundle.js +2 -2
  85. package/src/index.js +13 -1
  86. package/src/runtime/engine-cyberia/Dockerfile +1 -1
  87. package/src/runtime/engine-cyberia/Dockerfile.dev +1 -1
  88. package/src/runtime/engine-cyberia/Dockerfile.test +1 -1
  89. package/src/runtime/engine-cyberia/compose.env +1 -0
  90. package/src/runtime/engine-cyberia/docker-compose.yml +7 -7
  91. package/src/server/build/catalog.js +1 -0
  92. package/src/server/build/execution.js +19 -5
  93. package/src/server/build/package.js +166 -3
  94. package/src/server/build/testing.js +2 -1
  95. package/src/server/runtime/conf.js +21 -0
  96. package/src/server/runtime/config-scope.js +2 -0
  97. package/src/server/runtime/process.js +4 -3
  98. package/src/server/security/socketsecurity.js +1735 -0
  99. package/test/integration/infra/1-security/config-scope.test.js +3 -0
  100. package/test/integration/infra/1-security/socketsecurity.test.js +1041 -0
  101. package/test/integration/infra/1-security/sops-secret-store.test.js +201 -71
  102. package/test/unit/build-template.test.js +24 -0
  103. package/test/unit/deploy-log-table.test.js +38 -0
  104. package/test/unit/execution-profiles.test.js +1 -0
  105. package/test/unit/package.test.js +118 -0
@@ -8,6 +8,8 @@ source "$SCRIPT_DIR/../lib/host.sh"
8
8
  DEPLOY_ID=dd-cyberia
9
9
  INSTANCE_ID=mmo-client
10
10
  TARGET_NODE="${TARGET_NODE:-$WORKER_NODE}"
11
+ ENGINE_SRC_REPO="${ENGINE_SRC_REPO:-underpostnet/engine-test-cyberia}"
12
+ ENGINE_SRC_PRIVATE_REPO="${ENGINE_SRC_PRIVATE_REPO:-underpostnet/engine-private}"
11
13
 
12
14
  main() {
13
15
  deploy_start "Starting remote deploy"
@@ -15,24 +17,24 @@ main() {
15
17
  prepare_host "$ENGINE_ROOT"
16
18
 
17
19
  deploy_step "Build $DEPLOY_ID configuration" \
18
- sudo -n -- /bin/bash -lc \
19
- "cd $ENGINE_ROOT && node bin/build $DEPLOY_ID --conf"
20
+ sudo -n -- /bin/bash -lc \
21
+ "cd $ENGINE_ROOT && node bin/build $DEPLOY_ID --conf"
20
22
 
21
23
  deploy_step "Wait for target node readiness" \
22
- sudo -n -- /bin/bash -lc \
23
- "cd $ENGINE_ROOT && kubectl wait --for=condition=Ready node/${TARGET_NODE} --timeout=2m"
24
+ sudo -n -- /bin/bash -lc \
25
+ "cd $ENGINE_ROOT && kubectl wait --for=condition=Ready node/${TARGET_NODE} --timeout=2m"
24
26
 
25
27
  deploy_step "Wait for ingress rollout" \
26
- sudo -n -- /bin/bash -lc \
27
- "cd $ENGINE_ROOT && kubectl rollout status deployment/underpost-ingress -n default --timeout=5m"
28
+ sudo -n -- /bin/bash -lc \
29
+ "cd $ENGINE_ROOT && kubectl rollout status deployment/underpost-ingress -n default --timeout=5m"
28
30
 
29
31
  deploy_step "Wait for gateway rollout" \
30
- sudo -n -- /bin/bash -lc \
31
- "cd $ENGINE_ROOT && kubectl rollout status deployment/underpost-gateway -n default --timeout=5m"
32
+ sudo -n -- /bin/bash -lc \
33
+ "cd $ENGINE_ROOT && kubectl rollout status deployment/underpost-gateway -n default --timeout=5m"
32
34
 
33
35
  deploy_step "Deploy $DEPLOY_ID $INSTANCE_ID instance" \
34
- sudo -n -- /bin/bash -lc \
35
- "cd $ENGINE_ROOT && node bin run instance \
36
+ sudo -n -- /bin/bash -lc \
37
+ "cd $ENGINE_ROOT && node bin run instance \
36
38
  --kubeadm \
37
39
  ${TARGET_NODE:+--node-name ${TARGET_NODE}} \
38
40
  --gateway-api \
@@ -40,7 +42,7 @@ main() {
40
42
  --ingress-node ${INGRESS_NODE} \
41
43
  --ssh-key-path ${DEPLOY_SSH_KEY_PATH} \
42
44
  --deploy-id $DEPLOY_ID \
43
- --instance-id $INSTANCE_ID"
45
+ --instance-id $INSTANCE_ID"
44
46
  }
45
47
 
46
48
  main "$@"
@@ -8,6 +8,8 @@ source "$SCRIPT_DIR/../lib/host.sh"
8
8
  DEPLOY_ID=dd-cyberia
9
9
  INSTANCE_ID=mmo-server
10
10
  TARGET_NODE="${TARGET_NODE:-$WORKER_NODE}"
11
+ ENGINE_SRC_REPO="${ENGINE_SRC_REPO:-underpostnet/engine-test-cyberia}"
12
+ ENGINE_SRC_PRIVATE_REPO="${ENGINE_SRC_PRIVATE_REPO:-underpostnet/engine-private}"
11
13
 
12
14
  main() {
13
15
  deploy_start "Starting remote deploy"
@@ -15,24 +17,24 @@ main() {
15
17
  prepare_host "$ENGINE_ROOT"
16
18
 
17
19
  deploy_step "Build $DEPLOY_ID configuration" \
18
- sudo -n -- /bin/bash -lc \
19
- "cd $ENGINE_ROOT && node bin/build $DEPLOY_ID --conf"
20
+ sudo -n -- /bin/bash -lc \
21
+ "cd $ENGINE_ROOT && node bin/build $DEPLOY_ID --conf"
20
22
 
21
23
  deploy_step "Wait for target node readiness" \
22
- sudo -n -- /bin/bash -lc \
23
- "cd $ENGINE_ROOT && kubectl wait --for=condition=Ready node/${TARGET_NODE} --timeout=2m"
24
+ sudo -n -- /bin/bash -lc \
25
+ "cd $ENGINE_ROOT && kubectl wait --for=condition=Ready node/${TARGET_NODE} --timeout=2m"
24
26
 
25
27
  deploy_step "Wait for ingress rollout" \
26
- sudo -n -- /bin/bash -lc \
27
- "cd $ENGINE_ROOT && kubectl rollout status deployment/underpost-ingress -n default --timeout=5m"
28
+ sudo -n -- /bin/bash -lc \
29
+ "cd $ENGINE_ROOT && kubectl rollout status deployment/underpost-ingress -n default --timeout=5m"
28
30
 
29
31
  deploy_step "Wait for gateway rollout" \
30
- sudo -n -- /bin/bash -lc \
31
- "cd $ENGINE_ROOT && kubectl rollout status deployment/underpost-gateway -n default --timeout=5m"
32
+ sudo -n -- /bin/bash -lc \
33
+ "cd $ENGINE_ROOT && kubectl rollout status deployment/underpost-gateway -n default --timeout=5m"
32
34
 
33
35
  deploy_step "Deploy $DEPLOY_ID $INSTANCE_ID instance" \
34
- sudo -n -- /bin/bash -lc \
35
- "cd $ENGINE_ROOT && node bin run instance \
36
+ sudo -n -- /bin/bash -lc \
37
+ "cd $ENGINE_ROOT && node bin run instance \
36
38
  --kubeadm \
37
39
  ${TARGET_NODE:+--node-name ${TARGET_NODE}} \
38
40
  --gateway-api \
@@ -40,7 +42,7 @@ main() {
40
42
  --ingress-node ${INGRESS_NODE} \
41
43
  --ssh-key-path ${DEPLOY_SSH_KEY_PATH} \
42
44
  --deploy-id $DEPLOY_ID \
43
- --instance-id $INSTANCE_ID"
45
+ --instance-id $INSTANCE_ID"
44
46
  }
45
47
 
46
48
  main "$@"
@@ -23,13 +23,9 @@ UNDERPOST_ASSETS=src/client/public/underpost
23
23
  # from source, which is the behaviour this script had before bundle mode existed.
24
24
  BUNDLE_MODE="${BUNDLE_MODE:-1}"
25
25
  BUNDLE_SPLIT="${BUNDLE_SPLIT:-8}"
26
- # Where push-bundle records the uploaded keys, relative to a conf checkout root.
27
- BUNDLE_MANIFEST_PATH="conf/$DEPLOY_ID/storage.bundle.json"
28
26
  # `mv` into a directory that already exists nests the checkout inside it rather than replacing
29
27
  # it, and the pod would then load whatever conf the image carried.
30
28
  POD_SRC_PRIVATE_DIR="${POD_SRC_PRIVATE_REPO##*/}"
31
- # Sibling of the engine checkout, so the publish work tree is never part of it.
32
- POD_PRIVATE_CHECKOUT="../$POD_SRC_PRIVATE_DIR"
33
29
 
34
30
  main() {
35
31
  deploy_start "Starting remote sync and deploy"
@@ -102,38 +98,21 @@ main() {
102
98
 
103
99
  # Follows the manifest step: the client renders from the conf.ssr.json that build-manifest
104
100
  # writes, so a bundle pushed before it would ship the previous SSR views. The uploaded keys
105
- # are recorded in engine-private/conf/$DEPLOY_ID/storage.bundle.json, which the pod reads
106
- # back through its own conf repository.
101
+ # are recorded in engine-private/conf/$DEPLOY_ID/storage.bundle.json.
107
102
  if [ "$BUNDLE_MODE" = "1" ]; then
108
103
  deploy_step "Push $DEPLOY_ID client bundle" \
109
104
  sudo -n -- /bin/bash -lc \
110
105
  "cd $ENGINE_ROOT && node bin run push-bundle \
111
106
  --deploy-id $DEPLOY_ID \
112
107
  --split $BUNDLE_SPLIT"
113
-
114
- # push-bundle records the keys in the host's own conf checkout, but the pod replaces
115
- # ./engine-private with a clone of its conf repository — so the manifest is published
116
- # there too, or the pod reads an empty one and restores nothing. Cloning from the engine
117
- # root keeps `underpost clone` reading this checkout's credentials, and the work tree is
118
- # then moved out so it is never part of the engine checkout.
119
- deploy_step "Stage $DEPLOY_ID bundle manifest" \
120
- sudo -n -- /bin/bash -lc \
121
- "cd $ENGINE_ROOT && rm -rf $POD_PRIVATE_CHECKOUT \
122
- && node bin clone $POD_SRC_PRIVATE_REPO \
123
- && mv ./$POD_SRC_PRIVATE_DIR $POD_PRIVATE_CHECKOUT \
124
- && mkdir -p $POD_PRIVATE_CHECKOUT/conf/$DEPLOY_ID \
125
- && cp ./engine-private/$BUNDLE_MANIFEST_PATH $POD_PRIVATE_CHECKOUT/$BUNDLE_MANIFEST_PATH"
126
-
127
- # A rerun that uploads the same keys leaves the manifest byte-identical, and committing
128
- # nothing fails the step.
129
- if [ "$(has_changes $POD_PRIVATE_CHECKOUT "$ENGINE_ROOT")" = "1" ]; then
130
- deploy_step "Publish $DEPLOY_ID bundle manifest" \
131
- sudo -n -- /bin/bash -lc \
132
- "cd $ENGINE_ROOT && node bin cmt $POD_PRIVATE_CHECKOUT feat 'Update $DEPLOY_ID bundle manifest' \
133
- && node bin push $POD_PRIVATE_CHECKOUT $POD_SRC_PRIVATE_REPO"
134
- fi
135
108
  fi
136
109
 
110
+ # The pod replaces ./engine-private with a clone of its conf repository, so this publishes
111
+ # the deploy's conf there — the bundle manifest included — before the pod starts.
112
+ deploy_step "Build $DEPLOY_ID configuration" \
113
+ sudo -n -- /bin/bash -lc \
114
+ "cd $ENGINE_ROOT && node bin/build $DEPLOY_ID --conf"
115
+
137
116
  # Two commands, one bootstrap: `pod_bootstrap_cmd` replaces the image's engine with this
138
117
  # deploy's source and repoints the global bin at it — without that, the first step needing
139
118
  # the current CLI answered `unknown command 'app'`. `start --build` then owns the rest
@@ -26,4 +26,4 @@ DEPLOY_SSH_KEY_PATH="${DEPLOY_SSH_KEY_PATH:-/home/dd/tmp/897as9dxhaskd9}"
26
26
 
27
27
  # The published image the WordPress deploys run. Pinned rather than derived from the checkout's
28
28
  # version: a tag is only deployable once the release workflow has published it.
29
- DEPLOY_WP_IMAGE="${DEPLOY_WP_IMAGE:-underpost/wp:v3.3.77}"
29
+ DEPLOY_WP_IMAGE="${DEPLOY_WP_IMAGE:-underpost/wp:v3.4.0}"
@@ -537,8 +537,9 @@ run_quiet() {
537
537
 
538
538
  # stderr is duplicated: on its own for the native error and stack trace, and
539
539
  # into the merged stream so both the debug log and the filter see it in
540
- # chronological order with stdout.
541
- tee -a "$error_log" <"$fifo_dir/stderr" >"$fifo_dir/merged" &
540
+ # chronological order with stdout. tee opens the merged writer first: if a short command
541
+ # closes the stream before it, awk reads EOF and tee blocks until the drain kills it.
542
+ tee -a "$error_log" >"$fifo_dir/merged" <"$fifo_dir/stderr" &
542
543
  stderr_pid=$!
543
544
 
544
545
  "$@" >"$fifo_dir/merged" 2>"$fifo_dir/stderr" || status=$?
@@ -11,6 +11,12 @@ REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
11
11
 
12
12
  DEPLOY_ID=dd-github-pages
13
13
 
14
+ # `bin new --default-conf --conf-workflow-id $DEPLOY_ID` (src/cli/repository.js) keys the
15
+ # generated conf off this same variable, defaulting to underpostnet when unset — kept in step so
16
+ # a checkout under any GitHub owner (underpost, underpostnet, ...) builds and uploads its own
17
+ # `<owner>.github.io` pages instead of always the default owner's.
18
+ GITHUB_PAGES_HOST="${GITHUB_USERNAME:-underpostnet}.github.io"
19
+
14
20
  main() {
15
21
  deploy_start "Starting github pages deploy"
16
22
 
@@ -41,7 +47,7 @@ main() {
41
47
  node bin app load --env production --args deploy-id=$DEPLOY_ID
42
48
 
43
49
  deploy_step "Build $DEPLOY_ID client" \
44
- env NODE_ENV=production node bin client $DEPLOY_ID '' underpostnet.github.io /pwa-microservices-template-ghpkg
50
+ env NODE_ENV=production node bin client $DEPLOY_ID '' $GITHUB_PAGES_HOST /pwa-microservices-template-ghpkg
45
51
  }
46
52
 
47
53
  main "$@"
package/deployment.yaml CHANGED
@@ -20,7 +20,7 @@ spec:
20
20
  spec:
21
21
  containers:
22
22
  - name: dd-cyberia-development-blue
23
- image: underpost/underpost-engine:v3.3.77
23
+ image: underpost/underpost-engine:v3.4.0
24
24
  imagePullPolicy: IfNotPresent
25
25
  envFrom:
26
26
  - secretRef:
@@ -135,7 +135,7 @@ services:
135
135
  # server starts but rejects connections until seeded). Serves REST/WS on 4005
136
136
  # and the engine gRPC data service on 50051.
137
137
  engine-cyberia-runtime:
138
- image: ${ENGINE_CYBERIA_IMAGE:-underpost/engine-cyberia-dev}:${ENGINE_CYBERIA_TAG:-v3.3.77}
138
+ image: ${ENGINE_CYBERIA_IMAGE:-underpost/engine-cyberia-dev}:${ENGINE_CYBERIA_TAG:-v3.4.0}
139
139
  container_name: dd-cyberia-engine
140
140
  command:
141
141
  - /bin/sh
@@ -190,7 +190,7 @@ services:
190
190
  # gateway on host port 8081, so one port can route every instance path.
191
191
 
192
192
  cyberia-server-runtime:
193
- image: ${CYBERIA_SERVER_IMAGE:-underpost/cyberia-server-dev}:${CYBERIA_SERVER_TAG:-v3.3.77}
193
+ image: ${CYBERIA_SERVER_IMAGE:-underpost/cyberia-server-dev}:${CYBERIA_SERVER_TAG:-v3.4.0}
194
194
  container_name: dd-cyberia-server
195
195
  environment:
196
196
  INSTANCE_CODE: amethyst-strata-expansion
@@ -228,7 +228,7 @@ services:
228
228
  restart: unless-stopped
229
229
 
230
230
  cyberia-server-forest:
231
- image: ${CYBERIA_SERVER_IMAGE:-underpost/cyberia-server-dev}:${CYBERIA_SERVER_TAG:-v3.3.77}
231
+ image: ${CYBERIA_SERVER_IMAGE:-underpost/cyberia-server-dev}:${CYBERIA_SERVER_TAG:-v3.4.0}
232
232
  container_name: dd-cyberia-server-forest
233
233
  environment:
234
234
  INSTANCE_CODE: FOREST
@@ -266,7 +266,7 @@ services:
266
266
  restart: unless-stopped
267
267
 
268
268
  cyberia-server-test:
269
- image: ${CYBERIA_SERVER_IMAGE:-underpost/cyberia-server-dev}:${CYBERIA_SERVER_TAG:-v3.3.77}
269
+ image: ${CYBERIA_SERVER_IMAGE:-underpost/cyberia-server-dev}:${CYBERIA_SERVER_TAG:-v3.4.0}
270
270
  container_name: dd-cyberia-server-test
271
271
  environment:
272
272
  INSTANCE_CODE: TEST
@@ -315,7 +315,7 @@ services:
315
315
  # cyberia-server-test -> cyberia-client-test
316
316
 
317
317
  cyberia-client-runtime:
318
- image: ${CYBERIA_CLIENT_IMAGE:-underpost/cyberia-client-dev}:${CYBERIA_CLIENT_TAG:-v3.3.77}
318
+ image: ${CYBERIA_CLIENT_IMAGE:-underpost/cyberia-client-dev}:${CYBERIA_CLIENT_TAG:-v3.4.0}
319
319
  container_name: dd-cyberia-client
320
320
  environment:
321
321
  CYBERIA_PORT: '8081'
@@ -340,7 +340,7 @@ services:
340
340
  restart: unless-stopped
341
341
 
342
342
  cyberia-client-forest:
343
- image: ${CYBERIA_CLIENT_IMAGE:-underpost/cyberia-client-dev}:${CYBERIA_CLIENT_TAG:-v3.3.77}
343
+ image: ${CYBERIA_CLIENT_IMAGE:-underpost/cyberia-client-dev}:${CYBERIA_CLIENT_TAG:-v3.4.0}
344
344
  container_name: dd-cyberia-client-forest
345
345
  environment:
346
346
  CYBERIA_PORT: '8081'
@@ -365,7 +365,7 @@ services:
365
365
  restart: unless-stopped
366
366
 
367
367
  cyberia-client-test:
368
- image: ${CYBERIA_CLIENT_IMAGE:-underpost/cyberia-client-dev}:${CYBERIA_CLIENT_TAG:-v3.3.77}
368
+ image: ${CYBERIA_CLIENT_IMAGE:-underpost/cyberia-client-dev}:${CYBERIA_CLIENT_TAG:-v3.4.0}
369
369
  container_name: dd-cyberia-client-test
370
370
  environment:
371
371
  CYBERIA_PORT: '8081'
@@ -1576,7 +1576,7 @@ export {
1576
1576
  <div class='footer quiet pad2 space-top1 center small'>
1577
1577
  Code coverage generated by
1578
1578
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1579
- at 2026-09-13T20:21:13.226Z
1579
+ at 2026-09-15T22:49:07.006Z
1580
1580
  </div>
1581
1581
  <script src="../../prettify.js"></script>
1582
1582
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-09-13T20:21:13.226Z
104
+ at 2026-09-15T22:49:07.006Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -4123,7 +4123,7 @@ export function fillInstanceConfDefaults(conf = {}) {
4123
4123
  <div class='footer quiet pad2 space-top1 center small'>
4124
4124
  Code coverage generated by
4125
4125
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
4126
- at 2026-09-13T20:21:13.226Z
4126
+ at 2026-09-15T22:49:07.006Z
4127
4127
  </div>
4128
4128
  <script src="../../prettify.js"></script>
4129
4129
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-09-13T20:21:13.226Z
104
+ at 2026-09-15T22:49:07.006Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-09-13T20:21:13.226Z
104
+ at 2026-09-15T22:49:07.006Z
105
105
  </div>
106
106
  <script src="../../prettify.js"></script>
107
107
  <script>
@@ -1378,7 +1378,7 @@ export {
1378
1378
  <div class='footer quiet pad2 space-top1 center small'>
1379
1379
  Code coverage generated by
1380
1380
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1381
- at 2026-09-13T20:21:13.226Z
1381
+ at 2026-09-15T22:49:07.006Z
1382
1382
  </div>
1383
1383
  <script src="../../prettify.js"></script>
1384
1384
  <script>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at 2026-09-13T20:21:13.226Z
149
+ at 2026-09-15T22:49:07.006Z
150
150
  </div>
151
151
  <script src="prettify.js"></script>
152
152
  <script>
@@ -1300,7 +1300,7 @@ export class AtlasSpriteSheetGenerator {
1300
1300
  <div class='footer quiet pad2 space-top1 center small'>
1301
1301
  Code coverage generated by
1302
1302
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1303
- at 2026-09-13T20:21:13.226Z
1303
+ at 2026-09-15T22:49:07.006Z
1304
1304
  </div>
1305
1305
  <script src="../../prettify.js"></script>
1306
1306
  <script>
@@ -161,7 +161,7 @@
161
161
  <div class='footer quiet pad2 space-top1 center small'>
162
162
  Code coverage generated by
163
163
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
- at 2026-09-13T20:21:13.226Z
164
+ at 2026-09-15T22:49:07.006Z
165
165
  </div>
166
166
  <script src="../../prettify.js"></script>
167
167
  <script>
@@ -700,7 +700,7 @@ export async function restoreObjectLayerBackup({ backupDir, itemId, options }) {
700
700
  <div class='footer quiet pad2 space-top1 center small'>
701
701
  Code coverage generated by
702
702
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
703
- at 2026-09-13T20:21:13.226Z
703
+ at 2026-09-15T22:49:07.006Z
704
704
  </div>
705
705
  <script src="../../prettify.js"></script>
706
706
  <script>
@@ -2167,7 +2167,7 @@ export {
2167
2167
  <div class='footer quiet pad2 space-top1 center small'>
2168
2168
  Code coverage generated by
2169
2169
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2170
- at 2026-09-13T20:21:13.226Z
2170
+ at 2026-09-15T22:49:07.006Z
2171
2171
  </div>
2172
2172
  <script src="../../prettify.js"></script>
2173
2173
  <script>
@@ -3250,7 +3250,7 @@ export function listShapes() {
3250
3250
  <div class='footer quiet pad2 space-top1 center small'>
3251
3251
  Code coverage generated by
3252
3252
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3253
- at 2026-09-13T20:21:13.226Z
3253
+ at 2026-09-15T22:49:07.006Z
3254
3254
  </div>
3255
3255
  <script src="../../prettify.js"></script>
3256
3256
  <script>
@@ -313,7 +313,7 @@ export function balanceStats({ stats, itemType, policy = {}, random = Math.rando
313
313
  <div class='footer quiet pad2 space-top1 center small'>
314
314
  Code coverage generated by
315
315
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
316
- at 2026-09-13T20:21:13.226Z
316
+ at 2026-09-15T22:49:07.006Z
317
317
  </div>
318
318
  <script src="../../prettify.js"></script>
319
319
  <script>
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "cyberia-hardhat",
3
- "version": "3.3.77",
3
+ "version": "3.4.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "cyberia-hardhat",
9
- "version": "3.3.77",
9
+ "version": "3.4.0",
10
10
  "dependencies": {
11
11
  "@openzeppelin/contracts": "~5.6.1",
12
12
  "dotenv": "~17.4.2",
@@ -15,7 +15,7 @@
15
15
  "devDependencies": {
16
16
  "@nomicfoundation/hardhat-toolbox-viem": "^5.0.7",
17
17
  "chai": "^6.2.2",
18
- "hardhat": "~3.15.0"
18
+ "hardhat": "~3.16.0"
19
19
  },
20
20
  "engines": {
21
21
  "node": ">=22.0.0"
@@ -2065,9 +2065,9 @@
2065
2065
  "license": "ISC"
2066
2066
  },
2067
2067
  "node_modules/hardhat": {
2068
- "version": "3.15.0",
2069
- "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-3.15.0.tgz",
2070
- "integrity": "sha512-41S+2ZCRRKfIcHLnfrpvGdBCaUf468U+YYqAeBSFZFivB7cY3qqDtOxOiLuLaJ7dw75yA/K3VHKZ2QF8nAd+iA==",
2068
+ "version": "3.16.0",
2069
+ "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-3.16.0.tgz",
2070
+ "integrity": "sha512-LWFFR3rYl8AIhwpYVjK2L5y0Z0CqdQFQ8AZWe8gqf1t7KGH+E/EguoIX7rcB4KfyKoWK6ooj+7Jgba4vlQ1feQ==",
2071
2071
  "dev": true,
2072
2072
  "license": "MIT",
2073
2073
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cyberia-hardhat",
3
- "version": "3.3.77",
3
+ "version": "3.4.0",
4
4
  "type": "module",
5
5
  "description": "Hardhat project for Cyberia Online ObjectLayerToken (ERC-1155) on Hyperledger Besu",
6
6
  "private": true,
@@ -21,7 +21,7 @@
21
21
  "devDependencies": {
22
22
  "@nomicfoundation/hardhat-toolbox-viem": "^5.0.7",
23
23
  "chai": "^6.2.2",
24
- "hardhat": "~3.15.0"
24
+ "hardhat": "~3.16.0"
25
25
  },
26
26
  "dependencies": {
27
27
  "@openzeppelin/contracts": "~5.6.1",
@@ -27,7 +27,7 @@ spec:
27
27
  spec:
28
28
  containers:
29
29
  - name: dd-cron-backup
30
- image: underpost/underpost-engine:v3.3.77
30
+ image: underpost/underpost-engine:v3.4.0
31
31
  command:
32
32
  - /bin/sh
33
33
  - -c
@@ -27,7 +27,7 @@ spec:
27
27
  spec:
28
28
  containers:
29
29
  - name: dd-cron-vultr
30
- image: underpost/underpost-engine:v3.3.77
30
+ image: underpost/underpost-engine:v3.4.0
31
31
  command:
32
32
  - /bin/sh
33
33
  - -c
@@ -20,7 +20,7 @@ spec:
20
20
  spec:
21
21
  containers:
22
22
  - name: dd-cyberia-development-blue
23
- image: underpost/underpost-engine:v3.3.77
23
+ image: underpost/underpost-engine:v3.4.0
24
24
  imagePullPolicy: IfNotPresent
25
25
  envFrom:
26
26
  - secretRef:
@@ -17,7 +17,7 @@ spec:
17
17
  spec:
18
18
  containers:
19
19
  - name: dd-default-development-blue
20
- image: underpost/underpost-engine:v3.3.77
20
+ image: underpost/underpost-engine:v3.4.0
21
21
  # resources:
22
22
  # requests:
23
23
  # memory: "124Ki"
@@ -98,7 +98,7 @@ spec:
98
98
  spec:
99
99
  containers:
100
100
  - name: dd-default-development-green
101
- image: underpost/underpost-engine:v3.3.77
101
+ image: underpost/underpost-engine:v3.4.0
102
102
  # resources:
103
103
  # requests:
104
104
  # memory: "124Ki"
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "type": "module",
3
3
  "main": "src/index.js",
4
4
  "name": "@underpostnet/cyberia",
5
- "version": "3.3.77",
5
+ "version": "3.4.0",
6
6
  "description": "Cyberia CLI — toolchain for the Cyberia MMO data layer, content pipeline, persistence, gRPC services, and ERC-1155 lifecycle on Hyperledger Besu.",
7
7
  "scripts": {
8
8
  "start": "node --max-old-space-size=8192 src/server",
@@ -18,14 +18,17 @@
18
18
  "docs": "typedoc --options typedoc.json",
19
19
  "install:global": "npm install -g prettier",
20
20
  "install:test": "npm install -g coveralls-next",
21
- "install": "npm run install:global && npm run install:test",
21
+ "install:tools": "npm run install:global && npm run install:test",
22
+ "prepare": "node bin socketsecurity --patch-apply",
22
23
  "prettier": "prettier --write .",
23
24
  "fix": "npm audit fix --force && npm audit",
24
25
  "baremetal": "node bin baremetal --dev --commission --ls --create-machine",
25
26
  "security:secrets": "gitleaks detect --source . --config .gitleaks.toml --report-path ./gitleaks-report.json --report-format json --redact=0",
26
27
  "security:secrets:ci": "gitleaks detect --source . --config .gitleaks.toml --redact=1",
27
28
  "security:deps": "npm audit",
28
- "security": "npm run security:secrets:ci && npm run security:deps",
29
+ "security:socket": "node bin socketsecurity --audit",
30
+ "security:socket:ci": "node bin socketsecurity --ci",
31
+ "security": "npm run security:secrets:ci && npm run security:deps && npm run security:socket",
29
32
  "docker:generate": "node bin docker-compose --generate --deploy-id dd-cyberia --docker-compose-id cyberia",
30
33
  "docker:up": "node bin docker-compose --up --deploy-id dd-cyberia --docker-compose-id cyberia",
31
34
  "docker:up:build": "node bin docker-compose --up --build --deploy-id dd-cyberia --docker-compose-id cyberia",
@@ -72,7 +75,7 @@
72
75
  },
73
76
  "homepage": "https://github.com/underpostnet/engine-cyberia#readme",
74
77
  "dependencies": {
75
- "underpost": "^3.3.77",
78
+ "@underpostnet/underpost": "^3.4.0",
76
79
  "maxrects-packer": "^2.7.3",
77
80
  "pngjs": "^7.0.0",
78
81
  "jimp": "^1.6.0",
@@ -89,7 +92,7 @@
89
92
  "minimatch": "^10.2.2",
90
93
  "glob": "^11.0.0",
91
94
  "diff": ">=8.0.3",
92
- "js-yaml": "$js-yaml",
95
+ "js-yaml": "^5.4.1",
93
96
  "debug": ">=4.3.6",
94
97
  "serialize-javascript": ">=7.0.5",
95
98
  "router": {
@@ -105,12 +108,8 @@
105
108
  "@grpc/grpc-js": "^1.14.4",
106
109
  "@grpc/proto-loader": "^0.8.1",
107
110
  "@neodrag/vanilla": "^2.3.1",
108
- "@vitest/coverage-v8": "5.0.0",
109
111
  "ag-grid-community": "^36.1.0",
110
- "allure-vitest": "3.12.0",
111
112
  "axios": "^1.20.0",
112
- "bumpp": "^12.3.0",
113
- "chai": "^6.2.2",
114
113
  "clipboardy": "^5.3.2",
115
114
  "cloudinary": "^2.11.0",
116
115
  "colors": "^1.4.0",
@@ -119,11 +118,10 @@
119
118
  "cookie-parser": "^1.4.7",
120
119
  "cors": "^2.8.6",
121
120
  "d3": "^7.9.0",
122
- "dexie": "^4.4.5",
121
+ "dexie": "^4.4.6",
123
122
  "dotenv": "^17.4.2",
124
123
  "easymde": "^2.21.0",
125
124
  "esbuild": "^0.28.2",
126
- "escape-string-regexp": "^5.0.0",
127
125
  "express": "^5.2.1",
128
126
  "express-fileupload": "^1.4.3",
129
127
  "express-rate-limit": "^8.7.0",
@@ -142,15 +140,14 @@
142
140
  "jsonwebtoken": "^9.0.3",
143
141
  "jszip": "^3.10.2",
144
142
  "mariadb": "^3.5.4",
145
- "marked": "^18.0.11",
146
- "mongoose": "^9.9.5",
143
+ "marked": "^18.0.12",
144
+ "mongoose": "^9.10.0",
147
145
  "morgan": "^1.12.0",
148
- "nodemailer": "^10.0.0",
146
+ "nodemailer": "^10.0.3",
149
147
  "nodemon": "^3.0.1",
150
148
  "peer": "^1.0.2",
151
149
  "peerjs": "^1.5.5",
152
150
  "prom-client": "^15.1.2",
153
- "read": "^6.0.0",
154
151
  "rrule": "^2.8.1",
155
152
  "shelljs": "^0.10.0",
156
153
  "sitemap": "^9.0.1",
@@ -163,7 +160,6 @@
163
160
  "typescript": "6.0.3",
164
161
  "validator": "^13.15.35",
165
162
  "vanilla-jsoneditor": "^3.13.0",
166
- "vitest": "5.0.0",
167
163
  "winston": "^3.19.0",
168
164
  "workbox-background-sync": "^7.4.1",
169
165
  "workbox-cacheable-response": "^7.4.1",
@@ -171,6 +167,12 @@
171
167
  "workbox-expiration": "^7.4.1",
172
168
  "workbox-precaching": "^7.4.1",
173
169
  "workbox-routing": "^7.4.1",
174
- "workbox-strategies": "^7.4.1"
170
+ "workbox-strategies": "^7.4.1",
171
+ "@socketsecurity/cli": "1.1.171",
172
+ "@vitest/coverage-v8": "5.0.0",
173
+ "allure-vitest": "3.12.1",
174
+ "bumpp": "^12.3.0",
175
+ "chai": "^6.2.2",
176
+ "vitest": "5.0.0"
175
177
  }
176
178
  }