ai-linter
Version:
A linter tool to analyze JavaScript, TypeScript, and Vue code, with a focus on AI-generated code, unused imports, alias resolution, and potential hazards.
150 lines (115 loc) • 7.8 kB
JavaScript
const globals = new Set([
// JavaScript Built-in Objects
'console', 'Math', 'JSON', 'Date', 'RegExp', 'Array', 'Object', 'String', 'Number', 'Boolean', 'Function', 'Symbol', 'Error',
'Promise', 'Set', 'Map', 'WeakSet', 'WeakMap', 'parseInt', 'parseFloat', 'isNaN', 'isFinite',
'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'eval', 'undefined', 'Infinity', 'NaN',
// Error Types
'TypeError', 'ReferenceError', 'SyntaxError', 'RangeError', 'EvalError', 'URIError', 'AggregateError',
// TypedArrays
'ArrayBuffer', 'SharedArrayBuffer', 'DataView', 'Int8Array', 'Uint8Array', 'Uint8ClampedArray',
'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', 'Float32Array', 'Float64Array', 'BigInt64Array', 'BigUint64Array',
// Advanced JavaScript Features
'Proxy', 'Reflect', 'Generator', 'GeneratorFunction', 'AsyncFunction', 'AsyncGenerator', 'AsyncGeneratorFunction',
'WeakRef', 'FinalizationRegistry', 'BigInt', 'Atomics', 'SharedArrayBuffer',
// Intl (Internationalization)
'Intl', 'Collator', 'DateTimeFormat', 'NumberFormat', 'PluralRules', 'RelativeTimeFormat', 'ListFormat',
'Locale', 'DisplayNames', 'Segmenter',
// Node.js Globals
'process', 'require', 'module', 'exports', '__filename', '__dirname', 'global', 'Buffer',
'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval', 'setImmediate', 'clearImmediate',
'__dirname', '__filename', 'require', 'exports', 'module', 'global', 'process', 'Buffer',
'setImmediate', 'clearImmediate', 'queueMicrotask',
// Browser Window Object
'window', 'self', 'frames', 'parent', 'top', 'opener', 'closed', 'length', 'name', 'status',
'defaultStatus', 'innerHeight', 'innerWidth', 'outerHeight', 'outerWidth', 'pageXOffset', 'pageYOffset',
'screenX', 'screenY', 'screenLeft', 'screenTop', 'scrollX', 'scrollY', 'devicePixelRatio',
// Browser Document Object
'document', 'navigator', 'location', 'history', 'screen', 'performance', 'crypto',
// Storage APIs
'localStorage', 'sessionStorage', 'indexedDB', 'caches', 'cookieStore',
// Network APIs
'fetch', 'XMLHttpRequest', 'WebSocket', 'EventSource', 'Request', 'Response', 'Headers', 'AbortController', 'AbortSignal',
// Media APIs
'Image', 'Audio', 'Video', 'MediaRecorder', 'MediaStream', 'MediaStreamTrack', 'ImageCapture',
'AudioContext', 'OfflineAudioContext', 'MediaDevices', 'MediaSource', 'MediaStreamAudioSourceNode',
// Canvas and Graphics
'CanvasRenderingContext2D', 'CanvasGradient', 'CanvasPattern', 'ImageData', 'TextMetrics',
'Path2D', 'ImageBitmap', 'OffscreenCanvas', 'OffscreenCanvasRenderingContext2D',
// WebGL
'WebGLRenderingContext', 'WebGL2RenderingContext', 'WebGLBuffer', 'WebGLFramebuffer',
'WebGLProgram', 'WebGLRenderbuffer', 'WebGLShader', 'WebGLTexture', 'WebGLUniformLocation',
// Service Workers & Web Workers
'ServiceWorker', 'ServiceWorkerRegistration', 'Worker', 'SharedWorker', 'MessageChannel', 'MessagePort',
'BroadcastChannel', 'importScripts', 'postMessage', 'onmessage', 'onerror',
// File APIs
'File', 'FileList', 'FileReader', 'Blob', 'FormData', 'URLSearchParams', 'URL',
// Events
'Event', 'CustomEvent', 'EventTarget', 'addEventListener', 'removeEventListener', 'dispatchEvent',
'MouseEvent', 'KeyboardEvent', 'TouchEvent', 'WheelEvent', 'FocusEvent', 'InputEvent',
'PointerEvent', 'DragEvent', 'ClipboardEvent', 'BeforeUnloadEvent', 'HashChangeEvent',
'PopStateEvent', 'StorageEvent', 'MessageEvent', 'ErrorEvent', 'ProgressEvent',
// DOM APIs
'Node', 'Element', 'Document', 'DocumentFragment', 'Text', 'Comment', 'ProcessingInstruction',
'DocumentType', 'NodeList', 'HTMLCollection', 'DOMTokenList', 'NamedNodeMap', 'Attr',
'Range', 'Selection', 'TreeWalker', 'NodeIterator', 'MutationObserver', 'MutationRecord',
'IntersectionObserver', 'IntersectionObserverEntry', 'ResizeObserver', 'ResizeObserverEntry',
// HTML Elements
'HTMLElement', 'HTMLAnchorElement', 'HTMLButtonElement', 'HTMLCanvasElement', 'HTMLDivElement',
'HTMLFormElement', 'HTMLImageElement', 'HTMLInputElement', 'HTMLSelectElement', 'HTMLTextAreaElement',
'HTMLVideoElement', 'HTMLAudioElement', 'HTMLIFrameElement', 'HTMLScriptElement', 'HTMLStyleElement',
'HTMLLinkElement', 'HTMLMetaElement', 'HTMLTableElement', 'HTMLTableRowElement', 'HTMLTableCellElement',
// Geolocation & Device APIs
'Geolocation', 'GeolocationPosition', 'GeolocationCoordinates', 'GeolocationPositionError',
'DeviceOrientationEvent', 'DeviceMotionEvent', 'Notification', 'Permission', 'Permissions',
// Payment & Credentials
'PaymentRequest', 'PaymentResponse', 'PaymentAddress', 'PaymentMethodChangeEvent',
'CredentialsContainer', 'Credential', 'FederatedCredential', 'PasswordCredential', 'PublicKeyCredential',
// Web Animations
'Animation', 'AnimationEffect', 'KeyframeEffect', 'AnimationTimeline', 'DocumentTimeline',
'AnimationEvent', 'TransitionEvent',
// Timers & Scheduling
'requestAnimationFrame', 'cancelAnimationFrame', 'requestIdleCallback', 'cancelIdleCallback',
'queueMicrotask', 'scheduler',
// Legacy & Compatibility
'alert', 'confirm', 'prompt', 'open', 'close', 'print', 'stop', 'blur', 'focus', 'scroll', 'scrollTo', 'scrollBy',
'moveBy', 'moveTo', 'resizeBy', 'resizeTo', 'find', 'getSelection', 'getComputedStyle',
'matchMedia', 'ActiveXObject', 'attachEvent', 'detachEvent',
// Modern Web APIs
'PerformanceObserver', 'PerformanceEntry', 'PerformanceMark', 'PerformanceMeasure',
'PerformanceNavigationTiming', 'PerformanceResourceTiming', 'PerformancePaintTiming',
'ReportingObserver', 'Report', 'DeprecationReport', 'InterventionReport',
'SecurityPolicyViolationEvent', 'CSPViolationReportBody',
// Streams API
'ReadableStream', 'WritableStream', 'TransformStream', 'ReadableStreamDefaultReader',
'ReadableStreamBYOBReader', 'WritableStreamDefaultWriter', 'TransformStreamDefaultController',
'ReadableStreamDefaultController', 'ReadableByteStreamController',
// WebAssembly
'WebAssembly', 'WebAssemblyInstantiatedSource', 'WebAssemblyModule', 'WebAssemblyInstance',
'WebAssemblyMemory', 'WebAssemblyTable', 'WebAssemblyGlobal', 'WebAssemblyCompileError',
'WebAssemblyLinkError', 'WebAssemblyRuntimeError',
// Encoding APIs
'TextEncoder', 'TextDecoder', 'TextEncoderStream', 'TextDecoderStream',
// Background APIs
'BackgroundFetch', 'BackgroundSync', 'PushManager', 'PushSubscription', 'PushEvent', 'NotificationEvent',
// Speech APIs
'SpeechRecognition', 'webkitSpeechRecognition', 'SpeechRecognitionResult', 'SpeechRecognitionAlternative',
'SpeechSynthesis', 'SpeechSynthesisUtterance', 'SpeechSynthesisVoice', 'SpeechSynthesisEvent',
// WebRTC
'RTCPeerConnection', 'RTCDataChannel', 'RTCSessionDescription', 'RTCIceCandidate',
'RTCStatsReport', 'RTCCertificate', 'RTCConfiguration', 'RTCOfferOptions', 'RTCAnswerOptions',
'MediaStreamConstraints', 'getUserMedia',
// Deprecated/Legacy (but still might appear in older code)
'escape', 'unescape', 'uneval', 'toSource', 'watch', 'unwatch',
// Platform specific globals that might be encountered
'chrome', 'safari', 'opera', 'moz', 'webkit', 'ms',
// Test environments
'jest', 'describe', 'it', 'test', 'expect', 'beforeEach', 'afterEach', 'beforeAll', 'afterAll',
'mocha', 'chai', 'sinon', 'jasmine', 'spyOn',
// Common library globals
'jQuery', '$', '_', 'React', 'ReactDOM', 'Vue', 'Angular', 'moment', 'dayjs', 'lodash',
'axios', 'Backbone', 'Ember', 'Handlebars', 'Mustache', 'Underscore',
// Build tools & environments
'require', 'define', 'exports', 'module', '__webpack_require__', 'webpackJsonp',
'System', 'AMD', 'UMD', '__dirname', '__filename'
]);
module.exports = globals;