@@ -71,13 +71,16 @@ export const filters = {
7171 componentByCode : ( ...code : CodeFilter ) : FilterFn => {
7272 const filter = filters . byCode ( ...code ) ;
7373 return m => {
74- if ( filter ( m ) ) return true ;
75- if ( ! m . $$typeof ) return false ;
76- if ( m . type )
77- return m . type . render
78- ? filter ( m . type . render ) // memo + forwardRef
79- : filter ( m . type ) ; // memo
80- if ( m . render ) return filter ( m . render ) ; // forwardRef
74+ let inner = m ;
75+
76+ while ( inner != null ) {
77+ if ( filter ( inner ) ) return true ;
78+ else if ( ! inner . $$typeof ) return false ;
79+ else if ( inner . type ) inner = inner . type ; // memos
80+ else if ( inner . render ) inner = inner . render ; // forwardRefs
81+ else return false ;
82+ }
83+
8184 return false ;
8285 } ;
8386 }
@@ -95,6 +98,38 @@ export function _initWebpack(webpackRequire: WebpackInstance) {
9598 cache = webpackRequire . c ;
9699}
97100
101+ // Credits to Zerebos for implementing this in BD, thus giving the idea for us to implement it too
102+ const TypedArray = Object . getPrototypeOf ( Int8Array ) ;
103+
104+ function _shouldIgnoreValue ( value : any ) {
105+ if ( value == null ) return true ;
106+ if ( value === window ) return true ;
107+ if ( value === document || value === document . documentElement ) return true ;
108+ if ( value [ Symbol . toStringTag ] === "DOMTokenList" ) return true ;
109+ if ( value instanceof TypedArray ) return true ;
110+
111+ return false ;
112+ }
113+
114+ export function _shouldIgnoreModule ( exports : any ) {
115+ if ( _shouldIgnoreValue ( exports ) ) {
116+ return true ;
117+ }
118+
119+ if ( typeof exports !== "object" ) {
120+ return false ;
121+ }
122+
123+ let allNonEnumerable = true ;
124+ for ( const exportKey in exports ) {
125+ if ( ! _shouldIgnoreValue ( exports [ exportKey ] ) ) {
126+ allNonEnumerable = false ;
127+ }
128+ }
129+
130+ return allNonEnumerable ;
131+ }
132+
98133let devToolsOpen = false ;
99134if ( IS_DEV && IS_DISCORD_DESKTOP ) {
100135 // At this point in time, DiscordNative has not been exposed yet, so setImmediate is needed
@@ -121,19 +156,14 @@ export const find = traceFunction("find", function find(filter: FilterFn, { isIn
121156
122157 for ( const key in cache ) {
123158 const mod = cache [ key ] ;
124- if ( ! mod . loaded || ! mod ? .exports ) continue ;
159+ if ( ! mod ? .loaded || mod . exports == null ) continue ;
125160
126161 if ( filter ( mod . exports ) ) {
127162 return isWaitFor ? [ mod . exports , key ] : mod . exports ;
128163 }
129164
130165 if ( typeof mod . exports !== "object" ) continue ;
131166
132- if ( mod . exports . default && filter ( mod . exports . default ) ) {
133- const found = mod . exports . default ;
134- return isWaitFor ? [ found , key ] : found ;
135- }
136-
137167 for ( const nestedMod in mod . exports ) {
138168 const nested = mod . exports [ nestedMod ] ;
139169 if ( nested && filter ( nested ) ) {
@@ -156,16 +186,15 @@ export function findAll(filter: FilterFn) {
156186 const ret = [ ] as any [ ] ;
157187 for ( const key in cache ) {
158188 const mod = cache [ key ] ;
159- if ( ! mod . loaded || ! mod ? .exports ) continue ;
189+ if ( ! mod ? .loaded || mod . exports == null ) continue ;
160190
161191 if ( filter ( mod . exports ) )
162192 ret . push ( mod . exports ) ;
163- else if ( typeof mod . exports !== "object" )
193+
194+ if ( typeof mod . exports !== "object" )
164195 continue ;
165196
166- if ( mod . exports . default && filter ( mod . exports . default ) )
167- ret . push ( mod . exports . default ) ;
168- else for ( const nestedMod in mod . exports ) {
197+ for ( const nestedMod in mod . exports ) {
169198 const nested = mod . exports [ nestedMod ] ;
170199 if ( nested && filter ( nested ) ) ret . push ( nested ) ;
171200 }
@@ -204,7 +233,7 @@ export const findBulk = traceFunction("findBulk", function findBulk(...filterFns
204233 outer:
205234 for ( const key in cache ) {
206235 const mod = cache [ key ] ;
207- if ( ! mod . loaded || ! mod ? .exports ) continue ;
236+ if ( ! mod ? .loaded || mod . exports == null ) continue ;
208237
209238 for ( let j = 0 ; j < length ; j ++ ) {
210239 const filter = filters [ j ] ;
@@ -221,13 +250,6 @@ export const findBulk = traceFunction("findBulk", function findBulk(...filterFns
221250 if ( typeof mod . exports !== "object" )
222251 continue ;
223252
224- if ( mod . exports . default && filter ( mod . exports . default ) ) {
225- results [ j ] = mod . exports . default ;
226- filters [ j ] = undefined ;
227- if ( ++ found === length ) break outer;
228- break ;
229- }
230-
231253 for ( const nestedMod in mod . exports ) {
232254 const nested = mod . exports [ nestedMod ] ;
233255 if ( nested && filter ( nested ) ) {
0 commit comments