diff --git a/.github/actions/setup-runtime/action.yml b/.github/actions/setup-runtime/action.yml index 217354e6f..f3a0e5268 100644 --- a/.github/actions/setup-runtime/action.yml +++ b/.github/actions/setup-runtime/action.yml @@ -4,7 +4,7 @@ description: Prepare Runtime in GitHub Actions inputs: node-version: description: Version of Node to use - default: 20.x + default: 22.x eas-version: description: Version of EAS CLI to use diff --git a/.github/actions/setup-snackager/action.yml b/.github/actions/setup-snackager/action.yml index d1216cb84..fbb2fd366 100644 --- a/.github/actions/setup-snackager/action.yml +++ b/.github/actions/setup-snackager/action.yml @@ -4,7 +4,7 @@ description: Prepare Snackager in GitHub Actions inputs: node-version: description: Version of Node to use - default: 20.x + default: 22.x runs: using: composite diff --git a/.github/actions/setup-snackpub/action.yml b/.github/actions/setup-snackpub/action.yml index 4a397147c..431a5a9a2 100644 --- a/.github/actions/setup-snackpub/action.yml +++ b/.github/actions/setup-snackpub/action.yml @@ -4,7 +4,7 @@ description: Prepare Snackpub in GitHub Actions inputs: node-version: description: Version of Node to use - default: 20.x + default: 22.x runs: using: composite diff --git a/.github/actions/setup-website/action.yml b/.github/actions/setup-website/action.yml index dc599d8d7..a142f772c 100644 --- a/.github/actions/setup-website/action.yml +++ b/.github/actions/setup-website/action.yml @@ -4,7 +4,7 @@ description: Prepare Website in GitHub Actions inputs: node-version: description: Version of Node to use - default: 20.x + default: 22.x runs: using: composite diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index 6e3c4ef4c..90605baa2 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -53,7 +53,7 @@ jobs: - name: 🏗 Setup Node uses: actions/setup-node@v4 with: - node-version: 20.x + node-version: 22.x cache: yarn - name: 📦 Install monorepo dependencies diff --git a/package.json b/package.json index 7a36dee9c..5c8f815d9 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "author": "Expo", "license": "MIT", "volta": { - "node": "20.19.4" + "node": "22.21.1" }, "scripts": { "start": "turbo build --filter '{./packages/snack-term}...' && yarn --cwd ./packages/snack-term start", diff --git a/packages/snack-babel-standalone/package.json b/packages/snack-babel-standalone/package.json index 8819240ca..1e381f5c4 100644 --- a/packages/snack-babel-standalone/package.json +++ b/packages/snack-babel-standalone/package.json @@ -33,7 +33,7 @@ "author": "Expo ", "license": "MIT", "volta": { - "node": "20.19.4" + "node": "22.21.1" }, "scripts": { "test": "echo 'No tests yet'", diff --git a/packages/snack-content/package.json b/packages/snack-content/package.json index 7f4421df8..e315e3db8 100644 --- a/packages/snack-content/package.json +++ b/packages/snack-content/package.json @@ -27,7 +27,7 @@ "author": "Expo ", "license": "MIT", "volta": { - "node": "20.19.4" + "node": "22.21.1" }, "dependencies": { "semver": "^7.3.4" diff --git a/packages/snack-eslint-standalone/package.json b/packages/snack-eslint-standalone/package.json index 4ae71a3c8..cac64d0e0 100644 --- a/packages/snack-eslint-standalone/package.json +++ b/packages/snack-eslint-standalone/package.json @@ -54,6 +54,6 @@ "snack-babel-standalone": "^3.0.1" }, "volta": { - "node": "20.19.4" + "node": "22.21.1" } } diff --git a/packages/snack-proxies/package.json b/packages/snack-proxies/package.json index 883927438..cb74bdf93 100644 --- a/packages/snack-proxies/package.json +++ b/packages/snack-proxies/package.json @@ -12,7 +12,7 @@ "build": "tsc" }, "volta": { - "node": "20.19.4" + "node": "22.21.1" }, "dependencies": { "chalk": "^4.1.0", diff --git a/packages/snack-require-context/package.json b/packages/snack-require-context/package.json index da44e8844..1f82edb7b 100644 --- a/packages/snack-require-context/package.json +++ b/packages/snack-require-context/package.json @@ -37,7 +37,7 @@ "author": "Expo ", "license": "MIT", "volta": { - "node": "20.19.4" + "node": "22.21.1" }, "scripts": { "test": "jest", diff --git a/packages/snack-runtime/package.json b/packages/snack-runtime/package.json index c2f9292e5..81cd5a539 100644 --- a/packages/snack-runtime/package.json +++ b/packages/snack-runtime/package.json @@ -20,7 +20,7 @@ "author": "Expo ", "license": "MIT", "volta": { - "node": "20.19.4" + "node": "22.21.1" }, "scripts": { "test": "jest", diff --git a/packages/snack-sdk/jest.config.js b/packages/snack-sdk/jest.config.js index ce71251be..41c9dc191 100644 --- a/packages/snack-sdk/jest.config.js +++ b/packages/snack-sdk/jest.config.js @@ -1,5 +1,14 @@ +/** @type {import('jest').Config} */ module.exports = { preset: 'ts-jest', testEnvironment: 'node', - modulePathIgnorePatterns: ['/build/'], + testPathIgnorePatterns: ['/node_modules/', '/build/'], + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + tsconfig: 'tsconfig.json', + }, + ], + }, }; diff --git a/packages/snack-sdk/package.json b/packages/snack-sdk/package.json index 5115a0cdd..888f560f6 100644 --- a/packages/snack-sdk/package.json +++ b/packages/snack-sdk/package.json @@ -33,7 +33,7 @@ "author": "Expo ", "license": "MIT", "volta": { - "node": "20.19.4" + "node": "22.21.1" }, "devDependencies": { "@expo/spawn-async": "^1.5.0", @@ -45,7 +45,6 @@ "@types/koa__router": "^8.0.3", "@types/lodash.isequal": "^4.5.5", "@types/lodash.mapvalues": "^4.6.6", - "@types/node-fetch": "^2.5.7", "@types/pubnub": "^7.2.0", "@types/semver": "^7.3.4", "@types/ua-parser-js": "^0.7.33", @@ -65,7 +64,6 @@ }, "dependencies": { "diff": "^4.0.2", - "fetch-ponyfill": "^7.0.0", "lodash": "^4.17.20", "nanoid": "^3.1.20", "nullthrows": "^1.1.1", diff --git a/packages/snack-sdk/src/DependencyResolver.ts b/packages/snack-sdk/src/DependencyResolver.ts index 645e3804c..0b03a89f1 100644 --- a/packages/snack-sdk/src/DependencyResolver.ts +++ b/packages/snack-sdk/src/DependencyResolver.ts @@ -77,7 +77,7 @@ export default class DependencyResolver { return; } if (res.status === 200) { - const data = await res.json(); + const data: any = await res.json(); if (data.pending) { this.logger?.module('Dependency is still being bundled', key, 'trying again shortly'); await new Promise((resolve) => setTimeout(resolve, 5000)); diff --git a/packages/snack-sdk/src/DevSession.ts b/packages/snack-sdk/src/DevSession.ts index cf22738bb..fca3a4e23 100644 --- a/packages/snack-sdk/src/DevSession.ts +++ b/packages/snack-sdk/src/DevSession.ts @@ -118,7 +118,7 @@ export default class DevSession { throw Error(response.statusText); } - const json = await response.json(); + const json: any = await response.json(); this.onSendBeaconCloseRequest({ url: this.getRequest(true, undefined, deviceId).url, data: new Blob( diff --git a/packages/snack-sdk/src/FileUploader.ts b/packages/snack-sdk/src/FileUploader.ts index 0eae74d3b..9864a5076 100644 --- a/packages/snack-sdk/src/FileUploader.ts +++ b/packages/snack-sdk/src/FileUploader.ts @@ -108,7 +108,7 @@ export default class FileUploader { const text = await response.text(); throw new Error(text); } - const result = await response.json(); + const result: any = await response.json(); const resultURL = result.url; if (this.status[path]?.file === file) { diff --git a/packages/snack-sdk/src/Session.ts b/packages/snack-sdk/src/Session.ts index 0812d735d..4f6c2e8ad 100644 --- a/packages/snack-sdk/src/Session.ts +++ b/packages/snack-sdk/src/Session.ts @@ -407,7 +407,7 @@ export default class Snack { ...(options?.ignoreUser ? {} : createUserHeader(user)), }, }); - const data = await response.json(); + const data: any = await response.json(); if (!data?.id) { throw new Error(data.errors?.[0]?.message || 'Failed to save'); } @@ -483,7 +483,7 @@ export default class Snack { 'Content-Type': 'application/json', }, }); - const data = await response.json(); + const data: any = await response.json(); if (data.id) { this.logger?.info('Uploaded preview', data); } else { diff --git a/packages/snack-sdk/src/WantedVersions.ts b/packages/snack-sdk/src/WantedVersions.ts index 3cf7856b9..161c4d1f6 100644 --- a/packages/snack-sdk/src/WantedVersions.ts +++ b/packages/snack-sdk/src/WantedVersions.ts @@ -88,7 +88,7 @@ export class WantedDependencyVersions { const urlVersion = encodeURIComponent(sdkVersion); return fetch(`https://cdn.jsdelivr.net/npm/expo@${urlVersion}/bundledNativeModules.json`) .then((response) => response.json()) - .then((data) => data || {}); + .then((data) => data || {}) as Promise>; } /** diff --git a/packages/snack-sdk/src/__mocks__/fetch-mock-server.ts b/packages/snack-sdk/src/__mocks__/fetch-mock-server.ts new file mode 100644 index 000000000..3ba52e5c0 --- /dev/null +++ b/packages/snack-sdk/src/__mocks__/fetch-mock-server.ts @@ -0,0 +1,58 @@ +import type { Server } from 'http'; + +import createSnackager from './snackager'; +import createVersions from './versions'; +import createWww from './www'; +import { defaultConfig } from '..'; + +const actualFetch = globalThis.fetch; + +const mockFetch = jest.fn(async (url: string, options: Request) => { + let server: Server | undefined; + + if (!process.env.SNACK_ENV || process.env.SNACK_ENV === 'mock') { + // Snackager + if (url.startsWith(defaultConfig.snackagerURL)) { + const path = url.substring(defaultConfig.snackagerURL.length); + server = createSnackager().listen(0); + // @ts-ignore: Property port does not exist on type AddressInfo | string + url = `http://127.0.0.1:${server.address().port}${path}`; + + // BundledNativeModules.json + } else if (url.startsWith('https://cdn.jsdelivr.net/npm/expo@')) { + const path = url.substring('https://cdn.jsdelivr.net/npm'.length); + server = createVersions().listen(0); + // @ts-ignore: Property port does not exist on type AddressInfo | string + url = `http://127.0.0.1:${server.address().port}${path}`; + + // www + } else if (url.startsWith(defaultConfig.apiURL)) { + const path = url.substring(defaultConfig.apiURL.length); + server = createWww().listen(0); + // @ts-ignore: Property port does not exist on type AddressInfo | string + url = `http://127.0.0.1:${server.address().port}${path}`; + // console.log('WWW: ', path); + } else { + console.log('UNKNOWN: ', url); + } + } + + try { + return await actualFetch(url, options); + } catch (e) { + throw e; + } finally { + server?.close(); + } +}); + +beforeEach(() => { + // @ts-ignore mock only accepts string and Request arguments + globalThis.fetch = mockFetch; +}); + +afterEach(() => { + globalThis.fetch = actualFetch; +}); + +export default mockFetch; diff --git a/packages/snack-sdk/src/__mocks__/fetch.ts b/packages/snack-sdk/src/__mocks__/fetch.ts new file mode 100644 index 000000000..61b94d707 --- /dev/null +++ b/packages/snack-sdk/src/__mocks__/fetch.ts @@ -0,0 +1,12 @@ +const actualFetch = globalThis.fetch; + +export const mockFetch = jest.fn(); + +beforeEach(() => { + globalThis.fetch = mockFetch; + mockFetch.mockClear(); +}); + +afterEach(() => { + globalThis.fetch = actualFetch; +}); diff --git a/packages/snack-sdk/src/__mocks__/node-fetch.ts b/packages/snack-sdk/src/__mocks__/node-fetch.ts deleted file mode 100644 index 29e8e0fd8..000000000 --- a/packages/snack-sdk/src/__mocks__/node-fetch.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { Server } from 'http'; - -import createSnackager from './snackager'; -import createVersions from './versions'; -import createWww from './www'; -import { defaultConfig } from '..'; - -const actualFetch = jest.requireActual('node-fetch'); - -jest.mock('node-fetch', () => { - return jest.fn(async (url: string, options: Request) => { - let server: Server | undefined; - - if (!process.env.SNACK_ENV || process.env.SNACK_ENV === 'mock') { - // Snackager - if (url.startsWith(defaultConfig.snackagerURL)) { - const path = url.substring(defaultConfig.snackagerURL.length); - server = createSnackager().listen(0); - // @ts-ignore: Property port does not exist on type AddressInfo | string - url = `http://127.0.0.1:${server.address().port}${path}`; - - // BundledNativeModules.json - } else if (url.startsWith('https://cdn.jsdelivr.net/npm/expo@')) { - const path = url.substring('https://cdn.jsdelivr.net/npm'.length); - server = createVersions().listen(0); - // @ts-ignore: Property port does not exist on type AddressInfo | string - url = `http://127.0.0.1:${server.address().port}${path}`; - - // www - } else if (url.startsWith(defaultConfig.apiURL)) { - const path = url.substring(defaultConfig.apiURL.length); - server = createWww().listen(0); - // @ts-ignore: Property port does not exist on type AddressInfo | string - url = `http://127.0.0.1:${server.address().port}${path}`; - // console.log('WWW: ', path); - } else { - console.log('UNKNOWN: ', url); - } - } - - try { - return await actualFetch(url, options); - } catch (e) { - throw e; - } finally { - server?.close(); - } - }); -}); - -const mockFetch = require('node-fetch'); - -beforeEach(() => mockFetch.mockClear()); - -export default mockFetch; diff --git a/packages/snack-sdk/src/__tests__/code-test.ts b/packages/snack-sdk/src/__tests__/code-test.ts index 821dde844..fe42542da 100644 --- a/packages/snack-sdk/src/__tests__/code-test.ts +++ b/packages/snack-sdk/src/__tests__/code-test.ts @@ -1,7 +1,7 @@ /* eslint @typescript-eslint/no-unused-vars: 0 */ import formData from 'form-data'; -import '../__mocks__/node-fetch'; +import '../__mocks__/fetch-mock-server'; import Snack, { SnackFile } from './snack-sdk'; import { ProtocolCodeMessage, diff --git a/packages/snack-sdk/src/__tests__/connections-test.ts b/packages/snack-sdk/src/__tests__/connections-test.ts index c05a7218a..33d008321 100644 --- a/packages/snack-sdk/src/__tests__/connections-test.ts +++ b/packages/snack-sdk/src/__tests__/connections-test.ts @@ -1,4 +1,4 @@ -import '../__mocks__/node-fetch'; +import '../__mocks__/fetch-mock-server'; import Snack from './snack-sdk'; import { ProtocolErrorMessage } from '../transports/Protocol'; import Transport from '../transports/__mocks__/TestTransport'; diff --git a/packages/snack-sdk/src/__tests__/dependencies-test.ts b/packages/snack-sdk/src/__tests__/dependencies-test.ts index 1ebe67e88..8cf196bd3 100644 --- a/packages/snack-sdk/src/__tests__/dependencies-test.ts +++ b/packages/snack-sdk/src/__tests__/dependencies-test.ts @@ -1,4 +1,4 @@ -import '../__mocks__/node-fetch'; +import '../__mocks__/fetch-mock-server'; import { defaultSdkVersion, newestSdkVersion, oldestSdkVersion, SDKVersion } from 'snack-content'; import Snack from './snack-sdk'; diff --git a/packages/snack-sdk/src/__tests__/devsession-test.ts b/packages/snack-sdk/src/__tests__/devsession-test.ts index aef1a2fbb..b23288a99 100644 --- a/packages/snack-sdk/src/__tests__/devsession-test.ts +++ b/packages/snack-sdk/src/__tests__/devsession-test.ts @@ -1,12 +1,8 @@ -import fetch from 'node-fetch'; - import '../__mocks__/blob'; import Snack from './snack-sdk'; +import { mockFetch } from '../__mocks__/fetch'; -jest.mock('node-fetch'); - -// @ts-ignore -fetch.mockReturnValue( +mockFetch.mockReturnValue( Promise.resolve({ ok: true, status: 200, @@ -18,32 +14,27 @@ fetch.mockReturnValue( }), ); -beforeEach(() => { - // @ts-ignore - fetch.mockClear(); -}); - describe('devsession', () => { it('sends notify when online and user or device-id specified', async () => { const snack = new Snack({}); - expect(fetch).not.toBeCalled(); // !online + expect(mockFetch).not.toBeCalled(); // !online snack.setOnline(true); - expect(fetch).not.toBeCalled(); // !device-id + expect(mockFetch).not.toBeCalled(); // !device-id snack.setOnline(false); - expect(fetch).not.toBeCalled(); // !online + expect(mockFetch).not.toBeCalled(); // !online snack.setOnline(true); snack.setDeviceId('1234'); - expect(fetch).toBeCalledTimes(1); // online && device-id + expect(mockFetch).toBeCalledTimes(1); // online && device-id snack.setOnline(false); - expect(fetch).toBeCalledTimes(2); // close + expect(mockFetch).toBeCalledTimes(2); // close snack.setDeviceId(); - expect(fetch).toBeCalledTimes(2); // still closed + expect(mockFetch).toBeCalledTimes(2); // still closed snack.setOnline(true); - expect(fetch).toBeCalledTimes(2); // !device-id + expect(mockFetch).toBeCalledTimes(2); // !device-id snack.setDeviceId('1234'); - expect(fetch).toBeCalledTimes(3); // notify + expect(mockFetch).toBeCalledTimes(3); // notify snack.setOnline(false); - expect(fetch).toBeCalledTimes(4); // !online + expect(mockFetch).toBeCalledTimes(4); // !online }); it('receives sendBeaconCloseRequest', async () => { @@ -52,16 +43,16 @@ describe('devsession', () => { channel: '10spnBnPxi', }); expect(snack.getState().sendBeaconCloseRequest).toBeUndefined(); - expect(fetch).not.toBeCalled(); + expect(mockFetch).not.toBeCalled(); snack.setOnline(true); - expect(fetch).not.toBeCalled(); + expect(mockFetch).not.toBeCalled(); snack.setDeviceId('1234'); - expect(fetch).toBeCalledTimes(1); + expect(mockFetch).toBeCalledTimes(1); await new Promise((resolve) => setTimeout(resolve, 1)); expect(snack.getState().sendBeaconCloseRequest).toBeDefined(); expect(snack.getState().sendBeaconCloseRequest).toMatchSnapshot(); snack.setOnline(false); - expect(fetch).toBeCalledTimes(2); + expect(mockFetch).toBeCalledTimes(2); }); it('sends notify when calling setFocus', async () => { @@ -70,11 +61,11 @@ describe('devsession', () => { online: true, deviceId: '1234', }); - expect(fetch).toBeCalledTimes(1); + expect(mockFetch).toBeCalledTimes(1); snack.setFocus(); - expect(fetch).toBeCalledTimes(2); + expect(mockFetch).toBeCalledTimes(2); snack.setOnline(false); - expect(fetch).toBeCalledTimes(3); + expect(mockFetch).toBeCalledTimes(3); }); it('sends notify with user session secret', async () => { @@ -84,7 +75,7 @@ describe('devsession', () => { deviceId: '1234', user: { sessionSecret: '{"some":"json"}' }, }); - expect(fetch).toBeCalledWith( + expect(mockFetch).toBeCalledWith( expect.any(String), expect.objectContaining({ headers: expect.objectContaining({ @@ -102,7 +93,7 @@ describe('devsession', () => { deviceId: '1234', user: { accessToken: 'sometoken' }, }); - expect(fetch).toBeCalledWith( + expect(mockFetch).toBeCalledWith( expect.any(String), expect.objectContaining({ headers: expect.objectContaining({ diff --git a/packages/snack-sdk/src/__tests__/disabled-test.ts b/packages/snack-sdk/src/__tests__/disabled-test.ts index 24fdd3497..d8405b1de 100644 --- a/packages/snack-sdk/src/__tests__/disabled-test.ts +++ b/packages/snack-sdk/src/__tests__/disabled-test.ts @@ -1,5 +1,5 @@ import Snack from './snack-sdk'; -import fetch from '../__mocks__/node-fetch'; +import fetch from '../__mocks__/fetch-mock-server'; describe('disabled', () => { it('is enabled by default', async () => { diff --git a/packages/snack-sdk/src/__tests__/download-test.ts b/packages/snack-sdk/src/__tests__/download-test.ts index de76b9eb9..55ab43a98 100644 --- a/packages/snack-sdk/src/__tests__/download-test.ts +++ b/packages/snack-sdk/src/__tests__/download-test.ts @@ -1,12 +1,9 @@ -import fetch from 'node-fetch'; - import Snack, { defaultConfig } from './snack-sdk'; - -jest.mock('node-fetch'); +import { mockFetch } from '../__mocks__/fetch'; const SAVE_ID = '7777771777'; -// @ts-ignore -fetch.mockReturnValue( + +mockFetch.mockReturnValue( Promise.resolve({ ok: true, status: 200, @@ -14,11 +11,6 @@ fetch.mockReturnValue( }), ); -beforeEach(() => { - // @ts-ignore - fetch.mockClear(); -}); - describe('download', () => { it('saves and returns download url', async () => { const snack = new Snack({ @@ -30,7 +22,7 @@ describe('download', () => { }, }); const url = await snack.getDownloadURLAsync(); - expect(fetch).toBeCalled(); + expect(mockFetch).toBeCalled(); expect(url).toBe(`${defaultConfig.apiURL}/--/api/v2/snack/download/${SAVE_ID}`); }); @@ -39,7 +31,7 @@ describe('download', () => { id: '761293482', }); const url = await snack.getDownloadURLAsync(); - expect(fetch).not.toBeCalled(); + expect(mockFetch).not.toBeCalled(); expect(url).toBe(`${defaultConfig.apiURL}/--/api/v2/snack/download/761293482`); }); }); diff --git a/packages/snack-sdk/src/__tests__/files-test.ts b/packages/snack-sdk/src/__tests__/files-test.ts index 81d2f57f9..63cff116b 100644 --- a/packages/snack-sdk/src/__tests__/files-test.ts +++ b/packages/snack-sdk/src/__tests__/files-test.ts @@ -1,6 +1,6 @@ import formData from 'form-data'; -import '../__mocks__/node-fetch'; +import '../__mocks__/fetch-mock-server'; import Snack from './snack-sdk'; function createAsset(name: string, contents: string, corrupt?: boolean): FormData { diff --git a/packages/snack-sdk/src/__tests__/preview-test.ts b/packages/snack-sdk/src/__tests__/preview-test.ts index 360995923..58bb336f8 100644 --- a/packages/snack-sdk/src/__tests__/preview-test.ts +++ b/packages/snack-sdk/src/__tests__/preview-test.ts @@ -1,4 +1,4 @@ -import '../__mocks__/node-fetch'; +import '../__mocks__/fetch-mock-server'; import Snack from './snack-sdk'; import { ProtocolStatusMessage } from '../transports/Protocol'; import Transport from '../transports/__mocks__/TestTransport'; diff --git a/packages/snack-sdk/src/__tests__/save-test.ts b/packages/snack-sdk/src/__tests__/save-test.ts index bae5282f6..6e4031481 100644 --- a/packages/snack-sdk/src/__tests__/save-test.ts +++ b/packages/snack-sdk/src/__tests__/save-test.ts @@ -1,7 +1,7 @@ import { newestSdkVersion, oldestSdkVersion } from 'snack-content'; import Snack from './snack-sdk'; -import fetch from '../__mocks__/node-fetch'; +import fetch from '../__mocks__/fetch-mock-server'; jest.mock('node-fetch'); diff --git a/packages/snack-sdk/src/__tests__/sdkversion-test.ts b/packages/snack-sdk/src/__tests__/sdkversion-test.ts index afbbabc1d..9048daaf3 100644 --- a/packages/snack-sdk/src/__tests__/sdkversion-test.ts +++ b/packages/snack-sdk/src/__tests__/sdkversion-test.ts @@ -1,4 +1,4 @@ -import '../__mocks__/node-fetch'; +import '../__mocks__/fetch-mock-server'; import { getSupportedSDKVersions, oldestSdkVersion, newestSdkVersion } from 'snack-content'; import Snack, { defaultConfig } from './snack-sdk'; diff --git a/packages/snack-sdk/src/__tests__/transports-test.ts b/packages/snack-sdk/src/__tests__/transports-test.ts index a81ad2ccf..47d09719c 100644 --- a/packages/snack-sdk/src/__tests__/transports-test.ts +++ b/packages/snack-sdk/src/__tests__/transports-test.ts @@ -1,4 +1,4 @@ -import '../__mocks__/node-fetch'; +import '../__mocks__/fetch-mock-server'; import Snack from './snack-sdk'; import { SnackTransportOptions } from '../transports'; diff --git a/packages/snack-sdk/src/__tests__/upload-test.ts b/packages/snack-sdk/src/__tests__/upload-test.ts index bc556dd68..fe1adb127 100644 --- a/packages/snack-sdk/src/__tests__/upload-test.ts +++ b/packages/snack-sdk/src/__tests__/upload-test.ts @@ -1,5 +1,5 @@ import Snack from './snack-sdk'; -import fetch from '../__mocks__/node-fetch'; +import fetch from '../__mocks__/fetch-mock-server'; import type { ProtocolCodeMessage } from '../transports/Protocol'; import Transport from '../transports/__mocks__/TestTransport'; @@ -13,7 +13,7 @@ describe('upload', () => { ok: true, status: 200, json: async () => ({ url: uploadURL }), - }), + } as Response), ); Transport.mockVerifyCodeMessageSize.mockImplementation((codeMessage: ProtocolCodeMessage) => { diff --git a/packages/snack-sdk/src/__tests__/url-test.ts b/packages/snack-sdk/src/__tests__/url-test.ts index 3e7837852..89ccf150b 100644 --- a/packages/snack-sdk/src/__tests__/url-test.ts +++ b/packages/snack-sdk/src/__tests__/url-test.ts @@ -1,4 +1,4 @@ -import '../__mocks__/node-fetch'; +import '../__mocks__/fetch-mock-server'; import { newestSdkVersion, oldestSdkVersion } from 'snack-content'; import Snack, { SnackOptions } from './snack-sdk'; diff --git a/packages/snack-sdk/src/__tests__/webplayer-test.ts b/packages/snack-sdk/src/__tests__/webplayer-test.ts index 7d2cc8721..3f887f618 100644 --- a/packages/snack-sdk/src/__tests__/webplayer-test.ts +++ b/packages/snack-sdk/src/__tests__/webplayer-test.ts @@ -1,5 +1,5 @@ /* eslint @typescript-eslint/no-unused-vars: 0 */ -import '../__mocks__/node-fetch'; +import '../__mocks__/fetch-mock-server'; import Snack from './snack-sdk'; import Window, { postMessage } from '../__mocks__/window'; diff --git a/packages/snack-sdk/src/index.ts b/packages/snack-sdk/src/index.ts index ae25b2f18..c44ea0f23 100644 --- a/packages/snack-sdk/src/index.ts +++ b/packages/snack-sdk/src/index.ts @@ -28,6 +28,7 @@ import Snack, { SnackLogListener, } from './Session'; import defaultConfig from './defaultConfig'; +import { setSnackSDKFetch } from './utils'; export * from './transports'; export * from './types'; @@ -60,4 +61,5 @@ export { Snack, createRuntimeUrl, parseRuntimeUrl, + setSnackSDKFetch, }; diff --git a/packages/snack-sdk/src/utils.ts b/packages/snack-sdk/src/utils.ts index 525289737..0864f0ead 100644 --- a/packages/snack-sdk/src/utils.ts +++ b/packages/snack-sdk/src/utils.ts @@ -1,11 +1,27 @@ -import fetchPonyfill from 'fetch-ponyfill'; import { customAlphabet } from 'nanoid'; import { SDKVersion, createRuntimeUrl } from 'snack-content'; import { SnackError, SnackUser } from './types'; -const { fetch } = fetchPonyfill(); -export { fetch }; +let fetchFn: typeof fetch; + +/** + * Stable reference to the fetch function that is used internally. + */ +const internalFetch: typeof fetch = (...args) => { + if (!fetchFn) { + // intialize on first use to avoid breaking global polyfill from user's code (or test mocks) + fetchFn = globalThis.fetch; + } + + return fetchFn(...args); +}; + +export { internalFetch as fetch }; + +export function setSnackSDKFetch(fn: typeof fetch) { + fetchFn = fn; +} /** * All valid characters to generate a new channel ID. diff --git a/packages/snack-term/package.json b/packages/snack-term/package.json index 67999dc11..fa7560df1 100644 --- a/packages/snack-term/package.json +++ b/packages/snack-term/package.json @@ -10,7 +10,7 @@ "build": "tsc" }, "volta": { - "node": "20.19.4" + "node": "22.21.1" }, "dependencies": { "@expo/spawn-async": "^1.5.0", diff --git a/snackager/package.json b/snackager/package.json index a99ebade0..3bc50e895 100644 --- a/snackager/package.json +++ b/snackager/package.json @@ -100,7 +100,7 @@ ] }, "volta": { - "node": "20.19.4", + "node": "22.21.1", "npm": "6.14.16", "yarn": "1.22.4" } diff --git a/snackager/skaffold.yaml b/snackager/skaffold.yaml index af224cd93..c22ccb5b9 100644 --- a/snackager/skaffold.yaml +++ b/snackager/skaffold.yaml @@ -12,7 +12,7 @@ build: docker: dockerfile: snackager/Dockerfile buildArgs: - node_version: 20.19.4 + node_version: 22.21.1 APP_VERSION: v{{.GITHUB_SHA}} tagPolicy: sha256: {} diff --git a/snackager/src/__e2e__/git.test.ts b/snackager/src/__e2e__/git.test.ts index 044459b3a..e397741d6 100644 --- a/snackager/src/__e2e__/git.test.ts +++ b/snackager/src/__e2e__/git.test.ts @@ -1,10 +1,9 @@ import spawnAsync from '@expo/spawn-async'; import FormData from 'form-data'; import fs from 'fs'; -import fetch from 'node-fetch'; import os from 'os'; import path from 'path'; -import { SDKVersion, SnackFiles } from 'snack-sdk'; +import { SDKVersion, setSnackSDKFetch, SnackFiles } from 'snack-sdk'; import util from 'util'; import { importAsync } from '../git'; @@ -20,30 +19,26 @@ const ASSET_URL = 'https://myuploadedasset.com/777'; const sdkVersion: SDKVersion = '50.0.0'; jest.setTimeout(50000); -jest.mock('node-fetch', () => { - return jest.fn(async (url: string, options: Request) => { - let json = {}; - if (url.endsWith('bundledNativeModules.json')) { - json = {}; - } else if (url.endsWith('/save')) { - // @ts-ignore Body is rewritten as json so the call scan be compared to a snapshot - options.body = JSON.parse(options.body); - json = { id: SAVE_ID }; - } else if (url.endsWith('/uploadAsset')) { - json = { url: ASSET_URL }; - } - return { - ok: true, - status: 200, - json: async () => json, - }; - }); + +const mockedFetch = jest.fn(async (url: string, options: Request) => { + let json = {}; + if (url.endsWith('bundledNativeModules.json')) { + json = {}; + } else if (url.endsWith('/save')) { + // @ts-ignore Body is rewritten as json so the call scan be compared to a snapshot + options.body = JSON.parse(options.body); + json = { id: SAVE_ID }; + } else if (url.endsWith('/uploadAsset')) { + json = { url: ASSET_URL }; + } + return { + ok: true, + status: 200, + json: async () => json, + }; }); -// Workaround for snack-sdk's ponyfill using their own node-fetch version -jest.mock('fetch-ponyfill', () => () => ({ fetch })); -// @ts-ignore Conversion of type 'typeof fetch' to type 'Mock' may be a mistake because neither type sufficiently overlaps with the other -const mockedFetch = fetch as jest.Mock; +setSnackSDKFetch(mockedFetch as unknown as typeof globalThis.fetch); beforeEach(() => { mockedFetch.mockClear(); @@ -215,7 +210,7 @@ describe('git', () => { expect(mockedFetch).toHaveBeenCalledTimes(1); const requestOptions = mockedFetch.mock.calls[0][1]; - const requestCode = requestOptions.body.code; + const requestCode = (requestOptions.body as unknown as { code: SnackFiles })?.code; expect(requestCode['node_modules/some-module/index.js']).toBeUndefined(); expect(requestCode['project/node_modules/other-module/index.js']).toBeUndefined(); diff --git a/snackpub/skaffold.yaml b/snackpub/skaffold.yaml index 363b87f9c..bad39800e 100644 --- a/snackpub/skaffold.yaml +++ b/snackpub/skaffold.yaml @@ -13,7 +13,7 @@ build: docker: dockerfile: snackpub/Dockerfile buildArgs: - node_version: 20.19.4 + node_version: 22.21.1 DEPLOY_ENVIRONMENT: staging tagPolicy: sha256: {} diff --git a/website/package.json b/website/package.json index aa65b883d..49cffae90 100644 --- a/website/package.json +++ b/website/package.json @@ -23,7 +23,7 @@ "author": "Expo", "license": "MIT", "volta": { - "node": "20.19.4", + "node": "22.21.1", "npm": "6.14.16" }, "dependencies": { diff --git a/website/skaffold.yaml b/website/skaffold.yaml index 3cf57feec..3771b9759 100644 --- a/website/skaffold.yaml +++ b/website/skaffold.yaml @@ -12,7 +12,7 @@ build: docker: dockerfile: website/Dockerfile buildArgs: - node_version: 20.19.4 + node_version: 22.21.1 LEGACY_SERVER_URL: https://staging.expo.io SERVER_URL: https://staging.expo.dev API_SERVER_URL: https://staging.exp.host @@ -44,7 +44,7 @@ profiles: docker: dockerfile: website/Dockerfile buildArgs: - node_version: 20.19.4 + node_version: 22.21.1 LEGACY_SERVER_URL: https://expo.io SERVER_URL: https://expo.dev API_SERVER_URL: https://exp.host diff --git a/yarn.lock b/yarn.lock index f25085089..6d096d2c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -133,6 +133,17 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" +"@babel/generator@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298" + integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== + dependencies: + "@babel/parser" "^7.28.5" + "@babel/types" "^7.28.5" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + "@babel/generator@^7.7.2": version "7.17.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" @@ -163,12 +174,12 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-annotate-as-pure@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d" - integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow== +"@babel/helper-annotate-as-pure@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== dependencies: - "@babel/types" "^7.27.1" + "@babel/types" "^7.27.3" "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": version "7.12.13" @@ -240,17 +251,17 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" - integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== +"@babel/helper-create-class-features-plugin@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz#472d0c28028850968979ad89f173594a6995da46" + integrity sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-member-expression-to-functions" "^7.28.5" "@babel/helper-optimise-call-expression" "^7.27.1" "@babel/helper-replace-supers" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.27.1" + "@babel/traverse" "^7.28.5" semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.12.1": @@ -339,6 +350,11 @@ dependencies: "@babel/types" "^7.12.13" +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + "@babel/helper-hoist-variables@^7.12.13": version "7.13.0" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8" @@ -376,6 +392,14 @@ "@babel/traverse" "^7.27.1" "@babel/types" "^7.27.1" +"@babel/helper-member-expression-to-functions@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150" + integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg== + dependencies: + "@babel/traverse" "^7.28.5" + "@babel/types" "^7.28.5" + "@babel/helper-module-imports@^7.0.0-beta.49": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" @@ -595,6 +619,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + "@babel/helper-validator-option@^7.12.17": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" @@ -706,6 +735,13 @@ dependencies: "@babel/types" "^7.27.1" +"@babel/parser@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" + integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== + dependencies: + "@babel/types" "^7.28.5" + "@babel/plugin-proposal-async-generator-functions@^7.0.0": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" @@ -1445,12 +1481,12 @@ "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-transform-typescript@^7.13.0", "@babel/plugin-transform-typescript@^7.23.3", "@babel/plugin-transform-typescript@^7.23.6", "@babel/plugin-transform-typescript@^7.5.0": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz#d3bb65598bece03f773111e88cc4e8e5070f1140" - integrity sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg== + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz#441c5f9a4a1315039516c6c612fc66d5f4594e72" + integrity sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.28.5" "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-syntax-typescript" "^7.27.1" @@ -1647,7 +1683,7 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/template@^7.27.1": +"@babel/template@^7.27.1", "@babel/template@^7.27.2": version "7.27.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== @@ -1710,13 +1746,26 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.17.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.27.1", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" - integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== +"@babel/traverse@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b" + integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.5" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.5" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.5" + debug "^4.3.1" + +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.17.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" + integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== dependencies: "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -2097,6 +2146,17 @@ slash "^3.0.0" write-file-atomic "^4.0.2" +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" @@ -2118,6 +2178,14 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.12": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/gen-mapping@^0.3.5": version "0.3.8" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" @@ -2162,6 +2230,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18": version "0.3.22" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" @@ -2186,6 +2259,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@koa/router@^10.0.0": version "10.0.0" resolved "https://registry.yarnpkg.com/@koa/router/-/router-10.0.0.tgz#699115561afbd2740e2848ba299fc76b9e058ad6" @@ -3391,6 +3472,13 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== +"@types/yargs@^15.0.0": + version "15.0.11" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.11.tgz#361d7579ecdac1527687bcebf9946621c12ab78c" + integrity sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA== + dependencies: + "@types/yargs-parser" "*" + "@types/yargs@^17.0.8": version "17.0.32" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" @@ -3853,7 +3941,7 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -abab@^2.0.6: +abab@^2.0.3, abab@^2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== @@ -3888,25 +3976,23 @@ acorn-globals@^3.0.0: dependencies: acorn "^4.0.4" -acorn-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" - integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: - acorn "^8.1.0" - acorn-walk "^8.0.2" + acorn "^7.1.1" + acorn-walk "^7.1.1" acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.0.2: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn-walk@^8.2.0: version "8.2.0" @@ -3928,16 +4014,21 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^8.1.0, acorn@^8.11.0, acorn@^8.8.1: - version "8.15.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.2.1: version "8.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== +acorn@^8.2.4: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + acorn@^8.7.0: version "8.7.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" @@ -4775,6 +4866,11 @@ brorand@^1.0.1: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -5037,14 +5133,6 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" -call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - call-bind@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" @@ -5885,10 +5973,10 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== cssom@~0.3.6: version "0.3.8" @@ -5939,14 +6027,14 @@ data-uri-to-buffer@3: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== -data-urls@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" - integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" date-fns@^1.30.1: version "1.30.1" @@ -6009,7 +6097,7 @@ decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.4.2: +decimal.js@^10.2.1: version "10.6.0" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== @@ -6290,12 +6378,12 @@ domelementtype@^2.0.1, domelementtype@^2.1.0: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== -domexception@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" - integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: - webidl-conversions "^7.0.0" + webidl-conversions "^5.0.0" domhandler@^3.0.0: version "3.3.0" @@ -6334,15 +6422,6 @@ dtrace-provider@~0.8: dependencies: nan "^2.14.0" -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -6698,16 +6777,6 @@ es-abstract@^1.22.1: unbox-primitive "^1.0.2" which-typed-array "^1.1.11" -es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - es-iterator-helpers@^1.0.12: version "1.0.15" resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" @@ -6733,13 +6802,6 @@ es-module-lexer@^0.6.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.6.0.tgz#e72ab05b7412e62b9be37c37a09bdb6000d706f0" integrity sha512-f8kcHX1ArhllUtb/wVSyvygoKCznIjnxhLxy7TCvIiMdT7fL4ZDTIKaadMe6eLvOXg6Wk02UeoFgUoZ2EKZZUA== -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -6749,16 +6811,6 @@ es-set-tostringtag@^2.0.1: has "^1.0.3" has-tostringtag "^1.0.0" -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -7376,13 +7428,6 @@ fbjs@^0.8.0: setimmediate "^1.0.5" ua-parser-js "^0.7.18" -fetch-ponyfill@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-7.0.0.tgz#5a53db6fc8c3e1901476f3e9b7b146a30a412594" - integrity sha512-ynRMX7w11EcG3sJSYTT2N6EUl0QsqWbyW3Xw5+DuLeA2uo/yhssb7JqnjamGQaHBUo/AOUsmTz6zeUX3cPvZsQ== - dependencies: - node-fetch "~2.6.1" - figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -7569,17 +7614,6 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" - integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" - formidable@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9" @@ -7690,11 +7724,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - function.prototype.name@^1.1.2, function.prototype.name@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.3.tgz#0bb034bb308e7682826f215eb6b2ae64918847fe" @@ -7786,22 +7815,6 @@ get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" -get-intrinsic@^1.2.6: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -7812,14 +7825,6 @@ get-port@^5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -8084,11 +8089,6 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - got@^9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -8198,11 +8198,6 @@ has-symbols@^1.0.2, has-symbols@^1.0.3: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - has-tostringtag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" @@ -8210,13 +8205,6 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -8284,13 +8272,6 @@ hasha@^3.0.0: dependencies: is-stream "^1.0.1" -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - hermes-estree@0.26.0: version "0.26.0" resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.26.0.tgz#70da6d2e7131ec2693dac8e596e76957c4ce76ef" @@ -8367,12 +8348,12 @@ html-element-map@^1.2.0: dependencies: array-filter "^1.0.0" -html-encoding-sniffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" - integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - whatwg-encoding "^2.0.0" + whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" @@ -8495,14 +8476,6 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - https-proxy-agent@^7.0.1: version "7.0.2" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" @@ -8540,13 +8513,6 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - iconv-lite@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" @@ -9551,6 +9517,14 @@ jest-message-util@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" @@ -9679,6 +9653,18 @@ jest-snapshot@^29.7.0: pretty-format "^29.7.0" semver "^7.5.3" +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + jest-util@^29.0.0, jest-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" @@ -9811,37 +9797,38 @@ jscodeshift@^0.14.0: temp "^0.8.4" write-file-atomic "^2.3.0" -jsdom@^20.0.0: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" - integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== +jsdom@^16.4.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== dependencies: - abab "^2.0.6" - acorn "^8.8.1" - acorn-globals "^7.0.0" - cssom "^0.5.0" + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" cssstyle "^2.3.0" - data-urls "^3.0.2" - decimal.js "^10.4.2" - domexception "^4.0.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.1" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.2" - parse5 "^7.1.1" - saxes "^6.0.0" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" symbol-tree "^3.2.4" - tough-cookie "^4.1.2" - w3c-xmlserializer "^4.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - ws "^8.11.0" - xml-name-validator "^4.0.0" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" jsesc@^2.5.1: version "2.5.2" @@ -10326,7 +10313,7 @@ lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lodash@^4.17.11: +lodash@^4.17.11, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -10461,11 +10448,6 @@ matcher@^2.1.0: dependencies: escape-string-regexp "^2.0.0" -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -10926,7 +10908,7 @@ node-dir@^0.1.17: dependencies: minimatch "^3.0.2" -node-fetch@2.6.1, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@~2.6.1: +node-fetch@2.6.1, node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -11078,7 +11060,7 @@ nullthrows@^1.1.1: resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== -nwsapi@^2.2.2: +nwsapi@^2.2.0: version "2.2.22" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.22.tgz#109f9530cda6c156d6a713cdf5939e9f0de98b9d" integrity sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ== @@ -11493,12 +11475,12 @@ parse5-htmlparser2-tree-adapter@^6.0.0: dependencies: parse5 "^6.0.1" -parse5@^6.0.0, parse5@^6.0.1: +parse5@6.0.1, parse5@^6.0.0, parse5@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -parse5@^7.0.0, parse5@^7.1.1: +parse5@^7.0.0: version "7.3.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== @@ -11855,9 +11837,9 @@ promise-inflight@^1.0.1: integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= promise-polyfill@^8.1.3: - version "8.2.0" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.0.tgz#367394726da7561457aba2133c9ceefbd6267da0" - integrity sha512-k/TC0mIcPVF6yHhUvwAp7cvL6I2fFV7TzF1DuGPI8mBh4QQazf36xCKEHKTZKRysEoTQoQdKyP25J8MPJp7j5g== + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.3.0.tgz#9284810268138d103807b11f4e23d5e945a4db63" + integrity sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg== promise@^7.0.1, promise@^7.1.1: version "7.3.1" @@ -13160,10 +13142,10 @@ sax@>=0.6.0: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -saxes@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" - integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" @@ -14387,7 +14369,7 @@ token-stream@0.0.1: resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= -tough-cookie@^4.1.2: +tough-cookie@^4.0.0: version "4.1.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== @@ -14397,10 +14379,10 @@ tough-cookie@^4.1.2: universalify "^0.2.0" url-parse "^1.5.3" -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: punycode "^2.1.1" @@ -14718,16 +14700,16 @@ typedoc@^0.19.2: shelljs "^0.8.4" typedoc-default-themes "^0.11.4" +typescript@^4.1.2, typescript@^4.7.4: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + typescript@^4.6.3: version "4.6.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== -typescript@^4.7.4: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - typescript@^5.3.3: version "5.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" @@ -15129,12 +15111,19 @@ void-elements@^2.0.1: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= -w3c-xmlserializer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" - integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: - xml-name-validator "^4.0.0" + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" walker@^1.0.8: version "1.0.8" @@ -15174,10 +15163,15 @@ webidl-conversions@^3.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-cli@^3.2.1: version "3.3.12" @@ -15294,30 +15288,22 @@ webpack@^5, webpack@^5.40.0: watchpack "^2.2.0" webpack-sources "^2.3.0" -whatwg-encoding@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" - integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: - iconv-lite "0.6.3" + iconv-lite "0.4.24" whatwg-fetch@>=0.10.0: version "3.5.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868" integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -whatwg-url@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" - integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^5.0.0: version "5.0.0" @@ -15327,6 +15313,15 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -15521,10 +15516,10 @@ ws@^7, ws@^7.2.5: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== -ws@^8.11.0: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== +ws@^7.4.6: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@~8.2.3: version "8.2.3" @@ -15544,10 +15539,10 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xml2js@0.4.19: version "0.4.19"