underpost 3.1.2 → 3.2.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 (98) hide show
  1. package/.env.example +0 -2
  2. package/.github/workflows/ghpkg.ci.yml +4 -4
  3. package/.github/workflows/npmpkg.ci.yml +38 -7
  4. package/.github/workflows/pwa-microservices-template-page.cd.yml +3 -4
  5. package/.github/workflows/pwa-microservices-template-test.ci.yml +3 -3
  6. package/.github/workflows/release.cd.yml +4 -4
  7. package/CHANGELOG.md +365 -1
  8. package/CLI-HELP.md +55 -3
  9. package/README.md +7 -3
  10. package/bin/build.js +18 -12
  11. package/bin/deploy.js +205 -225
  12. package/bin/file.js +3 -0
  13. package/conf.js +4 -10
  14. package/jsdoc.json +1 -1
  15. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
  16. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
  17. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  18. package/manifests/deployment/dd-test-development/deployment.yaml +72 -50
  19. package/manifests/deployment/dd-test-development/proxy.yaml +13 -4
  20. package/manifests/deployment/playwright/deployment.yaml +1 -1
  21. package/nodemon.json +1 -1
  22. package/package.json +21 -14
  23. package/scripts/ports-ls.sh +2 -0
  24. package/scripts/rhel-grpc-setup.sh +56 -0
  25. package/src/api/file/file.ref.json +18 -0
  26. package/src/api/user/user.service.js +8 -7
  27. package/src/cli/cluster.js +7 -7
  28. package/src/cli/db.js +76 -242
  29. package/src/cli/deploy.js +104 -65
  30. package/src/cli/env.js +1 -0
  31. package/src/cli/fs.js +2 -1
  32. package/src/cli/index.js +50 -1
  33. package/src/cli/kubectl.js +211 -0
  34. package/src/cli/release.js +284 -0
  35. package/src/cli/repository.js +328 -112
  36. package/src/cli/run.js +283 -69
  37. package/src/cli/test.js +3 -3
  38. package/src/client/Default.index.js +3 -4
  39. package/src/client/components/core/Alert.js +2 -2
  40. package/src/client/components/core/AppStore.js +69 -0
  41. package/src/client/components/core/CalendarCore.js +2 -2
  42. package/src/client/components/core/Docs.js +9 -2
  43. package/src/client/components/core/DropDown.js +129 -17
  44. package/src/client/components/core/Keyboard.js +2 -2
  45. package/src/client/components/core/LogIn.js +2 -2
  46. package/src/client/components/core/LogOut.js +2 -2
  47. package/src/client/components/core/Modal.js +0 -1
  48. package/src/client/components/core/Panel.js +0 -1
  49. package/src/client/components/core/PanelForm.js +19 -19
  50. package/src/client/components/core/RichText.js +1 -2
  51. package/src/client/components/core/SocketIo.js +82 -29
  52. package/src/client/components/core/SocketIoHandler.js +75 -0
  53. package/src/client/components/core/Stream.js +143 -95
  54. package/src/client/components/core/Webhook.js +40 -7
  55. package/src/client/components/default/AppStoreDefault.js +5 -0
  56. package/src/client/components/default/LogInDefault.js +3 -3
  57. package/src/client/components/default/LogOutDefault.js +2 -2
  58. package/src/client/components/default/MenuDefault.js +5 -5
  59. package/src/client/components/default/SocketIoDefault.js +3 -51
  60. package/src/client/services/core/core.service.js +20 -8
  61. package/src/client/services/user/user.management.js +2 -2
  62. package/src/client/ssr/body/404.js +15 -11
  63. package/src/client/ssr/body/500.js +15 -11
  64. package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
  65. package/src/client/ssr/offline/NoNetworkConnection.js +11 -10
  66. package/src/client/ssr/pages/Test.js +11 -10
  67. package/src/index.js +24 -1
  68. package/src/runtime/express/Express.js +26 -9
  69. package/src/runtime/lampp/Dockerfile +9 -2
  70. package/src/runtime/lampp/Lampp.js +4 -3
  71. package/src/runtime/wp/Dockerfile +64 -0
  72. package/src/runtime/wp/Wp.js +497 -0
  73. package/src/server/auth.js +30 -6
  74. package/src/server/backup.js +19 -1
  75. package/src/server/client-build-docs.js +51 -110
  76. package/src/server/client-build.js +55 -64
  77. package/src/server/client-formatted.js +109 -57
  78. package/src/server/conf.js +19 -15
  79. package/src/server/ipfs-client.js +24 -1
  80. package/src/server/peer.js +8 -0
  81. package/src/server/runtime.js +25 -1
  82. package/src/server/start.js +21 -8
  83. package/src/ws/IoInterface.js +1 -10
  84. package/src/ws/IoServer.js +14 -33
  85. package/src/ws/core/channels/core.ws.chat.js +65 -20
  86. package/src/ws/core/channels/core.ws.mailer.js +113 -32
  87. package/src/ws/core/channels/core.ws.stream.js +90 -31
  88. package/src/ws/core/core.ws.connection.js +12 -33
  89. package/src/ws/core/core.ws.emit.js +10 -26
  90. package/src/ws/core/core.ws.server.js +25 -58
  91. package/src/ws/default/channels/default.ws.main.js +53 -12
  92. package/src/ws/default/default.ws.connection.js +26 -13
  93. package/src/ws/default/default.ws.server.js +30 -12
  94. package/src/client/components/default/ElementsDefault.js +0 -38
  95. package/src/ws/core/management/core.ws.chat.js +0 -8
  96. package/src/ws/core/management/core.ws.mailer.js +0 -16
  97. package/src/ws/core/management/core.ws.stream.js +0 -8
  98. package/src/ws/default/management/default.ws.main.js +0 -8
@@ -6,6 +6,7 @@ metadata:
6
6
  namespace: default
7
7
  labels:
8
8
  app: dd-test-development-blue
9
+ deploy-id: dd-test-development
9
10
  spec:
10
11
  replicas: 1
11
12
  selector:
@@ -15,10 +16,11 @@ spec:
15
16
  metadata:
16
17
  labels:
17
18
  app: dd-test-development-blue
19
+ deploy-id: dd-test-development
18
20
  spec:
19
21
  containers:
20
22
  - name: dd-test-development-blue
21
- image: localhost/rockylinux9-underpost:v3.1.2
23
+ image: localhost/rockylinux9-underpost:v3.2.0
22
24
 
23
25
  command:
24
26
  - /bin/sh
@@ -47,41 +49,50 @@ spec:
47
49
  selector:
48
50
  app: dd-test-development-blue
49
51
  ports:
50
- - name: 'tcp-4038'
52
+ - name: 'tcp-4046'
51
53
  protocol: TCP
52
- port: 4038
53
- targetPort: 4038
54
- - name: 'udp-4038'
54
+ port: 4046
55
+ targetPort: 4046
56
+ - name: 'udp-4046'
55
57
  protocol: UDP
56
- port: 4038
57
- targetPort: 4038
58
+ port: 4046
59
+ targetPort: 4046
58
60
 
59
- - name: 'tcp-4039'
61
+ - name: 'tcp-4047'
60
62
  protocol: TCP
61
- port: 4039
62
- targetPort: 4039
63
- - name: 'udp-4039'
63
+ port: 4047
64
+ targetPort: 4047
65
+ - name: 'udp-4047'
64
66
  protocol: UDP
65
- port: 4039
66
- targetPort: 4039
67
+ port: 4047
68
+ targetPort: 4047
67
69
 
68
- - name: 'tcp-4040'
70
+ - name: 'tcp-4048'
69
71
  protocol: TCP
70
- port: 4040
71
- targetPort: 4040
72
- - name: 'udp-4040'
72
+ port: 4048
73
+ targetPort: 4048
74
+ - name: 'udp-4048'
73
75
  protocol: UDP
74
- port: 4040
75
- targetPort: 4040
76
+ port: 4048
77
+ targetPort: 4048
76
78
 
77
- - name: 'tcp-4041'
79
+ - name: 'tcp-4049'
78
80
  protocol: TCP
79
- port: 4041
80
- targetPort: 4041
81
- - name: 'udp-4041'
81
+ port: 4049
82
+ targetPort: 4049
83
+ - name: 'udp-4049'
82
84
  protocol: UDP
83
- port: 4041
84
- targetPort: 4041
85
+ port: 4049
86
+ targetPort: 4049
87
+
88
+ - name: 'tcp-4050'
89
+ protocol: TCP
90
+ port: 4050
91
+ targetPort: 4050
92
+ - name: 'udp-4050'
93
+ protocol: UDP
94
+ port: 4050
95
+ targetPort: 4050
85
96
  type: LoadBalancer
86
97
  ---
87
98
  apiVersion: apps/v1
@@ -91,6 +102,7 @@ metadata:
91
102
  namespace: default
92
103
  labels:
93
104
  app: dd-test-development-green
105
+ deploy-id: dd-test-development
94
106
  spec:
95
107
  replicas: 1
96
108
  selector:
@@ -100,10 +112,11 @@ spec:
100
112
  metadata:
101
113
  labels:
102
114
  app: dd-test-development-green
115
+ deploy-id: dd-test-development
103
116
  spec:
104
117
  containers:
105
118
  - name: dd-test-development-green
106
- image: localhost/rockylinux9-underpost:v3.1.2
119
+ image: localhost/rockylinux9-underpost:v3.2.0
107
120
 
108
121
  command:
109
122
  - /bin/sh
@@ -132,39 +145,48 @@ spec:
132
145
  selector:
133
146
  app: dd-test-development-green
134
147
  ports:
135
- - name: 'tcp-4038'
148
+ - name: 'tcp-4046'
149
+ protocol: TCP
150
+ port: 4046
151
+ targetPort: 4046
152
+ - name: 'udp-4046'
153
+ protocol: UDP
154
+ port: 4046
155
+ targetPort: 4046
156
+
157
+ - name: 'tcp-4047'
136
158
  protocol: TCP
137
- port: 4038
138
- targetPort: 4038
139
- - name: 'udp-4038'
159
+ port: 4047
160
+ targetPort: 4047
161
+ - name: 'udp-4047'
140
162
  protocol: UDP
141
- port: 4038
142
- targetPort: 4038
163
+ port: 4047
164
+ targetPort: 4047
143
165
 
144
- - name: 'tcp-4039'
166
+ - name: 'tcp-4048'
145
167
  protocol: TCP
146
- port: 4039
147
- targetPort: 4039
148
- - name: 'udp-4039'
168
+ port: 4048
169
+ targetPort: 4048
170
+ - name: 'udp-4048'
149
171
  protocol: UDP
150
- port: 4039
151
- targetPort: 4039
172
+ port: 4048
173
+ targetPort: 4048
152
174
 
153
- - name: 'tcp-4040'
175
+ - name: 'tcp-4049'
154
176
  protocol: TCP
155
- port: 4040
156
- targetPort: 4040
157
- - name: 'udp-4040'
177
+ port: 4049
178
+ targetPort: 4049
179
+ - name: 'udp-4049'
158
180
  protocol: UDP
159
- port: 4040
160
- targetPort: 4040
181
+ port: 4049
182
+ targetPort: 4049
161
183
 
162
- - name: 'tcp-4041'
184
+ - name: 'tcp-4050'
163
185
  protocol: TCP
164
- port: 4041
165
- targetPort: 4041
166
- - name: 'udp-4041'
186
+ port: 4050
187
+ targetPort: 4050
188
+ - name: 'udp-4050'
167
189
  protocol: UDP
168
- port: 4041
169
- targetPort: 4041
190
+ port: 4050
191
+ targetPort: 4050
170
192
  type: LoadBalancer
@@ -9,13 +9,22 @@ spec:
9
9
  virtualhost:
10
10
  fqdn: test.nexodev.org
11
11
  routes:
12
+ - conditions:
13
+ - prefix: /wp
14
+
15
+ enableWebsockets: true
16
+ services:
17
+ - name: dd-test-development-blue-service
18
+ port: 4046
19
+ weight: 100
20
+
12
21
  - conditions:
13
22
  - prefix: /
14
23
 
15
24
  enableWebsockets: true
16
25
  services:
17
26
  - name: dd-test-development-blue-service
18
- port: 4038
27
+ port: 4047
19
28
  weight: 100
20
29
 
21
30
  - conditions:
@@ -24,7 +33,7 @@ spec:
24
33
  enableWebsockets: true
25
34
  services:
26
35
  - name: dd-test-development-blue-service
27
- port: 4039
36
+ port: 4048
28
37
  weight: 100
29
38
 
30
39
  ---
@@ -43,7 +52,7 @@ spec:
43
52
  enableWebsockets: true
44
53
  services:
45
54
  - name: dd-test-development-blue-service
46
- port: 4040
55
+ port: 4049
47
56
  weight: 100
48
57
 
49
58
  - conditions:
@@ -52,6 +61,6 @@ spec:
52
61
  enableWebsockets: true
53
62
  services:
54
63
  - name: dd-test-development-blue-service
55
- port: 4041
64
+ port: 4050
56
65
  weight: 100
57
66
 
@@ -14,7 +14,7 @@ spec:
14
14
  spec:
15
15
  containers:
16
16
  - name: playwright
17
- image: mcr.microsoft.com/playwright:v1.58.1-jammy
17
+ image: mcr.microsoft.com/playwright:v1.59.0-jammy
18
18
  command:
19
19
  - /bin/bash
20
20
  - -c
package/nodemon.json CHANGED
@@ -2,5 +2,5 @@
2
2
  "watch": ["./src"],
3
3
  "ext": "js",
4
4
  "delay": 0,
5
- "ignore": []
5
+ "ignore": ["src/client/public"]
6
6
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "type": "module",
3
3
  "main": "src/index.js",
4
4
  "name": "underpost",
5
- "version": "3.1.2",
5
+ "version": "3.2.0",
6
6
  "description": "pwa api rest template",
7
7
  "scripts": {
8
8
  "start": "node --max-old-space-size=8192 src/server",
@@ -16,7 +16,7 @@
16
16
  "dev:proxy": "NODE_ENV=development node src/proxy proxy",
17
17
  "docs": "jsdoc -c jsdoc.json",
18
18
  "install:global": "npm install -g jsdoc && npm install -g prettier",
19
- "install:test": "npm install -g mocha && npm install -g c8 && npm install -g coveralls",
19
+ "install:test": "npm install -g mocha && npm install -g c8 && npm install -g coveralls-next --force",
20
20
  "install": "npm run install:global && npm run install:test",
21
21
  "prettier": "prettier --write .",
22
22
  "fix": "npm audit fix --force && npm audit",
@@ -53,10 +53,12 @@
53
53
  "dependencies": {
54
54
  "@fortawesome/fontawesome-free": "^7.2.0",
55
55
  "@fullcalendar/rrule": "^6.1.20",
56
+ "@grpc/grpc-js": "^1.12.5",
57
+ "@grpc/proto-loader": "^0.8.0",
56
58
  "@neodrag/vanilla": "^2.3.1",
57
- "adm-zip": "^0.5.10",
58
- "ag-grid-community": "^35.1.0",
59
- "axios": "^1.13.6",
59
+ "adm-zip": "^0.5.17",
60
+ "ag-grid-community": "^35.2.1",
61
+ "axios": "^1.14.0",
60
62
  "chai": "^6.2.2",
61
63
  "clean-jsdoc-theme": "^4.3.0",
62
64
  "clipboardy": "^5.3.1",
@@ -67,12 +69,13 @@
67
69
  "cookie-parser": "^1.4.7",
68
70
  "cors": "^2.8.6",
69
71
  "d3": "^7.9.0",
70
- "dotenv": "^17.3.1",
72
+ "dotenv": "^17.4.2",
71
73
  "easymde": "^2.18.0",
74
+ "esbuild": "^0.28.0",
72
75
  "escape-string-regexp": "^5.0.0",
73
76
  "express": "^5.2.1",
74
77
  "express-fileupload": "^1.4.3",
75
- "express-rate-limit": "^8.3.1",
78
+ "express-rate-limit": "^8.3.2",
76
79
  "express-slow-down": "^3.1.0",
77
80
  "fast-json-stable-stringify": "^2.1.0",
78
81
  "favicons": "^7.2.0",
@@ -83,14 +86,15 @@
83
86
  "http-proxy-middleware": "^3.0.5",
84
87
  "ignore-walk": "^8.0.0",
85
88
  "iovalkey": "^0.3.3",
89
+ "is-inside-container": "^1.0.0",
86
90
  "json-colorizer": "^3.0.1",
87
91
  "jsonwebtoken": "^9.0.3",
88
92
  "mariadb": "^3.2.2",
89
- "marked": "^17.0.4",
93
+ "marked": "^18.0.0",
90
94
  "mocha": "^11.3.0",
91
- "mongoose": "^9.3.0",
95
+ "mongoose": "^9.4.1",
92
96
  "morgan": "^1.10.0",
93
- "nodemailer": "^8.0.2",
97
+ "nodemailer": "^8.0.3",
94
98
  "nodemon": "^3.0.1",
95
99
  "peer": "^1.0.2",
96
100
  "peerjs": "^1.5.5",
@@ -104,9 +108,8 @@
104
108
  "split-file": "^2.3.0",
105
109
  "swagger-autogen": "^2.23.7",
106
110
  "swagger-ui-express": "^5.0.0",
107
- "uglify-js": "^3.17.4",
108
- "validator": "^13.11.0",
109
- "vanilla-jsoneditor": "^3.11.0",
111
+ "validator": "^13.15.35",
112
+ "vanilla-jsoneditor": "^3.12.0",
110
113
  "winston": "^3.19.0"
111
114
  },
112
115
  "publishConfig": {
@@ -115,11 +118,15 @@
115
118
  "registry": "https://registry.npmjs.org/"
116
119
  },
117
120
  "overrides": {
121
+ "simple-xml-to-json": "1.2.4",
118
122
  "minimatch": "^10.2.2",
119
123
  "glob": "^11.0.0",
120
124
  "diff": ">=8.0.3",
121
125
  "js-yaml": ">=3.14.2",
122
126
  "debug": ">=4.3.6",
123
- "serialize-javascript": ">=7.0.3"
127
+ "serialize-javascript": ">=7.0.5",
128
+ "router": {
129
+ "path-to-regexp": ">=8.4.0"
130
+ }
124
131
  }
125
132
  }
@@ -3,6 +3,8 @@ set -euo pipefail
3
3
 
4
4
  BASHRC="$HOME/.bashrc"
5
5
 
6
+ sudo dnf install -y iproute lsof nmap-ncat net-tools procps-ng
7
+
6
8
  # Check whether a "ports" function is already defined
7
9
  if grep -Eq '^\s*(function\s+ports|ports\s*\(\))' "$BASHRC"; then
8
10
  echo "The 'ports' function already exists in $BASHRC. Nothing was changed."
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ # ──────────────────────────────────────────────────────────────────
5
+ # rhel-grpc-setup.sh — Install gRPC / Protocol Buffers system
6
+ # packages on RHEL / Rocky Linux / AlmaLinux / Fedora.
7
+ #
8
+ # Installs:
9
+ # 1. protobuf-compiler (protoc) + protobuf-devel
10
+ # 2. grpc / grpc-devel / grpc-plugins (C++ libs + plugin binaries)
11
+ #
12
+ # For Go-specific tooling (protoc-gen-go, protoc-gen-go-grpc,
13
+ # go mod tidy, proto codegen) use:
14
+ # ./cyberia-server/scripts/grpc-setup.sh
15
+ #
16
+ # Usage:
17
+ # sudo ./scripts/rhel-grpc-setup.sh
18
+ # ──────────────────────────────────────────────────────────────────
19
+
20
+ if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
21
+ echo "Usage: sudo $0"
22
+ echo "Installs protobuf + gRPC system packages via dnf."
23
+ echo "For Go codegen plugins, run: ./cyberia-server/scripts/grpc-setup.sh"
24
+ exit 0
25
+ fi
26
+
27
+ # ── 1. Enable EPEL (needed for protobuf / grpc on RHEL) ──────────
28
+ echo ">>> Enabling EPEL repository..."
29
+ sudo dnf install -y epel-release || true
30
+ sudo dnf install -y dnf-plugins-core || true
31
+
32
+ # On RHEL proper, enable CRB/PowerTools for devel headers
33
+ if grep -qi 'Red Hat Enterprise' /etc/os-release 2>/dev/null; then
34
+ sudo dnf config-manager --set-enabled codeready-builder-for-rhel-"$(rpm -E %rhel)"-"$(uname -m)-rpms" 2>/dev/null || true
35
+ elif grep -qi 'Rocky\|AlmaLinux' /etc/os-release 2>/dev/null; then
36
+ sudo dnf config-manager --set-enabled crb 2>/dev/null || \
37
+ sudo dnf config-manager --set-enabled powertools 2>/dev/null || true
38
+ fi
39
+
40
+ # ── 2. Install protobuf compiler + gRPC system packages ──────────
41
+ echo ">>> Installing protobuf-compiler, protobuf-devel, grpc, grpc-devel, grpc-plugins..."
42
+ sudo dnf install -y \
43
+ protobuf-compiler \
44
+ protobuf-devel \
45
+ grpc \
46
+ grpc-devel \
47
+ grpc-plugins
48
+
49
+ # ── 3. Verify protoc ─────────────────────────────────────────────
50
+ if command -v protoc &>/dev/null; then
51
+ echo ">>> protoc installed: $(protoc --version)"
52
+ else
53
+ echo "WARNING: protoc not found in PATH after install." >&2
54
+ fi
55
+
56
+ echo ">>> gRPC system packages setup complete."
@@ -1,10 +1,28 @@
1
1
  [
2
+ {
3
+ "api": "atlas-sprite-sheet",
4
+ "model": {
5
+ "fileId": true
6
+ }
7
+ },
2
8
  {
3
9
  "api": "company",
4
10
  "model": {
5
11
  "logo": true
6
12
  }
7
13
  },
14
+ {
15
+ "api": "cyberia-instance",
16
+ "model": {
17
+ "thumbnail": true
18
+ }
19
+ },
20
+ {
21
+ "api": "cyberia-map",
22
+ "model": {
23
+ "thumbnail": true
24
+ }
25
+ },
8
26
  {
9
27
  "api": "document",
10
28
  "model": {
@@ -13,8 +13,7 @@ import {
13
13
  validatePasswordMiddleware,
14
14
  } from '../../server/auth.js';
15
15
  import { MailerProvider } from '../../mailer/MailerProvider.js';
16
- import { CoreWsMailerManagement } from '../../ws/core/management/core.ws.mailer.js';
17
- import { CoreWsEmit } from '../../ws/core/core.ws.emit.js';
16
+ import { CoreWsEmitter } from '../../ws/core/core.ws.emit.js';
18
17
  import { CoreWsMailerChannel } from '../../ws/core/channels/core.ws.mailer.js';
19
18
  import validator from 'validator';
20
19
  import { DataBaseProvider } from '../../db/DataBaseProvider.js';
@@ -319,11 +318,13 @@ const UserService = {
319
318
  {
320
319
  const user = await User.findByIdAndUpdate(_id, { emailConfirmed: true }, { runValidators: true });
321
320
  }
322
- const userWsId = CoreWsMailerManagement.getUserWsId(`${options.host}${options.path}`, user._id.toString());
323
- CoreWsEmit(CoreWsMailerChannel.channel, CoreWsMailerChannel.client[userWsId], {
324
- status: 'email-confirmed',
325
- id: userWsId,
326
- });
321
+ const userWsId = CoreWsMailerChannel.getUserWsId(`${options.host}${options.path}`, user._id.toString());
322
+ if (userWsId && CoreWsMailerChannel.client[userWsId]) {
323
+ CoreWsEmitter.emit(CoreWsMailerChannel.channel, CoreWsMailerChannel.client[userWsId], {
324
+ status: 'email-confirmed',
325
+ id: userWsId,
326
+ });
327
+ }
327
328
  options.png.header(res, req);
328
329
  return options.png.buffer['check'];
329
330
  } else {
@@ -111,7 +111,7 @@ class UnderpostCluster {
111
111
  const npmRoot = getNpmRootPath();
112
112
  const underpostRoot = options.dev ? '.' : `${npmRoot}/underpost`;
113
113
 
114
- if (options.listPods) return console.table(Underpost.deploy.get(podName ?? undefined));
114
+ if (options.listPods) return console.table(Underpost.kubectl.get(podName ?? undefined));
115
115
  // Set default namespace if not specified
116
116
  if (!options.namespace) options.namespace = 'default';
117
117
 
@@ -146,10 +146,10 @@ class UnderpostCluster {
146
146
  }
147
147
 
148
148
  // Check if a cluster (Kind, Kubeadm, or K3s) is already initialized
149
- const alreadyKubeadmCluster = Underpost.deploy.get('calico-kube-controllers')[0];
150
- const alreadyKindCluster = Underpost.deploy.get('kube-apiserver-kind-control-plane')[0];
149
+ const alreadyKubeadmCluster = Underpost.kubectl.get('calico-kube-controllers')[0];
150
+ const alreadyKindCluster = Underpost.kubectl.get('kube-apiserver-kind-control-plane')[0];
151
151
  // K3s pods often contain 'svclb-traefik' in the kube-system namespace
152
- const alreadyK3sCluster = Underpost.deploy.get('svclb-traefik')[0];
152
+ const alreadyK3sCluster = Underpost.kubectl.get('svclb-traefik')[0];
153
153
 
154
154
  // --- Kubeadm/Kind/K3s Cluster Initialization ---
155
155
  if (!alreadyKubeadmCluster && !alreadyKindCluster && !alreadyK3sCluster) {
@@ -299,7 +299,7 @@ EOF
299
299
  members: [{ _id: 0, host: `${options.mongoDbHost}:27017` }],
300
300
  };
301
301
 
302
- const [pod] = Underpost.deploy.get(deploymentName);
302
+ const [pod] = Underpost.kubectl.get(deploymentName);
303
303
 
304
304
  shellExec(
305
305
  `sudo kubectl exec -i ${pod.NAME} -- mongo --quiet \
@@ -351,7 +351,7 @@ EOF
351
351
  }
352
352
 
353
353
  if (options.certManager) {
354
- if (!Underpost.deploy.get('cert-manager').find((p) => p.STATUS === 'Running')) {
354
+ if (!Underpost.kubectl.get('cert-manager').find((p) => p.STATUS === 'Running')) {
355
355
  shellExec(`helm repo add jetstack https://charts.jetstack.io --force-update`);
356
356
  shellExec(
357
357
  `helm install cert-manager jetstack/cert-manager \
@@ -641,7 +641,7 @@ net.ipv4.ip_forward = 1' | sudo tee ${iptableConfPath}`,
641
641
  const resources = {};
642
642
  const nodeName = node
643
643
  ? node
644
- : Underpost.deploy.get('kind-control-plane', 'node').length > 0
644
+ : Underpost.kubectl.get('kind-control-plane', 'node').length > 0
645
645
  ? 'kind-control-plane'
646
646
  : os.hostname();
647
647
  const info = shellExec(`kubectl describe node ${nodeName} | grep -E '(Allocatable:|Capacity:)' -A 6`, {