diff --git a/package.json b/package.json index dc7608524d..14b2787465 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "test:e2e:ci": "npx start-server-and-test serve:e2e http-get://localhost:8081/ cypress:run", "test:e2e:no-record": "npx wait-on -r http-get://localhost:8081/ && npx start-server-and-test serve:e2e http-get://localhost:8081/ cypress:run:no-record", "test:e2e:docker": "docker-compose run --user $(id -u):$(id -g) e2e", - "lint-staged": "lint-staged" + "lint-staged": "lint-staged", + "postinstall": "patch-package" }, "browserslist": { "development": [ @@ -53,17 +54,19 @@ "@types/node": "^20.19.0", "@types/react": "^18.3.23", "@types/react-dom": "^18.3.7", - "babel-jest": "^29.7.0", + "babel-jest": "^30.0.2", "concurrently": "^9.1.2", "cross-env": "^7.0.3", "cypress": "^14.4.1", "eslint": "^9.28.0", "husky": "^9.1.7", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", + "jest": "^30.0.2", + "jest-environment-jsdom": "^30.0.2", "jest-websocket-mock": "^2.5.0", "lerna": "^8.1.8", "lint-staged": "^15.5.2", + "patch-package": "^8.0.0", + "postinstall-postinstall": "^2.1.0", "prettier": "^3.6.0", "rimraf": "^6.0.1", "ts-jest-resolver": "^2.0.1", diff --git a/packages/brick-container/src/loadBootstrapData.spec.ts b/packages/brick-container/src/loadBootstrapData.spec.ts index a056a66b1d..d71a456efe 100644 --- a/packages/brick-container/src/loadBootstrapData.spec.ts +++ b/packages/brick-container/src/loadBootstrapData.spec.ts @@ -313,7 +313,7 @@ describe("loadBootstrapData", () => { window.BOOTSTRAP_FILE = "bootstrap.app-a.json"; window.APP_ROOT = "sa-static/app-a/versions/1.88.0/webroot/"; const promise = loadBootstrapData(); - expect(RuntimeApi_runtimeMicroAppStandalone).toBeCalledWith("app-a", { + expect(RuntimeApi_runtimeMicroAppStandalone).toHaveBeenCalledWith("app-a", { version: "1.88.0", }); const data = await promise; @@ -358,8 +358,8 @@ describe("loadBootstrapData", () => { }); await fulfilStoryboard(data.storyboards[0]); - expect(RuntimeApi_runtimeMicroAppStandalone).toBeCalledTimes(1); - expect(registerMocks).toBeCalledTimes(1); + expect(RuntimeApi_runtimeMicroAppStandalone).toHaveBeenCalledTimes(1); + expect(registerMocks).toHaveBeenCalledTimes(1); expect(data.storyboards[0]).toEqual({ app: { @@ -428,7 +428,7 @@ describe("loadBootstrapData", () => { window.BOOTSTRAP_FILE = "bootstrap.mini.g.json"; const promise = loadBootstrapData(); - expect(RuntimeApi_runtimeMicroAppStandalone).not.toBeCalled(); + expect(RuntimeApi_runtimeMicroAppStandalone).not.toHaveBeenCalled(); const data = await promise; expect(data).toEqual({ @@ -705,7 +705,7 @@ describe("loadBootstrapData", () => { }, }, }); - expect(consoleWarn).toBeCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledTimes(1); }); test("standalone with invalid conf.yaml", async () => { @@ -719,8 +719,8 @@ describe("loadBootstrapData", () => { await expect(promise).rejects.toThrowErrorMatchingInlineSnapshot( `"Invalid conf.yaml"` ); - expect(consoleWarn).toBeCalledTimes(1); - expect(consoleError).toBeCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); }); test("standalone with conf.yaml of user_config_by_apps", async () => { @@ -745,7 +745,7 @@ describe("loadBootstrapData", () => { }, ], }); - expect(consoleWarn).toBeCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledTimes(1); }); test("standalone with conf.yaml of missing in user_config_by_apps", async () => { @@ -768,9 +768,9 @@ describe("loadBootstrapData", () => { }, ], }); - expect(consoleWarn).toBeCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledTimes(1); await fulfilStoryboard(data.storyboards[0]); - expect(consoleWarn).toBeCalledTimes(2); + expect(consoleWarn).toHaveBeenCalledTimes(2); consoleWarn.mockReset(); }); @@ -794,7 +794,7 @@ describe("loadBootstrapData", () => { }, ], }); - expect(consoleWarn).toBeCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledTimes(1); }); test("non-standalone", async () => { @@ -832,7 +832,7 @@ describe("loadBootstrapData", () => { }); await fulfilStoryboard(data.storyboards[0]); - expect(mockGetAppStoryboardV2).toBeCalledTimes(1); + expect(mockGetAppStoryboardV2).toHaveBeenCalledTimes(1); expect(data.storyboards[0]).toEqual({ app: { diff --git a/packages/brick-container/src/loadCheckLogin.spec.ts b/packages/brick-container/src/loadCheckLogin.spec.ts index be05807539..029d543685 100644 --- a/packages/brick-container/src/loadCheckLogin.spec.ts +++ b/packages/brick-container/src/loadCheckLogin.spec.ts @@ -14,13 +14,13 @@ describe("loadCheckLogin", () => { test("should work for when not logged in", async () => { mockCheckLogin.mockResolvedValueOnce({ loggedIn: false }); await loadCheckLogin(); - expect(auth.authenticate).not.toBeCalled(); + expect(auth.authenticate).not.toHaveBeenCalled(); }); test("should work for when logged in", async () => { mockCheckLogin.mockResolvedValueOnce({ loggedIn: true }); await loadCheckLogin(); - expect(auth.authenticate).toBeCalledWith({ + expect(auth.authenticate).toHaveBeenCalledWith({ loggedIn: true, }); }); @@ -28,8 +28,8 @@ describe("loadCheckLogin", () => { test("should work for no auth guard", async () => { window.NO_AUTH_GUARD = true; await loadCheckLogin(); - expect(mockCheckLogin).not.toBeCalled(); - expect(auth.authenticate).not.toBeCalled(); + expect(mockCheckLogin).not.toHaveBeenCalled(); + expect(auth.authenticate).not.toHaveBeenCalled(); window.NO_AUTH_GUARD = false; }); }); diff --git a/packages/brick-container/src/preview/initialize.spec.ts b/packages/brick-container/src/preview/initialize.spec.ts index 3f9611e318..a0c39df33e 100644 --- a/packages/brick-container/src/preview/initialize.spec.ts +++ b/packages/brick-container/src/preview/initialize.spec.ts @@ -75,7 +75,9 @@ describe("initialize", () => { "https://dev.easyops.local" ); expect(ok).toBe(false); - expect(consoleError).toBeCalledWith(expect.stringContaining("disallowed")); + expect(consoleError).toHaveBeenCalledWith( + expect.stringContaining("disallowed") + ); (window as any).location = location; }); diff --git a/packages/brick-container/src/preview/listen.spec.ts b/packages/brick-container/src/preview/listen.spec.ts index e1cdfa0e7e..55aa2b0267 100644 --- a/packages/brick-container/src/preview/listen.spec.ts +++ b/packages/brick-container/src/preview/listen.spec.ts @@ -47,7 +47,7 @@ describe("listen", () => { await (global as any).flushPromises(); - expect(loadBricksImperatively).toBeCalledWith( + expect(loadBricksImperatively).toHaveBeenCalledWith( ["visual-builder.inject-preview-agent"], [ { @@ -55,7 +55,7 @@ describe("listen", () => { }, ] ); - expect(injectPreview).toBeCalledWith(location.origin, { + expect(injectPreview).toHaveBeenCalledWith(location.origin, { foo: "bar", }); }); @@ -87,7 +87,7 @@ describe("listen", () => { await (global as any).flushPromises(); - expect(loadBricksImperatively).toBeCalledWith( + expect(loadBricksImperatively).toHaveBeenCalledWith( ["ui-test.inject-preview-agent"], [ { @@ -95,7 +95,7 @@ describe("listen", () => { }, ] ); - expect(injectUITest).toBeCalledWith(location.origin, { + expect(injectUITest).toHaveBeenCalledWith(location.origin, { foo: "bar", }); }); @@ -111,7 +111,7 @@ describe("listen", () => { await (global as any).flushPromises(); - expect(loadBricksImperatively).not.toBeCalled(); + expect(loadBricksImperatively).not.toHaveBeenCalled(); }); test("initialize failed", async () => { @@ -141,6 +141,6 @@ describe("listen", () => { await (global as any).flushPromises(); - expect(loadBricksImperatively).not.toBeCalled(); + expect(loadBricksImperatively).not.toHaveBeenCalled(); }); }); diff --git a/packages/cook/src/cook.spec.ts b/packages/cook/src/cook.spec.ts index 10c1894d4e..b86e7c5f1e 100644 --- a/packages/cook/src/cook.spec.ts +++ b/packages/cook/src/cook.spec.ts @@ -205,7 +205,7 @@ describe("evaluate", () => { if (!typescript && !containsExperimental(source)) { expect(() => equivalentFunc(source, attemptToVisitGlobals)(...cloneDeep(args)) - ).toThrowError(); + ).toThrow(); } expect(() => func(...cloneDeep(args))).toThrowErrorMatchingSnapshot(); } @@ -242,7 +242,7 @@ describe("evaluate", () => { return a; } `; - expect(() => equivalentFunc(source, new Set())).not.toThrowError(); + expect(() => equivalentFunc(source, new Set())).not.toThrow(); const { function: funcAst, attemptToVisitGlobals } = precookFunction(source); const globalVariables = supply( @@ -271,7 +271,7 @@ describe("evaluate", () => { if (!containsExperimental(source)) { expect(() => equivalentFunc(source, attemptToVisitGlobals, true) - ).toThrowError(); + ).toThrow(); } expect(() => cook(exprAst, source, { globalVariables }) @@ -328,7 +328,7 @@ describe("evaluate", () => { }) as Function; func(1); - expect(beforeEvaluate).toBeCalledTimes(14); + expect(beforeEvaluate).toHaveBeenCalledTimes(14); expect(beforeEvaluate).toHaveBeenNthCalledWith( 1, expect.objectContaining({ @@ -354,25 +354,25 @@ describe("evaluate", () => { value: true, }) ); - expect(beforeEvaluate).not.toBeCalledWith( + expect(beforeEvaluate).not.toHaveBeenCalledWith( expect.objectContaining({ type: "Literal", value: false, }) ); - expect(beforeEvaluate).not.toBeCalledWith( + expect(beforeEvaluate).not.toHaveBeenCalledWith( expect.objectContaining({ type: "ThrowStatement", }) ); - expect(beforeCall).toBeCalledTimes(1); - expect(beforeCall).toBeCalledWith( + expect(beforeCall).toHaveBeenCalledTimes(1); + expect(beforeCall).toHaveBeenCalledWith( expect.objectContaining({ type: "FunctionDeclaration", }) ); - expect(beforeBranch).toBeCalledTimes(1); - expect(beforeBranch).toBeCalledWith( + expect(beforeBranch).toHaveBeenCalledTimes(1); + expect(beforeBranch).toHaveBeenCalledWith( expect.objectContaining({ type: "IfStatement", }), @@ -381,7 +381,7 @@ describe("evaluate", () => { jest.clearAllMocks(); func(0); - expect(beforeEvaluate).toBeCalledTimes(12); + expect(beforeEvaluate).toHaveBeenCalledTimes(12); expect(beforeEvaluate).toHaveBeenNthCalledWith( 7, expect.objectContaining({ @@ -401,14 +401,14 @@ describe("evaluate", () => { value: null, }) ); - expect(beforeCall).toBeCalledTimes(1); - expect(beforeCall).toBeCalledWith( + expect(beforeCall).toHaveBeenCalledTimes(1); + expect(beforeCall).toHaveBeenCalledWith( expect.objectContaining({ type: "FunctionDeclaration", }) ); - expect(beforeBranch).toBeCalledTimes(1); - expect(beforeBranch).toBeCalledWith( + expect(beforeBranch).toHaveBeenCalledTimes(1); + expect(beforeBranch).toHaveBeenCalledWith( expect.objectContaining({ type: "IfStatement", }), @@ -423,7 +423,7 @@ describe("evaluate", () => { return "abc".replace(reg, ""); } `; - expect(() => equivalentFunc(source, new Set())).not.toThrowError(); + expect(() => equivalentFunc(source, new Set())).not.toThrow(); const { function: funcAst, attemptToVisitGlobals } = precookFunction(source); const globalVariables = supply( diff --git a/packages/cook/src/precook.spec.ts b/packages/cook/src/precook.spec.ts index 1b9923c194..f8170dc907 100644 --- a/packages/cook/src/precook.spec.ts +++ b/packages/cook/src/precook.spec.ts @@ -69,7 +69,7 @@ describe("", () => { expect(Array.from(precook(expression, { expressionOnly: true }))).toEqual( result ); - expect(consoleWarn).not.toBeCalled(); + expect(consoleWarn).not.toHaveBeenCalled(); }); it.each<[string, string, string[]]>([ @@ -506,7 +506,7 @@ describe("", () => { }) ) ).toEqual(result); - expect(consoleWarn).not.toBeCalled(); + expect(consoleWarn).not.toHaveBeenCalled(); }); it("should visit nodes", () => { @@ -524,7 +524,7 @@ describe("", () => { precook(func, { visitors, }); - expect(visitors.CallExpression).not.toBeCalled(); + expect(visitors.CallExpression).not.toHaveBeenCalled(); expect(visitors.FunctionDeclaration).toHaveBeenCalledWith( expect.objectContaining({ type: "FunctionDeclaration", @@ -556,7 +556,7 @@ describe("", () => { withParent: true, hooks: { beforeVisit, beforeVisitGlobal, beforeVisitUnknown }, }); - expect(beforeVisit).toBeCalledTimes(5); + expect(beforeVisit).toHaveBeenCalledTimes(5); expect(beforeVisit).toHaveBeenNthCalledWith( 1, expect.objectContaining({ @@ -649,7 +649,7 @@ describe("", () => { ] ); expect(beforeVisitGlobal).toHaveBeenCalledTimes(1); - expect(beforeVisitGlobal).toBeCalledWith( + expect(beforeVisitGlobal).toHaveBeenCalledWith( expect.objectContaining({ type: "Identifier", name: "b", @@ -677,7 +677,7 @@ describe("", () => { ] ); expect(beforeVisitUnknown).toHaveBeenCalledTimes(1); - expect(beforeVisitUnknown).toBeCalledWith( + expect(beforeVisitUnknown).toHaveBeenCalledWith( expect.objectContaining({ type: "DebuggerStatement", }), @@ -710,7 +710,7 @@ describe("", () => { withParent: true, hooks: { beforeVisit }, }); - expect(beforeVisit).toBeCalledTimes(4); + expect(beforeVisit).toHaveBeenCalledTimes(4); expect(beforeVisit).toHaveBeenNthCalledWith( 4, expect.objectContaining({ diff --git a/packages/cook/src/precookFunction.spec.ts b/packages/cook/src/precookFunction.spec.ts index 61f4db48b5..69e183ffc5 100644 --- a/packages/cook/src/precookFunction.spec.ts +++ b/packages/cook/src/precookFunction.spec.ts @@ -293,8 +293,8 @@ describe("precookFunction", () => { "function test() { this }" ); expect(Array.from(attemptToVisitGlobals.values())).toEqual([]); - expect(consoleWarn).toBeCalledTimes(1); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledWith( "Unsupported node type `ThisExpression`" ); }); diff --git a/packages/create-api-sdk/src/contractGit.spec.ts b/packages/create-api-sdk/src/contractGit.spec.ts index 7107f6eccd..710938a539 100644 --- a/packages/create-api-sdk/src/contractGit.spec.ts +++ b/packages/create-api-sdk/src/contractGit.spec.ts @@ -11,7 +11,7 @@ const spawn = jest.spyOn(cp, "spawn").mockImplementation( on(type: string, callback: Function) { callback(spawnCode); }, - } as any) + }) as any ); describe("yo-sdk contractGit", () => { @@ -22,7 +22,7 @@ describe("yo-sdk contractGit", () => { test("clone", async () => { await clone(""); - expect(spawn).toBeCalledWith( + expect(spawn).toHaveBeenCalledWith( "git", [ "clone", @@ -40,7 +40,7 @@ describe("yo-sdk contractGit", () => { test("clone with tag or commit", async () => { await clone("1.0"); - expect(spawn).toBeCalledWith( + expect(spawn).toHaveBeenCalledWith( "git", [ "clone", @@ -60,10 +60,10 @@ describe("yo-sdk contractGit", () => { test("checkout", async () => { await checkout(""); - expect(spawn).not.toBeCalled(); + expect(spawn).not.toHaveBeenCalled(); await checkout("1.0"); - expect(spawn).toBeCalledWith( + expect(spawn).toHaveBeenCalledWith( "git", ["checkout", "1.0"], expect.objectContaining({ diff --git a/packages/create-api-sdk/src/index.spec.ts b/packages/create-api-sdk/src/index.spec.ts index b753922bac..9f89227d39 100644 --- a/packages/create-api-sdk/src/index.spec.ts +++ b/packages/create-api-sdk/src/index.spec.ts @@ -16,7 +16,7 @@ describe("index", () => { jest.isolateModules(() => { require("./"); }); - expect(spyOnMain).toBeCalledWith(undefined, {}); + expect(spyOnMain).toHaveBeenCalledWith(undefined, {}); }); it("should work when a tag specified", () => { @@ -24,7 +24,7 @@ describe("index", () => { jest.isolateModules(() => { require("./"); }); - expect(spyOnMain).toBeCalledWith("1.0.0", {}); + expect(spyOnMain).toHaveBeenCalledWith("1.0.0", {}); }); it("should work when a tag specified", () => { @@ -32,7 +32,7 @@ describe("index", () => { jest.isolateModules(() => { require("./"); }); - expect(spyOnMain).toBeCalledWith(undefined, { sdk: "test" }); + expect(spyOnMain).toHaveBeenCalledWith(undefined, { sdk: "test" }); }); it("should work when args invalid", () => { @@ -44,8 +44,8 @@ describe("index", () => { jest.isolateModules(() => { require("./"); }); - expect(spyOnExit).toBeCalledWith(2); - expect(consoleError).toBeCalled(); + expect(spyOnExit).toHaveBeenCalledWith(2); + expect(consoleError).toHaveBeenCalled(); spyOnExit.mockRestore(); consoleError.mockRestore(); }); diff --git a/packages/easyops-runtime/src/analytics/analytics.spec.ts b/packages/easyops-runtime/src/analytics/analytics.spec.ts index 317675ff7c..070ff46090 100644 --- a/packages/easyops-runtime/src/analytics/analytics.spec.ts +++ b/packages/easyops-runtime/src/analytics/analytics.spec.ts @@ -41,7 +41,7 @@ describe("analytics", () => { // No metrics yet window.dispatchEvent(new Event("beforeunload")); - expect(sendBeacon).not.toBeCalled(); + expect(sendBeacon).not.toHaveBeenCalled(); // API requests before page view pushApiMetric({ @@ -105,7 +105,7 @@ describe("analytics", () => { duration: 30, size: -1, } as any); - expect(sendBeacon).toBeCalledTimes(1); + expect(sendBeacon).toHaveBeenCalledTimes(1); const blob_1 = sendBeacon.mock.calls[0][1] as Blob; const api_1 = sendBeacon.mock.calls[0][0]; @@ -159,7 +159,7 @@ describe("analytics", () => { }); window.dispatchEvent(new Event("beforeunload")); - expect(sendBeacon).toBeCalledTimes(2); + expect(sendBeacon).toHaveBeenCalledTimes(2); const api_2 = sendBeacon.mock.calls[1][0]; expect(api_2).toBe("http://localhost/api/stat"); expect( @@ -200,7 +200,7 @@ describe("analytics", () => { earlyFinishPageView(); window.dispatchEvent(new Event("beforeunload")); - expect(sendBeacon).toBeCalledTimes(3); + expect(sendBeacon).toHaveBeenCalledTimes(3); expect( JSON.parse(await (sendBeacon.mock.calls[2][1] as Blob).text()) ).toEqual({ @@ -236,7 +236,7 @@ describe("analytics", () => { lt: 60, } as any); - expect(sendBeacon).toBeCalledTimes(4); + expect(sendBeacon).toHaveBeenCalledTimes(4); expect( JSON.parse(await (sendBeacon.mock.calls[3][1] as Blob).text()) ).toEqual({ diff --git a/packages/easyops-runtime/src/analytics/http.spec.ts b/packages/easyops-runtime/src/analytics/http.spec.ts index cf6027d4e8..9ee6f4b369 100644 --- a/packages/easyops-runtime/src/analytics/http.spec.ts +++ b/packages/easyops-runtime/src/analytics/http.spec.ts @@ -60,8 +60,8 @@ describe("analytics.http", () => { }, config ); - expect(pushApiMetric).toBeCalledTimes(1); - expect(pushApiMetric).toBeCalledWith({ + expect(pushApiMetric).toHaveBeenCalledTimes(1); + expect(pushApiMetric).toHaveBeenCalledWith({ _ver: 1694414400456, api: "http://localhost/api/test", code: -1, @@ -100,8 +100,8 @@ describe("analytics.http", () => { onResponseError(error, config).catch((reason) => { expect(reason).toBe(error); }); - expect(pushApiMetric).toBeCalledTimes(1); - expect(pushApiMetric).toBeCalledWith({ + expect(pushApiMetric).toHaveBeenCalledTimes(1); + expect(pushApiMetric).toHaveBeenCalledWith({ _ver: 1694414400456, api: "http://localhost/api/test", code: 10013, @@ -137,8 +137,8 @@ describe("analytics.http", () => { onResponseError(error, config).catch((reason) => { expect(reason).toBe(error); }); - expect(pushApiMetric).toBeCalledTimes(1); - expect(pushApiMetric).toBeCalledWith({ + expect(pushApiMetric).toHaveBeenCalledTimes(1); + expect(pushApiMetric).toHaveBeenCalledWith({ _ver: 1694414400456, api: "http://localhost/api/test", code: -1, @@ -169,8 +169,8 @@ describe("analytics.http", () => { onResponseError(error, config).catch((reason) => { expect(reason).toBe(error); }); - expect(pushApiMetric).toBeCalledTimes(1); - expect(pushApiMetric).toBeCalledWith({ + expect(pushApiMetric).toHaveBeenCalledTimes(1); + expect(pushApiMetric).toHaveBeenCalledWith({ _ver: 1694414400456, api: "http://localhost/api/test", code: -1, @@ -201,7 +201,7 @@ describe("analytics.http", () => { onResponseError(error, config).catch((reason) => { expect(reason).toBe(error); }); - expect(pushApiMetric).toBeCalledTimes(0); + expect(pushApiMetric).toHaveBeenCalledTimes(0); expect.assertions(2); }); }); diff --git a/packages/easyops-runtime/src/analytics/pageView.spec.ts b/packages/easyops-runtime/src/analytics/pageView.spec.ts index 7fde657c61..190bc63ddc 100644 --- a/packages/easyops-runtime/src/analytics/pageView.spec.ts +++ b/packages/easyops-runtime/src/analytics/pageView.spec.ts @@ -37,16 +37,16 @@ describe("analytics.pageView", () => { test("finish ok", () => { const finish = create(); - expect(createPageView).toBeCalledTimes(1); + expect(createPageView).toHaveBeenCalledTimes(1); jest.advanceTimersByTime(123); finish({ status: "ok", path: "/home/:objectId", pageTitle: "DevOps 管理专家", }); - expect(earlyFinishPageView).not.toBeCalled(); - expect(finishPageView).toBeCalledTimes(1); - expect(finishPageView).toBeCalledWith({ + expect(earlyFinishPageView).not.toHaveBeenCalled(); + expect(finishPageView).toHaveBeenCalledTimes(1); + expect(finishPageView).toHaveBeenCalledWith({ _ver: 1694414400456, et: 1694414400579, lt: 123, @@ -58,16 +58,16 @@ describe("analytics.pageView", () => { type: "page", username: "easyops", }); - expect(dispatchEvent).toBeCalled(); + expect(dispatchEvent).toHaveBeenCalled(); }); test("finish failed", () => { const finish = create(); - expect(createPageView).toBeCalledTimes(1); + expect(createPageView).toHaveBeenCalledTimes(1); jest.advanceTimersByTime(123); finish({ status: "failed" }); - expect(finishPageView).not.toBeCalled(); - expect(earlyFinishPageView).toBeCalledTimes(1); - expect(dispatchEvent).not.toBeCalled(); + expect(finishPageView).not.toHaveBeenCalled(); + expect(earlyFinishPageView).toHaveBeenCalledTimes(1); + expect(dispatchEvent).not.toHaveBeenCalled(); }); }); diff --git a/packages/easyops-runtime/src/auth.spec.ts b/packages/easyops-runtime/src/auth.spec.ts index f860dfccf1..a394e61233 100644 --- a/packages/easyops-runtime/src/auth.spec.ts +++ b/packages/easyops-runtime/src/auth.spec.ts @@ -85,9 +85,9 @@ describe("auth", () => { }) ).toEqual(false); - // expect(resetPermissionPreChecks).not.toBeCalled(); + // expect(resetPermissionPreChecks).not.toHaveBeenCalled(); logout(); expect(getAuth()).toEqual({}); - // expect(resetPermissionPreChecks).toBeCalled(); + // expect(resetPermissionPreChecks).toHaveBeenCalled(); }); }); diff --git a/packages/easyops-runtime/src/checkInstalledApps.spec.ts b/packages/easyops-runtime/src/checkInstalledApps.spec.ts index 8501cedd35..b80dd023ef 100644 --- a/packages/easyops-runtime/src/checkInstalledApps.spec.ts +++ b/packages/easyops-runtime/src/checkInstalledApps.spec.ts @@ -62,7 +62,7 @@ describe("checkInstalledApps", () => { doesNotHaveAppInBootstrap ); await waitForCheckingApps(["app-a", "app-b", "app-x"]); - expect(RuntimeApi_searchMicroAppStandalone).toBeCalledTimes(1); + expect(RuntimeApi_searchMicroAppStandalone).toHaveBeenCalledTimes(1); expect(getCheckedApp("app-a")).toEqual({ appId: "app-a", id: "app-a", @@ -90,7 +90,7 @@ describe("checkInstalledApps", () => { doesNotHaveAppInBootstrap ); await waitForCheckingApps(["app-z"]); - expect(RuntimeApi_searchMicroAppStandalone).toBeCalledTimes(0); + expect(RuntimeApi_searchMicroAppStandalone).toHaveBeenCalledTimes(0); expect(getCheckedApp("app-y")).toBe(undefined); }); @@ -110,10 +110,10 @@ describe("checkInstalledApps", () => { doesNotHaveAppInBootstrap ); await waitForCheckingApps(["app-y"]); - expect(RuntimeApi_searchMicroAppStandalone).toBeCalledTimes(1); + expect(RuntimeApi_searchMicroAppStandalone).toHaveBeenCalledTimes(1); expect(getCheckedApp("app-y")).toBe(undefined); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( expect.stringContaining("failed"), expect.any(Error) ); diff --git a/packages/easyops-runtime/src/checkPermissions.spec.ts b/packages/easyops-runtime/src/checkPermissions.spec.ts index 3bbb1d5cdc..08d15a5f0e 100644 --- a/packages/easyops-runtime/src/checkPermissions.spec.ts +++ b/packages/easyops-runtime/src/checkPermissions.spec.ts @@ -60,18 +60,18 @@ describe("checkPermissions", () => { it("should not request if is not loggedIn", async () => { mockIsLoggedIn.mockReturnValue(false); await preCheckPermissions(null!); - expect(mockValidatePermissions).not.toBeCalled(); + expect(mockValidatePermissions).not.toHaveBeenCalled(); expect(checkPermissions("my:action-a")).toBe(false); - expect(mockConsoleError).not.toBeCalled(); + expect(mockConsoleError).not.toHaveBeenCalled(); mockIsLoggedIn.mockReturnValue(true); }); it("should not request if action is empty", async () => { mockScanPermissionActionsInStoryboard.mockReturnValueOnce([]); await preCheckPermissions(null!); - expect(mockValidatePermissions).not.toBeCalled(); + expect(mockValidatePermissions).not.toHaveBeenCalled(); expect(checkPermissions("my:action-a")).toBe(false); - expect(mockConsoleError).toBeCalledWith( + expect(mockConsoleError).toHaveBeenCalledWith( 'Un-checked permission action: "my:action-a", please make sure the permission to check is defined in permissionsPreCheck.' ); }); @@ -80,12 +80,12 @@ describe("checkPermissions", () => { mockScanPermissionActionsInStoryboard.mockReturnValueOnce(["my:action-a"]); mockValidatePermissions.mockRejectedValueOnce("oops"); await preCheckPermissions(null!); - expect(mockConsoleError).toBeCalledWith( + expect(mockConsoleError).toHaveBeenCalledWith( "Pre-check permissions failed", "oops" ); expect(checkPermissions("my:action-a")).toBe(false); - expect(mockConsoleError).toBeCalledWith( + expect(mockConsoleError).toHaveBeenCalledWith( 'Un-checked permission action: "my:action-a", please make sure the permission to check is defined in permissionsPreCheck.' ); }); @@ -104,14 +104,14 @@ describe("checkPermissions", () => { ], }); await validatePermissions(["my:action-a", "my:action-b"]); - expect(mockValidatePermissions).toBeCalledWith( + expect(mockValidatePermissions).toHaveBeenCalledWith( { actions: ["my:action-a", "my:action-b"], }, { noAbortOnRouteChange: true } ); await validatePermissions(["my:action-a", "my:action-c"]); - expect(mockValidatePermissions).toBeCalledWith( + expect(mockValidatePermissions).toHaveBeenCalledWith( { actions: ["my:action-c"], }, @@ -259,13 +259,13 @@ describe("checkPermissions", () => { ], }); await preCheckPermissions(null!); - expect(mockValidatePermissions).toBeCalledWith( + expect(mockValidatePermissions).toHaveBeenCalledWith( { actions: ["my:action-a", "my:action-b", "my:action-c"], }, { noAbortOnRouteChange: true } ); - expect(mockConsoleError).toBeCalledWith( + expect(mockConsoleError).toHaveBeenCalledWith( 'Undefined permission action: "my:action-c"' ); @@ -285,13 +285,13 @@ describe("checkPermissions", () => { ], }); await preCheckPermissions(null!); - expect(mockValidatePermissions).toBeCalledWith( + expect(mockValidatePermissions).toHaveBeenCalledWith( { actions: ["my:action-d"], }, { noAbortOnRouteChange: true } ); - expect(mockConsoleError).not.toBeCalled(); + expect(mockConsoleError).not.toHaveBeenCalled(); expect(checkPermissions("my:action-a")).toBe(true); expect(checkPermissions("my:action-b")).toBe(false); @@ -300,10 +300,10 @@ describe("checkPermissions", () => { expect(checkPermissions("my:action-a", "my:action-b")).toBe(false); expect(checkPermissions("my:action-b", "my:action-c")).toBe(false); expect(checkPermissions("my:action-a", "my:action-d")).toBe(true); - expect(mockConsoleError).not.toBeCalled(); + expect(mockConsoleError).not.toHaveBeenCalled(); expect(checkPermissions("my:action-x")).toBe(false); - expect(mockConsoleError).toBeCalledWith( + expect(mockConsoleError).toHaveBeenCalledWith( 'Un-checked permission action: "my:action-x", please make sure the permission to check is defined in permissionsPreCheck.' ); }); @@ -318,7 +318,7 @@ describe("checkPermissions", () => { it("should not request if is not loggedIn for brick", async () => { mockIsLoggedIn.mockReturnValue(false); await preCheckPermissionsForBrickOrRoute(null!, null!); - expect(mockValidatePermissions).not.toBeCalled(); + expect(mockValidatePermissions).not.toHaveBeenCalled(); expect(checkPermissions("my:action-a")).toBe(false); mockIsLoggedIn.mockReturnValue(true); }); @@ -330,14 +330,14 @@ describe("checkPermissions", () => { } as any, (v) => Promise.resolve(v) ); - expect(mockValidatePermissions).not.toBeCalled(); + expect(mockValidatePermissions).not.toHaveBeenCalled(); expect(checkPermissions("my:action-a")).toBe(false); }); it("should not request if is not loggedIn for any", async () => { mockIsLoggedIn.mockReturnValue(false); await preCheckPermissionsForAny(null); - expect(mockValidatePermissions).not.toBeCalled(); + expect(mockValidatePermissions).not.toHaveBeenCalled(); expect(checkPermissions("my:action-a")).toBe(false); mockIsLoggedIn.mockReturnValue(true); }); @@ -345,7 +345,7 @@ describe("checkPermissions", () => { it("should work for any", async () => { mockScanPermissionActionsInAny.mockReturnValueOnce([]); await preCheckPermissionsForAny({}); - expect(mockValidatePermissions).not.toBeCalled(); + expect(mockValidatePermissions).not.toHaveBeenCalled(); expect(checkPermissions("my:action-a")).toBe(false); }); diff --git a/packages/easyops-runtime/src/flowApi/FlowApiProvider.spec.ts b/packages/easyops-runtime/src/flowApi/FlowApiProvider.spec.ts index 8af813f75d..a2ae0ca4e5 100644 --- a/packages/easyops-runtime/src/flowApi/FlowApiProvider.spec.ts +++ b/packages/easyops-runtime/src/flowApi/FlowApiProvider.spec.ts @@ -109,7 +109,7 @@ describe("callFlowApi", () => { async (params1, params2, params3, result, simpleRequestArgs) => { expect(await callFlowApi(params1, params2, params3)).toEqual(result); if (simpleRequestArgs) { - expect(mockedSimpleRequest).toBeCalledWith(...simpleRequestArgs); + expect(mockedSimpleRequest).toHaveBeenCalledWith(...simpleRequestArgs); } } ); @@ -208,7 +208,9 @@ describe("callFlowApi", () => { async (params1, params2, params3, result, requestWithBodyArgs) => { expect(await callFlowApi(params1, params2, params3)).toEqual(result); if (requestWithBodyArgs) { - expect(mockedRequestWithBody).toBeCalledWith(...requestWithBodyArgs); + expect(mockedRequestWithBody).toHaveBeenCalledWith( + ...requestWithBodyArgs + ); } } ); diff --git a/packages/easyops-runtime/src/menu/fetchMenuById.spec.ts b/packages/easyops-runtime/src/menu/fetchMenuById.spec.ts index 364959957e..bcd2c62c4d 100644 --- a/packages/easyops-runtime/src/menu/fetchMenuById.spec.ts +++ b/packages/easyops-runtime/src/menu/fetchMenuById.spec.ts @@ -489,12 +489,12 @@ describe("fetchMenuById", () => { }, ], }); - expect(preCheckPermissionsForAny).toBeCalledWith( + expect(preCheckPermissionsForAny).toHaveBeenCalledWith( expect.objectContaining({ useProvider: "my-timeout-provider", }) ); - expect(preCheckPermissionsForAny).toBeCalledWith(expect.any(Array)); + expect(preCheckPermissionsForAny).toHaveBeenCalledWith(expect.any(Array)); }); test("non-standalone", async () => { @@ -559,8 +559,8 @@ describe("fetchMenuById", () => { }, ], }); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith(expect.any(YAMLException)); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith(expect.any(YAMLException)); consoleError.mockReset(); }); diff --git a/packages/easyops-runtime/src/websocket/MessageDispatcher.spec.ts b/packages/easyops-runtime/src/websocket/MessageDispatcher.spec.ts index 8d0b2566d6..25022dd139 100644 --- a/packages/easyops-runtime/src/websocket/MessageDispatcher.spec.ts +++ b/packages/easyops-runtime/src/websocket/MessageDispatcher.spec.ts @@ -97,10 +97,10 @@ describe("MessageDispatcher", () => { }) ); - expect(onMessage).toBeCalledTimes(2); - expect(onMessage).toBeCalledWith(message); - expect(onMessage).toBeCalledWith(message2); - expect(onMessage2).not.toBeCalled(); + expect(onMessage).toHaveBeenCalledTimes(2); + expect(onMessage).toHaveBeenCalledWith(message); + expect(onMessage).toHaveBeenCalledWith(message2); + expect(onMessage2).not.toHaveBeenCalled(); const unsubPromise = client.unsubscribe("c1"); await expect(server).toReceiveMessage( @@ -137,7 +137,7 @@ describe("MessageDispatcher", () => { expect(consoleError).toHaveBeenCalledTimes(2); server.close(); - expect(onClose).not.toBeCalled(); + expect(onClose).not.toHaveBeenCalled(); client.reset(); }); diff --git a/packages/easyops-runtime/src/websocket/MessageService.spec.ts b/packages/easyops-runtime/src/websocket/MessageService.spec.ts index ce42027808..9058cdf121 100644 --- a/packages/easyops-runtime/src/websocket/MessageService.spec.ts +++ b/packages/easyops-runtime/src/websocket/MessageService.spec.ts @@ -28,17 +28,17 @@ describe("MessageService", () => { await expect(server).toReceiveMessage('"after"'); server.send('"ok"'); - expect(onMessage).toBeCalledWith("ok"); + expect(onMessage).toHaveBeenCalledWith("ok"); client.reset(); server.send('"again"'); - expect(onMessage).toBeCalledTimes(1); + expect(onMessage).toHaveBeenCalledTimes(1); client.close(); server.close(); // `onClose` is not called because of reset - expect(onClose).not.toBeCalled(); + expect(onClose).not.toHaveBeenCalled(); }); test("handle error and reconnect", async () => { @@ -52,10 +52,13 @@ describe("MessageService", () => { reason: "test", wasClean: false, }); - expect(consoleError).toBeCalledWith("WebSocket error:", expect.anything()); - expect(onClose).not.toBeCalled(); + expect(consoleError).toHaveBeenCalledWith( + "WebSocket error:", + expect.anything() + ); + expect(onClose).not.toHaveBeenCalled(); - expect(consoleLog).toBeCalledWith( + expect(consoleLog).toHaveBeenCalledWith( "WebSocket will reconnect after %d seconds", 1 ); diff --git a/packages/element/src/NextElement.spec.ts b/packages/element/src/NextElement.spec.ts index 690bfeeaeb..d8c87e176b 100644 --- a/packages/element/src/NextElement.spec.ts +++ b/packages/element/src/NextElement.spec.ts @@ -20,26 +20,26 @@ describe("NextElement", () => { } const element = document.createElement("my-element-str") as MyElement; - expect(render).toBeCalledTimes(0); + expect(render).toHaveBeenCalledTimes(0); document.body.appendChild(element); expect(render).toHaveBeenNthCalledWith(1, undefined); expect(element.getAttribute("string-attr")).toBe(null); element.stringAttr = "hi"; expect(element.getAttribute("string-attr")).toBe("hi"); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); expect(render).toHaveBeenNthCalledWith(2, "hi"); element.setAttribute("string-attr", "Hi"); - expect(render).toBeCalledTimes(2); + expect(render).toHaveBeenCalledTimes(2); await (global as any).flushPromises(); expect(render).toHaveBeenNthCalledWith(3, "Hi"); element.setAttribute("string-attr", "Hi"); - expect(render).toBeCalledTimes(3); + expect(render).toHaveBeenCalledTimes(3); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(3); + expect(render).toHaveBeenCalledTimes(3); }); test("string property with default value", async () => { @@ -55,7 +55,7 @@ describe("NextElement", () => { } const element = document.createElement("my-element-str-2") as MyElement; - expect(render).toBeCalledTimes(0); + expect(render).toHaveBeenCalledTimes(0); document.body.appendChild(element); expect(render).toHaveBeenNthCalledWith(1, "initial"); @@ -64,7 +64,7 @@ describe("NextElement", () => { element.stringAttr = "updated"; expect(element.getAttribute("string-attr")).toBe("updated"); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); expect(render).toHaveBeenNthCalledWith(2, "updated"); @@ -109,32 +109,32 @@ describe("NextElement", () => { } const element = document.createElement("my-element-bool") as MyElement; - expect(render).toBeCalledTimes(0); + expect(render).toHaveBeenCalledTimes(0); document.body.appendChild(element); expect(render).toHaveBeenNthCalledWith(1, undefined); expect(element.getAttribute("boolean-attr")).toBe(null); element.booleanAttr = true; expect(element.getAttribute("boolean-attr")).toBe(""); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); expect(render).toHaveBeenNthCalledWith(2, true); element.booleanAttr = false; expect(element.getAttribute("boolean-attr")).toBe(null); - expect(render).toBeCalledTimes(2); + expect(render).toHaveBeenCalledTimes(2); await (global as any).flushPromises(); expect(render).toHaveBeenNthCalledWith(3, false); element.booleanAttr = undefined; expect(element.getAttribute("boolean-attr")).toBe(null); - expect(render).toBeCalledTimes(3); + expect(render).toHaveBeenCalledTimes(3); await (global as any).flushPromises(); expect(render).toHaveBeenNthCalledWith(4, false); (element as any).booleanAttr = 0; expect(element.getAttribute("boolean-attr")).toBe(null); - expect(render).toBeCalledTimes(4); + expect(render).toHaveBeenCalledTimes(4); await (global as any).flushPromises(); expect(render).toHaveBeenNthCalledWith(5, false); }); @@ -153,14 +153,14 @@ describe("NextElement", () => { const container = document.createElement("div"); container.innerHTML = ""; - expect(render).toBeCalledTimes(0); + expect(render).toHaveBeenCalledTimes(0); expect((container.firstElementChild as MyElement).booleanAttr).toBe(true); document.body.appendChild(container); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); expect(render).toHaveBeenNthCalledWith(1, true); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); }); test("boolean property with default true but reset to false", async () => { @@ -178,14 +178,14 @@ describe("NextElement", () => { const container = document.createElement("div"); container.innerHTML = ''; - expect(render).toBeCalledTimes(0); + expect(render).toHaveBeenCalledTimes(0); expect((container.firstElementChild as MyElement).booleanAttr).toBe(false); document.body.appendChild(container); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); expect(render).toHaveBeenNthCalledWith(1, false); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); }); test("number property", async () => { @@ -201,32 +201,32 @@ describe("NextElement", () => { } const element = document.createElement("my-element-num") as MyElement; - expect(render).toBeCalledTimes(0); + expect(render).toHaveBeenCalledTimes(0); document.body.appendChild(element); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); expect(render).toHaveBeenNthCalledWith(1, undefined); expect(element.getAttribute("number-attr")).toBe(null); element.numberAttr = 42; expect(element.getAttribute("number-attr")).toBe("42"); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(2); + expect(render).toHaveBeenCalledTimes(2); expect(render).toHaveBeenNthCalledWith(2, 42); (element as any).numberAttr = "7"; expect(element.getAttribute("number-attr")).toBe("7"); - expect(render).toBeCalledTimes(2); + expect(render).toHaveBeenCalledTimes(2); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(3); + expect(render).toHaveBeenCalledTimes(3); // expect(render).toHaveBeenNthCalledWith(3, "7"); expect(render).toHaveBeenNthCalledWith(3, 7); element.numberAttr = undefined; expect(element.getAttribute("number-attr")).toBe(null); - expect(render).toBeCalledTimes(3); + expect(render).toHaveBeenCalledTimes(3); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(4); + expect(render).toHaveBeenCalledTimes(4); // expect(render).toHaveBeenNthCalledWith(4, undefined); expect(render).toHaveBeenNthCalledWith(4, null); }); @@ -244,17 +244,17 @@ describe("NextElement", () => { } const element = document.createElement("my-element-obj") as MyElement; - expect(render).toBeCalledTimes(0); + expect(render).toHaveBeenCalledTimes(0); document.body.appendChild(element); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); expect(render).toHaveBeenNthCalledWith(1, undefined); expect(element.getAttribute("string-attr")).toBe(null); element.complexAttr = { quality: "good" }; expect(element.getAttribute("complex-attr")).toBe(null); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(2); + expect(render).toHaveBeenCalledTimes(2); expect(render).toHaveBeenNthCalledWith(2, { quality: "good" }); }); @@ -309,14 +309,14 @@ describe("NextElement", () => { expect(superElement.baseAttr).toBe("overridden"); document.body.appendChild(baseElement); - expect(baseRender).toBeCalledTimes(1); + expect(baseRender).toHaveBeenCalledTimes(1); expect(baseRender).toHaveBeenNthCalledWith(1, { baseAttr: undefined, baseFinalAttr: undefined, }); document.body.appendChild(superElement); - expect(superRender).toBeCalledTimes(1); + expect(superRender).toHaveBeenCalledTimes(1); expect(superRender).toHaveBeenNthCalledWith(1, { baseAttr: "overridden", baseFinalAttr: undefined, @@ -326,7 +326,7 @@ describe("NextElement", () => { baseElement.baseAttr = "updated"; expect(baseElement.baseAttr).toBe("updated"); expect(superElement.baseAttr).toBe("overridden"); - expect(baseRender).toBeCalledTimes(1); + expect(baseRender).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); expect(baseRender).toHaveBeenNthCalledWith(2, { baseAttr: "updated", @@ -336,7 +336,7 @@ describe("NextElement", () => { superElement.baseAttr = "updated-again"; expect(baseElement.baseAttr).toBe("updated"); expect(superElement.baseAttr).toBe("updated-again"); - expect(superRender).toBeCalledTimes(1); + expect(superRender).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); expect(superRender).toHaveBeenNthCalledWith(2, { baseAttr: "updated-again", @@ -367,17 +367,17 @@ describe("NextElement", () => { const container = document.createElement("div"); container.innerHTML = ''; - expect(render).toBeCalledTimes(0); + expect(render).toHaveBeenCalledTimes(0); document.body.appendChild(container); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); expect(render).toHaveBeenNthCalledWith(1, { stringAttr: "Hi", booleanAttr: true, numberAttr: 42, }); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); }); test("methods and events", () => { @@ -409,7 +409,7 @@ describe("NextElement", () => { "change", ]); - // `expect(...).toThrowError()` does not work for decorators. + // `expect(...).toThrow()` does not work for decorators. let message: string | undefined; try { element.overrideEvent(); @@ -421,8 +421,8 @@ describe("NextElement", () => { const listener = jest.fn(); element.addEventListener("change", listener); element.triggerChange("updated"); - expect(listener).toBeCalledTimes(1); - expect(listener).toBeCalledWith( + expect(listener).toHaveBeenCalledTimes(1); + expect(listener).toHaveBeenCalledWith( expect.objectContaining({ type: "change", detail: "updated", @@ -520,17 +520,17 @@ describe("NextElement", () => { document.body.appendChild(element); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); element.setAttribute("val", "NaN"); expect(element.value).toBe(NaN); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(2); + expect(render).toHaveBeenCalledTimes(2); element.value = NaN; expect(element.value).toBe(NaN); await (global as any).flushPromises(); - expect(render).toBeCalledTimes(2); + expect(render).toHaveBeenCalledTimes(2); element.remove(); }); @@ -581,15 +581,15 @@ describe("NextElement", () => { "my-element-render-false" ) as MyElement; element.stringAttr = "hi"; - expect(render).toBeCalledTimes(0); + expect(render).toHaveBeenCalledTimes(0); document.body.appendChild(element); expect(render).toHaveBeenNthCalledWith(1, "hi"); expect(element.getAttribute("string-attr")).toBe("hi"); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); element.stringAttr = "halo"; await (global as any).flushPromises(); - expect(render).toBeCalledTimes(1); + expect(render).toHaveBeenCalledTimes(1); element.remove(); }); diff --git a/packages/http/src/http.spec.ts b/packages/http/src/http.spec.ts index 42a5656321..5d12f2be14 100644 --- a/packages/http/src/http.spec.ts +++ b/packages/http/src/http.spec.ts @@ -142,15 +142,15 @@ describe("http", () => { }); expect(spyOnFetch.mock.calls[0]).toMatchSnapshot(); - expect(requestInterceptor).toBeCalledTimes(1); - expect(responseInterceptor).toBeCalledTimes(1); - expect(responseRejectInterceptor).not.toBeCalled(); - expect(requestInterceptor).toBeCalledWith({ + expect(requestInterceptor).toHaveBeenCalledTimes(1); + expect(responseInterceptor).toHaveBeenCalledTimes(1); + expect(responseRejectInterceptor).not.toHaveBeenCalled(); + expect(requestInterceptor).toHaveBeenCalledWith({ url: "http://example.com/for-good", method: "GET", options: {}, }); - expect(responseInterceptor).toBeCalledWith( + expect(responseInterceptor).toHaveBeenCalledWith( { status: 200, statusText: "", @@ -250,9 +250,9 @@ describe("http", () => { await http.get("http://example.com"); } catch (e) { expect(e).toBeInstanceOf(HttpParseError); - expect(responseInterceptor).not.toBeCalled(); - expect(responseRejectInterceptor).toBeCalledTimes(1); - expect(responseRejectInterceptor).toBeCalledWith( + expect(responseInterceptor).not.toHaveBeenCalled(); + expect(responseRejectInterceptor).toHaveBeenCalledTimes(1); + expect(responseRejectInterceptor).toHaveBeenCalledWith( e, expect.objectContaining({ url: "http://example.com", diff --git a/packages/loader/src/loadScript.spec.ts b/packages/loader/src/loadScript.spec.ts index 7bc33f88e3..1861112555 100644 --- a/packages/loader/src/loadScript.spec.ts +++ b/packages/loader/src/loadScript.spec.ts @@ -27,7 +27,7 @@ describe("loadScript", () => { test("load ok", async () => { const promise = loadScript("x.js"); - expect(dispatchEvent).toBeCalledTimes(1); + expect(dispatchEvent).toHaveBeenCalledTimes(1); expect(dispatchEvent).toHaveBeenNthCalledWith( 1, expect.objectContaining({ type: "request.start" }) @@ -35,7 +35,7 @@ describe("loadScript", () => { const script = document.querySelector("script")!; fireEvent.load(script); await promise; - expect(dispatchEvent).toBeCalledTimes(2); + expect(dispatchEvent).toHaveBeenCalledTimes(2); expect(dispatchEvent).toHaveBeenNthCalledWith( 2, expect.objectContaining({ type: "request.end" }) @@ -44,7 +44,7 @@ describe("loadScript", () => { test("load failed", async () => { const promise = loadScript("x.js"); - expect(dispatchEvent).toBeCalledTimes(1); + expect(dispatchEvent).toHaveBeenCalledTimes(1); expect(dispatchEvent).toHaveBeenNthCalledWith( 1, expect.objectContaining({ type: "request.start" }) @@ -52,7 +52,7 @@ describe("loadScript", () => { const script = document.querySelector("script")!; fireEvent.error(script); await expect(promise).rejects.toBeTruthy(); - expect(dispatchEvent).toBeCalledTimes(2); + expect(dispatchEvent).toHaveBeenCalledTimes(2); expect(dispatchEvent).toHaveBeenNthCalledWith( 2, expect.objectContaining({ type: "request.end" }) diff --git a/packages/loader/src/loadSharedModule.spec.ts b/packages/loader/src/loadSharedModule.spec.ts index 3c1817ff20..fa0592245d 100644 --- a/packages/loader/src/loadSharedModule.spec.ts +++ b/packages/loader/src/loadSharedModule.spec.ts @@ -11,13 +11,13 @@ describe("loadSharedModule", () => { test("basic", async () => { const factory = jest.fn().mockReturnValue("factory result"); const container = { - init: jest.fn(() => Promise.resolve()), - get: jest.fn(() => Promise.resolve(factory)), + init: jest.fn((_scope: unknown) => Promise.resolve()), + get: jest.fn((_id: string) => Promise.resolve(factory)), }; (window as any)["bricks/basic"] = container; const result = await loadSharedModule("bricks/basic", "./general-button"); expect(result).toBe("factory result"); - expect(container.init).toBeCalledWith(defaultScope); - expect(container.get).toBeCalledWith("./general-button"); + expect(container.init).toHaveBeenCalledWith(defaultScope); + expect(container.get).toHaveBeenCalledWith("./general-button"); }); }); diff --git a/packages/loader/src/loadStyle.spec.ts b/packages/loader/src/loadStyle.spec.ts index 2ae8e16b48..e8be51b10f 100644 --- a/packages/loader/src/loadStyle.spec.ts +++ b/packages/loader/src/loadStyle.spec.ts @@ -27,7 +27,7 @@ describe("loadStyle", () => { test("load ok", async () => { const promise = loadStyle("x.css"); - expect(dispatchEvent).toBeCalledTimes(1); + expect(dispatchEvent).toHaveBeenCalledTimes(1); expect(dispatchEvent).toHaveBeenNthCalledWith( 1, expect.objectContaining({ type: "request.start" }) @@ -35,7 +35,7 @@ describe("loadStyle", () => { const link = document.querySelector("link")!; fireEvent.load(link); await promise; - expect(dispatchEvent).toBeCalledTimes(2); + expect(dispatchEvent).toHaveBeenCalledTimes(2); expect(dispatchEvent).toHaveBeenNthCalledWith( 2, expect.objectContaining({ type: "request.end" }) @@ -44,7 +44,7 @@ describe("loadStyle", () => { test("load failed", async () => { const promise = loadStyle("x.js"); - expect(dispatchEvent).toBeCalledTimes(1); + expect(dispatchEvent).toHaveBeenCalledTimes(1); expect(dispatchEvent).toHaveBeenNthCalledWith( 1, expect.objectContaining({ type: "request.start" }) @@ -52,7 +52,7 @@ describe("loadStyle", () => { const link = document.querySelector("link")!; fireEvent.error(link); await expect(promise).rejects.toBeTruthy(); - expect(dispatchEvent).toBeCalledTimes(2); + expect(dispatchEvent).toHaveBeenCalledTimes(2); expect(dispatchEvent).toHaveBeenNthCalledWith( 2, expect.objectContaining({ type: "request.end" }) diff --git a/packages/loader/src/stableLoadBricks.spec.ts b/packages/loader/src/stableLoadBricks.spec.ts index 05d46a1c3c..00664bc6a3 100644 --- a/packages/loader/src/stableLoadBricks.spec.ts +++ b/packages/loader/src/stableLoadBricks.spec.ts @@ -54,7 +54,7 @@ jest.mock("./loadSharedModule.js", () => ({ })); const loadV2Bricks = jest.fn( - () => new Promise((resolve) => setTimeout(resolve, 100)) + (..._args: unknown[]) => new Promise((resolve) => setTimeout(resolve, 100)) ); customElements.define( "v2-adapter.load-bricks", @@ -91,7 +91,7 @@ describe("loadBricksImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -129,7 +129,7 @@ describe("loadBricksImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(6); + expect(consoleInfo).toHaveBeenCalledTimes(6); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -197,7 +197,7 @@ describe("loadBricksImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(6); + expect(consoleInfo).toHaveBeenCalledTimes(6); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -234,9 +234,9 @@ describe("loadBricksImperatively", () => { "bricks/icons", "./general-icon" ); - expect(consoleError).toBeCalledTimes(0); - expect(loadV2Bricks).toBeCalledTimes(1); - expect(loadV2Bricks).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(0); + expect(loadV2Bricks).toHaveBeenCalledTimes(1); + expect(loadV2Bricks).toHaveBeenCalledWith( "bricks/v2-adapter/dist/index.hash.js", "bricks/legacy/dist/index.hash.js", ["legacy.some-brick"], @@ -263,7 +263,7 @@ describe("loadBricksImperatively", () => { `[Error: Using v2 bricks, but v2-adapter not found]` ); expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(0); + expect(consoleInfo).toHaveBeenCalledTimes(0); }); test("load third-party bricks with no namespace", async () => { @@ -280,7 +280,7 @@ describe("loadBricksImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -309,7 +309,7 @@ describe("loadBricksImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleError).toBeCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); }); test("load brick failed", async () => { @@ -330,7 +330,7 @@ describe("loadBricksImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -343,7 +343,7 @@ describe("loadBricksImperatively", () => { "bricks/unsure", "./not-existed" ); - expect(consoleError).toBeCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); }); test("load brick (with no namespace) with only deprecated element", async () => { @@ -361,7 +361,7 @@ describe("loadBricksImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -396,7 +396,7 @@ describe("loadBricksImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -430,7 +430,7 @@ describe("loadBricksImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -443,7 +443,7 @@ describe("loadBricksImperatively", () => { "bricks/basic", "./eo-will-fail" ); - expect(consoleError).toBeCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); }); }); @@ -483,7 +483,7 @@ describe("enqueueStableLoadBricks", () => { expect(requestsCount).toBe(3); await Promise.all(promises); expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(9); + expect(consoleInfo).toHaveBeenCalledTimes(9); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -554,7 +554,7 @@ describe("enqueueStableLoadBricks", () => { expect(requestsCount).toBe(1); await Promise.all(promises); expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -597,7 +597,7 @@ describe("enqueueStableLoadProcessors", () => { expect(requestsCount).toBe(1); await Promise.all(promises); expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -641,7 +641,7 @@ describe("loadProcessorsImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(4); + expect(consoleInfo).toHaveBeenCalledTimes(4); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -685,7 +685,7 @@ describe("loadProcessorsImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -698,9 +698,9 @@ describe("loadProcessorsImperatively", () => { "bricks/v2-adapter", "./load-bricks" ); - expect(consoleError).toBeCalledTimes(0); - expect(loadV2Bricks).toBeCalledTimes(1); - expect(loadV2Bricks).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(0); + expect(loadV2Bricks).toHaveBeenCalledTimes(1); + expect(loadV2Bricks).toHaveBeenCalledWith( "bricks/v2-adapter/dist/index.hash.js", "bricks/legacy/dist/index.hash.js", [], @@ -748,7 +748,7 @@ describe("loadEditorsImperatively", () => { expect(requestsCount).toBe(1); await promise; expect(requestsCount).toBe(0); - expect(consoleInfo).toBeCalledTimes(4); + expect(consoleInfo).toHaveBeenCalledTimes(4); expect(consoleInfo).toHaveBeenNthCalledWith( 1, "loadScript done:", @@ -773,9 +773,9 @@ describe("loadEditorsImperatively", () => { "bricks/v2-adapter", "./load-bricks" ); - expect(consoleError).toBeCalledTimes(0); - expect(loadV2Bricks).toBeCalledTimes(1); - expect(loadV2Bricks).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(0); + expect(loadV2Bricks).toHaveBeenCalledTimes(1); + expect(loadV2Bricks).toHaveBeenCalledWith( "bricks/v2-adapter/dist/index.hash.js", "bricks/basic-bricks/dist/property-editors/index.hash.js", [], diff --git a/packages/loader/src/standalone.spec.ts b/packages/loader/src/standalone.spec.ts index e177a81f8f..3c40c5fa1b 100644 --- a/packages/loader/src/standalone.spec.ts +++ b/packages/loader/src/standalone.spec.ts @@ -24,7 +24,7 @@ describe("standalone", () => { ); expect(window.STANDALONE_BRICK_PACKAGES?.length).toBe(2); await loadBricks(["basic.general-button"]); - expect(loadBricksImperatively).toBeCalledWith( + expect(loadBricksImperatively).toHaveBeenCalledWith( ["basic.general-button"], [ { diff --git a/packages/react-element/src/ReactNextElement.spec.tsx b/packages/react-element/src/ReactNextElement.spec.tsx index 8b1e9fcf82..78641b2560 100644 --- a/packages/react-element/src/ReactNextElement.spec.tsx +++ b/packages/react-element/src/ReactNextElement.spec.tsx @@ -301,6 +301,6 @@ describe("ReactNextElement", () => { expect(element.shadowRoot).toBeFalsy(); expect(() => { element.connectedCallback(); - }).toThrowError(); + }).toThrow(); }); }); diff --git a/packages/react-element/src/wrapBrick.spec.tsx b/packages/react-element/src/wrapBrick.spec.tsx index 242390521b..09178f15ae 100644 --- a/packages/react-element/src/wrapBrick.spec.tsx +++ b/packages/react-element/src/wrapBrick.spec.tsx @@ -108,9 +108,9 @@ describe("wrapBrick", () => { expect(myButton?.textContent).toBe("ok"); expect(ref.current?.type).toBe("default"); expect(ref.current?.constructor).toBe(MyButton); - expect(onButtonClick).not.toBeCalled(); + expect(onButtonClick).not.toHaveBeenCalled(); (myButton?.shadowRoot?.firstChild as HTMLElement).click(); - expect(onButtonClick).toBeCalledTimes(1); + expect(onButtonClick).toHaveBeenCalledTimes(1); expect(onButtonClick.mock.calls[0][0]).toMatchObject({ type: "button.click", detail: "default", diff --git a/packages/react-runtime/src/ReactUseBrick.spec.tsx b/packages/react-runtime/src/ReactUseBrick.spec.tsx index 3c117f93f5..ad6aa88658 100644 --- a/packages/react-runtime/src/ReactUseBrick.spec.tsx +++ b/packages/react-runtime/src/ReactUseBrick.spec.tsx @@ -74,7 +74,7 @@ describe("ReactUseBrick", () => { ); - expect(mockRenderUseBrick).toBeCalledTimes(2); + expect(mockRenderUseBrick).toHaveBeenCalledTimes(2); expect(mockRenderUseBrick).toHaveBeenNthCalledWith( 1, useBrick, @@ -87,19 +87,19 @@ describe("ReactUseBrick", () => { "b", undefined ); - expect(mockMountUseBrick).not.toBeCalled(); + expect(mockMountUseBrick).not.toHaveBeenCalled(); await act(() => (global as any).flushPromises()); - expect(mockMountUseBrick).toBeCalledTimes(2); - expect(mockMountUseBrick).toBeCalledWith( + expect(mockMountUseBrick).toHaveBeenCalledTimes(2); + expect(mockMountUseBrick).toHaveBeenCalledWith( { tagName: "div", args: [useBrick, "a"], }, expect.any(HTMLDivElement) ); - expect(mockMountUseBrick).toBeCalledWith( + expect(mockMountUseBrick).toHaveBeenCalledWith( { tagName: "div", args: [useBrick, "b"], @@ -110,7 +110,7 @@ describe("ReactUseBrick", () => { // Re-render useBrick with the latter one props updated. rerender(); - expect(mockRenderUseBrick).toBeCalledTimes(3); + expect(mockRenderUseBrick).toHaveBeenCalledTimes(3); expect(mockRenderUseBrick).toHaveBeenNthCalledWith( 3, useBrick, @@ -118,11 +118,11 @@ describe("ReactUseBrick", () => { undefined ); - expect(mockUnmountUseBrick).not.toBeCalled(); + expect(mockUnmountUseBrick).not.toHaveBeenCalled(); await act(() => (global as any).flushPromises()); - expect(mockUnmountUseBrick).toBeCalledTimes(1); - expect(mockUnmountUseBrick).toBeCalledWith( + expect(mockUnmountUseBrick).toHaveBeenCalledTimes(1); + expect(mockUnmountUseBrick).toHaveBeenCalledWith( { tagName: "div", args: [useBrick, "b"], @@ -130,8 +130,8 @@ describe("ReactUseBrick", () => { "b" ); - expect(mockMountUseBrick).toBeCalledTimes(3); - expect(mockMountUseBrick).toBeCalledWith( + expect(mockMountUseBrick).toHaveBeenCalledTimes(3); + expect(mockMountUseBrick).toHaveBeenCalledWith( { tagName: "div", args: [useBrick, "c"], @@ -140,16 +140,16 @@ describe("ReactUseBrick", () => { ); unmount(); - expect(mockHandleHttpError).not.toBeCalled(); - expect(mockUnmountUseBrick).toBeCalledTimes(3); - expect(mockUnmountUseBrick).toBeCalledWith( + expect(mockHandleHttpError).not.toHaveBeenCalled(); + expect(mockUnmountUseBrick).toHaveBeenCalledTimes(3); + expect(mockUnmountUseBrick).toHaveBeenCalledWith( { tagName: "div", args: [useBrick, "a"], }, "a" ); - expect(mockUnmountUseBrick).toBeCalledWith( + expect(mockUnmountUseBrick).toHaveBeenCalledWith( { tagName: "div", args: [useBrick, "c"], @@ -176,20 +176,20 @@ describe("ReactUseBrick", () => { ); - expect(mockRenderUseBrick).toBeCalledTimes(1); + expect(mockRenderUseBrick).toHaveBeenCalledTimes(1); expect(mockRenderUseBrick).toHaveBeenNthCalledWith( 1, useBrick, "a", undefined ); - expect(mockMountUseBrick).not.toBeCalled(); + expect(mockMountUseBrick).not.toHaveBeenCalled(); jest.advanceTimersByTime(200); await act(() => (global as any).flushPromises()); - expect(mockMountUseBrick).toBeCalledTimes(1); - expect(mockMountUseBrick).toBeCalledWith( + expect(mockMountUseBrick).toHaveBeenCalledTimes(1); + expect(mockMountUseBrick).toHaveBeenCalledWith( { tagName: "div", args: [useBrick, "a"], @@ -203,7 +203,7 @@ describe("ReactUseBrick", () => { jest.advanceTimersByTime(100); await act(() => (global as any).flushPromises()); - expect(mockMountUseBrick).toBeCalledTimes(1); + expect(mockMountUseBrick).toHaveBeenCalledTimes(1); // Second re-render before the first one completes. rerender(); @@ -211,12 +211,12 @@ describe("ReactUseBrick", () => { // The first re-render should be ignored. jest.advanceTimersByTime(100); await act(() => (global as any).flushPromises()); - expect(mockMountUseBrick).toBeCalledTimes(1); + expect(mockMountUseBrick).toHaveBeenCalledTimes(1); jest.advanceTimersByTime(100); await act(() => (global as any).flushPromises()); - expect(mockMountUseBrick).toBeCalledTimes(2); + expect(mockMountUseBrick).toHaveBeenCalledTimes(2); expect(mockMountUseBrick).toHaveBeenNthCalledWith( 2, { @@ -247,12 +247,12 @@ describe("ReactUseBrick", () => { ); await act(() => (global as any).flushPromises()); - expect(ignoredCallback).toBeCalledTimes(2); + expect(ignoredCallback).toHaveBeenCalledTimes(2); unmount(); - expect(mockHandleHttpError).not.toBeCalled(); - expect(mockMountUseBrick).not.toBeCalled(); - expect(mockUnmountUseBrick).not.toBeCalled(); + expect(mockHandleHttpError).not.toHaveBeenCalled(); + expect(mockMountUseBrick).not.toHaveBeenCalled(); + expect(mockUnmountUseBrick).not.toHaveBeenCalled(); }); test("render failed", async () => { @@ -265,19 +265,19 @@ describe("ReactUseBrick", () => { ); await act(() => (global as any).flushPromises()); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( "Render useBrick failed:", useBrick, "with data:", "a" ); - expect(mockHandleHttpError).toBeCalledWith(error); + expect(mockHandleHttpError).toHaveBeenCalledWith(error); unmount(); - expect(mockMountUseBrick).not.toBeCalled(); - expect(mockUnmountUseBrick).not.toBeCalled(); + expect(mockMountUseBrick).not.toHaveBeenCalled(); + expect(mockUnmountUseBrick).not.toHaveBeenCalled(); }); test("render failed but render id changed", async () => { @@ -291,12 +291,12 @@ describe("ReactUseBrick", () => { ); await act(() => (global as any).flushPromises()); - expect(consoleError).toBeCalledTimes(0); - expect(mockHandleHttpError).not.toBeCalled(); + expect(consoleError).toHaveBeenCalledTimes(0); + expect(mockHandleHttpError).not.toHaveBeenCalled(); unmount(); - expect(mockMountUseBrick).not.toBeCalled(); - expect(mockUnmountUseBrick).not.toBeCalled(); + expect(mockMountUseBrick).not.toHaveBeenCalled(); + expect(mockUnmountUseBrick).not.toHaveBeenCalled(); mockGetRenderId.mockReset(); }); @@ -318,12 +318,12 @@ describe("ReactUseBrick", () => { ); await act(() => (global as any).flushPromises()); - expect(refCallback).toBeCalledTimes(2); + expect(refCallback).toHaveBeenCalledTimes(2); expect(refCallback).toHaveBeenNthCalledWith(1, expect.any(HTMLDivElement)); expect(refCallback).toHaveBeenNthCalledWith(2, expect.any(HTMLDivElement)); unmount(); - expect(refCallback).toBeCalledTimes(4); + expect(refCallback).toHaveBeenCalledTimes(4); expect(refCallback).toHaveBeenNthCalledWith(3, null); expect(refCallback).toHaveBeenNthCalledWith(4, null); }); @@ -344,15 +344,15 @@ describe("ReactUseMultipleBricks", () => { await act(() => (global as any).flushPromises()); - expect(mockMountUseBrick).toBeCalledTimes(2); - expect(mockMountUseBrick).toBeCalledWith( + expect(mockMountUseBrick).toHaveBeenCalledTimes(2); + expect(mockMountUseBrick).toHaveBeenCalledWith( { tagName: "div", args: [useBrick[0], "m"], }, expect.any(HTMLDivElement) ); - expect(mockMountUseBrick).toBeCalledWith( + expect(mockMountUseBrick).toHaveBeenCalledWith( { tagName: "span", args: [useBrick[1], "m"], @@ -361,7 +361,7 @@ describe("ReactUseMultipleBricks", () => { ); unmount(); - expect(mockUnmountUseBrick).toBeCalledTimes(2); + expect(mockUnmountUseBrick).toHaveBeenCalledTimes(2); }); test("with single useBrick", async () => { @@ -378,8 +378,8 @@ describe("ReactUseMultipleBricks", () => { await act(() => (global as any).flushPromises()); - expect(mockMountUseBrick).toBeCalledTimes(1); - expect(mockMountUseBrick).toBeCalledWith( + expect(mockMountUseBrick).toHaveBeenCalledTimes(1); + expect(mockMountUseBrick).toHaveBeenCalledWith( { tagName: "div", args: [useBrick, "m"], @@ -388,6 +388,6 @@ describe("ReactUseMultipleBricks", () => { ); unmount(); - expect(mockUnmountUseBrick).toBeCalledTimes(1); + expect(mockUnmountUseBrick).toHaveBeenCalledTimes(1); }); }); diff --git a/packages/react-runtime/src/useCurrentApp.spec.ts b/packages/react-runtime/src/useCurrentApp.spec.ts index d257a8a807..35c3ded7f5 100644 --- a/packages/react-runtime/src/useCurrentApp.spec.ts +++ b/packages/react-runtime/src/useCurrentApp.spec.ts @@ -41,7 +41,7 @@ describe("useCurrentApp", () => { expect(result.current).toEqual({ id: "hello" }); unmount(); - expect(spyOnRemoveEventListener).toBeCalledWith( + expect(spyOnRemoveEventListener).toHaveBeenCalledWith( ...spyOnAddEventListener.mock.calls[0] ); }); @@ -71,7 +71,7 @@ describe("useCurrentApp", () => { expect(result.current).toEqual({ id: "hello" }); unmount(); - expect(spyOnRemoveEventListener).toBeCalledWith( + expect(spyOnRemoveEventListener).toHaveBeenCalledWith( ...spyOnAddEventListener.mock.calls[0] ); }); diff --git a/packages/react-runtime/src/useCurrentTheme.spec.ts b/packages/react-runtime/src/useCurrentTheme.spec.ts index 5a3f35e3b9..916997f6ee 100644 --- a/packages/react-runtime/src/useCurrentTheme.spec.ts +++ b/packages/react-runtime/src/useCurrentTheme.spec.ts @@ -29,7 +29,7 @@ describe("useCurrentTheme", () => { expect(result.current).toEqual("dark"); unmount(); - expect(spyOnRemoveEventListener).toBeCalledWith( + expect(spyOnRemoveEventListener).toHaveBeenCalledWith( ...spyOnAddEventListener.mock.calls[0] ); }); diff --git a/packages/react-runtime/src/useNavConfig.spec.ts b/packages/react-runtime/src/useNavConfig.spec.ts index 3e354ac46c..9703de65ea 100644 --- a/packages/react-runtime/src/useNavConfig.spec.ts +++ b/packages/react-runtime/src/useNavConfig.spec.ts @@ -33,7 +33,7 @@ describe("useNavConfig", () => { expect(result.current).toEqual({ breadcrumb: [{ text: "Test" }] }); unmount(); - expect(spyOnRemoveEventListener).toBeCalledWith( + expect(spyOnRemoveEventListener).toHaveBeenCalledWith( ...spyOnAddEventListener.mock.calls[0] ); }); diff --git a/packages/react-runtime/src/useProvider/useProvider.spec.tsx b/packages/react-runtime/src/useProvider/useProvider.spec.tsx index 4b7063bce2..6eedf99853 100644 --- a/packages/react-runtime/src/useProvider/useProvider.spec.tsx +++ b/packages/react-runtime/src/useProvider/useProvider.spec.tsx @@ -135,7 +135,7 @@ describe("Error handing", () => { await (global as any).flushPromises(); }); - expect(onError).toBeCalled(); + expect(onError).toHaveBeenCalled(); expect(result.current.data).toBe(undefined); expect(result.current.loading).toBe(false); expect(result.current.error).toMatchObject(expectedError); diff --git a/packages/react-runtime/src/useRouteRender.spec.ts b/packages/react-runtime/src/useRouteRender.spec.ts index c4d429c0fa..2f0763f68f 100644 --- a/packages/react-runtime/src/useRouteRender.spec.ts +++ b/packages/react-runtime/src/useRouteRender.spec.ts @@ -27,7 +27,7 @@ describe("useRouteRender", () => { }); unmount(); - expect(spyOnRemoveEventListener).toBeCalledWith( + expect(spyOnRemoveEventListener).toHaveBeenCalledWith( ...spyOnAddEventListener.mock.calls[0] ); }); diff --git a/packages/runtime/src/CustomProcessors.spec.ts b/packages/runtime/src/CustomProcessors.spec.ts index 15fce7e3b4..9c75d4bc3b 100644 --- a/packages/runtime/src/CustomProcessors.spec.ts +++ b/packages/runtime/src/CustomProcessors.spec.ts @@ -30,6 +30,6 @@ describe("CustomProcessors", () => { // Can't register duplicated processors in the same namespace. expect(() => { customProcessors.define("brickKit.objectEntries", () => void 0); - }).toThrowError(); + }).toThrow(); }); }); diff --git a/packages/runtime/src/CustomTemplates.spec.ts b/packages/runtime/src/CustomTemplates.spec.ts index 037617c09a..20299b43ff 100644 --- a/packages/runtime/src/CustomTemplates.spec.ts +++ b/packages/runtime/src/CustomTemplates.spec.ts @@ -28,7 +28,7 @@ describe("customTemplates", () => { bricks: [{ brick: "div" }], state: [], }); - expect(consoleWarn).not.toBeCalled(); + expect(consoleWarn).not.toHaveBeenCalled(); const tpl = document.createElement( "tpl-very-simple" @@ -51,8 +51,8 @@ describe("customTemplates", () => { bricks: [{ brick: "span" }], state: [], }); - expect(consoleWarn).toBeCalledTimes(1); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledWith( expect.stringContaining( 'Custom template of "tpl-very-simple" already registered' ) @@ -174,11 +174,11 @@ describe("customTemplates", () => { const resultM = (tpl as any).methodM("p"); expect(resultM).toBe("M"); - expect(methodM).toBeCalledTimes(1); + expect(methodM).toHaveBeenCalledTimes(1); expect(methodM).toHaveBeenNthCalledWith(1, "p"); const resultN = (tpl as any).methodN("q"); expect(resultN).toBe("L"); - expect(methodL).toBeCalledTimes(1); + expect(methodL).toHaveBeenCalledTimes(1); expect(methodL).toHaveBeenNthCalledWith(1, "q"); // Update props @@ -241,9 +241,9 @@ describe("customTemplates", () => { state: [{ name: "stateX" }, { name: "propA" }], }); - expect(consoleWarn).toBeCalledTimes(1); - expect(consoleError).toBeCalledTimes(3); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(3); + expect(consoleWarn).toHaveBeenCalledWith( "Template `asVariable` is deprecated in v3 and will be dropped in strict mode,", "tpl-legacy", "propB" @@ -275,7 +275,7 @@ describe("customTemplates", () => { bricks: [{ brick: "div" }], state: [{ name: "title", expose: true }], }); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledWith( "Using native HTMLElement properties as template properties or methods is deprecated in v3 and will be dropped in strict mode,", "tpl-native-prop", "title" @@ -312,8 +312,8 @@ describe("customTemplates", () => { bricks: [{ brick: "p" }], state: [], }); - expect(consoleWarn).toBeCalledTimes(1); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledWith( expect.stringContaining( 'Custom template of "tpl-existed" already defined by customElements' ) diff --git a/packages/runtime/src/Dialog.spec.ts b/packages/runtime/src/Dialog.spec.ts index 5bbb741add..1230514b82 100644 --- a/packages/runtime/src/Dialog.spec.ts +++ b/packages/runtime/src/Dialog.spec.ts @@ -32,7 +32,7 @@ describe("Dialog", () => { type: "confirm", content: "Ouch!", }); - expect(dialogService).toBeCalledWith({ + expect(dialogService).toHaveBeenCalledWith({ type: "confirm", content: "Ouch!", }); @@ -42,16 +42,19 @@ describe("Dialog", () => { consoleError.mockReturnValueOnce(); loadDialogService("undefined-dialog", loader); await (global as any).flushPromises(); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith("Load dialog service failed:", "oops"); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( + "Load dialog service failed:", + "oops" + ); spyOnModalConfirm.mockReturnValueOnce(true); const promise = Dialog.show({ type: "confirm", content: "Ouch!", }); - expect(dialogService).not.toBeCalled(); - expect(spyOnModalConfirm).toBeCalledTimes(1); + expect(dialogService).not.toHaveBeenCalled(); + expect(spyOnModalConfirm).toHaveBeenCalledTimes(1); await new Promise((resolve) => setTimeout(resolve, 1)); await promise; }); @@ -60,8 +63,11 @@ describe("Dialog", () => { consoleError.mockReturnValueOnce(); loadDialogService("undefined-dialog", loader); await (global as any).flushPromises(); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith("Load dialog service failed:", "oops"); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( + "Load dialog service failed:", + "oops" + ); spyOnModalConfirm.mockReturnValueOnce(false); let errorCaught = false; @@ -71,8 +77,8 @@ describe("Dialog", () => { }).catch(() => { errorCaught = true; }); - expect(dialogService).not.toBeCalled(); - expect(spyOnModalConfirm).toBeCalledTimes(1); + expect(dialogService).not.toHaveBeenCalled(); + expect(spyOnModalConfirm).toHaveBeenCalledTimes(1); await new Promise((resolve) => setTimeout(resolve, 1)); expect(errorCaught).toBe(true); }); @@ -81,17 +87,20 @@ describe("Dialog", () => { consoleError.mockReturnValueOnce(); loadDialogService("undefined-dialog", loader); await (global as any).flushPromises(); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith("Load dialog service failed:", "oops"); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( + "Load dialog service failed:", + "oops" + ); spyOnModalAlert.mockReturnValueOnce(); Dialog.show({ type: "success", content: "Ouch!", }); - expect(dialogService).not.toBeCalled(); - expect(spyOnModalAlert).toBeCalledTimes(1); - expect(spyOnModalAlert).toBeCalledWith("Ouch!"); + expect(dialogService).not.toHaveBeenCalled(); + expect(spyOnModalAlert).toHaveBeenCalledTimes(1); + expect(spyOnModalAlert).toHaveBeenCalledWith("Ouch!"); await new Promise((resolve) => setTimeout(resolve, 1000)); }); @@ -99,16 +108,19 @@ describe("Dialog", () => { consoleError.mockReturnValueOnce(); loadDialogService("undefined-dialog", loader); await (global as any).flushPromises(); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith("Load dialog service failed:", "oops"); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( + "Load dialog service failed:", + "oops" + ); spyOnModalAlert.mockReturnValueOnce(); Dialog.show({ type: "success", content: "Ouch!", }); - expect(dialogService).not.toBeCalled(); - expect(spyOnModalAlert).toBeCalledTimes(1); - expect(spyOnModalAlert).toBeCalledWith("Ouch!"); + expect(dialogService).not.toHaveBeenCalled(); + expect(spyOnModalAlert).toHaveBeenCalledTimes(1); + expect(spyOnModalAlert).toHaveBeenCalledWith("Ouch!"); }); }); diff --git a/packages/runtime/src/Notification.spec.ts b/packages/runtime/src/Notification.spec.ts index 7697ceba81..a4d644a17c 100644 --- a/packages/runtime/src/Notification.spec.ts +++ b/packages/runtime/src/Notification.spec.ts @@ -34,19 +34,19 @@ describe("Notification", () => { type: "success", message: "Done!", }); - expect(notificationService).toBeCalledWith({ + expect(notificationService).toHaveBeenCalledWith({ type: "success", message: "Done!", }); - expect(spyOnModalAlert).not.toBeCalled(); + expect(spyOnModalAlert).not.toHaveBeenCalled(); }); test("error: fallback", async () => { consoleError.mockReturnValueOnce(); loadNotificationService("undefined-notification", loader); await (global as any).flushPromises(); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( "Load notification service failed:", "oops" ); @@ -56,8 +56,8 @@ describe("Notification", () => { type: "error", message: "Ouch!", }); - expect(notificationService).not.toBeCalled(); - expect(spyOnModalAlert).toBeCalledTimes(1); - expect(spyOnModalAlert).toBeCalledWith("Ouch!"); + expect(notificationService).not.toHaveBeenCalled(); + expect(spyOnModalAlert).toHaveBeenCalledTimes(1); + expect(spyOnModalAlert).toHaveBeenCalledWith("Ouch!"); }); }); diff --git a/packages/runtime/src/StoryboardFunctionRegistry.spec.ts b/packages/runtime/src/StoryboardFunctionRegistry.spec.ts index e8f8c83e1a..dab718b509 100644 --- a/packages/runtime/src/StoryboardFunctionRegistry.spec.ts +++ b/packages/runtime/src/StoryboardFunctionRegistry.spec.ts @@ -132,8 +132,8 @@ describe("StoryboardFunctions", () => { expect(fn.sayHello({ en: "world", zh: "世界" })).toBe( "app/my-app:HELLO, 世界!" ); - expect(consoleLog).toBeCalledTimes(1); - expect(consoleLog).toBeCalledWith({ en: "world", zh: "世界" }); + expect(consoleLog).toHaveBeenCalledTimes(1); + expect(consoleLog).toHaveBeenCalledWith({ en: "world", zh: "世界" }); expect(fn.sayExclamation("Oops")).toBe("Oops!"); expect(fn.getImg()).toBe("/micro-apps/my-app/images/my-img.png"); @@ -297,11 +297,11 @@ describe("collect coverage", () => { ]); fn.test(1); - expect(collector.beforeVisit).toBeCalledTimes(9); - expect(collector.beforeEvaluate).toBeCalledTimes(6); - expect(collector.beforeCall).toBeCalledTimes(1); - expect(collector.beforeBranch).toBeCalledTimes(1); - expect(collector.beforeBranch).toBeCalledWith( + expect(collector.beforeVisit).toHaveBeenCalledTimes(9); + expect(collector.beforeEvaluate).toHaveBeenCalledTimes(6); + expect(collector.beforeCall).toHaveBeenCalledTimes(1); + expect(collector.beforeBranch).toHaveBeenCalledTimes(1); + expect(collector.beforeBranch).toHaveBeenCalledWith( expect.objectContaining({ type: "IfStatement", }), @@ -309,10 +309,10 @@ describe("collect coverage", () => { ); fn.test(0); - expect(collector.beforeVisit).toBeCalledTimes(9); - expect(collector.beforeEvaluate).toBeCalledTimes(10); - expect(collector.beforeCall).toBeCalledTimes(2); - expect(collector.beforeBranch).toBeCalledTimes(2); + expect(collector.beforeVisit).toHaveBeenCalledTimes(9); + expect(collector.beforeEvaluate).toHaveBeenCalledTimes(10); + expect(collector.beforeCall).toHaveBeenCalledTimes(2); + expect(collector.beforeBranch).toHaveBeenCalledTimes(2); expect(collector.beforeBranch).toHaveBeenNthCalledWith( 2, expect.objectContaining({ diff --git a/packages/runtime/src/createRoot.spec.ts b/packages/runtime/src/createRoot.spec.ts index 07024d9a89..63a996318b 100644 --- a/packages/runtime/src/createRoot.spec.ts +++ b/packages/runtime/src/createRoot.spec.ts @@ -29,8 +29,8 @@ describe("preview", () => { expect(container.innerHTML).toBe("
Hello Preview
"); expect(portal.innerHTML).toBe(""); - expect(applyTheme).not.toBeCalled(); - expect(scrollTo).not.toBeCalled(); + expect(applyTheme).not.toHaveBeenCalled(); + expect(scrollTo).not.toHaveBeenCalled(); root.unmount(); expect(container.innerHTML).toBe(""); @@ -63,8 +63,8 @@ describe("preview", () => { expect(container.innerHTML).toBe("
Hello Preview
"); expect(portal.innerHTML).toBe(""); expect(document.body.lastElementChild?.innerHTML).toBe("

I'm portal

"); - expect(applyTheme).not.toBeCalled(); - expect(scrollTo).not.toBeCalled(); + expect(applyTheme).not.toHaveBeenCalled(); + expect(scrollTo).not.toHaveBeenCalled(); root.unmount(); expect(container.innerHTML).toBe(""); @@ -126,8 +126,8 @@ describe("preview", () => { "
Goodbye Preview
" ); expect(portal.innerHTML).toBe("

I'm also portal

"); - expect(applyTheme).toBeCalledTimes(1); - expect(scrollTo).toBeCalledTimes(1); + expect(applyTheme).toHaveBeenCalledTimes(1); + expect(scrollTo).toHaveBeenCalledTimes(1); await root.render(bricks, { ...options, @@ -209,10 +209,10 @@ describe("preview", () => { expect(container.innerHTML).toBe("silence"); expect(portal.innerHTML).toBe(""); - expect(applyTheme).not.toBeCalled(); - expect(scrollTo).not.toBeCalled(); + expect(applyTheme).not.toHaveBeenCalled(); + expect(scrollTo).not.toHaveBeenCalled(); - expect(consoleError).toBeCalledTimes(2); + expect(consoleError).toHaveBeenCalledTimes(2); expect(consoleError).toHaveBeenNthCalledWith( 1, "Package for unknown-brick not found." @@ -240,11 +240,11 @@ describe("preview", () => { ]); expect(container.innerHTML).toBe( - '
UNKNOWN_ERROR: ReferenceError: QUERY is not defined, in "<% QUERY.q %>"
' + '
UNKNOWN_ERROR: ReferenceError: QUERY is not defined, in "<% QUERY.q %>"
' ); expect(portal.innerHTML).toBe(""); - expect(applyTheme).not.toBeCalled(); - expect(scrollTo).not.toBeCalled(); + expect(applyTheme).not.toHaveBeenCalled(); + expect(scrollTo).not.toHaveBeenCalled(); root.unmount(); expect(container.innerHTML).toBe(""); diff --git a/packages/runtime/src/handleHttpError.spec.ts b/packages/runtime/src/handleHttpError.spec.ts index 1538b16339..4115432806 100644 --- a/packages/runtime/src/handleHttpError.spec.ts +++ b/packages/runtime/src/handleHttpError.spec.ts @@ -123,15 +123,15 @@ describe("handleHttpError", () => { handleHttpError(error); // Mock triggering the same error twice. handleHttpError(error); - expect(Dialog.show).toBeCalledTimes(1); + expect(Dialog.show).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); - expect(Dialog.show).toBeCalledWith( + expect(Dialog.show).toHaveBeenCalledWith( expect.objectContaining({ type: "error", content: "Error: oops", }) ); - expect(consoleError).toBeCalledTimes(2); + expect(consoleError).toHaveBeenCalledTimes(2); consoleError.mockReset(); }); @@ -146,19 +146,19 @@ describe("handleHttpError", () => { handleHttpError(error); // Mock triggering the same error twice. handleHttpError(error); - expect(Dialog.show).toBeCalledTimes(1); - expect(Dialog.show).toBeCalledWith( + expect(Dialog.show).toHaveBeenCalledTimes(1); + expect(Dialog.show).toHaveBeenCalledWith( expect.objectContaining({ type: "confirm", }) ); await (global as any).flushPromises(); - expect(spyOnHistoryPush).toBeCalledWith("/auth/login", { + expect(spyOnHistoryPush).toHaveBeenCalledWith("/auth/login", { from: { pathname: "/no-where", }, }); - expect(consoleError).not.toBeCalled(); + expect(consoleError).not.toHaveBeenCalled(); }); it("should handle unauthenticated errors and redirect to sso login page", async () => { @@ -170,19 +170,19 @@ describe("handleHttpError", () => { code: 100003, }); handleHttpError(error); - expect(Dialog.show).toBeCalledTimes(1); - expect(Dialog.show).toBeCalledWith( + expect(Dialog.show).toHaveBeenCalledTimes(1); + expect(Dialog.show).toHaveBeenCalledWith( expect.objectContaining({ type: "confirm", }) ); await (global as any).flushPromises(); - expect(spyOnHistoryPush).toBeCalledWith("/sso-auth/login", { + expect(spyOnHistoryPush).toHaveBeenCalledWith("/sso-auth/login", { from: { pathname: "/no-where", }, }); - expect(consoleError).not.toBeCalled(); + expect(consoleError).not.toHaveBeenCalled(); }); it("should handle unauthenticated errors and redirect to general login page", async () => { @@ -194,15 +194,15 @@ describe("handleHttpError", () => { code: 100003, }); handleHttpError(error); - expect(Dialog.show).toBeCalledTimes(1); - expect(Dialog.show).toBeCalledWith( + expect(Dialog.show).toHaveBeenCalledTimes(1); + expect(Dialog.show).toHaveBeenCalledWith( expect.objectContaining({ type: "confirm", }) ); await (global as any).flushPromises(); - expect(spyOnHistoryPush).not.toBeCalled(); - expect(consoleError).not.toBeCalled(); + expect(spyOnHistoryPush).not.toHaveBeenCalled(); + expect(consoleError).not.toHaveBeenCalled(); }); it("should not show modal to go to login page when unauthenticated error occurs while NO_AUTH_GUARD is enabled", () => { @@ -213,17 +213,17 @@ describe("handleHttpError", () => { }); showDialog.mockResolvedValueOnce(); handleHttpError(error); - expect(Dialog.show).toBeCalledWith( + expect(Dialog.show).toHaveBeenCalledWith( expect.objectContaining({ type: "error", content: "HttpResponseError", }) ); - expect(consoleError).toBeCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); }); it("should return undefined if abort http request", () => { handleHttpError(new HttpAbortError("The user aborted a request.")); - expect(Dialog.show).not.toBeCalled(); + expect(Dialog.show).not.toHaveBeenCalled(); }); }); diff --git a/packages/runtime/src/internal/ErrorNode.spec.ts b/packages/runtime/src/internal/ErrorNode.spec.ts index 9fdb3959e2..cc6bf29d3b 100644 --- a/packages/runtime/src/internal/ErrorNode.spec.ts +++ b/packages/runtime/src/internal/ErrorNode.spec.ts @@ -254,7 +254,7 @@ describe("ErrorNode", () => { }), }); - expect(consoleError).toBeCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); consoleError.mockRestore(); }); diff --git a/packages/runtime/src/internal/Renderer.spec.ts b/packages/runtime/src/internal/Renderer.spec.ts index c02297e7c4..6c8a11f455 100644 --- a/packages/runtime/src/internal/Renderer.spec.ts +++ b/packages/runtime/src/internal/Renderer.spec.ts @@ -222,7 +222,7 @@ describe("renderRoutes", () => { }), path: "/home/:objectId", }); - expect(preCheckPermissionsForBrickOrRoute).toBeCalledTimes(2); + expect(preCheckPermissionsForBrickOrRoute).toHaveBeenCalledTimes(2); expect(preCheckPermissionsForBrickOrRoute).toHaveBeenNthCalledWith( 1, route, @@ -235,8 +235,11 @@ describe("renderRoutes", () => { expect.any(Function) ); expect(runtimeContext.pendingPermissionsPreCheck.length).toBe(2); - expect(loadBricksImperatively).toBeCalledWith(["my-pre-load-brick"], []); - expect(loadProcessorsImperatively).toBeCalledTimes(1); + expect(loadBricksImperatively).toHaveBeenCalledWith( + ["my-pre-load-brick"], + [] + ); + expect(loadProcessorsImperatively).toHaveBeenCalledTimes(1); expect(loadProcessorsImperatively).toHaveBeenNthCalledWith( 1, new Set(["route.context"]), @@ -357,8 +360,8 @@ describe("renderRoutes", () => { ).rejects.toMatchInlineSnapshot( `[Error: Unexpected type of redirect result: undefined]` ); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( "Unexpected redirect result:", undefined ); @@ -419,7 +422,7 @@ describe("renderRoutes", () => { }), path: "/home/:objectId/list", }); - expect(preCheckPermissionsForBrickOrRoute).toBeCalledTimes(3); + expect(preCheckPermissionsForBrickOrRoute).toHaveBeenCalledTimes(3); expect(preCheckPermissionsForBrickOrRoute).toHaveBeenNthCalledWith( 1, route, @@ -504,7 +507,7 @@ describe("renderRoutes", () => { }), path: "/home/:objectId/list", }); - expect(preCheckPermissionsForBrickOrRoute).toBeCalledTimes(4); + expect(preCheckPermissionsForBrickOrRoute).toHaveBeenCalledTimes(4); expect(preCheckPermissionsForBrickOrRoute).toHaveBeenNthCalledWith( 1, route, @@ -745,8 +748,8 @@ describe("renderBrick", () => { {} ); expect(output.blockingList.length).toBe(3); - expect(enqueueStableLoadBricks).toBeCalledWith(["test.my-brick"], []); - expect(loadProcessorsImperatively).toBeCalledTimes(2); + expect(enqueueStableLoadBricks).toHaveBeenCalledWith(["test.my-brick"], []); + expect(loadProcessorsImperatively).toHaveBeenCalledTimes(2); expect(loadProcessorsImperatively).toHaveBeenNthCalledWith( 1, new Set(["def.rst"]), @@ -780,7 +783,7 @@ describe("renderBrick", () => { expect(output.node?.child?.sibling?.child).toBe(undefined); expect(output.node?.child?.sibling?.sibling).toBe(undefined); - expect(consoleInfo).toBeCalledTimes(0); + expect(consoleInfo).toHaveBeenCalledTimes(0); rendererContext.dispatchBeforePageLoad(); expect(consoleInfo).toHaveBeenNthCalledWith( 1, @@ -812,7 +815,7 @@ describe("renderBrick", () => { rendererContext.initializeScrollIntoView(); rendererContext.initializeMediaChange(); - expect(consoleInfo).toBeCalledTimes(5); + expect(consoleInfo).toHaveBeenCalledTimes(5); IntersectionObserver.mock.calls[0][0]( [ @@ -877,7 +880,7 @@ describe("renderBrick", () => { ); rendererContext.dispose(); - expect(consoleInfo).toBeCalledTimes(13); + expect(consoleInfo).toHaveBeenCalledTimes(13); consoleInfo.mockReset(); mockGetHistory.mockReset(); }); @@ -918,8 +921,8 @@ describe("renderBrick", () => { expect(output).toEqual({ blockingList: [], }); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( "Legacy templates are dropped in v3:", brick ); @@ -934,8 +937,8 @@ describe("renderBrick", () => { expect(output).toEqual({ blockingList: [], }); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith("Invalid brick:", brick); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith("Invalid brick:", brick); }); test("error boundary", async () => { @@ -989,8 +992,8 @@ describe("renderBrick", () => { }, blockingList: [], }); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( "Error caught by error boundary:", new ReferenceError('ABC is not defined, in "<% ABC %>"') ); @@ -1190,10 +1193,10 @@ describe("renderBrick for control nodes", () => { renderRoot.child = output.node; await Promise.all([...output.blockingList, ctxStore.waitForAll()]); mountTree(renderRoot); - expect(consoleInfo).not.toBeCalled(); + expect(consoleInfo).not.toHaveBeenCalled(); rendererContext.dispatchOnMount(); rendererContext.initializeScrollIntoView(); - expect(consoleInfo).toBeCalledTimes(3); + expect(consoleInfo).toHaveBeenCalledTimes(3); expect(consoleInfo).toHaveBeenNthCalledWith(1, "onMount", "mount", "a"); expect(consoleInfo).toHaveBeenNthCalledWith(2, "onMount", "mount", "b"); expect(consoleInfo).toHaveBeenNthCalledWith(3, ":forEach mount", false); @@ -1209,11 +1212,11 @@ describe("renderBrick for control nodes", () => { ); ctxStore.updateValue("list", ["a", "c"], "replace"); - expect(consoleInfo).toBeCalledTimes(3); + expect(consoleInfo).toHaveBeenCalledTimes(3); // Wait for `_.debounce()` await new Promise((resolve) => setTimeout(resolve, 0)); - expect(consoleInfo).toBeCalledTimes(9); + expect(consoleInfo).toHaveBeenCalledTimes(9); expect(consoleInfo).toHaveBeenNthCalledWith(4, ":forEach unmount"); expect(consoleInfo).toHaveBeenNthCalledWith(5, "onUnmount", "unmount", "a"); expect(consoleInfo).toHaveBeenNthCalledWith(6, "onUnmount", "unmount", "b"); @@ -1232,7 +1235,7 @@ describe("renderBrick for control nodes", () => { rendererContext.dispatchOnUnmount(); rendererContext.dispose(); - expect(consoleInfo).toBeCalledTimes(12); + expect(consoleInfo).toHaveBeenCalledTimes(12); expect(consoleInfo).toHaveBeenNthCalledWith( 10, "onUnmount", @@ -1363,21 +1366,21 @@ describe("renderBrick for control nodes", () => { renderRoot.child = output.node; await Promise.all([...output.blockingList, ctxStore.waitForAll()]); mountTree(renderRoot); - expect(consoleInfo).not.toBeCalled(); + expect(consoleInfo).not.toHaveBeenCalled(); rendererContext.dispatchOnMount(); rendererContext.initializeScrollIntoView(); - expect(consoleInfo).toBeCalledTimes(1); + expect(consoleInfo).toHaveBeenCalledTimes(1); expect(consoleInfo).toHaveBeenNthCalledWith(1, ":forEach mount", false); expect(container.innerHTML).toBe("

Before

After

"); expect(portal.innerHTML).toBe("

"); ctxStore.updateValue("list", ["a", "c"], "replace"); - expect(consoleInfo).toBeCalledTimes(1); + expect(consoleInfo).toHaveBeenCalledTimes(1); // Wait for `_.debounce()` await new Promise((resolve) => setTimeout(resolve, 0)); - expect(consoleInfo).toBeCalledTimes(5); + expect(consoleInfo).toHaveBeenCalledTimes(5); expect(consoleInfo).toHaveBeenNthCalledWith(2, ":forEach unmount"); expect(consoleInfo).toHaveBeenNthCalledWith(3, "onMount", "mount", "a"); expect(consoleInfo).toHaveBeenNthCalledWith(4, "onMount", "mount", "c"); @@ -1393,7 +1396,7 @@ describe("renderBrick for control nodes", () => { rendererContext.dispatchOnUnmount(); rendererContext.dispose(); - expect(consoleInfo).toBeCalledTimes(8); + expect(consoleInfo).toHaveBeenCalledTimes(8); expect(consoleInfo).toHaveBeenNthCalledWith(6, "onUnmount", "unmount", "a"); expect(consoleInfo).toHaveBeenNthCalledWith(7, "onUnmount", "unmount", "c"); expect(consoleInfo).toHaveBeenNthCalledWith(8, ":forEach unmount"); @@ -2169,16 +2172,16 @@ describe("renderBrick for tpl", () => { const outerSpanClick = jest.fn(); container.addEventListener("spanClick", outerSpanClick); container.querySelector("#inner-span")!.dispatchEvent(new Event("click")); - expect(consoleInfo).toBeCalledTimes(1); - expect(consoleInfo).toBeCalledWith("spanClick"); - expect(outerSpanClick).toBeCalledTimes(0); + expect(consoleInfo).toHaveBeenCalledTimes(1); + expect(consoleInfo).toHaveBeenCalledWith("spanClick"); + expect(outerSpanClick).toHaveBeenCalledTimes(0); container .querySelector("#inner-span")! .dispatchEvent(new Event("click", { bubbles: true })); - expect(consoleInfo).toBeCalledTimes(2); - expect(consoleInfo).toBeCalledWith("spanClick"); - expect(outerSpanClick).toBeCalledTimes(1); + expect(consoleInfo).toHaveBeenCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledWith("spanClick"); + expect(outerSpanClick).toHaveBeenCalledTimes(1); consoleInfo.mockReset(); }); @@ -2274,10 +2277,10 @@ describe("renderBrick for tpl", () => { ), ]); mountTree(renderRoot); - expect(consoleInfo).not.toBeCalled(); + expect(consoleInfo).not.toHaveBeenCalled(); rendererContext.dispatchOnMount(); rendererContext.initializeScrollIntoView(); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith(1, "onMount", "mount", "a"); expect(consoleInfo).toHaveBeenNthCalledWith(2, "onMount", "mount", "b"); @@ -2339,11 +2342,11 @@ describe("renderBrick for tpl", () => { "test" ); stateStore.updateValue("list", ["a", "c"], "replace"); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); // Wait for `_.debounce()` await new Promise((resolve) => setTimeout(resolve, 0)); - expect(consoleInfo).toBeCalledTimes(6); + expect(consoleInfo).toHaveBeenCalledTimes(6); expect(consoleInfo).toHaveBeenNthCalledWith(3, "onUnmount", "unmount", "a"); expect(consoleInfo).toHaveBeenNthCalledWith(4, "onUnmount", "unmount", "b"); expect(consoleInfo).toHaveBeenNthCalledWith(5, "onMount", "mount", "a"); @@ -3317,7 +3320,7 @@ describe("renderBrick for tpl", () => { type: "unknown.tpl-x", }, }); - expect(loadBricksImperatively).toBeCalledWith(["unknown.tpl-x"], []); + expect(loadBricksImperatively).toHaveBeenCalledWith(["unknown.tpl-x"], []); }); test("slots in tpl", async () => { @@ -3738,8 +3741,8 @@ describe("renderBrick for scripts", () => { {} ); expect(output).toEqual({ blockingList: [] }); - expect(loadScript).toBeCalledTimes(1); - expect(loadScript).toBeCalledWith("http://example.com/a.js", "", { + expect(loadScript).toHaveBeenCalledTimes(1); + expect(loadScript).toHaveBeenCalledWith("http://example.com/a.js", "", { type: "module", }); }); @@ -3776,7 +3779,7 @@ describe("renderBrick for scripts", () => { }, }), }); - expect(loadScript).toBeCalledTimes(0); + expect(loadScript).toHaveBeenCalledTimes(0); }); }); @@ -3806,8 +3809,8 @@ describe("renderBrick for stylesheets", () => { {} ); expect(output).toEqual({ blockingList: [] }); - expect(loadStyle).toBeCalledTimes(1); - expect(loadStyle).toBeCalledWith("http://example.com/b.css", "", { + expect(loadStyle).toHaveBeenCalledTimes(1); + expect(loadStyle).toHaveBeenCalledWith("http://example.com/b.css", "", { rel: "stylesheet", }); }); @@ -3846,6 +3849,6 @@ describe("renderBrick for stylesheets", () => { }, }), }); - expect(loadStyle).toBeCalledTimes(0); + expect(loadStyle).toHaveBeenCalledTimes(0); }); }); diff --git a/packages/runtime/src/internal/Runtime.spec.ts b/packages/runtime/src/internal/Runtime.spec.ts index b8de9df6bb..be040a7984 100644 --- a/packages/runtime/src/internal/Runtime.spec.ts +++ b/packages/runtime/src/internal/Runtime.spec.ts @@ -746,8 +746,8 @@ describe("Runtime", () => { getHistory().push("/app-a"); expect(window.DISABLE_REACT_FLUSH_SYNC).toBeFalsy(); await getRuntime().bootstrap(); - expect(loadNotificationService).not.toBeCalled(); - expect(loadDialogService).not.toBeCalled(); + expect(loadNotificationService).not.toHaveBeenCalled(); + expect(loadDialogService).not.toHaveBeenCalled(); const renderId0 = _internalApiGetRenderId(); expect(renderId0).toBeDefined(); expect(document.body.children).toMatchInlineSnapshot(` @@ -869,8 +869,8 @@ describe("Runtime", () => { getHistory().push("/app-a/2"); await getRuntime().bootstrap(); - expect(loadNotificationService).toBeCalledTimes(1); - expect(loadDialogService).toBeCalledTimes(1); + expect(loadNotificationService).toHaveBeenCalledTimes(1); + expect(loadDialogService).toHaveBeenCalledTimes(1); expect(document.body.children).toMatchInlineSnapshot(` HTMLCollection [ @@ -918,8 +918,8 @@ describe("Runtime", () => { , ] `); - expect(finishPageView).toBeCalledTimes(1); - expect(finishPageView).toBeCalledWith({ + expect(finishPageView).toHaveBeenCalledTimes(1); + expect(finishPageView).toHaveBeenCalledWith({ status: "ok", path: "/app-a/3", pageTitle: "DevOps 管理专家", @@ -983,29 +983,30 @@ describe("Runtime", () => { getHistory().push("/app-a/sub-routes/3"); await (global as any).flushPromises(); expect(document.body.children).toMatchInlineSnapshot(` - HTMLCollection [ -
-

- Hello -

-
-
-
- Oops! Something went wrong: SyntaxError: Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`3\`. (1:4), in "<% Sub 3 %>" -
-
-
-
, -
, - ] - `); - expect(consoleError).toBeCalledTimes(1); +HTMLCollection [ +
+

+ Hello +

+
+
+
+ Oops! Something went wrong: SyntaxError: Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`3\`. (1:4), in "<% Sub 3 %>" +
+
+
+
, +
, +] +`); + expect(consoleError).toHaveBeenCalledTimes(1); expect(getRuntime().getNavConfig()).toEqual({ breadcrumb: [{ text: "0" }], }); @@ -1514,28 +1515,29 @@ describe("Runtime", () => { await (global as any).flushPromises(); await new Promise((resolve) => setTimeout(resolve)); expect(document.body.children).toMatchInlineSnapshot(` - HTMLCollection [ -
-

- Sub-routes with error -

-
-
-
- Oops! Something went wrong: oops -
-
-
-
, -
, - ] - `); +HTMLCollection [ +
+

+ Sub-routes with error +

+
+
+
+ Oops! Something went wrong: oops +
+
+
+
, +
, +] +`); expect(consoleError).toHaveBeenCalledTimes(1); getHistory().push("/app-a/sub-routes-with-error/ok"); @@ -1626,7 +1628,7 @@ describe("Runtime", () => { getHistory().push("/app-b/"); await getRuntime().bootstrap(); expect(getHistory().location.pathname).toBe("/auth/login"); - expect(finishPageView).toBeCalledTimes(2); + expect(finishPageView).toHaveBeenCalledTimes(2); expect(finishPageView).toHaveBeenNthCalledWith(1, { status: "redirected" }); expect(finishPageView).toHaveBeenNthCalledWith(2, { status: "ok", @@ -1642,7 +1644,7 @@ describe("Runtime", () => { const beforeunload = new Event("beforeunload"); const preventDefault = jest.spyOn(beforeunload, "preventDefault"); fireEvent(window, beforeunload); - expect(preventDefault).toBeCalled(); + expect(preventDefault).toHaveBeenCalled(); }); test("no app matched", async () => { @@ -1683,7 +1685,7 @@ describe("Runtime", () => { getHistory().push("/app-unknown/"); await getRuntime().bootstrap(); expect(getHistory().location.pathname).toBe("/sso-auth/login"); - expect(finishPageView).toBeCalledTimes(2); + expect(finishPageView).toHaveBeenCalledTimes(2); expect(finishPageView).toHaveBeenNthCalledWith(1, { status: "redirected" }); expect(finishPageView).toHaveBeenNthCalledWith(2, { status: "not-found" }); }); @@ -1746,8 +1748,8 @@ describe("Runtime", () => { />, ] `); - expect(finishPageView).toBeCalledTimes(1); - expect(finishPageView).toBeCalledWith({ + expect(finishPageView).toHaveBeenCalledTimes(1); + expect(finishPageView).toHaveBeenCalledWith({ status: "blocked", }); }); @@ -1805,10 +1807,12 @@ describe("Runtime", () => { }); getHistory().push("/blocked-app/blocked-path-1"); await getRuntime().bootstrap(); - expect(addPathToBlackList).toBeCalledWith( + expect(addPathToBlackList).toHaveBeenCalledWith( "/blocked-app/blocked-path-1/:subPath" ); - expect(addPathToBlackList).toBeCalledWith("/blocked-app/blocked-path-2"); + expect(addPathToBlackList).toHaveBeenCalledWith( + "/blocked-app/blocked-path-2" + ); }); test("failed to bootstrap", async () => { @@ -1892,7 +1896,7 @@ describe("Runtime", () => { />, ] `); - expect(window.location.reload).toBeCalled(); + expect(window.location.reload).toHaveBeenCalled(); window.location = originalLocation; }); @@ -1915,8 +1919,8 @@ describe("Runtime", () => { expect(document.title).toBe("Hi there"); getRuntime().applyPageTitle(""); expect(document.title).toBe("Hi there"); - expect(finishPageView).toBeCalledTimes(1); - expect(finishPageView).toBeCalledWith({ + expect(finishPageView).toHaveBeenCalledTimes(1); + expect(finishPageView).toHaveBeenCalledWith({ pageTitle: "DevOps 管理专家", path: "/app-b", status: "ok", @@ -1933,9 +1937,9 @@ describe("Runtime", () => { createRuntime().initialize(getBootstrapData()); getHistory().push("/app-b/unauthenticated"); await getRuntime().bootstrap(); - expect(myUnauthenticatedProvider).toBeCalledTimes(1); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith("Router failed:", error); + expect(myUnauthenticatedProvider).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith("Router failed:", error); expect(getHistory().location.pathname).toBe("/auth/login"); }); @@ -1946,9 +1950,9 @@ describe("Runtime", () => { createRuntime().initialize(getBootstrapData()); getHistory().push("/app-b/aborted"); await getRuntime().bootstrap(); - expect(myAbortProvider).toBeCalledTimes(1); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith("Router failed:", error); + expect(myAbortProvider).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith("Router failed:", error); expect(document.body.children).toMatchInlineSnapshot(` HTMLCollection [
{ return { noAuthGuardLoginPath: "/easy-core-console/login" }; }); await getRuntime().bootstrap(); - expect(myUnauthenticatedProvider).toBeCalledTimes(1); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith("Router failed:", error); + expect(myUnauthenticatedProvider).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith("Router failed:", error); expect(getHistory().location.pathname).toBe("/easy-core-console/login"); }); @@ -2021,8 +2025,8 @@ describe("Runtime", () => { />, ] `); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( 'Infinite redirect detected: from "/app-a/r2" to "/app-a/r1"' ); expect(getHistory().location.pathname).toBe("/app-a/r2"); @@ -2039,7 +2043,7 @@ describe("Runtime", () => { ], }); await runtime.loadBricks(["test.my-brick"]); - expect(loadBricksImperatively).toBeCalledWith( + expect(loadBricksImperatively).toHaveBeenCalledWith( ["test.my-brick"], [ { @@ -2135,7 +2139,7 @@ describe("Runtime", () => { ], }); await runtime.loadBricks(["eo-antd-icon"]); - expect(loadBricksImperatively).toBeCalledWith( + expect(loadBricksImperatively).toHaveBeenCalledWith( ["eo-antd-icon"], [ { diff --git a/packages/runtime/src/internal/bindListeners.spec.ts b/packages/runtime/src/internal/bindListeners.spec.ts index 155626ee4e..bd198f5b7f 100644 --- a/packages/runtime/src/internal/bindListeners.spec.ts +++ b/packages/runtime/src/internal/bindListeners.spec.ts @@ -82,15 +82,15 @@ describe("bindListeners", () => { runtimeContext ); element.click(); - expect(consoleInfo).toBeCalledTimes(1); - expect(consoleInfo).toBeCalledWith(); + expect(consoleInfo).toHaveBeenCalledTimes(1); + expect(consoleInfo).toHaveBeenCalledWith(); }); test("empty events", () => { const element = document.createElement("div"); bindListeners(element, undefined, runtimeContext); element.click(); - expect(consoleInfo).not.toBeCalled(); + expect(consoleInfo).not.toHaveBeenCalled(); }); }); @@ -119,7 +119,7 @@ describe("listenerFactory for history.*", () => { }, runtimeContext )(event); - expect(history.push).toBeCalledWith("ok", undefined); + expect(history.push).toHaveBeenCalledWith("ok", undefined); }); test("history.goBack", () => { @@ -129,7 +129,7 @@ describe("listenerFactory for history.*", () => { }, runtimeContext )(event); - expect(history.goBack).toBeCalledWith(); + expect(history.goBack).toHaveBeenCalledWith(); }); test("history.block", () => { @@ -140,7 +140,7 @@ describe("listenerFactory for history.*", () => { }, runtimeContext )(event); - expect(history.setBlockMessage).toBeCalledWith("ok"); + expect(history.setBlockMessage).toHaveBeenCalledWith("ok"); }); test("history.pushQuery with options", () => { @@ -156,7 +156,7 @@ describe("listenerFactory for history.*", () => { }, runtimeContext )(event); - expect(history.pushQuery).toBeCalledWith( + expect(history.pushQuery).toHaveBeenCalledWith( { status: "ok" }, { notify: false } ); @@ -185,15 +185,15 @@ describe("listenerFactory for history.*", () => { runtimeContext )(event); - expect(history.reload).toBeCalledWith(expect.any(Function)); + expect(history.reload).toHaveBeenCalledWith(expect.any(Function)); (history.reload.mock.calls[0][0] as Function)(false); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith(1, "success", false); expect(consoleInfo).toHaveBeenNthCalledWith(2, "finally", false); (history.reload.mock.calls[0][0] as Function)(true); - expect(consoleInfo).toBeCalledTimes(4); + expect(consoleInfo).toHaveBeenCalledTimes(4); expect(consoleInfo).toHaveBeenNthCalledWith(3, "error", true); expect(consoleInfo).toHaveBeenNthCalledWith(4, "finally", true); }); @@ -215,7 +215,7 @@ describe("listenerFactory for window.*", () => { }, runtimeContext )(event); - expect(windowOpen).toBeCalledWith("/ok", "_self", undefined); + expect(windowOpen).toHaveBeenCalledWith("/ok", "_self", undefined); }); test("window.open with args", () => { @@ -226,7 +226,7 @@ describe("listenerFactory for window.*", () => { }, runtimeContext )(event); - expect(windowOpen).toBeCalledWith("/ok", "_blank", "popup=yes"); + expect(windowOpen).toHaveBeenCalledWith("/ok", "_blank", "popup=yes"); }); }); @@ -252,7 +252,7 @@ describe("listenerFactory for location.*", () => { }, runtimeContext )(event); - expect(window.location.assign).toBeCalledWith("/ok"); + expect(window.location.assign).toHaveBeenCalledWith("/ok"); }); test("location.reload", () => { @@ -262,7 +262,7 @@ describe("listenerFactory for location.*", () => { }, runtimeContext )(event); - expect(window.location.reload).toBeCalledWith(); + expect(window.location.reload).toHaveBeenCalledWith(); }); }); @@ -333,7 +333,7 @@ describe("listenerFactory for message.*", () => { }, runtimeContext )(event); - expect(window.alert).toBeCalledWith("ok"); + expect(window.alert).toHaveBeenCalledWith("ok"); }); }); @@ -580,7 +580,7 @@ describe("listenerFactory for theme.*", () => { }, runtimeContext )(event); - expect(mockApplyTheme).toBeCalledWith("dark"); + expect(mockApplyTheme).toHaveBeenCalledWith("dark"); }); test("theme.setLightTheme", () => { @@ -590,7 +590,7 @@ describe("listenerFactory for theme.*", () => { }, runtimeContext )(event); - expect(mockApplyTheme).toBeCalledWith("light"); + expect(mockApplyTheme).toHaveBeenCalledWith("light"); }); test("theme.setTheme", () => { @@ -601,7 +601,7 @@ describe("listenerFactory for theme.*", () => { }, runtimeContext )(event); - expect(mockApplyTheme).toBeCalledWith("dark-v2"); + expect(mockApplyTheme).toHaveBeenCalledWith("dark-v2"); }); }); @@ -620,7 +620,7 @@ describe("listenerFactory for mode.*", () => { }, runtimeContext )(event); - expect(mockApplyMode).toBeCalledWith("dashboard"); + expect(mockApplyMode).toHaveBeenCalledWith("dashboard"); }); test("mode.setDefaultMode", () => { @@ -630,7 +630,7 @@ describe("listenerFactory for mode.*", () => { }, runtimeContext )(event); - expect(mockApplyMode).toBeCalledWith("default"); + expect(mockApplyMode).toHaveBeenCalledWith("default"); }); }); @@ -649,7 +649,7 @@ describe("listenerFactory for handleHttpError", () => { }, runtimeContext )(event); - expect(mockHandleHttpError).toBeCalledWith("ok"); + expect(mockHandleHttpError).toHaveBeenCalledWith("ok"); }); }); @@ -663,7 +663,7 @@ describe("listenerFactory for event.*", () => { }, runtimeContext )(event); - expect(event.preventDefault).toBeCalledWith(); + expect(event.preventDefault).toHaveBeenCalledWith(); }); test("event.stopPropagation", () => { @@ -675,7 +675,7 @@ describe("listenerFactory for event.*", () => { }, runtimeContext )(event); - expect(event.stopPropagation).toBeCalledWith(); + expect(event.stopPropagation).toHaveBeenCalledWith(); }); }); @@ -699,8 +699,8 @@ describe("listenerFactory for console.*", () => { }, runtimeContext )(event); - expect(consoleLog).toBeCalledTimes(1); - expect(consoleLog).toBeCalledWith("ok"); + expect(consoleLog).toHaveBeenCalledTimes(1); + expect(consoleLog).toHaveBeenCalledWith("ok"); }); test("console.warn with no args", () => { @@ -710,7 +710,7 @@ describe("listenerFactory for console.*", () => { }, runtimeContext )(event); - expect(consoleWarn).toBeCalledWith(event); + expect(consoleWarn).toHaveBeenCalledWith(event); }); test("console.error with falsy if", () => { @@ -721,7 +721,7 @@ describe("listenerFactory for console.*", () => { }, runtimeContext )(event); - expect(consoleError).not.toBeCalled(); + expect(consoleError).not.toHaveBeenCalled(); }); test("console.error with truthy if", () => { @@ -733,7 +733,7 @@ describe("listenerFactory for console.*", () => { }, runtimeContext )(event); - expect(consoleError).toBeCalledWith(); + expect(consoleError).toHaveBeenCalledWith(); }); test("window.open", () => { @@ -744,7 +744,7 @@ describe("listenerFactory for console.*", () => { }, runtimeContext )(event); - expect(windowOpen).toBeCalledWith("/ok", "_self", undefined); + expect(windowOpen).toHaveBeenCalledWith("/ok", "_self", undefined); }); test("window.open with args", () => { @@ -755,7 +755,7 @@ describe("listenerFactory for console.*", () => { }, runtimeContext )(event); - expect(windowOpen).toBeCalledWith("/ok", "_blank", "popup=yes"); + expect(windowOpen).toHaveBeenCalledWith("/ok", "_blank", "popup=yes"); }); test("window.postMessage without origin", () => { @@ -766,7 +766,7 @@ describe("listenerFactory for console.*", () => { }, runtimeContext )(event); - expect(windowPostMessage).toBeCalledWith( + expect(windowPostMessage).toHaveBeenCalledWith( { channel: "test-1", detail: "ok" }, "http://localhost" ); @@ -783,7 +783,7 @@ describe("listenerFactory for console.*", () => { }, runtimeContext )(event); - expect(windowPostMessage).toBeCalledWith( + expect(windowPostMessage).toHaveBeenCalledWith( { channel: "test-2", detail: "ok" }, "http://localhost" ); @@ -802,7 +802,7 @@ describe("listenerFactory for console.*", () => { }, runtimeContext )(event); - expect(parentPostMessage).toBeCalledWith({ + expect(parentPostMessage).toHaveBeenCalledWith({ channel: "test-2", detail: "ok", }); @@ -1017,7 +1017,7 @@ describe("listenerFactory for calling brick methods", () => { runtimeContext, brick as any )(event); - expect(brick.element.callMe).toBeCalledWith(event); + expect(brick.element.callMe).toHaveBeenCalledWith(event); }); test("Callback error", async () => { @@ -1056,15 +1056,15 @@ describe("listenerFactory for calling brick methods", () => { runtimeContext, brick as any )(event); - expect(brick.element.callMe).toBeCalledWith("ok"); - expect(brick.element.callbackSuccess).not.toBeCalled(); - expect(brick.element.callbackError).not.toBeCalled(); - expect(brick.element.callbackFinally).not.toBeCalled(); + expect(brick.element.callMe).toHaveBeenCalledWith("ok"); + expect(brick.element.callbackSuccess).not.toHaveBeenCalled(); + expect(brick.element.callbackError).not.toHaveBeenCalled(); + expect(brick.element.callbackFinally).not.toHaveBeenCalled(); await (global as any).flushPromises(); - expect(brick.element.callbackSuccess).not.toBeCalled(); - expect(brick.element.callbackError).toBeCalledWith(error); - expect(brick.element.callbackFinally).toBeCalledWith(null); + expect(brick.element.callbackSuccess).not.toHaveBeenCalled(); + expect(brick.element.callbackError).toHaveBeenCalledWith(error); + expect(brick.element.callbackFinally).toHaveBeenCalledWith(null); }); test("Calling undefined method", async () => { @@ -1089,8 +1089,8 @@ describe("listenerFactory for calling brick methods", () => { await (global as any).flushPromises(); - expect(consoleInfo).toBeCalledTimes(1); - expect(consoleInfo).toBeCalledWith( + expect(consoleInfo).toHaveBeenCalledTimes(1); + expect(consoleInfo).toHaveBeenCalledWith( new Error("target
has no method: callMe") ); }); @@ -1132,16 +1132,16 @@ describe("listenerFactory for useProvider", () => { brick as any )(event); - expect(brick.element.callbackSuccess).not.toBeCalled(); - expect(brick.element.callbackError).not.toBeCalled(); - expect(brick.element.callbackFinally).not.toBeCalled(); + expect(brick.element.callbackSuccess).not.toHaveBeenCalled(); + expect(brick.element.callbackError).not.toHaveBeenCalled(); + expect(brick.element.callbackFinally).not.toHaveBeenCalled(); await new Promise((resolve) => setTimeout(resolve, 0)); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); await new Promise((resolve) => setTimeout(resolve, 100)); - expect(brick.element.callbackSuccess).toBeCalledWith("resolved"); - expect(brick.element.callbackError).not.toBeCalled(); - expect(brick.element.callbackFinally).toBeCalledWith(null); + expect(brick.element.callbackSuccess).toHaveBeenCalledWith("resolved"); + expect(brick.element.callbackError).not.toHaveBeenCalled(); + expect(brick.element.callbackFinally).toHaveBeenCalledWith(null); }); test("useProvider with saveAs", async () => { @@ -1179,17 +1179,17 @@ describe("listenerFactory for useProvider", () => { brick as any )(event); - expect(brick.element.callbackSuccess).not.toBeCalled(); - expect(brick.element.callbackError).not.toBeCalled(); - expect(brick.element.callbackFinally).not.toBeCalled(); + expect(brick.element.callbackSuccess).not.toHaveBeenCalled(); + expect(brick.element.callbackError).not.toHaveBeenCalled(); + expect(brick.element.callbackFinally).not.toHaveBeenCalled(); await new Promise((resolve) => setTimeout(resolve, 0)); - expect(myTimeoutProvider).not.toBeCalled(); - expect(saveAs).toBeCalledTimes(1); + expect(myTimeoutProvider).not.toHaveBeenCalled(); + expect(saveAs).toHaveBeenCalledTimes(1); await new Promise((resolve) => setTimeout(resolve, 100)); - expect(brick.element.callbackSuccess).toBeCalledWith("saved"); - expect(brick.element.callbackError).not.toBeCalled(); - expect(brick.element.callbackFinally).toBeCalledWith(null); + expect(brick.element.callbackSuccess).toHaveBeenCalledWith("saved"); + expect(brick.element.callbackError).not.toHaveBeenCalled(); + expect(brick.element.callbackFinally).toHaveBeenCalledWith(null); }); test("useProvider with poll", async () => { @@ -1206,8 +1206,8 @@ describe("listenerFactory for useProvider", () => { )(event); await new Promise((resolve) => setTimeout(resolve, 0)); - expect(startPoll).toBeCalledTimes(1); - expect(myTimeoutProvider).toBeCalledTimes(0); + expect(startPoll).toHaveBeenCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(0); }); test("useProvider with poll not enabled", async () => { @@ -1224,8 +1224,8 @@ describe("listenerFactory for useProvider", () => { )(event); await new Promise((resolve) => setTimeout(resolve, 0)); - expect(startPoll).not.toBeCalled(); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(startPoll).not.toHaveBeenCalled(); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); }); test("useProvider with sse stream", async () => { @@ -1242,8 +1242,8 @@ describe("listenerFactory for useProvider", () => { )(event); await new Promise((resolve) => setTimeout(resolve, 0)); - expect(startSSEStream).toBeCalledTimes(1); - expect(myTimeoutProvider).toBeCalledTimes(0); + expect(startSSEStream).toHaveBeenCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(0); }); test("useProvider with sse no stream", async () => { @@ -1260,8 +1260,8 @@ describe("listenerFactory for useProvider", () => { )(event); await new Promise((resolve) => setTimeout(resolve, 0)); - expect(startSSEStream).not.toBeCalled(); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(startSSEStream).not.toHaveBeenCalled(); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); }); }); @@ -1281,7 +1281,7 @@ describe("listenerFactory for unknown handlers", () => { }, runtimeContext )(event); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledWith( "unknown event listener action:", "oops" ); @@ -1294,7 +1294,7 @@ describe("listenerFactory for unknown handlers", () => { } as any, runtimeContext )(event); - expect(consoleError).toBeCalledWith("unknown event handler:", { + expect(consoleError).toHaveBeenCalledWith("unknown event handler:", { provider: "oops", }); }); @@ -1434,15 +1434,15 @@ describe("if/else condition", () => { )(event); await new Promise((resolve) => setTimeout(resolve, 10)); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); await new Promise((resolve) => setTimeout(resolve, 10)); - expect(myTimeoutProvider).toBeCalledTimes(2); - expect(consoleLog).toBeCalledTimes(6); + expect(myTimeoutProvider).toHaveBeenCalledTimes(2); + expect(consoleLog).toHaveBeenCalledTimes(6); await new Promise((resolve) => setTimeout(resolve, 10)); - expect(myTimeoutProvider).toBeCalledTimes(2); - expect(consoleLog).toBeCalledTimes(7); + expect(myTimeoutProvider).toHaveBeenCalledTimes(2); + expect(consoleLog).toHaveBeenCalledTimes(7); expect(consoleLog).toHaveBeenNthCalledWith(1, "进入 then 逻辑", "resolved"); @@ -1495,10 +1495,10 @@ describe("listenerFactory for message dispatcher", () => { }, runtimeContext )(event); - expect(subscribe).toBeCalledWith("my-channel"); + expect(subscribe).toHaveBeenCalledWith("my-channel"); await (global as any).flushPromises(); - expect(consoleInfo).toBeCalledWith("sub success", "ok"); - expect(consoleInfo).toBeCalledWith("sub finally"); + expect(consoleInfo).toHaveBeenCalledWith("sub success", "ok"); + expect(consoleInfo).toHaveBeenCalledWith("sub finally"); subscribe.mockReset(); }); @@ -1525,10 +1525,10 @@ describe("listenerFactory for message dispatcher", () => { }, runtimeContext )(event); - expect(unsubscribe).toBeCalledWith("my-channel"); + expect(unsubscribe).toHaveBeenCalledWith("my-channel"); await (global as any).flushPromises(); - expect(consoleInfo).toBeCalledWith("unsub error", "failed"); - expect(consoleInfo).toBeCalledWith("unsub finally"); + expect(consoleInfo).toHaveBeenCalledWith("unsub error", "failed"); + expect(consoleInfo).toHaveBeenCalledWith("unsub finally"); unsubscribe.mockReset(); }); @@ -1541,7 +1541,7 @@ describe("listenerFactory for message dispatcher", () => { }, runtimeContext )(event); - expect(unsubscribe).toBeCalledWith("my-channel-2"); + expect(unsubscribe).toHaveBeenCalledWith("my-channel-2"); unsubscribe.mockReset(); }); }); diff --git a/packages/runtime/src/internal/compute/evaluate.spec.ts b/packages/runtime/src/internal/compute/evaluate.spec.ts index ea10ff2329..dccba4af01 100644 --- a/packages/runtime/src/internal/compute/evaluate.spec.ts +++ b/packages/runtime/src/internal/compute/evaluate.spec.ts @@ -362,7 +362,7 @@ describe("evaluate", () => { ).toThrowErrorMatchingInlineSnapshot( `"ITEM is not defined, in "<% ITEM %>""` ); - expect(consoleError).toBeCalledTimes(1); + expect(consoleError).toHaveBeenCalledTimes(1); }); test("Access QUERY but no query in context", () => { diff --git a/packages/runtime/src/internal/compute/getStorageItem.spec.ts b/packages/runtime/src/internal/compute/getStorageItem.spec.ts index a56a0d7ae5..3183d7233c 100644 --- a/packages/runtime/src/internal/compute/getStorageItem.spec.ts +++ b/packages/runtime/src/internal/compute/getStorageItem.spec.ts @@ -9,14 +9,14 @@ describe("storage", () => { test("localStorage.getItem should work", () => { const getItem = getStorageItem("local"); const value = getItem("visit-history"); - expect(localStorage.getItem).toBeCalledWith("visit-history"); + expect(localStorage.getItem).toHaveBeenCalledWith("visit-history"); expect(value).toEqual({ id: "mockId" }); }); test("sessionStorage.getItem should work", () => { const getItem = getStorageItem("session"); const value = getItem("visit-history"); - expect(localStorage.getItem).toBeCalledWith("visit-history"); + expect(localStorage.getItem).toHaveBeenCalledWith("visit-history"); expect(value).toEqual({ id: "mockId" }); }); }); diff --git a/packages/runtime/src/internal/data/DataStore.spec.ts b/packages/runtime/src/internal/data/DataStore.spec.ts index fca9fb9769..c24b7ccfe0 100644 --- a/packages/runtime/src/internal/data/DataStore.spec.ts +++ b/packages/runtime/src/internal/data/DataStore.spec.ts @@ -366,14 +366,16 @@ describe("DataStore", () => { amount: 42, }); - expect(consoleWarn).not.toBeCalled(); + expect(consoleWarn).not.toHaveBeenCalled(); consoleWarn.mockReturnValueOnce(); ctxStore.updateValue("primitive", { amount: 42 }, "assign"); expect(ctxStore.getValue("primitive")).toEqual({ amount: 42 }); - expect(consoleWarn).toBeCalledTimes(1); - expect(consoleWarn).toBeCalledWith(expect.stringContaining("Non-object")); + expect(consoleWarn).toHaveBeenCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledWith( + expect.stringContaining("Non-object") + ); - expect(mockCallRealTimeDataInspectHooks).toBeCalledTimes(2); + expect(mockCallRealTimeDataInspectHooks).toHaveBeenCalledTimes(2); }); test("state and onChange", async () => { @@ -444,7 +446,7 @@ describe("DataStore", () => { expect(stateStore.getValue("a")).toBe(2); expect(stateStore.getValue("b")).toBe(42); - expect(mockCallRealTimeDataInspectHooks).toBeCalledTimes(2); + expect(mockCallRealTimeDataInspectHooks).toHaveBeenCalledTimes(2); expect(mockCallRealTimeDataInspectHooks).toHaveBeenNthCalledWith(1, { changeType: "update", tplStateStoreId, @@ -504,7 +506,7 @@ describe("DataStore", () => { expect(ctxStore.getValue("lazyValue")).toBe("initial"); expect(ctxStore.getValue("processedData")).toBe("processed: initial"); expect(ctxStore.getValue("asyncValue")).toBe("async initial"); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); ctxStore.mountAsyncData(); await new Promise((resolve) => { @@ -537,8 +539,8 @@ describe("DataStore", () => { await (global as any).flushPromises(); // Will not load again if it is already LOADING. - expect(myTimeoutProvider).toBeCalledTimes(2); - expect(consoleInfo).not.toBeCalled(); + expect(myTimeoutProvider).toHaveBeenCalledTimes(2); + expect(consoleInfo).not.toHaveBeenCalled(); await new Promise((resolve) => { setTimeout(resolve, 100); }); @@ -547,7 +549,7 @@ describe("DataStore", () => { "processed: lazily updated" ); - expect(consoleInfo).toBeCalledTimes(4); + expect(consoleInfo).toHaveBeenCalledTimes(4); expect(consoleInfo).toHaveBeenNthCalledWith(1, "[1] success", { value: "lazily updated", }); @@ -569,8 +571,8 @@ describe("DataStore", () => { }); await (global as any).flushPromises(); // Will not load again if it is already LOADED. - expect(myTimeoutProvider).toBeCalledTimes(2); - expect(consoleInfo).toBeCalledTimes(6); + expect(myTimeoutProvider).toHaveBeenCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(6); expect(consoleInfo).toHaveBeenNthCalledWith(5, "[3] success", { value: "lazily updated", }); @@ -609,14 +611,14 @@ describe("DataStore", () => { ); await ctxStore.waitForAll(); expect(ctxStore.getValue("conditionalValue")).toBe("from fallback"); - expect(myTimeoutProvider).not.toBeCalled(); + expect(myTimeoutProvider).not.toHaveBeenCalled(); ctxStore.updateValue("fallback", "fallback updated", "replace"); expect(ctxStore.getValue("conditionalValue")).toBe("fallback updated"); ctxStore.updateValue("remote", true, "replace"); await (global as any).flushPromises(); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); await new Promise((resolve) => { setTimeout(resolve, 1); }); @@ -657,7 +659,7 @@ describe("DataStore", () => { ); await ctxStore.waitForAll(); expect(ctxStore.getValue("conditionalValue")).toBe("from remote"); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); ctxStore.updateValue("fallback", "fallback updated", "replace"); expect(ctxStore.getValue("conditionalValue")).toBe("from remote"); @@ -667,7 +669,7 @@ describe("DataStore", () => { // Await and make sure resolve is ignored. await (global as any).flushPromises(); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); await new Promise((resolve) => { setTimeout(resolve, 1); }); @@ -681,7 +683,7 @@ describe("DataStore", () => { // Resume remote again. ctxStore.updateValue("remote", true, "replace"); await (global as any).flushPromises(); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); await new Promise((resolve) => { setTimeout(resolve, 1); }); @@ -733,8 +735,8 @@ describe("DataStore", () => { setTimeout(resolve, 10); }); - expect(consoleInfo).toBeCalledTimes(2); - expect(handleHttpError).not.toBeCalled(); + expect(consoleInfo).toHaveBeenCalledTimes(2); + expect(handleHttpError).not.toHaveBeenCalled(); ctxStore.updateValue("willFail2", undefined, "load", { finally: { @@ -747,8 +749,8 @@ describe("DataStore", () => { setTimeout(resolve, 10); }); - expect(consoleInfo).toBeCalledTimes(3); - expect(handleHttpError).toBeCalledTimes(1); + expect(consoleInfo).toHaveBeenCalledTimes(3); + expect(handleHttpError).toHaveBeenCalledTimes(1); consoleInfo.mockReset(); }); @@ -783,7 +785,7 @@ describe("DataStore", () => { setTimeout(resolve, 10); }); - expect(handleHttpError).not.toBeCalled(); + expect(handleHttpError).not.toHaveBeenCalled(); }); test("load context without resolve", async () => { @@ -895,7 +897,7 @@ describe("batchUpdate should work", () => { expect(stateStore.getValue("a")).toBe(2); expect(stateStore.getValue("c")).toBe(4); expect(stateStore.getValue("d")).toBe(5); - expect(consoleInfo).toBeCalledTimes(3); + expect(consoleInfo).toHaveBeenCalledTimes(3); expect(consoleInfo).toHaveBeenNthCalledWith(1, "a change", 2); expect(consoleInfo).toHaveBeenNthCalledWith(2, "c change", 4); @@ -927,7 +929,7 @@ describe("batchUpdate should work", () => { expect(stateStore.getValue("b")).toBe(3); expect(stateStore.getValue("c")).toBe(5); expect(stateStore.getValue("d")).toBe(6); - expect(consoleInfo).toBeCalledTimes(4); + expect(consoleInfo).toHaveBeenCalledTimes(4); expect(consoleInfo).toHaveBeenNthCalledWith(1, "a change", 2); expect(consoleInfo).toHaveBeenNthCalledWith(2, "b change", 3); @@ -959,7 +961,7 @@ describe("batchUpdate should work", () => { expect(stateStore.getValue("a")).toBe(2); expect(stateStore.getValue("c")).toBe(0); expect(stateStore.getValue("d")).toBe(1); - expect(consoleInfo).toBeCalledTimes(3); + expect(consoleInfo).toHaveBeenCalledTimes(3); expect(consoleInfo).toHaveBeenNthCalledWith(1, "a change", 2); expect(consoleInfo).toHaveBeenNthCalledWith(2, "c change", 0); @@ -990,7 +992,7 @@ describe("batchUpdate should work", () => { expect(stateStore.getValue("a")).toBe(1); expect(stateStore.getValue("c")).toBe(0); expect(stateStore.getValue("d")).toBe(1); - expect(consoleInfo).toBeCalledTimes(3); + expect(consoleInfo).toHaveBeenCalledTimes(3); expect(consoleInfo).toHaveBeenNthCalledWith(1, "c change", 0); expect(consoleInfo).toHaveBeenNthCalledWith(2, "a change", 1); @@ -1026,7 +1028,7 @@ describe("batchUpdate should work", () => { expect(stateStore.getValue("b")).toBe(20); expect(stateStore.getValue("c")).toBe(100); expect(stateStore.getValue("d")).toBe(101); - expect(consoleInfo).toBeCalledTimes(4); + expect(consoleInfo).toHaveBeenCalledTimes(4); expect(consoleInfo).toHaveBeenNthCalledWith(1, "a change", 10); expect(consoleInfo).toHaveBeenNthCalledWith(2, "b change", 20); @@ -1053,7 +1055,7 @@ describe("batchUpdate should work", () => { expect(stateStore.getValue("c")).toBe(20); expect(stateStore.getValue("d")).toBe(21); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith(1, "c change", 20); expect(consoleInfo).toHaveBeenNthCalledWith(2, "d change", 21); @@ -1082,7 +1084,7 @@ describe("batchUpdate should work", () => { expect(stateStore.getValue("d")).toBe(10); expect(stateStore.getValue("c")).toBe(20); - expect(consoleInfo).toBeCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledTimes(2); expect(consoleInfo).toHaveBeenNthCalledWith(1, "d change", 10); expect(consoleInfo).toHaveBeenNthCalledWith(2, "c change", 20); @@ -1220,7 +1222,7 @@ describe("batchUpdate with resolve should work", () => { "replace", argsFactory ); - expect(consoleInfo).toBeCalledTimes(3); + expect(consoleInfo).toHaveBeenCalledTimes(3); expect(consoleInfo).toHaveBeenNthCalledWith(1, "a change", 2); expect(consoleInfo).toHaveBeenNthCalledWith(2, "c change", 4); @@ -1232,7 +1234,7 @@ describe("batchUpdate with resolve should work", () => { }); // `e` should only be changed after it's been resolved. expect(stateStore.getValue("e")).toBe(2); - expect(consoleInfo).toBeCalledTimes(4); + expect(consoleInfo).toHaveBeenCalledTimes(4); expect(consoleInfo).toHaveBeenNthCalledWith(4, "e change", 2); consoleInfo.mockReset(); diff --git a/packages/runtime/src/internal/data/resolveData.spec.ts b/packages/runtime/src/internal/data/resolveData.spec.ts index cbfe31e18d..9f9f3acec8 100644 --- a/packages/runtime/src/internal/data/resolveData.spec.ts +++ b/packages/runtime/src/internal/data/resolveData.spec.ts @@ -60,7 +60,7 @@ describe("resolveData", () => { runtimeContext ); expect(result).toEqual("a"); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); ctxStore.updateValue("current", "b", "replace"); const result2 = await resolveData( @@ -72,7 +72,7 @@ describe("resolveData", () => { ); expect(result2).toEqual("b"); // The actual args are changed, so the cache doesn't hit. - expect(myTimeoutProvider).toBeCalledTimes(2); + expect(myTimeoutProvider).toHaveBeenCalledTimes(2); const result3 = await resolveData( { @@ -84,7 +84,7 @@ describe("resolveData", () => { ); expect(result3).toEqual("b"); // The actual args are not changed, so the cache hits. - expect(myTimeoutProvider).toBeCalledTimes(2); + expect(myTimeoutProvider).toHaveBeenCalledTimes(2); }); test("cache with circular data in args", async () => { @@ -113,7 +113,7 @@ describe("resolveData", () => { runtimeContext ); expect(result).toHaveProperty("value", "Circular"); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); const result2 = await resolveData( { @@ -123,7 +123,7 @@ describe("resolveData", () => { runtimeContext ); expect(result2).toHaveProperty("value", "Circular"); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); }); test("handle reject by transform", async () => { @@ -186,8 +186,8 @@ describe("resolveData", () => { runtimeContext ); expect(result).toEqual("cool"); - expect(consoleWarn).toBeCalledTimes(1); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledTimes(1); + expect(consoleWarn).toHaveBeenCalledWith( expect.stringContaining("resolve.field") ); }); @@ -206,7 +206,7 @@ describe("resolveData", () => { } ); expect(result1).toEqual("should-not-cache"); - expect(myTimeoutProvider).toBeCalledTimes(1); + expect(myTimeoutProvider).toHaveBeenCalledTimes(1); const result2 = await resolveData( { @@ -219,6 +219,6 @@ describe("resolveData", () => { } ); expect(result2).toEqual("should-not-cache"); - expect(myTimeoutProvider).toBeCalledTimes(2); + expect(myTimeoutProvider).toHaveBeenCalledTimes(2); }); }); diff --git a/packages/runtime/src/internal/data/resolveDataStore.spec.ts b/packages/runtime/src/internal/data/resolveDataStore.spec.ts index 832417681f..ec5c3b494c 100644 --- a/packages/runtime/src/internal/data/resolveDataStore.spec.ts +++ b/packages/runtime/src/internal/data/resolveDataStore.spec.ts @@ -160,7 +160,7 @@ describe("resolveDataStore", () => { } `); - expect(fnRequest).toBeCalledTimes(3); + expect(fnRequest).toHaveBeenCalledTimes(3); expect(fnRequest).toHaveBeenNthCalledWith(1, "a", "willBeResolved"); expect(fnRequest).toHaveBeenNthCalledWith(2, "e", "willBeResolved"); expect(fnRequest).toHaveBeenNthCalledWith(3, "x", "willBeResolved"); @@ -171,7 +171,7 @@ describe("resolveDataStore", () => { await (global as any).flushPromises(); expect(getDoneTask()).toEqual(["a", "x"]); - expect(fnRequest).toBeCalledTimes(5); + expect(fnRequest).toHaveBeenCalledTimes(5); expect(fnRequest).toHaveBeenNthCalledWith(4, "b", "willBeResolved"); expect(fnRequest).toHaveBeenNthCalledWith(5, "c", "willBeResolved"); @@ -179,14 +179,14 @@ describe("resolveDataStore", () => { await (global as any).flushPromises(); expect(getDoneTask()).toEqual(["a", "e", "x"]); - expect(fnRequest).toBeCalledTimes(6); + expect(fnRequest).toHaveBeenCalledTimes(6); expect(fnRequest).toHaveBeenNthCalledWith(6, "f", "willBeResolved"); jest.advanceTimersByTime(150); await (global as any).flushPromises(); expect(getDoneTask()).toEqual(["a", "b", "c", "e", "f", "x"]); - expect(fnRequest).toBeCalledTimes(7); + expect(fnRequest).toHaveBeenCalledTimes(7); expect(fnRequest).toHaveBeenNthCalledWith(7, "d", "willBeResolved"); jest.advanceTimersByTime(100); @@ -251,21 +251,21 @@ describe("resolveDataStore", () => { } `); - expect(fnRequest).toBeCalledTimes(1); + expect(fnRequest).toHaveBeenCalledTimes(1); expect(fnRequest).toHaveBeenNthCalledWith(1, "a", "willBeResolved"); jest.advanceTimersByTime(100); await (global as any).flushPromises(); expect(getDoneTask()).toEqual(["a"]); - expect(fnRequest).toBeCalledTimes(2); + expect(fnRequest).toHaveBeenCalledTimes(2); expect(fnRequest).toHaveBeenNthCalledWith(2, "b", "willBeResolved"); jest.advanceTimersByTime(100); await (global as any).flushPromises(); expect(getDoneTask()).toEqual(["a", "b"]); - expect(fnRequest).toBeCalledTimes(3); + expect(fnRequest).toHaveBeenCalledTimes(3); expect(fnRequest).toHaveBeenNthCalledWith(3, "c", "willBeResolved"); jest.advanceTimersByTime(100); @@ -320,7 +320,7 @@ describe("resolveDataStore", () => { await (global as any).flushPromises(); expect(getDoneTask()).toEqual(["_", "a", "b"]); - expect(fnRequest).toBeCalledTimes(0); + expect(fnRequest).toHaveBeenCalledTimes(0); }); test("should work when a related context is ignored", async () => { diff --git a/packages/runtime/src/internal/devtools.spec.ts b/packages/runtime/src/internal/devtools.spec.ts index 48845e2a36..e25d281eed 100644 --- a/packages/runtime/src/internal/devtools.spec.ts +++ b/packages/runtime/src/internal/devtools.spec.ts @@ -44,7 +44,7 @@ describe("devtools", () => { devtoolsHookEmit("evaluation", "02"); jest.advanceTimersByTime(1); - expect(emit).toBeCalledTimes(1); + expect(emit).toHaveBeenCalledTimes(1); // Toggle active window.dispatchEvent( @@ -64,6 +64,6 @@ describe("devtools", () => { devtoolsHookEmit("evaluation", "03"); jest.advanceTimersByTime(1); - expect(emit).toBeCalledTimes(1); + expect(emit).toHaveBeenCalledTimes(1); }); }); diff --git a/packages/runtime/src/internal/hasInstalledApp.spec.ts b/packages/runtime/src/internal/hasInstalledApp.spec.ts index a04bd89bcf..0a6ab2a8c9 100644 --- a/packages/runtime/src/internal/hasInstalledApp.spec.ts +++ b/packages/runtime/src/internal/hasInstalledApp.spec.ts @@ -53,7 +53,7 @@ describe("hasInstalledApp", () => { test("Invalid match version", () => { consoleError.mockReturnValueOnce(); expect(hasInstalledApp("app-b", "^1.2.3")).toBe(false); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith(expect.any(TypeError)); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith(expect.any(TypeError)); }); }); diff --git a/packages/runtime/src/internal/historyExtended.spec.ts b/packages/runtime/src/internal/historyExtended.spec.ts index cb62a06c9a..915d12d3fc 100644 --- a/packages/runtime/src/internal/historyExtended.spec.ts +++ b/packages/runtime/src/internal/historyExtended.spec.ts @@ -140,7 +140,7 @@ describe("historyExtended", () => { (callerArgs, calleeArgs) => { ext = historyExtended(history); ext.pushQuery(...callerArgs); - expect(history.push).toBeCalledWith(...calleeArgs); + expect(history.push).toHaveBeenCalledWith(...calleeArgs); } ); @@ -169,7 +169,7 @@ describe("historyExtended", () => { (callerArgs, calleeArgs) => { ext = historyExtended(history); ext.replaceQuery(...callerArgs); - expect(history.replace).toBeCalledWith(...calleeArgs); + expect(history.replace).toHaveBeenCalledWith(...calleeArgs); } ); @@ -220,7 +220,7 @@ describe("historyExtended", () => { (callerArgs, loc) => { ext = historyExtended(history); ext.pushAnchor(...callerArgs); - expect(history.push).toBeCalledWith(loc, undefined); + expect(history.push).toHaveBeenCalledWith(loc, undefined); } ); @@ -229,7 +229,7 @@ describe("historyExtended", () => { ext = historyExtended(history); const callback = jest.fn(); ext.reload(callback); - expect(history.replace).toBeCalledWith( + expect(history.replace).toHaveBeenCalledWith( { pathname: "/a", search: "?b=1", @@ -243,7 +243,7 @@ describe("historyExtended", () => { }, undefined ); - expect(callback).toBeCalledWith(false); + expect(callback).toHaveBeenCalledWith(false); }); it("should work for callback of history.push", () => { @@ -251,16 +251,16 @@ describe("historyExtended", () => { ext = historyExtended(history); const callback = jest.fn(); ext.push("/a", undefined, callback); - expect(history.push).toBeCalledWith("/a", undefined); - expect(callback).toBeCalledWith(false); + expect(history.push).toHaveBeenCalledWith("/a", undefined); + expect(callback).toHaveBeenCalledWith(false); }); it("should work for callback of history.replace", () => { ext = historyExtended(history); const callback = jest.fn(); ext.replace("/a", { notify: false }, callback); - expect(history.replace).toBeCalledWith("/a", { notify: false }); - expect(callback).toBeCalledWith(false); + expect(history.replace).toHaveBeenCalledWith("/a", { notify: false }); + expect(callback).toHaveBeenCalledWith(false); }); it.each< @@ -296,7 +296,7 @@ describe("historyExtended", () => { mockIsOutsideApp.mockReturnValueOnce(false); ext = historyExtended(history); ext[method](...callerArgs); - expect(history[method]).toBeCalledWith(...calleeArgs); + expect(history[method]).toHaveBeenCalledWith(...calleeArgs); } ); @@ -325,7 +325,7 @@ describe("historyExtended", () => { ext[method](...callerArgs); expect( window.location[method === "push" ? "assign" : "replace"] - ).toBeCalledWith(url); + ).toHaveBeenCalledWith(url); } ); }); @@ -335,6 +335,6 @@ describe("getUserConfirmation", () => { const callback = jest.fn(); jest.spyOn(window, "confirm").mockReturnValueOnce(true); getUserConfirmation("hello", callback); - expect(callback).toBeCalledWith(true); + expect(callback).toHaveBeenCalledWith(true); }); }); diff --git a/packages/runtime/src/internal/matchRoutes.spec.ts b/packages/runtime/src/internal/matchRoutes.spec.ts index 2c72fc1a70..97eddcfa4f 100644 --- a/packages/runtime/src/internal/matchRoutes.spec.ts +++ b/packages/runtime/src/internal/matchRoutes.spec.ts @@ -19,6 +19,9 @@ describe("matchStoryboard", () => { ).rejects.toMatchInlineSnapshot( `[Error: Invalid route with invalid type of path: undefined]` ); - expect(consoleError).toBeCalledWith("Invalid route with invalid path:", {}); + expect(consoleError).toHaveBeenCalledWith( + "Invalid route with invalid path:", + {} + ); }); }); diff --git a/packages/runtime/src/internal/mediaQuery.spec.ts b/packages/runtime/src/internal/mediaQuery.spec.ts index b90a3bbf22..ae2077eff4 100644 --- a/packages/runtime/src/internal/mediaQuery.spec.ts +++ b/packages/runtime/src/internal/mediaQuery.spec.ts @@ -26,7 +26,7 @@ describe("mediaQuery", () => { }); const newMedia = { breakpoint: nextBreakpoint }; expect(getMedia()).toEqual(newMedia); - expect(handler).lastCalledWith( + expect(handler).toHaveBeenLastCalledWith( expect.objectContaining({ detail: newMedia, }) diff --git a/packages/runtime/src/internal/poll.spec.ts b/packages/runtime/src/internal/poll.spec.ts index 9e50ba8bc1..9a7bae523a 100644 --- a/packages/runtime/src/internal/poll.spec.ts +++ b/packages/runtime/src/internal/poll.spec.ts @@ -66,17 +66,17 @@ describe("poll", () => { await (global as any).flushPromises(); expect(progress).toHaveBeenNthCalledWith(1, { loaded: false }); - expect(success).not.toBeCalled(); - expect(finallyCallback).not.toBeCalled(); - expect(dispatchEvent).toBeCalledTimes(1); + expect(success).not.toHaveBeenCalled(); + expect(finallyCallback).not.toHaveBeenCalled(); + expect(dispatchEvent).toHaveBeenCalledTimes(1); jest.advanceTimersByTime(3000); await (global as any).flushPromises(); expect(progress).toHaveBeenNthCalledWith(2, { loaded: true }); - expect(success).toBeCalledWith({ loaded: true }); - expect(finallyCallback).toBeCalled(); - expect(error).not.toBeCalled(); + expect(success).toHaveBeenCalledWith({ loaded: true }); + expect(finallyCallback).toHaveBeenCalled(); + expect(error).not.toHaveBeenCalled(); expect(dispatchEvent).toHaveBeenNthCalledWith( 2, expect.objectContaining({ @@ -111,16 +111,16 @@ describe("poll", () => { jest.advanceTimersByTime(0); await (global as any).flushPromises(); - expect(task).not.toBeCalled(); + expect(task).not.toHaveBeenCalled(); jest.advanceTimersByTime(1000); await (global as any).flushPromises(); - expect(progress).toBeCalledWith({ loaded: true }); - expect(success).toBeCalledWith({ loaded: true }); - expect(error).not.toBeCalled(); - expect(finallyCallback).toBeCalled(); - expect(dispatchEvent).not.toBeCalled(); + expect(progress).toHaveBeenCalledWith({ loaded: true }); + expect(success).toHaveBeenCalledWith({ loaded: true }); + expect(error).not.toHaveBeenCalled(); + expect(finallyCallback).toHaveBeenCalled(); + expect(dispatchEvent).not.toHaveBeenCalled(); }); it("should work if request error", async () => { @@ -150,11 +150,11 @@ describe("poll", () => { jest.advanceTimersByTime(3000); await (global as any).flushPromises(); - expect(success).not.toBeCalled(); - expect(progress).not.toBeCalled(); - expect(finallyCallback).toBeCalled(); - expect(expectPollEnd).not.toBeCalled(); - expect(error).toBeCalledWith(new Error("oops")); + expect(success).not.toHaveBeenCalled(); + expect(progress).not.toHaveBeenCalled(); + expect(finallyCallback).toHaveBeenCalled(); + expect(expectPollEnd).not.toHaveBeenCalled(); + expect(error).toHaveBeenCalledWith(new Error("oops")); }); it("should work if continue on error", async () => { @@ -186,17 +186,17 @@ describe("poll", () => { jest.advanceTimersByTime(0); await (global as any).flushPromises(); - expect(progress).not.toBeCalled(); - expect(success).not.toBeCalled(); - expect(finallyCallback).not.toBeCalled(); - expect(error).toBeCalledWith(new Error("oops")); + expect(progress).not.toHaveBeenCalled(); + expect(success).not.toHaveBeenCalled(); + expect(finallyCallback).not.toHaveBeenCalled(); + expect(error).toHaveBeenCalledWith(new Error("oops")); jest.advanceTimersByTime(3000); await (global as any).flushPromises(); - expect(progress).toBeCalledWith({ loaded: true }); - expect(success).toBeCalledWith({ loaded: true }); - expect(finallyCallback).toBeCalled(); + expect(progress).toHaveBeenCalledWith({ loaded: true }); + expect(success).toHaveBeenCalledWith({ loaded: true }); + expect(finallyCallback).toHaveBeenCalled(); }); it("should clear poll timeout before next timeout function invoked", async () => { @@ -230,11 +230,11 @@ describe("poll", () => { jest.advanceTimersByTime(2000); await (global as any).flushPromises(); - expect(task).toBeCalledTimes(1); - expect(progress).toBeCalledTimes(1); - expect(success).not.toBeCalled(); - expect(error).not.toBeCalled(); - expect(finallyCallback).not.toBeCalled(); + expect(task).toHaveBeenCalledTimes(1); + expect(progress).toHaveBeenCalledTimes(1); + expect(success).not.toHaveBeenCalled(); + expect(error).not.toHaveBeenCalled(); + expect(finallyCallback).not.toHaveBeenCalled(); }); it("should stop processing if router is re-rendered during request", async () => { @@ -268,15 +268,15 @@ describe("poll", () => { ); jest.advanceTimersByTime(0); - expect(task).toBeCalled(); + expect(task).toHaveBeenCalled(); mockApiGetRouterRenderId.mockReturnValueOnce("render-id-2"); await (global as any).flushPromises(); - expect(progress).not.toBeCalled(); - expect(success).not.toBeCalled(); - expect(error).not.toBeCalled(); - expect(finallyCallback).not.toBeCalled(); + expect(progress).not.toHaveBeenCalled(); + expect(success).not.toHaveBeenCalled(); + expect(error).not.toHaveBeenCalled(); + expect(finallyCallback).not.toHaveBeenCalled(); expect(dispatchEvent).toHaveBeenNthCalledWith( 2, expect.objectContaining({ @@ -308,15 +308,15 @@ describe("poll", () => { ); jest.advanceTimersByTime(0); - expect(task).toBeCalled(); + expect(task).toHaveBeenCalled(); mockApiGetRouterRenderId.mockReturnValueOnce("render-id-2"); await (global as any).flushPromises(); - expect(progress).not.toBeCalled(); - expect(success).not.toBeCalled(); - expect(error).not.toBeCalled(); - expect(finallyCallback).not.toBeCalled(); + expect(progress).not.toHaveBeenCalled(); + expect(success).not.toHaveBeenCalled(); + expect(error).not.toHaveBeenCalled(); + expect(finallyCallback).not.toHaveBeenCalled(); }); it("should stop immediately before request", async () => { @@ -353,21 +353,21 @@ describe("poll", () => { ); jest.advanceTimersByTime(0); - expect(task).toBeCalledTimes(1); + expect(task).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); - expect(progress).toBeCalledWith({ loaded: false }); + expect(progress).toHaveBeenCalledWith({ loaded: false }); jest.advanceTimersByTime(500); expectPollStopImmediately.mockReturnValueOnce(true); jest.advanceTimersByTime(500); await (global as any).flushPromises(); - expect(task).toBeCalledTimes(1); - expect(progress).toBeCalledTimes(1); - expect(success).not.toBeCalled(); - expect(error).not.toBeCalled(); - expect(finallyCallback).toBeCalled(); + expect(task).toHaveBeenCalledTimes(1); + expect(progress).toHaveBeenCalledTimes(1); + expect(success).not.toHaveBeenCalled(); + expect(error).not.toHaveBeenCalled(); + expect(finallyCallback).toHaveBeenCalled(); expect(dispatchEvent).toHaveBeenNthCalledWith( 2, expect.objectContaining({ @@ -410,20 +410,20 @@ describe("poll", () => { ); jest.advanceTimersByTime(0); - expect(task).toBeCalledTimes(1); + expect(task).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); - expect(progress).toBeCalledWith({ loaded: false }); + expect(progress).toHaveBeenCalledWith({ loaded: false }); jest.advanceTimersByTime(1000); - expect(task).toBeCalledTimes(2); + expect(task).toHaveBeenCalledTimes(2); expectPollStopImmediately.mockReturnValueOnce(true); await (global as any).flushPromises(); - expect(progress).toBeCalledTimes(1); - expect(success).not.toBeCalled(); - expect(error).not.toBeCalled(); - expect(finallyCallback).toBeCalled(); + expect(progress).toHaveBeenCalledTimes(1); + expect(success).not.toHaveBeenCalled(); + expect(error).not.toHaveBeenCalled(); + expect(finallyCallback).toHaveBeenCalled(); expect(dispatchEvent).toHaveBeenNthCalledWith( 2, expect.objectContaining({ @@ -473,21 +473,21 @@ describe("poll", () => { ); jest.advanceTimersByTime(0); - expect(task).toBeCalledTimes(1); + expect(task).toHaveBeenCalledTimes(1); await (global as any).flushPromises(); - expect(progress).toBeCalledWith({ loaded: true }); + expect(progress).toHaveBeenCalledWith({ loaded: true }); jest.advanceTimersByTime(1000); - expect(task).toBeCalledTimes(2); + expect(task).toHaveBeenCalledTimes(2); ctxStore.updateValue("flag", 1, "replace"); await (global as any).flushPromises(); - expect(progress).toBeCalledTimes(2); - expect(success).toBeCalledTimes(1); - expect(error).not.toBeCalled(); - expect(finallyCallback).toBeCalledTimes(1); + expect(progress).toHaveBeenCalledTimes(2); + expect(success).toHaveBeenCalledTimes(1); + expect(error).not.toHaveBeenCalled(); + expect(finallyCallback).toHaveBeenCalledTimes(1); expect(dispatchEvent).toHaveBeenNthCalledWith( 2, expect.objectContaining({ diff --git a/packages/runtime/src/internal/secret_internals.spec.ts b/packages/runtime/src/internal/secret_internals.spec.ts index fdec7768be..cac7ed5867 100644 --- a/packages/runtime/src/internal/secret_internals.spec.ts +++ b/packages/runtime/src/internal/secret_internals.spec.ts @@ -140,7 +140,7 @@ describe("useBrick", () => { const renderResult = await renderUseBrick(useBrick, "a"); expect(renderResult.tagName).toBe("div"); - expect(consoleInfo).toBeCalledTimes(0); + expect(consoleInfo).toHaveBeenCalledTimes(0); const root = document.createElement("div"); const mountResult = mountUseBrick(renderResult, root); @@ -237,7 +237,7 @@ describe("useBrick", () => { 'please use "properties" instead, check your useBrick:', useBrick.children[0] ); - expect(mockIsStrictMode).toBeCalled(); + expect(mockIsStrictMode).toHaveBeenCalled(); const root = document.createElement("div"); const mountResult = mountUseBrick(renderResult, root); @@ -491,8 +491,8 @@ describe("useBrick", () => { expect((root.firstChild as any).z).toBe("ResolvedZ"); root.querySelector("#inner-span")!.dispatchEvent(new Event("spanClick")); - expect(consoleInfo).toBeCalledTimes(1); - expect(consoleInfo).toBeCalledWith("spanClick"); + expect(consoleInfo).toHaveBeenCalledTimes(1); + expect(consoleInfo).toHaveBeenCalledWith("spanClick"); (root as any).x = "X3"; // Wait for debounced re-render for control nodes. @@ -522,8 +522,8 @@ describe("useBrick", () => { `); root.querySelector("#inner-span")!.dispatchEvent(new Event("spanClick")); - expect(consoleInfo).toBeCalledTimes(2); - expect(consoleInfo).toBeCalledWith("spanClick"); + expect(consoleInfo).toHaveBeenCalledTimes(2); + expect(consoleInfo).toHaveBeenCalledWith("spanClick"); unmountUseBrick(renderResult, mountResult); @@ -1403,12 +1403,12 @@ describe("debugDataValue", () => { describe("getLegalRuntimeValue", () => { const originLocation = window.location; - + delete (window as any).location; window.location = { - href: "https://dev-easyops.cn/home/Host", - origin: "https://dev-easyops.cn", - hostname: "admin.easyops.local", - host: "admin.easyops.local", + href: "http://localhost/", + origin: "http://localhost", + hostname: "localhost", + host: "localhost", } as any; jest.spyOn(routeMatchedMap, "getMatchedRoute").mockReturnValueOnce({ @@ -1452,5 +1452,5 @@ describe("getLegalRuntimeValue", () => { query: {}, sys: { org: 8888, username: "easyops" }, }); - window.location = originLocation; + (window as any).location = originLocation; }); diff --git a/packages/runtime/src/isStrictMode.spec.ts b/packages/runtime/src/isStrictMode.spec.ts index daff4c35f7..be2556e28e 100644 --- a/packages/runtime/src/isStrictMode.spec.ts +++ b/packages/runtime/src/isStrictMode.spec.ts @@ -23,37 +23,37 @@ describe("isStrictMode", () => { describe("warnAboutStrictMode", () => { test("strict mode", () => { warnAboutStrictMode(true, "`useBrick.transform`"); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledWith( "`useBrick.transform` is dropped in v3 strict mode" ); - expect(consoleWarn).not.toBeCalled(); + expect(consoleWarn).not.toHaveBeenCalled(); }); test("non-strict mode", () => { warnAboutStrictMode(false, "`useBrick.transform`"); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledWith( "`useBrick.transform` is deprecated in v3 and will be dropped in strict mode" ); - expect(consoleError).not.toBeCalled(); + expect(consoleError).not.toHaveBeenCalled(); }); test("strict mode with extra logs", () => { warnAboutStrictMode(true, "`useBrick.transform`", "extra", "logs"); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledWith( "`useBrick.transform` is dropped in v3 strict mode,", "extra", "logs" ); - expect(consoleWarn).not.toBeCalled(); + expect(consoleWarn).not.toHaveBeenCalled(); }); test("non-strict mode with extra logs", () => { warnAboutStrictMode(false, "`useBrick.transform`", "extra", "logs"); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledWith( "`useBrick.transform` is deprecated in v3 and will be dropped in strict mode,", "extra", "logs" ); - expect(consoleError).not.toBeCalled(); + expect(consoleError).not.toHaveBeenCalled(); }); }); diff --git a/packages/runtime/src/setWatermark.spec.ts b/packages/runtime/src/setWatermark.spec.ts index f76c5e7e3c..46b80e4c3b 100644 --- a/packages/runtime/src/setWatermark.spec.ts +++ b/packages/runtime/src/setWatermark.spec.ts @@ -173,7 +173,7 @@ describe("setWatermark", () => { }; await setWatermark(); - expect(mockResolve).not.toBeCalled(); + expect(mockResolve).not.toHaveBeenCalled(); }); it("watermark should not be called when content is empty", async () => { @@ -186,6 +186,6 @@ describe("setWatermark", () => { }; await setWatermark(); - expect(mockResolve).not.toBeCalled(); + expect(mockResolve).not.toHaveBeenCalled(); }); }); diff --git a/packages/runtime/src/themeAndMode.spec.ts b/packages/runtime/src/themeAndMode.spec.ts index 414b7f6a77..4b63112a85 100644 --- a/packages/runtime/src/themeAndMode.spec.ts +++ b/packages/runtime/src/themeAndMode.spec.ts @@ -62,9 +62,9 @@ describe("theme", () => { const dispatchEvent = jest.spyOn(window, "dispatchEvent"); expect(getTheme()).toEqual("light"); applyTheme("light"); - expect(dispatchEvent).not.toBeCalled(); + expect(dispatchEvent).not.toHaveBeenCalled(); applyTheme("dark"); - expect(dispatchEvent).toBeCalled(); + expect(dispatchEvent).toHaveBeenCalled(); }); }); @@ -117,9 +117,9 @@ describe("mode", () => { const dispatchEvent = jest.spyOn(window, "dispatchEvent"); expect(getMode()).toEqual("default"); applyMode("default"); - expect(dispatchEvent).not.toBeCalled(); + expect(dispatchEvent).not.toHaveBeenCalled(); applyMode("dashboard"); - expect(dispatchEvent).toBeCalled(); + expect(dispatchEvent).toHaveBeenCalled(); }); }); diff --git a/packages/test-next/package.json b/packages/test-next/package.json index f2460f29ae..adcda3c471 100644 --- a/packages/test-next/package.json +++ b/packages/test-next/package.json @@ -1,7 +1,7 @@ { "name": "@next-core/test-next", "version": "1.1.9", - "description": "Test next packages", + "description": "Test next packages (jest v30)", "homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/test-next", "license": "GPL-3.0", "type": "module", @@ -36,10 +36,10 @@ "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", - "babel-jest": "^29.7.0", + "babel-jest": "^30.0.2", "identity-obj-proxy": "^3.0.0", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", + "jest": "^30.0.2", + "jest-environment-jsdom": "^30.0.2", "pascal-case": "^4.0.0", "ts-jest-resolver": "^2.0.1", "typescript": "^5.8.3" diff --git a/packages/test-next/src/run.js b/packages/test-next/src/run.js index 3bcde74b88..6c7830d176 100644 --- a/packages/test-next/src/run.js +++ b/packages/test-next/src/run.js @@ -1,7 +1,7 @@ // @ts-check import path from "node:path"; import { existsSync } from "node:fs"; -import jest from "jest"; +import { run } from "jest"; import { createJestConfig } from "./createJestConfig.js"; const packageDir = process.cwd(); @@ -23,4 +23,4 @@ args.push( ) ); -jest.run(args); +run(args); diff --git a/packages/utils/src/general/deepFreeze.spec.ts b/packages/utils/src/general/deepFreeze.spec.ts index 9fc32cc15b..bbaf95a0db 100644 --- a/packages/utils/src/general/deepFreeze.spec.ts +++ b/packages/utils/src/general/deepFreeze.spec.ts @@ -26,41 +26,41 @@ describe("deepFreeze", () => { expect(() => { // Add a new prop. (frozen as any).hello = "world"; - }).toThrowError(); + }).toThrow(); expect(() => { // Override an existed prop. frozen.string = "overridden"; - }).toThrowError(); + }).toThrow(); expect(() => { // Delete a prop. delete (frozen as Partial).string; - }).toThrowError(); + }).toThrow(); expect(() => { // Push a item to a prop of array. frozen.array.push("z"); - }).toThrowError(); + }).toThrow(); expect(() => { // Pop a prop of array. frozen.array.pop(); - }).toThrowError(); + }).toThrow(); expect(() => { // Delete a prop of array. delete (frozen as Partial).array; - }).toThrowError(); + }).toThrow(); expect(() => { // Override a nested object's prop. frozen.object.number = 2; - }).toThrowError(); + }).toThrow(); expect(() => { // Override a nested object's prop. frozen.object.array.push(9); - }).toThrowError(); + }).toThrow(); }); }); diff --git a/packages/utils/src/storyboard/expressions/track.spec.ts b/packages/utils/src/storyboard/expressions/track.spec.ts index 6953fca542..ae536776ac 100644 --- a/packages/utils/src/storyboard/expressions/track.spec.ts +++ b/packages/utils/src/storyboard/expressions/track.spec.ts @@ -21,7 +21,7 @@ describe("track", () => { "CTX" ); expect(result).toBe(false); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledWith( expect.stringContaining(`no \`CTX\` usage found`) ); }); @@ -57,7 +57,7 @@ describe("trackAll", () => { }); const result = trackAll("<%= DATA.CTX.abc %>"); expect(result).toBe(false); - expect(consoleWarn).toBeCalledWith( + expect(consoleWarn).toHaveBeenCalledWith( expect.stringContaining(`no "CTX" or "STATE" or "FORM_STATE" usage found`) ); }); diff --git a/packages/utils/src/storyboard/expressions/traverse.spec.ts b/packages/utils/src/storyboard/expressions/traverse.spec.ts index 0e82939f17..abdaaa5d68 100644 --- a/packages/utils/src/storyboard/expressions/traverse.spec.ts +++ b/packages/utils/src/storyboard/expressions/traverse.spec.ts @@ -60,15 +60,17 @@ describe("traverseStoryboardExpressions", () => { expect([...usage.usedProperties]).toEqual(["abc"]); expect(usage.hasNonStaticUsage).toBe(true); - expect(visitNotMatchedExpressionString).toBeCalledTimes(1); - expect(visitNotMatchedExpressionString).toBeCalledWith("<% STATE.rst %>"); - expect(visitNonExpressionString).toBeCalledTimes(1); - expect(visitNonExpressionString).toBeCalledWith("CTX.opq"); - expect(visitObject).toBeCalledTimes(2); - expect(visitObject).toBeCalledWith(data); - expect(visitObject).toBeCalledWith(nest); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith( + expect(visitNotMatchedExpressionString).toHaveBeenCalledTimes(1); + expect(visitNotMatchedExpressionString).toHaveBeenCalledWith( + "<% STATE.rst %>" + ); + expect(visitNonExpressionString).toHaveBeenCalledTimes(1); + expect(visitNonExpressionString).toHaveBeenCalledWith("CTX.opq"); + expect(visitObject).toHaveBeenCalledTimes(2); + expect(visitObject).toHaveBeenCalledWith(data); + expect(visitObject).toHaveBeenCalledWith(nest); + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( expect.stringContaining("Parse storyboard expression failed"), expect.anything() ); diff --git a/packages/utils/src/storyboard/functions/collectMemberUsageInFunction.spec.ts b/packages/utils/src/storyboard/functions/collectMemberUsageInFunction.spec.ts index d4e2e9f9d5..7ff33e25e5 100644 --- a/packages/utils/src/storyboard/functions/collectMemberUsageInFunction.spec.ts +++ b/packages/utils/src/storyboard/functions/collectMemberUsageInFunction.spec.ts @@ -58,8 +58,8 @@ describe("collectMemberUsageInFunction", () => { "FN" ); expect([...used]).toEqual([]); - expect(consoleError).toBeCalledTimes(1); - expect(consoleError).toBeCalledWith( + expect(consoleError).toHaveBeenCalledTimes(1); + expect(consoleError).toHaveBeenCalledWith( 'Parse storyboard function "test" failed:', expect.anything() ); @@ -107,6 +107,6 @@ describe("collectMemberUsageInFunction with silent errors", () => { true ); expect([...used]).toEqual([]); - expect(consoleError).not.toBeCalled(); + expect(consoleError).not.toHaveBeenCalled(); }); }); diff --git a/packages/utils/src/storyboard/functions/traverse.spec.ts b/packages/utils/src/storyboard/functions/traverse.spec.ts index a79bc188ba..8e5ec3ef0f 100644 --- a/packages/utils/src/storyboard/functions/traverse.spec.ts +++ b/packages/utils/src/storyboard/functions/traverse.spec.ts @@ -40,7 +40,7 @@ describe("traverseStoryboardFunctions", () => { expect([...usage.usedProperties]).toEqual(["abc"]); expect(usage.hasNonStaticUsage).toBe(false); - expect(beforeVisitGlobal).toBeCalledTimes(1); + expect(beforeVisitGlobal).toHaveBeenCalledTimes(1); }); test("without matchSource", () => { @@ -72,6 +72,6 @@ describe("traverseStoryboardFunctions", () => { expect([...usage.usedProperties]).toEqual(["abc"]); expect(usage.hasNonStaticUsage).toBe(false); - expect(beforeVisitGlobal).toBeCalledTimes(2); + expect(beforeVisitGlobal).toHaveBeenCalledTimes(2); }); }); diff --git a/patches/jsdom+26.1.0.patch b/patches/jsdom+26.1.0.patch new file mode 100644 index 0000000000..b0f94ed3d2 --- /dev/null +++ b/patches/jsdom+26.1.0.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/jsdom/lib/jsdom/browser/Window.js b/node_modules/jsdom/lib/jsdom/browser/Window.js +index 52d011c..5b29f5a 100644 +--- a/node_modules/jsdom/lib/jsdom/browser/Window.js ++++ b/node_modules/jsdom/lib/jsdom/browser/Window.js +@@ -507,7 +507,7 @@ function installOwnProperties(window, options) { + // [LegacyUnforgeable]: + window: { configurable: false }, + document: { configurable: false }, +- location: { configurable: false }, ++ location: { configurable: true }, + top: { configurable: false } + }); + diff --git a/yarn.lock b/yarn.lock index f60359eac0..2a76373355 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27,6 +27,17 @@ dependencies: "@ctrl/tinycolor" "^3.4.0" +"@asamuzakjp/css-color@^3.2.0": + version "3.2.0" + resolved "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz#cc42f5b85c593f79f1fa4f25d2b9b321e61d1794" + integrity sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw== + dependencies: + "@csstools/css-calc" "^2.1.3" + "@csstools/css-color-parser" "^3.0.9" + "@csstools/css-parser-algorithms" "^3.0.4" + "@csstools/css-tokenizer" "^3.0.3" + lru-cache "^10.4.3" + "@babel/cli@^7.27.2": version "7.27.2" resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.27.2.tgz#d54560567a73a269b31d3201bedb70692ace8684" @@ -57,7 +68,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9" integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.21.3", "@babel/core@^7.27.4": +"@babel/core@^7.16.0", "@babel/core@^7.21.3", "@babel/core@^7.23.9", "@babel/core@^7.27.4": version "7.27.4" resolved "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== @@ -78,12 +89,12 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.27.3", "@babel/generator@^7.7.2": - version "7.27.3" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz#ef1c0f7cfe3b5fc8cbb9f6cc69f93441a68edefc" - integrity sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q== +"@babel/generator@^7.27.3", "@babel/generator@^7.27.5": + version "7.27.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz#3eb01866b345ba261b04911020cbe22dd4be8c8c" + integrity sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw== dependencies: - "@babel/parser" "^7.27.3" + "@babel/parser" "^7.27.5" "@babel/types" "^7.27.3" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" @@ -235,7 +246,7 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.27.3" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.27.2", "@babel/parser@^7.27.3", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": version "7.27.5" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== @@ -328,13 +339,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13": version "7.12.13" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - integrity sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA= + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/plugin-syntax-decorators@^7.27.1": version "7.27.1" resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz#ee7dd9590aeebc05f9d4c8c0560007b05979a63d" @@ -349,17 +367,17 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-attributes@^7.27.1": +"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.27.1": version "7.27.1" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - integrity sha1-7mATSMNw+jNNIge+FYd3SWUh/VE= + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -370,17 +388,17 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2": +"@babel/plugin-syntax-jsx@^7.27.1": version "7.27.1" resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - integrity sha1-ypHvRjA1MESLkGZSusLp/plB9pk= + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -391,10 +409,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4": version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - integrity sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c= + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -419,14 +437,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": version "7.14.5" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2": +"@babel/plugin-syntax-typescript@^7.27.1": version "7.27.1" resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== @@ -1003,7 +1028,7 @@ resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz#ec4070a04d76bae8ddbb10770ba55714a417b7c6" integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q== -"@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": +"@babel/template@^7.27.1", "@babel/template@^7.27.2": version "7.27.2" resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== @@ -1025,7 +1050,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.21.3", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.3.0", "@babel/types@^7.4.4": version "7.27.6" resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz#a434ca7add514d4e646c80f7375c0aa2befc5535" integrity sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q== @@ -1055,12 +1080,12 @@ resolved "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz#82592c9a7c2b83c293d9161894e2a6471feb97b8" integrity sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA== -"@csstools/css-calc@^2.1.4": +"@csstools/css-calc@^2.1.3", "@csstools/css-calc@^2.1.4": version "2.1.4" resolved "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz#8473f63e2fcd6e459838dd412401d5948f224c65" integrity sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ== -"@csstools/css-color-parser@^3.0.10": +"@csstools/css-color-parser@^3.0.10", "@csstools/css-color-parser@^3.0.9": version "3.0.10" resolved "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz#79fc68864dd43c3b6782d2b3828bc0fa9d085c10" integrity sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg== @@ -1068,12 +1093,12 @@ "@csstools/color-helpers" "^5.0.2" "@csstools/css-calc" "^2.1.4" -"@csstools/css-parser-algorithms@^3.0.5": +"@csstools/css-parser-algorithms@^3.0.4", "@csstools/css-parser-algorithms@^3.0.5": version "3.0.5" resolved "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz#5755370a9a29abaec5515b43c8b3f2cf9c2e3076" integrity sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ== -"@csstools/css-tokenizer@^3.0.4": +"@csstools/css-tokenizer@^3.0.3", "@csstools/css-tokenizer@^3.0.4": version "3.0.4" resolved "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== @@ -1444,6 +1469,28 @@ resolved "https://registry.npmjs.org/@easyops-cn/brick-next-pipes/-/brick-next-pipes-0.7.2.tgz#5a94be6167875a8152d07d34e3ed4cf5391c577b" integrity sha512-YzwqQpWG1sNeBcqPigev2Y9U2t1nLkGY2Bdx+/XkVBuIjRtiHQWopDx2ytMprq+fZgw4//On8KMd/hUvxLFlug== +"@emnapi/core@^1.4.3": + version "1.4.3" + resolved "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" + integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== + dependencies: + "@emnapi/wasi-threads" "1.0.2" + tslib "^2.4.0" + +"@emnapi/runtime@^1.4.3": + version "1.4.3" + resolved "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" + integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" + integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== + dependencies: + tslib "^2.4.0" + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": version "4.7.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" @@ -1570,66 +1617,91 @@ js-yaml "^3.13.1" resolve-from "^5.0.0" -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz" - integrity sha1-JlIL8Jq+SlZEzVQU43ElqJVCQd0= +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== +"@jest/console@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/console/-/console-30.0.2.tgz#e2bf6c7703d45f9824d77c7332388c3e1685afd7" + integrity sha512-krGElPU0FipAqpVZ/BRZOy0MZh/ARdJ0Nj+PiH1ykFY1+VpBlYNLjdjVA5CFKxnKR6PFqFutO4Z7cdK9BlGiDA== dependencies: - "@jest/types" "^29.6.3" + "@jest/types" "30.0.1" "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" + chalk "^4.1.2" + jest-message-util "30.0.2" + jest-util "30.0.2" slash "^3.0.0" -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" +"@jest/core@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/core/-/core-30.0.2.tgz#c84c85baac55e6fa85b491edc4280425631951c7" + integrity sha512-mUMFdDtYWu7la63NxlyNIhgnzynszxunXWrtryR7bV24jV9hmi7XCZTzZHaLJjcBU66MeUAPZ81HjwASVpYhYQ== + dependencies: + "@jest/console" "30.0.2" + "@jest/pattern" "30.0.1" + "@jest/reporters" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + ci-info "^4.2.0" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-changed-files "30.0.2" + jest-config "30.0.2" + jest-haste-map "30.0.2" + jest-message-util "30.0.2" + jest-regex-util "30.0.1" + jest-resolve "30.0.2" + jest-resolve-dependencies "30.0.2" + jest-runner "30.0.2" + jest-runtime "30.0.2" + jest-snapshot "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" + jest-watcher "30.0.2" + micromatch "^4.0.8" + pretty-format "30.0.2" slash "^3.0.0" - strip-ansi "^6.0.0" -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== +"@jest/diff-sequences@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be" + integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== + +"@jest/environment-jsdom-abstract@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.2.tgz#3538bcc206704a4a37ee18afcb5b88ce55f02dc4" + integrity sha512-8aMoEzGdUuJeQl71BUACkys1ZEX437AF376VBqdYXsGFd4l3F1SdTjFHmNq8vF0Rp+CYhUyxa0kRAzXbBaVzfQ== dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" + "@types/jsdom" "^21.1.7" + "@types/node" "*" + jest-mock "30.0.2" + jest-util "30.0.2" + +"@jest/environment@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-30.0.2.tgz#1b0d055070e97f697e9edb25059e9435221cbe65" + integrity sha512-hRLhZRJNxBiOhxIKSq2UkrlhMt3/zVFQOAi5lvS8T9I03+kxsbflwHJEF+eXEYXCrRGRhHwECT7CDk6DyngsRA== + dependencies: + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - jest-mock "^29.7.0" + jest-mock "30.0.2" + +"@jest/expect-utils@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.2.tgz#d065f68c128cec526540193d88f2fc64c3d4f971" + integrity sha512-FHF2YdtFBUQOo0/qdgt+6UdBFcNPF/TkVzcc+4vvf8uaBzUlONytGBeeudufIHHW1khRfM1sBbRT1VCK7n/0dQ== + dependencies: + "@jest/get-type" "30.0.1" "@jest/expect-utils@^29.7.0": version "29.7.0" @@ -1638,66 +1710,85 @@ dependencies: jest-get-type "^29.6.3" -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== +"@jest/expect@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-30.0.2.tgz#b3d5adec28f3884d6fd0746c4b5d0d2473e9e212" + integrity sha512-blWRFPjv2cVfh42nLG6L3xIEbw+bnuiZYZDl/BZlsNG/i3wKV6FpPZ2EPHguk7t5QpLaouIu+7JmYO4uBR6AOg== dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" + expect "30.0.2" + jest-snapshot "30.0.2" -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== +"@jest/fake-timers@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.2.tgz#ec758b28ae6f63a49eda9e8d6af274d152d37c09" + integrity sha512-jfx0Xg7l0gmphTY9UKm5RtH12BlLYj/2Plj6wXjVW5Era4FZKfXeIvwC67WX+4q8UCFxYS20IgnMcFBcEU0DtA== dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" + "@jest/types" "30.0.1" + "@sinonjs/fake-timers" "^13.0.0" "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + jest-message-util "30.0.2" + jest-mock "30.0.2" + jest-util "30.0.2" + +"@jest/get-type@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz#0d32f1bbfba511948ad247ab01b9007724fc9f52" + integrity sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw== + +"@jest/globals@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-30.0.2.tgz#3b401bb7cb8cc0a00476630298747a38e40a6fc1" + integrity sha512-DwTtus9jjbG7b6jUdkcVdptf0wtD1v153A+PVwWB/zFwXhqu6hhtSd+uq88jofMhmYPtkmPmVGUBRNCZEKXn+w== + dependencies: + "@jest/environment" "30.0.2" + "@jest/expect" "30.0.2" + "@jest/types" "30.0.1" + jest-mock "30.0.2" + +"@jest/pattern@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f" + integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" + "@types/node" "*" + jest-regex-util "30.0.1" -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== +"@jest/reporters@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-30.0.2.tgz#e804435ab77cd05b7e8732b91006cd00bd822399" + integrity sha512-l4QzS/oKf57F8WtPZK+vvF4Io6ukplc6XgNFu4Hd/QxaLEO9f+8dSFzUua62Oe0HKlCUjKHpltKErAgDiMJKsA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" + "@jest/console" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" + "@jridgewell/trace-mapping" "^0.3.25" "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" + chalk "^4.1.2" + collect-v8-coverage "^1.0.2" + exit-x "^0.2.2" + glob "^10.3.10" + graceful-fs "^4.2.11" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^6.0.0" istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" + istanbul-lib-source-maps "^5.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" + jest-message-util "30.0.2" + jest-util "30.0.2" + jest-worker "30.0.2" slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" + string-length "^4.0.2" v8-to-istanbul "^9.0.1" +"@jest/schemas@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz#27c00d707d480ece0c19126af97081a1af3bc46e" + integrity sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w== + dependencies: + "@sinclair/typebox" "^0.34.0" + "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" @@ -1705,55 +1796,78 @@ dependencies: "@sinclair/typebox" "^0.27.8" -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== +"@jest/snapshot-utils@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.0.1.tgz#536108aa6b74858d758ae3b5229518c3d818bd68" + integrity sha512-6Dpv7vdtoRiISEFwYF8/c7LIvqXD7xDXtLPNzC2xqAfBznKip0MQM+rkseKwUPUpv2PJ7KW/YsnwWXrIL2xF+A== dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" + "@jest/types" "30.0.1" + chalk "^4.1.2" + graceful-fs "^4.2.11" + natural-compare "^1.4.0" -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== +"@jest/source-map@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz#305ebec50468f13e658b3d5c26f85107a5620aaa" + integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" + "@jridgewell/trace-mapping" "^0.3.25" + callsites "^3.1.0" + graceful-fs "^4.2.11" -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== +"@jest/test-result@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-30.0.2.tgz#786849e33da6060381c508986fa7309ff855a367" + integrity sha512-KKMuBKkkZYP/GfHMhI+cH2/P3+taMZS3qnqqiPC1UXZTJskkCS+YU/ILCtw5anw1+YsTulDHFpDo70mmCedW8w== dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" + "@jest/console" "30.0.2" + "@jest/types" "30.0.1" + "@types/istanbul-lib-coverage" "^2.0.6" + collect-v8-coverage "^1.0.2" + +"@jest/test-sequencer@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.0.2.tgz#2693692d285b1c929ed353f7f0b7cbea51c57515" + integrity sha512-fbyU5HPka0rkalZ3MXVvq0hwZY8dx3Y6SCqR64zRmh+xXlDeFl0IdL4l9e7vp4gxEXTYHbwLFA1D+WW5CucaSw== + dependencies: + "@jest/test-result" "30.0.2" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" slash "^3.0.0" -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== +"@jest/transform@30.0.2": + version "30.0.2" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-30.0.2.tgz#62ba84fcc2389ab751e7ec923958c9b1163d90c3" + integrity sha512-kJIuhLMTxRF7sc0gPzPtCDib/V9KwW3I2U25b+lYCYMVqHHSrcZopS8J8H+znx9yixuFv+Iozl8raLt/4MoxrA== dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" + "@babel/core" "^7.27.4" + "@jest/types" "30.0.1" + "@jridgewell/trace-mapping" "^0.3.25" + babel-plugin-istanbul "^7.0.0" + chalk "^4.1.2" convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + jest-regex-util "30.0.1" + jest-util "30.0.2" + micromatch "^4.0.8" + pirates "^4.0.7" slash "^3.0.0" - write-file-atomic "^4.0.2" + write-file-atomic "^5.0.1" + +"@jest/types@30.0.1": + version "30.0.1" + resolved "https://registry.npmjs.org/@jest/types/-/types-30.0.1.tgz#a46df6a99a416fa685740ac4264b9f9cd7da1598" + integrity sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw== + dependencies: + "@jest/pattern" "30.0.1" + "@jest/schemas" "30.0.1" + "@types/istanbul-lib-coverage" "^2.0.6" + "@types/istanbul-reports" "^3.0.4" + "@types/node" "*" + "@types/yargs" "^17.0.33" + chalk "^4.1.2" "@jest/types@^29.6.3": version "29.6.3" @@ -1815,7 +1929,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": version "0.3.25" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -1960,6 +2074,15 @@ resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz#d4f6937353bc4568292654efb0a0e0532adbcba2" integrity sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw== +"@napi-rs/wasm-runtime@^0.2.11": + version "0.2.11" + resolved "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e" + integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA== + dependencies: + "@emnapi/core" "^1.4.3" + "@emnapi/runtime" "^1.4.3" + "@tybys/wasm-util" "^0.9.0" + "@next-api-sdk/api-gateway-sdk@^1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@next-api-sdk/api-gateway-sdk/-/api-gateway-sdk-1.2.2.tgz#867b2b93573379fcd8f2507876bc0ce83bf19858" @@ -2420,6 +2543,11 @@ resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/core@^0.2.4": + version "0.2.7" + resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz#eb5014dfd0b03e7f3ba2eeeff506eed89b028058" + integrity sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg== + "@rushstack/node-core-library@5.13.1": version "5.13.1" resolved "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-5.13.1.tgz#e56b915ecb08b5a92711acac6b233417353a32dc" @@ -2511,19 +2639,24 @@ resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@sinonjs/commons@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz" - integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== +"@sinclair/typebox@^0.34.0": + version "0.34.37" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.37.tgz#f331e4db64ff8195e9e3d8449343c85aaa237d6e" + integrity sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw== + +"@sinonjs/commons@^3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^10.0.2": - version "10.0.2" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz" - integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== +"@sinonjs/fake-timers@^13.0.0": + version "13.0.5" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5" + integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw== dependencies: - "@sinonjs/commons" "^2.0.0" + "@sinonjs/commons" "^3.0.1" "@svgr/babel-plugin-add-jsx-attribute@8.0.0": version "8.0.0" @@ -2665,11 +2798,6 @@ dependencies: "@babel/runtime" "^7.12.5" -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" @@ -2708,6 +2836,13 @@ "@tufjs/canonical-json" "2.0.0" minimatch "^9.0.4" +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + dependencies: + tslib "^2.4.0" + "@types/argparse@1.0.38": version "1.0.38" resolved "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" @@ -2718,13 +2853,13 @@ resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/babel__core@^7.1.14": - version "7.1.14" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz" - integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== +"@types/babel__core@^7.20.5": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" "@types/babel__generator" "*" "@types/babel__template" "*" "@types/babel__traverse" "*" @@ -2742,7 +2877,7 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": +"@types/babel__traverse@*": version "7.0.15" resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.15.tgz" integrity sha1-255COJMetp74qrCtZSPU1MqjnQM= @@ -2892,10 +3027,10 @@ "@types/through" "*" rxjs "^7.2.0" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz" - integrity sha1-QplbRG25pIoRoH7Ag0mahg6ROP8= +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": version "1.1.1" @@ -2904,10 +3039,10 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz" - integrity sha1-UIsTqjRPpJdiNOdd3cw0klc32CE= +"@types/istanbul-reports@^3.0.0", "@types/istanbul-reports@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" @@ -2924,10 +3059,10 @@ resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.10.tgz#4d80d0c7dfc570eb4f0be280cb2d67789f977ba5" integrity sha512-/Mtaq/wf+HxXpvhzFYzrzCqNRcA958sW++7JOFC8nPrZcvfi/TrzOaaGbvt27ltJB2NQbHVAg5a1wUCsyMH7NA== -"@types/jsdom@^20.0.0": - version "20.0.0" - resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.0.tgz" - integrity sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA== +"@types/jsdom@^21.1.7": + version "21.1.7" + resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz#9edcb09e0b07ce876e7833922d3274149c898cfa" + integrity sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA== dependencies: "@types/node" "*" "@types/tough-cookie" "*" @@ -3091,10 +3226,10 @@ dependencies: "@types/node" "*" -"@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz" - integrity sha1-cDZkC04hzC8lmugmzoQ9J32tjP8= +"@types/stack-utils@^2.0.0", "@types/stack-utils@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== "@types/through@*": version "0.0.29" @@ -3120,10 +3255,10 @@ resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.0.0.tgz" integrity sha1-RTdDxbv58b7WHZWbqrWwa+ApstA= -"@types/yargs@^17.0.8": - version "17.0.10" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz" - integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== +"@types/yargs@^17.0.33", "@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== dependencies: "@types/yargs-parser" "*" @@ -3236,6 +3371,108 @@ resolved "https://registry.npmjs.org/@ungap/event-target/-/event-target-0.2.4.tgz#8b083a62ee665228bac08013fa516a3488528bb8" integrity sha512-u9Fd3k2qfMtn+0dxbCn/y0pzQ9Ucw6lWR984CrHcbxc+WzcMkJE4VjWHWSb9At40MjwMyHCkJNXroS55Osshhw== +"@ungap/structured-clone@^1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@unrs/resolver-binding-android-arm-eabi@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.1.tgz#6fc1ae6fc252963aa545245f17c67d47164446e6" + integrity sha512-dd7yIp1hfJFX9ZlVLQRrh/Re9WMUHHmF9hrKD1yIvxcyNr2BhQ3xc1upAVhy8NijadnCswAxWQu8MkkSMC1qXQ== + +"@unrs/resolver-binding-android-arm64@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.1.tgz#9498dbfdab375726a2f8474e0d50f5940d0d2b4a" + integrity sha512-EzUPcMFtDVlo5yrbzMqUsGq3HnLXw+3ZOhSd7CUaDmbTtnrzM+RO2ntw2dm2wjbbc5djWj3yX0wzbbg8pLhx8g== + +"@unrs/resolver-binding-darwin-arm64@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.1.tgz#e13e7b2a134f88b5e445e4548ee53a7ef33c56fb" + integrity sha512-nB+dna3q4kOleKFcSZJ/wDXIsAd1kpMO9XrVAt8tG3RDWJ6vi+Ic6bpz4cmg5tWNeCfHEY4KuqJCB+pKejPEmQ== + +"@unrs/resolver-binding-darwin-x64@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.1.tgz#6d2d0c63400852075de84612e51a4d6ee5c01391" + integrity sha512-aKWHCrOGaCGwZcekf3TnczQoBxk5w//W3RZ4EQyhux6rKDwBPgDU9Y2yGigCV1Z+8DWqZgVGQi+hdpnlSy3a1w== + +"@unrs/resolver-binding-freebsd-x64@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.1.tgz#71dc0b1e28e6e7c19388b873fd8ca87724e468b0" + integrity sha512-4dIEMXrXt0UqDVgrsUd1I+NoIzVQWXy/CNhgpfS75rOOMK/4Abn0Mx2M2gWH4Mk9+ds/ASAiCmqoUFynmMY5hA== + +"@unrs/resolver-binding-linux-arm-gnueabihf@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.1.tgz#8c0c888f388af853649807712ec181cfb93335e4" + integrity sha512-vtvS13IXPs1eE8DuS/soiosqMBeyh50YLRZ+p7EaIKAPPeevRnA9G/wu/KbVt01ZD5qiGjxS+CGIdVC7I6gTOw== + +"@unrs/resolver-binding-linux-arm-musleabihf@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.1.tgz#a974b25348fe3d329d8ee22f09c6d4a258734ede" + integrity sha512-BfdnN6aZ7NcX8djW8SR6GOJc+K+sFhWRF4vJueVE0vbUu5N1bLnBpxJg1TGlhSyo+ImC4SR0jcNiKN0jdoxt+A== + +"@unrs/resolver-binding-linux-arm64-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.1.tgz#0a52f119510e03f53e39d782a3183a45d4b0332c" + integrity sha512-Jhge7lFtH0QqfRz2PyJjJXWENqywPteITd+nOS0L6AhbZli+UmEyGBd2Sstt1c+l9C+j/YvKTl9wJo9PPmsFNg== + +"@unrs/resolver-binding-linux-arm64-musl@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.1.tgz#db614df450992b8bc0dc19d17db924e95ebae282" + integrity sha512-ofdK/ow+ZSbSU0pRoB7uBaiRHeaAOYQFU5Spp87LdcPL/P1RhbCTMSIYVb61XWzsVEmYKjHFtoIE0wxP6AFvrA== + +"@unrs/resolver-binding-linux-ppc64-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.1.tgz#ea7a53069c612288b6adc96f1b907609bcb5941d" + integrity sha512-eC8SXVn8de67HacqU7PoGdHA+9tGbqfEdD05AEFRAB81ejeQtNi5Fx7lPcxpLH79DW0BnMAHau3hi4RVkHfSCw== + +"@unrs/resolver-binding-linux-riscv64-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.1.tgz#e6366f3a3e4ef435ee1b87ebe7ca87155fa1d1c9" + integrity sha512-fIkwvAAQ41kfoGWfzeJ33iLGShl0JEDZHrMnwTHMErUcPkaaZRJYjQjsFhMl315NEQ4mmTlC+2nfK/J2IszDOw== + +"@unrs/resolver-binding-linux-riscv64-musl@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.1.tgz#198c1e552e2963035e237b2f5dbdb5c81fcde4bd" + integrity sha512-RAAszxImSOFLk44aLwnSqpcOdce8sBcxASledSzuFAd8Q5ZhhVck472SisspnzHdc7THCvGXiUeZ2hOC7NUoBQ== + +"@unrs/resolver-binding-linux-s390x-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.1.tgz#982501b8865f0d36c82b933b9de4e71894a749f5" + integrity sha512-QoP9vkY+THuQdZi05bA6s6XwFd6HIz3qlx82v9bTOgxeqin/3C12Ye7f7EOD00RQ36OtOPWnhEMMm84sv7d1XQ== + +"@unrs/resolver-binding-linux-x64-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.1.tgz#f93271025f814506fad97fa749a8ed8a0536e813" + integrity sha512-/p77cGN/h9zbsfCseAP5gY7tK+7+DdM8fkPfr9d1ye1fsF6bmtGbtZN6e/8j4jCZ9NEIBBkT0GhdgixSelTK9g== + +"@unrs/resolver-binding-linux-x64-musl@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.1.tgz#9c13e0f602527a4bc77852268fa493b1845c5ee2" + integrity sha512-wInTqT3Bu9u50mDStEig1v8uxEL2Ht+K8pir/YhyyrM5ordJtxoqzsL1vR/CQzOJuDunUTrDkMM0apjW/d7/PA== + +"@unrs/resolver-binding-wasm32-wasi@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.1.tgz#d3c088be1b510cd02822bf0258861a2dd8dac096" + integrity sha512-eNwqO5kUa+1k7yFIircwwiniKWA0UFHo2Cfm8LYgkh9km7uMad+0x7X7oXbQonJXlqfitBTSjhA0un+DsHIrhw== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.11" + +"@unrs/resolver-binding-win32-arm64-msvc@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.1.tgz#c2aa3e371d5c53b962b1a7a45503a68e96f710a0" + integrity sha512-Eaz1xMUnoa2mFqh20mPqSdbYl6crnk8HnIXDu6nsla9zpgZJZO8w3c1gvNN/4Eb0RXRq3K9OG6mu8vw14gIqiA== + +"@unrs/resolver-binding-win32-ia32-msvc@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.1.tgz#12f1be2ce8041fdadfef23bf69e104ab8176127a" + integrity sha512-H/+d+5BGlnEQif0gnwWmYbYv7HJj563PUKJfn8PlmzF8UmF+8KxdvXdwCsoOqh4HHnENnoLrav9NYBrv76x1wQ== + +"@unrs/resolver-binding-win32-x64-msvc@1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.1.tgz#5f9e5b6ce30c355161527e17734320ddfb1a4561" + integrity sha512-rS86wI4R6cknYM3is3grCb/laE8XBEbpWAMSIPjYfmYp75KL5dT87jXF2orDa4tQYg5aajP5G8Fgh34dRyR+Rw== + "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" @@ -3392,11 +3629,6 @@ JSONStream@^1.0.3, JSONStream@^1.3.5: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - abbrev@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" @@ -3410,14 +3642,6 @@ accepts@~1.3.4, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" - integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== - dependencies: - acorn "^8.1.0" - acorn-walk "^8.0.2" - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" @@ -3437,7 +3661,7 @@ acorn-walk@^7.0.0: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w= -acorn-walk@^8.0.2, acorn-walk@^8.1.1: +acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== @@ -3447,7 +3671,7 @@ acorn@^7.0.0: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.1.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.8.0, acorn@^8.8.2: +acorn@^8.14.0, acorn@^8.4.1, acorn@^8.8.2: version "8.14.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== @@ -3457,19 +3681,10 @@ add-stream@^1.0.0: resolved "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz" integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= -agent-base@6: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - integrity sha1-Sf/1hXfP7j83F2/qtMIuAPhtf3c= - dependencies: - debug "4" - -agent-base@^7.0.2, agent-base@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" - integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== - dependencies: - debug "^4.3.4" +agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== aggregate-error@^3.0.0: version "3.0.1" @@ -3585,7 +3800,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-styles@^5.0.0: +ansi-styles@^5.0.0, ansi-styles@^5.2.0: version "5.2.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== @@ -3595,10 +3810,10 @@ ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -anymatch@^3.0.3, anymatch@^3.1.0, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== +anymatch@^3.0.3, anymatch@^3.1.0, anymatch@^3.1.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -3825,17 +4040,17 @@ axios@^1.6.0: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== +babel-jest@30.0.2, babel-jest@^30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.2.tgz#f627dc5afc3bd5795fc84735b4f1d74f9d4b8e91" + integrity sha512-A5kqR1/EUTidM2YC2YMEUDP2+19ppgOwK0IAd9Swc3q2KqFb5f9PtRUXVeZcngu0z5mDMyZ9zH2huJZSOMLiTQ== dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" + "@jest/transform" "30.0.2" + "@types/babel__core" "^7.20.5" + babel-plugin-istanbul "^7.0.0" + babel-preset-jest "30.0.1" + chalk "^4.1.2" + graceful-fs "^4.2.11" slash "^3.0.0" babel-loader@^10.0.0: @@ -3850,26 +4065,25 @@ babel-plugin-add-module-exports@^1.0.4: resolved "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz" integrity sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg== -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== +babel-plugin-istanbul@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz#629a178f63b83dc9ecee46fd20266283b1f11280" + integrity sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-instrument "^6.0.2" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== +babel-plugin-jest-hoist@30.0.1: + version "30.0.1" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz#f271b2066d2c1fb26a863adb8e13f85b06247125" + integrity sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ== dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.3" + "@types/babel__core" "^7.20.5" babel-plugin-polyfill-corejs2@^0.4.10: version "0.4.10" @@ -3895,31 +4109,34 @@ babel-plugin-polyfill-regenerator@^0.6.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.6.1" -babel-preset-current-node-syntax@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz" - integrity sha1-z1/u8pVRJTRxz6gvyOD1Bj3wenc= +babel-preset-current-node-syntax@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" + integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== +babel-preset-jest@30.0.1: + version "30.0.1" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz#7d28db9531bce264e846c8483d54236244b8ae88" + integrity sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw== dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" + babel-plugin-jest-hoist "30.0.1" + babel-preset-current-node-syntax "^1.1.0" babelify@^10.0.0: version "10.0.0" @@ -4263,9 +4480,10 @@ browserslist@^4.0.0, browserslist@^4.24.0, browserslist@^4.24.3, browserslist@^4 node-releases "^2.0.19" update-browserslist-db "^1.1.3" -bser@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz" +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" @@ -4373,9 +4591,10 @@ call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: call-bind-apply-helpers "^1.0.2" get-intrinsic "^1.3.0" -callsites@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz" +callsites@^3.0.0, callsites@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^4.1.2: version "4.1.2" @@ -4409,10 +4628,10 @@ camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA= -camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" - integrity sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk= +camelcase@^6.2.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== camelcase@^7.0.0: version "7.0.1" @@ -4547,15 +4766,15 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== +ci-info@^3.2.0, ci-info@^3.7.0: + version "3.9.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -ci-info@^4.0.0, ci-info@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz#92319d2fa29d2620180ea5afed31f589bc98cf83" - integrity sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A== +ci-info@^4.0.0, ci-info@^4.1.0, ci-info@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" + integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -4564,10 +4783,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -cjs-module-lexer@^1.0.0: - version "1.2.1" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz" - integrity sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw== +cjs-module-lexer@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz#586e87d4341cb2661850ece5190232ccdebcff8b" + integrity sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA== clean-css@^5.2.2: version "5.3.1" @@ -4707,10 +4926,10 @@ coffeescript@^1.12.7: resolved "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz" integrity sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA== -collect-v8-coverage@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz" - integrity sha1-FQ7mNKw2ULcdnJhet/YIlCM0/rE= +collect-v8-coverage@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^2.0.1: version "2.0.1" @@ -5110,19 +5329,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -5335,22 +5541,13 @@ csso@^5.0.5: dependencies: css-tree "~2.2.0" -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== +cssstyle@^4.2.1: + version "4.5.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-4.5.0.tgz#b2d6f06884db0de8315443fb75b0a48d60931cac" + integrity sha512-/7gw8TGrvH/0g564EnhgFZogTMVe+lifpB7LWU+PEsiq5o83TUXR3fDbzTRXOJhoJwck5IS9ez3Em5LNMMO2aw== dependencies: - cssom "~0.3.6" + "@asamuzakjp/css-color" "^3.2.0" + rrweb-cssom "^0.8.0" csstype@^3.0.2: version "3.1.1" @@ -5422,14 +5619,13 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" - integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== +data-urls@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz#2f76906bce1824429ffecb6920f45a0b30f00dde" + integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.0.0" data-view-buffer@^1.0.2: version "1.0.2" @@ -5508,22 +5704,27 @@ decamelize@^6.0.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e" integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA== -decimal.js@^10.4.1: - version "10.4.1" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.1.tgz" - integrity sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw== +decimal.js@^10.5.0: + version "10.5.0" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz#0f371c7cf6c4898ce0afb09836db73cd82010f22" + integrity sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw== -dedent@1.5.3, dedent@^1.0.0: +dedent@1.5.3: version "1.5.3" resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== -deep-is@^0.1.3, deep-is@~0.1.3: +dedent@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2" + integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA== + +deep-is@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.2.2, deepmerge@^4.3.1: +deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -5649,10 +5850,10 @@ detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz" -detect-newline@^3.0.0: +detect-newline@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - integrity sha1-V29d/GOuGhkv8ZLYrTr2MImRtlE= + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@^2.0.4: version "2.0.4" @@ -5755,13 +5956,6 @@ domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domexception@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" - integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== - dependencies: - webidl-conversions "^7.0.0" - domhandler@^4.0.0, domhandler@^4.2.0: version "4.3.1" resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" @@ -5953,6 +6147,11 @@ entities@^4.2.0, entities@^4.4.0: resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== +entities@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694" + integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g== + env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -6142,18 +6341,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - eslint-config-prettier@^10.1.5: version "10.1.5" resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz#00c18d7225043b6fbce6a665697377998d453782" @@ -6264,7 +6451,7 @@ espree@^10.0.1, espree@^10.3.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.2.0" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" @@ -6362,7 +6549,7 @@ execa@5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execa@^5.0.0, execa@^5.1.1: +execa@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -6399,9 +6586,10 @@ executable@^4.1.1: dependencies: pify "^2.2.0" -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" +exit-x@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz#1f9052de3b8d99a696b10dad5bced9bdd5c3aa64" + integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" @@ -6410,7 +6598,19 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^29.0.0, expect@^29.7.0: +expect@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/expect/-/expect-30.0.2.tgz#d073942c19d54cb7bc42c9b2a434d850433a7def" + integrity sha512-YN9Mgv2mtTWXVmifQq3QT+ixCL/uLuLJw+fdp8MOjKqu8K3XQh3o5aulMM1tn+O2DdrWNxLZTeJsCY/VofUA0A== + dependencies: + "@jest/expect-utils" "30.0.2" + "@jest/get-type" "30.0.1" + jest-matcher-utils "30.0.2" + jest-message-util "30.0.2" + jest-mock "30.0.2" + jest-util "30.0.2" + +expect@^29.0.0: version "29.7.0" resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== @@ -6516,7 +6716,7 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -6547,11 +6747,12 @@ faye-websocket@^0.11.3: dependencies: websocket-driver ">=0.5.1" -fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz" +fb-watchman@^2.0.0, fb-watchman@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: - bser "^2.0.0" + bser "2.1.1" fd-slicer@~1.1.0: version "1.1.0" @@ -6649,6 +6850,13 @@ find-up@^6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + findup-sync@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz#54380ad965a7edca00cc8f63113559aadc541bd2" @@ -6808,10 +7016,10 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fsevents@^2.3.2, fsevents@^2.3.3, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" @@ -7311,12 +7519,12 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -html-encoding-sniffer@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" - integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== +html-encoding-sniffer@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" + integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== dependencies: - whatwg-encoding "^2.0.0" + whatwg-encoding "^3.1.1" html-escaper@^2.0.0: version "2.0.2" @@ -7403,19 +7611,10 @@ http-parser-js@>=0.5.1: resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz" integrity sha1-AdJwnHnUFpi7AdTezF6dpOSgM9k= -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" - integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== +http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: agent-base "^7.1.0" debug "^4.3.4" @@ -7465,20 +7664,12 @@ https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" -https-proxy-agent@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - 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.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" - integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== +https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.6: + version "7.0.6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== dependencies: - agent-base "^7.0.2" + agent-base "^7.1.2" debug "4" human-signals@^1.1.1: @@ -7585,7 +7776,7 @@ import-lazy@~4.0.0: resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== -import-local@3.1.0, import-local@^3.0.2: +import-local@3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== @@ -7593,6 +7784,14 @@ import-local@3.1.0, import-local@^3.0.2: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" +import-local@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" @@ -7880,9 +8079,10 @@ is-fullwidth-code-point@^5.0.0: dependencies: get-east-asian-width "^1.0.0" -is-generator-fn@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.0.0.tgz" +is-generator-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.10, is-generator-function@^1.0.7: version "1.0.10" @@ -8130,7 +8330,7 @@ is-windows@^1.0.1: resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.2.0: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -8180,25 +8380,14 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^5.0.4: - version "5.1.0" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8" - integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== +istanbul-lib-instrument@^6.0.0, istanbul-lib-instrument@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" istanbul-lib-coverage "^3.2.0" semver "^7.5.4" @@ -8211,14 +8400,14 @@ istanbul-lib-report@^3.0.0: make-dir "^3.0.0" supports-color "^7.1.0" -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz" - integrity sha1-dXQ85tlruG3H7kNSz2Nmoj8LGtk= +istanbul-lib-source-maps@^5.0.0: + version "5.0.6" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== dependencies: + "@jridgewell/trace-mapping" "^0.3.23" debug "^4.1.1" istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" istanbul-reports@^3.1.3: version "3.1.3" @@ -8266,86 +8455,97 @@ jake@^10.8.5: filelist "^1.0.1" minimatch "^3.0.4" -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== +jest-changed-files@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.0.2.tgz#2c275263037f8f291b71cbb0a4f639c519ab7eb8" + integrity sha512-Ius/iRST9FKfJI+I+kpiDh8JuUlAISnRszF9ixZDIqJF17FckH5sOzKC8a0wd0+D+8em5ADRHA5V5MnfeDk2WA== dependencies: - execa "^5.0.0" - jest-util "^29.7.0" + execa "^5.1.1" + jest-util "30.0.2" p-limit "^3.1.0" -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== +jest-circus@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-30.0.2.tgz#a00a408d5d32d2b547f20f9e84a487d236ed8ee1" + integrity sha512-NRozwx4DaFHcCUtwdEd/0jBLL1imyMrCbla3vF//wdsB2g6jIicMbjx9VhqE/BYU4dwsOQld+06ODX0oZ9xOLg== dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" + "@jest/environment" "30.0.2" + "@jest/expect" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - chalk "^4.0.0" + chalk "^4.1.2" co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" + dedent "^1.6.0" + is-generator-fn "^2.1.0" + jest-each "30.0.2" + jest-matcher-utils "30.0.2" + jest-message-util "30.0.2" + jest-runtime "30.0.2" + jest-snapshot "30.0.2" + jest-util "30.0.2" p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" + pretty-format "30.0.2" + pure-rand "^7.0.0" slash "^3.0.0" - stack-utils "^2.0.3" + stack-utils "^2.0.6" -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== +jest-cli@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-30.0.2.tgz#cf8ad8a1157721c3a1dc3a371565f6b7f5e6b549" + integrity sha512-yQ6Qz747oUbMYLNAqOlEby+hwXx7WEJtCl0iolBRpJhr2uvkBgiVMrvuKirBc8utwQBnkETFlDUkYifbRpmBrQ== dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" + "@jest/core" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" + chalk "^4.1.2" + exit-x "^0.2.2" + import-local "^3.2.0" + jest-config "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" + yargs "^17.7.2" -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" +jest-config@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-30.0.2.tgz#a4884ba3b4d31fb0599b0b78e7a0204efb126f9d" + integrity sha512-vo0fVq+uzDcXETFVnCUyr5HaUCM8ES6DEuS9AFpma34BVXMRRNlsqDyiW5RDHaEFoeFlJHoI4Xjh/WSYIAL58g== + dependencies: + "@babel/core" "^7.27.4" + "@jest/get-type" "30.0.1" + "@jest/pattern" "30.0.1" + "@jest/test-sequencer" "30.0.2" + "@jest/types" "30.0.1" + babel-jest "30.0.2" + chalk "^4.1.2" + ci-info "^4.2.0" + deepmerge "^4.3.1" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-circus "30.0.2" + jest-docblock "30.0.1" + jest-environment-node "30.0.2" + jest-regex-util "30.0.1" + jest-resolve "30.0.2" + jest-runner "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" + micromatch "^4.0.8" parse-json "^5.2.0" - pretty-format "^29.7.0" + pretty-format "30.0.2" slash "^3.0.0" strip-json-comments "^3.1.1" +jest-diff@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.2.tgz#db77e7ca48a964337c0a4259d5e389c0bb124d7e" + integrity sha512-2UjrNvDJDn/oHFpPrUTVmvYYDNeNtw2DlY3er8bI6vJJb9Fb35ycp/jFLd5RdV59tJ8ekVXX3o/nwPcscgXZJQ== + dependencies: + "@jest/diff-sequences" "30.0.1" + "@jest/get-type" "30.0.1" + chalk "^4.1.2" + pretty-format "30.0.2" + "jest-diff@>=29.4.3 < 30", jest-diff@^29.2.0, jest-diff@^29.4.1, jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -8356,49 +8556,47 @@ jest-config@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== +jest-docblock@30.0.1: + version "30.0.1" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.0.1.tgz#545ff59f2fa88996bd470dba7d3798a8421180b1" + integrity sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA== dependencies: - detect-newline "^3.0.0" + detect-newline "^3.1.0" -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== +jest-each@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-30.0.2.tgz#402e189784715f5c76f1bb97c29842e79abe99a1" + integrity sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ== dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" + "@jest/get-type" "30.0.1" + "@jest/types" "30.0.1" + chalk "^4.1.2" + jest-util "30.0.2" + pretty-format "30.0.2" -jest-environment-jsdom@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" - integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== +jest-environment-jsdom@^30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.0.2.tgz#8f0eb3544ba5abb8de71a2be42b5a95f04485e91" + integrity sha512-lwMpe7hZ81e2PpHj+4nowAzSkC0p8ftRfzC+qEjav9p5ElCs6LAce3y46iLwMS27oL9+/KQe55gUvUDwrlDeJQ== dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/jsdom" "^20.0.0" + "@jest/environment" "30.0.2" + "@jest/environment-jsdom-abstract" "30.0.2" + "@types/jsdom" "^21.1.7" "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - jsdom "^20.0.0" + jsdom "^26.1.0" -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== +jest-environment-node@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.0.2.tgz#3c24d6becb505f344f52cddb15ea506cf3288543" + integrity sha512-XsGtZ0H+a70RsxAQkKuIh0D3ZlASXdZdhpOSBq9WRPq6lhe0IoQHGW0w9ZUaPiZQ/CpkIdprvlfV1QcXcvIQLQ== dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" + jest-mock "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" jest-fetch-mock@^3.0.3: version "3.0.3" @@ -8413,6 +8611,24 @@ jest-get-type@^29.6.3: resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== +jest-haste-map@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.0.2.tgz#83826e7e352fa139dc95100337aff4de58c99453" + integrity sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ== + dependencies: + "@jest/types" "30.0.1" + "@types/node" "*" + anymatch "^3.1.3" + fb-watchman "^2.0.2" + graceful-fs "^4.2.11" + jest-regex-util "30.0.1" + jest-util "30.0.2" + jest-worker "30.0.2" + micromatch "^4.0.8" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.3" + jest-haste-map@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" @@ -8432,13 +8648,23 @@ jest-haste-map@^29.7.0: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== +jest-leak-detector@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.0.2.tgz#da4df660615d170136d2b468af3bf1c9bff0137e" + integrity sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ== dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" + "@jest/get-type" "30.0.1" + pretty-format "30.0.2" + +jest-matcher-utils@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.2.tgz#2dbb5f9aacfdd9c013fa72ed6132ca4e1b41f8db" + integrity sha512-1FKwgJYECR8IT93KMKmjKHSLyru0DqguThov/aWpFccC0wbiXGOxYEu7SScderBD7ruDOpl7lc5NG6w3oxKfaA== + dependencies: + "@jest/get-type" "30.0.1" + chalk "^4.1.2" + jest-diff "30.0.2" + pretty-format "30.0.2" jest-matcher-utils@^29.7.0: version "29.7.0" @@ -8450,6 +8676,21 @@ jest-matcher-utils@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" +jest-message-util@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.2.tgz#9dfdc37570d172f0ffdc42a0318036ff4008837f" + integrity sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@jest/types" "30.0.1" + "@types/stack-utils" "^2.0.3" + chalk "^4.1.2" + graceful-fs "^4.2.11" + micromatch "^4.0.8" + pretty-format "30.0.2" + slash "^3.0.0" + stack-utils "^2.0.6" + jest-message-util@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" @@ -8465,34 +8706,53 @@ jest-message-util@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== +jest-mock@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.2.tgz#5e4245f25f6f9532714906cab10a2b9e39eb2183" + integrity sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA== dependencies: - "@jest/types" "^29.6.3" + "@jest/types" "30.0.1" "@types/node" "*" - jest-util "^29.7.0" + jest-util "30.0.2" -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" - integrity sha1-twSsCuAoqJEIpNBAs/kZ393I4zw= +jest-pnp-resolver@^1.2.2, jest-pnp-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== +jest-resolve-dependencies@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.2.tgz#0c5da8dc5f791f3de10c1d5df294503cd612e5a6" + integrity sha512-Lp1iIXpsF5fGM4vyP8xHiIy2H5L5yO67/nXoYJzH4kz+fQmO+ZMKxzYLyWxYy4EeCLeNQ6a9OozL+uHZV2iuEA== dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" + jest-regex-util "30.0.1" + jest-snapshot "30.0.2" + +jest-resolve@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.0.2.tgz#4b7c826a35e9657189568e4dafc0ba5f05868cf2" + integrity sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw== + dependencies: + chalk "^4.1.2" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + jest-pnp-resolver "^1.2.3" + jest-util "30.0.2" + jest-validate "30.0.2" + slash "^3.0.0" + unrs-resolver "^1.7.11" -jest-resolve@^29.5.0, jest-resolve@^29.7.0: +jest-resolve@^29.5.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== @@ -8507,86 +8767,100 @@ jest-resolve@^29.5.0, jest-resolve@^29.7.0: resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== +jest-runner@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-30.0.2.tgz#28022ea290e2759864ae97cb5307bcae98e68f2d" + integrity sha512-6H+CIFiDLVt1Ix6jLzASXz3IoIiDukpEIxL9FHtDQ2BD/k5eFtDF5e5N9uItzRE3V1kp7VoSRyrGBytXKra4xA== dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" + "@jest/console" "30.0.2" + "@jest/environment" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - chalk "^4.0.0" + chalk "^4.1.2" emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" + exit-x "^0.2.2" + graceful-fs "^4.2.11" + jest-docblock "30.0.1" + jest-environment-node "30.0.2" + jest-haste-map "30.0.2" + jest-leak-detector "30.0.2" + jest-message-util "30.0.2" + jest-resolve "30.0.2" + jest-runtime "30.0.2" + jest-util "30.0.2" + jest-watcher "30.0.2" + jest-worker "30.0.2" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" +jest-runtime@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.0.2.tgz#db5b4723ebdb8c2158779c055976cb6cc22ce1df" + integrity sha512-H1a51/soNOeAjoggu6PZKTH7DFt8JEGN4mesTSwyqD2jU9PXD04Bp6DKbt2YVtQvh2JcvH2vjbkEerCZ3lRn7A== + dependencies: + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/globals" "30.0.2" + "@jest/source-map" "30.0.1" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" + chalk "^4.1.2" + cjs-module-lexer "^2.1.0" + collect-v8-coverage "^1.0.2" + glob "^10.3.10" + graceful-fs "^4.2.11" + jest-haste-map "30.0.2" + jest-message-util "30.0.2" + jest-mock "30.0.2" + jest-regex-util "30.0.1" + jest-resolve "30.0.2" + jest-snapshot "30.0.2" + jest-util "30.0.2" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" +jest-snapshot@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.0.2.tgz#0f9f2c59c2070874a2db96d30c8543dfef657701" + integrity sha512-KeoHikoKGln3OlN7NS7raJ244nIVr2K46fBTNdfuxqYv2/g4TVyWDSO4fmk08YBJQMjs3HNfG1rlLfL/KA+nUw== + dependencies: + "@babel/core" "^7.27.4" + "@babel/generator" "^7.27.5" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/types" "^7.27.3" + "@jest/expect-utils" "30.0.2" + "@jest/get-type" "30.0.1" + "@jest/snapshot-utils" "30.0.1" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" + babel-preset-current-node-syntax "^1.1.0" + chalk "^4.1.2" + expect "30.0.2" + graceful-fs "^4.2.11" + jest-diff "30.0.2" + jest-matcher-utils "30.0.2" + jest-message-util "30.0.2" + jest-util "30.0.2" + pretty-format "30.0.2" + semver "^7.7.2" + synckit "^0.11.8" + +jest-util@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-30.0.2.tgz#1bd8411f81e6f5e2ca8b31bb2534ebcd7cbac065" + integrity sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg== + dependencies: + "@jest/types" "30.0.1" + "@types/node" "*" + chalk "^4.1.2" + ci-info "^4.2.0" + graceful-fs "^4.2.11" + picomatch "^4.0.2" jest-util@^29.7.0: version "29.7.0" @@ -8600,6 +8874,18 @@ jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-validate@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-30.0.2.tgz#f62a2f0e014dac94747509ba8c2bcd5d48215b7f" + integrity sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ== + dependencies: + "@jest/get-type" "30.0.1" + "@jest/types" "30.0.1" + camelcase "^6.3.0" + chalk "^4.1.2" + leven "^3.1.0" + pretty-format "30.0.2" + jest-validate@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" @@ -8612,19 +8898,19 @@ jest-validate@^29.7.0: leven "^3.1.0" pretty-format "^29.7.0" -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== +jest-watcher@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.0.2.tgz#ec93ed25183679f549a47f6197267d50ec83ea51" + integrity sha512-vYO5+E7jJuF+XmONr6CrbXdlYrgvZqtkn6pdkgjt/dU64UAdc0v1cAVaAeWtAfUUMScxNmnUjKPUMdCpNVASwg== dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" + ansi-escapes "^4.3.2" + chalk "^4.1.2" emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" + jest-util "30.0.2" + string-length "^4.0.2" jest-websocket-mock@^2.5.0: version "2.5.0" @@ -8634,6 +8920,17 @@ jest-websocket-mock@^2.5.0: jest-diff "^29.2.0" mock-socket "^9.3.0" +jest-worker@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-30.0.2.tgz#e67bd7debbc9d8445907a17067a89359acedc8c5" + integrity sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg== + dependencies: + "@types/node" "*" + "@ungap/structured-clone" "^1.3.0" + jest-util "30.0.2" + merge-stream "^2.0.0" + supports-color "^8.1.1" + jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" @@ -8653,15 +8950,15 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== +jest@^30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/jest/-/jest-30.0.2.tgz#0b3af654548d706bdde6f1bba93099ec343b8772" + integrity sha512-HlSEiHRcmTuGwNyeawLTEzpQUMFn+f741FfoNg7RXG2h0WLJKozVCpcQLT0GW17H6kNCqRwGf+Ii/I1YVNvEGQ== dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" + "@jest/core" "30.0.2" + "@jest/types" "30.0.1" + import-local "^3.2.0" + jest-cli "30.0.2" jiti@^1.20.0: version "1.21.0" @@ -8696,37 +8993,31 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" -jsdom@^20.0.0: - version "20.0.1" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-20.0.1.tgz" - integrity sha512-pksjj7Rqoa+wdpkKcLzQRHhJCEE42qQhl/xLMUKHgoSejaKOdaXEAnqs6uDNwMl/fciHTzKeR8Wm8cw7N+g98A== - dependencies: - abab "^2.0.6" - acorn "^8.8.0" - acorn-globals "^7.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.2" - decimal.js "^10.4.1" - domexception "^4.0.0" - 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" +jsdom@^26.1.0: + version "26.1.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz#ab5f1c1cafc04bd878725490974ea5e8bf0c72b3" + integrity sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg== + dependencies: + cssstyle "^4.2.1" + data-urls "^5.0.0" + decimal.js "^10.5.0" + html-encoding-sniffer "^4.0.0" + http-proxy-agent "^7.0.2" + https-proxy-agent "^7.0.6" is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.2" - parse5 "^7.1.1" + nwsapi "^2.2.16" + parse5 "^7.2.1" + rrweb-cssom "^0.8.0" saxes "^6.0.0" symbol-tree "^3.2.4" - tough-cookie "^4.1.2" - w3c-xmlserializer "^3.0.0" + tough-cookie "^5.1.1" + w3c-xmlserializer "^5.0.0" webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - ws "^8.9.0" - xml-name-validator "^4.0.0" + whatwg-encoding "^3.1.1" + whatwg-mimetype "^4.0.0" + whatwg-url "^14.1.1" + ws "^8.18.0" + xml-name-validator "^5.0.0" jsesc@^3.0.2, jsesc@~3.0.2: version "3.0.2" @@ -8779,6 +9070,17 @@ json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" +json-stable-stringify@^1.0.2: + version "1.3.0" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz#8903cfac42ea1a0f97f35d63a4ce0518f0cc6a70" + integrity sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + isarray "^2.0.5" + jsonify "^0.0.1" + object-keys "^1.1.1" + json-stable-stringify@~0.0.0: version "0.0.1" resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz" @@ -8814,10 +9116,10 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +jsonify@^0.0.1, jsonify@~0.0.0: + version "0.0.1" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" @@ -8870,10 +9172,6 @@ klaw-sync@^6.0.0: dependencies: graceful-fs "^4.1.11" -kleur@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.2.tgz" - labeled-stream-splicer@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz" @@ -9017,14 +9315,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - libnpmaccess@8.0.6: version "8.0.6" resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-8.0.6.tgz#73be4c236258babc0a0bca6d3b6a93a6adf937cf" @@ -9277,10 +9567,10 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" -lru-cache@^10.0.1, lru-cache@^10.2.2, "lru-cache@^9.1.1 || ^10.0.0": - version "10.2.2" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== +lru-cache@^10.0.1, lru-cache@^10.2.2, lru-cache@^10.4.3, "lru-cache@^9.1.1 || ^10.0.0": + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== lru-cache@^11.0.0: version "11.0.2" @@ -9824,6 +10114,11 @@ nanoid@^3.3.11: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== +napi-postinstall@^0.2.2: + version "0.2.4" + resolved "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz#419697d0288cb524623e422f919624f22a5e4028" + integrity sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" @@ -10069,10 +10364,10 @@ nth-check@^2.0.0, nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nwsapi@^2.2.2: - version "2.2.2" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz" - integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== +nwsapi@^2.2.16: + version "2.2.20" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz#22e53253c61e7b0e7e93cef42c891154bcca11ef" + integrity sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA== nx@19.0.2, "nx@>=17.1.2 < 20": version "19.0.2" @@ -10264,6 +10559,14 @@ open@^10.0.3: is-inside-container "^1.0.0" is-wsl "^3.1.0" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + open@^8.4.0: version "8.4.0" resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" @@ -10273,18 +10576,6 @@ open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.3: version "0.9.3" resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" @@ -10620,12 +10911,12 @@ parse-url@^8.1.0: dependencies: parse-path "^7.0.0" -parse5@^7.0.0, parse5@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz" - integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg== +parse5@^7.0.0, parse5@^7.2.1: + version "7.3.0" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz#d7e224fa72399c7a175099f45fc2ad024b05ec05" + integrity sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw== dependencies: - entities "^4.4.0" + entities "^6.0.0" parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" @@ -10647,6 +10938,27 @@ pascal-case@^4.0.0: dependencies: no-case "^4.0.0" +patch-package@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61" + integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + ci-info "^3.7.0" + cross-spawn "^7.0.3" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + json-stable-stringify "^1.0.2" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^7.5.3" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^2.2.2" + path-browserify@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" @@ -10813,10 +11125,10 @@ pify@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" -pirates@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz" - integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw== +pirates@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== pkg-dir@^4.2.0: version "4.2.0" @@ -11370,16 +11682,16 @@ postcss@^8.4.33, postcss@^8.5.6: picocolors "^1.1.1" source-map-js "^1.2.1" +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha1-3rxkidem5rDnYRiIzsiAM30xY5Y= -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - prettier@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/prettier/-/prettier-3.6.0.tgz#18ec98d62cb0757a5d4eab40253ff3e6d0fc8dea" @@ -11398,6 +11710,15 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" +pretty-format@30.0.2: + version "30.0.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz#54717b6aa2b4357a2e6d83868e10a2ea8dd647c7" + integrity sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg== + dependencies: + "@jest/schemas" "30.0.1" + ansi-styles "^5.2.0" + react-is "^18.3.1" + pretty-format@^27.0.2: version "27.5.1" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" @@ -11467,13 +11788,6 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -prompts@^2.0.1: - version "2.0.3" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.0.3.tgz" - dependencies: - kleur "^3.0.2" - sisteransi "^1.0.0" - promzard@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/promzard/-/promzard-1.0.0.tgz#3246f8e6c9895a77c0549cefb65828ac0f6c006b" @@ -11518,11 +11832,6 @@ prr@~1.0.1: resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" @@ -11549,14 +11858,15 @@ punycode@^1.3.2: version "1.4.1" resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" +punycode@^2.1.0, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -pure-rand@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz#31207dddd15d43f299fdcdb2f572df65030c19af" - integrity sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg== +pure-rand@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz#6f53a5a9e3e4a47445822af96821ca509ed37566" + integrity sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ== qs@6.13.0: version "6.13.0" @@ -11580,11 +11890,6 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" @@ -11659,10 +11964,10 @@ react-is@^17.0.1: resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^18.0.0: - version "18.1.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz" - integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg== +react-is@^18.0.0, react-is@^18.3.1: + version "18.3.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== react@0.0.0-experimental-ee8509801-20230117: version "0.0.0-experimental-ee8509801-20230117" @@ -12013,6 +12318,13 @@ rfdc@^1.3.0, rfdc@^1.4.1: resolved "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" @@ -12042,6 +12354,11 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rrweb-cssom@^0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz#3021d1b4352fbf3b614aaeed0bc0d5739abe0bc2" + integrity sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw== + run-applescript@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" @@ -12168,7 +12485,7 @@ selfsigned@^2.4.1: resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.0.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -12373,7 +12690,7 @@ side-channel@^1.0.6, side-channel@^1.1.0: side-channel-map "^1.0.1" side-channel-weakmap "^1.0.2" -signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: +signal-exit@3.0.7, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -12400,10 +12717,6 @@ simple-concat@^1.0.0: resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" integrity sha1-9Gl2CCujXCJj8cirXt/ibEHJVS8= -sisteransi@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz" - slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" @@ -12611,10 +12924,10 @@ ssri@^10.0.0, ssri@^10.0.6: dependencies: minipass "^7.0.3" -stack-utils@^2.0.3: - version "2.0.3" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== +stack-utils@^2.0.3, stack-utils@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" @@ -12678,10 +12991,10 @@ string-argv@^0.3.2, string-argv@~0.3.1: resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz" - integrity sha1-Spc78x73fE7bzq3WryYRmWmF+KE= +string-length@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" strip-ansi "^6.0.0" @@ -12929,6 +13242,13 @@ symbol-tree@^3.2.4: resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +synckit@^0.11.8: + version "0.11.8" + resolved "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz#b2aaae998a4ef47ded60773ad06e7cb821f55457" + integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A== + dependencies: + "@pkgr/core" "^0.2.4" + syntax-error@^1.1.1: version "1.4.0" resolved "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz" @@ -13113,29 +13433,19 @@ toidentifier@1.0.1: resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@^4.1.2: - version "4.1.3" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tough-cookie@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz#6b6518e2b5c070cf742d872ee0f4f92d69eac1af" - integrity sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q== +tough-cookie@^5.0.0, tough-cookie@^5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz#66d774b4a1d9e12dc75089725af3ac75ec31bed7" + integrity sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A== dependencies: tldts "^6.1.32" -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== +tr46@^5.1.0: + version "5.1.1" + resolved "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz#96ae867cddb8fdb64a49cc3059a8d428bcf238ca" + integrity sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw== dependencies: - punycode "^2.1.1" + punycode "^2.3.1" tr46@~0.0.3: version "0.0.3" @@ -13243,13 +13553,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" @@ -13489,11 +13792,6 @@ universal-user-agent@^6.0.0: resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" integrity sha1-M4H4UDslHA2c0hvB3pOeyd9UgO4= -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - universalify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz" @@ -13513,6 +13811,33 @@ unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" +unrs-resolver@^1.7.11: + version "1.9.1" + resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.1.tgz#c3579abf32e48dbb1b429f4812196611afb021cf" + integrity sha512-4AZVxP05JGN6DwqIkSP4VKLOcwQa5l37SWHF/ahcuqBMbfxbpN1L1QKafEhWCziHhzKex9H/AR09H0OuVyU+9g== + dependencies: + napi-postinstall "^0.2.2" + optionalDependencies: + "@unrs/resolver-binding-android-arm-eabi" "1.9.1" + "@unrs/resolver-binding-android-arm64" "1.9.1" + "@unrs/resolver-binding-darwin-arm64" "1.9.1" + "@unrs/resolver-binding-darwin-x64" "1.9.1" + "@unrs/resolver-binding-freebsd-x64" "1.9.1" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.9.1" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.9.1" + "@unrs/resolver-binding-linux-arm64-gnu" "1.9.1" + "@unrs/resolver-binding-linux-arm64-musl" "1.9.1" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.9.1" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.9.1" + "@unrs/resolver-binding-linux-riscv64-musl" "1.9.1" + "@unrs/resolver-binding-linux-s390x-gnu" "1.9.1" + "@unrs/resolver-binding-linux-x64-gnu" "1.9.1" + "@unrs/resolver-binding-linux-x64-musl" "1.9.1" + "@unrs/resolver-binding-wasm32-wasi" "1.9.1" + "@unrs/resolver-binding-win32-arm64-msvc" "1.9.1" + "@unrs/resolver-binding-win32-ia32-msvc" "1.9.1" + "@unrs/resolver-binding-win32-x64-msvc" "1.9.1" + untildify@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" @@ -13552,14 +13877,6 @@ uri-js@^4.2.2, uri-js@^4.4.1: dependencies: punycode "^2.1.0" -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - url@~0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" @@ -13673,12 +13990,12 @@ void-elements@3.1.0: resolved "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz" integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== -w3c-xmlserializer@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz" - integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== +w3c-xmlserializer@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== dependencies: - xml-name-validator "^4.0.0" + xml-name-validator "^5.0.0" walk-up-path@^3.0.1: version "3.0.1" @@ -13829,10 +14146,10 @@ websocket-extensions@>=0.1.1: version "0.1.3" resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz" -whatwg-encoding@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" - integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== dependencies: iconv-lite "0.6.3" @@ -13841,17 +14158,17 @@ whatwg-fetch@^3.6.20: resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== +whatwg-mimetype@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== -whatwg-url@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" - integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== +whatwg-url@^14.0.0, whatwg-url@^14.1.1: + version "14.2.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz#4ee02d5d725155dae004f6ae95c73e7ef5d95663" + integrity sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw== dependencies: - tr46 "^3.0.0" + tr46 "^5.1.0" webidl-conversions "^7.0.0" whatwg-url@^5.0.0: @@ -13943,11 +14260,6 @@ wide-align@1.1.5: dependencies: string-width "^1.0.2 || 2 || 3 || 4" -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - integrity sha1-YQY29rH3A4kb00dxzLF/uTtHB5w= - wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" @@ -14002,7 +14314,7 @@ wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" -write-file-atomic@5.0.1, write-file-atomic@^5.0.0: +write-file-atomic@5.0.1, write-file-atomic@^5.0.0, write-file-atomic@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== @@ -14019,14 +14331,6 @@ write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - write-json-file@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz" @@ -14048,15 +14352,15 @@ write-pkg@4.0.0: type-fest "^0.4.1" write-json-file "^3.2.0" -ws@^8.18.0, ws@^8.18.2, ws@^8.9.0: +ws@^8.18.0, ws@^8.18.2: version "8.18.2" resolved "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a" integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== +xml-name-validator@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" + integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== xmlchars@^2.2.0: version "2.2.0" @@ -14083,10 +14387,10 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI= -yaml@^2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" - integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== +yaml@^2.2.2, yaml@^2.7.0: + version "2.8.0" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" + integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== yargs-parser@21.1.1, yargs-parser@^21.1.1: version "21.1.1" @@ -14098,7 +14402,7 @@ yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha1-tCiQ8UVmeW+Fro46JSkNIF8VSlQ= -yargs@17.7.2, yargs@^17.1.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: +yargs@17.7.2, yargs@^17.1.1, yargs@^17.6.2, yargs@^17.7.2: version "17.7.2" resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==