Skip to content

Commit c57b031

Browse files
authored
[Node 24][V3] Update Dependencies (@W-21177051@) (#3663)
* Bump dependencies versions * Update lock files * Fix npm registry * Update jest breaking changes * One click checkout tests with configurable mocks * Solve merge conflicts * Update package-lock.json
1 parent f9546dc commit c57b031

File tree

27 files changed

+4886
-9948
lines changed

27 files changed

+4886
-9948
lines changed

e2e/package-lock.json

Lines changed: 1061 additions & 3628 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"@aws-sdk/client-s3": "3.450.0",
1717
"@aws-sdk/client-sts": "3.450.0",
1818
"@salesforce/pwa-kit-dev": "3.17.0-dev",
19-
"jest": "^26.6.3"
19+
"jest": "^29.7.0"
2020
},
2121
"jest": {
2222
"setupFilesAfterEnv": [

package-lock.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/internal-lib-build/bin/prepare-dist.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@
77
*/
88
/* istanbul ignore file */
99
/* eslint-disable @typescript-eslint/no-var-requires */
10-
const promisify = require('util').promisify
1110
const fs = require('fs')
1211
const fsPromises = require('fs').promises
13-
const rimraf = promisify(require('rimraf'))
1412
const path = require('path')
1513
const replace = require('replace-in-file')
1614
const packlist = require('npm-packlist')
@@ -55,7 +53,7 @@ const main = async () => {
5553
console.log('Preparing dist...')
5654
// Remove the dist/package.json so we don't end up including more files in
5755
// the package.
58-
await rimraf(`${DEST_DIR}/package.json`)
56+
await fsPromises.rm(`${DEST_DIR}/package.json`, {force: true})
5957

6058
try {
6159
// Get a list of files from the `npm pack --dry-run` command.

packages/internal-lib-build/configs/jest/jest.config.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ module.exports = {
3333
],
3434
testEnvironment: 'jest-environment-jsdom-global',
3535
testEnvironmentOptions: {
36-
resources: 'usable'
36+
resources: 'usable',
37+
// Prevent jest-environment-jsdom from using 'browser' export conditions (Jest 29+).
38+
// Without this, packages like uuid and nanoid resolve to ESM browser builds
39+
// that Jest cannot parse in a CJS context.
40+
customExportConditions: ['node', 'node-addons']
3741
}
3842
}

packages/internal-lib-build/configs/jest/setup-jest.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,26 @@ import 'raf/polyfill' // fix requestAnimationFrame issue with polyfill
99
import fetch from 'jest-fetch-mock'
1010
import 'regenerator-runtime/runtime'
1111

12+
// Polyfill setImmediate/clearImmediate for jsdom environment (Jest 28+)
13+
// jsdom no longer provides these Node.js globals by default
14+
if (typeof global.setImmediate === 'undefined') {
15+
global.setImmediate = (fn, ...args) => setTimeout(fn, 0, ...args)
16+
global.clearImmediate = (id) => clearTimeout(id)
17+
}
18+
19+
// Polyfill performance.mark/measure for jsdom environment (Jest 29+)
20+
// jsdom v20 does not implement the User Timing API (performance.mark/measure)
21+
// Use the Node.js built-in performance API as a fallback
22+
if (typeof global.performance !== 'undefined' && typeof global.performance.mark !== 'function') {
23+
// eslint-disable-next-line @typescript-eslint/no-var-requires
24+
const {performance: nodePerformance} = require('perf_hooks')
25+
global.performance.mark = nodePerformance.mark.bind(nodePerformance)
26+
global.performance.measure = nodePerformance.measure.bind(nodePerformance)
27+
global.performance.getEntriesByName = nodePerformance.getEntriesByName.bind(nodePerformance)
28+
global.performance.getEntriesByType = nodePerformance.getEntriesByType.bind(nodePerformance)
29+
global.performance.clearMarks = nodePerformance.clearMarks.bind(nodePerformance)
30+
global.performance.clearMeasures = nodePerformance.clearMeasures.bind(nodePerformance)
31+
}
32+
1233
// Mock Fetch
1334
global.fetch = fetch

0 commit comments

Comments
 (0)