File tree Expand file tree Collapse file tree 6 files changed +28
-19
lines changed Expand file tree Collapse file tree 6 files changed +28
-19
lines changed Original file line number Diff line number Diff line change @@ -39,16 +39,19 @@ export interface IframeMockingDoneEvent {
3939
4040export interface IframeMockFactoryRequestEvent {
4141 type : 'mock-factory:request'
42+ eventId : string
4243 id : string
4344}
4445
4546export interface IframeMockFactoryResponseEvent {
4647 type : 'mock-factory:response'
48+ eventId : string
4749 exports : string [ ]
4850}
4951
5052export interface IframeMockFactoryErrorEvent {
5153 type : 'mock-factory:error'
54+ eventId : string
5255 error : any
5356}
5457
Original file line number Diff line number Diff line change 1- import type { IframeChannelOutgoingEvent } from '@vitest/browser/client'
1+ import type { IframeChannelOutgoingEvent , IframeMockFactoryErrorEvent , IframeMockFactoryResponseEvent } from '@vitest/browser/client'
22import { channel } from '@vitest/browser/client'
33import { ModuleMocker } from '@vitest/mocker/browser'
44import { getBrowserState } from '../utils'
@@ -14,18 +14,20 @@ export class VitestBrowserClientMocker extends ModuleMocker {
1414 const exports = Object . keys ( module )
1515 channel . postMessage ( {
1616 type : 'mock-factory:response' ,
17+ eventId : e . data . eventId ,
1718 exports,
18- } )
19+ } satisfies IframeMockFactoryResponseEvent )
1920 }
2021 catch ( err : any ) {
2122 channel . postMessage ( {
2223 type : 'mock-factory:error' ,
24+ eventId : e . data . eventId ,
2325 error : {
2426 name : err . name ,
2527 message : err . message ,
2628 stack : err . stack ,
2729 } ,
28- } )
30+ } satisfies IframeMockFactoryErrorEvent )
2931 }
3032 }
3133 } ,
Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import type {
66import type { MockedModuleSerialized } from '@vitest/mocker'
77import { ManualMockedModule } from '@vitest/mocker'
88import { ModuleMockerMSWInterceptor } from '@vitest/mocker/browser'
9+ import { nanoid } from '@vitest/utils'
910
1011export class VitestBrowserModuleMockerInterceptor extends ModuleMockerMSWInterceptor {
1112 override async register ( event : MockedModuleSerialized ) : Promise < void > {
@@ -42,19 +43,21 @@ export function createModuleMockerInterceptor() {
4243}
4344
4445function getFactoryExports ( id : string ) {
46+ const eventId = nanoid ( )
4547 channel . postMessage ( {
4648 type : 'mock-factory:request' ,
49+ eventId,
4750 id,
4851 } )
4952 return new Promise < string [ ] > ( ( resolve , reject ) => {
5053 channel . addEventListener (
5154 'message' ,
5255 function onMessage ( e : MessageEvent < IframeChannelEvent > ) {
53- if ( e . data . type === 'mock-factory:response' ) {
56+ if ( e . data . type === 'mock-factory:response' && e . data . eventId === eventId ) {
5457 resolve ( e . data . exports )
5558 channel . removeEventListener ( 'message' , onMessage )
5659 }
57- if ( e . data . type === 'mock-factory:error' ) {
60+ if ( e . data . type === 'mock-factory:error' && e . data . eventId === eventId ) {
5861 reject ( e . data . error )
5962 channel . removeEventListener ( 'message' , onMessage )
6063 }
Original file line number Diff line number Diff line change @@ -51,3 +51,5 @@ export type {
5151 SerializedError ,
5252 TestError ,
5353} from './types'
54+
55+ export { nanoid } from './nanoid'
Original file line number Diff line number Diff line change 1+ // port from nanoid
2+ // https://github.com/ai/nanoid
3+ const urlAlphabet
4+ = 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'
5+ export function nanoid ( size = 21 ) : string {
6+ let id = ''
7+ let i = size
8+ while ( i -- ) {
9+ id += urlAlphabet [ ( Math . random ( ) * 64 ) | 0 ]
10+ }
11+ return id
12+ }
Original file line number Diff line number Diff line change 11import type { Arrayable , Nullable } from '../types/general'
22
3- export { notNullish , getCallLastIndex } from '@vitest/utils'
3+ export { notNullish , getCallLastIndex , nanoid } from '@vitest/utils'
44
55export interface GlobalConstructors {
66 Object : ObjectConstructor
@@ -203,16 +203,3 @@ export function wildcardPatternToRegExp(pattern: string): RegExp {
203203 'i' ,
204204 )
205205}
206-
207- // port from nanoid
208- // https://github.com/ai/nanoid
209- const urlAlphabet
210- = 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'
211- export function nanoid ( size = 21 ) {
212- let id = ''
213- let i = size
214- while ( i -- ) {
215- id += urlAlphabet [ ( Math . random ( ) * 64 ) | 0 ]
216- }
217- return id
218- }
You can’t perform that action at this time.
0 commit comments