@@ -35,6 +35,10 @@ __webpack_require__ = new Proxy(
3535__webpack_require__ . rstest_original_modules = { } ;
3636__webpack_require__ . rstest_original_module_factories = { } ;
3737
38+ const hasOwn = ( target , property ) => Object . hasOwn ( target , property ) ;
39+
40+ const isPromise = ( value ) => value instanceof Promise ;
41+
3842//#region rs.unmock
3943__webpack_require__ . rstest_unmock = ( id ) => {
4044 const originalModuleFactory =
@@ -55,12 +59,11 @@ __webpack_require__.rstest_do_unmock = __webpack_require__.rstest_unmock;
5559//#region rs.requireActual
5660__webpack_require__ . rstest_require_actual =
5761 __webpack_require__ . rstest_import_actual = ( id ) => {
58- const originalModule = __webpack_require__ . rstest_original_modules [ id ] ;
59-
60- if ( originalModule ) {
61- return originalModule ;
62+ if ( hasOwn ( __webpack_require__ . rstest_original_modules , id ) ) {
63+ return __webpack_require__ . rstest_original_modules [ id ] ;
6264 }
63- if ( id in __webpack_require__ . rstest_original_module_factories ) {
65+
66+ if ( hasOwn ( __webpack_require__ . rstest_original_module_factories , id ) ) {
6467 const mod = __webpack_require__ . rstest_original_module_factories [ id ] ;
6568 const moduleInstance = { exports : { } } ;
6669 mod ( moduleInstance , moduleInstance . exports , __webpack_require__ ) ;
@@ -75,20 +78,30 @@ __webpack_require__.rstest_require_actual =
7578const getMockImplementation = ( mockType = 'mock' ) => {
7679 const isMockRequire =
7780 mockType === 'mockRequire' || mockType === 'doMockRequire' ;
81+
7882 // The mock and mockRequire will resolve to different module ids when the module is a dual package
7983 return ( id , modFactory ) => {
8084 // Only load the module if it's already in cache (to avoid side effects)
81- let requiredModule = __webpack_module_cache__ [ id ] ?. exports ;
82- const wasAlreadyLoaded = ! ! requiredModule ;
83-
84- if ( ! requiredModule ) {
85- // Module hasn't been loaded yet, so we can't get the original
86- // But we still need to save the original factory if it exists
87- __webpack_require__ . rstest_original_module_factories [ id ] =
88- __webpack_modules__ [ id ] ;
89- } else {
90- // Module was already loaded, save it
85+ const hasCachedModule = hasOwn ( __webpack_module_cache__ , id ) ;
86+ let requiredModule = hasCachedModule
87+ ? __webpack_module_cache__ [ id ] . exports
88+ : undefined ;
89+ const wasAlreadyLoaded = hasCachedModule ;
90+
91+ const hasSavedOriginalModule = hasOwn (
92+ __webpack_require__ . rstest_original_modules ,
93+ id ,
94+ ) ;
95+ const hasSavedOriginalFactory = hasOwn (
96+ __webpack_require__ . rstest_original_module_factories ,
97+ id ,
98+ ) ;
99+
100+ if ( ! hasSavedOriginalModule && hasCachedModule ) {
91101 __webpack_require__ . rstest_original_modules [ id ] = requiredModule ;
102+ }
103+
104+ if ( ! hasSavedOriginalFactory ) {
92105 __webpack_require__ . rstest_original_module_factories [ id ] =
93106 __webpack_modules__ [ id ] ;
94107 }
@@ -170,6 +183,11 @@ const getMockImplementation = (mockType = 'mock') => {
170183 ) {
171184 const res = modFactory ( ) ;
172185
186+ if ( isPromise ( res ) ) {
187+ __webpack_module__ . exports = res ;
188+ return ;
189+ }
190+
173191 if ( isMockRequire ) {
174192 __webpack_module__ . exports = res ;
175193 return ;
0 commit comments