cyberia 3.0.2 → 3.1.3

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 (182) hide show
  1. package/{.env.production → .env.example} +20 -2
  2. package/.github/workflows/engine-cyberia.cd.yml +41 -10
  3. package/.github/workflows/engine-cyberia.ci.yml +53 -14
  4. package/.github/workflows/ghpkg.ci.yml +1 -1
  5. package/.github/workflows/gitlab.ci.yml +1 -1
  6. package/.github/workflows/hardhat.ci.yml +82 -0
  7. package/.github/workflows/npmpkg.ci.yml +37 -8
  8. package/.github/workflows/publish.ci.yml +5 -5
  9. package/.github/workflows/publish.cyberia.ci.yml +5 -5
  10. package/.github/workflows/pwa-microservices-template-page.cd.yml +3 -3
  11. package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
  12. package/.github/workflows/release.cd.yml +3 -2
  13. package/.vscode/extensions.json +9 -8
  14. package/.vscode/settings.json +3 -2
  15. package/CHANGELOG.md +533 -290
  16. package/CLI-HELP.md +79 -53
  17. package/WHITE-PAPER.md +1540 -0
  18. package/bin/build.js +16 -11
  19. package/bin/cyberia.js +959 -8
  20. package/bin/deploy.js +103 -270
  21. package/bin/file.js +2 -1
  22. package/bin/index.js +959 -8
  23. package/bin/vs.js +3 -3
  24. package/conf.js +277 -77
  25. package/deployment.yaml +218 -4
  26. package/hardhat/.env.example +31 -0
  27. package/hardhat/README.md +531 -0
  28. package/hardhat/WHITE-PAPER.md +1540 -0
  29. package/hardhat/contracts/ObjectLayerToken.sol +391 -0
  30. package/hardhat/deployments/.gitkeep +0 -0
  31. package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
  32. package/hardhat/hardhat.config.js +136 -0
  33. package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
  34. package/hardhat/networks/besu-object-layer.network.json +138 -0
  35. package/hardhat/package-lock.json +7628 -0
  36. package/hardhat/package.json +45 -0
  37. package/hardhat/scripts/deployObjectLayerToken.js +98 -0
  38. package/hardhat/test/ObjectLayerToken.js +590 -0
  39. package/jsdoc.dd-cyberia.json +59 -0
  40. package/jsdoc.json +20 -13
  41. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
  42. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
  43. package/manifests/deployment/dd-cyberia-development/deployment.yaml +490 -0
  44. package/manifests/deployment/dd-cyberia-development/proxy.yaml +261 -0
  45. package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +132 -0
  46. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  47. package/manifests/deployment/dd-test-development/deployment.yaml +52 -52
  48. package/manifests/deployment/dd-test-development/proxy.yaml +4 -4
  49. package/manifests/pv-pvc-dd.yaml +1 -1
  50. package/package.json +60 -50
  51. package/proxy.yaml +128 -9
  52. package/pv-pvc.yaml +132 -0
  53. package/scripts/k3s-node-setup.sh +1 -1
  54. package/scripts/ports-ls.sh +2 -0
  55. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +3 -1
  56. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +1 -2
  57. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +40 -7
  58. package/src/api/document/document.service.js +1 -1
  59. package/src/api/file/file.controller.js +3 -1
  60. package/src/api/file/file.service.js +28 -5
  61. package/src/api/ipfs/ipfs.service.js +2 -2
  62. package/src/api/object-layer/object-layer.controller.js +6 -2
  63. package/src/api/object-layer/object-layer.model.js +67 -21
  64. package/src/api/object-layer/object-layer.router.js +668 -42
  65. package/src/api/object-layer/object-layer.service.js +10 -16
  66. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +1 -2
  67. package/src/api/user/user.router.js +10 -5
  68. package/src/api/user/user.service.js +7 -7
  69. package/src/cli/baremetal.js +6 -10
  70. package/src/cli/cloud-init.js +0 -3
  71. package/src/cli/db.js +54 -71
  72. package/src/cli/deploy.js +64 -12
  73. package/src/cli/env.js +5 -5
  74. package/src/cli/fs.js +0 -2
  75. package/src/cli/image.js +0 -3
  76. package/src/cli/index.js +41 -13
  77. package/src/cli/monitor.js +5 -6
  78. package/src/cli/repository.js +329 -46
  79. package/src/cli/run.js +210 -122
  80. package/src/cli/secrets.js +1 -3
  81. package/src/cli/ssh.js +1 -1
  82. package/src/client/Itemledger.index.js +1 -959
  83. package/src/client/Underpost.index.js +36 -0
  84. package/src/client/components/core/AgGrid.js +20 -5
  85. package/src/client/components/core/Alert.js +2 -2
  86. package/src/client/components/core/Content.js +22 -3
  87. package/src/client/components/core/Docs.js +30 -6
  88. package/src/client/components/core/FileExplorer.js +71 -4
  89. package/src/client/components/core/Input.js +1 -1
  90. package/src/client/components/core/Modal.js +22 -6
  91. package/src/client/components/core/PublicProfile.js +3 -3
  92. package/src/client/components/core/RichText.js +1 -2
  93. package/src/client/components/core/Router.js +34 -1
  94. package/src/client/components/core/Worker.js +1 -1
  95. package/src/client/components/cryptokoyn/CssCryptokoyn.js +63 -1
  96. package/src/client/components/cyberia/ObjectLayerEngineModal.js +145 -119
  97. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +64 -6
  98. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +1 -0
  99. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +44 -2
  100. package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +0 -1
  101. package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +64 -2
  102. package/src/client/components/cyberia-portal/RoutesCyberiaPortal.js +1 -0
  103. package/src/client/components/itemledger/CssItemledger.js +62 -0
  104. package/src/client/components/underpost/CommonUnderpost.js +29 -0
  105. package/src/client/components/underpost/CssUnderpost.js +281 -0
  106. package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +879 -0
  107. package/src/client/components/underpost/DocumentSearchProvider.js +448 -0
  108. package/src/client/components/underpost/ElementsUnderpost.js +38 -0
  109. package/src/client/components/underpost/LabGalleryUnderpost.js +82 -0
  110. package/src/client/components/underpost/LogInUnderpost.js +23 -0
  111. package/src/client/components/underpost/LogOutUnderpost.js +15 -0
  112. package/src/client/components/underpost/MenuUnderpost.js +691 -0
  113. package/src/client/components/underpost/RoutesUnderpost.js +47 -0
  114. package/src/client/components/underpost/SettingsUnderpost.js +16 -0
  115. package/src/client/components/underpost/SignUpUnderpost.js +9 -0
  116. package/src/client/components/underpost/SocketIoUnderpost.js +54 -0
  117. package/src/client/components/underpost/TranslateUnderpost.js +10 -0
  118. package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
  119. package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
  120. package/src/client/public/cryptokoyn/microdata.json +85 -0
  121. package/src/client/public/cryptokoyn/site.webmanifest +57 -0
  122. package/src/client/public/cryptokoyn/sitemap +3 -3
  123. package/src/client/public/default/sitemap +3 -3
  124. package/src/client/public/itemledger/browserconfig.xml +2 -2
  125. package/src/client/public/itemledger/manifest.webmanifest +4 -4
  126. package/src/client/public/itemledger/microdata.json +71 -0
  127. package/src/client/public/itemledger/sitemap +3 -3
  128. package/src/client/public/itemledger/yandex-browser-manifest.json +2 -2
  129. package/src/client/public/test/sitemap +3 -3
  130. package/src/client/services/object-layer/object-layer.management.js +23 -4
  131. package/src/client/ssr/body/404.js +15 -11
  132. package/src/client/ssr/body/500.js +15 -11
  133. package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
  134. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +83 -0
  135. package/src/client/ssr/head/PwaItemledger.js +60 -0
  136. package/src/client/ssr/head/UnderpostScripts.js +6 -0
  137. package/src/client/ssr/offline/NoNetworkConnection.js +11 -10
  138. package/src/client/ssr/pages/Test.js +11 -10
  139. package/src/client.build.js +0 -3
  140. package/src/client.dev.js +0 -3
  141. package/src/db/DataBaseProvider.js +17 -2
  142. package/src/db/mariadb/MariaDB.js +14 -9
  143. package/src/db/mongo/MongooseDB.js +17 -1
  144. package/src/index.js +1 -1
  145. package/src/proxy.js +0 -3
  146. package/src/runtime/express/Express.js +15 -9
  147. package/src/runtime/lampp/Lampp.js +6 -13
  148. package/src/server/auth.js +12 -14
  149. package/src/server/backup.js +2 -3
  150. package/src/server/besu-genesis-generator.js +1630 -0
  151. package/src/server/client-build-docs.js +126 -17
  152. package/src/server/client-build-live.js +9 -18
  153. package/src/server/client-build.js +203 -75
  154. package/src/server/client-dev-server.js +14 -13
  155. package/src/server/conf.js +376 -164
  156. package/src/server/cron.js +2 -1
  157. package/src/server/dns.js +28 -12
  158. package/src/server/downloader.js +0 -2
  159. package/src/server/logger.js +27 -9
  160. package/src/server/object-layer.js +92 -16
  161. package/src/server/peer.js +0 -2
  162. package/src/server/process.js +1 -50
  163. package/src/server/proxy.js +4 -8
  164. package/src/server/runtime.js +5 -8
  165. package/src/server/semantic-layer-generator.js +1 -0
  166. package/src/server/ssr.js +0 -3
  167. package/src/server/start.js +19 -12
  168. package/src/server/tls.js +0 -2
  169. package/src/server.js +0 -4
  170. package/.env.development +0 -43
  171. package/.env.test +0 -43
  172. package/hardhat/contracts/CryptoKoyn.sol +0 -59
  173. package/hardhat/contracts/ItemLedger.sol +0 -73
  174. package/hardhat/contracts/Lock.sol +0 -34
  175. package/hardhat/hardhat.config.cjs +0 -45
  176. package/hardhat/ignition/modules/Lock.js +0 -18
  177. package/hardhat/networks/cryptokoyn-itemledger.network.json +0 -29
  178. package/hardhat/scripts/deployCryptokoyn.cjs +0 -25
  179. package/hardhat/scripts/deployItemledger.cjs +0 -25
  180. package/hardhat/test/Lock.js +0 -126
  181. package/hardhat/white-paper.md +0 -581
  182. package/white-paper.md +0 -581
@@ -1,7 +1,7 @@
1
1
  DEPLOY_ID=dd-default
2
2
  NODE_ENV=production
3
3
  PORT=3000
4
- JWT_SECRET=test
4
+ JWT_SECRET=changethis
5
5
  REFRESH_EXPIRE_MINUTES=5
6
6
  ACCESS_EXPIRE_MINUTES=1440
7
7
  NODE_OPTIONS=--max-old-space-size=8192
@@ -15,8 +15,25 @@ DEFAULT_DEPLOY_ID=dd-default
15
15
  DEFAULT_DEPLOY_HOST=default.net
16
16
  DEFAULT_DEPLOY_PATH=/
17
17
  MARIADB_HOST=changethis
18
+ MARIADB_PORT=3306
18
19
  MARIADB_USER=changethis
19
20
  MARIADB_PASSWORD=changethis
21
+ DB_PROVIDER=mongoose
22
+ DB_HOST=mongodb://127.0.0.1:27017
23
+ DB_NAME=default
24
+ SMTP_HOST=changethis
25
+ SMTP_PORT=465
26
+ SMTP_SECURE=true
27
+ SMTP_AUTH_USER=changethis
28
+ SMTP_AUTH_PASS=changethis
29
+ MAILER_SENDER_EMAIL=noreply@default.net
30
+ MAILER_SENDER_NAME=Default
31
+ DDNS_HOST=changethis
32
+ DDNS_PROVIDER=dondominio
33
+ DDNS_API_KEY=changethis
34
+ DDNS_USER=changethis
35
+ VALKEY_HOST=127.0.0.1
36
+ VALKEY_PORT=6379
20
37
  WIFI_PASSWORD=changethis
21
38
  CLOUDINARY_CLOUD_NAME=changethis
22
39
  CLOUDINARY_API_KEY=changethis
@@ -53,4 +70,5 @@ ENABLE_FILE_LOGS=false
53
70
  BASE_API=api
54
71
  CERTBOT_LIVE_PATH=changethis
55
72
  CERTBOT_LIVE_PATH_WINDOWS=changethis
56
- DEV_PROXY_PORT_OFFSET=200
73
+ DEV_PROXY_PORT_OFFSET=200
74
+ DOTENV_CONFIG_QUIET=true
@@ -1,5 +1,16 @@
1
1
  name: CD | Engine cyberia | remote ssh
2
- on: [push]
2
+ on:
3
+ push:
4
+ workflow_dispatch:
5
+ inputs:
6
+ job:
7
+ description: 'Job to run (deploy, sync-and-deploy, init)'
8
+ required: true
9
+ type: choice
10
+ options:
11
+ - deploy
12
+ - sync-and-deploy
13
+ - init
3
14
  permissions:
4
15
  contents: write
5
16
  packages: write
@@ -7,12 +18,17 @@ permissions:
7
18
 
8
19
  jobs:
9
20
  deploy:
10
- if: github.repository == 'underpostnet/engine' && startsWith(github.event.head_commit.message, 'cd(ssh-engine-cyberia)')
21
+ if: >-
22
+ github.repository == 'underpostnet/engine'
23
+ && (
24
+ startsWith(github.event.head_commit.message, 'cd(ssh-engine-cyberia)')
25
+ || (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'deploy')
26
+ )
11
27
  name: Remote SSH deployment
12
28
  runs-on: ubuntu-latest
13
29
  steps:
14
30
  - name: Run remote deploy via SSH
15
- uses: appleboy/ssh-action@v1.2.2
31
+ uses: appleboy/ssh-action@v1.2.5
16
32
  with:
17
33
  # Remote host (secret)
18
34
  host: ${{ secrets.SSH_HOST }}
@@ -31,15 +47,21 @@ jobs:
31
47
  set -e
32
48
  echo "Starting remote deploy"
33
49
  cd /home/dd/engine
34
- sudo -n -- /bin/bash -lc "node bin run pull"
50
+ sudo -n -- /bin/bash -lc "underpost run pull"
51
+ sudo -n -- /bin/bash -lc "npm install"
35
52
  sudo -n -- /bin/bash -lc "node bin run deploy dd-cyberia"
36
53
  sync-and-deploy:
37
- if: github.repository == 'underpostnet/engine' && startsWith(github.event.head_commit.message, 'cd(ssh-sync-engine-cyberia)')
54
+ if: >-
55
+ github.repository == 'underpostnet/engine'
56
+ && (
57
+ startsWith(github.event.head_commit.message, 'cd(ssh-sync-engine-cyberia)')
58
+ || (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'sync-and-deploy')
59
+ )
38
60
  name: Remote SSH sync and deploy
39
61
  runs-on: ubuntu-latest
40
62
  steps:
41
63
  - name: Run remote deploy via SSH
42
- uses: appleboy/ssh-action@v1.2.2
64
+ uses: appleboy/ssh-action@v1.2.5
43
65
  with:
44
66
  # Remote host (secret)
45
67
  host: ${{ secrets.SSH_HOST }}
@@ -58,16 +80,24 @@ jobs:
58
80
  set -e
59
81
  echo "Starting remote sync and deploy"
60
82
  cd /home/dd/engine
61
- sudo -n -- /bin/bash -lc "node bin run pull"
83
+ sudo -n -- /bin/bash -lc "underpost run pull"
84
+ sudo -n -- /bin/bash -lc "npm install"
85
+ sudo -n -- /bin/bash -lc "underpost fs src/client/public/cyberia --git --pull --recursive --deploy-id dd-cyberia"
86
+ sudo -n -- /bin/bash -lc "underpost fs src/client/public/underpost --git --pull --recursive --deploy-id dd-cyberia --storage-file-path './engine-private/conf/dd-cyberia/storage.underpost.json'"
62
87
  sudo -n -- /bin/bash -lc "npm run test"
63
88
  sudo -n -- /bin/bash -lc "node bin run sync --kubeadm --deploy-id-cron-jobs none --timeout-response 300000ms dd-cyberia,1,,localhost/rockylinux9-underpost:v2.98.3 --cmd 'npm install -g npm@11.2.0,npm install -g underpost,underpost secret underpost --create-from-file /etc/config/.env.production,underpost start --build --run dd-cyberia production'"
64
89
  init:
65
- if: github.repository == 'underpostnet/engine' && startsWith(github.event.head_commit.message, 'cd(ssh-init-engine-cyberia)')
90
+ if: >-
91
+ github.repository == 'underpostnet/engine'
92
+ && (
93
+ startsWith(github.event.head_commit.message, 'cd(ssh-init-engine-cyberia)')
94
+ || (github.event_name == 'workflow_dispatch' && github.event.inputs.job == 'init')
95
+ )
66
96
  name: Remote SSH init deployment
67
97
  runs-on: ubuntu-latest
68
98
  steps:
69
99
  - name: Run remote deploy via SSH
70
- uses: appleboy/ssh-action@v1.2.2
100
+ uses: appleboy/ssh-action@v1.2.5
71
101
  with:
72
102
  # Remote host (secret)
73
103
  host: ${{ secrets.SSH_HOST }}
@@ -86,7 +116,8 @@ jobs:
86
116
  set -e
87
117
  echo "Starting init deploy"
88
118
  cd /home/dd/engine
89
- sudo -n -- /bin/bash -lc "node bin run pull"
119
+ sudo -n -- /bin/bash -lc "underpost run pull"
120
+ sudo -n -- /bin/bash -lc "npm install"
90
121
  sudo -n -- /bin/bash -lc "node bin deploy dd-cyberia production --kubeadm --sync --build-manifest --image 'localhost/rockylinux9-underpost:v2.98.3' --timeout-response 300000ms --versions green --replicas 1 --cmd 'npm install -g npm@11.2.0,npm install -g underpost,underpost secret underpost --create-from-file /etc/config/.env.production,underpost start --build --run dd-cyberia production'"
91
122
  sudo -n -- /bin/bash -lc "node bin deploy dd-cyberia production --kubeadm --disable-update-proxy"
92
123
  sudo -n -- /bin/bash -lc "node bin monitor dd-cyberia production --ready-deployment --promote --timeout-response 300000ms --versions green --replicas 1"
@@ -4,15 +4,36 @@ on:
4
4
  workflows: ['CI | Publish npm repository package']
5
5
  types:
6
6
  - completed
7
+ workflow_dispatch:
8
+ inputs:
9
+ sync:
10
+ description: 'Trigger sync-and-deploy CD after build'
11
+ required: false
12
+ default: 'false'
13
+ type: choice
14
+ options:
15
+ - 'true'
16
+ - 'false'
17
+ message:
18
+ description: 'Commit message for the build'
19
+ required: false
20
+ default: ''
21
+ deploy_type:
22
+ description: 'CD job type to dispatch (sync-and-deploy or init)'
23
+ required: false
24
+ default: 'sync-and-deploy'
25
+ type: choice
26
+ options:
27
+ - sync-and-deploy
28
+ - init
7
29
  permissions:
8
30
  contents: write
9
31
  packages: write
10
32
  id-token: write
11
33
  jobs:
12
34
  pwa-microservices-template:
35
+ if: github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success'
13
36
  name: Update github repo package Jobs
14
- env:
15
- SYNC: ${{ startsWith(github.event.workflow_run.head_commit.message, 'ci(package-pwa-microservices-template-sync-engine-cyberia)') }}
16
37
  runs-on: ubuntu-latest
17
38
  container:
18
39
  image: quay.io/rockylinux/rockylinux:9
@@ -21,7 +42,7 @@ jobs:
21
42
  packages: write
22
43
  id-token: write
23
44
  steps:
24
- - uses: actions/checkout@v3
45
+ - uses: actions/checkout@v6
25
46
 
26
47
  - name: Install required packages
27
48
  run: |
@@ -49,11 +70,29 @@ jobs:
49
70
  run: |
50
71
  cd .. && underpost clone underpostnet/pwa-microservices-template
51
72
  FULL_MSG=$(cd pwa-microservices-template && git log -1 --pretty=%B 2>/dev/null || echo "")
52
- LAST_COMMIT_MESSAGE=$(echo "$FULL_MSG" | sed '1d')
73
+ if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
74
+ if [ -n "${{ github.event.inputs.message }}" ]; then
75
+ LAST_COMMIT_MESSAGE="${{ github.event.inputs.message }}"
76
+ else
77
+ LAST_COMMIT_MESSAGE=$(echo "$FULL_MSG" | sed '1s/^[^:]*: [^ ]* //' | grep -v '^\[cd:' || true)
78
+ fi
79
+ SHOULD_CD="${{ github.event.inputs.sync }}"
80
+ DEPLOY_TYPE="${{ github.event.inputs.deploy_type }}"
81
+ else
82
+ LAST_COMMIT_MESSAGE=$(echo "$FULL_MSG" | sed '1s/^[^:]*: [^ ]* //' | grep -v '^\[cd:' || true)
83
+ CD_MARKER=$(echo "$FULL_MSG" | grep '^\[cd:engine-cyberia:' | head -1 || true)
84
+ if [ -n "$CD_MARKER" ]; then
85
+ SHOULD_CD="true"
86
+ DEPLOY_TYPE=$(echo "$CD_MARKER" | sed 's/\[cd:engine-cyberia:\(.*\)\]/\1/')
87
+ else
88
+ SHOULD_CD="false"
89
+ fi
90
+ fi
53
91
  if [ -z "$LAST_COMMIT_MESSAGE" ]; then
54
92
  LAST_COMMIT_MESSAGE="Update engine cyberia repository"
55
93
  fi
56
94
  echo "[INFO] Captured commit message: $LAST_COMMIT_MESSAGE"
95
+ echo "[INFO] Should CD: $SHOULD_CD, Deploy type: $DEPLOY_TYPE"
57
96
  underpost clone --bare underpostnet/engine-cyberia
58
97
  cd engine
59
98
  node bin/build dd-cyberia development
@@ -66,16 +105,16 @@ jobs:
66
105
  git add .
67
106
  git commit -m "$LAST_COMMIT_MESSAGE"
68
107
  underpost push . underpostnet/engine-cyberia
69
- if [ "${SYNC}" = "true" ]; then
70
- echo "[INFO] Init engine-cyberia deployment"
71
- underpost config set GITHUB_USERNAME underpostnet
72
- mkdir -p /home/dd
73
- sudo rm -rf /home/dd/engine
74
- cd /home/dd
75
- underpost clone underpostnet/engine
76
- cd engine
77
- npm install
78
- node bin run ssh-deploy sync-engine-cyberia
108
+ if [ "$SHOULD_CD" = "true" ]; then
109
+ if [ -z "$DEPLOY_TYPE" ]; then
110
+ DEPLOY_TYPE="sync-and-deploy"
111
+ fi
112
+ echo "[INFO] Dispatching engine-cyberia CD ${DEPLOY_TYPE}"
113
+ curl -s -X POST \
114
+ -H "Accept: application/vnd.github.v3+json" \
115
+ -H "Authorization: token ${{ secrets.GIT_AUTH_TOKEN }}" \
116
+ "https://api.github.com/repos/underpostnet/engine/actions/workflows/engine-cyberia.cd.yml/dispatches" \
117
+ -d "{\"ref\":\"master\",\"inputs\":{\"job\":\"${DEPLOY_TYPE}\"}}"
79
118
  else
80
119
  echo "[INFO] Deployment skipped"
81
120
  fi
@@ -20,7 +20,7 @@ jobs:
20
20
  packages: write
21
21
  id-token: write
22
22
  steps:
23
- - uses: actions/checkout@v3
23
+ - uses: actions/checkout@v6
24
24
 
25
25
  - name: Install required packages
26
26
  run: |
@@ -6,7 +6,7 @@ jobs:
6
6
  name: Update gitlab repo package Jobs
7
7
  runs-on: ubuntu-latest
8
8
  steps:
9
- - uses: actions/checkout@v4
9
+ - uses: actions/checkout@v6
10
10
  with:
11
11
  fetch-depth: 0
12
12
  lfs: true
@@ -0,0 +1,82 @@
1
+ # ─────────────────────────────────────────────────────────────────────────────
2
+ # CI | Hardhat – Compile, Test, Audit
3
+ # ─────────────────────────────────────────────────────────────────────────────
4
+ name: CI | Hardhat
5
+
6
+ on:
7
+ push:
8
+ paths:
9
+ - 'hardhat/**'
10
+ - '.github/workflows/hardhat.ci.yml'
11
+ pull_request:
12
+ paths:
13
+ - 'hardhat/**'
14
+ - '.github/workflows/hardhat.ci.yml'
15
+ workflow_dispatch:
16
+
17
+ permissions:
18
+ contents: read
19
+
20
+ jobs:
21
+ build-and-test:
22
+ name: Compile, Test & Audit
23
+ runs-on: ubuntu-latest
24
+ defaults:
25
+ run:
26
+ working-directory: hardhat
27
+
28
+ strategy:
29
+ matrix:
30
+ node-version: ['24']
31
+
32
+ steps:
33
+ - name: Checkout repository
34
+ uses: actions/checkout@v6
35
+
36
+ - name: Setup Node.js ${{ matrix.node-version }}
37
+ uses: actions/setup-node@v6
38
+ with:
39
+ node-version: ${{ matrix.node-version }}
40
+ cache: 'npm'
41
+ cache-dependency-path: hardhat/package-lock.json
42
+
43
+ # ── Install ──────────────────────────────────────────────────────────
44
+ # Use `npm ci` for reproducible installs from the lockfile.
45
+ # Never install packages globally in CI.
46
+ - name: Install dependencies (npm ci)
47
+ run: npm ci
48
+
49
+ # ── Security Audit ───────────────────────────────────────────────────
50
+ # Production deps are what ships on-chain – fail on any moderate+ vuln.
51
+ - name: npm audit – production deps (moderate+)
52
+ run: npm audit --audit-level=moderate --omit=dev
53
+
54
+ # Dev/toolchain deps (hardhat, solidity-coverage, etc.) carry known
55
+ # transitive vulnerabilities that upstream hasn't patched yet.
56
+ # Log them for visibility but don't block the pipeline.
57
+ - name: npm audit – dev deps (informational)
58
+ run: npm audit --audit-level=moderate || true
59
+
60
+ # ── Compile ──────────────────────────────────────────────────────────
61
+ - name: Compile Solidity contracts
62
+ run: npx hardhat compile
63
+
64
+ # ── Test ─────────────────────────────────────────────────────────────
65
+ - name: Run tests
66
+ run: npx hardhat test
67
+ env:
68
+ REPORT_GAS: 'true'
69
+
70
+ # ── Coverage (optional, only on primary Node version) ────────────────
71
+ - name: Solidity coverage
72
+ if: matrix.node-version == '20'
73
+ run: npx hardhat coverage
74
+
75
+ # ── Lockfile integrity check ─────────────────────────────────────────
76
+ # Fail if package-lock.json is out of sync with package.json
77
+ - name: Verify lockfile is up to date
78
+ run: |
79
+ git diff --exit-code package-lock.json || {
80
+ echo "::error::package-lock.json is out of sync with package.json. Run 'npm install' locally and commit the lockfile."
81
+ exit 1
82
+ }
@@ -4,6 +4,20 @@ on:
4
4
  branches: ['master']
5
5
  pull_request:
6
6
  branches: ['master']
7
+ workflow_dispatch:
8
+ inputs:
9
+ message:
10
+ description: 'Changelog message for the build'
11
+ required: false
12
+ default: ''
13
+ deploy_conf_id:
14
+ description: 'Engine conf ID to dispatch after build (e.g., engine-core, engine-cyberia)'
15
+ required: false
16
+ default: ''
17
+ deploy_type:
18
+ description: 'Deployment type for the engine conf CD (sync-and-deploy or init)'
19
+ required: false
20
+ default: ''
7
21
  permissions:
8
22
  contents: write
9
23
  packages: write
@@ -12,7 +26,10 @@ jobs:
12
26
  pwa-microservices-template:
13
27
  if: |
14
28
  github.repository == 'underpostnet/engine'
15
- && startsWith(github.event.head_commit.message, 'ci(package-pwa-microservices-template')
29
+ && (
30
+ startsWith(github.event.head_commit.message, 'ci(package-pwa-microservices-template')
31
+ || github.event_name == 'workflow_dispatch'
32
+ )
16
33
  name: Update npm repo package Jobs
17
34
  runs-on: ubuntu-latest
18
35
  container:
@@ -22,7 +39,7 @@ jobs:
22
39
  packages: write
23
40
  id-token: write
24
41
  steps:
25
- - uses: actions/checkout@v3
42
+ - uses: actions/checkout@v6
26
43
 
27
44
  - name: Install required packages
28
45
  run: |
@@ -36,13 +53,19 @@ jobs:
36
53
 
37
54
  - name: Capture commit message
38
55
  run: |
39
- FULL_MSG="${{ github.event.head_commit.message }}"
40
- REST="$(echo "$FULL_MSG" | tail -n +2 | awk 'NR==1{first=$0; has_first=1; next} NR==2{print first " " $0; has_first=0; next} {print} END{if(has_first) print first}')"
41
- LAST_COMMIT_MESSAGE="${REST:-$FULL_MSG}"
56
+ if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
57
+ LAST_COMMIT_MESSAGE="${{ github.event.inputs.message }}"
58
+ if [ -z "$LAST_COMMIT_MESSAGE" ]; then
59
+ LAST_COMMIT_MESSAGE="Update repository"
60
+ fi
61
+ else
62
+ FULL_MSG="${{ github.event.head_commit.message }}"
63
+ REST="$(echo "$FULL_MSG" | tail -n +2 | awk 'NR==1{first=$0; has_first=1; next} NR==2{print first " " $0; has_first=0; next} {print} END{if(has_first) print first}')"
64
+ LAST_COMMIT_MESSAGE="${REST:-$FULL_MSG}"
65
+ fi
42
66
  echo "LAST_COMMIT_MESSAGE<<EOF" >> $GITHUB_ENV
43
67
  echo "$LAST_COMMIT_MESSAGE" >> $GITHUB_ENV
44
68
  echo "EOF" >> $GITHUB_ENV
45
- echo "[INFO] Full commit message: $FULL_MSG"
46
69
  echo "[INFO] Extracted payload: $LAST_COMMIT_MESSAGE"
47
70
 
48
71
  - name: Install dependencies
@@ -62,11 +85,17 @@ jobs:
62
85
  run: |
63
86
  cd .. && underpost clone underpostnet/pwa-microservices-template
64
87
  cd engine
65
- npm run update-template
88
+ npm run update:template
66
89
  cd ../pwa-microservices-template
67
90
  git remote set-url origin git@github.com:underpostnet/pwa-microservices-template.git
68
91
  git add .
69
92
  git config user.name 'underpostnet'
70
93
  git config user.email 'fcoverdugoa@underpost.net'
71
- underpost cmt . ci package-pwa-microservices-template-ghpkg "$LAST_COMMIT_MESSAGE"
94
+ COMMIT_MSG="$LAST_COMMIT_MESSAGE"
95
+ DEPLOY_CONF_ID="${{ github.event.inputs.deploy_conf_id }}"
96
+ DEPLOY_TYPE="${{ github.event.inputs.deploy_type }}"
97
+ if [ -n "$DEPLOY_CONF_ID" ] && [ -n "$DEPLOY_TYPE" ]; then
98
+ COMMIT_MSG=$(printf '%s\n[cd:%s:%s]' "$COMMIT_MSG" "$DEPLOY_CONF_ID" "$DEPLOY_TYPE")
99
+ fi
100
+ underpost cmt . ci package-pwa-microservices-template-ghpkg "$COMMIT_MSG"
72
101
  underpost push . underpostnet/pwa-microservices-template
@@ -12,9 +12,9 @@ jobs:
12
12
  contents: read
13
13
  id-token: write
14
14
  steps:
15
- - uses: actions/checkout@v4
15
+ - uses: actions/checkout@v6
16
16
 
17
- - uses: actions/setup-node@v4
17
+ - uses: actions/setup-node@v6
18
18
  with:
19
19
  node-version: '24.x'
20
20
  registry-url: 'https://registry.npmjs.org'
@@ -35,9 +35,9 @@ jobs:
35
35
  contents: read
36
36
  id-token: write
37
37
  steps:
38
- - uses: actions/checkout@v4
38
+ - uses: actions/checkout@v6
39
39
 
40
- - uses: actions/setup-node@v4
40
+ - uses: actions/setup-node@v6
41
41
  with:
42
42
  node-version: '24.x'
43
43
  registry-url: 'https://registry.npmjs.org'
@@ -52,7 +52,7 @@ jobs:
52
52
  run: npm publish --provenance --access public
53
53
 
54
54
  - name: Setup node to publish to GitHub Packages
55
- uses: actions/setup-node@v4
55
+ uses: actions/setup-node@v6
56
56
  with:
57
57
  node-version: '24.x'
58
58
  registry-url: 'https://npm.pkg.github.com'
@@ -12,9 +12,9 @@ jobs:
12
12
  contents: read
13
13
  id-token: write
14
14
  steps:
15
- - uses: actions/checkout@v4
15
+ - uses: actions/checkout@v6
16
16
 
17
- - uses: actions/setup-node@v4
17
+ - uses: actions/setup-node@v6
18
18
  with:
19
19
  node-version: '24.x'
20
20
  registry-url: 'https://registry.npmjs.org'
@@ -35,9 +35,9 @@ jobs:
35
35
  contents: read
36
36
  id-token: write
37
37
  steps:
38
- - uses: actions/checkout@v4
38
+ - uses: actions/checkout@v6
39
39
 
40
- - uses: actions/setup-node@v4
40
+ - uses: actions/setup-node@v6
41
41
  with:
42
42
  node-version: '24.x'
43
43
  registry-url: 'https://registry.npmjs.org'
@@ -52,7 +52,7 @@ jobs:
52
52
  run: npm publish --provenance --access public
53
53
 
54
54
  - name: Setup node to publish to GitHub Packages
55
- uses: actions/setup-node@v4
55
+ uses: actions/setup-node@v6
56
56
  with:
57
57
  node-version: '24.x'
58
58
  registry-url: 'https://npm.pkg.github.com'
@@ -33,7 +33,7 @@ jobs:
33
33
  image: quay.io/rockylinux/rockylinux:9
34
34
  steps:
35
35
  - name: Checkout
36
- uses: actions/checkout@v4
36
+ uses: actions/checkout@v6
37
37
  # with:
38
38
  # lfs: true
39
39
  # - name: Checkout LFS objects
@@ -56,7 +56,7 @@ jobs:
56
56
  node bin new --default-conf --conf-workflow-id dd-github-pages
57
57
  node bin new --deploy-id dd-github-pages
58
58
  underpost env dd-github-pages production
59
- env-cmd -f .env.production node bin/deploy build-full-client dd-github-pages underpostnet.github.io /pwa-microservices-template-ghpkg
59
+ NODE_ENV=production node bin client dd-github-pages '' underpostnet.github.io /pwa-microservices-template-ghpkg
60
60
  # git lfs install
61
61
  # git lfs track
62
62
  # git lfs ls-files
@@ -64,7 +64,7 @@ jobs:
64
64
  - name: Setup Pages
65
65
  uses: actions/configure-pages@v5
66
66
  - name: Upload artifact
67
- uses: actions/upload-pages-artifact@v3
67
+ uses: actions/upload-pages-artifact@v4
68
68
  with:
69
69
  # Upload entire repository
70
70
  path: './public/underpostnet.github.io/pwa-microservices-template-ghpkg/'
@@ -11,7 +11,7 @@ jobs:
11
11
  options: --entrypoint /bin/bash
12
12
  steps:
13
13
  - name: Clone repository
14
- uses: actions/checkout@v3
14
+ uses: actions/checkout@v6
15
15
 
16
16
  - name: Install required packages
17
17
  run: |
@@ -12,7 +12,7 @@ jobs:
12
12
  runs-on: ubuntu-latest
13
13
  steps:
14
14
  - name: Run remote deploy via SSH
15
- uses: appleboy/ssh-action@v1.2.2
15
+ uses: appleboy/ssh-action@v1.2.5
16
16
  with:
17
17
  # Remote host (secret)
18
18
  host: ${{ secrets.SSH_HOST }}
@@ -31,7 +31,8 @@ jobs:
31
31
  set -e
32
32
  echo "Starting remote release deploy"
33
33
  cd /home/dd/engine
34
- sudo -n -- /bin/bash -lc "node bin run pull"
34
+ sudo -n -- /bin/bash -lc "underpost run pull"
35
+ sudo -n -- /bin/bash -lc "npm install"
35
36
  sudo -n -- /bin/bash -lc "underpost run secret"
36
37
  sudo -n -- /bin/bash -lc "npm install -g underpost"
37
38
  sudo -n -- /bin/bash -lc "underpost run secret"
@@ -1,9 +1,10 @@
1
1
  {
2
- "recommendations": [
3
- "antiantisepticeye.vscode-color-picker",
4
- "bashmish.es6-string-css",
5
- "eamodio.gitlens",
6
- "esbenp.prettier-vscode",
7
- "tobermory.es6-string-html",
8
- ],
9
- }
2
+ "recommendations": [
3
+ "anseki.vscode-color",
4
+ "bashmish.es6-string-css",
5
+ "eamodio.gitlens",
6
+ "esbenp.prettier-vscode",
7
+ "github.copilot-chat",
8
+ "tobermory.es6-string-html"
9
+ ]
10
+ }
@@ -2,8 +2,9 @@
2
2
  "editor.defaultFormatter": "esbenp.prettier-vscode",
3
3
  "editor.formatOnSave": true,
4
4
  "explorer.compactFolders": false,
5
- "javascript.preferences.importModuleSpecifierEnding": "js",
5
+ "js/ts.preferences.importModuleSpecifierEnding": "js",
6
6
  "[javascript]": {
7
- "editor.defaultFormatter": "esbenp.prettier-vscode",
7
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
8
8
  },
9
+ "editor.inlineSuggest.enabled": true
9
10
  }