From 2f1dc5ced3bfc1d005fd4ff163026490a608d27d Mon Sep 17 00:00:00 2001 From: Vladimir Date: Wed, 29 Mar 2023 14:14:48 +0200 Subject: [PATCH] feat!: remove tinyspy internal properties on Vitest spies (#3069) --- docs/api/mock.md | 34 ++++--- packages/expect/src/jest-expect.ts | 4 +- packages/spy/package.json | 2 +- packages/spy/src/index.ts | 24 ++--- packages/vitest/package.json | 1 - pnpm-lock.yaml | 149 +++++++++++++++-------------- 6 files changed, 117 insertions(+), 97 deletions(-) diff --git a/docs/api/mock.md b/docs/api/mock.md index 40777340294a..eeebda2a005e 100644 --- a/docs/api/mock.md +++ b/docs/api/mock.md @@ -100,7 +100,7 @@ You should use spy assertions (e.g., [`toHaveBeenCalled`](/api/expect#tohavebeen ```js const myMockFn = vi.fn(() => 'original') - + myMockFn.withImplementation(() => 'temp', () => { myMockFn() // 'temp' }) @@ -113,7 +113,7 @@ You should use spy assertions (e.g., [`toHaveBeenCalled`](/api/expect#tohavebeen ```ts test('async callback', () => { const myMockFn = vi.fn(() => 'original') - + // We await this call since the callback is async await myMockFn.withImplementation( () => 'temp', @@ -121,7 +121,7 @@ You should use spy assertions (e.g., [`toHaveBeenCalled`](/api/expect#tohavebeen myMockFn() // 'temp' }, ) - + myMockFn() // 'original' }) ``` @@ -246,12 +246,15 @@ You should use spy assertions (e.g., [`toHaveBeenCalled`](/api/expect#tohavebeen This is an array containing all arguments for each call. One item of the array is the arguments of that call. -If a function was invoked twice with the following arguments `fn(arg1, arg2)`, `fn(arg3, arg4)` in that order, then `mock.calls` will be: - ```js -[ - ['arg1', 'arg2'], - ['arg3', 'arg4'], +const fn = vi.fn() + +fn('arg1', 'arg2') +fn('arg3', 'arg4') + +fn.mock.calls === [ + ['arg1', 'arg2'], // first call + ['arg3', 'arg4'], // second call ] ``` @@ -268,14 +271,23 @@ This is an array containing all values, that were `returned` from the function. The `value` property contains returned value or thrown error. -If function returned `result`, then threw an error, then `mock.results` will be: - ```js -[ +const fn = vi.fn() + +const result = fn() // returned 'result' + +try { + fn() // threw Error +} +catch {} + +fn.mock.results === [ + // first result { type: 'return', value: 'result', }, + // last result { type: 'throw', value: Error, diff --git a/packages/expect/src/jest-expect.ts b/packages/expect/src/jest-expect.ts index 6e03309c4237..d972ccffb6a5 100644 --- a/packages/expect/src/jest-expect.ts +++ b/packages/expect/src/jest-expect.ts @@ -466,7 +466,7 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => { def(['toHaveBeenLastCalledWith', 'lastCalledWith'], function (...args: any[]) { const spy = getSpy(this) const spyName = spy.getMockName() - const lastCall = spy.mock.calls[spy.calls.length - 1] + const lastCall = spy.mock.calls[spy.mock.calls.length - 1] this.assert( jestEquals(lastCall, args, [iterableEquality]), @@ -596,7 +596,7 @@ export const JestChaiExpect: ChaiPlugin = (chai, utils) => { def(['toHaveLastReturnedWith', 'lastReturnedWith'], function (value: any) { const spy = getSpy(this) const spyName = spy.getMockName() - const { value: lastResult } = spy.mock.results[spy.returns.length - 1] + const { value: lastResult } = spy.mock.results[spy.mock.results.length - 1] const pass = jestEquals(lastResult, value) this.assert( pass, diff --git a/packages/spy/package.json b/packages/spy/package.json index 10c832d8468f..a010b0562d41 100644 --- a/packages/spy/package.json +++ b/packages/spy/package.json @@ -29,6 +29,6 @@ "prepublishOnly": "pnpm build" }, "dependencies": { - "tinyspy": "^1.0.2" + "tinyspy": "^2.1.0" } } diff --git a/packages/spy/src/index.ts b/packages/spy/src/index.ts index 45e639d9be01..75f670e034e4 100644 --- a/packages/spy/src/index.ts +++ b/packages/spy/src/index.ts @@ -1,4 +1,4 @@ -import type { SpyImpl } from 'tinyspy' +import type { SpyInternalImpl } from 'tinyspy' import * as tinyspy from 'tinyspy' interface MockResultReturn { @@ -135,7 +135,7 @@ export type Mocked = { } & T -export type EnhancedSpy = SpyInstance & SpyImpl +export type EnhancedSpy = SpyInstance & SpyInternalImpl export const spies = new Set() @@ -170,7 +170,7 @@ export function spyOn( } as const const objMethod = accessType ? { [dictionary[accessType]]: method } : method - const stub = tinyspy.spyOn(obj, objMethod as any) + const stub = tinyspy.internalSpyOn(obj, objMethod as any) return enhanceSpy(stub) as SpyInstance } @@ -178,7 +178,7 @@ export function spyOn( let callOrder = 0 function enhanceSpy( - spy: SpyImpl, + spy: SpyInternalImpl, ): SpyInstance { const stub = spy as unknown as EnhancedSpy @@ -187,9 +187,11 @@ function enhanceSpy( let instances: any[] = [] let invocations: number[] = [] + const state = tinyspy.getInternalState(spy) + const mockContext = { get calls() { - return stub.calls + return state.calls }, get instances() { return instances @@ -198,13 +200,13 @@ function enhanceSpy( return invocations }, get results() { - return stub.results.map(([callType, value]) => { + return state.results.map(([callType, value]) => { const type = callType === 'error' ? 'throw' : 'return' return { type, value } }) }, get lastCall() { - return stub.calls[stub.calls.length - 1] + return state.calls[state.calls.length - 1] }, } @@ -220,7 +222,7 @@ function enhanceSpy( } stub.mockClear = () => { - stub.reset() + state.reset() instances = [] invocations = [] return stub @@ -303,10 +305,10 @@ function enhanceSpy( get: () => mockContext, }) - stub.willCall(function (this: unknown, ...args) { + state.willCall(function (this: unknown, ...args) { instances.push(this) invocations.push(++callOrder) - const impl = implementationChangedTemporarily ? implementation! : onceImplementations.shift() || implementation || stub.getOriginal() || (() => {}) + const impl = implementationChangedTemporarily ? implementation! : onceImplementations.shift() || implementation || state.getOriginal() || (() => {}) return impl.apply(this, args) }) @@ -322,5 +324,5 @@ export function fn( export function fn( implementation?: (...args: TArgs) => R, ): Mock { - return enhanceSpy(tinyspy.spyOn({ fn: implementation || (() => {}) }, 'fn')) as unknown as Mock + return enhanceSpy(tinyspy.internalSpyOn({ fn: implementation || (() => {}) }, 'fn')) as unknown as Mock } diff --git a/packages/vitest/package.json b/packages/vitest/package.json index fb588011c030..6489ee262be7 100644 --- a/packages/vitest/package.json +++ b/packages/vitest/package.json @@ -154,7 +154,6 @@ "strip-literal": "^1.0.0", "tinybench": "^2.3.1", "tinypool": "^0.4.0", - "tinyspy": "^1.0.2", "vite": "^3.0.0 || ^4.0.0", "vite-node": "workspace:*", "why-is-node-running": "^2.2.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cc1705d1c0b5..5243c9fbec05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -240,8 +240,8 @@ importers: react-dom: 18.0.0_react@18.0.0 devDependencies: '@testing-library/react': 13.3.0_zpnidt7m3osuk7shl3s4oenomq - '@types/node': 18.15.10 - '@types/react': 18.0.29 + '@types/node': 18.15.11 + '@types/react': 18.0.31 '@vitejs/plugin-react': 3.1.0 jsdom: 21.1.1 typescript: 4.8.4 @@ -721,9 +721,9 @@ importers: packages/spy: specifiers: - tinyspy: ^1.0.2 + tinyspy: ^2.1.0 dependencies: - tinyspy: 1.0.2 + tinyspy: 2.1.0 packages/ui: specifiers: @@ -896,7 +896,6 @@ importers: strip-literal: ^1.0.0 tinybench: ^2.3.1 tinypool: ^0.4.0 - tinyspy: ^1.0.2 typescript: ^4.9.4 vite: ^4.0.0 vite-node: workspace:* @@ -925,7 +924,6 @@ importers: strip-literal: 1.0.0 tinybench: 2.3.1 tinypool: 0.4.0 - tinyspy: 1.0.2 vite: 4.0.0_@types+node@18.7.13 vite-node: link:../vite-node why-is-node-running: 2.2.2 @@ -1103,7 +1101,7 @@ importers: vite: 4.0.0 vitest: link:../../packages/vitest vue: 3.2.47 - webdriverio: 8.6.8 + webdriverio: 8.6.9 test/css: specifiers: @@ -1326,7 +1324,7 @@ importers: strip-ansi: 7.0.1 vite: 4.0.0 vitest: link:../../packages/vitest - webdriverio: 8.6.8 + webdriverio: 8.6.9 test/web-worker: specifiers: @@ -5065,7 +5063,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/yargs': 15.0.14 chalk: 4.1.2 dev: true @@ -5077,7 +5075,7 @@ packages: '@jest/schemas': 29.0.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/yargs': 17.0.12 chalk: 4.1.2 dev: true @@ -5589,7 +5587,7 @@ packages: engines: {node: '>=14'} hasBin: true dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 playwright-core: 1.28.0 dev: true @@ -7427,7 +7425,7 @@ packages: /@types/cheerio/0.22.31: resolution: {integrity: sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/codemirror/5.60.6: @@ -7462,7 +7460,7 @@ packages: resolution: {integrity: sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA==} dependencies: '@types/cheerio': 0.22.31 - '@types/react': 18.0.29 + '@types/react': 18.0.31 dev: true /@types/eslint-scope/3.7.4: @@ -7494,33 +7492,33 @@ packages: resolution: {integrity: sha512-zdV5odfHf95B4qr6bdpshG4VMm/3xgnPhSJLa3xh75CYr35e34k+4FQli82Q48sPqwHazJGy+6+jl4T+Vw1AMg==} dependencies: '@types/jsonfile': 6.1.1 - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/fs-extra/9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/glob/7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.1 - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/glob/8.0.0: resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==} dependencies: '@types/minimatch': 5.1.1 - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/graceful-fs/4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/hast/2.3.4: @@ -7585,7 +7583,7 @@ packages: /@types/jsdom/21.1.0: resolution: {integrity: sha512-leWreJOdnuIxq9Y70tBVm/bvTuh31DSlF/r4l7Cfi4uhVQqLHD0Q4v301GMisEMwwbMgF7ZKxuZ+Jbd4NcdmRw==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/tough-cookie': 4.0.2 parse5: 7.1.1 dev: true @@ -7601,7 +7599,7 @@ packages: /@types/jsonfile/6.1.1: resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/lodash/4.14.191: @@ -7635,7 +7633,7 @@ packages: /@types/node-fetch/2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 form-data: 3.0.1 dev: true @@ -7651,8 +7649,8 @@ packages: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} dev: true - /@types/node/18.15.10: - resolution: {integrity: sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ==} + /@types/node/18.15.11: + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} dev: true /@types/node/18.7.13: @@ -7685,7 +7683,7 @@ packages: /@types/prompts/2.4.2: resolution: {integrity: sha512-TwNx7qsjvRIUv/BCx583tqF5IINEVjCNqg9ofKHRlSoUHE62WBHrem4B1HGXcIrG511v29d1kJ9a/t2Esz7MIg==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 kleur: 3.0.3 dev: true @@ -7705,19 +7703,19 @@ packages: /@types/react-dom/18.0.6: resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} dependencies: - '@types/react': 18.0.29 + '@types/react': 18.0.31 dev: true /@types/react-dom/18.0.8: resolution: {integrity: sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw==} dependencies: - '@types/react': 18.0.29 + '@types/react': 18.0.31 dev: true /@types/react-is/17.0.3: resolution: {integrity: sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==} dependencies: - '@types/react': 18.0.29 + '@types/react': 18.0.31 dev: false /@types/react-test-renderer/17.0.2: @@ -7729,7 +7727,7 @@ packages: /@types/react-transition-group/4.4.5: resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} dependencies: - '@types/react': 18.0.29 + '@types/react': 18.0.31 dev: false /@types/react/17.0.49: @@ -7748,8 +7746,8 @@ packages: csstype: 3.1.0 dev: true - /@types/react/18.0.29: - resolution: {integrity: sha512-wXHktgUABxplw1+UnljseDq4+uztQyp2tlWZRIxHlpchsCFqiYkvaDS8JR7eKOQm8wziTH/el5qL7D6gYNkYcw==} + /@types/react/18.0.31: + resolution: {integrity: sha512-EEG67of7DsvRDU6BLLI0p+k1GojDLz9+lZsnCpCRTa/lOokvyPBvp8S5x+A24hME3yyQuIipcP70KJ6H7Qupww==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 @@ -7758,7 +7756,7 @@ packages: /@types/resolve/1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/resolve/1.20.2: @@ -7775,7 +7773,7 @@ packages: /@types/set-cookie-parser/2.4.2: resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/sinonjs__fake-timers/8.1.1: @@ -7849,7 +7847,7 @@ packages: /@types/webpack-sources/3.2.0: resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/source-list-map': 0.1.2 source-map: 0.7.4 dev: true @@ -7857,7 +7855,7 @@ packages: /@types/webpack/4.41.32: resolution: {integrity: sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/tapable': 1.0.8 '@types/uglify-js': 3.17.0 '@types/webpack-sources': 3.2.0 @@ -7872,7 +7870,7 @@ packages: /@types/ws/8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@types/yargs-parser/21.0.0: @@ -7895,7 +7893,7 @@ packages: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true optional: true @@ -8925,28 +8923,28 @@ packages: resolution: {integrity: sha512-96G4TzbYnRf95+GURo15FYt6iTYq85nbWU6YQedLRAV15RfSp4foKTbAnq++bKKMALNL6gdzTc+HGhQr3Q0sQg==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@wdio/repl/8.6.6: resolution: {integrity: sha512-vyJzqHJ5yOmfVyk5WWo6pRsJ2xhgWl3DVIBdDNR0wKrtFcm/g1jnB+pNf6Eb7NhCDh3oGul25bmhAwWDoxcFYA==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@wdio/types/8.4.0: resolution: {integrity: sha512-1eA0D0jS8Ttg67zB2gsZJFUcHcRz4VRjLTjxdLKh70+ZfB1+YZr9tScLgQjc+qsjsK1wKSzOz03uZiidwNnN9g==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@wdio/types/8.6.8: resolution: {integrity: sha512-hwlkQ6E8DNIFL/l8vHve3Zpl1t6Hqle7vtatEkAlrmbnExc7qI6Yw6SI5T/KiBSAi0ez1OypbGhdrbXFfywxng==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 dev: true /@wdio/utils/8.6.1: @@ -10835,7 +10833,7 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.3.0 @@ -10857,12 +10855,12 @@ packages: mitt: 3.0.0 dev: true - /chromium-bidi/0.4.5_6o5gdkn34s2j2m26x63ssheuqa: + /chromium-bidi/0.4.5_7yd6ibrwer4fxzjxd6md3toxiy: resolution: {integrity: sha512-rkav9YzRfAshSTG3wNXF7P7yNiI29QAo1xBXElPoCoSQR5n20q3cOyVhDv6S7+GlF/CJ/emUxlQiR0xOPurkGg==} peerDependencies: devtools-protocol: '*' dependencies: - devtools-protocol: 0.0.1094867 + devtools-protocol: 0.0.1107588 mitt: 3.0.0 dev: true @@ -12030,12 +12028,16 @@ packages: resolution: {integrity: sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==} dev: true + /devtools-protocol/0.0.1107588: + resolution: {integrity: sha512-yIR+pG9x65Xko7bErCUSQaDLrO/P1p3JUzEk7JCU4DowPcGHkTGUGQapcfcLc4qj0UaALwZ+cr0riFgiqpixcg==} + dev: true + /devtools-protocol/0.0.1116775: resolution: {integrity: sha512-jjWlaRN+ntWqV4bYlkg7lzIAXTnzFlznLiSj2kTPZVOHX+t0FW6gCPsgjjQA/4wray7PdbWZ09lMlkCuVWvtZA==} dev: true - /devtools-protocol/0.0.1119014: - resolution: {integrity: sha512-ewXoFOkLIpKqsiZ19Rm8l46FqDlj+yACbysDIKlUWqTbZ4BBovWmoCegkLHbfTSjGrrLdaXkD1EKA4VF0O9q3g==} + /devtools-protocol/0.0.1122063: + resolution: {integrity: sha512-hdyXfFDpLM5rdmaFCOs3lG55Tcb8aFZGmfxpws04TVD+TWZSl18nxd62hin36PnaBLuJ1awzK5fe8SGL5nm4TA==} dev: true /devtools-protocol/0.0.981744: @@ -12046,7 +12048,7 @@ packages: resolution: {integrity: sha512-dqR5SUsqpJBkY+SpzSPyRwAdwn3PdoCFjgaRqO2jkF0IXgvBkKsXSepAN2QV4/nbcFXB6mokJZ0rlHSzVl7GkQ==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@wdio/config': 8.6.2 '@wdio/logger': 8.1.0 '@wdio/protocols': 8.5.7 @@ -12068,11 +12070,11 @@ packages: - utf-8-validate dev: true - /devtools/8.6.8: - resolution: {integrity: sha512-4TzEf6jbURKlCX6zwvYgkGInGTnPgKvd3OyHrBDI8pQWdzdvyL8gBO90UY+zjpFXANT+xZMYDX7aq+txCOeGqA==} + /devtools/8.6.9: + resolution: {integrity: sha512-Xv7NA5nUPU2ma/VMcAYRIMLX4+YrsEOXMG6ZGPVuU5tC9zylb5L7fkBCqjqYJ/kkVWibbIn3l63hMpnZ63AS5w==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@wdio/config': 8.6.8 '@wdio/logger': 8.6.6 '@wdio/protocols': 8.6.6 @@ -12081,7 +12083,7 @@ packages: chrome-launcher: 0.15.1 edge-paths: 3.0.5 import-meta-resolve: 2.2.2 - puppeteer-core: 19.7.5 + puppeteer-core: 19.8.0 query-selector-shadow-dom: 1.0.1 ua-parser-js: 1.0.34 uuid: 9.0.0 @@ -15437,7 +15439,7 @@ packages: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.10 + '@types/node': 18.15.11 anymatch: 3.1.2 fb-watchman: 2.0.1 graceful-fs: 4.2.10 @@ -15505,7 +15507,7 @@ packages: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 graceful-fs: 4.2.10 dev: true @@ -15514,7 +15516,7 @@ packages: engines: {node: '>= 10.14.2'} dependencies: '@jest/types': 26.6.2 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 graceful-fs: 4.2.10 is-ci: 2.0.0 @@ -15526,7 +15528,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.0.1 - '@types/node': 18.15.10 + '@types/node': 18.15.11 chalk: 4.1.2 ci-info: 3.7.0 graceful-fs: 4.2.10 @@ -15537,7 +15539,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 merge-stream: 2.0.0 supports-color: 7.2.0 dev: true @@ -15546,7 +15548,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -18502,8 +18504,8 @@ packages: - utf-8-validate dev: true - /puppeteer-core/19.7.5: - resolution: {integrity: sha512-EJuNha+SxPfaYFbkoWU80H3Wb1SiQH5fFyb2xdbWda0ziax5mhV63UMlqNfPeTDIWarwtR4OIcq/9VqY8HPOsg==} + /puppeteer-core/19.8.0: + resolution: {integrity: sha512-5gBkLR9nae7chWDhI3mpj5QA+hPmjEOW29qw5ap5g51Uo5Lxe5Yip1uyQwZSjg5Wn/eyE9grh2Lyx3m8rPK90A==} engines: {node: '>=14.14.0'} peerDependencies: typescript: '>= 4.7.4' @@ -18511,17 +18513,16 @@ packages: typescript: optional: true dependencies: - chromium-bidi: 0.4.5_6o5gdkn34s2j2m26x63ssheuqa + chromium-bidi: 0.4.5_7yd6ibrwer4fxzjxd6md3toxiy cross-fetch: 3.1.5 debug: 4.3.4 - devtools-protocol: 0.0.1094867 + devtools-protocol: 0.0.1107588 extract-zip: 2.0.1 https-proxy-agent: 5.0.1 proxy-from-env: 1.1.0 - rimraf: 4.4.0 tar-fs: 2.1.1 unbzip2-stream: 1.4.3 - ws: 8.12.1 + ws: 8.13.0 transitivePeerDependencies: - bufferutil - encoding @@ -20870,6 +20871,12 @@ packages: /tinyspy/1.0.2: resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} engines: {node: '>=14.0.0'} + dev: true + + /tinyspy/2.1.0: + resolution: {integrity: sha512-7eORpyqImoOvkQJCSkL0d0mB4NHHIFAy4b1u8PHdDa7SjGS2njzl6/lyGoZLm+eyYEtlUmFGE0rFj66SWxZgQQ==} + engines: {node: '>=14.0.0'} + dev: false /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -22359,7 +22366,7 @@ packages: resolution: {integrity: sha512-jgnu/hB7O8hrjCZm6zW77QhBEdwteQF+liWvjZcflQXUmS/YLdS/UAfCBQzt1CIUHfbGrlxHshwFm+ywjT9XJw==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/ws': 8.5.4 '@wdio/config': 8.6.2 '@wdio/logger': 8.1.0 @@ -22379,7 +22386,7 @@ packages: resolution: {integrity: sha512-v+43Z4miGKa1JaFAIxgK5AedBgHV/7MI+jd3fJao24R/KWYNgC9GD4BUD6LxC7AChuyRdA1/cN3NjwrPTg0ujg==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@types/ws': 8.5.4 '@wdio/config': 8.6.8 '@wdio/logger': 8.6.6 @@ -22399,7 +22406,7 @@ packages: resolution: {integrity: sha512-XhS6lydSyCLnJcOBhLbSK6J0MQdfnSXaFcSvSEL10TMBnWcmETCfYIj7OX41weDI8F4YAasYyMH+mJUkWwC1Ww==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@wdio/config': 8.6.2 '@wdio/logger': 8.1.0 '@wdio/protocols': 8.5.7 @@ -22432,11 +22439,11 @@ packages: - utf-8-validate dev: true - /webdriverio/8.6.8: - resolution: {integrity: sha512-U1+O8zGx3yaGGf3RMGIaYlApdlmDX3AQ1qF8JX3mFqq2pvAxGSB6h6yDST8aJajzQv0sp+eXLER+O/rlEVwiOQ==} + /webdriverio/8.6.9: + resolution: {integrity: sha512-fyRdDc7vUBje5II0NdpjTTGh9BeTRtva+pDO52dmHiou1lF5Zths7/RlYpRb8xqYeWnCsAaSb7NTkskDvZxbow==} engines: {node: ^16.13 || >=18} dependencies: - '@types/node': 18.15.10 + '@types/node': 18.15.11 '@wdio/config': 8.6.8 '@wdio/logger': 8.6.6 '@wdio/protocols': 8.6.6 @@ -22447,15 +22454,15 @@ packages: aria-query: 5.0.2 css-shorthand-properties: 1.1.1 css-value: 0.0.1 - devtools: 8.6.8 - devtools-protocol: 0.0.1119014 + devtools: 8.6.9 + devtools-protocol: 0.0.1122063 grapheme-splitter: 1.0.4 import-meta-resolve: 2.2.2 is-plain-obj: 4.1.0 lodash.clonedeep: 4.5.0 lodash.zip: 4.2.0 minimatch: 7.4.2 - puppeteer-core: 19.7.5 + puppeteer-core: 19.8.0 query-selector-shadow-dom: 1.0.1 resq: 1.11.0 rgb2hex: 0.2.5