@underpostnet/cyberia 3.3.73 → 3.3.77
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/.env.example +17 -5
- package/.github/workflows/coverall.cyberia.ci.yml +10 -0
- package/.github/workflows/docker-image.cyberia-client.ci.yml +1 -1
- package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +1 -1
- package/.github/workflows/docker-image.cyberia-server.ci.yml +1 -1
- package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +1 -1
- package/.github/workflows/docker-image.engine-cyberia.ci.yml +1 -1
- package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +1 -1
- package/.github/workflows/engine-cyberia.ci.yml +1 -1
- package/.github/workflows/publish.cyberia.ci.yml +44 -0
- package/AGENTS.md +61 -12
- package/CHANGELOG.md +159 -161
- package/CLI-HELP.md +20 -13
- package/Dockerfile +1 -1
- package/Dockerfile.dev +1 -1
- package/Dockerfile.test +2 -2
- package/README.md +28 -28
- package/bin/build.js +96 -21
- package/bin/cyberia.js +1247 -1373
- package/bin/index.js +1247 -1373
- package/compose.env +17 -5
- package/conf.js +7 -4
- package/deploy/cyberia-client/deploy.sh +10 -11
- package/deploy/cyberia-client/package.sh +0 -1
- package/deploy/cyberia-client/state.sh +3 -2
- package/deploy/cyberia-server/deploy.sh +10 -11
- package/deploy/cyberia-server/package.sh +0 -1
- package/deploy/cyberia-server/state.sh +3 -2
- package/deploy/dd-cyberia/deploy.sh +5 -5
- package/deploy/dd-cyberia/init.sh +15 -14
- package/deploy/dd-cyberia/package.sh +0 -1
- package/deploy/dd-cyberia/state.sh +2 -2
- package/deploy/dd-cyberia/sync-deploy.sh +139 -75
- package/deploy/lib/config.sh +29 -0
- package/deploy/lib/github-actions-logging.sh +92 -76
- package/deploy/lib/host.sh +28 -19
- package/deploy/lib/state.sh +4 -1
- package/deploy/pwa-microservices-template/deploy.sh +10 -8
- package/deploy/release/deploy.sh +0 -2
- package/deployment.yaml +1 -1
- package/docker-compose.yml +23 -17
- package/docs/coverage/cyberia/api/cyberia-instance/cyberia-fallback-capture.js.html +1591 -0
- package/docs/coverage/cyberia/api/cyberia-instance/index.html +116 -0
- package/docs/coverage/cyberia/api/cyberia-server-defaults/cyberia-server-defaults.js.html +4138 -0
- package/docs/coverage/cyberia/api/cyberia-server-defaults/index.html +116 -0
- package/docs/coverage/cyberia/api/object-layer/index.html +116 -0
- package/docs/coverage/cyberia/api/object-layer/object-layer.model.js.html +1393 -0
- package/docs/coverage/cyberia/base.css +362 -0
- package/docs/coverage/cyberia/block-navigation.js +82 -0
- package/docs/coverage/cyberia/favicon.png +0 -0
- package/docs/coverage/cyberia/index.html +161 -0
- package/docs/coverage/cyberia/prettify.css +101 -0
- package/docs/coverage/cyberia/prettify.js +937 -0
- package/docs/coverage/cyberia/projects/cyberia/atlas-sprite-sheet-generator.js.html +1315 -0
- package/docs/coverage/cyberia/projects/cyberia/index.html +176 -0
- package/docs/coverage/cyberia/projects/cyberia/instance-backup.js.html +715 -0
- package/docs/coverage/cyberia/projects/cyberia/instance-data.js.html +2182 -0
- package/docs/coverage/cyberia/projects/cyberia/shape-generator.js.html +3265 -0
- package/docs/coverage/cyberia/projects/cyberia/stat-balance.js.html +328 -0
- package/docs/coverage/cyberia/sort-arrow-sprite.png +0 -0
- package/docs/coverage/cyberia/sorter.js +205 -0
- package/hardhat/package-lock.json +2 -2
- package/hardhat/package.json +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-vultr.yaml +1 -1
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +1 -1
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/deployment/mongo-express/deployment.yaml +46 -27
- package/manifests/deployment/mongo-express/kustomization.yaml +9 -0
- package/manifests/deployment/mongo-express/mongo-express-nodeport.yaml +18 -0
- package/manifests/deployment/mongo-express/service.yaml +16 -0
- package/manifests/deployment/mongo-express-no-auth/disable-mongodb-auth.yaml +16 -0
- package/manifests/deployment/mongo-express-no-auth/kustomization.yaml +16 -0
- package/package.json +19 -17
- package/scripts/test-monitor.sh +3 -3
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +14 -9
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +36 -5
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +5 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +88 -184
- package/src/api/cyberia-action/cyberia-action.router.js +2 -2
- package/src/api/cyberia-action/cyberia-action.service.js +3 -4
- package/src/api/cyberia-audio/cyberia-audio.controller.js +6 -0
- package/src/api/cyberia-audio/cyberia-audio.model.js +61 -0
- package/src/api/cyberia-audio/cyberia-audio.router.js +21 -0
- package/src/api/cyberia-audio/cyberia-audio.service.js +220 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +1 -3
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +10 -19
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +12 -34
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +15 -32
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +1 -1
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +1 -1
- package/src/api/cyberia-entity/cyberia-entity.model.js +2 -0
- package/src/api/cyberia-entity/cyberia-entity.service.js +1 -1
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +8 -2
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.model.js +31 -20
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +16 -1
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +466 -3
- package/src/api/cyberia-instance/cyberia-fallback-capture.js +87 -51
- package/src/api/cyberia-instance/cyberia-fallback-world.js +21 -40
- package/src/api/cyberia-instance/cyberia-instance-boot.service.js +5 -5
- package/src/api/cyberia-instance/cyberia-instance-items.js +98 -0
- package/src/api/cyberia-instance/cyberia-instance-map.service.js +34 -141
- package/src/api/cyberia-instance/cyberia-instance.controller.js +1 -4
- package/src/api/cyberia-instance/cyberia-instance.model.js +0 -14
- package/src/api/cyberia-instance/cyberia-instance.router.js +3 -16
- package/src/api/cyberia-instance/cyberia-instance.service.js +3 -43
- package/src/api/cyberia-instance/cyberia-world-generator.js +8 -13
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +49 -75
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +74 -1
- package/src/api/cyberia-map/cyberia-map.service.js +6 -2
- package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.controller.js +31 -0
- package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.model.js +56 -0
- package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.router.js +33 -0
- package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.service.js +189 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +3 -3
- package/src/api/cyberia-quest/cyberia-quest.service.js +3 -3
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +1 -1
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +403 -188
- package/src/api/cyberia-skill/cyberia-skill.model.js +6 -6
- package/src/api/file/file.ref.js +153 -0
- package/src/api/file/file.ref.json +11 -2
- package/src/api/object-layer/object-layer.model.js +47 -12
- package/src/api/object-layer/object-layer.router.js +10 -3
- package/src/api/object-layer/object-layer.service.js +113 -120
- package/src/cli/app.js +12 -1
- package/src/cli/client.js +2 -2
- package/src/cli/cluster.js +80 -18
- package/src/cli/deploy.js +215 -34
- package/src/cli/docker-compose.js +1 -1
- package/src/cli/fs-selection.js +115 -0
- package/src/cli/fs.js +158 -342
- package/src/cli/index.js +22 -10
- package/src/cli/release.js +3 -1
- package/src/cli/repository.js +35 -9
- package/src/cli/run.js +80 -199
- package/src/cli/test.js +4 -0
- package/src/cli/wireguard.js +32 -31
- package/src/client/components/core/Badge.js +0 -1
- package/src/client/components/core/CssCore.js +8 -1
- package/src/client/components/core/Docs.js +77 -100
- package/src/client/components/core/Modal.js +77 -23
- package/src/client/components/core/ToolTip.js +15 -0
- package/src/client/components/cryptokoyn/AppShellCryptokoyn.js +0 -2
- package/src/client/components/cyberia/ActionEngineCyberia.js +12 -36
- package/src/client/components/cyberia/EntityEngineCyberia.js +492 -121
- package/src/client/components/cyberia/InstanceEngineCyberia.js +129 -160
- package/src/client/components/cyberia/InstanceSelectionView.js +7 -1
- package/src/client/components/cyberia/MapEngineCyberia.js +175 -69
- package/src/client/components/cyberia/ObjectLayerEngine.js +1011 -97
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +81 -155
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +113 -98
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +215 -56
- package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +0 -34
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +1 -1
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +712 -76
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +0 -4
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +0 -4
- package/src/client/components/default/AppShellDefault.js +1 -4
- package/src/client/components/itemledger/AppShellItemledger.js +0 -2
- package/src/client/components/underpost/AppShellUnderpost.js +1 -1
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +15 -15
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +280 -24
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +51 -29
- package/src/client/public/cyberia-docs/CYBERIA-SAGA.md +52 -53
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +16 -11
- package/src/client/public/cyberia-docs/CYBERIA.md +28 -28
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +11 -5
- package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
- package/src/client/public/cyberia-docs/STATS-PROGRESSION.md +217 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +20 -12
- package/src/client/services/cyberia-audio/cyberia-audio.service.js +99 -0
- package/src/client/services/cyberia-entity-type-default/cyberia-entity-type-default.service.js +38 -0
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +5 -4
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +0 -40
- package/src/client/services/cyberia-map/cyberia-map.management.js +5 -4
- package/src/client/services/cyberia-map-audio-conf/cyberia-map-audio-conf.service.js +138 -0
- package/src/client/services/object-layer/object-layer.management.js +6 -10
- package/src/client/services/object-layer/object-layer.service.js +3 -1
- package/src/client/ssr/views/Cyberia404.js +3 -3
- package/src/client-builder/client-build-docs.js +52 -52
- package/src/client-builder/client-build.js +67 -44
- package/src/client-builder/client-bundle.js +347 -0
- package/src/db/mongo/MongoExpress.js +187 -0
- package/src/grpc/cyberia/grpc-server.js +5 -7
- package/src/index.js +1 -1
- package/src/projects/cyberia/atlas-sprite-sheet-generator.js +143 -146
- package/src/projects/cyberia/atlas-sprite-sheet-store.js +391 -0
- package/src/projects/cyberia/besu-genesis-generator.js +5 -14
- package/src/projects/cyberia/boot-contract-fixtures.js +32 -0
- package/src/projects/cyberia/catalog-cyberia.js +3 -2
- package/src/projects/cyberia/gemini-client.js +3 -3
- package/src/projects/cyberia/generate-saga.js +4 -11
- package/src/projects/cyberia/hot-reload-trigger.js +17 -28
- package/src/projects/cyberia/instance-backup.js +210 -0
- package/src/projects/cyberia/instance-data.js +177 -257
- package/src/projects/cyberia/map-preview-generator.js +32 -68
- package/src/projects/cyberia/object-layer.js +152 -319
- package/src/projects/cyberia/seed-audio.js +139 -0
- package/src/projects/cyberia/semantic-layer-generator-skin.js +2 -8
- package/src/projects/cyberia/semantic-layer-generator.js +2 -18
- package/src/projects/cyberia/stat-balance.js +81 -0
- package/src/projects/cyberia/stat-commands.js +23 -0
- package/src/projects/cyberia/stat-contract-generator.js +101 -0
- package/src/runtime/cyberia-client/Dockerfile +8 -4
- package/src/runtime/cyberia-client/Dockerfile.dev +5 -2
- package/src/runtime/cyberia-server/Dockerfile +9 -2
- package/src/runtime/cyberia-server/Dockerfile.dev +8 -1
- package/src/runtime/engine-cyberia/Dockerfile +1 -1
- package/src/runtime/engine-cyberia/Dockerfile.dev +1 -1
- package/src/runtime/engine-cyberia/Dockerfile.test +2 -2
- package/src/runtime/engine-cyberia/compose.env +17 -5
- package/src/runtime/engine-cyberia/docker-compose.yml +23 -17
- package/src/server/build/coverage.js +113 -42
- package/src/server/build/package.js +55 -12
- package/src/server/build/testing.js +59 -9
- package/src/server/network/middlewares.js +8 -2
- package/src/server/network/underpost-gateway.js +113 -14
- package/src/server/ops/logger.js +70 -35
- package/src/server/runtime/conf.js +40 -9
- package/src/server/runtime/start.js +11 -2
- package/src/server/storage/data-query.js +16 -0
- package/src/server/storage/downloader.js +62 -14
- package/src/server/storage/zip.js +153 -0
- package/test/integration/app/cyberia/atlas-sprite-sheet-store.test.js +402 -0
- package/test/integration/app/cyberia/atlas-sprite-sheet.test.js +86 -0
- package/test/integration/app/cyberia/cyberia-cli-plain-reads.test.js +34 -0
- package/test/integration/app/cyberia/cyberia-entity-type-default.test.js +842 -0
- package/test/integration/app/cyberia/cyberia-instance-conf-coerce.test.js +53 -0
- package/test/integration/app/cyberia/cyberia-instance-conf-defaults.test.js +16 -22
- package/test/integration/app/cyberia/cyberia-instance-items.test.js +90 -0
- package/test/integration/app/cyberia/cyberia-load.test.js +6 -7
- package/test/integration/app/cyberia/cyberia-map-audio-conf.test.js +256 -0
- package/test/integration/app/cyberia/cyberia-stats.test.js +150 -0
- package/test/integration/app/cyberia/fallback-world-capture.test.js +87 -2
- package/test/integration/app/cyberia/object-layer-item-selection.test.js +56 -0
- package/test/integration/app/cyberia/object-layer-natural-key.test.js +32 -0
- package/test/integration/app/cyberia/seed-audio.test.js +275 -0
- package/test/integration/infra/2-network/wireguard-cli.test.js +33 -9
- package/test/integration/infra/2-network/wireguard-edge.test.js +58 -18
- package/test/integration/infra/3-cluster/mongo-express-deploy.test.js +156 -0
- package/test/integration/infra/4-ingress/api-cross-origin.test.js +79 -0
- package/test/integration/infra/4-ingress/underpost-ingress.test.js +1 -1
- package/test/unit/catalog.test.js +13 -2
- package/test/unit/client-build-docs.test.js +97 -70
- package/test/unit/client-bundle.test.js +313 -0
- package/test/unit/conf-resolution.test.js +58 -7
- package/test/unit/coverage-artifact.test.js +120 -29
- package/test/unit/cyberia/instance-backup.test.js +183 -0
- package/test/unit/cyberia/instance-data.test.js +314 -0
- package/test/unit/cyberia/instance-object-layer-items.test.js +46 -0
- package/test/unit/cyberia/publish-workflow.test.js +22 -0
- package/test/unit/cyberia/stat-balance.test.js +69 -0
- package/test/unit/deploy-legacy-gateway-sweep.test.js +63 -0
- package/test/unit/deploy-log-table.test.js +76 -5
- package/test/unit/downloader-integrity.test.js +98 -0
- package/test/unit/file-reference-registry.test.js +141 -0
- package/test/unit/fs-storage-paths.test.js +596 -0
- package/test/unit/gateway-pod-fetch.test.js +95 -0
- package/test/unit/letsencrypt-issuer.test.js +101 -0
- package/test/unit/logger-redaction.test.js +29 -0
- package/test/unit/package.test.js +70 -16
- package/test/unit/prepare-host.test.js +84 -1
- package/test/unit/release-bump.test.js +3 -1
- package/test/unit/start-options.test.js +12 -0
- package/test/unit/test-tiers.test.js +27 -0
- package/test/unit/zip-archive.test.js +142 -0
- package/vitest.config.js +11 -3
- package/src/api/cyberia-instance/cyberia-fallback-default-items.js +0 -63
- package/src/client/components/cyberia/FallbackWorldEngineCyberia.js +0 -368
|
@@ -4,6 +4,7 @@ metadata:
|
|
|
4
4
|
name: mongo-express
|
|
5
5
|
labels:
|
|
6
6
|
app: mongo-express
|
|
7
|
+
group: db
|
|
7
8
|
spec:
|
|
8
9
|
replicas: 1
|
|
9
10
|
selector:
|
|
@@ -13,25 +14,27 @@ spec:
|
|
|
13
14
|
metadata:
|
|
14
15
|
labels:
|
|
15
16
|
app: mongo-express
|
|
17
|
+
group: db
|
|
16
18
|
spec:
|
|
17
19
|
containers:
|
|
18
20
|
- name: mongo-express
|
|
19
|
-
image: mongo-express
|
|
21
|
+
image: mongo-express:1.0.2
|
|
20
22
|
ports:
|
|
21
23
|
- containerPort: 8081
|
|
22
24
|
env:
|
|
23
|
-
# -
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
# Both credential pairs come from the one `mongodb-secret` the StatefulSet already
|
|
26
|
+
# consumes: the UI authenticates to mongod with the root credentials, and gates its
|
|
27
|
+
# own session behind the same pair rather than the image's admin/pass defaults.
|
|
28
|
+
- name: ME_CONFIG_MONGODB_ADMINUSERNAME
|
|
29
|
+
valueFrom:
|
|
30
|
+
secretKeyRef:
|
|
31
|
+
name: mongodb-secret
|
|
32
|
+
key: username
|
|
33
|
+
- name: ME_CONFIG_MONGODB_ADMINPASSWORD
|
|
34
|
+
valueFrom:
|
|
35
|
+
secretKeyRef:
|
|
36
|
+
name: mongodb-secret
|
|
37
|
+
key: password
|
|
35
38
|
- name: ME_CONFIG_BASICAUTH_USERNAME
|
|
36
39
|
valueFrom:
|
|
37
40
|
secretKeyRef:
|
|
@@ -42,21 +45,37 @@ spec:
|
|
|
42
45
|
secretKeyRef:
|
|
43
46
|
name: mongodb-secret
|
|
44
47
|
key: password
|
|
48
|
+
- name: ME_CONFIG_SITE_BASEURL
|
|
49
|
+
value: '/mongo/'
|
|
50
|
+
# In-cluster identity of the first replica, identical under Kind, Kubeadm and K3s.
|
|
51
|
+
# The driver reads the replica set config from it and reaches the remaining members
|
|
52
|
+
# through the same headless service.
|
|
45
53
|
- name: ME_CONFIG_MONGODB_SERVER
|
|
46
54
|
value: 'mongodb-0.mongodb-service'
|
|
47
|
-
# - name: ME_CONFIG_MONGODB_ENABLE_ADMIN
|
|
48
|
-
# value: 'true'
|
|
49
55
|
- name: ME_CONFIG_MONGODB_PORT
|
|
50
56
|
value: '27017'
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
- name: ME_CONFIG_MONGODB_AUTH_DATABASE
|
|
58
|
+
value: 'admin'
|
|
59
|
+
# Without this the UI only lists the databases named in its config; the point of the
|
|
60
|
+
# deployment is browsing whatever collections the StatefulSet actually holds.
|
|
61
|
+
- name: ME_CONFIG_MONGODB_ENABLE_ADMIN
|
|
62
|
+
value: 'true'
|
|
63
|
+
readinessProbe:
|
|
64
|
+
tcpSocket:
|
|
65
|
+
port: 8081
|
|
66
|
+
initialDelaySeconds: 10
|
|
67
|
+
periodSeconds: 10
|
|
68
|
+
timeoutSeconds: 5
|
|
69
|
+
livenessProbe:
|
|
70
|
+
tcpSocket:
|
|
71
|
+
port: 8081
|
|
72
|
+
initialDelaySeconds: 30
|
|
73
|
+
periodSeconds: 20
|
|
74
|
+
timeoutSeconds: 5
|
|
75
|
+
resources:
|
|
76
|
+
requests:
|
|
77
|
+
cpu: '50m'
|
|
78
|
+
memory: '128Mi'
|
|
79
|
+
limits:
|
|
80
|
+
cpu: '500m'
|
|
81
|
+
memory: '256Mi'
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
# kubectl apply -k manifests/deployment/mongo-express/.
|
|
3
|
+
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
4
|
+
kind: Kustomization
|
|
5
|
+
resources:
|
|
6
|
+
# mongo-express-nodeport.yaml is intentionally absent: host/public exposure of an admin UI is
|
|
7
|
+
# opt-in, applied by `cluster --mongo-express --node-port` once the pod reports Ready.
|
|
8
|
+
- deployment.yaml
|
|
9
|
+
- service.yaml
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Service
|
|
3
|
+
metadata:
|
|
4
|
+
name: mongo-express-nodeport
|
|
5
|
+
labels:
|
|
6
|
+
app: mongo-express
|
|
7
|
+
group: db
|
|
8
|
+
spec:
|
|
9
|
+
type: NodePort
|
|
10
|
+
externalTrafficPolicy: Cluster
|
|
11
|
+
selector:
|
|
12
|
+
app: mongo-express
|
|
13
|
+
ports:
|
|
14
|
+
- name: mongo-express
|
|
15
|
+
protocol: TCP
|
|
16
|
+
port: 8081
|
|
17
|
+
targetPort: 8081
|
|
18
|
+
nodePort: 32081
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Service
|
|
3
|
+
metadata:
|
|
4
|
+
name: mongo-express-service
|
|
5
|
+
labels:
|
|
6
|
+
app: mongo-express
|
|
7
|
+
group: db
|
|
8
|
+
spec:
|
|
9
|
+
type: ClusterIP
|
|
10
|
+
selector:
|
|
11
|
+
app: mongo-express
|
|
12
|
+
ports:
|
|
13
|
+
- name: mongo-express
|
|
14
|
+
protocol: TCP
|
|
15
|
+
port: 8081
|
|
16
|
+
targetPort: 8081
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
apiVersion: apps/v1
|
|
2
|
+
kind: Deployment
|
|
3
|
+
metadata:
|
|
4
|
+
name: mongo-express
|
|
5
|
+
spec:
|
|
6
|
+
template:
|
|
7
|
+
spec:
|
|
8
|
+
containers:
|
|
9
|
+
- name: mongo-express
|
|
10
|
+
env:
|
|
11
|
+
- name: ME_CONFIG_MONGODB_ADMINUSERNAME
|
|
12
|
+
$patch: delete
|
|
13
|
+
- name: ME_CONFIG_MONGODB_ADMINPASSWORD
|
|
14
|
+
$patch: delete
|
|
15
|
+
- name: ME_CONFIG_MONGODB_AUTH_DATABASE
|
|
16
|
+
$patch: delete
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
# kubectl apply -k manifests/deployment/mongo-express-no-auth/.
|
|
3
|
+
# Overlay of manifests/deployment/mongo-express for a mongod started without --auth
|
|
4
|
+
# (manifests/mongodb-4.4). Credentials sent to a server that enforces none are not ignored: the
|
|
5
|
+
# driver still runs SCRAM and the handshake fails, so the admin pair is dropped rather than left
|
|
6
|
+
# resolving against a secret the server never checks. `cluster --mongo-express` selects between
|
|
7
|
+
# this overlay and the base from the deployed StatefulSet's own mongod arguments.
|
|
8
|
+
#
|
|
9
|
+
# A sibling of the base rather than a child of it: kustomize rejects an overlay nested inside the
|
|
10
|
+
# root it extends as a cycle.
|
|
11
|
+
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
12
|
+
kind: Kustomization
|
|
13
|
+
resources:
|
|
14
|
+
- ../mongo-express
|
|
15
|
+
patches:
|
|
16
|
+
- path: disable-mongodb-auth.yaml
|
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.
|
|
5
|
+
"version": "3.3.77",
|
|
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",
|
|
@@ -72,12 +72,11 @@
|
|
|
72
72
|
},
|
|
73
73
|
"homepage": "https://github.com/underpostnet/engine-cyberia#readme",
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"underpost": "^3.3.
|
|
76
|
-
"adm-zip": "^0.6.0",
|
|
75
|
+
"underpost": "^3.3.77",
|
|
77
76
|
"maxrects-packer": "^2.7.3",
|
|
78
77
|
"pngjs": "^7.0.0",
|
|
79
78
|
"jimp": "^1.6.0",
|
|
80
|
-
"sharp": "^0.35.
|
|
79
|
+
"sharp": "^0.35.4",
|
|
81
80
|
"ethers": "~6.16.0"
|
|
82
81
|
},
|
|
83
82
|
"publishConfig": {
|
|
@@ -96,19 +95,21 @@
|
|
|
96
95
|
"router": {
|
|
97
96
|
"path-to-regexp": ">=8.4.0"
|
|
98
97
|
},
|
|
99
|
-
"ws": "^8.20.2"
|
|
98
|
+
"ws": "^8.20.2",
|
|
99
|
+
"qs": ">=6.16.0",
|
|
100
|
+
"sharp": "^0.35.4"
|
|
100
101
|
},
|
|
101
102
|
"devDependencies": {
|
|
102
103
|
"@fortawesome/fontawesome-free": "^7.3.1",
|
|
103
|
-
"@fullcalendar/rrule": "^7.0
|
|
104
|
+
"@fullcalendar/rrule": "^7.1.0",
|
|
104
105
|
"@grpc/grpc-js": "^1.14.4",
|
|
105
106
|
"@grpc/proto-loader": "^0.8.1",
|
|
106
107
|
"@neodrag/vanilla": "^2.3.1",
|
|
107
|
-
"@vitest/coverage-v8": "
|
|
108
|
+
"@vitest/coverage-v8": "5.0.0",
|
|
108
109
|
"ag-grid-community": "^36.1.0",
|
|
109
|
-
"allure-vitest": "3.
|
|
110
|
+
"allure-vitest": "3.12.0",
|
|
110
111
|
"axios": "^1.20.0",
|
|
111
|
-
"bumpp": "^12.
|
|
112
|
+
"bumpp": "^12.3.0",
|
|
112
113
|
"chai": "^6.2.2",
|
|
113
114
|
"clipboardy": "^5.3.2",
|
|
114
115
|
"cloudinary": "^2.11.0",
|
|
@@ -125,25 +126,26 @@
|
|
|
125
126
|
"escape-string-regexp": "^5.0.0",
|
|
126
127
|
"express": "^5.2.1",
|
|
127
128
|
"express-fileupload": "^1.4.3",
|
|
128
|
-
"express-rate-limit": "^8.
|
|
129
|
+
"express-rate-limit": "^8.7.0",
|
|
129
130
|
"express-slow-down": "^3.1.1",
|
|
130
131
|
"fast-json-stable-stringify": "^2.1.0",
|
|
131
132
|
"favicons": "^7.3.1",
|
|
132
133
|
"fs-extra": "^11.4.0",
|
|
133
|
-
"fullcalendar": "^7.0
|
|
134
|
+
"fullcalendar": "^7.1.0",
|
|
134
135
|
"helmet": "^8.3.0",
|
|
135
136
|
"html-minifier-terser": "^7.2.0",
|
|
136
137
|
"http-proxy-middleware": "^4.2.0",
|
|
137
138
|
"ignore-walk": "^9.0.0",
|
|
138
139
|
"iovalkey": "^0.4.0",
|
|
139
|
-
"json-colorizer": "^3.0.1",
|
|
140
140
|
"js-yaml": "^5.4.1",
|
|
141
|
+
"json-colorizer": "^3.0.1",
|
|
141
142
|
"jsonwebtoken": "^9.0.3",
|
|
142
|
-
"
|
|
143
|
-
"
|
|
144
|
-
"morgan": "^1.12.0",
|
|
143
|
+
"jszip": "^3.10.2",
|
|
144
|
+
"mariadb": "^3.5.4",
|
|
145
145
|
"marked": "^18.0.11",
|
|
146
|
-
"
|
|
146
|
+
"mongoose": "^9.9.5",
|
|
147
|
+
"morgan": "^1.12.0",
|
|
148
|
+
"nodemailer": "^10.0.0",
|
|
147
149
|
"nodemon": "^3.0.1",
|
|
148
150
|
"peer": "^1.0.2",
|
|
149
151
|
"peerjs": "^1.5.5",
|
|
@@ -161,7 +163,7 @@
|
|
|
161
163
|
"typescript": "6.0.3",
|
|
162
164
|
"validator": "^13.15.35",
|
|
163
165
|
"vanilla-jsoneditor": "^3.13.0",
|
|
164
|
-
"vitest": "
|
|
166
|
+
"vitest": "5.0.0",
|
|
165
167
|
"winston": "^3.19.0",
|
|
166
168
|
"workbox-background-sync": "^7.4.1",
|
|
167
169
|
"workbox-cacheable-response": "^7.4.1",
|
package/scripts/test-monitor.sh
CHANGED
|
@@ -24,12 +24,12 @@ MODE=runtime # runtime | instance
|
|
|
24
24
|
ENV=development # development | production
|
|
25
25
|
DEPLOY_ID=dd-test # deploy id (instance mode: parent of conf.instances.json)
|
|
26
26
|
INSTANCE_IDS= # instance mode: csv of ids (default: all in conf.instances.json)
|
|
27
|
-
IMAGE=underpost/wp:v3.3.
|
|
27
|
+
IMAGE=underpost/wp:v3.3.77 # runtime mode image (instance mode reads image from conf)
|
|
28
28
|
VERSIONS=green # csv of blue/green versions
|
|
29
29
|
REPLICAS=1 # replicas per deployment
|
|
30
30
|
NAMESPACE=default # k8s namespace
|
|
31
31
|
CLUSTER=kind # kind | kubeadm | k3s | "" (auto/none)
|
|
32
|
-
TIMEOUT_RESPONSE=
|
|
32
|
+
TIMEOUT_RESPONSE=10000ms # HTTPProxy per-route response timeout
|
|
33
33
|
TEMPLATE_REPO=underpostnet/pwa-microservices-template-private # runtime mode link repo
|
|
34
34
|
ENVOY_NAMESPACE=projectcontour # ingress namespace (instance TLS exposure)
|
|
35
35
|
ENVOY_SERVICE=envoy # ingress service (instance TLS exposure)
|
|
@@ -59,7 +59,7 @@ Common (every default is overridable):
|
|
|
59
59
|
--replicas <n>
|
|
60
60
|
--namespace <ns>
|
|
61
61
|
--cluster <kind|kubeadm|k3s|none>
|
|
62
|
-
--timeout-response <dur> e.g.
|
|
62
|
+
--timeout-response <dur> e.g. 10000ms
|
|
63
63
|
--template-repo <owner/repo> runtime mode link repo
|
|
64
64
|
--envoy-namespace <ns> instance TLS exposure ingress namespace
|
|
65
65
|
--envoy-service <name> instance TLS exposure ingress service
|
|
@@ -7,6 +7,18 @@ import {
|
|
|
7
7
|
} from '../../server/network/middlewares.js';
|
|
8
8
|
import { AtlasSpriteSheetService } from './atlas-sprite-sheet.service.js';
|
|
9
9
|
|
|
10
|
+
/* Streams one render as a file. Headers go on before the lookup, so a cross-origin
|
|
11
|
+
* client can read a 404 too. */
|
|
12
|
+
const blobHandler = (lookup) =>
|
|
13
|
+
controllerHandler(
|
|
14
|
+
async (req, res, options) => {
|
|
15
|
+
setCrossOriginHeaders(req, res);
|
|
16
|
+
const { buffer, mimetype, name } = await lookup(req, res, options);
|
|
17
|
+
return sendBlob(req, res, { buffer, mimetype, filename: name });
|
|
18
|
+
},
|
|
19
|
+
{ errorStatus: 404 },
|
|
20
|
+
);
|
|
21
|
+
|
|
10
22
|
const AtlasSpriteSheetController = buildCrudController(AtlasSpriteSheetService, {
|
|
11
23
|
get: serviceHandler(AtlasSpriteSheetService.get, { crossOrigin: true, pagination: true }),
|
|
12
24
|
getMetadata: serviceHandler(AtlasSpriteSheetService.getMetadata, {
|
|
@@ -16,15 +28,8 @@ const AtlasSpriteSheetController = buildCrudController(AtlasSpriteSheetService,
|
|
|
16
28
|
}),
|
|
17
29
|
generate: serviceHandler(AtlasSpriteSheetService.generate, { errorStatus: 500 }),
|
|
18
30
|
deleteByObjectLayerId: serviceHandler(AtlasSpriteSheetService.deleteByObjectLayerId, { errorStatus: 500 }),
|
|
19
|
-
blob:
|
|
20
|
-
|
|
21
|
-
// Set before the service call so cross-origin clients can read 404s too.
|
|
22
|
-
setCrossOriginHeaders(req, res);
|
|
23
|
-
const { buffer, mimetype, name } = await AtlasSpriteSheetService.blob(req, res, options);
|
|
24
|
-
return sendBlob(req, res, { buffer, mimetype, filename: name });
|
|
25
|
-
},
|
|
26
|
-
{ errorStatus: 404 },
|
|
27
|
-
),
|
|
31
|
+
blob: blobHandler(AtlasSpriteSheetService.blob),
|
|
32
|
+
idlePreview: blobHandler(AtlasSpriteSheetService.idlePreview),
|
|
28
33
|
});
|
|
29
34
|
|
|
30
35
|
export { AtlasSpriteSheetController };
|
|
@@ -69,14 +69,27 @@ const DirectionFramesSchema = new Schema(
|
|
|
69
69
|
{ _id: false },
|
|
70
70
|
);
|
|
71
71
|
/**
|
|
72
|
+
* One atlas per item key, kept in two renders of one layout, plus the still that
|
|
73
|
+
* stands in for the item wherever a single picture is wanted.
|
|
74
|
+
*
|
|
75
|
+
* `fileId` is the human-resolution PNG, at `metadata.upscaleFactor` pixels per
|
|
76
|
+
* cell. `minifyFileId` is the PNG the client runtime downloads through
|
|
77
|
+
* `GET /atlas-sprite-sheet/blob/:itemKey`, at `metadata.cellPixelDim` pixels per
|
|
78
|
+
* cell. `metadata` describes the minified render, so blob and metadata agree.
|
|
79
|
+
* `idlePreviewFileId` is the first down-idle frame cut out of `fileId`, served by
|
|
80
|
+
* `GET /atlas-sprite-sheet/idle-preview/:itemKey` to every editor and overlay.
|
|
81
|
+
*
|
|
72
82
|
* @typedef {Object} AtlasSpriteSheet
|
|
73
|
-
* @property {Types.ObjectId} fileId - Reference to File document
|
|
83
|
+
* @property {Types.ObjectId} fileId - Reference to the human-resolution PNG File document
|
|
84
|
+
* @property {Types.ObjectId} [minifyFileId] - Reference to the minified PNG File document
|
|
85
|
+
* @property {Types.ObjectId} [idlePreviewFileId] - Reference to the down-idle still File document
|
|
74
86
|
* @property {string} [cid] - IPFS Content Identifier for the atlas PNG
|
|
75
87
|
* @property {Object} metadata - Atlas sprite sheet metadata
|
|
76
88
|
* @property {string} metadata.itemKey - Item identifier key for texture reference
|
|
77
|
-
* @property {number} metadata.atlasWidth -
|
|
78
|
-
* @property {number} metadata.atlasHeight -
|
|
79
|
-
* @property {number} metadata.cellPixelDim -
|
|
89
|
+
* @property {number} metadata.atlasWidth - Minified atlas width in pixels
|
|
90
|
+
* @property {number} metadata.atlasHeight - Minified atlas height in pixels
|
|
91
|
+
* @property {number} metadata.cellPixelDim - Pixels per cell of the minified render
|
|
92
|
+
* @property {number} metadata.upscaleFactor - Pixels per cell of the human-resolution render
|
|
80
93
|
* @property {number} metadata.frame_duration - Duration of each frame in milliseconds
|
|
81
94
|
* @property {DirectionFrames} metadata.frames - Frame positions in atlas by direction
|
|
82
95
|
* @property {Date} createdAt - When the document was created
|
|
@@ -90,6 +103,18 @@ const AtlasSpriteSheetSchema = new Schema(
|
|
|
90
103
|
ref: 'File',
|
|
91
104
|
required: true,
|
|
92
105
|
},
|
|
106
|
+
// Absent until `cyberia ol --minify` renders it for this item.
|
|
107
|
+
minifyFileId: {
|
|
108
|
+
type: Schema.Types.ObjectId,
|
|
109
|
+
ref: 'File',
|
|
110
|
+
default: null,
|
|
111
|
+
},
|
|
112
|
+
// The down-idle still every preview reads; absent until an atlas write fills it.
|
|
113
|
+
idlePreviewFileId: {
|
|
114
|
+
type: Schema.Types.ObjectId,
|
|
115
|
+
ref: 'File',
|
|
116
|
+
default: null,
|
|
117
|
+
},
|
|
93
118
|
cid: {
|
|
94
119
|
type: String,
|
|
95
120
|
default: '',
|
|
@@ -99,7 +124,8 @@ const AtlasSpriteSheetSchema = new Schema(
|
|
|
99
124
|
itemKey: { type: String, required: true, trim: true },
|
|
100
125
|
atlasWidth: { type: Number, required: true, min: 1 },
|
|
101
126
|
atlasHeight: { type: Number, required: true, min: 1 },
|
|
102
|
-
cellPixelDim: { type: Number, required: true, min: 1
|
|
127
|
+
cellPixelDim: { type: Number, required: true, min: 1 },
|
|
128
|
+
upscaleFactor: { type: Number, required: false, min: 1 },
|
|
103
129
|
frame_duration: { type: Number, min: 0, default: 100 },
|
|
104
130
|
frames: { type: DirectionFramesSchema, required: true },
|
|
105
131
|
},
|
|
@@ -113,6 +139,8 @@ const AtlasSpriteSheetSchema = new Schema(
|
|
|
113
139
|
// Indexes for efficient querying
|
|
114
140
|
AtlasSpriteSheetSchema.index({ 'metadata.itemKey': 1 }, { unique: true });
|
|
115
141
|
AtlasSpriteSheetSchema.index({ fileId: 1 });
|
|
142
|
+
AtlasSpriteSheetSchema.index({ minifyFileId: 1 });
|
|
143
|
+
AtlasSpriteSheetSchema.index({ idlePreviewFileId: 1 });
|
|
116
144
|
// Pre-save validation
|
|
117
145
|
AtlasSpriteSheetSchema.pre('save', function () {
|
|
118
146
|
if (!this.fileId || !this.metadata) {
|
|
@@ -127,6 +155,8 @@ class AtlasSpriteSheetDto {
|
|
|
127
155
|
return {
|
|
128
156
|
_id: 1,
|
|
129
157
|
fileId: 1,
|
|
158
|
+
minifyFileId: 1,
|
|
159
|
+
idlePreviewFileId: 1,
|
|
130
160
|
cid: 1,
|
|
131
161
|
metadata: 1,
|
|
132
162
|
createdAt: 1,
|
|
@@ -144,6 +174,7 @@ class AtlasSpriteSheetDto {
|
|
|
144
174
|
'metadata.atlasWidth': 1,
|
|
145
175
|
'metadata.atlasHeight': 1,
|
|
146
176
|
'metadata.cellPixelDim': 1,
|
|
177
|
+
'metadata.upscaleFactor': 1,
|
|
147
178
|
'metadata.frame_duration': 1,
|
|
148
179
|
'metadata.frames': 1,
|
|
149
180
|
createdAt: 1,
|
|
@@ -23,6 +23,11 @@ class AtlasSpriteSheetRouter {
|
|
|
23
23
|
async (req, res) => await AtlasSpriteSheetController.deleteByObjectLayerId(req, res, options),
|
|
24
24
|
);
|
|
25
25
|
router.get(`/blob/:itemKey`, async (req, res) => await AtlasSpriteSheetController.blob(req, res, options));
|
|
26
|
+
// The down-idle still of an item, for every editor and overlay that shows one picture of it.
|
|
27
|
+
router.get(
|
|
28
|
+
`/idle-preview/:itemKey`,
|
|
29
|
+
async (req, res) => await AtlasSpriteSheetController.idlePreview(req, res, options),
|
|
30
|
+
);
|
|
26
31
|
// Metadata endpoints: returns itemKey, atlasWidth, atlasHeight, cellPixelDim, frames (no fileId).
|
|
27
32
|
// Client fetches /metadata/:itemKey once, caches it, then fetches /blob/:itemKey for the PNG.
|
|
28
33
|
router.get(
|