@sarj/eslint-plugin 18.3.1 → 19.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/dist/catalog.js +6590 -0
- package/dist/chunk-KBGBBVAC.js +35295 -0
- package/dist/effects.js +2 -0
- package/dist/index.js +3 -39104
- package/dist/jsdoc-js.js +66 -0
- package/dist/node-test.js +8 -0
- package/dist/playwright.js +5 -0
- package/dist/query.js +5 -0
- package/dist/react-correctness.js +124 -0
- package/dist/react-js.js +9 -0
- package/dist/regexp.js +38 -0
- package/dist/rule-examples.js +117 -262
- package/dist/security.js +8 -0
- package/dist/testing-library.js +12 -0
- package/dist/unicorn-js.js +2230 -0
- package/package.json +63 -65
- package/dist/_docs-d31-QA2S.d.cts +0 -170
- package/dist/_docs-d31-QA2S.d.ts +0 -170
- package/dist/index.cjs +0 -39103
- package/dist/index.d.cts +0 -766
- package/dist/index.d.ts +0 -766
- package/dist/rule-examples.cjs +0 -331
- package/dist/rule-examples.d.cts +0 -15
- package/dist/rule-examples.d.ts +0 -15
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import {createRequire as sarjCreateRequire} from "node:module";const require=sarjCreateRequire(import.meta.url);
|
|
2
|
+
var Qe=Object.create;var te=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Ye=Object.getOwnPropertyNames;var Ke=Object.getPrototypeOf,ze=Object.prototype.hasOwnProperty;var q=(e,a)=>()=>{try{return a||e((a={exports:{}}).exports,a),a.exports}catch(t){throw a=0,t}};var Je=(e,a,t,s)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of Ye(a))!ze.call(e,r)&&r!==t&&te(e,r,{get:()=>a[r],enumerable:!(s=Xe(a,r))||s.enumerable});return e};var Ze=(e,a,t)=>(t=e!=null?Qe(Ke(e)):{},Je(a||!e||!e.__esModule?te(t,"default",{value:e,enumerable:!0}):t,e));var se=q((nr,ea)=>{ea.exports={amd:{define:!1,require:!1},applescript:{$:!1,Application:!1,Automation:!1,console:!1,delay:!1,Library:!1,ObjC:!1,ObjectSpecifier:!1,Path:!1,Progress:!1,Ref:!1},astro:{Astro:!1},atomtest:{advanceClock:!1,atom:!1,fakeClearInterval:!1,fakeClearTimeout:!1,fakeSetInterval:!1,fakeSetTimeout:!1,resetTimeouts:!1,waitsForPromise:!1},audioWorklet:{AbortController:!1,AbortSignal:!1,AudioWorkletGlobalScope:!1,AudioWorkletProcessor:!1,ByteLengthQueuingStrategy:!1,CompressionStream:!1,console:!1,CountQueuingStrategy:!1,CSS:!1,CSSImageValue:!1,CSSKeywordValue:!1,CSSMathClamp:!1,CSSMathInvert:!1,CSSMathMax:!1,CSSMathMin:!1,CSSMathNegate:!1,CSSMathProduct:!1,CSSMathSum:!1,CSSMathValue:!1,CSSNumericArray:!1,CSSNumericValue:!1,CSSStyleValue:!1,CSSUnitValue:!1,CSSUnparsedValue:!1,CSSVariableReferenceValue:!1,currentFrame:!1,currentTime:!1,DecompressionStream:!1,DOMException:!1,Event:!1,EventTarget:!1,MessageEvent:!1,MessagePort:!1,PaintWorkletGlobalScope:!1,port:!1,QuotaExceededError:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,registerProcessor:!1,renderQuantumSize:!1,sampleRate:!1,StylePropertyMapReadOnly:!1,Temporal:!1,TextDecoderStream:!1,TextEncoderStream:!1,TransformStream:!1,TransformStreamDefaultController:!1,UserActivation:!1,WebAssembly:!1,WorkletGlobalScope:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1},browser:{AbortController:!1,AbortSignal:!1,AbsoluteOrientationSensor:!1,AbstractRange:!1,Accelerometer:!1,addEventListener:!1,ai:!1,AI:!1,AICreateMonitor:!1,AITextSession:!1,alert:!1,AnalyserNode:!1,Animation:!1,AnimationEffect:!1,AnimationEvent:!1,AnimationPlaybackEvent:!1,AnimationTimeline:!1,atob:!1,Attr:!1,Audio:!1,AudioBuffer:!1,AudioBufferSourceNode:!1,AudioContext:!1,AudioData:!1,AudioDecoder:!1,AudioDestinationNode:!1,AudioEncoder:!1,AudioListener:!1,AudioNode:!1,AudioParam:!1,AudioParamMap:!1,AudioPlaybackStats:!1,AudioProcessingEvent:!1,AudioScheduledSourceNode:!1,AudioSession:!1,AudioSinkInfo:!1,AudioWorklet:!1,AudioWorkletNode:!1,AuthenticatorAssertionResponse:!1,AuthenticatorAttestationResponse:!1,AuthenticatorResponse:!1,BackgroundFetchManager:!1,BackgroundFetchRecord:!1,BackgroundFetchRegistration:!1,BarcodeDetector:!1,BarProp:!1,BaseAudioContext:!1,BatteryManager:!1,BeforeUnloadEvent:!1,BiquadFilterNode:!1,Blob:!1,BlobEvent:!1,Bluetooth:!1,BluetoothCharacteristicProperties:!1,BluetoothDevice:!1,BluetoothRemoteGATTCharacteristic:!1,BluetoothRemoteGATTDescriptor:!1,BluetoothRemoteGATTServer:!1,BluetoothRemoteGATTService:!1,BluetoothUUID:!1,blur:!1,BroadcastChannel:!1,BrowserCaptureMediaStreamTrack:!1,btoa:!1,ByteLengthQueuingStrategy:!1,Cache:!1,caches:!1,CacheStorage:!1,cancelAnimationFrame:!1,cancelIdleCallback:!1,CanvasCaptureMediaStream:!1,CanvasCaptureMediaStreamTrack:!1,CanvasGradient:!1,CanvasPaintEvent:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,CaptureController:!1,CaretPosition:!1,CDATASection:!1,ChannelMergerNode:!1,ChannelSplitterNode:!1,ChapterInformation:!1,CharacterBoundsUpdateEvent:!1,CharacterData:!1,clearInterval:!1,clearTimeout:!1,clientInformation:!1,Clipboard:!1,ClipboardChangeEvent:!1,ClipboardEvent:!1,ClipboardItem:!1,close:!1,closed:!1,CloseEvent:!1,CloseWatcher:!1,CommandEvent:!1,Comment:!1,CompositionEvent:!1,CompressionStream:!1,confirm:!1,console:!1,ConstantSourceNode:!1,ContentVisibilityAutoStateChangeEvent:!1,ConvolverNode:!1,CookieChangeEvent:!1,CookieDeprecationLabel:!1,cookieStore:!1,CookieStore:!1,CookieStoreManager:!1,CountQueuingStrategy:!1,crashReport:!1,CrashReportContext:!1,createImageBitmap:!1,CreateMonitor:!1,Credential:!1,credentialless:!1,CredentialsContainer:!1,CropTarget:!1,crossOriginIsolated:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CSPViolationReportBody:!1,CSS:!1,CSSAnimation:!1,CSSConditionRule:!1,CSSContainerRule:!1,CSSCounterStyleRule:!1,CSSFontFaceDescriptors:!1,CSSFontFaceRule:!1,CSSFontFeatureValuesRule:!1,CSSFontPaletteValuesRule:!1,CSSFunctionDeclarations:!1,CSSFunctionDescriptors:!1,CSSFunctionRule:!1,CSSGroupingRule:!1,CSSImageValue:!1,CSSImportRule:!1,CSSKeyframeRule:!1,CSSKeyframesRule:!1,CSSKeywordValue:!1,CSSLayerBlockRule:!1,CSSLayerStatementRule:!1,CSSMarginRule:!1,CSSMathClamp:!1,CSSMathInvert:!1,CSSMathMax:!1,CSSMathMin:!1,CSSMathNegate:!1,CSSMathProduct:!1,CSSMathSum:!1,CSSMathValue:!1,CSSMatrixComponent:!1,CSSMediaRule:!1,CSSNamespaceRule:!1,CSSNestedDeclarations:!1,CSSNumericArray:!1,CSSNumericValue:!1,CSSPageDescriptors:!1,CSSPageRule:!1,CSSPerspective:!1,CSSPositionTryDescriptors:!1,CSSPositionTryRule:!1,CSSPositionValue:!1,CSSPropertyRule:!1,CSSPseudoElement:!1,CSSRotate:!1,CSSRule:!1,CSSRuleList:!1,CSSScale:!1,CSSScopeRule:!1,CSSSkew:!1,CSSSkewX:!1,CSSSkewY:!1,CSSStartingStyleRule:!1,CSSStyleDeclaration:!1,CSSStyleProperties:!1,CSSStyleRule:!1,CSSStyleSheet:!1,CSSStyleValue:!1,CSSSupportsRule:!1,CSSTransformComponent:!1,CSSTransformValue:!1,CSSTransition:!1,CSSTranslate:!1,CSSUnitValue:!1,CSSUnparsedValue:!1,CSSVariableReferenceValue:!1,CSSViewTransitionRule:!1,CustomElementRegistry:!1,customElements:!1,CustomEvent:!1,CustomStateSet:!1,DataTransfer:!1,DataTransferItem:!1,DataTransferItemList:!1,DecompressionStream:!1,DelayNode:!1,DelegatedInkTrailPresenter:!1,DeviceMotionEvent:!1,DeviceMotionEventAcceleration:!1,DeviceMotionEventRotationRate:!1,DeviceOrientationEvent:!1,devicePixelRatio:!1,DevicePosture:!1,DigitalCredential:!1,dispatchEvent:!1,document:!1,Document:!1,DocumentFragment:!1,documentPictureInPicture:!1,DocumentPictureInPicture:!1,DocumentPictureInPictureEvent:!1,DocumentTimeline:!1,DocumentType:!1,DOMError:!1,DOMException:!1,DOMImplementation:!1,DOMMatrix:!1,DOMMatrixReadOnly:!1,DOMParser:!1,DOMPoint:!1,DOMPointReadOnly:!1,DOMQuad:!1,DOMRect:!1,DOMRectList:!1,DOMRectReadOnly:!1,DOMStringList:!1,DOMStringMap:!1,DOMTokenList:!1,DragEvent:!1,DynamicsCompressorNode:!1,EditContext:!1,Element:!1,ElementGeometryUpdateEvent:!1,ElementImage:!1,ElementInternals:!1,EncodedAudioChunk:!1,EncodedVideoChunk:!1,ErrorEvent:!1,event:!1,Event:!1,EventCounts:!1,EventSource:!1,EventTarget:!1,external:!1,External:!1,EyeDropper:!1,FeaturePolicy:!1,FederatedCredential:!1,fence:!1,Fence:!1,FencedFrameConfig:!1,fetch:!1,fetchLater:!1,FetchLaterResult:!1,File:!1,FileList:!1,FileReader:!1,FileSystem:!1,FileSystemDirectoryEntry:!1,FileSystemDirectoryHandle:!1,FileSystemDirectoryReader:!1,FileSystemEntry:!1,FileSystemFileEntry:!1,FileSystemFileHandle:!1,FileSystemHandle:!1,FileSystemObserver:!1,FileSystemWritableFileStream:!1,find:!1,focus:!1,FocusEvent:!1,FontData:!1,FontFace:!1,FontFaceSet:!1,FontFaceSetLoadEvent:!1,FormData:!1,FormDataEvent:!1,FragmentDirective:!1,frameElement:!1,frames:!1,GainNode:!1,Gamepad:!1,GamepadAxisMoveEvent:!1,GamepadButton:!1,GamepadButtonEvent:!1,GamepadEvent:!1,GamepadHapticActuator:!1,GamepadPose:!1,Geolocation:!1,GeolocationCoordinates:!1,GeolocationPosition:!1,GeolocationPositionError:!1,getComputedStyle:!1,getScreenDetails:!1,getSelection:!1,GPU:!1,GPUAdapter:!1,GPUAdapterInfo:!1,GPUBindGroup:!1,GPUBindGroupLayout:!1,GPUBuffer:!1,GPUBufferUsage:!1,GPUCanvasContext:!1,GPUColorWrite:!1,GPUCommandBuffer:!1,GPUCommandEncoder:!1,GPUCompilationInfo:!1,GPUCompilationMessage:!1,GPUComputePassEncoder:!1,GPUComputePipeline:!1,GPUDevice:!1,GPUDeviceLostInfo:!1,GPUError:!1,GPUExternalTexture:!1,GPUInternalError:!1,GPUMapMode:!1,GPUOutOfMemoryError:!1,GPUPipelineError:!1,GPUPipelineLayout:!1,GPUQuerySet:!1,GPUQueue:!1,GPURenderBundle:!1,GPURenderBundleEncoder:!1,GPURenderPassEncoder:!1,GPURenderPipeline:!1,GPUSampler:!1,GPUShaderModule:!1,GPUShaderStage:!1,GPUSupportedFeatures:!1,GPUSupportedLimits:!1,GPUTexture:!1,GPUTextureUsage:!1,GPUTextureView:!1,GPUUncapturedErrorEvent:!1,GPUValidationError:!1,GravitySensor:!1,Gyroscope:!1,HashChangeEvent:!1,Headers:!1,HID:!1,HIDConnectionEvent:!1,HIDDevice:!1,HIDInputReportEvent:!1,Highlight:!1,HighlightRegistry:!1,history:!1,History:!1,HTMLAllCollection:!1,HTMLAnchorElement:!1,HTMLAreaElement:!1,HTMLAudioElement:!1,HTMLBaseElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCameraElement:!1,HTMLCanvasElement:!1,HTMLCollection:!1,HTMLDataElement:!1,HTMLDataListElement:!1,HTMLDetailsElement:!1,HTMLDialogElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLDocument:!1,HTMLElement:!1,HTMLEmbedElement:!1,HTMLFencedFrameElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormControlsCollection:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLGeolocationElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLInstallElement:!1,HTMLLabelElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMarqueeElement:!1,HTMLMediaElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLMeterElement:!1,HTMLMicrophoneElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLOptionsCollection:!1,HTMLOutputElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPictureElement:!1,HTMLPreElement:!1,HTMLProgressElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectedContentElement:!1,HTMLSelectElement:!1,HTMLSlotElement:!1,HTMLSourceElement:!1,HTMLSpanElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTemplateElement:!1,HTMLTextAreaElement:!1,HTMLTimeElement:!1,HTMLTitleElement:!1,HTMLTrackElement:!1,HTMLUListElement:!1,HTMLUnknownElement:!1,HTMLUserMediaElement:!1,HTMLVideoElement:!1,IDBCursor:!1,IDBCursorWithValue:!1,IDBDatabase:!1,IDBFactory:!1,IDBIndex:!1,IDBKeyRange:!1,IDBObjectStore:!1,IDBOpenDBRequest:!1,IDBRecord:!1,IDBRequest:!1,IDBTransaction:!1,IDBVersionChangeEvent:!1,IdentityCredential:!1,IdentityCredentialError:!1,IdentityProvider:!1,IdleDeadline:!1,IdleDetector:!1,IIRFilterNode:!1,Image:!1,ImageBitmap:!1,ImageBitmapRenderingContext:!1,ImageCapture:!1,ImageData:!1,ImageDecoder:!1,ImageTrack:!1,ImageTrackList:!1,indexedDB:!1,Ink:!1,innerHeight:!1,innerWidth:!1,InputDeviceCapabilities:!1,InputDeviceInfo:!1,InputEvent:!1,InstallResultEvent:!1,IntegrityViolationReportBody:!1,InteractionContentfulPaint:!1,InterestEvent:!1,IntersectionObserver:!1,IntersectionObserverEntry:!1,isSecureContext:!1,Keyboard:!1,KeyboardEvent:!1,KeyboardLayoutMap:!1,KeyframeEffect:!1,LanguageDetector:!1,LanguageModel:!1,LargestContentfulPaint:!1,LaunchParams:!1,launchQueue:!1,LaunchQueue:!1,LayoutShift:!1,LayoutShiftAttribution:!1,length:!1,LinearAccelerationSensor:!1,localStorage:!1,location:!0,Location:!1,locationbar:!1,Lock:!1,LockManager:!1,matchMedia:!1,MathMLAnchorElement:!1,MathMLElement:!1,MediaCapabilities:!1,MediaCapabilitiesInfo:!1,MediaDeviceInfo:!1,MediaDevices:!1,MediaElementAudioSourceNode:!1,MediaEncryptedEvent:!1,MediaError:!1,MediaKeyError:!1,MediaKeyMessageEvent:!1,MediaKeys:!1,MediaKeySession:!1,MediaKeyStatusMap:!1,MediaKeySystemAccess:!1,MediaList:!1,MediaMetadata:!1,MediaQueryList:!1,MediaQueryListEvent:!1,MediaRecorder:!1,MediaRecorderErrorEvent:!1,MediaSession:!1,MediaSource:!1,MediaSourceHandle:!1,MediaStream:!1,MediaStreamAudioDestinationNode:!1,MediaStreamAudioSourceNode:!1,MediaStreamEvent:!1,MediaStreamTrack:!1,MediaStreamTrackAudioSourceNode:!1,MediaStreamTrackAudioStats:!1,MediaStreamTrackEvent:!1,MediaStreamTrackGenerator:!1,MediaStreamTrackProcessor:!1,MediaStreamTrackVideoStats:!1,menubar:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MIDIAccess:!1,MIDIConnectionEvent:!1,MIDIInput:!1,MIDIInputMap:!1,MIDIMessageEvent:!1,MIDIOutput:!1,MIDIOutputMap:!1,MIDIPort:!1,MimeType:!1,MimeTypeArray:!1,model:!1,ModelContext:!1,ModelGenericSession:!1,ModelManager:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationEvent:!1,MutationObserver:!1,MutationRecord:!1,name:!1,NamedNodeMap:!1,NavigateEvent:!1,navigation:!1,Navigation:!1,NavigationActivation:!1,NavigationCurrentEntryChangeEvent:!1,NavigationDestination:!1,NavigationHistoryEntry:!1,NavigationPrecommitController:!1,NavigationPreloadManager:!1,NavigationTransition:!1,navigator:!1,Navigator:!1,NavigatorLogin:!1,NavigatorManagedData:!1,NavigatorUAData:!1,NetworkInformation:!1,Node:!1,NodeFilter:!1,NodeIterator:!1,NodeList:!1,NodeRange:!1,Notification:!1,NotifyPaintEvent:!1,NotRestoredReasonDetails:!1,NotRestoredReasons:!1,Observable:!1,OfflineAudioCompletionEvent:!1,OfflineAudioContext:!1,offscreenBuffering:!1,OffscreenCanvas:!1,OffscreenCanvasRenderingContext2D:!1,onabort:!0,onafterprint:!0,onanimationcancel:!0,onanimationend:!0,onanimationiteration:!0,onanimationstart:!0,onappinstalled:!0,onauxclick:!0,onbeforeinput:!0,onbeforeinstallprompt:!0,onbeforematch:!0,onbeforeprint:!0,onbeforetoggle:!0,onbeforeunload:!0,onbeforexrselect:!0,onblur:!0,oncancel:!0,oncanplay:!0,oncanplaythrough:!0,onchange:!0,onclick:!0,onclose:!0,oncommand:!0,oncontentvisibilityautostatechange:!0,oncontextlost:!0,oncontextmenu:!0,oncontextrestored:!0,oncopy:!0,oncuechange:!0,oncut:!0,ondblclick:!0,ondevicemotion:!0,ondeviceorientation:!0,ondeviceorientationabsolute:!0,ondrag:!0,ondragend:!0,ondragenter:!0,ondragleave:!0,ondragover:!0,ondragstart:!0,ondrop:!0,ondurationchange:!0,onemptied:!0,onended:!0,onerror:!0,onfocus:!0,onformdata:!0,ongamepadconnected:!0,ongamepaddisconnected:!0,ongotpointercapture:!0,onhashchange:!0,oninput:!0,oninstallresult:!0,oninvalid:!0,onkeydown:!0,onkeypress:!0,onkeyup:!0,onlanguagechange:!0,onload:!0,onloadeddata:!0,onloadedmetadata:!0,onloadstart:!0,onlostpointercapture:!0,onmessage:!0,onmessageerror:!0,onmousedown:!0,onmouseenter:!0,onmouseleave:!0,onmousemove:!0,onmouseout:!0,onmouseover:!0,onmouseup:!0,onmousewheel:!0,onoffline:!0,ononline:!0,onpagehide:!0,onpagereveal:!0,onpageshow:!0,onpageswap:!0,onpaste:!0,onpause:!0,onplay:!0,onplaying:!0,onpointercancel:!0,onpointerdown:!0,onpointerenter:!0,onpointerleave:!0,onpointermove:!0,onpointerout:!0,onpointerover:!0,onpointerrawupdate:!0,onpointerup:!0,onpopstate:!0,onprogress:!0,onratechange:!0,onrejectionhandled:!0,onreset:!0,onresize:!0,onscroll:!0,onscrollend:!0,onscrollsnapchange:!0,onscrollsnapchanging:!0,onsearch:!0,onsecuritypolicyviolation:!0,onseeked:!0,onseeking:!0,onselect:!0,onselectionchange:!0,onselectstart:!0,onslotchange:!0,onstalled:!0,onstorage:!0,onsubmit:!0,onsuspend:!0,ontimeupdate:!0,ontoggle:!0,ontransitioncancel:!0,ontransitionend:!0,ontransitionrun:!0,ontransitionstart:!0,onunhandledrejection:!0,onunload:!0,onvolumechange:!0,onwaiting:!0,onwheel:!0,OpaqueRange:!1,open:!1,opener:!1,Option:!1,OrientationSensor:!1,origin:!1,Origin:!1,originAgentCluster:!1,OscillatorNode:!1,OTPCredential:!1,outerHeight:!1,outerWidth:!1,OverconstrainedError:!1,PageRevealEvent:!1,PageSwapEvent:!1,PageTransitionEvent:!1,pageXOffset:!1,pageYOffset:!1,PannerNode:!1,parent:!1,PasswordCredential:!1,Path2D:!1,PaymentAddress:!1,PaymentManager:!1,PaymentMethodChangeEvent:!1,PaymentRequest:!1,PaymentRequestUpdateEvent:!1,PaymentResponse:!1,performance:!1,Performance:!1,PerformanceElementTiming:!1,PerformanceEntry:!1,PerformanceEventTiming:!1,PerformanceLongAnimationFrameTiming:!1,PerformanceLongTaskTiming:!1,PerformanceMark:!1,PerformanceMarkConditional:!1,PerformanceMeasure:!1,PerformanceNavigation:!1,PerformanceNavigationTiming:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,PerformancePaintTiming:!1,PerformanceResourceTiming:!1,PerformanceScriptTiming:!1,PerformanceServerTiming:!1,PerformanceSoftNavigation:!1,PerformanceTiming:!1,PerformanceTimingConfidence:!1,PeriodicSyncManager:!1,PeriodicWave:!1,Permissions:!1,PermissionsPolicy:!1,PermissionStatus:!1,PERSISTENT:!1,personalbar:!1,PictureInPictureEvent:!1,PictureInPictureWindow:!1,Plugin:!1,PluginArray:!1,PointerEvent:!1,PopStateEvent:!1,postMessage:!1,Presentation:!1,PresentationAvailability:!1,PresentationConnection:!1,PresentationConnectionAvailableEvent:!1,PresentationConnectionCloseEvent:!1,PresentationConnectionList:!1,PresentationReceiver:!1,PresentationRequest:!1,PressureObserver:!1,PressureRecord:!1,print:!1,ProcessingInstruction:!1,Profiler:!1,ProgressEvent:!1,PromiseRejectionEvent:!1,prompt:!1,ProtectedAudience:!1,PublicKeyCredential:!1,PushManager:!1,PushSubscription:!1,PushSubscriptionOptions:!1,queryLocalFonts:!1,queueMicrotask:!1,QuotaExceededError:!1,RadioNodeList:!1,Range:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,RelativeOrientationSensor:!1,RemotePlayback:!1,removeEventListener:!1,ReportBody:!1,reportError:!1,ReportingObserver:!1,Request:!1,requestAnimationFrame:!1,requestIdleCallback:!1,requestResize:!1,resizeBy:!1,ResizeObserver:!1,ResizeObserverEntry:!1,ResizeObserverSize:!1,resizeTo:!1,Response:!1,RestrictionTarget:!1,RTCCertificate:!1,RTCDataChannel:!1,RTCDataChannelEvent:!1,RTCDtlsTransport:!1,RTCDTMFSender:!1,RTCDTMFToneChangeEvent:!1,RTCEncodedAudioFrame:!1,RTCEncodedVideoFrame:!1,RTCError:!1,RTCErrorEvent:!1,RTCIceCandidate:!1,RTCIceCandidatePair:!1,RTCIceTransport:!1,RTCPeerConnection:!1,RTCPeerConnectionIceErrorEvent:!1,RTCPeerConnectionIceEvent:!1,RTCRtpReceiver:!1,RTCRtpScriptTransform:!1,RTCRtpSender:!1,RTCRtpTransceiver:!1,RTCSctpTransport:!1,RTCSessionDescription:!1,RTCStatsReport:!1,RTCTrackEvent:!1,Sanitizer:!1,scheduler:!1,Scheduler:!1,Scheduling:!1,screen:!1,Screen:!1,ScreenDetailed:!1,ScreenDetails:!1,screenLeft:!1,ScreenOrientation:!1,screenTop:!1,screenX:!1,screenY:!1,ScriptProcessorNode:!1,scroll:!1,scrollbars:!1,scrollBy:!1,ScrollTimeline:!1,scrollTo:!1,scrollX:!1,scrollY:!1,SecurityPolicyViolationEvent:!1,Selection:!1,self:!1,Sensor:!1,SensorErrorEvent:!1,Serial:!1,SerialPort:!1,ServiceWorker:!1,ServiceWorkerContainer:!1,ServiceWorkerRegistration:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,ShadowRoot:!1,sharedStorage:!1,SharedStorage:!1,SharedStorageAppendMethod:!1,SharedStorageClearMethod:!1,SharedStorageDeleteMethod:!1,SharedStorageModifierMethod:!1,SharedStorageSetMethod:!1,SharedStorageWorklet:!1,SharedWorker:!1,showDirectoryPicker:!1,showOpenFilePicker:!1,showSaveFilePicker:!1,SnapEvent:!1,SourceBuffer:!1,SourceBufferList:!1,SpeechGrammar:!1,SpeechGrammarList:!1,SpeechRecognition:!1,SpeechRecognitionAlternative:!1,SpeechRecognitionErrorEvent:!1,SpeechRecognitionEvent:!1,SpeechRecognitionPhrase:!1,SpeechRecognitionResult:!1,SpeechRecognitionResultList:!1,speechSynthesis:!1,SpeechSynthesis:!1,SpeechSynthesisErrorEvent:!1,SpeechSynthesisEvent:!1,SpeechSynthesisUtterance:!1,SpeechSynthesisVoice:!1,StaticRange:!1,status:!1,statusbar:!1,StereoPannerNode:!1,stop:!1,Storage:!1,StorageBucket:!1,StorageBucketManager:!1,StorageEvent:!1,StorageManager:!1,structuredClone:!1,styleMedia:!1,StylePropertyMap:!1,StylePropertyMapReadOnly:!1,StyleSheet:!1,StyleSheetList:!1,SubmitEvent:!1,Subscriber:!1,SubtleCrypto:!1,Summarizer:!1,SVGAElement:!1,SVGAngle:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimationElement:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGComponentTransferFunctionElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGElement:!1,SVGEllipseElement:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEDropShadowElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGeometryElement:!1,SVGGradientElement:!1,SVGGraphicsElement:!1,SVGImageElement:!1,SVGLength:!1,SVGLengthList:!1,SVGLinearGradientElement:!1,SVGLineElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMPathElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPathElement:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStyleElement:!1,SVGSVGElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTSpanElement:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGViewElement:!1,SyncManager:!1,TaskAttributionTiming:!1,TaskController:!1,TaskPriorityChangeEvent:!1,TaskSignal:!1,Temporal:!1,TEMPORARY:!1,Text:!1,TextDecoder:!1,TextDecoderStream:!1,TextEncoder:!1,TextEncoderStream:!1,TextEvent:!1,TextFormat:!1,TextFormatUpdateEvent:!1,TextMetrics:!1,TextTrack:!1,TextTrackCue:!1,TextTrackCueList:!1,TextTrackList:!1,TextUpdateEvent:!1,TimeEvent:!1,TimelineTrigger:!1,TimelineTriggerRange:!1,TimelineTriggerRangeList:!1,TimeRanges:!1,ToggleEvent:!1,toolbar:!1,top:!1,Touch:!1,TouchEvent:!1,TouchList:!1,TrackEvent:!1,TransformStream:!1,TransformStreamDefaultController:!1,TransitionEvent:!1,Translator:!1,TreeWalker:!1,TrustedHTML:!1,TrustedHTMLParserOptions:!1,TrustedParserOptions:!1,TrustedScript:!1,TrustedScriptURL:!1,TrustedTypePolicy:!1,TrustedTypePolicyFactory:!1,trustedTypes:!1,UIEvent:!1,URL:!1,URLPattern:!1,URLSearchParams:!1,USB:!1,USBAlternateInterface:!1,USBConfiguration:!1,USBConnectionEvent:!1,USBDevice:!1,USBEndpoint:!1,USBInterface:!1,USBInTransferResult:!1,USBIsochronousInTransferPacket:!1,USBIsochronousInTransferResult:!1,USBIsochronousOutTransferPacket:!1,USBIsochronousOutTransferResult:!1,USBOutTransferResult:!1,UserActivation:!1,ValidityState:!1,VideoColorSpace:!1,VideoDecoder:!1,VideoEncoder:!1,VideoFrame:!1,VideoPlaybackQuality:!1,viewport:!1,Viewport:!1,ViewTimeline:!1,ViewTransition:!1,ViewTransitionTypeSet:!1,VirtualKeyboard:!1,VirtualKeyboardGeometryChangeEvent:!1,VisibilityStateEntry:!1,visualViewport:!1,VisualViewport:!1,VTTCue:!1,VTTRegion:!1,WakeLock:!1,WakeLockSentinel:!1,WaveShaperNode:!1,WebAssembly:!1,WebGL2RenderingContext:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLObject:!1,WebGLProgram:!1,WebGLQuery:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLSampler:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLSync:!1,WebGLTexture:!1,WebGLTransformFeedback:!1,WebGLUniformLocation:!1,WebGLVertexArrayObject:!1,WebMCPEvent:!1,WebSocket:!1,WebSocketError:!1,WebSocketStream:!1,WebTransport:!1,WebTransportBidirectionalStream:!1,WebTransportDatagramDuplexStream:!1,WebTransportDatagramsWritable:!1,WebTransportError:!1,WebTransportReceiveStream:!1,WebTransportSendGroup:!1,WebTransportSendStream:!1,WGSLLanguageFeatures:!1,WheelEvent:!1,when:!1,window:!1,Window:!1,WindowControlsOverlay:!1,WindowControlsOverlayGeometryChangeEvent:!1,Worker:!1,Worklet:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1,XMLDocument:!1,XMLHttpRequest:!1,XMLHttpRequestEventTarget:!1,XMLHttpRequestUpload:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathExpression:!1,XPathResult:!1,XRAnchor:!1,XRAnchorSet:!1,XRBoundedReferenceSpace:!1,XRCamera:!1,XRCompositionLayer:!1,XRCPUDepthInformation:!1,XRCubeLayer:!1,XRCylinderLayer:!1,XRDepthInformation:!1,XRDOMOverlayState:!1,XREquirectLayer:!1,XRFrame:!1,XRHand:!1,XRHitTestResult:!1,XRHitTestSource:!1,XRInputSource:!1,XRInputSourceArray:!1,XRInputSourceEvent:!1,XRInputSourcesChangeEvent:!1,XRJointPose:!1,XRJointSpace:!1,XRLayer:!1,XRLayerEvent:!1,XRLightEstimate:!1,XRLightProbe:!1,XRPlane:!1,XRPlaneSet:!1,XRPose:!1,XRProjectionLayer:!1,XRQuadLayer:!1,XRRay:!1,XRReferenceSpace:!1,XRReferenceSpaceEvent:!1,XRRenderState:!1,XRRigidTransform:!1,XRSession:!1,XRSessionEvent:!1,XRSpace:!1,XRSubImage:!1,XRSystem:!1,XRTransientInputHitTestResult:!1,XRTransientInputHitTestSource:!1,XRView:!1,XRViewerPose:!1,XRViewport:!1,XRVisibilityMaskChangeEvent:!1,XRWebGLBinding:!1,XRWebGLDepthInformation:!1,XRWebGLLayer:!1,XRWebGLSubImage:!1,XSLTProcessor:!1},builtin:{AggregateError:!1,Array:!1,ArrayBuffer:!1,AsyncDisposableStack:!1,Atomics:!1,BigInt:!1,BigInt64Array:!1,BigUint64Array:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,DisposableStack:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,FinalizationRegistry:!1,Float16Array:!1,Float32Array:!1,Float64Array:!1,Function:!1,globalThis:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,Iterator:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,SuppressedError:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakRef:!1,WeakSet:!1},bunBuiltin:{AbortController:!1,AbortSignal:!1,addEventListener:!1,alert:!1,atob:!1,Blob:!1,BroadcastChannel:!1,btoa:!1,Buffer:!1,BuildError:!1,BuildMessage:!1,Bun:!1,ByteLengthQueuingStrategy:!1,clearImmediate:!1,clearInterval:!1,clearTimeout:!1,CloseEvent:!1,CompressionStream:!1,confirm:!1,console:!1,CountQueuingStrategy:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CustomEvent:!1,DecompressionStream:!1,dispatchEvent:!1,DOMException:!1,ErrorEvent:!1,Event:!1,EventTarget:!1,fetch:!1,File:!1,FormData:!1,global:!1,Headers:!1,HTMLRewriter:!1,Loader:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,navigator:!1,onerror:!0,onmessage:!0,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,PerformanceResourceTiming:!1,PerformanceServerTiming:!1,PerformanceTiming:!1,postMessage:!1,process:!1,prompt:!1,queueMicrotask:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,removeEventListener:!1,reportError:!1,Request:!1,ResolveError:!1,ResolveMessage:!1,Response:!1,self:!1,setImmediate:!1,setInterval:!1,setTimeout:!1,ShadowRealm:!1,structuredClone:!1,SubtleCrypto:!1,Temporal:!1,TextDecoder:!1,TextDecoderStream:!1,TextEncoder:!1,TextEncoderStream:!1,TransformStream:!1,TransformStreamDefaultController:!1,URL:!1,URLPattern:!1,URLSearchParams:!1,WebAssembly:!1,WebSocket:!1,Worker:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1},chai:{assert:!0,expect:!0,should:!0},commonjs:{exports:!0,global:!1,module:!1,require:!1},couch:{emit:!1,exports:!1,getRow:!1,log:!1,module:!1,provides:!1,require:!1,respond:!1,send:!1,start:!1,sum:!1},denoBuiltin:{AbortController:!1,AbortSignal:!1,addEventListener:!1,alert:!1,atob:!1,Blob:!1,BroadcastChannel:!1,btoa:!1,Buffer:!1,ByteLengthQueuingStrategy:!1,Cache:!1,caches:!1,CacheStorage:!1,clearImmediate:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,CloseEvent:!1,CompressionStream:!1,confirm:!1,console:!1,CountQueuingStrategy:!1,createImageBitmap:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CustomEvent:!1,DecompressionStream:!1,Deno:!1,dispatchEvent:!1,DOMException:!1,DOMMatrix:!1,DOMMatrixReadOnly:!1,DOMPoint:!1,DOMPointReadOnly:!1,DOMQuad:!1,DOMRect:!1,DOMRectReadOnly:!1,ErrorEvent:!1,Event:!1,EventSource:!1,EventTarget:!1,fetch:!1,File:!1,FileReader:!1,FormData:!1,getParent:!1,global:!1,GPU:!1,GPUAdapter:!1,GPUAdapterInfo:!1,GPUBindGroup:!1,GPUBindGroupLayout:!1,GPUBuffer:!1,GPUBufferUsage:!1,GPUCanvasContext:!1,GPUColorWrite:!1,GPUCommandBuffer:!1,GPUCommandEncoder:!1,GPUCompilationInfo:!1,GPUCompilationMessage:!1,GPUComputePassEncoder:!1,GPUComputePipeline:!1,GPUDevice:!1,GPUDeviceLostInfo:!1,GPUError:!1,GPUInternalError:!1,GPUMapMode:!1,GPUOutOfMemoryError:!1,GPUPipelineError:!1,GPUPipelineLayout:!1,GPUQuerySet:!1,GPUQueue:!1,GPURenderBundle:!1,GPURenderBundleEncoder:!1,GPURenderPassEncoder:!1,GPURenderPipeline:!1,GPUSampler:!1,GPUShaderModule:!1,GPUShaderStage:!1,GPUSupportedFeatures:!1,GPUSupportedLimits:!1,GPUTexture:!1,GPUTextureUsage:!1,GPUTextureView:!1,GPUUncapturedErrorEvent:!1,GPUValidationError:!1,Headers:!1,ImageBitmap:!1,ImageBitmapRenderingContext:!1,ImageData:!1,localStorage:!1,location:!1,Location:!1,Lock:!1,LockManager:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,name:!1,navigator:!1,Navigator:!1,NavigatorUAData:!1,nodeBootstrap:!1,OffscreenCanvas:!1,onbeforeunload:!0,onerror:!0,onload:!0,onunhandledrejection:!0,onunload:!0,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,process:!1,ProgressEvent:!1,PromiseRejectionEvent:!1,prompt:!1,queueMicrotask:!1,QuotaExceededError:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,removeEventListener:!1,reportError:!1,Request:!1,Response:!1,self:!1,sessionStorage:!1,setImmediate:!1,setInterval:!1,setTimeout:!1,Storage:!1,structuredClone:!1,SubtleCrypto:!1,Temporal:!1,TextDecoder:!1,TextDecoderStream:!1,TextEncoder:!1,TextEncoderStream:!1,TransformStream:!1,TransformStreamDefaultController:!1,URL:!1,URLPattern:!1,URLSearchParams:!1,WebAssembly:!1,WebSocket:!1,Window:!1,Worker:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1},devtools:{$:!1,$_:!1,$$:!1,$0:!1,$1:!1,$2:!1,$3:!1,$4:!1,$x:!1,chrome:!1,clear:!1,copy:!1,debug:!1,dir:!1,dirxml:!1,getEventListeners:!1,inspect:!1,keys:!1,monitor:!1,monitorEvents:!1,profile:!1,profileEnd:!1,queryObjects:!1,table:!1,undebug:!1,unmonitor:!1,unmonitorEvents:!1,values:!1},embertest:{andThen:!1,click:!1,currentPath:!1,currentRouteName:!1,currentURL:!1,fillIn:!1,find:!1,findAll:!1,findWithAssert:!1,keyEvent:!1,pauseTest:!1,resumeTest:!1,triggerEvent:!1,visit:!1,wait:!1},es2015:{Array:!1,ArrayBuffer:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Float32Array:!1,Float64Array:!1,Function:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakSet:!1},es2016:{Array:!1,ArrayBuffer:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Float32Array:!1,Float64Array:!1,Function:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakSet:!1},es2017:{Array:!1,ArrayBuffer:!1,Atomics:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Float32Array:!1,Float64Array:!1,Function:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakSet:!1},es2018:{Array:!1,ArrayBuffer:!1,Atomics:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Float32Array:!1,Float64Array:!1,Function:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakSet:!1},es2019:{Array:!1,ArrayBuffer:!1,Atomics:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Float32Array:!1,Float64Array:!1,Function:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakSet:!1},es2020:{Array:!1,ArrayBuffer:!1,Atomics:!1,BigInt:!1,BigInt64Array:!1,BigUint64Array:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Float32Array:!1,Float64Array:!1,Function:!1,globalThis:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakSet:!1},es2021:{AggregateError:!1,Array:!1,ArrayBuffer:!1,Atomics:!1,BigInt:!1,BigInt64Array:!1,BigUint64Array:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,FinalizationRegistry:!1,Float32Array:!1,Float64Array:!1,Function:!1,globalThis:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakRef:!1,WeakSet:!1},es2022:{AggregateError:!1,Array:!1,ArrayBuffer:!1,Atomics:!1,BigInt:!1,BigInt64Array:!1,BigUint64Array:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,FinalizationRegistry:!1,Float32Array:!1,Float64Array:!1,Function:!1,globalThis:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakRef:!1,WeakSet:!1},es2023:{AggregateError:!1,Array:!1,ArrayBuffer:!1,Atomics:!1,BigInt:!1,BigInt64Array:!1,BigUint64Array:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,FinalizationRegistry:!1,Float32Array:!1,Float64Array:!1,Function:!1,globalThis:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakRef:!1,WeakSet:!1},es2024:{AggregateError:!1,Array:!1,ArrayBuffer:!1,Atomics:!1,BigInt:!1,BigInt64Array:!1,BigUint64Array:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,FinalizationRegistry:!1,Float32Array:!1,Float64Array:!1,Function:!1,globalThis:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakRef:!1,WeakSet:!1},es2025:{AggregateError:!1,Array:!1,ArrayBuffer:!1,Atomics:!1,BigInt:!1,BigInt64Array:!1,BigUint64Array:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,FinalizationRegistry:!1,Float16Array:!1,Float32Array:!1,Float64Array:!1,Function:!1,globalThis:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,Iterator:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakRef:!1,WeakSet:!1},es2026:{AggregateError:!1,Array:!1,ArrayBuffer:!1,Atomics:!1,BigInt:!1,BigInt64Array:!1,BigUint64Array:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,FinalizationRegistry:!1,Float16Array:!1,Float32Array:!1,Float64Array:!1,Function:!1,globalThis:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,Iterator:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakRef:!1,WeakSet:!1},es2027:{AggregateError:!1,Array:!1,ArrayBuffer:!1,AsyncDisposableStack:!1,Atomics:!1,BigInt:!1,BigInt64Array:!1,BigUint64Array:!1,Boolean:!1,DataView:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,DisposableStack:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,FinalizationRegistry:!1,Float16Array:!1,Float32Array:!1,Float64Array:!1,Function:!1,globalThis:!1,Infinity:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Intl:!1,isFinite:!1,isNaN:!1,Iterator:!1,JSON:!1,Map:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,Promise:!1,Proxy:!1,RangeError:!1,ReferenceError:!1,Reflect:!1,RegExp:!1,Set:!1,SharedArrayBuffer:!1,String:!1,SuppressedError:!1,Symbol:!1,SyntaxError:!1,TypeError:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1,undefined:!1,unescape:!1,URIError:!1,WeakMap:!1,WeakRef:!1,WeakSet:!1},es3:{Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Function:!1,Infinity:!1,isFinite:!1,isNaN:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,undefined:!1,unescape:!1,URIError:!1},es5:{Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,escape:!1,eval:!1,EvalError:!1,Function:!1,Infinity:!1,isFinite:!1,isNaN:!1,JSON:!1,Math:!1,NaN:!1,Number:!1,Object:!1,parseFloat:!1,parseInt:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,undefined:!1,unescape:!1,URIError:!1},greasemonkey:{cloneInto:!1,createObjectIn:!1,exportFunction:!1,GM:!1,GM_addElement:!1,GM_addStyle:!1,GM_addValueChangeListener:!1,GM_cookie:!1,GM_deleteValue:!1,GM_deleteValues:!1,GM_download:!1,GM_getResourceText:!1,GM_getResourceURL:!1,GM_getTab:!1,GM_getTabs:!1,GM_getValue:!1,GM_getValues:!1,GM_info:!1,GM_listValues:!1,GM_log:!1,GM_notification:!1,GM_openInTab:!1,GM_registerMenuCommand:!1,GM_removeValueChangeListener:!1,GM_saveTab:!1,GM_setClipboard:!1,GM_setValue:!1,GM_setValues:!1,GM_unregisterMenuCommand:!1,GM_xmlhttpRequest:!1,unsafeWindow:!1},jasmine:{afterAll:!1,afterEach:!1,beforeAll:!1,beforeEach:!1,describe:!1,expect:!1,expectAsync:!1,fail:!1,fdescribe:!1,fit:!1,it:!1,jasmine:!1,pending:!1,runs:!1,spyOn:!1,spyOnAllFunctions:!1,spyOnProperty:!1,throwUnless:!1,throwUnlessAsync:!1,waits:!1,waitsFor:!1,xdescribe:!1,xit:!1},jest:{afterAll:!1,afterEach:!1,beforeAll:!1,beforeEach:!1,describe:!1,expect:!1,fit:!1,it:!1,jest:!1,test:!1,xdescribe:!1,xit:!1,xtest:!1},jquery:{$:!1,jQuery:!1},meteor:{$:!1,Accounts:!1,AccountsClient:!1,AccountsCommon:!1,AccountsServer:!1,App:!1,Assets:!1,Blaze:!1,check:!1,Cordova:!1,DDP:!1,DDPRateLimiter:!1,DDPServer:!1,Deps:!1,EJSON:!1,Email:!1,HTTP:!1,Log:!1,Match:!1,Meteor:!1,Mongo:!1,MongoInternals:!1,Npm:!1,Package:!1,Plugin:!1,process:!1,Random:!1,ReactiveDict:!1,ReactiveVar:!1,Router:!1,ServiceConfiguration:!1,Session:!1,share:!1,Spacebars:!1,Template:!1,Tinytest:!1,Tracker:!1,UI:!1,Utils:!1,WebApp:!1,WebAppInternals:!1},mocha:{after:!1,afterEach:!1,before:!1,beforeEach:!1,context:!1,describe:!1,it:!1,mocha:!1,run:!1,setup:!1,specify:!1,suite:!1,suiteSetup:!1,suiteTeardown:!1,teardown:!1,test:!1,xcontext:!1,xdescribe:!1,xit:!1,xspecify:!1},mongo:{_isWindows:!1,_rand:!1,BulkWriteResult:!1,cat:!1,cd:!1,connect:!1,db:!1,getHostName:!1,getMemInfo:!1,hostname:!1,ISODate:!1,listFiles:!1,load:!1,ls:!1,md5sumFile:!1,mkdir:!1,Mongo:!1,NumberInt:!1,NumberLong:!1,ObjectId:!1,PlanCache:!1,print:!1,printjson:!1,pwd:!1,quit:!1,removeFile:!1,rs:!1,sh:!1,UUID:!1,version:!1,WriteResult:!1},nashorn:{__DIR__:!1,__FILE__:!1,__LINE__:!1,com:!1,edu:!1,exit:!1,java:!1,Java:!1,javafx:!1,JavaImporter:!1,javax:!1,JSAdapter:!1,load:!1,loadWithNewGlobal:!1,org:!1,Packages:!1,print:!1,quit:!1},node:{__dirname:!1,__filename:!1,AbortController:!1,AbortSignal:!1,atob:!1,Blob:!1,BroadcastChannel:!1,btoa:!1,Buffer:!1,ByteLengthQueuingStrategy:!1,clearImmediate:!1,clearInterval:!1,clearTimeout:!1,CloseEvent:!1,CompressionStream:!1,console:!1,CountQueuingStrategy:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CustomEvent:!1,DecompressionStream:!1,DOMException:!1,ErrorEvent:!1,Event:!1,EventTarget:!1,exports:!0,fetch:!1,File:!1,FormData:!1,global:!1,Headers:!1,localStorage:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,module:!1,navigator:!1,Navigator:!1,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,PerformanceResourceTiming:!1,process:!1,queueMicrotask:!1,QuotaExceededError:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,Request:!1,require:!1,Response:!1,sessionStorage:!1,setImmediate:!1,setInterval:!1,setTimeout:!1,Storage:!1,structuredClone:!1,SubtleCrypto:!1,Temporal:!1,TextDecoder:!1,TextDecoderStream:!1,TextEncoder:!1,TextEncoderStream:!1,TransformStream:!1,TransformStreamDefaultController:!1,URL:!1,URLPattern:!1,URLSearchParams:!1,WebAssembly:!1,WebSocket:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1},nodeBuiltin:{AbortController:!1,AbortSignal:!1,atob:!1,Blob:!1,BroadcastChannel:!1,btoa:!1,Buffer:!1,ByteLengthQueuingStrategy:!1,clearImmediate:!1,clearInterval:!1,clearTimeout:!1,CloseEvent:!1,CompressionStream:!1,console:!1,CountQueuingStrategy:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CustomEvent:!1,DecompressionStream:!1,DOMException:!1,ErrorEvent:!1,Event:!1,EventTarget:!1,fetch:!1,File:!1,FormData:!1,global:!1,Headers:!1,localStorage:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,navigator:!1,Navigator:!1,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,PerformanceResourceTiming:!1,process:!1,queueMicrotask:!1,QuotaExceededError:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,Request:!1,Response:!1,sessionStorage:!1,setImmediate:!1,setInterval:!1,setTimeout:!1,Storage:!1,structuredClone:!1,SubtleCrypto:!1,Temporal:!1,TextDecoder:!1,TextDecoderStream:!1,TextEncoder:!1,TextEncoderStream:!1,TransformStream:!1,TransformStreamDefaultController:!1,URL:!1,URLPattern:!1,URLSearchParams:!1,WebAssembly:!1,WebSocket:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1},paintWorklet:{ByteLengthQueuingStrategy:!1,console:!1,CountQueuingStrategy:!1,CSSImageValue:!1,CSSKeywordValue:!1,CSSMathClamp:!1,CSSMathInvert:!1,CSSMathMax:!1,CSSMathMin:!1,CSSMathNegate:!1,CSSMathProduct:!1,CSSMathSum:!1,CSSMathValue:!1,CSSMatrixComponent:!1,CSSNumericArray:!1,CSSNumericValue:!1,CSSPerspective:!1,CSSPositionValue:!1,CSSRotate:!1,CSSScale:!1,CSSSkew:!1,CSSSkewX:!1,CSSSkewY:!1,CSSStyleValue:!1,CSSTransformComponent:!1,CSSTransformValue:!1,CSSTranslate:!1,CSSUnitValue:!1,CSSUnparsedValue:!1,CSSVariableReferenceValue:!1,devicePixelRatio:!1,PaintRenderingContext2D:!1,PaintSize:!1,PaintWorkletGlobalScope:!1,Path2D:!1,QuotaExceededError:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,registerPaint:!1,StylePropertyMapReadOnly:!1,Temporal:!1,TransformStream:!1,TransformStreamDefaultController:!1,WebAssembly:!1,WorkletGlobalScope:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1},phantomjs:{console:!0,exports:!0,phantom:!0,require:!0,WebPage:!0},prototypejs:{$:!1,$$:!1,$A:!1,$break:!1,$continue:!1,$F:!1,$H:!1,$R:!1,$w:!1,Abstract:!1,Ajax:!1,Autocompleter:!1,Builder:!1,Class:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Element:!1,Enumerable:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Scriptaculous:!1,Selector:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Template:!1,Toggle:!1,Try:!1},protractor:{$:!1,$$:!1,browser:!1,by:!1,By:!1,DartObject:!1,element:!1,protractor:!1},qunit:{asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notOk:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,throws:!1},"react-native":{__DEV__:!1,AbortController:!1,AbortSignal:!1,alert:!1,Blob:!1,cancelAnimationFrame:!1,cancelIdleCallback:!1,CharacterData:!1,clearImmediate:!1,clearInterval:!1,clearTimeout:!1,console:!1,Document:!1,DOMRect:!1,DOMRectList:!1,DOMRectReadOnly:!1,Element:!1,Event:!1,EventCounts:!1,EventTarget:!1,fetch:!1,File:!1,FileReader:!1,FormData:!1,global:!1,Headers:!1,HTMLCollection:!1,HTMLElement:!1,navigator:!1,Node:!1,NodeList:!1,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceEventTiming:!1,PerformanceLongTaskTiming:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,PerformanceResourceTiming:!1,process:!1,queueMicrotask:!1,Request:!1,requestAnimationFrame:!1,requestIdleCallback:!1,require:!1,Response:!1,self:!1,setImmediate:!1,setInterval:!1,setTimeout:!1,TaskAttributionTiming:!1,Text:!1,URL:!1,URLSearchParams:!1,WebSocket:!1,window:!1,XMLHttpRequest:!1},rhino:{defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},rspack:{__non_webpack_require__:!1,__resourceQuery:!1,__rspack_unique_id__:!1,__rspack_version__:!1,__system_context__:!1,__webpack_base_uri__:!0,__webpack_chunk_load__:!0,__webpack_chunkname__:!1,__webpack_exports_info__:!1,__webpack_get_script_filename__:!0,__webpack_hash__:!1,__webpack_init_sharing__:!1,__webpack_is_included__:!1,__webpack_layer__:!1,__webpack_module__:!1,__webpack_modules__:!1,__webpack_nonce__:!0,__webpack_public_path__:!0,__webpack_require__:!1,__webpack_runtime_id__:!1,__webpack_share_scopes__:!1},serviceworker:{AbortController:!1,AbortPaymentEvent:!1,AbortSignal:!1,addEventListener:!1,ai:!1,AI:!1,AICreateMonitor:!1,atob:!1,BackgroundFetchEvent:!1,BackgroundFetchManager:!1,BackgroundFetchRecord:!1,BackgroundFetchRegistration:!1,BackgroundFetchUpdateUIEvent:!1,BarcodeDetector:!1,Blob:!1,BroadcastChannel:!1,btoa:!1,ByteLengthQueuingStrategy:!1,Cache:!1,caches:!1,CacheStorage:!1,CanMakePaymentEvent:!1,CanvasGradient:!1,CanvasPattern:!1,clearInterval:!1,clearTimeout:!1,Client:!1,clients:!1,Clients:!1,CloseEvent:!1,CompressionStream:!1,console:!1,cookieStore:!1,CookieStore:!1,CookieStoreManager:!1,CountQueuingStrategy:!1,createImageBitmap:!1,CreateMonitor:!1,CropTarget:!1,crossOriginIsolated:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CSS:!1,CSSImageValue:!1,CSSKeywordValue:!1,CSSMathClamp:!1,CSSMathInvert:!1,CSSMathMax:!1,CSSMathMin:!1,CSSMathNegate:!1,CSSMathProduct:!1,CSSMathSum:!1,CSSMathValue:!1,CSSMatrixComponent:!1,CSSNumericArray:!1,CSSNumericValue:!1,CSSPerspective:!1,CSSRotate:!1,CSSScale:!1,CSSSkew:!1,CSSSkewX:!1,CSSSkewY:!1,CSSStyleValue:!1,CSSTransformComponent:!1,CSSTransformValue:!1,CSSTranslate:!1,CSSUnitValue:!1,CSSUnparsedValue:!1,CSSVariableReferenceValue:!1,CustomEvent:!1,DecompressionStream:!1,dispatchEvent:!1,DOMException:!1,DOMMatrix:!1,DOMMatrixReadOnly:!1,DOMPoint:!1,DOMPointReadOnly:!1,DOMQuad:!1,DOMRect:!1,DOMRectReadOnly:!1,DOMStringList:!1,ElementImage:!1,ErrorEvent:!1,Event:!1,EventSource:!1,EventTarget:!1,ExtendableCookieChangeEvent:!1,ExtendableEvent:!1,ExtendableMessageEvent:!1,fetch:!1,FetchEvent:!1,File:!1,FileList:!1,FileReader:!1,FileSystemDirectoryHandle:!1,FileSystemFileHandle:!1,FileSystemHandle:!1,FileSystemWritableFileStream:!1,FontFace:!1,FontFaceSet:!1,FontFaceSetLoadEvent:!1,fonts:!1,FormData:!1,GPU:!1,GPUAdapter:!1,GPUAdapterInfo:!1,GPUBindGroup:!1,GPUBindGroupLayout:!1,GPUBuffer:!1,GPUBufferUsage:!1,GPUCanvasContext:!1,GPUColorWrite:!1,GPUCommandBuffer:!1,GPUCommandEncoder:!1,GPUCompilationInfo:!1,GPUCompilationMessage:!1,GPUComputePassEncoder:!1,GPUComputePipeline:!1,GPUDevice:!1,GPUDeviceLostInfo:!1,GPUError:!1,GPUExternalTexture:!1,GPUInternalError:!1,GPUMapMode:!1,GPUOutOfMemoryError:!1,GPUPipelineError:!1,GPUPipelineLayout:!1,GPUQuerySet:!1,GPUQueue:!1,GPURenderBundle:!1,GPURenderBundleEncoder:!1,GPURenderPassEncoder:!1,GPURenderPipeline:!1,GPUSampler:!1,GPUShaderModule:!1,GPUShaderStage:!1,GPUSupportedFeatures:!1,GPUSupportedLimits:!1,GPUTexture:!1,GPUTextureUsage:!1,GPUTextureView:!1,GPUUncapturedErrorEvent:!1,GPUValidationError:!1,Headers:!1,IDBCursor:!1,IDBCursorWithValue:!1,IDBDatabase:!1,IDBFactory:!1,IDBIndex:!1,IDBKeyRange:!1,IDBObjectStore:!1,IDBOpenDBRequest:!1,IDBRecord:!1,IDBRequest:!1,IDBTransaction:!1,IDBVersionChangeEvent:!1,ImageBitmap:!1,ImageBitmapRenderingContext:!1,ImageData:!1,importScripts:!1,indexedDB:!1,InstallEvent:!1,isSecureContext:!1,LanguageDetector:!1,location:!1,Lock:!1,LockManager:!1,MediaCapabilities:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,NavigationPreloadManager:!1,navigator:!1,NavigatorUAData:!1,NetworkInformation:!1,Notification:!1,NotificationEvent:!1,Observable:!1,OffscreenCanvas:!1,OffscreenCanvasRenderingContext2D:!1,onabortpayment:!0,onactivate:!0,onbackgroundfetchabort:!0,onbackgroundfetchclick:!0,onbackgroundfetchfail:!0,onbackgroundfetchsuccess:!0,oncanmakepayment:!0,oncookiechange:!0,onerror:!0,onfetch:!0,oninstall:!0,onlanguagechange:!0,onmessage:!0,onmessageerror:!0,onnotificationclick:!0,onnotificationclose:!0,onoffline:!0,ononline:!0,onpaymentrequest:!0,onperiodicsync:!0,onpush:!0,onpushsubscriptionchange:!0,onrejectionhandled:!0,onsync:!0,onunhandledrejection:!0,origin:!1,Origin:!1,Path2D:!1,PaymentRequestEvent:!1,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,PerformanceResourceTiming:!1,PerformanceServerTiming:!1,PeriodicSyncEvent:!1,PeriodicSyncManager:!1,Permissions:!1,PermissionStatus:!1,ProgressEvent:!1,PromiseRejectionEvent:!1,PushEvent:!1,PushManager:!1,PushMessageData:!1,PushSubscription:!1,PushSubscriptionChangeEvent:!1,PushSubscriptionOptions:!1,queueMicrotask:!1,QuotaExceededError:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,registration:!1,removeEventListener:!1,ReportBody:!1,reportError:!1,ReportingObserver:!1,Request:!1,Response:!1,RestrictionTarget:!1,scheduler:!1,Scheduler:!1,SecurityPolicyViolationEvent:!1,self:!1,serviceWorker:!1,ServiceWorker:!1,ServiceWorkerContainer:!1,ServiceWorkerGlobalScope:!1,ServiceWorkerRegistration:!1,setInterval:!1,setTimeout:!1,skipWaiting:!1,StorageBucket:!1,StorageBucketManager:!1,StorageManager:!1,structuredClone:!1,StylePropertyMapReadOnly:!1,Subscriber:!1,SubtleCrypto:!1,SyncEvent:!1,SyncManager:!1,TaskController:!1,TaskPriorityChangeEvent:!1,TaskSignal:!1,Temporal:!1,TextDecoder:!1,TextDecoderStream:!1,TextEncoder:!1,TextEncoderStream:!1,TextMetrics:!1,TransformStream:!1,TransformStreamDefaultController:!1,TrustedHTML:!1,TrustedScript:!1,TrustedScriptURL:!1,TrustedTypePolicy:!1,TrustedTypePolicyFactory:!1,trustedTypes:!1,URL:!1,URLPattern:!1,URLSearchParams:!1,UserActivation:!1,WebAssembly:!1,WebGL2RenderingContext:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLObject:!1,WebGLProgram:!1,WebGLQuery:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLSampler:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLSync:!1,WebGLTexture:!1,WebGLTransformFeedback:!1,WebGLUniformLocation:!1,WebGLVertexArrayObject:!1,WebSocket:!1,WebSocketError:!1,WebSocketStream:!1,WebTransport:!1,WebTransportBidirectionalStream:!1,WebTransportDatagramDuplexStream:!1,WebTransportDatagramsWritable:!1,WebTransportError:!1,WebTransportReceiveStream:!1,WebTransportSendGroup:!1,WebTransportSendStream:!1,WGSLLanguageFeatures:!1,when:!1,WindowClient:!1,WorkerGlobalScope:!1,WorkerLocation:!1,WorkerNavigator:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1},"shared-node-browser":{AbortController:!1,AbortSignal:!1,atob:!1,Blob:!1,BroadcastChannel:!1,btoa:!1,ByteLengthQueuingStrategy:!1,clearInterval:!1,clearTimeout:!1,CloseEvent:!1,CompressionStream:!1,console:!1,CountQueuingStrategy:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CustomEvent:!1,DecompressionStream:!1,DOMException:!1,ErrorEvent:!1,Event:!1,EventTarget:!1,fetch:!1,File:!1,FormData:!1,Headers:!1,localStorage:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,navigator:!1,Navigator:!1,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,PerformanceResourceTiming:!1,queueMicrotask:!1,QuotaExceededError:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,Request:!1,Response:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,Storage:!1,structuredClone:!1,SubtleCrypto:!1,Temporal:!1,TextDecoder:!1,TextDecoderStream:!1,TextEncoder:!1,TextEncoderStream:!1,TransformStream:!1,TransformStreamDefaultController:!1,URL:!1,URLPattern:!1,URLSearchParams:!1,WebAssembly:!1,WebSocket:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1},sharedWorker:{AbortController:!1,AbortSignal:!1,addEventListener:!1,atob:!1,BackgroundFetchManager:!1,BackgroundFetchRecord:!1,BackgroundFetchRegistration:!1,BarcodeDetector:!1,Blob:!1,BroadcastChannel:!1,btoa:!1,ByteLengthQueuingStrategy:!1,Cache:!1,caches:!1,CacheStorage:!1,CanvasGradient:!1,CanvasPattern:!1,clearInterval:!1,clearTimeout:!1,close:!1,CloseEvent:!1,CompressionStream:!1,console:!1,CountQueuingStrategy:!1,createImageBitmap:!1,CreateMonitor:!1,CropTarget:!1,crossOriginIsolated:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CSS:!1,CSSImageValue:!1,CSSKeywordValue:!1,CSSMathClamp:!1,CSSMathInvert:!1,CSSMathMax:!1,CSSMathMin:!1,CSSMathNegate:!1,CSSMathProduct:!1,CSSMathSum:!1,CSSMathValue:!1,CSSMatrixComponent:!1,CSSNumericArray:!1,CSSNumericValue:!1,CSSPerspective:!1,CSSRotate:!1,CSSScale:!1,CSSSkew:!1,CSSSkewX:!1,CSSSkewY:!1,CSSStyleValue:!1,CSSTransformComponent:!1,CSSTransformValue:!1,CSSTranslate:!1,CSSUnitValue:!1,CSSUnparsedValue:!1,CSSVariableReferenceValue:!1,CustomEvent:!1,DecompressionStream:!1,dispatchEvent:!1,DOMException:!1,DOMMatrix:!1,DOMMatrixReadOnly:!1,DOMPoint:!1,DOMPointReadOnly:!1,DOMQuad:!1,DOMRect:!1,DOMRectReadOnly:!1,DOMStringList:!1,ElementImage:!1,ErrorEvent:!1,Event:!1,EventSource:!1,EventTarget:!1,fetch:!1,File:!1,FileList:!1,FileReader:!1,FileReaderSync:!1,FileSystemDirectoryHandle:!1,FileSystemFileHandle:!1,FileSystemHandle:!1,FileSystemObserver:!1,FileSystemWritableFileStream:!1,FontFace:!1,FontFaceSet:!1,FontFaceSetLoadEvent:!1,fonts:!1,FormData:!1,GPU:!1,GPUAdapter:!1,GPUAdapterInfo:!1,GPUBindGroup:!1,GPUBindGroupLayout:!1,GPUBuffer:!1,GPUBufferUsage:!1,GPUCanvasContext:!1,GPUColorWrite:!1,GPUCommandBuffer:!1,GPUCommandEncoder:!1,GPUCompilationInfo:!1,GPUCompilationMessage:!1,GPUComputePassEncoder:!1,GPUComputePipeline:!1,GPUDevice:!1,GPUDeviceLostInfo:!1,GPUError:!1,GPUExternalTexture:!1,GPUInternalError:!1,GPUMapMode:!1,GPUOutOfMemoryError:!1,GPUPipelineError:!1,GPUPipelineLayout:!1,GPUQuerySet:!1,GPUQueue:!1,GPURenderBundle:!1,GPURenderBundleEncoder:!1,GPURenderPassEncoder:!1,GPURenderPipeline:!1,GPUSampler:!1,GPUShaderModule:!1,GPUShaderStage:!1,GPUSupportedFeatures:!1,GPUSupportedLimits:!1,GPUTexture:!1,GPUTextureUsage:!1,GPUTextureView:!1,GPUUncapturedErrorEvent:!1,GPUValidationError:!1,Headers:!1,IDBCursor:!1,IDBCursorWithValue:!1,IDBDatabase:!1,IDBFactory:!1,IDBIndex:!1,IDBKeyRange:!1,IDBObjectStore:!1,IDBOpenDBRequest:!1,IDBRecord:!1,IDBRequest:!1,IDBTransaction:!1,IDBVersionChangeEvent:!1,ImageBitmap:!1,ImageBitmapRenderingContext:!1,ImageData:!1,importScripts:!1,indexedDB:!1,isSecureContext:!1,location:!1,Lock:!1,LockManager:!1,MediaCapabilities:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,name:!1,NavigationPreloadManager:!1,navigator:!1,NavigatorUAData:!1,NetworkInformation:!1,Notification:!1,Observable:!1,OffscreenCanvas:!1,OffscreenCanvasRenderingContext2D:!1,onconnect:!0,onerror:!0,onlanguagechange:!0,onoffline:!0,ononline:!0,onrejectionhandled:!0,onunhandledrejection:!0,origin:!1,Origin:!1,Path2D:!1,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,PerformanceResourceTiming:!1,PerformanceServerTiming:!1,PeriodicSyncManager:!1,Permissions:!1,PermissionStatus:!1,PERSISTENT:!1,PressureObserver:!1,PressureRecord:!1,ProgressEvent:!1,PromiseRejectionEvent:!1,PushManager:!1,PushSubscription:!1,PushSubscriptionOptions:!1,queueMicrotask:!1,QuotaExceededError:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,removeEventListener:!1,ReportBody:!1,reportError:!1,ReportingObserver:!1,Request:!1,Response:!1,RestrictionTarget:!1,scheduler:!1,Scheduler:!1,SecurityPolicyViolationEvent:!1,self:!1,ServiceWorker:!1,ServiceWorkerContainer:!1,ServiceWorkerRegistration:!1,setInterval:!1,setTimeout:!1,SharedWorkerGlobalScope:!1,StorageBucket:!1,StorageBucketManager:!1,StorageManager:!1,structuredClone:!1,StylePropertyMapReadOnly:!1,Subscriber:!1,SubtleCrypto:!1,SyncManager:!1,TaskController:!1,TaskPriorityChangeEvent:!1,TaskSignal:!1,Temporal:!1,TEMPORARY:!1,TextDecoder:!1,TextDecoderStream:!1,TextEncoder:!1,TextEncoderStream:!1,TextMetrics:!1,TransformStream:!1,TransformStreamDefaultController:!1,TrustedHTML:!1,TrustedScript:!1,TrustedScriptURL:!1,TrustedTypePolicy:!1,TrustedTypePolicyFactory:!1,trustedTypes:!1,URL:!1,URLPattern:!1,URLSearchParams:!1,UserActivation:!1,WebAssembly:!1,WebGL2RenderingContext:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLObject:!1,WebGLProgram:!1,WebGLQuery:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLSampler:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLSync:!1,WebGLTexture:!1,WebGLTransformFeedback:!1,WebGLUniformLocation:!1,WebGLVertexArrayObject:!1,webkitRequestFileSystem:!1,webkitRequestFileSystemSync:!1,webkitResolveLocalFileSystemSyncURL:!1,webkitResolveLocalFileSystemURL:!1,WebSocket:!1,WebSocketError:!1,WebSocketStream:!1,WebTransport:!1,WebTransportBidirectionalStream:!1,WebTransportDatagramDuplexStream:!1,WebTransportDatagramsWritable:!1,WebTransportError:!1,WebTransportReceiveStream:!1,WebTransportSendGroup:!1,WebTransportSendStream:!1,WGSLLanguageFeatures:!1,when:!1,Worker:!1,WorkerGlobalScope:!1,WorkerLocation:!1,WorkerNavigator:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1,XMLHttpRequest:!1,XMLHttpRequestEventTarget:!1,XMLHttpRequestUpload:!1},shelljs:{cat:!1,cd:!1,chmod:!1,cmd:!1,config:!1,cp:!1,dirs:!1,echo:!1,env:!1,error:!1,errorCode:!1,exec:!1,exit:!1,find:!1,grep:!1,head:!1,ln:!1,ls:!1,mkdir:!1,mv:!1,popd:!1,pushd:!1,pwd:!1,rm:!1,sed:!1,set:!1,ShellString:!1,sort:!1,tail:!1,tempdir:!1,test:!1,touch:!1,uniq:!1,which:!1},svelte:{$bindable:!1,$derived:!1,$effect:!1,$host:!1,$inspect:!1,$props:!1,$state:!1},vitest:{afterAll:!1,afterEach:!1,assert:!1,assertType:!1,beforeAll:!1,beforeEach:!1,chai:!1,describe:!1,expect:!1,expectTypeOf:!1,it:!1,onTestFailed:!1,onTestFinished:!1,suite:!1,test:!1,vi:!1,vitest:!1},vue:{defineEmits:!1,defineExpose:!1,defineModel:!1,defineOptions:!1,defineProps:!1,defineSlots:!1,withDefaults:!1},webextensions:{browser:!1,chrome:!1,opr:!1},webpack:{__non_webpack_require__:!1,__resourceQuery:!1,__webpack_base_uri__:!0,__webpack_chunk_load__:!0,__webpack_exports_info__:!1,__webpack_get_script_filename__:!0,__webpack_hash__:!1,__webpack_is_included__:!1,__webpack_layer__:!1,__webpack_module__:!1,__webpack_modules__:!1,__webpack_public_path__:!0,__webpack_require__:!1,__webpack_runtime_id__:!1},worker:{AbortController:!1,AbortSignal:!1,addEventListener:!1,ai:!1,AI:!1,AICreateMonitor:!1,atob:!1,AudioData:!1,AudioDecoder:!1,AudioEncoder:!1,BackgroundFetchManager:!1,BackgroundFetchRecord:!1,BackgroundFetchRegistration:!1,BarcodeDetector:!1,Blob:!1,BroadcastChannel:!1,btoa:!1,ByteLengthQueuingStrategy:!1,Cache:!1,caches:!1,CacheStorage:!1,cancelAnimationFrame:!1,CanvasGradient:!1,CanvasPattern:!1,clearInterval:!1,clearTimeout:!1,close:!1,CloseEvent:!1,CompressionStream:!1,console:!1,CountQueuingStrategy:!1,createImageBitmap:!1,CreateMonitor:!1,CropTarget:!1,crossOriginIsolated:!1,crypto:!1,Crypto:!1,CryptoKey:!1,CSS:!1,CSSImageValue:!1,CSSKeywordValue:!1,CSSMathClamp:!1,CSSMathInvert:!1,CSSMathMax:!1,CSSMathMin:!1,CSSMathNegate:!1,CSSMathProduct:!1,CSSMathSum:!1,CSSMathValue:!1,CSSMatrixComponent:!1,CSSNumericArray:!1,CSSNumericValue:!1,CSSPerspective:!1,CSSRotate:!1,CSSScale:!1,CSSSkew:!1,CSSSkewX:!1,CSSSkewY:!1,CSSStyleValue:!1,CSSTransformComponent:!1,CSSTransformValue:!1,CSSTranslate:!1,CSSUnitValue:!1,CSSUnparsedValue:!1,CSSVariableReferenceValue:!1,CustomEvent:!1,DecompressionStream:!1,DedicatedWorkerGlobalScope:!1,dispatchEvent:!1,DOMException:!1,DOMMatrix:!1,DOMMatrixReadOnly:!1,DOMPoint:!1,DOMPointReadOnly:!1,DOMQuad:!1,DOMRect:!1,DOMRectReadOnly:!1,DOMStringList:!1,ElementImage:!1,EncodedAudioChunk:!1,EncodedVideoChunk:!1,ErrorEvent:!1,Event:!1,EventSource:!1,EventTarget:!1,fetch:!1,File:!1,FileList:!1,FileReader:!1,FileReaderSync:!1,FileSystemDirectoryHandle:!1,FileSystemFileHandle:!1,FileSystemHandle:!1,FileSystemObserver:!1,FileSystemSyncAccessHandle:!1,FileSystemWritableFileStream:!1,FontFace:!1,FontFaceSet:!1,FontFaceSetLoadEvent:!1,fonts:!1,FormData:!1,GPU:!1,GPUAdapter:!1,GPUAdapterInfo:!1,GPUBindGroup:!1,GPUBindGroupLayout:!1,GPUBuffer:!1,GPUBufferUsage:!1,GPUCanvasContext:!1,GPUColorWrite:!1,GPUCommandBuffer:!1,GPUCommandEncoder:!1,GPUCompilationInfo:!1,GPUCompilationMessage:!1,GPUComputePassEncoder:!1,GPUComputePipeline:!1,GPUDevice:!1,GPUDeviceLostInfo:!1,GPUError:!1,GPUExternalTexture:!1,GPUInternalError:!1,GPUMapMode:!1,GPUOutOfMemoryError:!1,GPUPipelineError:!1,GPUPipelineLayout:!1,GPUQuerySet:!1,GPUQueue:!1,GPURenderBundle:!1,GPURenderBundleEncoder:!1,GPURenderPassEncoder:!1,GPURenderPipeline:!1,GPUSampler:!1,GPUShaderModule:!1,GPUShaderStage:!1,GPUSupportedFeatures:!1,GPUSupportedLimits:!1,GPUTexture:!1,GPUTextureUsage:!1,GPUTextureView:!1,GPUUncapturedErrorEvent:!1,GPUValidationError:!1,Headers:!1,HID:!1,HIDConnectionEvent:!1,HIDDevice:!1,HIDInputReportEvent:!1,IDBCursor:!1,IDBCursorWithValue:!1,IDBDatabase:!1,IDBFactory:!1,IDBIndex:!1,IDBKeyRange:!1,IDBObjectStore:!1,IDBOpenDBRequest:!1,IDBRecord:!1,IDBRequest:!1,IDBTransaction:!1,IDBVersionChangeEvent:!1,IdleDetector:!1,ImageBitmap:!1,ImageBitmapRenderingContext:!1,ImageData:!1,ImageDecoder:!1,ImageTrack:!1,ImageTrackList:!1,importScripts:!1,indexedDB:!1,isSecureContext:!1,LanguageDetector:!1,location:!1,Lock:!1,LockManager:!1,MediaCapabilities:!1,MediaSource:!1,MediaSourceHandle:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,name:!1,NavigationPreloadManager:!1,navigator:!1,NavigatorUAData:!1,NetworkInformation:!1,Notification:!1,Observable:!1,OffscreenCanvas:!1,OffscreenCanvasRenderingContext2D:!1,onerror:!0,onlanguagechange:!0,onmessage:!0,onmessageerror:!0,onoffline:!0,ononline:!0,onrejectionhandled:!0,onrtctransform:!0,onunhandledrejection:!0,origin:!1,Origin:!1,Path2D:!1,performance:!1,Performance:!1,PerformanceEntry:!1,PerformanceMark:!1,PerformanceMeasure:!1,PerformanceObserver:!1,PerformanceObserverEntryList:!1,PerformanceResourceTiming:!1,PerformanceServerTiming:!1,PeriodicSyncManager:!1,Permissions:!1,PermissionStatus:!1,PERSISTENT:!1,postMessage:!1,PressureObserver:!1,PressureRecord:!1,ProgressEvent:!1,PromiseRejectionEvent:!1,PushManager:!1,PushSubscription:!1,PushSubscriptionOptions:!1,queueMicrotask:!1,QuotaExceededError:!1,ReadableByteStreamController:!1,ReadableStream:!1,ReadableStreamBYOBReader:!1,ReadableStreamBYOBRequest:!1,ReadableStreamDefaultController:!1,ReadableStreamDefaultReader:!1,removeEventListener:!1,ReportBody:!1,reportError:!1,ReportingObserver:!1,Request:!1,requestAnimationFrame:!1,Response:!1,RestrictionTarget:!1,RTCDataChannel:!1,RTCEncodedAudioFrame:!1,RTCEncodedVideoFrame:!1,RTCError:!1,RTCErrorEvent:!1,RTCRtpScriptTransformer:!1,RTCTransformEvent:!1,scheduler:!1,Scheduler:!1,SecurityPolicyViolationEvent:!1,self:!1,Serial:!1,SerialPort:!1,ServiceWorker:!1,ServiceWorkerContainer:!1,ServiceWorkerRegistration:!1,setInterval:!1,setTimeout:!1,SourceBuffer:!1,SourceBufferList:!1,StorageBucket:!1,StorageBucketManager:!1,StorageManager:!1,structuredClone:!1,StylePropertyMapReadOnly:!1,Subscriber:!1,SubtleCrypto:!1,SyncManager:!1,TaskController:!1,TaskPriorityChangeEvent:!1,TaskSignal:!1,Temporal:!1,TEMPORARY:!1,TextDecoder:!1,TextDecoderStream:!1,TextEncoder:!1,TextEncoderStream:!1,TextMetrics:!1,TransformStream:!1,TransformStreamDefaultController:!1,TrustedHTML:!1,TrustedScript:!1,TrustedScriptURL:!1,TrustedTypePolicy:!1,TrustedTypePolicyFactory:!1,trustedTypes:!1,URL:!1,URLPattern:!1,URLSearchParams:!1,USB:!1,USBAlternateInterface:!1,USBConfiguration:!1,USBConnectionEvent:!1,USBDevice:!1,USBEndpoint:!1,USBInterface:!1,USBInTransferResult:!1,USBIsochronousInTransferPacket:!1,USBIsochronousInTransferResult:!1,USBIsochronousOutTransferPacket:!1,USBIsochronousOutTransferResult:!1,USBOutTransferResult:!1,UserActivation:!1,VideoColorSpace:!1,VideoDecoder:!1,VideoEncoder:!1,VideoFrame:!1,WebAssembly:!1,WebGL2RenderingContext:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLObject:!1,WebGLProgram:!1,WebGLQuery:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLSampler:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLSync:!1,WebGLTexture:!1,WebGLTransformFeedback:!1,WebGLUniformLocation:!1,WebGLVertexArrayObject:!1,webkitRequestFileSystem:!1,webkitRequestFileSystemSync:!1,webkitResolveLocalFileSystemSyncURL:!1,webkitResolveLocalFileSystemURL:!1,WebSocket:!1,WebSocketError:!1,WebSocketStream:!1,WebTransport:!1,WebTransportBidirectionalStream:!1,WebTransportDatagramDuplexStream:!1,WebTransportDatagramsWritable:!1,WebTransportError:!1,WebTransportReceiveStream:!1,WebTransportSendGroup:!1,WebTransportSendStream:!1,WGSLLanguageFeatures:!1,when:!1,Worker:!1,WorkerGlobalScope:!1,WorkerLocation:!1,WorkerNavigator:!1,WritableStream:!1,WritableStreamDefaultController:!1,WritableStreamDefaultWriter:!1,XMLHttpRequest:!1,XMLHttpRequestEventTarget:!1,XMLHttpRequestUpload:!1},wsh:{ActiveXObject:!1,CollectGarbage:!1,Debug:!1,Enumerator:!1,GetObject:!1,RuntimeObject:!1,ScriptEngine:!1,ScriptEngineBuildVersion:!1,ScriptEngineMajorVersion:!1,ScriptEngineMinorVersion:!1,VBArray:!1,WScript:!1,WSH:!1},yui:{YAHOO:!1,YAHOO_config:!1,YUI:!1,YUI_config:!1}}});var le=q((or,re)=>{"use strict";re.exports=se()});var je=q((ir,qe)=>{"use strict";var aa=Object.create,we=Object.defineProperty,ta=Object.getOwnPropertyDescriptor,sa=Object.getOwnPropertyNames,ra=Object.getPrototypeOf,la=Object.prototype.hasOwnProperty,na=(e,a,t,s)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of sa(a))!la.call(e,r)&&r!==t&&we(e,r,{get:()=>a[r],enumerable:!(s=ta(a,r))||s.enumerable});return e},oa=(e,a,t)=>(t=e!=null?aa(ra(e)):{},na(a||!e||!e.__esModule?we(t,"default",{value:e,enumerable:!0}):t,e)),ia=oa(le(),1),fa=new Set(["afterAll","afterEach","beforeAll","beforeEach"]),ca=new Set(["afterAll","afterEach","beforeAll","beforeEach","test.afterAll","test.afterEach","test.beforeAll","test.beforeEach","describe","describe.only","describe.skip","describe.fixme","describe.fixme.only","describe.configure","describe.serial","describe.serial.only","describe.serial.skip","describe.serial.fixme","describe.serial.fixme.only","describe.parallel","describe.parallel.only","describe.parallel.skip","describe.parallel.fixme","describe.parallel.fixme.only","test.describe","test.describe.only","test.describe.skip","test.describe.fixme","test.describe.fixme.only","test.describe.configure","test.describe.serial","test.describe.serial.only","test.describe.serial.skip","test.describe.serial.fixme","test.describe.serial.fixme.only","test.describe.parallel","test.describe.parallel.only","test.describe.parallel.skip","test.describe.parallel.fixme","test.describe.parallel.fixme.only","test","test.fail","test.fail.only","test.fixme","test.only","test.skip","test.step","test.step.skip","test.slow","test.use"]),ua=(e,a)=>e&&a?[...e,...a]:null,W=(e,a)=>S(e,a)||M(e,a),pa=class{#a=null;#t=new WeakSet;constructor(e){this.#a=this.#e(e)}isLeaf(e){return this.#t.has(e)}get nodes(){return this.#a}#e(e,a=!1){if(W(e))return a&&this.#t.add(e),[e];switch(e.type){case"TaggedTemplateExpression":return this.#e(e.tag);case"MemberExpression":return ua(this.#e(e.object),this.#e(e.property,a));case"CallExpression":return this.#e(e.callee,!0);default:return null}}};function ma(e,a){let s=e.settings?.playwright?.globalAliases??{};return Object.entries(s).find(([,l])=>l.includes(a))?.[0]??null}function da(e,a){if(a.type!=="Identifier")return null;let s=e.sourceCode.getScope(a).references.find(r=>r.identifier===a);for(let r of s?.resolved?.defs??[])if(r.type==="ImportBinding"&&r.node.type==="ImportSpecifier"){let l=c(r.node.imported);if(l!==a.name)return l}return null}var Ie=(e,a)=>{let t=c(a),s=/(^expect|Expect)$/.test(t)?"expect":t;return s==="test"||s==="expect"?{original:null,local:s}:{original:ma(e,s)??da(e,a),local:s}};function j(e){return e==="step"?"step":e==="expect"?"expect":e==="describe"?"describe":e==="test"?"test":fa.has(e)?"hook":"unknown"}var ga=new Set(["not","resolves","rejects"]),ya=(e,a,t)=>{let s=[];for(let r of a){let l=c(r);if(l==="soft"||l==="poll"){if(s.length>0&&!(l==="poll"&&t==="modifiers"&&s.length===1&&c(s[0])==="soft"))return"modifier-unknown"}else if(l==="resolves"||l==="rejects"){let n=c(s.at(-1));if(n&&n!=="soft"&&n!=="poll")return"modifier-unknown"}else if(l!=="not")return t==="modifiers"?null:r.parent?.type==="MemberExpression"&&r.parent.parent?.type==="CallExpression"?{matcher:r,matcherArgs:r.parent.parent.arguments,matcherName:l,modifiers:s}:"modifier-unknown";e.isLeaf(r)&&(t="matchers"),s.push(r)}return"matcher-not-found"};function ha(e){return w(e.head.node,"CallExpression")?.arguments??[]}var Sa=(e,a,t)=>{let s=ya(e,a.members,t);return s?typeof s=="string"?s:{...a,args:ha(a),group:"expect",type:"expect",...s}:null},ke=e=>{let a=e,t=e.parent,s=e;for(;t;){if(t.type==="CallExpression"&&t.callee===s){a=t,t=t.parent;continue}if(t.type!=="MemberExpression")break;s=t,t=t.parent}return a};function Ae(e,a){if(a.type!=="CallExpression"||a.callee.type!=="MemberExpression"||!T(a.callee,"extend"))return!1;let t=a.callee.object;if(t.type==="Identifier"){let s=Ie(e,t);if((s?.original??s?.local)==="test")return!0;let r=G(e,t);if(r)return Ae(e,r)}return!1}function ba(e,a){let t=new pa(a);if(!t.nodes?.length)return null;let[s,...r]=t.nodes,l=Ie(e,s);if(!l)return null;let n=l.original??l.local,i=[n,...r.map(m=>c(m))];if(j(n)==="unknown"){let m=G(e,s);m&&Ae(e,m)&&(n="test",i[0]="test",l={local:l.local,original:"test"})}if(n==="test"&&i.length>1){let m=i[1];j(m)!=="unknown"&&(n=m)}if(n!=="expect"&&!ca.has(i.join(".")))return null;let o={head:{...l,node:s},members:r,name:n},f=j(n);if(f==="expect"){let m=t.isLeaf(o.head.node)?"matchers":"modifiers";S(r[0],"expect")&&(m=t.isLeaf(r[0])?"matchers":"modifiers",o.members.shift());let y=Sa(t,o,m);return!y||typeof y=="string"&&ke(a)!==a?null:y==="matcher-not-found"&&a.parent?.type==="MemberExpression"?"matcher-not-called":y}if(t.nodes.slice(0,t.nodes.length-1).some(m=>m.parent?.type!=="MemberExpression"))return null;let p=a.parent;if(p?.type==="CallExpression"||p?.type==="MemberExpression")return null;let g=f;return n==="describe"?R(a.arguments.at(-1))||(g="config"):n==="test"&&(a.arguments.length<2||!R(a.arguments.at(-1)))&&(g="config"),{...o,group:f,type:g}}var $=new WeakMap;function Ue(e,a){if($.has(a))return $.get(a);let t=ba(e,a);return $.set(a,t),t}function d(e,a){let t=Ue(e,a);return typeof t=="string"?null:t}var h=(e,a,t)=>{let s=d(e,a);return s!==null&&t.includes(s.type)};function c(e){return e?e.type==="Identifier"?e.name:e.type==="TemplateLiteral"?e.quasis[0].value.raw:e.type==="Literal"&&typeof e.value=="string"?e.value:"":""}function z(e){return e.type==="Literal"?e.raw:void 0}function S(e,a){return e?.type==="Identifier"&&(!a||(typeof a=="string"?e.name===a:a.test(e.name)))}function Be(e,a,t){return e.type==="Literal"&&(t===void 0?typeof e.value===a:e.value===t)}var Ea=(e,a)=>e.type==="TemplateLiteral"&&e.quasis.length===1&&(a===void 0||e.quasis[0].value.raw===a);function J(e,a){return Be(e,"string",a)}function I(e,a){return Be(e,"boolean",a)}function M(e,a){return e&&(J(e,a)||Ea(e,a))}function T(e,a){let t=c(e.property);return typeof a=="string"?t===a:a.test(t)}function w(e,a){let t=e.parent;if(t)return t.type===a?t:w(t,a)}function A(e,a){return e.type==="MemberExpression"?A(e.property,a):e.type==="CallExpression"?A(e.callee,a):e.type==="Identifier"?S(e,a):!1}var ne=/(^(page|frame)|(Page|Frame)$)/,va=/^(page|frame)/;function E(e,a){if(e.callee.type!=="MemberExpression"||!T(e.callee,a))return!1;let t=e.callee.object;if(t.type==="MemberExpression"){let s=t.object.type==="ThisExpression"?ne:va;return S(t.property,s)}return A(t,ne)}function R(e){return e?.type==="ArrowFunctionExpression"||e?.type==="FunctionExpression"}var U=new Set(["toBe","toEqual","toStrictEqual"]),Ca=(e,a)=>e&&a?`${e}.${a}`:null;function L(e){if(W(e))return c(e);switch(e.type){case"TaggedTemplateExpression":return L(e.tag);case"MemberExpression":return Ca(L(e.object),L(e.property));case"NewExpression":case"CallExpression":return L(e.callee)}return null}var Ta=e=>e?.type==="VariableDeclarator",Ra=e=>e?.type==="AssignmentExpression";function xa(e,a){return e.range&&a.range&&e.range[0]<a.range[1]?!1:a.left.type==="Identifier"&&a.left.name===e.name}function G(e,a){if(a?.type!=="Identifier")return a;let s=e.sourceCode.getScope(a).references.map(n=>n.identifier).map(n=>n.parent),r=s.filter(Ta).find(n=>n.id.type==="Identifier"&&n.id.name===a.name);return s.filter(Ra).reverse().find(n=>xa(a,n))?.right??r?.init}var De=(e,a)=>{let t=e.getLastToken(a),s=e.getTokenBefore(t),r=e.getTokenAfter(t);return!!s&&!!r&&s.range[0]>=a.range[0]&&t.type==="Punctuator"&&t.value===";"&&t.loc.start.line!==s.loc.end.line&&t.loc.end.line===r.loc.start.line?s:t},Pa=(e,a,t)=>{let s=[],r=De(t,e);if(a.loc.start.line-r.loc.end.line>=2)do{let l=t.getTokenAfter(r,{includeComments:!0});l.loc.start.line-r.loc.end.line>=2&&s.push([r,l]),r=l}while(r.range[0]<a.range[0]);return s},oe=(e,a)=>e.loc.end.line===a.loc.start.line,ie=e=>e.type==="MemberExpression"&&S(e.property,/^(then|catch|finally)$/);function Ma(e,a){return e.replace(/{{\s*(\w+)\s*}}/g,(t,s)=>a?.[s]??"")}function u(e){return{create(a){let t=a.settings?.playwright?.messages;if(!t)return e.create(a);let s=l=>{if(t&&"messageId"in l){let{data:n,messageId:i,...o}=l,f=t?.[i];return a.report(f?{...o,message:Ma(f,n)}:l)}return a.report(l)},r=Object.freeze({...a,cwd:a.cwd,filename:a.filename,id:a.id,languageOptions:a.languageOptions,options:a.options,parserOptions:a.parserOptions,parserPath:a.parserPath,physicalFilename:a.physicalFilename,report:s,settings:a.settings,sourceCode:a.sourceCode});return e.create(r)},meta:e.meta}}function wa(){let e=null;return{enter(){e={prevNode:null,upper:e}},exit(){e=e.upper},get prevNode(){return e.prevNode},set prevNode(a){e.prevNode=a}}}var Ia=new Set(["Program","BlockStatement","SwitchCase","SwitchStatement"]);function ka(e){return Ia.has(e)}function Aa(e,a,t){let{ruleContext:s,sourceCode:r}=t;Pa(e,a,r).length>0||s.report({fix(n){let i=De(r,e),o=r.getFirstTokenBetween(i,a,{filter(p){return oe(i,p)?(i=p,!1):!0},includeComments:!0})||a,f=oe(i,o)?`
|
|
3
|
+
|
|
4
|
+
`:`
|
|
5
|
+
`;return n.insertTextAfter(i,f)},messageId:"missingWhitespace",node:a})}function fe(e,a){let t=e;if(t.type==="ExpressionStatement")t=t.expression;else if(t.type==="VariableDeclaration"){let s=t.declarations.at(-1);if(s.init==null)return!1;t=s.init}return t.type==="AwaitExpression"&&(t=t.argument),t.type!=="CallExpression"?!1:h(a.ruleContext,t,["describe","test","step","hook"])}function Ua(e,a,t){for(;a.type==="LabeledStatement";)a=a.body;if(fe(e,t)||fe(a,t)){Aa(e,a,t);return}}function ce(e,a){let{scopeInfo:t}=a;ka(e.parent.type)&&(t.prevNode&&Ua(t.prevNode,e,a),t.prevNode=e)}var Ba=u({create(e){let a=wa(),t={ruleContext:e,scopeInfo:a,sourceCode:e.sourceCode};return{":statement":s=>ce(s,t),BlockStatement:a.enter,"BlockStatement:exit":a.exit,Program:a.enter,"Program:exit":a.enter,SwitchCase(s){ce(s,t),a.enter()},"SwitchCase:exit":a.exit,SwitchStatement:a.enter,"SwitchStatement:exit":a.exit}},meta:{docs:{description:"Enforces a blank line between Playwright test blocks (e.g., test, test.step, test.beforeEach, etc.).",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/consistent-spacing-between-blocks.md"},fixable:"whitespace",messages:{missingWhitespace:"Expected blank line before this statement."},schema:[],type:"layout"}}),Da=u({create(e){let a={assertFunctionNames:[],assertFunctionPatterns:[],...e.options?.[0]??{}},t=a.assertFunctionPatterns.map(n=>new RegExp(n)),s=[];function r(n){for(let i of n){let o=i.type==="CallExpression"?s.indexOf(i):-1;if(o!==-1){s.splice(o,1);break}}}function l(n){return!!(a.assertFunctionNames.some(i=>A(n.callee,i))||t.some(i=>A(n.callee,i)))}return{CallExpression(n){let i=d(e,n);if(i?.type==="test")s.push(n);else if(i?.type==="expect"||l(n)){let o=e.sourceCode.getAncestors(n);r(o)}},"Program:exit"(){s.forEach(n=>{e.report({messageId:"noAssertions",node:n.callee})})}}},meta:{docs:{description:"Enforce assertion to be made in a test body",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/expect-expect.md"},messages:{noAssertions:"Test has no assertions"},schema:[{additionalProperties:!1,properties:{assertFunctionNames:{items:[{type:"string"}],type:"array"},assertFunctionPatterns:{items:[{type:"string"}],type:"array"}},type:"object"}],type:"problem"}}),La=u({create(e){let a={max:5,...e.options?.[0]??{}},t=0,s=r=>{let l=r.parent;(l?.type!=="CallExpression"||h(e,l,["test"]))&&(t=0)};return{ArrowFunctionExpression:s,"ArrowFunctionExpression:exit":s,CallExpression(r){d(e,r)?.type==="expect"&&(t+=1,t>a.max&&e.report({data:{count:t.toString(),max:a.max.toString()},messageId:"exceededMaxAssertion",node:r}))},FunctionExpression:s,"FunctionExpression:exit":s}},meta:{docs:{description:"Enforces a maximum number assertion calls in a test body",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/max-expects.md"},messages:{exceededMaxAssertion:"Too many assertion calls ({{ count }}) - maximum allowed is {{ max }}"},schema:[{additionalProperties:!1,properties:{max:{minimum:1,type:"integer"}},type:"object"}],type:"suggestion"}}),Ga=u({create(e){let{options:a}=e,t=a[0]?.max??5,s=[];return{CallExpression(r){h(e,r,["describe"])&&(s.unshift(r),s.length>t&&e.report({data:{depth:s.length.toString(),max:t.toString()},messageId:"exceededMaxDepth",node:r.callee}))},"CallExpression:exit"(r){s[0]===r&&s.shift()}}},meta:{docs:{description:"Enforces a maximum depth to nested describe calls",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/max-nested-describe.md"},messages:{exceededMaxDepth:"Maximum describe call depth exceeded ({{ depth }}). Maximum allowed is {{ max }}."},schema:[{additionalProperties:!1,properties:{max:{minimum:0,type:"integer"}},type:"object"}],type:"suggestion"}}),ue=new Set(["AwaitExpression","ReturnStatement","ArrowFunctionExpression"]);function _a(e){return e.type==="ArrayExpression"||e.type==="NewExpression"&&S(e.callee,"Array")||e.type==="CallExpression"&&e.callee.type==="MemberExpression"&&S(e.callee.object,"Array")}var Fa=["waitForConsoleMessage","waitForDownload","waitForEvent","waitForFileChooser","waitForFunction","waitForPopup","waitForRequest","waitForResponse","waitForWebSocket"],Oa=new RegExp(`^(${Fa.join("|")})$`),Na=new Set(["addInitScript","addScriptTag","addStyleTag","bringToFront","check","click","close","dblclick","dispatchEvent","dragAndDrop","emulateMedia","evaluate","evaluateHandle","exposeBinding","exposeFunction","fill","focus","getAttribute","goBack","goForward","goto","hover","innerHTML","innerText","inputValue","isChecked","isDisabled","isEditable","isEnabled","isHidden","isVisible","pdf","press","reload","route","routeFromHAR","screenshot","selectOption","setBypassCSP","setContent","setChecked","setExtraHTTPHeaders","setInputFiles","setViewportSize","tap","textContent","title","type","uncheck","unroute","unrouteAll","waitForLoadState","waitForTimeout","waitForURL"]),Wa=new Set(["all","allInnerTexts","allTextContents","blur","boundingBox","check","clear","click","count","dblclick","dispatchEvent","dragTo","evaluate","evaluateAll","evaluateHandle","fill","focus","getAttribute","hover","innerHTML","innerText","inputValue","isChecked","isDisabled","isEditable","isEnabled","isHidden","isVisible","press","pressSequentially","screenshot","scrollIntoViewIfNeeded","selectOption","selectText","setChecked","setInputFiles","tap","textContent","type","uncheck","waitFor"]),Va=["toBeChecked","toBeDisabled","toBeEnabled","toEqualText","toEqualUrl","toEqualValue","toHaveFocus","toHaveSelector","toHaveSelectorCount","toHaveText","toMatchAttribute","toMatchComputedStyle","toMatchText","toMatchTitle","toMatchURL","toMatchValue","toPass"],Ha=["toBeAttached","toBeChecked","toBeDisabled","toBeEditable","toBeEmpty","toBeEnabled","toBeFocused","toBeHidden","toBeInViewport","toBeOK","toBeVisible","toContainText","toHaveAccessibleErrorMessage","toHaveAttribute","toHaveCSS","toHaveClass","toHaveCount","toHaveId","toHaveJSProperty","toHaveScreenshot","toHaveText","toHaveTitle","toHaveURL","toHaveValue","toHaveValues","toContainClass"];function qa(e){let a=e.parent;return a?.type==="MemberExpression"?a:e}function ja(e,a){if(e.type==="step")return{data:{name:"test.step"},messageId:"missingAwait",node:e.head.node};if(e.type==="expect"){let t=e.modifiers.some(s=>c(s)==="poll");if(t||a.has(e.matcherName))return{data:{name:t?"expect.poll":e.matcherName},messageId:"missingAwait",node:e.head.node}}}var $a=u({create(e){let a=e.options[0]||{},t=!!a.includePageLocatorMethods,s=new Set([...Va,...Ha,...a.customMatchers||[]]);function r(n,i){for(let o of n.references){if(!o.isRead())continue;let f=o.identifier.parent;if(!(!f||i.has(f))){if(ue.has(f.type))return!0;if(f.type==="VariableDeclarator"){if(l(o.identifier,i))return!0;continue}if(l(f,i))return!0}}return!1}function l(n,i){let o=n.parent;if(!o||i.has(o))return!1;if(i.add(o),ue.has(o.type))return!0;if(ie(o)&&o.parent?.type==="CallExpression")return l(o.parent,i);if(o.type==="CallExpression"&&o.callee===n&&ie(n)||o.type==="ArrayExpression"||o.type==="ConditionalExpression"||o.type==="ChainExpression"||o.type==="SpreadElement")return l(o,i);if(o.type==="CallExpression"&&o.callee.type==="MemberExpression"&&S(o.callee.object,"Promise")&&S(o.callee.property,/^(all|allSettled|race|any)$/))return!0;if(o.type==="MemberExpression"&&o.object===n&&c(o.property)==="resolves"&&n.type==="CallExpression"&&S(n.callee,"expect")||o.type==="MemberExpression"&&o.object===n||o.type==="CallExpression"&&(o.callee===n||S(o.callee,"expect")))return l(o,i);if(o.type==="VariableDeclarator")return e.sourceCode.getDeclaredVariables(o).some(f=>r(f,i));if(o.type==="AssignmentExpression"&&o.right===n&&o.left.type==="Identifier"){let f=o.left.name,p=e.sourceCode.getScope(n);for(;p;){let g=p.variables.find(m=>m.name===f);if(g)return r(g,i);p=p.upper}return!1}return!1}return{CallExpression(n){if(E(n,Oa)){if(!l(n,new Set)){let p=c(n.callee.property);e.report({data:{name:p},messageId:"missingAwait",node:n})}return}if(t&&n.callee.type==="MemberExpression"){let p=c(n.callee.property);if(!_a(n.callee.object)&&(Wa.has(p)||Na.has(p)&&E(n,p))){l(n,new Set)||e.report({data:{name:p},messageId:"missingAwait",node:n});return}}let i=d(e,n);if(i?.type!=="step"&&i?.type!=="expect")return;let o=ja(i,s),f=o?l(n,new Set):!1;o&&!f&&e.report({data:o.data,fix:p=>p.insertTextBefore(n,"await "),messageId:o.messageId,node:qa(o.node)})}}},meta:{docs:{description:"Identify false positives when async Playwright APIs are not properly awaited.",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/missing-playwright-await.md"},fixable:"code",messages:{missingAwait:"'{{name}}' must be awaited or returned."},schema:[{additionalProperties:!1,properties:{customMatchers:{items:{type:"string"},type:"array"},includePageLocatorMethods:{type:"boolean"}},type:"object"}],type:"problem"}}),Qa=new Set(["blur","check","clear","click","dblclick","dispatchEvent","dragAndDrop","dragTo","fill","focus","hover","press","pressSequentially","selectOption","selectText","setChecked","setInputFiles","tap","type","uncheck"]);function Xa(e){let a=e.arguments.at(-1);return a?.type==="ObjectExpression"?a.properties.find(t=>t.type==="Property"&&c(t.key)==="timeout"):void 0}var Ya=u({create(e){let a=new Set(e.options[0]?.allow??[]);return{MemberExpression(t){let s=c(t.property);if(!Qa.has(s)||a.has(s)||t.parent.type!=="CallExpression"||t.parent.callee!==t)return;let r=Xa(t.parent);r&&e.report({data:{method:s},messageId:"noActionTimeout",node:r})}}},meta:{docs:{description:"Disallow the `timeout` option on actions",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-action-timeout.md"},messages:{noActionTimeout:"Unexpected `timeout` option on `{{ method }}()`. Configure timeouts globally instead."},schema:[{additionalProperties:!1,properties:{allow:{items:{type:"string"},type:"array",uniqueItems:!0}},type:"object"}],type:"suggestion"}});function Ka(e){return["test",...e.settings?.playwright?.globalAliases?.test??[]]}function za(e,a){let s=Ka(e).join("|");return new RegExp(`^\\s*(${s}|describe)(\\.\\w+|\\[['"]\\w+['"]\\])?\\s*\\(`,"mu").test(a.value)}var Ja=u({create(e){function a(t){za(e,t)&&e.report({messageId:"commentedTests",node:t})}return{Program(){e.sourceCode.getAllComments().forEach(a)}}},meta:{docs:{description:"Disallow commented out tests",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-commented-out-tests.md"},messages:{commentedTests:"Some tests seem to be commented"},type:"problem"}}),pe=e=>e.callee.type==="MemberExpression"&&T(e.callee,"catch"),Za=u({create(e){let a=0,t=!1,s=!1,r=()=>t&&a++,l=()=>t&&a--;return{CallExpression(n){let i=d(e,n);i?.type==="test"&&(t=!0),pe(n)&&(s=!0),t&&i?.type==="expect"&&a>0&&e.report({messageId:"conditionalExpect",node:n}),s&&i?.type==="expect"&&e.report({messageId:"conditionalExpect",node:n})},"CallExpression:exit"(n){h(e,n,["test"])&&(t=!1),pe(n)&&(s=!1)},CatchClause:r,"CatchClause:exit":l,ConditionalExpression:r,"ConditionalExpression:exit":l,IfStatement:r,"IfStatement:exit":l,LogicalExpression:r,"LogicalExpression:exit":l,SwitchStatement:r,"SwitchStatement:exit":l}},meta:{docs:{description:"Disallow calling `expect` conditionally",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-conditional-expect.md"},messages:{conditionalExpect:"Avoid calling `expect` conditionally"},type:"problem"}}),et=u({create(e){function a(t){if(t.type==="LogicalExpression"&&(t.operator==="??"||t.operator==="||"))return;let s=w(t,"CallExpression");if(s&&h(e,s,["test","step"])){let r=s.arguments[s.arguments.length-1],l=w(t,"BlockStatement");if(!l)return;let n=l.parent;for(;n&&n!==r;)n=n.parent;n===r&&e.report({messageId:"conditionalInTest",node:t})}}return{ConditionalExpression:a,IfStatement:a,LogicalExpression:a,SwitchStatement:a}},meta:{docs:{description:"Disallow conditional logic in tests",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-conditional-in-test.md"},messages:{conditionalInTest:"Avoid having conditionals in tests"},schema:[],type:"problem"}}),at=u({create(e){let a=[{}];return{CallExpression(t){let s=d(e,t);if(!s||(s.type==="describe"&&a.push({}),s.type!=="hook"))return;let r=a[a.length-1],l=t.callee.type==="MemberExpression"?c(t.callee.property):"";r[l]||=0,r[l]+=1,r[l]>1&&e.report({data:{hook:l},messageId:"noDuplicateHook",node:t})},"CallExpression:exit"(t){h(e,t,["describe"])&&a.pop()}}},meta:{docs:{description:"Disallow duplicate setup and teardown hooks",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-duplicate-hooks.md"},messages:{noDuplicateHook:"Duplicate {{ hook }} in describe block"},type:"suggestion"}}),tt=u({create(e){let a=[!1];return{CallExpression(t){let s=d(e,t);if(s&&((s.type==="test"||s.type==="describe")&&a.push(a[a.length-1]),s.group==="test"&&s.type==="config"&&s.members.some(l=>c(l)==="slow"))){let l=a.length-1;a[l]?e.report({messageId:"noDuplicateSlow",node:t}):a[l]=!0}},"CallExpression:exit"(t){h(e,t,["test","describe"])&&a.pop()}}},meta:{docs:{description:"Disallow multiple `test.slow()` calls in the same test",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-duplicate-slow.md"},messages:{noDuplicateSlow:"Multiple `test.slow()` calls will multiply the timeout. Use only one `test.slow()` per test."},type:"problem"}});function st(e){return e.type==="Identifier"?e.range:[e.range[0]+1,e.range[1]-1]}var rt=u({create(e){return{CallExpression(a){(E(a,"$")||E(a,"$$"))&&e.report({messageId:"noElementHandle",node:a.callee,suggest:[{fix:t=>{let{property:s}=a.callee,r=[t.replaceTextRange(st(s),"locator")];return a.parent.type==="AwaitExpression"&&r.push(t.removeRange([a.parent.range[0],a.range[0]])),r},messageId:E(a,"$")?"replaceElementHandleWithLocator":"replaceElementHandlesWithLocator"}]})}}},meta:{docs:{description:"The use of ElementHandle is discouraged, use Locator instead",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-element-handle.md"},hasSuggestions:!0,messages:{noElementHandle:"Unexpected use of element handles.",replaceElementHandlesWithLocator:"Replace `page.$$` with `page.locator`",replaceElementHandleWithLocator:"Replace `page.$` with `page.locator`"},type:"suggestion"}}),lt=u({create(e){return{CallExpression(a){let t=E(a,"$eval");(t||E(a,"$$eval"))&&e.report({messageId:t?"noEval":"noEvalAll",node:a.callee})}}},meta:{docs:{description:"The use of `page.$eval` and `page.$$eval` are discouraged, use `locator.evaluate` or `locator.evaluateAll` instead",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-eval.md"},messages:{noEval:"Unexpected use of page.$eval().",noEvalAll:"Unexpected use of page.$$eval()."},type:"problem"}});function nt(e,a){let t=e;for(;t;){let s=t.set.get(a);if(s&&s.defs.length>0)return!0;t=t.upper}return!1}var ot=u({create(e){let a=[],t=!1;return{"AssignmentExpression > MemberExpression"(s){let{object:r,property:l}=s;r.type==="MemberExpression"&&({object:r,property:l}=r),!(!S(r,"module")||nt(e.sourceCode.getScope(r),"module"))&&S(l,/^exports?$/)&&a.push(s)},CallExpression(s){h(e,s,["describe","test"])&&(t=!0)},"ExportAllDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, TSExportAssignment"(s){a.push(s)},"Program:exit"(){if(t)for(let s of a)e.report({messageId:"unexpectedExport",node:s})}}},meta:{docs:{description:"Disallow using `export` in files containing tests",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-export.md"},messages:{unexpectedExport:"Do not export from a test file"},schema:[],type:"suggestion"}}),it=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="test"&&t?.type!=="describe")return;let s=t.members.find(r=>c(r)==="only");s&&e.report({messageId:"noFocusedTest",node:s,suggest:[{fix:r=>r.removeRange([s.range[0]-1,s.range[1]+ +(s.type!=="Identifier")]),messageId:"suggestRemoveOnly"}]})}}},meta:{docs:{description:"Prevent usage of `.only()` focus test annotation",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-focused-test.md"},hasSuggestions:!0,messages:{noFocusedTest:"Unexpected focused test.",suggestRemoveOnly:"Remove .only() annotation."},type:"problem"}});function ft(e){let a=e.arguments.at(-1);return a?.type==="ObjectExpression"&&a.properties.find(t=>t.type==="Property"&&c(t.key)==="force"&&I(t.value,!0))}var ct=new Set(["check","uncheck","click","dblclick","dragTo","fill","hover","selectOption","selectText","setChecked","tap"]),ut=u({create(e){return{MemberExpression(a){if(ct.has(c(a.property))&&a.parent.type==="CallExpression"){let t=ft(a.parent);t&&e.report({messageId:"noForceOption",node:t})}}}},meta:{docs:{description:"Prevent usage of `{ force: true }` option.",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-force-option.md"},messages:{noForceOption:"Unexpected use of { force: true } option."},type:"suggestion"}}),pt=u({create(e){return{CallExpression(a){a.callee.type==="MemberExpression"&&c(a.callee.property)==="getByTitle"&&e.report({messageId:"noGetByTitle",node:a})}}},meta:{docs:{description:"Disallows the usage of getByTitle()",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-get-by-title.md"},messages:{noGetByTitle:"The HTML title attribute is not an accessible name. Prefer getByRole() or getByLabelText() instead."},type:"suggestion"}}),mt=u({create(e){let a={allow:[],...e.options?.[0]??{}};return{CallExpression(t){let s=d(e,t);s&&s.type==="hook"&&!a.allow.includes(s.name)&&e.report({data:{hookName:s.name},messageId:"unexpectedHook",node:t})}}},meta:{docs:{description:"Disallow setup and teardown hooks",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-hooks.md"},messages:{unexpectedHook:"Unexpected '{{ hookName }}' hook"},schema:[{additionalProperties:!1,properties:{allow:{items:{enum:["beforeAll","beforeEach","afterAll","afterEach"],type:"string"},type:"array"}},type:"object"}],type:"suggestion"}}),me=()=>({describeTitles:[],testTitles:[]}),dt=u({create(e){let a=[me()];return{CallExpression(t){let s=a[a.length-1],r=d(e,t);if(!r||(r.type==="describe"&&a.push(me()),r.type!=="describe"&&r.type!=="test"))return;let[l]=t.arguments;if(!l||!M(l))return;let n=c(l),i=r.type==="describe"?s.describeTitles:s.testTitles;i.includes(n)&&e.report({messageId:r.type==="describe"?"multipleDescribeTitle":"multipleTestTitle",node:l}),i.push(n)},"CallExpression:exit"(t){h(e,t,["describe"])&&a.pop()}}},meta:{docs:{description:"Disallow identical titles",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-identical-title.md"},messages:{multipleDescribeTitle:"Describe block title is used multiple times in the same describe block",multipleTestTitle:"Test title is used multiple times in the same describe block"},schema:[],type:"suggestion"}});function N(e){if(e.type==="Literal")return typeof e.value=="number"?e.value:void 0;if(e.type==="UnaryExpression"&&(e.operator==="-"||e.operator==="+")){let a=N(e.argument);return a===void 0?void 0:e.operator==="-"?-a:a}if(e.type==="BinaryExpression"){let a=e.left.type==="PrivateIdentifier"?void 0:N(e.left),t=N(e.right);if(a===void 0||t===void 0)return;switch(e.operator){case"*":return a*t;case"/":return a/t;case"+":return a+t;case"-":return a-t;default:return}}}function gt(e){let a=e;for(;a;){if(a.type==="CallExpression"&&c(a.callee.type==="MemberExpression"?a.callee.property:a.callee)==="defineConfig")return!0;a=a.parent}return!1}function yt(e){let a=e.parent;return(a?.type==="CallExpression"||a?.type==="NewExpression")&&a.arguments.includes(e)}var ht=u({create(e){let{allow:a=[],minOccurrences:t=1,properties:s=["timeout"]}=e.options?.[0]??{},r=new Set(a),l=new Set(s),n=new Map;function i(o){let f=N(o);if(f===void 0||r.has(f))return;let p=n.get(f);p?p.push(o):n.set(f,[o])}return{CallExpression(o){o.callee.type==="MemberExpression"&&c(o.callee.property)==="setTimeout"&&o.arguments.length===1&&o.arguments[0].type!=="SpreadElement"&&i(o.arguments[0])},"Program:exit"(){for(let o of n.values())if(!(o.length<t))for(let f of o)e.report({data:{count:String(o.length),value:e.sourceCode.getText(f)},messageId:t>1?"repeatedMagicTimeout":"noMagicTimeout",node:f})},Property(o){if(o.computed&&o.key.type!=="Literal"||!l.has(c(o.key))||o.value.type==="AssignmentPattern"||o.value.type==="RestElement")return;let f=o.parent;f?.type==="ObjectExpression"&&yt(f)&&(gt(f)||i(o.value))}}},meta:{docs:{description:"Disallow magic numbers as Playwright timeout values",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-magic-timeouts.md"},messages:{noMagicTimeout:"Avoid the magic timeout `{{ value }}`. Extract it to a named constant, or configure it globally in your Playwright config.",repeatedMagicTimeout:"The magic timeout `{{ value }}` is used {{ count }} times in this file. Extract it to a named constant, or configure it globally in your Playwright config."},schema:[{additionalProperties:!1,properties:{allow:{items:{type:"number"},type:"array"},minOccurrences:{minimum:1,type:"integer"},properties:{items:{type:"string"},type:"array"}},type:"object"}],type:"suggestion"}}),St=u({create(e){let a=[];function t(r){let{parent:l}=r;l?.type!=="CallExpression"||!h(e,l,["step"])||(a.push(0),a.length>1&&e.report({messageId:"noNestedStep",node:l.callee}))}function s(r){let{parent:l}=r;l?.type==="CallExpression"&&h(e,l,["step"])&&a.pop()}return{ArrowFunctionExpression:t,"ArrowFunctionExpression:exit":s,FunctionExpression:t,"FunctionExpression:exit":s}},meta:{docs:{description:"Disallow nested `test.step()` methods",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-nested-step.md"},messages:{noNestedStep:"Do not nest `test.step()` methods."},schema:[],type:"problem"}}),de="noNetworkidle",bt=new Set(["goBack","goForward","goto","reload","setContent","waitForLoadState","waitForURL"]),Et=u({create(e){return{CallExpression(a){if(a.callee.type!=="MemberExpression")return;let t=c(a.callee.property);if(bt.has(t)){if(t==="waitForLoadState"){let s=a.arguments[0];s&&M(s,"networkidle")&&e.report({messageId:de,node:s});return}if(a.arguments.length>=2){let[s,r]=a.arguments;if(r.type!=="ObjectExpression")return;let l=r.properties.filter(n=>n.type==="Property").find(n=>M(n.value,"networkidle"));l&&e.report({messageId:de,node:l.value})}}}}},meta:{docs:{description:"Prevent usage of the networkidle option",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-networkidle.md"},messages:{noNetworkidle:"Unexpected use of networkidle."},type:"problem"}}),vt=new Set(["first","last","nth"]),Ct=u({create(e){return{CallExpression(a){if(a.callee.type!=="MemberExpression")return;let t=c(a.callee.property);vt.has(t)&&e.report({data:{method:t},loc:{end:a.loc.end,start:a.callee.property.loc.start},messageId:"noNthMethod"})}}},meta:{docs:{description:"Disallow usage of nth methods",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-nth-methods.md"},messages:{noNthMethod:"Unexpected use of {{method}}()"},type:"problem"}}),Tt=u({create(e){return{CallExpression(a){E(a,"pause")&&e.report({messageId:"noPagePause",node:a})}}},meta:{docs:{description:"Prevent usage of page.pause()",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-page-pause.md"},messages:{noPagePause:"Unexpected use of page.pause()."},type:"problem"}});function ge(e){let a=/\[([^=]+?)=['"]?([^'"]+?)['"]?\]/.exec(e);return a?`[${a[1]}=${a[2]}]`:e}var Rt=u({create(e){let a={allowed:[],...e.options?.[0]??{}};function t(s){return a.allowed.some(r=>ge(r)===ge(s))}return{CallExpression(s){if(!(s.callee.type!=="MemberExpression"||!T(s.callee,"locator"))&&(s.arguments.length===0||M(s.arguments[0]))&&!t(c(s.arguments[0]))){e.report({messageId:"noRawLocator",node:s});return}}}},meta:{docs:{description:"Disallows the usage of raw locators",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-raw-locators.md"},messages:{noRawLocator:"Usage of raw locator detected. Use methods like .getByRole() or .getByText() instead of raw locators."},schema:[{additionalProperties:!1,properties:{allowed:{items:{type:"string"},type:"array"}},type:"object"}],type:"suggestion"}}),xt=u({create(e){let t=(e.options?.[0]??[]).map(r=>typeof r=="string"?{message:null,type:r}:{message:r.message??null,type:r.type}),s=new Map;for(let r of t)s.set(r.type,r.message);return{CallExpression(r){if(r.callee.type==="MemberExpression"){for(let[l,n]of s.entries())if(c(r.callee.property)===l){e.report({data:{message:n??"",method:l},messageId:n?"restrictedWithMessage":"restricted",node:r});break}}}}},meta:{docs:{description:"Disallows the usage of specific locator methods",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-locators.md"},messages:{restricted:"Usage of `{{method}}` is disallowed",restrictedWithMessage:"{{message}}"},schema:[{items:{oneOf:[{type:"string"},{additionalProperties:!1,properties:{message:{type:"string"},type:{type:"string"}},required:["type"],type:"object"}]},type:"array"}],type:"suggestion"}}),Pt=u({create(e){let a=e.options?.[0]??{};return{CallExpression(t){let s=d(e,t);s?.type==="expect"&&Object.entries(a).map(([r,l])=>{let n=s.members,i=r.split(".").length,o=n.findIndex((f,p)=>n.slice(p,p+i).map(c).join(".")===r);return{chain:o!==-1?n.slice(o,o+i):[],message:l,restriction:r}}).filter(({chain:r})=>r.length).forEach(({chain:r,message:l,restriction:n})=>{e.report({data:{message:l??"",restriction:n},loc:{end:r.at(-1).loc.end,start:r[0].loc.start},messageId:l?"restrictedWithMessage":"restricted"})})}}},meta:{docs:{description:"Disallow specific matchers & modifiers",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-matchers.md"},messages:{restricted:"Use of `{{restriction}}` is disallowed",restrictedWithMessage:"{{message}}"},schema:[{additionalProperties:{type:["string","null"]},type:"object"}],type:"suggestion"}}),Mt=u({create(e){let t=(e.options?.[0]??[]).map(r=>typeof r=="string"?{message:null,role:r}:{message:r.message??null,role:r.role}),s=new Map;for(let r of t)s.set(r.role,r.message);return{CallExpression(r){if(r.callee.type!=="MemberExpression"||!T(r.callee,"getByRole"))return;let l=c(r.arguments[0]);if(l&&s.has(l)){let n=s.get(l)??"";e.report({data:{message:n,role:l},messageId:n?"restrictedWithMessage":"restricted",node:r})}}}},meta:{docs:{description:"Disallows the usage of specific roles in getByRole()",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-roles.md"},messages:{restricted:"Usage of role `{{role}}` in getByRole() is disallowed",restrictedWithMessage:"{{message}}"},schema:[{items:{oneOf:[{type:"string"},{additionalProperties:!1,properties:{message:{type:"string"},role:{type:"string"}},required:["role"],type:"object"}]},type:"array"}],type:"suggestion"}});function wt(e,a){let t=e.sourceCode.getScope(a);for(;t;){let s=t.variables.find(r=>r.name===a.name);if(s)return s;t=t.upper}}function It(e,a){if(a.type!=="Identifier")return!1;let t=wt(e,a)?.defs[0];if(t?.type!=="Parameter")return!1;let s=t.node;if(!R(s)||s.params[1]!==t.name)return!1;let r=s.parent;if(r?.type!=="CallExpression"||!r.arguments.includes(s))return!1;let l=d(e,r);return l?.group==="test"||l?.group==="hook"||l?.group==="step"}var kt=u({create(e){let a=e.options[0]||{},t=!!a.disallowFixme,s=typeof a.allowConditional=="object"?{fixme:!!a.allowConditional.fixme,skip:!!a.allowConditional.skip}:{fixme:!!a.allowConditional,skip:!!a.allowConditional},r=l=>l==="skip"||t&&l==="fixme";return{CallExpression(l){let n=!1,i,o=d(e,l);if(o?.group==="test"||o?.group==="describe"||o?.group==="step"?(n=o.type==="config",i=o.members.find(p=>r(c(p)))):l.callee.type==="MemberExpression"&&r(c(l.callee.property))&&It(e,l.callee.object)&&(n=!0,i=l.callee.property),!i)return;let f=c(i);n&&s[f]&&(l.arguments.length!==0||w(l,"BlockStatement")?.parent?.type==="IfStatement"||w(l,"SwitchCase")!==void 0)||e.report({data:{annotation:f},messageId:"noSkippedTest",node:n?l:i,suggest:[{data:{annotation:f},fix:p=>n?p.remove(l.parent):p.removeRange([i.range[0]-1,i.range[1]+ +(i.type!=="Identifier")]),messageId:"removeAnnotation"}]})}}},meta:{docs:{description:"Prevent usage of the `.skip()` skip test annotation.",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-skipped-test.md"},hasSuggestions:!0,messages:{noSkippedTest:"Unexpected use of the `.{{annotation}}()` annotation.",removeAnnotation:"Remove the `.{{annotation}}()` annotation."},schema:[{additionalProperties:!1,properties:{allowConditional:{anyOf:[{type:"boolean"},{additionalProperties:!1,properties:{fixme:{type:"boolean"},skip:{type:"boolean"}},type:"object"}],default:!1},disallowFixme:{default:!1,type:"boolean"}},type:"object"}],type:"suggestion"}}),At=u({create(e){return{CallExpression(a){let s=!!(e.options[0]||{}).allowConditional,r=d(e,a);if(r?.group!=="test")return;let l=r.members.find(i=>c(i)==="slow");if(!l)return;let n=r.type==="config";n&&s&&(a.arguments.length!==0||w(a,"BlockStatement")?.parent?.type==="IfStatement")||e.report({messageId:"noSlowedTest",node:n?a:l,suggest:[{fix:i=>n?i.remove(a.parent):i.removeRange([l.range[0]-1,l.range[1]+ +(l.type!=="Identifier")]),messageId:"removeSlowedTestAnnotation"}]})}}},meta:{docs:{description:"Prevent usage of the `.slow()` slow test annotation.",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-slowed-test.md"},hasSuggestions:!0,messages:{noSlowedTest:"Unexpected use of the `.slow()` annotation.",removeSlowedTestAnnotation:"Remove the `.slow()` annotation."},schema:[{additionalProperties:!1,properties:{allowConditional:{default:!1,type:"boolean"}},type:"object"}],type:"suggestion"}}),ye=(e,a)=>{let t=a.parent;if(!t)throw new Error("Unexpected BlockStatement. No parent defined. - please file a github issue at https://github.com/mskelton/eslint-plugin-playwright");if(t.type==="FunctionDeclaration")return"function";if(R(t)&&t.parent){let s=t.parent;if(s.type==="VariableDeclarator"||s.type==="MethodDefinition")return"function";if(s.type==="CallExpression"&&h(e,s,["describe"]))return"describe"}return null},Ut=u({create(e){let a=[];return{ArrowFunctionExpression(t){t.parent?.type!=="CallExpression"&&a.push("arrow")},"ArrowFunctionExpression:exit"(){a.at(-1)==="arrow"&&a.pop()},BlockStatement(t){let s=ye(e,t);s&&a.push(s)},"BlockStatement:exit"(t){a.at(-1)===ye(e,t)&&a.pop()},CallExpression(t){let s=d(e,t);if(s?.type==="expect"){if(s.head.node.parent?.type==="MemberExpression"&&s.members.length===1)return;let r=a.at(-1);(!r||r==="describe")&&e.report({messageId:"unexpectedExpect",node:t});return}s?.type==="test"&&a.push("test"),s?.type==="hook"&&a.push("hook"),t.callee.type==="MemberExpression"&&T(t.callee,"extend")&&a.push("fixture"),t.callee.type==="TaggedTemplateExpression"&&a.push("template")},"CallExpression:exit"(t){let s=a.at(-1);(s==="test"&&h(e,t,["test"])||s==="hook"&&h(e,t,["hook"])||s==="template"&&t.callee.type==="TaggedTemplateExpression"||s==="fixture"&&t.callee.type==="MemberExpression"&&T(t.callee,"extend"))&&a.pop()}}},meta:{docs:{description:"Disallow using `expect` outside of `test` blocks",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-standalone-expect.md"},fixable:"code",messages:{unexpectedExpect:"Expect must be inside of a test block"},type:"suggestion"}}),Bt={describe:"test.describe",step:"test.step",test:"test"};function Dt(e){return`'${e.replaceAll("\\","\\\\").replaceAll("'","\\'")}'`}var Lt=u({create(e){let{ignore:a}={ignore:[],...e.options?.[0]??{}};return{CallExpression(t){let s=d(e,t);if(s?.type!=="test"&&s?.type!=="describe"&&s?.type!=="step")return;let[r]=t.arguments;if(r?.type!=="TemplateLiteral")return;let l=Bt[s.type];if(a.includes(l))return;if(r.expressions.length>0){e.report({data:{method:l},messageId:"interpolatedTitle",node:r});return}let n=r.quasis[0].value.cooked,i=typeof n=="string"&&!/[\n\r]/.test(n);e.report({data:{method:l},fix:i?o=>o.replaceText(r,Dt(n)):void 0,messageId:"staticTemplateLiteral",node:r})}}},meta:{docs:{description:"Disallow template literals in test, describe, and step titles",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-template-literal-title.md"},fixable:"code",messages:{interpolatedTitle:"Do not interpolate values into `{{method}}` titles. Titles are used by reporters and `--grep`, so they should be stable.",staticTemplateLiteral:"Use a string literal instead of a template literal for `{{method}}` titles."},schema:[{additionalProperties:!1,properties:{ignore:{additionalItems:!1,items:{enum:["test","test.describe","test.step"]},type:"array"}},type:"object"}],type:"suggestion"}});function Gt(e){let a=e.arguments.filter(R).at(-1);return a?.body.type==="BlockStatement"?a.body.body:[]}var _t=u({create(e){return{CallExpression(a){if(!h(e,a,["test"]))return;let t=Gt(a).find(s=>s.type==="ReturnStatement");t&&e.report({messageId:"noReturnValue",node:t})}}},meta:{docs:{description:"Disallow explicitly returning from tests",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-test-return-statement.md"},messages:{noReturnValue:"Tests should not return a value"},schema:[],type:"suggestion"}}),Le=new Set(["getByAltText","getByLabel","getByPlaceholder","getByRole","getByTestId","getByText","getByTitle","locator"]),Ft=new Set([...Le,"and","filter","first","last","nth","or"]),Ot={toBeDefined:"undefined",toBeTruthy:"falsy"},Nt={toBeFalsy:"falsy",toBeNull:"null",toBeUndefined:"undefined"};function Wt(e){if(e?.type!=="CallExpression"||e.callee.type!=="MemberExpression"||!Ft.has(c(e.callee.property)))return!1;let a=e;for(;a;)if(a.type==="CallExpression")a=a.callee;else if(a.type==="MemberExpression"){if(Le.has(c(a.property)))return!0;a=a.object}else return!1;return!1}function Vt(e){let a=e.parent;for(;a;){switch(a.type){case"ArrowFunctionExpression":case"FunctionDeclaration":case"FunctionExpression":return a.async===!0;case"PropertyDefinition":case"StaticBlock":return!1}a=a.parent}return!1}var Ht=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect")return;let s=t.modifiers.map(p=>c(p));if(s.some(p=>p==="resolves"||p==="rejects"))return;let r=s.includes("not"),l=r?Nt[t.matcherName]:Ot[t.matcherName];if(l===void 0||t.args.length===0)return;let n=G(e,t.args[0]);if(!Wt(n))return;let i=w(t.head.node,"CallExpression"),o=w(t.matcher,"CallExpression");if(!i||!o)return;let f=Vt(o)&&!e.sourceCode.commentsExistBetween(i,t.matcher);e.report({data:{matcher:r?`not.${t.matcherName}`:t.matcherName,value:l},messageId:"noUnnecessaryAssertions",node:o,suggest:f?[{fix(p){let g=[p.replaceTextRange([i.range[1],o.range[1]],".toBeVisible()")];return o.parent?.type==="AwaitExpression"||g.unshift(p.insertTextBefore(i,"await ")),g},messageId:"replaceWithToBeVisible"}]:[]})}}},meta:{docs:{description:"Disallow assertions on a Locator that can never fail",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-unnecessary-assertions.md"},hasSuggestions:!0,messages:{noUnnecessaryAssertions:"This assertion can never fail: a Playwright Locator is never {{value}}, so `expect(locator).{{matcher}}()` always passes. Assert rendered state with a web-first matcher such as `toBeVisible()`.",replaceWithToBeVisible:"Replace with `await expect(locator).toBeVisible()`."},type:"problem"}}),X=e=>({amount:e.toString(),s:e===1?"":"s"}),Ge=Boolean;function _e(e){return!e||e.type==="global"?[]:[..._e(e.upper),...e.variables.map(a=>a.name)]}function qt(e,a,t){if(!a.arguments.length)return;if(a.arguments.length===1)return e.insertTextAfter(a.arguments[0],`, [${t}]`);let s=a.arguments.at(-1);if(!s)return;if(s.type!=="ArrayExpression")return e.replaceText(s,`[${c(s)}, ${t}]`);let r=s.elements.at(-1);return r?e.insertTextAfter(r,`, ${t}`):e.replaceText(s,`[${t}]`)}function jt(e,a){let t=e.sourceCode.getFirstToken(a);for(;t&&t.value!=="(";)t=e.sourceCode.getTokenAfter(t);return t}function $t(e,a,t,s){let r=t.params.at(-1);if(r)return r.type==="ArrayPattern"?a.insertTextAfter(r.elements.at(-1),`, ${s}`):a.replaceText(r,`[${c(r)}, ${s}]`);let l=jt(e,t);return l?a.insertTextAfter(l,`[${s}]`):null}var Qt=u({create(e){return{CallExpression(a){if(!E(a,"evaluate")&&!E(a,"addInitScript"))return;let[t]=a.arguments;if(!t||!R(t))return;let{through:s,upper:r}=e.sourceCode.getScope(t.body),l=new Set(_e(r));s.filter(n=>n.identifier.parent?.type!=="TSTypeReference").filter(n=>l.has(n.identifier.name)).forEach((n,i,o)=>{let p={data:{method:E(a,"evaluate")?"evaluate":"addInitScript",variable:n.identifier.name},messageId:"noUnsafeReference",node:n.identifier};if(i!==0){e.report(p);return}e.report({...p,fix(g){let m=o.map(y=>y.identifier.name).join(", ");return[qt(g,a,m),$t(e,g,t,m)].filter(Ge)}})})}}},meta:{docs:{description:"Prevent unsafe variable references in page.evaluate() and page.addInitScript()",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-unsafe-references.md"},fixable:"code",messages:{noUnsafeReference:'Unsafe reference to variable "{{ variable }}" in page.{{ method }}()'},type:"problem"}}),Xt=/locator|getBy(Role|Text|Label|Placeholder|AltText|Title|TestId)/,Yt=u({create(e){return{CallExpression(a){a.callee.type!=="MemberExpression"||!T(a.callee,Xt)||(a.parent.type==="ExpressionStatement"||a.parent.type==="AwaitExpression")&&e.report({messageId:"noUnusedLocator",node:a})}}},meta:{docs:{description:"Disallow usage of page locators that are not used",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-unused-locators.md"},messages:{noUnusedLocator:"Unused locator"},type:"problem"}}),Kt=new Set(["and","first","getByAltText","getByLabel","getByPlaceholder","getByRole","getByTestId","getByText","getByTitle","last","locator","nth","or"]),zt=new Set(["childFrames","frame","frameLocator","frames","isClosed","isDetached","mainFrame","name","on","page","parentFrame","setDefaultNavigationTimeout","setDefaultTimeout","url","video","viewportSize","workers"]),Jt=new Set(["toBe","toBeCloseTo","toBeDefined","toBeFalsy","toBeGreaterThan","toBeGreaterThanOrEqual","toBeInstanceOf","toBeLessThan","toBeLessThanOrEqual","toBeNaN","toBeNull","toBeTruthy","toBeUndefined","toContain","toContainEqual","toEqual","toHaveLength","toHaveProperty","toMatch","toMatchObject","toStrictEqual","toThrow","toThrowError"]);function Zt(e){if(e.callee.type!=="MemberExpression")return!1;let a=c(e.callee.property);return Kt.has(a)||zt.has(a)&&E(e,a)}var es=u({create(e){function a(t){let s=t.loc.start,r=t.range;e.report({fix:l=>l.removeRange([r[0],r[0]+6]),loc:{end:{column:s.column+5,line:s.line},start:s},messageId:"noUselessAwait"})}return{"AwaitExpression > CallExpression"(t){if(t.callee.type==="MemberExpression"&&Zt(t))return a(t.parent);let s=d(e,t);if(s?.type==="expect"&&!s.modifiers.some(r=>S(r,/^(resolves|rejects)$/))&&!s.modifiers.some(r=>c(r)==="poll")&&Jt.has(s.matcherName))return a(t.parent)}}},meta:{docs:{description:"Disallow unnecessary awaits for Playwright methods",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-useless-await.md"},fixable:"code",messages:{noUselessAwait:"Unnecessary await expression. This method does not return a Promise."},type:"problem"}}),Y=e=>e.type==="Identifier"?0:1;function F(e,a,t){let[s,r]=a.range;return e.replaceTextRange([s+Y(a),r-Y(a)],t)}function as(e,a){let t=a.parent;if(t?.type!=="ObjectExpression")return;if(t.properties.length===1)return e.remove(t);let s=t.properties.indexOf(a),r=s?[t.properties[s-1].range[1],a.range[1]]:[a.range[0],t.properties[1].range[0]];return e.removeRange(r)}var ts={toBeDisabled:{inverse:"toBeEnabled"},toBeEnabled:{argName:"enabled",inverse:"toBeDisabled"},toBeHidden:{inverse:"toBeVisible"},toBeVisible:{argName:"visible",inverse:"toBeHidden"}};function ss(e,a){let[t]=e.matcherArgs;if(t?.type!=="ObjectExpression")return;let s=t.properties.find(r=>r.type==="Property"&&c(r.key)===a&&I(r.value));return{arg:t,property:s,value:s?.value?.value}}var rs=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect")return;let s=ts[t.matcherName];if(!s)return;let r=s.argName?ss(t,s.argName):void 0;if(r?.arg&&r.value===void 0)return;let l=t.modifiers.find(o=>c(o)==="not");if(!l&&!r?.property)return;let n=!!l!=(r?.value===!1),i=n?s.inverse:t.matcherName;e.report({data:{new:i,old:t.matcherName,property:s.argName??""},fix:o=>[l&&o.removeRange([l.range[0]-Y(l),l.range[1]+1]),r?.property&&as(o,r.property),t.matcherName!==i&&F(o,t.matcher,i)].filter(Ge),loc:l?{end:t.matcher.loc.end,start:l.loc.start}:r.property.loc,messageId:l?"noUselessNot":n?"noUselessProperty":"noUselessTruthy"})}}},meta:{docs:{description:"Disallow usage of 'not' matchers when a more specific matcher exists",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-useless-not.md"},fixable:"code",messages:{noUselessNot:"Unexpected usage of not.{{old}}(). Use {{new}}() instead.",noUselessProperty:"Unexpected usage of '{{old}}({ {{property}}: false })'. Use '{{new}}()' instead.",noUselessTruthy:"Unexpected usage of '{{old}}({ {{property}}: true })'. Use '{{new}}()' instead."},type:"problem"}}),ls=u({create(e){return{CallExpression(a){E(a,"waitForNavigation")&&e.report({messageId:"noWaitForNavigation",node:a,suggest:[{fix:t=>t.remove(a.parent&&a.parent.type!=="AwaitExpression"&&a.parent.type!=="VariableDeclarator"?a.parent:a.parent.parent),messageId:"removeWaitForNavigation"}]})}}},meta:{docs:{description:"Prevent usage of page.waitForNavigation()",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-wait-for-navigation.md"},hasSuggestions:!0,messages:{noWaitForNavigation:"Unexpected use of page.waitForNavigation().",removeWaitForNavigation:"Remove the page.waitForNavigation() method."},type:"suggestion"}}),ns=u({create(e){return{CallExpression(a){E(a,"waitForSelector")&&e.report({messageId:"noWaitForSelector",node:a,suggest:[{fix:t=>t.remove(a.parent&&a.parent.type!=="AwaitExpression"&&a.parent.type!=="VariableDeclarator"?a.parent:a.parent.parent),messageId:"removeWaitForSelector"}]})}}},meta:{docs:{description:"Prevent usage of page.waitForSelector()",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-wait-for-selector.md"},hasSuggestions:!0,messages:{noWaitForSelector:"Unexpected use of page.waitForSelector().",removeWaitForSelector:"Remove the page.waitForSelector() method."},type:"suggestion"}}),os=u({create(e){return{CallExpression(a){E(a,"waitForTimeout")&&e.report({messageId:"noWaitForTimeout",node:a,suggest:[{fix:t=>t.remove(a.parent&&a.parent.type!=="AwaitExpression"&&a.parent.type!=="VariableDeclarator"?a.parent:a.parent.parent),messageId:"removeWaitForTimeout"}]})}}},meta:{docs:{description:"Prevent usage of page.waitForTimeout()",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-wait-for-timeout.md"},hasSuggestions:!0,messages:{noWaitForTimeout:"Unexpected use of page.waitForTimeout().",removeWaitForTimeout:"Remove the page.waitForTimeout() method."},type:"suggestion"}}),he=e=>J(e)||e.type==="TemplateLiteral",is=e=>he(e.left)||he(e.right),fs=new Set(["not","soft","poll"]),cs={"<":">=","<=":">",">":"<=",">=":"<"},us={"<":"toBeLessThan","<=":"toBeLessThanOrEqual",">":"toBeGreaterThan",">=":"toBeGreaterThanOrEqual"},ps=(e,a)=>{let t=a?cs[e]:e;return us[t]??null},ms=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect"||t.matcherArgs.length===0)return;let s=t.head.node.parent;for(;s?.type==="MemberExpression";)s=s.parent;if(s?.type!=="CallExpression")return;let[r]=s.arguments,l=s.range[1],[n]=t.matcherArgs;if(r?.type!=="BinaryExpression"||is(r)||!U.has(t.matcherName)||!I(n))return;let i=t.modifiers.some(f=>c(f)==="not"),o=ps(r.operator,z(n)===i.toString());o&&e.report({data:{preferredMatcher:o},fix(f){let[p]=t.modifiers,g=p&&!fs.has(c(p))?`.${c(p)}`:"";return[f.replaceText(r,e.sourceCode.getText(r.left)),f.replaceTextRange([l,t.matcher.parent.range[1]],`${g}.${o}`),f.replaceText(n,e.sourceCode.getText(r.right))]},messageId:"useToBeComparison",node:t.matcher})}}},meta:{docs:{description:"Suggest using the built-in comparison matchers",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-comparison-matcher.md"},fixable:"code",messages:{useToBeComparison:"Prefer using `{{ preferredMatcher }}` instead"},type:"suggestion"}});function Se(e){return e.arguments.filter(R).at(-1)}function be(e){if(e.body.type!=="BlockStatement")return e.body;let a=e.body.body.at(-1);return a?.type==="ExpressionStatement"?a.expression:a?.type==="ReturnStatement"?a.argument??void 0:a}var ds=u({create(e){let a={assertFunctionNames:[],assertFunctionPatterns:[],...e.options?.[0]??{}},t=a.assertFunctionPatterns.map(r=>new RegExp(r));function s(r){if(r?.type==="AwaitExpression")return s(r.argument);if(r?.type!=="CallExpression")return!1;let l=d(e,r);if(l?.type==="expect")return!0;if(l?.type==="step"){let n=Se(r);return!!n&&s(be(n))}return a.assertFunctionNames.some(n=>A(r.callee,n))||t.some(n=>A(r.callee,n))}return{CallExpression(r){if(d(e,r)?.type!=="test")return;let l=Se(r);l&&(s(be(l))||e.report({messageId:"mustEndWithExpect",node:r.callee}))}}},meta:{docs:{description:"Prefer having the last statement in a test be an assertion",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-ending-with-an-expect.md"},messages:{mustEndWithExpect:"Tests should end with an assertion"},schema:[{additionalProperties:!1,properties:{assertFunctionNames:{items:{type:"string"},type:"array"},assertFunctionPatterns:{items:{type:"string"},type:"array"}},type:"object"}],type:"suggestion"}}),gs=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect"||t.matcherArgs.length===0)return;let s=t.head.node.parent;if(s?.type!=="CallExpression")return;let[r]=s.arguments,l=s.range[1],[n]=t.matcherArgs;if(r?.type!=="BinaryExpression"||r.operator!=="==="&&r.operator!=="!=="||!U.has(t.matcherName)||!I(n))return;let i=z(n)==="true",[o]=t.modifiers,f=t.modifiers.some(g=>c(g)==="not"),p=(r.operator==="!=="?!i:i)===f;e.report({messageId:"useEqualityMatcher",node:t.matcher,suggest:[...U.keys()].map(g=>({data:{matcher:g},fix(m){let y=o&&c(o)!=="not"?`.${c(o)}`:"";return p&&(y+=".not"),[m.replaceText(r,e.sourceCode.getText(r.left)),m.replaceTextRange([l,t.matcher.parent.range[1]],`${y}.${g}`),m.replaceText(n,e.sourceCode.getText(r.right))]},messageId:"suggestEqualityMatcher"}))})}}},meta:{docs:{description:"Suggest using the built-in equality matchers",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-equality-matcher.md"},hasSuggestions:!0,messages:{suggestEqualityMatcher:"Use `{{ matcher }}`",useEqualityMatcher:"Prefer using one of the equality matchers instead"},type:"suggestion"}}),Ee=["beforeAll","beforeEach","afterEach","afterAll"],ys=u({create(e){let a=-1,t=!1;return{CallExpression(s){if(t)return;let r=d(e,s);if(r?.type!=="hook"){a=-1;return}t=!0;let l=r.name,n=Ee.indexOf(l);if(n<a){e.report({data:{currentHook:l,previousHook:Ee[a]},messageId:"reorderHooks",node:s});return}a=n},"CallExpression:exit"(s){if(h(e,s,["hook"])){t=!1;return}t||(a=-1)}}},meta:{docs:{description:"Prefer having hooks in a consistent order",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-hooks-in-order.md"},messages:{reorderHooks:"`{{ currentHook }}` hooks should be before any `{{ previousHook }}` hooks"},type:"suggestion"}}),hs=u({create(e){let a=[!1];return{CallExpression(t){h(e,t,["test"])&&(a[a.length-1]=!0),a.at(-1)&&h(e,t,["hook"])&&e.report({messageId:"noHookOnTop",node:t}),a.push(!1)},"CallExpression:exit"(){a.pop()}}},meta:{docs:{description:"Suggest having hooks before any test cases",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-hooks-on-top.md"},messages:{noHookOnTop:"Hooks should come before test cases"},type:"suggestion"}}),Ss=new Set(["click","dblclick","dispatchEvent","fill","focus","getAttribute","hover","innerHTML","innerText","inputValue","isChecked","isDisabled","isEditable","isEnabled","isHidden","isVisible","press","selectOption","setChecked","setInputFiles","tap","textContent","uncheck"]);function bs(e){if(e.callee.type!=="MemberExpression")return!1;let a=c(e.callee.property);return Ss.has(a)&&E(e,a)}var Es=u({create(e){return{CallExpression(a){bs(a)&&e.report({messageId:"preferLocator",node:a})}}},meta:{docs:{description:"Suggest locators over page methods",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-locator.md"},messages:{preferLocator:"Prefer locator methods instead of page methods"},schema:[],type:"suggestion"}}),vs=u({create(e){let{allowedPrefixes:a,ignore:t,ignoreTopLevelDescribe:s}={allowedPrefixes:[],ignore:[],ignoreTopLevelDescribe:!1,...e.options?.[0]??{}},r=0;return{CallExpression(l){let n=d(e,l);if(n?.type!=="describe"&&n?.type!=="test"||n.type==="describe"&&(r++,s&&r===1))return;let[i]=l.arguments;if(!M(i))return;let o=c(i);if(!o||a.some(g=>o.startsWith(g)))return;let f=n.type==="describe"?"test.describe":"test",p=o.charAt(0);!p||p===p.toLowerCase()||t.includes(f)||e.report({data:{method:f},fix(g){let m=[i.range[0]+1,i.range[1]-1],y=o.substring(0,1).toLowerCase()+o.substring(1);return g.replaceTextRange(m,y)},messageId:"unexpectedLowercase",node:l.arguments[0]})},"CallExpression:exit"(l){h(e,l,["describe"])&&r--}}},meta:{docs:{description:"Enforce lowercase test names",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-lowercase-title.md"},fixable:"code",messages:{unexpectedLowercase:"`{{method}}`s should begin with lowercase"},schema:[{additionalProperties:!1,properties:{allowedPrefixes:{additionalItems:!1,items:{type:"string"},type:"array"},ignore:{additionalItems:!1,items:{enum:["test.describe","test"]},type:"array"},ignoreTopLevelDescribe:{default:!1,type:"boolean"}},type:"object"}],type:"suggestion"}}),Cs=({testIdAttribute:e})=>[{attribute:"aria-label",messageId:"unexpectedLabelQuery",replacement:"getByLabel"},{attribute:"role",messageId:"unexpectedRoleQuery",replacement:"getByRole"},{attribute:"placeholder",messageId:"unexpectedPlaceholderQuery",replacement:"getByPlaceholder"},{attribute:"alt",messageId:"unexpectedAltTextQuery",replacement:"getByAltText"},{attribute:"title",messageId:"unexpectedTitleQuery",replacement:"getByTitle"},{attribute:e,messageId:"unexpectedTestIdQuery",replacement:"getByTestId"}].map(({attribute:t,...s})=>({...s,pattern:new RegExp(`^\\[${t}=['"]?(.+?)['"]?\\]$`)})),Ts=u({create(e){let{testIdAttribute:a}={testIdAttribute:"data-testid",...e.options?.[0]??{}},t=Cs({testIdAttribute:a});return{CallExpression(s){if(s.callee.type!=="MemberExpression")return;let r=c(s.arguments[0]);if(T(s.callee,"locator"))for(let l of t){let n=r.match(l.pattern);if(n){e.report({fix(i){let o=s.callee.type==="MemberExpression"?s.callee.property.range[0]:s.range[0],f=s.range[1],p=[o,f],g=`${l.replacement}("${n[1]}")`;return i.replaceTextRange(p,g)},messageId:l.messageId,node:s});return}}}}},meta:{docs:{description:"Prefer native locator functions",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-native-locators.md"},fixable:"code",messages:{unexpectedAltTextQuery:"Use getByAltText() instead",unexpectedLabelQuery:"Use getByLabel() instead",unexpectedPlaceholderQuery:"Use getByPlaceholder() instead",unexpectedRoleQuery:"Use getByRole() instead",unexpectedTestIdQuery:"Use getByTestId() instead",unexpectedTitleQuery:"Use getByTitle() instead"},schema:[{additionalProperties:!1,properties:{testIdAttribute:{default:"data-testid",type:"string"}},type:"object"}],type:"suggestion"}}),Rs=u({create(e){return{CallExpression(a){let t=d(e,a);t?.type==="expect"&&t.matcherName==="toEqual"&&e.report({messageId:"useToStrictEqual",node:t.matcher,suggest:[{fix:s=>F(s,t.matcher,"toStrictEqual"),messageId:"suggestReplaceWithStrictEqual"}]})}}},meta:{docs:{description:"Suggest using `toStrictEqual()`",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-strict-equal.md"},fixable:"code",hasSuggestions:!0,messages:{suggestReplaceWithStrictEqual:"Replace with `toStrictEqual()`",useToStrictEqual:"Use toStrictEqual() instead"},schema:[],type:"suggestion"}});function xs(e){let a=e.matcherArgs[0];return a.type==="UnaryExpression"&&a.operator==="-"&&(a=a.argument),a.type==="Literal"?!("regex"in a):a.type==="TemplateLiteral"}function _(e,a,t,s){e.report({fix(r){let l=[F(r,a.matcher,`toBe${t}`)];if(a.matcherArgs?.length&&t!==""&&l.push(r.remove(a.matcherArgs[0])),s){let[n,i]=s.range;l.push(r.removeRange([n-1,i]))}return l},messageId:`useToBe${t}`,node:a.matcher})}var Ps=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect")return;let s=["toBeUndefined","toBeDefined"],r=t.modifiers.find(n=>c(n)==="not");if(r&&s.includes(t.matcherName))return _(e,t,t.matcherName==="toBeDefined"?"Undefined":"Defined",r);let l=t.matcherArgs[0];if(!(!U.has(t.matcherName)||!l)){if(l.type==="Literal"&&l.value===null)return _(e,t,"Null");if(S(l,"undefined"))return _(e,t,r?"Defined":"Undefined",r);if(S(l,"NaN"))return _(e,t,"NaN");xs(t)&&t.matcherName!=="toBe"&&_(e,t,"")}}}},meta:{docs:{description:"Suggest using `toBe()` for primitive literals",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-be.md"},fixable:"code",messages:{useToBe:"Use `toBe` when expecting primitive literals",useToBeDefined:"Use `toBeDefined` instead",useToBeNaN:"Use `toBeNaN` instead",useToBeNull:"Use `toBeNull` instead",useToBeUndefined:"Use `toBeUndefined` instead"},schema:[],type:"suggestion"}}),Ms=e=>e.type==="CallExpression"&&e.callee.type==="MemberExpression"&&T(e.callee,"includes")&&e.arguments.length===1&&e.arguments[0].type!=="SpreadElement",ws=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect"||t.matcherArgs.length===0)return;let s=t.head.node.parent;if(s?.type!=="CallExpression")return;let[r]=s.arguments,{matcher:l}=t,[n]=t.matcherArgs;if(!r||n.type==="SpreadElement"||!U.has(c(l))||!I(n)||!Ms(r))return;let i=t.modifiers.find(o=>c(o)==="not");e.report({fix(o){let f=n.type==="Literal"&&n.value===!!i,p=[o.removeRange([r.callee.property.range[0]-1,r.range[1]]),o.replaceText(l,f?"not.toContain":"toContain"),o.replaceText(t.matcherArgs[0],e.sourceCode.getText(r.arguments[0]))];return i&&p.push(o.removeRange([i.range[0],i.range[1]+1])),p},messageId:"useToContain",node:l})}}},meta:{docs:{description:"Suggest using toContain()",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-contain.md"},fixable:"code",messages:{useToContain:"Use toContain() instead"},type:"suggestion"}}),Is=new Set([...U,"toHaveLength"]),ks=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect"||!Is.has(t.matcherName))return;let s=t.matcherName==="toHaveLength"?"all":"count",r=G(e,t.args[0]);if(r?.type!=="AwaitExpression"||r.argument.type!=="CallExpression"||r.argument.callee.type!=="MemberExpression"||!T(r.argument.callee,s))return;let l=r.argument.callee;e.report({fix(n){return[n.removeRange([r.range[0],r.range[0]+5+1]),n.removeRange([l.property.range[0]-1,r.argument.range[1]]),F(n,t.matcher,"toHaveCount"),n.insertTextBefore(a,"await ")]},messageId:"useToHaveCount",node:t.matcher})}}},meta:{docs:{description:"Suggest using `toHaveCount()`",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-count.md"},fixable:"code",messages:{useToHaveCount:"Use toHaveCount() instead"},schema:[],type:"suggestion"}}),As=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect"||!U.has(t.matcherName))return;let[s]=t.args;s?.type!=="MemberExpression"||!T(s,"length")||e.report({fix(r){return[r.removeRange([s.property.range[0]-1,s.range[1]]),F(r,t.matcher,"toHaveLength")]},messageId:"useToHaveLength",node:t.matcher})}}},meta:{docs:{description:"Suggest using `toHaveLength()`",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-to-have-length.md"},fixable:"code",messages:{useToHaveLength:"Use toHaveLength() instead"},schema:[],type:"suggestion"}}),ve={allInnerTexts:{fixable:!1,matcher:"toHaveText",type:"string"},allTextContents:{fixable:!1,matcher:"toHaveText",type:"string"},getAttribute:{matcher:"toHaveAttribute",type:"string"},innerText:{matcher:"toHaveText",type:"string"},inputValue:{matcher:"toHaveValue",type:"string"},isChecked:{matcher:"toBeChecked",prop:"checked",type:"boolean"},isDisabled:{inverse:"toBeEnabled",matcher:"toBeDisabled",type:"boolean"},isEditable:{matcher:"toBeEditable",type:"boolean"},isEnabled:{inverse:"toBeDisabled",matcher:"toBeEnabled",type:"boolean"},isHidden:{inverse:"toBeVisible",matcher:"toBeHidden",type:"boolean"},isVisible:{inverse:"toBeHidden",matcher:"toBeVisible",type:"boolean"},textContent:{matcher:"toHaveText",type:"string"}},Us=new Set(["toBe","toEqual","toBeTruthy","toBeFalsy"]),Bs=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect")return;let s=w(t.head.node,"CallExpression");if(!s)return;let r=G(e,t.args[0]);if(!r)return;let l=r.type==="AwaitExpression"?r.argument:r;if(l.type!=="CallExpression"||l.callee.type!=="MemberExpression"||!Us.has(t.matcherName))return;let n=c(l.callee.property),i=ve[n];if(!Object.hasOwn(ve,n))return;let o=t.modifiers.find(y=>c(y)==="not"),f=i.type==="boolean"&&(!!t.matcherArgs.length&&I(t.matcherArgs[0],!1)||t.matcherName==="toBeFalsy"),p=i.inverse?o||f:o&&f,g=+!!o^+f&&i.inverse||i.matcher;if(i.fixable===!1){e.report({data:{matcher:i.matcher,method:n},messageId:"useWebFirstAssertion",node:l.callee.property});return}let{callee:m}=l;e.report({data:{matcher:g,method:n},fix:y=>{let x=l.type==="CallExpression"?l.arguments:[],b=x.length?x.at(-1).range[1]+1:m.property.range[1]+2,v=[y.insertTextBefore(s,"await "),y.replaceTextRange([r.range[0],l.range[0]],""),y.replaceTextRange([m.property.range[0]-1,b],"")];if(p&&o){let P=o.range;v.push(y.removeRange([P[0],P[1]+1]))}!i.inverse&&!o&&f&&v.push(y.insertTextBefore(t.matcher,"not.")),v.push(y.replaceText(t.matcher,g));let[C]=t.matcherArgs??[];if(C&&I(C))v.push(y.remove(C));else if(i.prop&&C){let P=i.prop,k=c(C),B=`{ ${P}: ${k} }`;v.push(y.replaceText(C,B))}let V=!!x.filter(P=>!I(P)).length;if(x){let P=t.matcher.range,k=x.map(B=>z(B)).concat(V?"":[]).join(", ");v.push(y.insertTextAfterRange([P[0],P[1]+1],k))}return v},messageId:"useWebFirstAssertion",node:s})}}},meta:{docs:{description:"Prefer web first assertions",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/prefer-web-first-assertions.md"},fixable:"code",messages:{useWebFirstAssertion:"Replace {{method}}() with {{matcher}}()."},type:"suggestion"}}),Ds=["fixme","skip"],Ls=u({create(e){let{annotations:a=Ds,pattern:t}=e.options?.[0]??{},s=new Set(a),r=t?new RegExp(t,"u"):void 0;return{CallExpression(l){let n=d(e,l);if(n?.type!=="config")return;let i=n.members.find(g=>s.has(c(g)));if(!i)return;let o=c(i),f=l.arguments[1];if(!f){e.report({data:{annotation:o},messageId:"missingReason",node:l});return}if(!M(f))return;let p=c(f).trim();if(!p){e.report({data:{annotation:o},messageId:"missingReason",node:f});return}r&&!r.test(p)&&e.report({data:{annotation:o,pattern:String(r)},messageId:"reasonMustMatch",node:f})}}},meta:{docs:{description:"Require a reason for `.skip()` and `.fixme()` annotations",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-annotation-reason.md"},messages:{missingReason:"The `.{{ annotation }}()` annotation should say why. Add a reason as the last argument.",reasonMustMatch:"The `.{{ annotation }}()` reason should match {{ pattern }}."},schema:[{additionalProperties:!1,properties:{annotations:{items:{enum:["fail","fixme","skip","slow"],type:"string"},type:"array"},pattern:{type:"string"}},type:"object"}],type:"suggestion"}}),Gs=e=>e.type==="Literal"&&e.value===null||S(e,"undefined"),Fe=(e,a,t=[])=>{switch(a.type){case"ExpressionStatement":return Fe(e,a.expression,t);case"CallExpression":return!(d(e,a)||t.includes(c(a.callee)));case"VariableDeclaration":return a.kind==="const"?!1:a.declarations.some(({init:s})=>s!=null&&!Gs(s));default:return!1}},_s=u({create(e){let a={allowedFunctionCalls:[],...e.options?.[0]??{}},t=s=>{for(let r of s)Fe(e,r,a.allowedFunctionCalls)&&e.report({messageId:"useHook",node:r})};return{CallExpression(s){if(!h(e,s,["describe"]))return;let r=s.arguments.at(-1);!R(r)||r.body.type!=="BlockStatement"||t(r.body.body)},Program(s){t(s.body)}}},meta:{docs:{description:"Require setup and teardown code to be within a hook",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-hook.md"},messages:{useHook:"This should be done within a hook"},schema:[{additionalProperties:!1,properties:{allowedFunctionCalls:{items:{type:"string"},type:"array"}},type:"object"}],type:"suggestion"}}),Fs=u({create(e){return{CallExpression(a){let t=d(e,a);t?.type!=="expect"||t.modifiers.some(s=>{let r=c(s);return r==="soft"||r==="poll"})||e.report({fix:s=>s.insertTextAfter(t.head.node,".soft"),messageId:"requireSoft",node:t.head.node})}}},meta:{docs:{description:"Require all assertions to use `expect.soft`",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-soft-assertions.md"},fixable:"code",messages:{requireSoft:"Unexpected non-soft assertion"},schema:[],type:"suggestion"}}),Os=/@[\S]+/;function Ns(e){let a=e.arguments[1];return!a||a.type!=="ObjectExpression"?!1:a.properties.some(t=>t.type==="Property"&&t.key.type==="Identifier"&&t.key.name==="tag")}function Ws(e){let a=e.arguments[0];if(!a)return!1;let t=c(a);return!!t&&Os.test(t)}function Ce(e){return Ws(e)||Ns(e)}var Vs=u({create(e){let a=[];return{CallExpression(t){let s=d(e,t);if(s){if(s.type==="describe"){a.push(Ce(t)||!!a.at(-1));return}if(s.type==="test"){if(Ce(t)||a.at(-1))return;e.report({messageId:"missingTag",node:t})}}},"CallExpression:exit"(t){h(e,t,["describe"])&&a.pop()}}},meta:{docs:{description:"Require test blocks to have tags",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-tags.md"},messages:{missingTag:"Test must have at least one tag"},schema:[],type:"suggestion"}}),Hs=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.type!=="expect"||t.matcherName!=="toPass")return;let[s]=t.matcherArgs;if(!s||s.type!=="ObjectExpression"){e.report({messageId:"addTimeoutOption",node:t.matcher});return}s.properties.some(l=>l.type==="Property"&&l.key.type==="Identifier"&&l.key.name==="timeout")||e.report({messageId:"addTimeoutOption",node:t.matcher})}}},meta:{docs:{description:"Require a timeout option for `toPass()`",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-to-pass-timeout.md"},messages:{addTimeoutOption:"Add a timeout option to toPass()"},schema:[],type:"suggestion"}}),qs=u({create(e){return{CallExpression(a){let t=d(e,a);t?.type==="expect"&&t.matcherArgs.length===0&&["toThrow","toThrowError"].includes(t.matcherName)&&!t.modifiers.some(s=>c(s)==="not")&&e.report({data:{matcherName:t.matcherName},messageId:"addErrorMessage",node:t.matcher})}}},meta:{docs:{description:"Require a message for `toThrow()`",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-to-throw-message.md"},messages:{addErrorMessage:"Add an error message to {{ matcherName }}()"},schema:[],type:"suggestion"}}),js=u({create(e){let{maxTopLevelDescribes:a}={maxTopLevelDescribes:1/0,...e.options?.[0]??{}},t=0,s=0;return{CallExpression(r){let l=d(e,r);l&&(l.type==="describe"?(s++,s===1&&(t++,t>a&&e.report({data:X(a),messageId:"tooManyDescribes",node:r.callee}))):s||(l.type==="test"?e.report({messageId:"unexpectedTest",node:r.callee}):l.type==="hook"&&e.report({messageId:"unexpectedHook",node:r.callee})))},"CallExpression:exit"(r){h(e,r,["describe"])&&s--}}},meta:{docs:{description:"Require test cases and hooks to be inside a `test.describe` block",recommended:!1,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-top-level-describe.md"},messages:{tooManyDescribes:"There should not be more than {{amount}} describe{{s}} at the top level",unexpectedHook:"All hooks must be wrapped in a describe block.",unexpectedTest:"All test cases must be wrapped in a describe block."},schema:[{additionalProperties:!1,properties:{maxTopLevelDescribes:{minimum:1,type:"number"}},type:"object"}],type:"suggestion"}}),Q=e=>{let[a]=e;return{end:e[e.length-1].loc.end,start:a.loc.start}},$s=u({create(e){return{CallExpression(a){let t=d(e,a);if(t?.group!=="describe"||t.members.some(r=>c(r)==="configure"))return;let s=a.arguments.at(-1);if(!s)return e.report({loc:a.loc,messageId:"missingCallback"});if(a.arguments.length===1&&J(s))return e.report({loc:Q(a.arguments),messageId:"missingCallback"});if(!R(s))return e.report({loc:Q(a.arguments),messageId:"invalidCallback"});s.async&&e.report({messageId:"noAsyncDescribeCallback",node:s}),s.params.length&&e.report({loc:Q(s.params),messageId:"unexpectedDescribeArgument"}),s.body.type==="CallExpression"&&e.report({messageId:"unexpectedReturnInDescribe",node:s}),s.body.type==="BlockStatement"&&s.body.body.forEach(r=>{r.type==="ReturnStatement"&&e.report({messageId:"unexpectedReturnInDescribe",node:r})})}}},meta:{docs:{description:"Enforce valid `describe()` callback",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/valid-describe-callback.md"},messages:{invalidCallback:"Callback argument must be a function",missingCallback:"Describe requires a callback",noAsyncDescribeCallback:"No async describe callback",unexpectedDescribeArgument:"Unexpected argument(s) in describe callback",unexpectedReturnInDescribe:"Unexpected return statement in describe callback"},schema:[],type:"problem"}}),K=e=>{if(e.type==="CallExpression"&&e.callee.type==="MemberExpression"&&W(e.callee.property)){if(e.arguments.length===0)return!1;switch(c(e.callee.property)){case"then":return e.arguments.length<3;case"catch":case"finally":return e.arguments.length<2}}return!1},Qs=(e,a)=>{let t=d(e,a);if(t?.type!=="test")return!1;let s=t.members.some(n=>c(n)==="each");if(s&&a.callee.type!=="TaggedTemplateExpression")return!0;let[,r]=a.arguments,l=Number(s);return r&&R(r)&&r.params.length===1+l},Te=(e,a)=>{let t=c(a);if(e.argument==null)return!1;if(e.argument.type==="CallExpression"&&e.argument.arguments.length>0){let s=L(e.argument);if(/^Promise\.(all|allSettled|race|any)$/.test(s)){let[r]=e.argument.arguments;if(r.type==="ArrayExpression"&&r.elements.some(l=>l&&S(l,t)))return!0}if(["Promise.resolve","Promise.reject"].includes(s)&&e.argument.arguments.length===1)return S(e.argument.arguments[0],t)}return S(e.argument,t)},Oe=(e,a)=>{for(let t of a)if(t?.type==="AwaitExpression"&&S(t.argument,e)||t?.type==="ArrayExpression"&&Oe(e,t.elements))return!0;return!1},Xs=(e,a)=>{let t=a;for(;t;){if(t.type==="CallExpression"){if(Oe(e,t.arguments))return!0;t=t.callee}if(t.type!=="MemberExpression")break;t=t.object}return!1},Ys=e=>{let a=e,t=e;for(;t&&(t.type==="CallExpression"&&(a=t,t=t.callee),t.type==="MemberExpression");)t=t.object;return a},Z=(e,a,t)=>{let s=c(a);for(let r of t)if(!(r.range[0]<=a.range[0])){if(r.type==="ReturnStatement")return Te(r,a);if(r.type==="ExpressionStatement"){if(r.expression.type==="CallExpression"){if(Xs(s,r.expression))return!0;let l=Ys(r.expression),n=d(e,r.expression);if(n?.type==="expect"&&l.arguments.length>0&&S(l.arguments[0],s)&&n.members.some(i=>{let o=c(i);return o==="resolves"||o==="rejects"}))return!0}if(r.expression.type==="AwaitExpression"&&Te(r.expression,a))return!0;if(r.expression.type==="AssignmentExpression"){if(S(r.expression.left,s)&&L(r.expression.right)?.startsWith(`${s}.`)&&K(r.expression.right))continue;break}}if(r.type==="BlockStatement"&&Z(e,a,r.body))return!0}return!1},Ne=e=>{let a=e;for(;a;){if(a.type==="BlockStatement")return a.body;a=a.parent}throw new Error("Could not find BlockStatement - please file a github issue at https://github.com/mskelton/eslint-plugin-playwright")},Ks=(e,a)=>{let t=a;for(;t;){if(R(t))return t=t.parent,t?.type==="CallExpression"&&h(e,t,["test"]);t=t.parent}return!1},zs=(e,a)=>{let t=Ne(a);return S(a.id)?Z(e,a.id,t):!0},Js=u({create(e){let a=!1,t=[];return{CallExpression(s){if(Qs(e,s)){a=!0;return}if(K(s)){t.unshift(!1);return}t.length>0&&h(e,s,["expect"])&&(t[0]=!0)},"CallExpression:exit"(s){if(a){h(e,s,["test"])&&(a=!1);return}if(!K(s)||!t.shift())return;let{parent:l}=ke(s);if(!(!l||!Ks(e,l))){switch(l.type){case"VariableDeclarator":{if(zs(e,l))return;break}case"AssignmentExpression":{if(l.left.type==="Identifier"&&Z(e,l.left,Ne(l)))return;break}case"ExpressionStatement":break;default:return}e.report({messageId:"expectInFloatingPromise",node:l})}}}},meta:{docs:{description:"Require promises that have expectations in their chain to be valid",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/valid-expect-in-promise.md"},messages:{expectInFloatingPromise:"This promise should either be returned or awaited to ensure the expects in its chain are called"},schema:[],type:"suggestion"}}),Zs=e=>{let a=e,t=e.parent;for(;t&&t.type==="MemberExpression";)a=t,t=t.parent;return a},er=u({create(e){let a={maxArgs:2,minArgs:1,...e.options?.[0]??{}},t=Math.min(a.minArgs,a.maxArgs),s=Math.max(a.minArgs,a.maxArgs);return{CallExpression(r){let l=Ue(e,r);if(typeof l=="string"){let i=r.parent?.type==="MemberExpression"?Zs(r.parent).property:r;if(l==="matcher-not-found"){e.report({messageId:"matcherNotFound",node:i});return}if(l==="matcher-not-called"&&e.report({messageId:W(i)&&ga.has(c(i))?"matcherNotFound":"matcherNotCalled",node:i}),l==="modifier-unknown"){e.report({messageId:"modifierUnknown",node:i});return}return}else if(l?.type!=="expect")return;let{parent:n}=l.head.node;if(n?.type==="CallExpression"){if(n.arguments.length<t){let i=c(l.head.node).length,o={end:{column:n.loc.start.column+i+1,line:n.loc.start.line},start:{column:n.loc.start.column+i,line:n.loc.start.line}};e.report({data:X(t),loc:o,messageId:"notEnoughArgs",node:n})}if(n.arguments.length>s){let{start:i}=n.arguments[s].loc,{end:o}=n.arguments.at(-1).loc,f={end:{column:o.column,line:o.line},start:i};e.report({data:X(s),loc:f,messageId:"tooManyArgs",node:n})}}}}},meta:{docs:{description:"Enforce valid `expect()` usage",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/valid-expect.md"},messages:{matcherNotCalled:"Matchers must be called to assert.",matcherNotFound:"Expect must have a corresponding matcher call.",modifierUnknown:"Expect has an unknown modifier.",notEnoughArgs:"Expect requires at least {{amount}} argument{{s}}.",tooManyArgs:"Expect takes at most {{amount}} argument{{s}}."},schema:[{additionalProperties:!1,properties:{maxArgs:{minimum:1,type:"number"},minArgs:{minimum:1,type:"number"}},type:"object"}],type:"problem"}}),ar=u({create(e){let a=e.options[0]||{},t=a.allowedTags||[],s=a.disallowedTags||[];if(t.length>0&&s.length>0)throw new Error("The allowedTags and disallowedTags options cannot be used together");for(let n of[...t,...s])if(typeof n=="string"&&!n.startsWith("@"))throw new Error(`Invalid tag "${n}" in configuration: tags must start with @`);let r=n=>n.match(/@[\S]+/g)||[],l=(n,i)=>{if(!n.startsWith("@")){e.report({messageId:"invalidTagFormat",node:i});return}if(t.length>0&&!t.some(f=>f instanceof RegExp?f.test(n):f===n)){e.report({data:{tag:n},messageId:"unknownTag",node:i});return}s.length>0&&s.some(f=>f instanceof RegExp?f.test(n):f===n)&&e.report({data:{tag:n},messageId:"disallowedTag",node:i})};return{CallExpression(n){let i=d(e,n);if(!i)return;let{type:o}=i;if(o!=="test"&&o!=="describe"&&o!=="step")return;if(n.arguments.length>0){let m=n.arguments[0];if(m){let y=r(c(m));for(let x of y)l(x,n)}}if(n.arguments.length<2)return;let f=n.arguments[1];if(!f||f.type!=="ObjectExpression")return;let p=f.properties.find(m=>m.type==="Property"&&!("argument"in m)&&m.key.type==="Identifier"&&m.key.name==="tag");if(!p)return;let g=p.value;if(g.type==="Literal"||g.type==="TemplateLiteral"){if(g.type==="Literal"&&typeof g.value!="string"){e.report({messageId:"invalidTagValue",node:n});return}l(c(g),n)}else if(g.type==="ArrayExpression")for(let m of g.elements){if(!m||m.type!=="Literal"&&m.type!=="TemplateLiteral"||m.type==="Literal"&&typeof m.value!="string")return;l(c(m),n)}else e.report({messageId:"invalidTagValue",node:n})}}},meta:{docs:{description:"Enforce valid tag format in Playwright test blocks and titles",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/valid-test-tags.md"},messages:{disallowedTag:'Tag "{{tag}}" is not allowed',invalidTagFormat:"Tag must start with @",invalidTagValue:"Tag must be a string or array of strings",unknownTag:'Unknown tag "{{tag}}"'},schema:[{additionalProperties:!1,properties:{allowedTags:{items:{oneOf:[{type:"string"},{additionalProperties:!1,properties:{source:{type:"string"}},type:"object"}]},type:"array"},disallowedTags:{items:{oneOf:[{type:"string"},{additionalProperties:!1,properties:{source:{type:"string"}},type:"object"}]},type:"array"}},type:"object"}],type:"problem"}}),We=e=>M(e.right)?!0:e.left.type==="BinaryExpression"?We(e.left):M(e.left),Re=e=>e.type==="TemplateLiteral"?`\`${e.quasis[0].value.raw}\``:e.raw??"",O=e=>{let[a,t]=Array.isArray(e)?e:[e];return[new RegExp(a,"u"),t]},xe=e=>{if(typeof e=="string"||Array.isArray(e)){let a=O(e);return{describe:a,step:a,test:a}}return{describe:e.describe?O(e.describe):null,step:e.step?O(e.step):null,test:e.test?O(e.test):null}},Pe={additionalItems:!1,items:{type:"string"},maxItems:2,minItems:1,type:"array"},tr=u({create(e){let a=e.options?.[0]??{},{disallowedWords:t=[],ignoreSpaces:s=!1,ignoreTypeOfDescribeName:r=!1,ignoreTypeOfStepName:l=!0,ignoreTypeOfTestName:n=!1,mustMatch:i,mustNotMatch:o}=a,f=new RegExp(`\\b(${t.join("|")})\\b`,"iu"),p=xe(o??{}),g=xe(i??{});return{CallExpression(m){let y=d(e,m);if(y?.type!=="test"&&y?.type!=="describe"&&y?.type!=="step")return;let[x]=m.arguments;if(y.type==="describe"&&R(x))return;let b=G(e,x)??x;if(!b)return;if(!M(b)){if(b.type==="BinaryExpression"&&We(b)||b.type==="Identifier"||b.type==="MemberExpression")return;!(y.type==="describe"&&r||y.type==="test"&&n||y.type==="step"&&l)&&b.type!=="TemplateLiteral"&&e.report({loc:b.loc,messageId:"titleMustBeString"});return}let v=c(b),C=y.type;if(!v){e.report({data:{functionName:y.type},messageId:"emptyTitle",node:m});return}if(t.length>0){let D=f.exec(v);if(D){e.report({data:{word:D[1]},messageId:"disallowedWord",node:b});return}}s===!1&&v.trim().length!==v.length&&e.report({fix:D=>[D.replaceTextRange(b.range,Re(b).replace(/^([`'"]) +?/u,"$1").replace(/ +?([`'"])$/u,"$1"))],messageId:"accidentalSpace",node:b});let[V,...P]=v.split(" ");V.toLowerCase()===C&&e.report({fix:P.length>0?D=>[D.replaceTextRange(b.range,Re(b).replace(/^([`'"]).+? /u,"$1"))]:void 0,messageId:"duplicatePrefix",node:b});let[k,B]=p[C]??[];if(k&&k.test(v)){e.report({data:{functionName:C,message:B??"",pattern:String(k)},messageId:B?"mustNotMatchCustom":"mustNotMatch",node:b});return}let[H,ae]=g[C]??[];if(H&&!H.test(v)){e.report({data:{functionName:C,message:ae??"",pattern:String(H)},messageId:ae?"mustMatchCustom":"mustMatch",node:b});return}}}},meta:{docs:{description:"Enforce valid titles",recommended:!0,url:"https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/valid-title.md"},fixable:"code",messages:{accidentalSpace:"should not have leading or trailing spaces",disallowedWord:'"{{ word }}" is not allowed in test titles',duplicatePrefix:"should not have duplicate prefix",emptyTitle:"{{ functionName }} should not have an empty title",mustMatch:"{{ functionName }} should match {{ pattern }}",mustMatchCustom:"{{ message }}",mustNotMatch:"{{ functionName }} should not match {{ pattern }}",mustNotMatchCustom:"{{ message }}",titleMustBeString:"Title must be a string"},schema:[{additionalProperties:!1,patternProperties:{[/^must(?:Not)?Match$/u.source]:{oneOf:[{type:"string"},Pe,{additionalProperties:{oneOf:[{type:"string"},Pe]},propertyNames:{enum:["describe","test","step"]},type:"object"}]}},properties:{disallowedWords:{items:{type:"string"},type:"array"},ignoreSpaces:{default:!1,type:"boolean"},ignoreTypeOfDescribeName:{default:!1,type:"boolean"},ignoreTypeOfStepName:{default:!0,type:"boolean"},ignoreTypeOfTestName:{default:!1,type:"boolean"}},type:"object"}],type:"suggestion"}}),Ve={configs:{},rules:{"consistent-spacing-between-blocks":Ba,"expect-expect":Da,"max-expects":La,"max-nested-describe":Ga,"missing-playwright-await":$a,"no-action-timeout":Ya,"no-commented-out-tests":Ja,"no-conditional-expect":Za,"no-conditional-in-test":et,"no-duplicate-hooks":at,"no-duplicate-slow":tt,"no-element-handle":rt,"no-eval":lt,"no-export":ot,"no-focused-test":it,"no-force-option":ut,"no-get-by-title":pt,"no-hooks":mt,"no-identical-title":dt,"no-magic-timeouts":ht,"no-nested-step":St,"no-networkidle":Et,"no-nth-methods":Ct,"no-page-pause":Tt,"no-raw-locators":Rt,"no-restricted-locators":xt,"no-restricted-matchers":Pt,"no-restricted-roles":Mt,"no-skipped-test":kt,"no-slowed-test":At,"no-standalone-expect":Ut,"no-template-literal-title":Lt,"no-test-return-statement":_t,"no-unnecessary-assertions":Ht,"no-unsafe-references":Qt,"no-unused-locators":Yt,"no-useless-await":es,"no-useless-not":rs,"no-wait-for-navigation":ls,"no-wait-for-selector":ns,"no-wait-for-timeout":os,"prefer-comparison-matcher":ms,"prefer-ending-with-an-expect":ds,"prefer-equality-matcher":gs,"prefer-hooks-in-order":ys,"prefer-hooks-on-top":hs,"prefer-locator":Es,"prefer-lowercase-title":vs,"prefer-native-locators":Ts,"prefer-strict-equal":Rs,"prefer-to-be":Ps,"prefer-to-contain":ws,"prefer-to-have-count":ks,"prefer-to-have-length":As,"prefer-web-first-assertions":Bs,"require-annotation-reason":Ls,"require-hook":_s,"require-soft-assertions":Fs,"require-tags":Vs,"require-to-pass-timeout":Hs,"require-to-throw-message":qs,"require-top-level-describe":js,"valid-describe-callback":$s,"valid-expect":er,"valid-expect-in-promise":Js,"valid-test-tags":ar,"valid-title":tr}},He={rules:{"no-empty-pattern":"off","playwright/consistent-spacing-between-blocks":"warn","playwright/expect-expect":"warn","playwright/max-nested-describe":"warn","playwright/missing-playwright-await":"error","playwright/no-conditional-expect":"warn","playwright/no-conditional-in-test":"warn","playwright/no-duplicate-hooks":"warn","playwright/no-duplicate-slow":"warn","playwright/no-element-handle":"warn","playwright/no-eval":"warn","playwright/no-focused-test":"error","playwright/no-force-option":"warn","playwright/no-identical-title":"warn","playwright/no-nested-step":"warn","playwright/no-networkidle":"error","playwright/no-page-pause":"warn","playwright/no-skipped-test":"warn","playwright/no-standalone-expect":"error","playwright/no-unnecessary-assertions":"error","playwright/no-unsafe-references":"error","playwright/no-unused-locators":"error","playwright/no-useless-await":"warn","playwright/no-useless-not":"warn","playwright/no-wait-for-navigation":"error","playwright/no-wait-for-selector":"warn","playwright/no-wait-for-timeout":"warn","playwright/prefer-hooks-in-order":"warn","playwright/prefer-hooks-on-top":"warn","playwright/prefer-locator":"warn","playwright/prefer-to-have-count":"warn","playwright/prefer-to-have-length":"warn","playwright/prefer-web-first-assertions":"error","playwright/valid-describe-callback":"error","playwright/valid-expect":"error","playwright/valid-expect-in-promise":"error","playwright/valid-test-tags":"error","playwright/valid-title":"error"}},Me={...He,env:{"shared-node-browser":!0},plugins:["playwright"]},sr={...He,languageOptions:{globals:ia.default["shared-node-browser"]},plugins:{playwright:Ve}};qe.exports={...Ve,configs:{"flat/recommended":sr,"playwright-test":Me,recommended:Me}}});var $e=Ze(je(),1),ee=$e.default;var rr=Object.fromEntries(["missing-playwright-await","no-unnecessary-assertions","no-unsafe-references"].map(e=>{if(!ee.rules[e])throw new Error("Missing upstream rule: "+e);return[e,ee.rules[e]]})),pr={meta:{name:"eslint-plugin-playwright",version:"2.12.2"},rules:rr};export{pr as default};
|