@unisphere/nx 4.15.0 â 4.15.2
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/dist/migrations/4-15-1/templates/_publish-artifacts.template +363 -0
- package/dist/migrations/4-15-1/templates/cicd.template +90 -0
- package/dist/migrations/4-15-1/templates/documentation-workflow.template +68 -0
- package/dist/migrations/4-15-1/upgrade-github-actions-node24.d.ts +17 -0
- package/dist/migrations/4-15-1/upgrade-github-actions-node24.d.ts.map +1 -0
- package/dist/migrations/4-15-1/upgrade-github-actions-node24.js +80 -0
- package/dist/migrations/4-15-2/add-critical-security-overrides.d.ts +11 -0
- package/dist/migrations/4-15-2/add-critical-security-overrides.d.ts.map +1 -0
- package/dist/migrations/4-15-2/add-critical-security-overrides.js +53 -0
- package/dist/migrations/4-15-2/move-cli-to-dev-dependencies.d.ts +13 -0
- package/dist/migrations/4-15-2/move-cli-to-dev-dependencies.d.ts.map +1 -0
- package/dist/migrations/4-15-2/move-cli-to-dev-dependencies.js +44 -0
- package/migrations.json +98 -0
- package/package.json +1 -1
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
name: Shared Deployment Jobs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_call:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
check-elements:
|
|
8
|
+
runs-on:
|
|
9
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
10
|
+
- instance-size:small
|
|
11
|
+
outputs:
|
|
12
|
+
has_packages: ${{ steps.check.outputs.has_packages }}
|
|
13
|
+
has_runtimes: ${{ steps.check.outputs.has_runtimes }}
|
|
14
|
+
has_applications: ${{ steps.check.outputs.has_applications }}
|
|
15
|
+
steps:
|
|
16
|
+
|
|
17
|
+
- name: Checkout Repo
|
|
18
|
+
uses: actions/checkout@v5
|
|
19
|
+
with:
|
|
20
|
+
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
|
|
21
|
+
fetch-tags: true
|
|
22
|
+
|
|
23
|
+
- name: Check elements in .unisphere
|
|
24
|
+
id: check
|
|
25
|
+
run: |
|
|
26
|
+
if [ -f .unisphere ]; then
|
|
27
|
+
PACKAGES=$(jq -r '.elements.packages // {} | length' .unisphere)
|
|
28
|
+
RUNTIMES=$(jq -r '(.elements.runtimes // {} | length) + (.elements.workspace // {} | length) + (.elements.loader // {} | length)' .unisphere)
|
|
29
|
+
APPLICATIONS=$(jq -r '.elements.applications // {} | length' .unisphere)
|
|
30
|
+
|
|
31
|
+
if [ "$PACKAGES" -gt 0 ]; then
|
|
32
|
+
echo "has_packages=true" >> $GITHUB_OUTPUT
|
|
33
|
+
else
|
|
34
|
+
echo "has_packages=false" >> $GITHUB_OUTPUT
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
if [ "$RUNTIMES" -gt 0 ]; then
|
|
38
|
+
echo "has_runtimes=true" >> $GITHUB_OUTPUT
|
|
39
|
+
else
|
|
40
|
+
echo "has_runtimes=false" >> $GITHUB_OUTPUT
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
if [ "$APPLICATIONS" -gt 0 ]; then
|
|
44
|
+
echo "has_applications=true" >> $GITHUB_OUTPUT
|
|
45
|
+
else
|
|
46
|
+
echo "has_applications=false" >> $GITHUB_OUTPUT
|
|
47
|
+
fi
|
|
48
|
+
else
|
|
49
|
+
echo "has_packages=false" >> $GITHUB_OUTPUT
|
|
50
|
+
echo "has_runtimes=false" >> $GITHUB_OUTPUT
|
|
51
|
+
echo "has_applications=false" >> $GITHUB_OUTPUT
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
prepare-runtimes:
|
|
55
|
+
runs-on:
|
|
56
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
57
|
+
- instance-size:medium
|
|
58
|
+
|
|
59
|
+
if: needs.check-elements.outputs.has_runtimes == 'true'
|
|
60
|
+
needs: check-elements
|
|
61
|
+
outputs:
|
|
62
|
+
unisphereElementsArtifactsFolder: ${{ steps.prepare-runtimes.outputs.artifactsRootFolder }}
|
|
63
|
+
hasArtifacts: ${{ steps.prepare-runtimes.outputs.hasArtifacts }}
|
|
64
|
+
commit_sha: ${{ steps.capture_commit_sha.outputs.commit_sha }}
|
|
65
|
+
steps:
|
|
66
|
+
- name: Cache npm
|
|
67
|
+
uses: actions/cache@v5
|
|
68
|
+
with:
|
|
69
|
+
path: ~/.npm
|
|
70
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
71
|
+
restore-keys: |
|
|
72
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
73
|
+
|
|
74
|
+
- name: Checkout Repo
|
|
75
|
+
uses: actions/checkout@v5
|
|
76
|
+
with:
|
|
77
|
+
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
|
|
78
|
+
fetch-tags: true
|
|
79
|
+
- name: Setup Node.js
|
|
80
|
+
uses: actions/setup-node@v5
|
|
81
|
+
with:
|
|
82
|
+
node-version-file: '.nvmrc'
|
|
83
|
+
- name: Clean workspace
|
|
84
|
+
run: git reset --hard HEAD
|
|
85
|
+
- name: Clean npm cache
|
|
86
|
+
run: npm cache clean --force
|
|
87
|
+
|
|
88
|
+
- name: Setup JFrog
|
|
89
|
+
|
|
90
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
91
|
+
id: setup-jfrog
|
|
92
|
+
env:
|
|
93
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
94
|
+
with:
|
|
95
|
+
oidc-provider-name: ovp-github-oidc
|
|
96
|
+
- name: Install dependencies
|
|
97
|
+
run: npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
98
|
+
env:
|
|
99
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
100
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
101
|
+
|
|
102
|
+
- name: Prepare Unisphere Elements
|
|
103
|
+
id: prepare-runtimes
|
|
104
|
+
run: npx unisphere runtime publish prepare --verbose
|
|
105
|
+
- name: Capture Commit SHA
|
|
106
|
+
id: capture_commit_sha
|
|
107
|
+
run: echo "commit_sha=$(git rev-parse HEAD)" >> $GITHUB_ENV
|
|
108
|
+
- name: Set commit_sha as output
|
|
109
|
+
id: set_commit_sha
|
|
110
|
+
run: echo "commit_sha=${{ env.commit_sha }}" >> $GITHUB_OUTPUT
|
|
111
|
+
- uses: actions/upload-artifact@v6
|
|
112
|
+
id: upload-unisphere-elements-artifacts
|
|
113
|
+
with:
|
|
114
|
+
name: unisphere-elements
|
|
115
|
+
path: ${{ steps.prepare-runtimes.outputs.artifactsRootFolder }}
|
|
116
|
+
retention-days: 1
|
|
117
|
+
|
|
118
|
+
deploy-packages:
|
|
119
|
+
if: needs.check-elements.outputs.has_packages == 'true'
|
|
120
|
+
needs: check-elements
|
|
121
|
+
runs-on:
|
|
122
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
123
|
+
- instance-size:medium
|
|
124
|
+
steps:
|
|
125
|
+
- name: Cache npm
|
|
126
|
+
uses: actions/cache@v5
|
|
127
|
+
with:
|
|
128
|
+
path: ~/.npm
|
|
129
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
130
|
+
restore-keys: |
|
|
131
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
132
|
+
|
|
133
|
+
- name: Checkout Repo
|
|
134
|
+
uses: actions/checkout@v5
|
|
135
|
+
with:
|
|
136
|
+
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
|
|
137
|
+
fetch-tags: true
|
|
138
|
+
- name: Setup Node.js
|
|
139
|
+
uses: actions/setup-node@v5
|
|
140
|
+
with:
|
|
141
|
+
node-version-file: '.nvmrc'
|
|
142
|
+
|
|
143
|
+
- name: Setup JFrog
|
|
144
|
+
|
|
145
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
146
|
+
id: setup-jfrog
|
|
147
|
+
env:
|
|
148
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
149
|
+
with:
|
|
150
|
+
oidc-provider-name: ovp-github-oidc
|
|
151
|
+
|
|
152
|
+
- name: Install dependencies
|
|
153
|
+
|
|
154
|
+
run: |
|
|
155
|
+
npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
156
|
+
|
|
157
|
+
env:
|
|
158
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
159
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
160
|
+
|
|
161
|
+
- name: Get NPM Token from AWS Secrets Manager
|
|
162
|
+
id: get-npm-token
|
|
163
|
+
run: |
|
|
164
|
+
NPM_TOKEN=$(aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:eu-central-1:785328604905:secret:unisphere-secrets-um86Cs --query SecretString --output text | jq -r '."NPM_UNISPHERE_TOKEN"')
|
|
165
|
+
echo "NPM_TOKEN=$NPM_TOKEN" >> $GITHUB_ENV
|
|
166
|
+
# Debug token existence (safely)
|
|
167
|
+
echo "::debug::Token exists: $([ ! -z "$NPM_TOKEN" ] && echo 'true' || echo 'false')"
|
|
168
|
+
- name: Deploy to registry
|
|
169
|
+
run: npx unisphere package publish --verbose --jfrogToken ${{ steps.setup-jfrog.outputs.oidc-token }} --jfrogUser ${{ steps.setup-jfrog.outputs.oidc-user }} --npmToken ${{ env.NPM_TOKEN }} --branch "${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}"
|
|
170
|
+
|
|
171
|
+
deploy-runtimes:
|
|
172
|
+
if: needs.prepare-runtimes.outputs.hasArtifacts == 'true'
|
|
173
|
+
needs: prepare-runtimes
|
|
174
|
+
runs-on:
|
|
175
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
176
|
+
- instance-size:medium
|
|
177
|
+
strategy:
|
|
178
|
+
matrix:
|
|
179
|
+
envs_regions:
|
|
180
|
+
- { env: 'nvp1', region: 'us-east-1', accountid: '583352821080' }
|
|
181
|
+
- { env: 'frp2', region: 'eu-central-1', accountid: '082111255551' }
|
|
182
|
+
- { env: 'irp2', region: 'eu-west-1', accountid: '137576761235' }
|
|
183
|
+
- { env: 'nvq2', region: 'us-east-1', accountid: '383697330906' }
|
|
184
|
+
- { env: 'sgp2', region: 'ap-southeast-1', accountid: '882351240370' }
|
|
185
|
+
- { env: 'syp2', region: 'ap-southeast-2', accountid: '650755435642' }
|
|
186
|
+
- { env: 'cap2', region: 'ca-central-1', accountid: '948632009361' }
|
|
187
|
+
fail-fast: false
|
|
188
|
+
|
|
189
|
+
steps:
|
|
190
|
+
- name: Cache npm
|
|
191
|
+
uses: actions/cache@v5
|
|
192
|
+
with:
|
|
193
|
+
path: ~/.npm
|
|
194
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
195
|
+
restore-keys: |
|
|
196
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
197
|
+
|
|
198
|
+
- name: Check available disk space
|
|
199
|
+
run: df -h
|
|
200
|
+
- name: Checkout Repo at specific commit
|
|
201
|
+
uses: actions/checkout@v5
|
|
202
|
+
with:
|
|
203
|
+
ref: ${{ needs.prepare-runtimes.outputs.commit_sha }}
|
|
204
|
+
fetch-tags: true
|
|
205
|
+
- name: Setup Node.js
|
|
206
|
+
uses: actions/setup-node@v5
|
|
207
|
+
with:
|
|
208
|
+
node-version-file: '.nvmrc'
|
|
209
|
+
|
|
210
|
+
- name: Setup JFrog
|
|
211
|
+
|
|
212
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
213
|
+
id: setup-jfrog
|
|
214
|
+
env:
|
|
215
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
216
|
+
with:
|
|
217
|
+
oidc-provider-name: ovp-github-oidc
|
|
218
|
+
|
|
219
|
+
- name: Install dependencies
|
|
220
|
+
|
|
221
|
+
run: npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
222
|
+
env:
|
|
223
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
224
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
225
|
+
|
|
226
|
+
- name: Download artifacts folder
|
|
227
|
+
uses: actions/download-artifact@v7
|
|
228
|
+
with:
|
|
229
|
+
name: unisphere-elements
|
|
230
|
+
path: ${{ needs.prepare-runtimes.outputs.unisphereElementsArtifactsFolder }}
|
|
231
|
+
- name: Sync S3 bucket
|
|
232
|
+
run: |
|
|
233
|
+
npx unisphere runtime publish execute \
|
|
234
|
+
--env ${{ matrix.envs_regions.env }} \
|
|
235
|
+
--aws-region '${{ matrix.envs_regions.region }}' \
|
|
236
|
+
--aws-arn 'arn:aws:iam::${{matrix.envs_regions.accountid }}:role/${{ matrix.envs_regions.env }}-unisphere-content-role' \
|
|
237
|
+
--artifacts-folder '${{ needs.prepare-runtimes.outputs.unisphereElementsArtifactsFolder }}' \
|
|
238
|
+
--verbose
|
|
239
|
+
|
|
240
|
+
prepare-applications:
|
|
241
|
+
if: always() && needs.check-elements.outputs.has_applications == 'true'
|
|
242
|
+
needs: [deploy-runtimes, check-elements]
|
|
243
|
+
runs-on:
|
|
244
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
245
|
+
- instance-size:medium
|
|
246
|
+
outputs:
|
|
247
|
+
unisphereApplicationsArtifactsFolder: ${{ steps.prepare-applications.outputs.artifactsRootFolder }}
|
|
248
|
+
hasArtifacts: ${{ steps.prepare-applications.outputs.hasArtifacts }}
|
|
249
|
+
commit_sha: ${{ steps.capture_commit_sha.outputs.commit_sha }}
|
|
250
|
+
steps:
|
|
251
|
+
- name: Cache npm
|
|
252
|
+
uses: actions/cache@v5
|
|
253
|
+
with:
|
|
254
|
+
path: ~/.npm
|
|
255
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
256
|
+
restore-keys: |
|
|
257
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
258
|
+
|
|
259
|
+
- name: Checkout Repo
|
|
260
|
+
uses: actions/checkout@v5
|
|
261
|
+
with:
|
|
262
|
+
ref: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
|
|
263
|
+
fetch-tags: true
|
|
264
|
+
- name: Setup Node.js
|
|
265
|
+
uses: actions/setup-node@v5
|
|
266
|
+
with:
|
|
267
|
+
node-version-file: '.nvmrc'
|
|
268
|
+
- name: Clean workspace
|
|
269
|
+
run: git reset --hard HEAD
|
|
270
|
+
- name: Clean npm cache
|
|
271
|
+
run: npm cache clean --force
|
|
272
|
+
- name: Setup JFrog
|
|
273
|
+
|
|
274
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
275
|
+
id: setup-jfrog
|
|
276
|
+
env:
|
|
277
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
278
|
+
with:
|
|
279
|
+
oidc-provider-name: ovp-github-oidc
|
|
280
|
+
- name: Install dependencies
|
|
281
|
+
|
|
282
|
+
run: npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
283
|
+
env:
|
|
284
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
285
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
286
|
+
- name: Prepare Unisphere Applications
|
|
287
|
+
id: prepare-applications
|
|
288
|
+
run: npx unisphere application publish prepare --verbose
|
|
289
|
+
- name: Capture Commit SHA
|
|
290
|
+
id: capture_commit_sha
|
|
291
|
+
run: echo "commit_sha=$(git rev-parse HEAD)" >> $GITHUB_ENV
|
|
292
|
+
- name: Set commit_sha as output
|
|
293
|
+
id: set_commit_sha
|
|
294
|
+
run: echo "commit_sha=${{ env.commit_sha }}" >> $GITHUB_OUTPUT
|
|
295
|
+
- uses: actions/upload-artifact@v6
|
|
296
|
+
id: upload-unisphere-applications-artifacts
|
|
297
|
+
with:
|
|
298
|
+
name: unisphere-applications
|
|
299
|
+
path: ${{ steps.prepare-applications.outputs.artifactsRootFolder }}
|
|
300
|
+
retention-days: 1
|
|
301
|
+
|
|
302
|
+
deploy-applications:
|
|
303
|
+
if: always() && needs.prepare-applications.outputs.hasArtifacts == 'true'
|
|
304
|
+
needs: [prepare-applications]
|
|
305
|
+
runs-on:
|
|
306
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.run_attempt }}
|
|
307
|
+
- instance-size:medium
|
|
308
|
+
strategy:
|
|
309
|
+
matrix:
|
|
310
|
+
envs_regions:
|
|
311
|
+
- { env: 'nvp1', region: 'us-east-1', accountid: '583352821080' }
|
|
312
|
+
- { env: 'frp2', region: 'eu-central-1', accountid: '082111255551' }
|
|
313
|
+
- { env: 'irp2', region: 'eu-west-1', accountid: '137576761235' }
|
|
314
|
+
- { env: 'nvq2', region: 'us-east-1', accountid: '383697330906' }
|
|
315
|
+
- { env: 'sgp2', region: 'ap-southeast-1', accountid: '882351240370' }
|
|
316
|
+
- { env: 'syp2', region: 'ap-southeast-2', accountid: '650755435642' }
|
|
317
|
+
- { env: 'cap2', region: 'ca-central-1', accountid: '948632009361' }
|
|
318
|
+
fail-fast: false
|
|
319
|
+
steps:
|
|
320
|
+
- name: Cache npm
|
|
321
|
+
uses: actions/cache@v5
|
|
322
|
+
with:
|
|
323
|
+
path: ~/.npm
|
|
324
|
+
key: dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-${{ hashFiles('package-lock.json') }}
|
|
325
|
+
restore-keys: |
|
|
326
|
+
dependencies-${{ runner.os }}-node-${{ hashFiles('.nvmrc') }}-
|
|
327
|
+
|
|
328
|
+
- name: Checkout Repo at specific commit
|
|
329
|
+
uses: actions/checkout@v5
|
|
330
|
+
with:
|
|
331
|
+
ref: ${{ needs.prepare-applications.outputs.commit_sha }}
|
|
332
|
+
fetch-tags: true
|
|
333
|
+
- name: Setup Node.js
|
|
334
|
+
uses: actions/setup-node@v5
|
|
335
|
+
with:
|
|
336
|
+
node-version-file: '.nvmrc'
|
|
337
|
+
- name: Setup JFrog
|
|
338
|
+
|
|
339
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
340
|
+
id: setup-jfrog
|
|
341
|
+
env:
|
|
342
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
343
|
+
with:
|
|
344
|
+
oidc-provider-name: ovp-github-oidc
|
|
345
|
+
- name: Install dependencies
|
|
346
|
+
|
|
347
|
+
run: npm ci --prefer-offline --include=optional --no-fund --verbose
|
|
348
|
+
env:
|
|
349
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
350
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
351
|
+
- name: Download artifacts folder
|
|
352
|
+
uses: actions/download-artifact@v7
|
|
353
|
+
with:
|
|
354
|
+
name: unisphere-applications
|
|
355
|
+
path: ${{ needs.prepare-applications.outputs.unisphereApplicationsArtifactsFolder }}
|
|
356
|
+
- name: Sync S3 bucket
|
|
357
|
+
run: |
|
|
358
|
+
npx unisphere application publish execute \
|
|
359
|
+
--env ${{ matrix.envs_regions.env }} \
|
|
360
|
+
--aws-region '${{ matrix.envs_regions.region }}' \
|
|
361
|
+
--aws-arn 'arn:aws:iam::${{matrix.envs_regions.accountid }}:role/${{ matrix.envs_regions.env }}-unisphere-content-role' \
|
|
362
|
+
--artifacts-folder '${{ needs.prepare-applications.outputs.unisphereApplicationsArtifactsFolder }}' \
|
|
363
|
+
--verbose
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
name: CI/CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
- 'prerelease/**'
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
id-token: write
|
|
11
|
+
contents: write
|
|
12
|
+
packages: write
|
|
13
|
+
pull-requests: write
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
release:
|
|
17
|
+
name: Release
|
|
18
|
+
runs-on:
|
|
19
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.attempt }}
|
|
20
|
+
- instance-size:medium
|
|
21
|
+
outputs:
|
|
22
|
+
hasChangesets: ${{ steps.changesets.outputs.hasChangesets }}
|
|
23
|
+
steps:
|
|
24
|
+
|
|
25
|
+
- name: Checkout Repo
|
|
26
|
+
uses: actions/checkout@v5
|
|
27
|
+
|
|
28
|
+
- name: Check if part of prerelease or official release
|
|
29
|
+
id: check
|
|
30
|
+
run: |
|
|
31
|
+
if [ "${{ github.ref }}" = "refs/heads/main" ] && [ -f ".changeset/pre.json" ]; then
|
|
32
|
+
echo "main branch should not have pre.json file, skipping job"
|
|
33
|
+
exit 1
|
|
34
|
+
elif [[ "${{ github.ref }}" == "refs/heads/prerelease/"* ]] && [ ! -f ".changeset/pre.json" ]; then
|
|
35
|
+
echo "prerelease branch must have pre.json file, skipping job"
|
|
36
|
+
exit 1
|
|
37
|
+
elif [ "${{ github.ref }}" != "refs/heads/main" ] && [[ "${{ github.ref }}" != "refs/heads/prerelease/"* ]]; then
|
|
38
|
+
echo "not part of prerelease or official release, skipping job"
|
|
39
|
+
exit 1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
- name: Setup Node.js
|
|
43
|
+
uses: actions/setup-node@v5
|
|
44
|
+
with:
|
|
45
|
+
node-version-file: '.nvmrc'
|
|
46
|
+
cache: npm
|
|
47
|
+
cache-dependency-path: package-lock.json
|
|
48
|
+
|
|
49
|
+
- name: Pre-CICD Checks
|
|
50
|
+
uses: kaltura/unisphere-core/.github/actions/pre-cicd@main
|
|
51
|
+
with:
|
|
52
|
+
repo-path: '${{ github.workspace }}'
|
|
53
|
+
|
|
54
|
+
- name: Setup JFrog
|
|
55
|
+
|
|
56
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
57
|
+
id: setup-jfrog
|
|
58
|
+
env:
|
|
59
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
60
|
+
with:
|
|
61
|
+
oidc-provider-name: ovp-github-oidc
|
|
62
|
+
|
|
63
|
+
- name: Install Dependencies
|
|
64
|
+
run: npm ci --prefer-offline --include=optional --no-fund
|
|
65
|
+
env:
|
|
66
|
+
GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
67
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
# - name: Security Audit
|
|
71
|
+
# run: npx unisphere tools audit
|
|
72
|
+
# env:
|
|
73
|
+
# KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
74
|
+
|
|
75
|
+
- name: Create Release Pull Request or Publish to npm
|
|
76
|
+
id: changesets
|
|
77
|
+
uses: changesets/action@v1
|
|
78
|
+
env:
|
|
79
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
80
|
+
|
|
81
|
+
- name: Create release tags
|
|
82
|
+
if: steps.changesets.outputs.hasChangesets == 'false'
|
|
83
|
+
run: |
|
|
84
|
+
npx changeset tag
|
|
85
|
+
git push --follow-tags
|
|
86
|
+
|
|
87
|
+
publish-artifacts:
|
|
88
|
+
needs: release
|
|
89
|
+
if: needs.release.outputs.hasChangesets == 'false'
|
|
90
|
+
uses: ./.github/workflows/_publish-artifacts.yml
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
name: Documentations
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
permissions:
|
|
7
|
+
id-token: write
|
|
8
|
+
contents: write
|
|
9
|
+
packages: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
deploy-to-aws:
|
|
13
|
+
runs-on:
|
|
14
|
+
- codebuild-ovp-unisphere-runner-${{ github.run_id }}-${{ github.attempt }}
|
|
15
|
+
strategy:
|
|
16
|
+
matrix:
|
|
17
|
+
envs_regions:
|
|
18
|
+
- env: nvp1
|
|
19
|
+
accountid: "583352821080"
|
|
20
|
+
region: us-east-1
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- name: Checkout Repo at specific commit
|
|
24
|
+
uses: actions/checkout@v5
|
|
25
|
+
|
|
26
|
+
- name: Setup Node.js
|
|
27
|
+
uses: actions/setup-node@v5
|
|
28
|
+
with:
|
|
29
|
+
node-version: 24
|
|
30
|
+
|
|
31
|
+
- name: Setup JFrog
|
|
32
|
+
uses: jfrog/setup-jfrog-cli@v5
|
|
33
|
+
id: setup-jfrog
|
|
34
|
+
env:
|
|
35
|
+
JF_URL: https://kalturaa.jfrog.io
|
|
36
|
+
with:
|
|
37
|
+
oidc-provider-name: ovp-github-oidc
|
|
38
|
+
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: cd unisphere/documentation/__EXPERIENCE_NAME__ && npm ci --include=optional --ignore-scripts
|
|
41
|
+
env:
|
|
42
|
+
KALTURA_JFROG_TOKEN: ${{ steps.setup-jfrog.outputs.oidc-token }}
|
|
43
|
+
|
|
44
|
+
- name: Build documentation
|
|
45
|
+
run: cd unisphere/documentation/__EXPERIENCE_NAME__ && npm run build
|
|
46
|
+
env:
|
|
47
|
+
DOCUSAURUS_URL: 'https://docs.kaltura.ai/'
|
|
48
|
+
DOCUSAURUS_BASE_URL: '/__EXPERIENCE_NAME__/'
|
|
49
|
+
|
|
50
|
+
- name: Configure AWS credentials
|
|
51
|
+
run: |
|
|
52
|
+
aws sts assume-role \
|
|
53
|
+
--role-arn arn:aws:iam::${{ matrix.envs_regions.accountid }}:role/${{ matrix.envs_regions.env }}-unisphere-content-role \
|
|
54
|
+
--role-session-name github-actions-deployment \
|
|
55
|
+
--query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' \
|
|
56
|
+
--output text | \
|
|
57
|
+
while read access_key secret_key session_token; do
|
|
58
|
+
echo "AWS_ACCESS_KEY_ID=$access_key" >> $GITHUB_ENV
|
|
59
|
+
echo "AWS_SECRET_ACCESS_KEY=$secret_key" >> $GITHUB_ENV
|
|
60
|
+
echo "AWS_SESSION_TOKEN=$session_token" >> $GITHUB_ENV
|
|
61
|
+
done
|
|
62
|
+
echo "AWS_DEFAULT_REGION=${{ matrix.envs_regions.region }}" >> $GITHUB_ENV
|
|
63
|
+
|
|
64
|
+
- name: Sync dist/documentations to S3
|
|
65
|
+
run: |
|
|
66
|
+
aws s3 sync unisphere/documentation/__EXPERIENCE_NAME__/build s3://nvp1-kaltura-documentation/__EXPERIENCE_NAME__ \
|
|
67
|
+
--region ${{ matrix.envs_regions.region }} \
|
|
68
|
+
--delete
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration: Upgrade GitHub Actions to Node 24-compatible versions
|
|
3
|
+
*
|
|
4
|
+
* Replaces all GitHub workflow files with updated versions that use
|
|
5
|
+
* Node 24-compatible action versions to resolve the Node 20 deprecation warning.
|
|
6
|
+
*
|
|
7
|
+
* Action upgrades:
|
|
8
|
+
* - actions/checkout: v4 â v5
|
|
9
|
+
* - actions/setup-node: v4 â v5
|
|
10
|
+
* - actions/cache: v3 â v5
|
|
11
|
+
* - actions/upload-artifact: v4 â v6
|
|
12
|
+
* - actions/download-artifact: v4 â v7
|
|
13
|
+
* - jfrog/setup-jfrog-cli: v4 â v5
|
|
14
|
+
*/
|
|
15
|
+
import { Tree } from '@nx/devkit';
|
|
16
|
+
export default function update(tree: Tree): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=upgrade-github-actions-node24.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-github-actions-node24.d.ts","sourceRoot":"","sources":["../../../src/migrations/4-15-1/upgrade-github-actions-node24.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,IAAI,EAAoB,MAAM,YAAY,CAAC;AAWpD,wBAA8B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE9D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Migration: Upgrade GitHub Actions to Node 24-compatible versions
|
|
4
|
+
*
|
|
5
|
+
* Replaces all GitHub workflow files with updated versions that use
|
|
6
|
+
* Node 24-compatible action versions to resolve the Node 20 deprecation warning.
|
|
7
|
+
*
|
|
8
|
+
* Action upgrades:
|
|
9
|
+
* - actions/checkout: v4 â v5
|
|
10
|
+
* - actions/setup-node: v4 â v5
|
|
11
|
+
* - actions/cache: v3 â v5
|
|
12
|
+
* - actions/upload-artifact: v4 â v6
|
|
13
|
+
* - actions/download-artifact: v4 â v7
|
|
14
|
+
* - jfrog/setup-jfrog-cli: v4 â v5
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.default = update;
|
|
18
|
+
const devkit_1 = require("@nx/devkit");
|
|
19
|
+
const fs_1 = require("fs");
|
|
20
|
+
const path_1 = require("path");
|
|
21
|
+
async function update(tree) {
|
|
22
|
+
devkit_1.logger.info('đ Upgrading GitHub Actions to Node 24-compatible versions...');
|
|
23
|
+
// Ensure .github/workflows directory exists
|
|
24
|
+
if (!tree.exists('.github')) {
|
|
25
|
+
tree.write('.github/.gitkeep', '');
|
|
26
|
+
}
|
|
27
|
+
if (!tree.exists('.github/workflows')) {
|
|
28
|
+
tree.write('.github/workflows/.gitkeep', '');
|
|
29
|
+
}
|
|
30
|
+
// Update cicd.yml
|
|
31
|
+
try {
|
|
32
|
+
const cicdPath = '.github/workflows/cicd.yml';
|
|
33
|
+
const cicdTemplatePath = (0, path_1.join)(__dirname, 'templates', 'cicd.template');
|
|
34
|
+
const cicdContent = (0, fs_1.readFileSync)(cicdTemplatePath, 'utf-8');
|
|
35
|
+
tree.write(cicdPath, cicdContent);
|
|
36
|
+
devkit_1.logger.info('â
Updated .github/workflows/cicd.yml');
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
devkit_1.logger.error(`â Failed to update cicd.yml: ${error?.message || 'Unknown error'}`);
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
// Update _publish-artifacts.yml
|
|
43
|
+
try {
|
|
44
|
+
const publishPath = '.github/workflows/_publish-artifacts.yml';
|
|
45
|
+
const publishTemplatePath = (0, path_1.join)(__dirname, 'templates', '_publish-artifacts.template');
|
|
46
|
+
const publishContent = (0, fs_1.readFileSync)(publishTemplatePath, 'utf-8');
|
|
47
|
+
tree.write(publishPath, publishContent);
|
|
48
|
+
devkit_1.logger.info('â
Updated .github/workflows/_publish-artifacts.yml');
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
devkit_1.logger.error(`â Failed to update _publish-artifacts.yml: ${error?.message || 'Unknown error'}`);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
// Update documentation.yml (only if documentation elements exist)
|
|
55
|
+
try {
|
|
56
|
+
if (tree.exists('.unisphere')) {
|
|
57
|
+
const config = (0, devkit_1.readJson)(tree, '.unisphere');
|
|
58
|
+
const experienceName = config.name;
|
|
59
|
+
if (experienceName && config.elements?.documentation && Object.keys(config.elements.documentation).length > 0) {
|
|
60
|
+
const docPath = '.github/workflows/documentation.yml';
|
|
61
|
+
const docTemplatePath = (0, path_1.join)(__dirname, 'templates', 'documentation-workflow.template');
|
|
62
|
+
const docContent = (0, fs_1.readFileSync)(docTemplatePath, 'utf-8');
|
|
63
|
+
const workflowContent = docContent.replace(/__EXPERIENCE_NAME__/g, experienceName);
|
|
64
|
+
tree.write(docPath, workflowContent);
|
|
65
|
+
devkit_1.logger.info('â
Updated .github/workflows/documentation.yml');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
devkit_1.logger.info('âī¸ No documentation elements found, skipping documentation.yml');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
devkit_1.logger.info('âī¸ No .unisphere file found, skipping documentation.yml');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
devkit_1.logger.error(`â Failed to update documentation.yml: ${error?.message || 'Unknown error'}`);
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
devkit_1.logger.info('â
GitHub Actions upgraded to Node 24-compatible versions');
|
|
80
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration: Add critical security overrides
|
|
3
|
+
*
|
|
4
|
+
* Adds npm overrides for critical transitive dependency vulnerabilities:
|
|
5
|
+
* - websocket-driver (critical): Resource limit bypass via message compression +
|
|
6
|
+
* message corruption via abuse of protocol length headers
|
|
7
|
+
* Chain: @nx/webpack â webpack-dev-server â sockjs â websocket-driver
|
|
8
|
+
*/
|
|
9
|
+
import { Tree } from '@nx/devkit';
|
|
10
|
+
export default function update(tree: Tree): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=add-critical-security-overrides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-critical-security-overrides.d.ts","sourceRoot":"","sources":["../../../src/migrations/4-15-2/add-critical-security-overrides.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAsB,MAAM,YAAY,CAAC;AAMtD,wBAA8B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C9D"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Migration: Add critical security overrides
|
|
4
|
+
*
|
|
5
|
+
* Adds npm overrides for critical transitive dependency vulnerabilities:
|
|
6
|
+
* - websocket-driver (critical): Resource limit bypass via message compression +
|
|
7
|
+
* message corruption via abuse of protocol length headers
|
|
8
|
+
* Chain: @nx/webpack â webpack-dev-server â sockjs â websocket-driver
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.default = update;
|
|
12
|
+
const devkit_1 = require("@nx/devkit");
|
|
13
|
+
const SECURITY_OVERRIDES = {
|
|
14
|
+
'websocket-driver': '>=0.7.5',
|
|
15
|
+
};
|
|
16
|
+
async function update(tree) {
|
|
17
|
+
devkit_1.logger.info('đ Adding security overrides for critical vulnerabilities...');
|
|
18
|
+
const packageJsonPath = 'package.json';
|
|
19
|
+
if (!tree.exists(packageJsonPath)) {
|
|
20
|
+
devkit_1.logger.warn('â ī¸ No package.json found, skipping');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const added = [];
|
|
24
|
+
const updated = [];
|
|
25
|
+
(0, devkit_1.updateJson)(tree, packageJsonPath, (packageJson) => {
|
|
26
|
+
if (!packageJson.overrides) {
|
|
27
|
+
packageJson.overrides = {};
|
|
28
|
+
}
|
|
29
|
+
for (const [pkg, version] of Object.entries(SECURITY_OVERRIDES)) {
|
|
30
|
+
if (packageJson.overrides[pkg]) {
|
|
31
|
+
if (packageJson.overrides[pkg] !== version) {
|
|
32
|
+
packageJson.overrides[pkg] = version;
|
|
33
|
+
updated.push(`${pkg}@${version}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
packageJson.overrides[pkg] = version;
|
|
38
|
+
added.push(`${pkg}@${version}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return packageJson;
|
|
42
|
+
});
|
|
43
|
+
if (added.length > 0) {
|
|
44
|
+
devkit_1.logger.info(`đĻ Added overrides: ${added.join(', ')}`);
|
|
45
|
+
}
|
|
46
|
+
if (updated.length > 0) {
|
|
47
|
+
devkit_1.logger.info(`đĻ Updated overrides: ${updated.join(', ')}`);
|
|
48
|
+
}
|
|
49
|
+
if (added.length === 0 && updated.length === 0) {
|
|
50
|
+
devkit_1.logger.info('âšī¸ All security overrides already present');
|
|
51
|
+
}
|
|
52
|
+
devkit_1.logger.info('â
Critical security overrides applied');
|
|
53
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration: Move @unisphere/cli to devDependencies
|
|
3
|
+
*
|
|
4
|
+
* @unisphere/cli is a build/development tool and should not be in production
|
|
5
|
+
* dependencies. This migration moves it from dependencies to devDependencies,
|
|
6
|
+
* preserving the existing version.
|
|
7
|
+
*
|
|
8
|
+
* This also resolves the critical `decompress` vulnerability from production
|
|
9
|
+
* audit reports (decompress is a transitive dependency of @unisphere/cli).
|
|
10
|
+
*/
|
|
11
|
+
import { Tree } from '@nx/devkit';
|
|
12
|
+
export default function update(tree: Tree): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=move-cli-to-dev-dependencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"move-cli-to-dev-dependencies.d.ts","sourceRoot":"","sources":["../../../src/migrations/4-15-2/move-cli-to-dev-dependencies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,IAAI,EAAsB,MAAM,YAAY,CAAC;AAItD,wBAA8B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC9D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Migration: Move @unisphere/cli to devDependencies
|
|
4
|
+
*
|
|
5
|
+
* @unisphere/cli is a build/development tool and should not be in production
|
|
6
|
+
* dependencies. This migration moves it from dependencies to devDependencies,
|
|
7
|
+
* preserving the existing version.
|
|
8
|
+
*
|
|
9
|
+
* This also resolves the critical `decompress` vulnerability from production
|
|
10
|
+
* audit reports (decompress is a transitive dependency of @unisphere/cli).
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.default = update;
|
|
14
|
+
const devkit_1 = require("@nx/devkit");
|
|
15
|
+
const TARGET_PACKAGE = '@unisphere/cli';
|
|
16
|
+
async function update(tree) {
|
|
17
|
+
devkit_1.logger.info('đ Moving @unisphere/cli to devDependencies...');
|
|
18
|
+
const packageJsonPath = 'package.json';
|
|
19
|
+
if (!tree.exists(packageJsonPath)) {
|
|
20
|
+
devkit_1.logger.warn('â ī¸ No package.json found, skipping');
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
let moved = false;
|
|
24
|
+
(0, devkit_1.updateJson)(tree, packageJsonPath, (packageJson) => {
|
|
25
|
+
// If it's in dependencies, move it to devDependencies
|
|
26
|
+
if (packageJson.dependencies?.[TARGET_PACKAGE]) {
|
|
27
|
+
const version = packageJson.dependencies[TARGET_PACKAGE];
|
|
28
|
+
// Ensure devDependencies exists
|
|
29
|
+
if (!packageJson.devDependencies) {
|
|
30
|
+
packageJson.devDependencies = {};
|
|
31
|
+
}
|
|
32
|
+
// Move to devDependencies (preserve version)
|
|
33
|
+
packageJson.devDependencies[TARGET_PACKAGE] = version;
|
|
34
|
+
delete packageJson.dependencies[TARGET_PACKAGE];
|
|
35
|
+
moved = true;
|
|
36
|
+
devkit_1.logger.info(`đĻ Moved ${TARGET_PACKAGE}@${version} from dependencies to devDependencies`);
|
|
37
|
+
}
|
|
38
|
+
return packageJson;
|
|
39
|
+
});
|
|
40
|
+
if (!moved) {
|
|
41
|
+
devkit_1.logger.info(`âšī¸ ${TARGET_PACKAGE} is not in dependencies (already in devDependencies or not present)`);
|
|
42
|
+
}
|
|
43
|
+
devkit_1.logger.info('â
@unisphere/cli placement verified');
|
|
44
|
+
}
|
package/migrations.json
CHANGED
|
@@ -570,6 +570,30 @@
|
|
|
570
570
|
"cli": {
|
|
571
571
|
"postUpdateMessage": "â
Languages support migrated to @unisphere/ui-i18n-react"
|
|
572
572
|
}
|
|
573
|
+
},
|
|
574
|
+
"4.15.1-upgrade-github-actions-node24": {
|
|
575
|
+
"version": "4.15.1",
|
|
576
|
+
"description": "Upgrades GitHub Actions to Node 24-compatible versions (resolves Node 20 deprecation warning)",
|
|
577
|
+
"factory": "./dist/migrations/4-15-1/upgrade-github-actions-node24.js",
|
|
578
|
+
"cli": {
|
|
579
|
+
"postUpdateMessage": "â
GitHub Actions upgraded to Node 24-compatible versions"
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
"4.15.2-add-critical-security-overrides": {
|
|
583
|
+
"version": "4.15.2",
|
|
584
|
+
"description": "Adds npm override for websocket-driver critical vulnerability (resource limit bypass + message corruption)",
|
|
585
|
+
"factory": "./dist/migrations/4-15-2/add-critical-security-overrides.js",
|
|
586
|
+
"cli": {
|
|
587
|
+
"postUpdateMessage": "â
Critical security overrides applied (websocket-driver)"
|
|
588
|
+
}
|
|
589
|
+
},
|
|
590
|
+
"4.15.2-move-cli-to-dev-dependencies": {
|
|
591
|
+
"version": "4.15.2",
|
|
592
|
+
"description": "Moves @unisphere/cli from dependencies to devDependencies (build tool, not production dependency)",
|
|
593
|
+
"factory": "./dist/migrations/4-15-2/move-cli-to-dev-dependencies.js",
|
|
594
|
+
"cli": {
|
|
595
|
+
"postUpdateMessage": "â
@unisphere/cli moved to devDependencies"
|
|
596
|
+
}
|
|
573
597
|
}
|
|
574
598
|
},
|
|
575
599
|
"packageJsonUpdates": {
|
|
@@ -1020,6 +1044,80 @@
|
|
|
1020
1044
|
"alwaysAddToPackageJson": false
|
|
1021
1045
|
}
|
|
1022
1046
|
}
|
|
1047
|
+
},
|
|
1048
|
+
"4.15.1": {
|
|
1049
|
+
"version": "4.15.1",
|
|
1050
|
+
"cli": "nx",
|
|
1051
|
+
"postUpdateMessage": "đ Migration to @unisphere/nx 4.15.1 completed successfully!",
|
|
1052
|
+
"packages": {
|
|
1053
|
+
"nx": {
|
|
1054
|
+
"version": "22.7.7",
|
|
1055
|
+
"alwaysAddToPackageJson": false
|
|
1056
|
+
},
|
|
1057
|
+
"@nx/eslint": {
|
|
1058
|
+
"version": "22.7.7",
|
|
1059
|
+
"alwaysAddToPackageJson": false
|
|
1060
|
+
},
|
|
1061
|
+
"@nx/eslint-plugin": {
|
|
1062
|
+
"version": "22.7.7",
|
|
1063
|
+
"alwaysAddToPackageJson": false
|
|
1064
|
+
},
|
|
1065
|
+
"@nx/jest": {
|
|
1066
|
+
"version": "22.7.7",
|
|
1067
|
+
"alwaysAddToPackageJson": false
|
|
1068
|
+
},
|
|
1069
|
+
"@nx/js": {
|
|
1070
|
+
"version": "22.7.7",
|
|
1071
|
+
"alwaysAddToPackageJson": false
|
|
1072
|
+
},
|
|
1073
|
+
"@nx/react": {
|
|
1074
|
+
"version": "22.7.7",
|
|
1075
|
+
"alwaysAddToPackageJson": false
|
|
1076
|
+
},
|
|
1077
|
+
"@nx/rollup": {
|
|
1078
|
+
"version": "22.7.7",
|
|
1079
|
+
"alwaysAddToPackageJson": false
|
|
1080
|
+
},
|
|
1081
|
+
"@nx/vite": {
|
|
1082
|
+
"version": "22.7.7",
|
|
1083
|
+
"alwaysAddToPackageJson": false
|
|
1084
|
+
},
|
|
1085
|
+
"@nx/vitest": {
|
|
1086
|
+
"version": "22.7.7",
|
|
1087
|
+
"alwaysAddToPackageJson": false
|
|
1088
|
+
},
|
|
1089
|
+
"@nx/web": {
|
|
1090
|
+
"version": "22.7.7",
|
|
1091
|
+
"alwaysAddToPackageJson": false
|
|
1092
|
+
},
|
|
1093
|
+
"@nx/webpack": {
|
|
1094
|
+
"version": "22.7.7",
|
|
1095
|
+
"alwaysAddToPackageJson": false
|
|
1096
|
+
},
|
|
1097
|
+
"@nx/workspace": {
|
|
1098
|
+
"version": "22.7.7",
|
|
1099
|
+
"alwaysAddToPackageJson": false
|
|
1100
|
+
},
|
|
1101
|
+
"vite": {
|
|
1102
|
+
"version": "7.3.6",
|
|
1103
|
+
"alwaysAddToPackageJson": false
|
|
1104
|
+
},
|
|
1105
|
+
"@unisphere/cli": {
|
|
1106
|
+
"version": "6.0.2",
|
|
1107
|
+
"alwaysAddToPackageJson": false
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
},
|
|
1111
|
+
"4.15.2": {
|
|
1112
|
+
"version": "4.15.2",
|
|
1113
|
+
"cli": "nx",
|
|
1114
|
+
"postUpdateMessage": "đ Migration to @unisphere/nx 4.15.2 completed successfully!",
|
|
1115
|
+
"packages": {
|
|
1116
|
+
"@unisphere/cli": {
|
|
1117
|
+
"version": "6.0.3",
|
|
1118
|
+
"alwaysAddToPackageJson": false
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1023
1121
|
}
|
|
1024
1122
|
}
|
|
1025
1123
|
}
|