8
8
const { analyze } = require ( './analyze-component' ) ;
9
9
const { isSSREscape } = require ( './util/ssr' ) ;
10
10
const { isGlobalIdentifier } = require ( './util/scope' ) ;
11
+ const { getAncestors, getScope } = require ( './util/context' ) ;
11
12
12
13
/**
13
14
* Visitors for detecting methods/functions that are reachable during SSR
@@ -133,7 +134,7 @@ const noReferenceParentQualifiers = new Set([
133
134
const globalAccessQualifiers = new Set ( [ 'CallExpression' , 'MemberExpression' ] ) ;
134
135
135
136
function inModuleScope ( node , context ) {
136
- for ( const ancestor of context . getAncestors ( ) ) {
137
+ for ( const ancestor of getAncestors ( context , node ) ) {
137
138
if ( moduleScopeDisqualifiers . has ( ancestor . type ) ) {
138
139
return false ;
139
140
}
@@ -168,7 +169,7 @@ function noReferenceDuringSSR(forbiddenGlobalNames, messageIds, context) {
168
169
node . object . name === 'window' ) &&
169
170
node . property . type === 'Identifier' &&
170
171
forbiddenGlobalNames . has ( node . property . name ) &&
171
- isGlobalIdentifier ( node . object , context . getScope ( ) )
172
+ isGlobalIdentifier ( node . object , getScope ( context , node ) )
172
173
) {
173
174
// Prevents expressions like:
174
175
// globalThis.document.addEventListener('click', () => { ... });
@@ -193,7 +194,7 @@ function noReferenceDuringSSR(forbiddenGlobalNames, messageIds, context) {
193
194
node . object . name === 'globalThis' &&
194
195
node . property . type === 'Identifier' &&
195
196
forbiddenGlobalNames . has ( node . property . name ) &&
196
- isGlobalIdentifier ( node . object , context . getScope ( ) )
197
+ isGlobalIdentifier ( node . object , getScope ( context , node ) )
197
198
) {
198
199
// Prevents expressions like:
199
200
// globalThis.addEventListener('click', () => { ... });
@@ -214,7 +215,7 @@ function noReferenceDuringSSR(forbiddenGlobalNames, messageIds, context) {
214
215
node . parent . type !== 'MemberExpression' &&
215
216
node . object . type === 'Identifier' &&
216
217
forbiddenGlobalNames . has ( node . object . name ) &&
217
- isGlobalIdentifier ( node . object , context . getScope ( ) )
218
+ isGlobalIdentifier ( node . object , getScope ( context , node ) )
218
219
) {
219
220
// Prevents expressions like:
220
221
// window.addEventListener('click', () => { ... });
@@ -244,7 +245,7 @@ function noReferenceDuringSSR(forbiddenGlobalNames, messageIds, context) {
244
245
if (
245
246
noReferenceParentQualifiers . has ( node . parent . type ) &&
246
247
forbiddenGlobalNames . has ( node . name ) &&
247
- isGlobalIdentifier ( node , context . getScope ( ) )
248
+ isGlobalIdentifier ( node , getScope ( context , node ) )
248
249
) {
249
250
// Prevents expressions like:
250
251
// doSomethingWith(window);
@@ -264,7 +265,7 @@ function noReferenceDuringSSR(forbiddenGlobalNames, messageIds, context) {
264
265
node . parent . operator === 'instanceof' &&
265
266
node . parent . right === node &&
266
267
forbiddenGlobalNames . has ( node . name ) &&
267
- isGlobalIdentifier ( node , context . getScope ( ) )
268
+ isGlobalIdentifier ( node , getScope ( context , node ) )
268
269
) {
269
270
// Prevents expressions like:
270
271
// if (value instanceof Element) { ... }
@@ -284,7 +285,7 @@ function noReferenceDuringSSR(forbiddenGlobalNames, messageIds, context) {
284
285
node . expression . type === 'CallExpression' &&
285
286
node . expression . callee . type === 'Identifier' &&
286
287
forbiddenGlobalNames . has ( node . expression . callee . name ) &&
287
- isGlobalIdentifier ( node , context . getScope ( ) )
288
+ isGlobalIdentifier ( node , getScope ( context , node ) )
288
289
) {
289
290
// Prevents global expressions like:
290
291
// addEventListener('resize', () => {...});
0 commit comments