diff --git a/CHANGELOG.md b/CHANGELOG.md index a079759d6d..05eda8028b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,9 @@ - Fixed subtype checking for record types with "@as" attributes: The subtype relationship now takes into account the compatibility of "@as" attributes between corresponding fields, ensuring correctness in runtime representation. https://github.com/rescript-lang/rescript-compiler/issues/6158 +#### :nail_care: Polish + +- Update list of reserved JS keywords. https://github.com/rescript-lang/rescript-compiler/pull/6167 # 11.0.0-alpha.3 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fb82d30f6e..af711891e8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -330,6 +330,17 @@ To generate the html: ../scripts/ninja docs ``` +## Update JS Reserved Keywords Map + +The compiler sources include a list of reserved JS keywords in `jscomp/ext/js_reserved_map.ml` which includes all identifiers in global scope (`window`). This list should be updated from time to time for newer browser versions. + +To update it, run: + +```sh +npm install puppeteer +node scripts/build_reserved.js +``` + ## Code structure The highlevel architecture is illustrated as below: diff --git a/jscomp/build_reserved.js b/jscomp/build_reserved.js deleted file mode 100644 index 8d5ab5d412..0000000000 --- a/jscomp/build_reserved.js +++ /dev/null @@ -1,14 +0,0 @@ -//@ts-check - -var fs = require('fs'); -var puppeteer = require('puppeteer'); -(async function(){ - const browser = await puppeteer.launch(); - const page = await browser.newPage(); - /** - * @type string[] - */ - const result = await page.evaluate(`Object.getOwnPropertyNames(window)`) - fs.writeFileSync('keywords.list',result.filter(x=>/^[A-Z]/.test(x)).join('\n'),'utf8') - await browser.close() -}()) \ No newline at end of file diff --git a/jscomp/ext/js_reserved_map.ml b/jscomp/ext/js_reserved_map.ml index 9b6ccbfcdd..ca47671b43 100644 --- a/jscomp/ext/js_reserved_map.ml +++ b/jscomp/ext/js_reserved_map.ml @@ -26,9 +26,15 @@ let sorted_keywords = [| "AbortController"; "AbortSignal"; + "AbstractRange"; "ActiveXObject"; + "AggregateError"; "AnalyserNode"; + "Animation"; + "AnimationEffect"; "AnimationEvent"; + "AnimationPlaybackEvent"; + "AnimationTimeline"; "Array"; "ArrayBuffer"; "Atomics"; @@ -37,6 +43,7 @@ let sorted_keywords = [| "AudioBuffer"; "AudioBufferSourceNode"; "AudioContext"; + "AudioData"; "AudioDestinationNode"; "AudioListener"; "AudioNode"; @@ -44,10 +51,13 @@ let sorted_keywords = [| "AudioParamMap"; "AudioProcessingEvent"; "AudioScheduledSourceNode"; + "AudioSinkInfo"; "AudioWorkletNode"; + "BackgroundFetchManager"; + "BackgroundFetchRecord"; + "BackgroundFetchRegistration"; "BarProp"; "BaseAudioContext"; - "BatteryManager"; "BeforeInstallPromptEvent"; "BeforeUnloadEvent"; "BigInt"; @@ -59,18 +69,26 @@ let sorted_keywords = [| "BluetoothUUID"; "Boolean"; "BroadcastChannel"; + "BrowserCaptureMediaStreamTrack"; "Buffer"; "ByteLengthQueuingStrategy"; "CDATASection"; "CSS"; + "CSSAnimation"; "CSSConditionRule"; + "CSSContainerRule"; + "CSSCounterStyleRule"; "CSSFontFaceRule"; + "CSSFontPaletteValuesRule"; "CSSGroupingRule"; "CSSImageValue"; "CSSImportRule"; "CSSKeyframeRule"; "CSSKeyframesRule"; "CSSKeywordValue"; + "CSSLayerBlockRule"; + "CSSLayerStatementRule"; + "CSSMathClamp"; "CSSMathInvert"; "CSSMathMax"; "CSSMathMin"; @@ -86,6 +104,7 @@ let sorted_keywords = [| "CSSPageRule"; "CSSPerspective"; "CSSPositionValue"; + "CSSPropertyRule"; "CSSRotate"; "CSSRule"; "CSSRuleList"; @@ -100,11 +119,13 @@ let sorted_keywords = [| "CSSSupportsRule"; "CSSTransformComponent"; "CSSTransformValue"; + "CSSTransition"; "CSSTranslate"; "CSSUnitValue"; "CSSUnparsedValue"; "CSSVariableReferenceValue"; "CanvasCaptureMediaStreamTrack"; + "CanvasFilter"; "CanvasGradient"; "CanvasPattern"; "CanvasRenderingContext2D"; @@ -115,13 +136,16 @@ let sorted_keywords = [| "CloseEvent"; "Comment"; "CompositionEvent"; + "CompressionStream"; "ConstantSourceNode"; + "ContentVisibilityAutoStateChangeEvent"; "ConvolverNode"; "CountQueuingStrategy"; + "CropTarget"; "Crypto"; - "CryptoKey"; "CustomElementRegistry"; "CustomEvent"; + "CustomStateSet"; "DOMError"; "DOMException"; "DOMImplementation"; @@ -142,37 +166,50 @@ let sorted_keywords = [| "DataTransferItemList"; "DataView"; "Date"; + "DecompressionStream"; "DelayNode"; - "DeviceMotionEvent"; - "DeviceOrientationEvent"; + "DelegatedInkTrailPresenter"; "Document"; "DocumentFragment"; + "DocumentTimeline"; "DocumentType"; "DragEvent"; "DynamicsCompressorNode"; "Element"; - "EnterPictureInPictureEvent"; + "ElementInternals"; + "EncodedAudioChunk"; + "EncodedVideoChunk"; "Error"; "ErrorEvent"; "EvalError"; "Event"; + "EventCounts"; "EventSource"; "EventTarget"; + "External"; + "FeaturePolicy"; "File"; "FileList"; "FileReader"; + "FinalizationRegistry"; "Float32Array"; "Float64Array"; "FocusEvent"; "FontFace"; "FontFaceSetLoadEvent"; "FormData"; + "FormDataEvent"; + "FragmentDirective"; "Function"; "GainNode"; "Gamepad"; "GamepadButton"; "GamepadEvent"; "GamepadHapticActuator"; + "Geolocation"; + "GeolocationCoordinates"; + "GeolocationPosition"; + "GeolocationPositionError"; "HTMLAllCollection"; "HTMLAnchorElement"; "HTMLAreaElement"; @@ -183,7 +220,6 @@ let sorted_keywords = [| "HTMLButtonElement"; "HTMLCanvasElement"; "HTMLCollection"; - "HTMLContentElement"; "HTMLDListElement"; "HTMLDataElement"; "HTMLDataListElement"; @@ -232,7 +268,6 @@ let sorted_keywords = [| "HTMLQuoteElement"; "HTMLScriptElement"; "HTMLSelectElement"; - "HTMLShadowElement"; "HTMLSlotElement"; "HTMLSourceElement"; "HTMLSpanElement"; @@ -253,6 +288,8 @@ let sorted_keywords = [| "HTMLVideoElement"; "HashChangeEvent"; "Headers"; + "Highlight"; + "HighlightRegistry"; "History"; "IDBCursor"; "IDBCursorWithValue"; @@ -272,7 +309,10 @@ let sorted_keywords = [| "ImageBitmapRenderingContext"; "ImageCapture"; "ImageData"; + "ImageTrack"; + "ImageTrackList"; "Infinity"; + "Ink"; "InputDeviceCapabilities"; "InputDeviceInfo"; "InputEvent"; @@ -284,36 +324,36 @@ let sorted_keywords = [| "Intl"; "JSON"; "KeyboardEvent"; + "KeyframeEffect"; + "LargestContentfulPaint"; + "LaunchParams"; + "LaunchQueue"; + "LayoutShift"; + "LayoutShiftAttribution"; "Location"; - "MIDIAccess"; - "MIDIConnectionEvent"; - "MIDIInput"; - "MIDIInputMap"; - "MIDIMessageEvent"; - "MIDIOutput"; - "MIDIOutputMap"; - "MIDIPort"; "Map"; "Math"; + "MathMLElement"; "MediaCapabilities"; - "MediaCapabilitiesInfo"; - "MediaDeviceInfo"; - "MediaDevices"; "MediaElementAudioSourceNode"; "MediaEncryptedEvent"; "MediaError"; "MediaList"; + "MediaMetadata"; "MediaQueryList"; "MediaQueryListEvent"; "MediaRecorder"; - "MediaSettingsRange"; + "MediaSession"; "MediaSource"; + "MediaSourceHandle"; "MediaStream"; "MediaStreamAudioDestinationNode"; "MediaStreamAudioSourceNode"; "MediaStreamEvent"; "MediaStreamTrack"; "MediaStreamTrackEvent"; + "MediaStreamTrackGenerator"; + "MediaStreamTrackProcessor"; "MessageChannel"; "MessageEvent"; "MessagePort"; @@ -325,7 +365,14 @@ let sorted_keywords = [| "MutationRecord"; "NaN"; "NamedNodeMap"; + "NavigateEvent"; + "Navigation"; + "NavigationCurrentEntryChangeEvent"; + "NavigationDestination"; + "NavigationHistoryEntry"; + "NavigationTransition"; "Navigator"; + "NavigatorUAData"; "NetworkInformation"; "Node"; "NodeFilter"; @@ -344,11 +391,12 @@ let sorted_keywords = [| "PageTransitionEvent"; "PannerNode"; "Path2D"; - "PaymentInstruments"; "PaymentManager"; "PaymentRequestUpdateEvent"; "Performance"; + "PerformanceElementTiming"; "PerformanceEntry"; + "PerformanceEventTiming"; "PerformanceLongTaskTiming"; "PerformanceMark"; "PerformanceMeasure"; @@ -360,16 +408,18 @@ let sorted_keywords = [| "PerformanceResourceTiming"; "PerformanceServerTiming"; "PerformanceTiming"; + "PeriodicSyncManager"; "PeriodicWave"; "PermissionStatus"; "Permissions"; - "PhotoCapabilities"; + "PictureInPictureEvent"; "PictureInPictureWindow"; "Plugin"; "PluginArray"; "PointerEvent"; "PopStateEvent"; "ProcessingInstruction"; + "Profiler"; "ProgressEvent"; "Promise"; "PromiseRejectionEvent"; @@ -382,20 +432,32 @@ let sorted_keywords = [| "RTCDTMFToneChangeEvent"; "RTCDataChannel"; "RTCDataChannelEvent"; + "RTCDtlsTransport"; + "RTCEncodedAudioFrame"; + "RTCEncodedVideoFrame"; + "RTCError"; + "RTCErrorEvent"; "RTCIceCandidate"; + "RTCIceTransport"; "RTCPeerConnection"; + "RTCPeerConnectionIceErrorEvent"; "RTCPeerConnectionIceEvent"; - "RTCRtpContributingSource"; "RTCRtpReceiver"; "RTCRtpSender"; "RTCRtpTransceiver"; + "RTCSctpTransport"; "RTCSessionDescription"; "RTCStatsReport"; "RTCTrackEvent"; "RadioNodeList"; "Range"; "RangeError"; + "ReadableByteStreamController"; "ReadableStream"; + "ReadableStreamBYOBReader"; + "ReadableStreamBYOBRequest"; + "ReadableStreamDefaultController"; + "ReadableStreamDefaultReader"; "ReferenceError"; "Reflect"; "RegExp"; @@ -404,6 +466,7 @@ let sorted_keywords = [| "Request"; "ResizeObserver"; "ResizeObserverEntry"; + "ResizeObserverSize"; "Response"; "SVGAElement"; "SVGAngle"; @@ -428,7 +491,6 @@ let sorted_keywords = [| "SVGComponentTransferFunctionElement"; "SVGDefsElement"; "SVGDescElement"; - "SVGDiscardElement"; "SVGElement"; "SVGEllipseElement"; "SVGFEBlendElement"; @@ -503,6 +565,8 @@ let sorted_keywords = [| "SVGUnitTypes"; "SVGUseElement"; "SVGViewElement"; + "Scheduler"; + "Scheduling"; "Screen"; "ScreenOrientation"; "ScriptProcessorNode"; @@ -510,7 +574,6 @@ let sorted_keywords = [| "Selection"; "Set"; "ShadowRoot"; - "SharedArrayBuffer"; "SharedWorker"; "SourceBuffer"; "SourceBufferList"; @@ -526,11 +589,14 @@ let sorted_keywords = [| "StylePropertyMapReadOnly"; "StyleSheet"; "StyleSheetList"; - "SubtleCrypto"; + "SubmitEvent"; "Symbol"; "SyncManager"; "SyntaxError"; "TaskAttributionTiming"; + "TaskController"; + "TaskPriorityChangeEvent"; + "TaskSignal"; "Text"; "TextDecoder"; "TextDecoderStream"; @@ -548,12 +614,19 @@ let sorted_keywords = [| "TouchList"; "TrackEvent"; "TransformStream"; + "TransformStreamDefaultController"; "TransitionEvent"; "TreeWalker"; + "TrustedHTML"; + "TrustedScript"; + "TrustedScriptURL"; + "TrustedTypePolicy"; + "TrustedTypePolicyFactory"; "TypeError"; "UIEvent"; "URIError"; "URL"; + "URLPattern"; "URLSearchParams"; "Uint16Array"; "Uint32Array"; @@ -562,9 +635,15 @@ let sorted_keywords = [| "UserActivation"; "VTTCue"; "ValidityState"; + "VideoColorSpace"; + "VideoFrame"; + "VideoPlaybackQuality"; + "ViewTransition"; + "VirtualKeyboardGeometryChangeEvent"; "VisualViewport"; "WaveShaperNode"; "WeakMap"; + "WeakRef"; "WeakSet"; "WebAssembly"; "WebGL2RenderingContext"; @@ -589,8 +668,12 @@ let sorted_keywords = [| "WebSocket"; "WheelEvent"; "Window"; + "WindowControlsOverlay"; + "WindowControlsOverlayGeometryChangeEvent"; "Worker"; "WritableStream"; + "WritableStreamDefaultController"; + "WritableStreamDefaultWriter"; "XDomainRequest"; "XMLDocument"; "XMLHttpRequest"; diff --git a/jscomp/keywords.list b/jscomp/keywords.list index a21e86f79e..baeadb2333 100644 --- a/jscomp/keywords.list +++ b/jscomp/keywords.list @@ -1,563 +1,627 @@ -Object -Function +AbortController +AbortSignal +AbstractRange +AggregateError +AnalyserNode +Animation +AnimationEffect +AnimationEvent +AnimationPlaybackEvent +AnimationTimeline Array -Number -Infinity -NaN +ArrayBuffer +Atomics +Attr +Audio +AudioBuffer +AudioBufferSourceNode +AudioContext +AudioData +AudioDestinationNode +AudioListener +AudioNode +AudioParam +AudioParamMap +AudioProcessingEvent +AudioScheduledSourceNode +AudioSinkInfo +AudioWorkletNode +BackgroundFetchManager +BackgroundFetchRecord +BackgroundFetchRegistration +BarProp +BaseAudioContext +BeforeInstallPromptEvent +BeforeUnloadEvent +BigInt +BigInt64Array +BigUint64Array +BiquadFilterNode +Blob +BlobEvent +BluetoothUUID Boolean -String -Symbol +BroadcastChannel +BrowserCaptureMediaStreamTrack +ByteLengthQueuingStrategy +CDATASection +CSS +CSSAnimation +CSSConditionRule +CSSContainerRule +CSSCounterStyleRule +CSSFontFaceRule +CSSFontPaletteValuesRule +CSSGroupingRule +CSSImageValue +CSSImportRule +CSSKeyframeRule +CSSKeyframesRule +CSSKeywordValue +CSSLayerBlockRule +CSSLayerStatementRule +CSSMathClamp +CSSMathInvert +CSSMathMax +CSSMathMin +CSSMathNegate +CSSMathProduct +CSSMathSum +CSSMathValue +CSSMatrixComponent +CSSMediaRule +CSSNamespaceRule +CSSNumericArray +CSSNumericValue +CSSPageRule +CSSPerspective +CSSPositionValue +CSSPropertyRule +CSSRotate +CSSRule +CSSRuleList +CSSScale +CSSSkew +CSSSkewX +CSSSkewY +CSSStyleDeclaration +CSSStyleRule +CSSStyleSheet +CSSStyleValue +CSSSupportsRule +CSSTransformComponent +CSSTransformValue +CSSTransition +CSSTranslate +CSSUnitValue +CSSUnparsedValue +CSSVariableReferenceValue +CanvasCaptureMediaStreamTrack +CanvasFilter +CanvasGradient +CanvasPattern +CanvasRenderingContext2D +ChannelMergerNode +ChannelSplitterNode +CharacterData +ClipboardEvent +CloseEvent +Comment +CompositionEvent +CompressionStream +ConstantSourceNode +ContentVisibilityAutoStateChangeEvent +ConvolverNode +CountQueuingStrategy +CropTarget +Crypto +CustomElementRegistry +CustomEvent +CustomStateSet +DOMError +DOMException +DOMImplementation +DOMMatrix +DOMMatrixReadOnly +DOMParser +DOMPoint +DOMPointReadOnly +DOMQuad +DOMRect +DOMRectList +DOMRectReadOnly +DOMStringList +DOMStringMap +DOMTokenList +DataTransfer +DataTransferItem +DataTransferItemList +DataView Date -Promise -RegExp +DecompressionStream +DelayNode +DelegatedInkTrailPresenter +Document +DocumentFragment +DocumentTimeline +DocumentType +DragEvent +DynamicsCompressorNode +Element +ElementInternals +EncodedAudioChunk +EncodedVideoChunk Error +ErrorEvent EvalError -RangeError -ReferenceError -SyntaxError -TypeError -URIError -JSON -Math -Intl -ArrayBuffer -Uint8Array -Int8Array -Uint16Array -Int16Array -Uint32Array -Int32Array +Event +EventCounts +EventSource +EventTarget +External +FeaturePolicy +File +FileList +FileReader +FinalizationRegistry Float32Array Float64Array -Uint8ClampedArray -BigUint64Array -BigInt64Array -DataView -Map -BigInt -Set -WeakMap -WeakSet -Proxy -Reflect -ByteLengthQueuingStrategy -CountQueuingStrategy -WritableStream -WebSocket -WebGLContextEvent -WaveShaperNode -TextEncoder -TextDecoder -SyncManager -SubtleCrypto -StorageEvent -Storage -StereoPannerNode -SourceBufferList -SourceBuffer -ScriptProcessorNode -ScreenOrientation -RTCTrackEvent -RTCStatsReport -RTCSessionDescription -RTCRtpTransceiver -RTCRtpSender -RTCRtpReceiver -RTCRtpContributingSource -RTCPeerConnectionIceEvent -RTCPeerConnection -RTCIceCandidate -RTCDataChannelEvent -RTCDataChannel -RTCDTMFToneChangeEvent -RTCDTMFSender -RTCCertificate -Plugin -PluginArray -PhotoCapabilities -PeriodicWave -PannerNode -OverconstrainedError -OscillatorNode -OfflineAudioContext -OfflineAudioCompletionEvent -NetworkInformation -MimeType -MimeTypeArray -MediaStreamTrackEvent -MediaStreamTrack -MediaStreamEvent -MediaStream -MediaStreamAudioSourceNode -MediaStreamAudioDestinationNode -MediaSource -MediaSettingsRange -MediaRecorder -MediaEncryptedEvent -MediaElementAudioSourceNode -MediaDevices -MediaDeviceInfo -MediaCapabilities -MIDIPort -MIDIOutputMap -MIDIOutput -MIDIMessageEvent -MIDIInputMap -MIDIInput -MIDIConnectionEvent -MIDIAccess -InputDeviceInfo -ImageCapture -ImageBitmapRenderingContext -IIRFilterNode -IDBVersionChangeEvent -IDBTransaction -IDBRequest -IDBOpenDBRequest -IDBObjectStore -IDBKeyRange -IDBIndex -IDBFactory -IDBDatabase -IDBCursorWithValue -IDBCursor -GamepadEvent +FocusEvent +FontFace +FontFaceSetLoadEvent +FormData +FormDataEvent +FragmentDirective +Function +GainNode Gamepad GamepadButton -GainNode -EventSource -DynamicsCompressorNode -DeviceOrientationEvent -DeviceMotionEvent -DelayNode -DOMError -CryptoKey -Crypto -ConvolverNode -ConstantSourceNode -CloseEvent -ChannelSplitterNode -ChannelMergerNode -CanvasRenderingContext2D -CanvasCaptureMediaStreamTrack -BroadcastChannel -BlobEvent -BiquadFilterNode -BeforeInstallPromptEvent -BatteryManager -BaseAudioContext -AudioWorkletNode -AudioScheduledSourceNode -AudioProcessingEvent -AudioParamMap -AudioParam -AudioNode -AudioListener -AudioDestinationNode -AudioContext -AudioBufferSourceNode -AudioBuffer -AnalyserNode -XPathResult -XPathExpression -XPathEvaluator -XMLSerializer -XMLHttpRequestUpload -XMLHttpRequestEventTarget -XMLHttpRequest -XMLDocument -Worker -Window -WheelEvent -VisualViewport -ValidityState -VTTCue -URLSearchParams -URL -UIEvent -TreeWalker -TransitionEvent -TransformStream -TrackEvent -TouchList -TouchEvent -Touch -TimeRanges -TextTrackList -TextTrackCueList -TextTrackCue -TextTrack -TextMetrics -TextEvent -Text -TaskAttributionTiming -StyleSheetList -StyleSheet -StylePropertyMapReadOnly -StylePropertyMap -StaticRange -ShadowRoot -Selection -SecurityPolicyViolationEvent -Screen -SVGViewElement -SVGUseElement -SVGUnitTypes -SVGTransformList -SVGTransform -SVGTitleElement -SVGTextPositioningElement -SVGTextPathElement -SVGTextElement -SVGTextContentElement -SVGTSpanElement -SVGSymbolElement -SVGSwitchElement -SVGStyleElement -SVGStringList -SVGStopElement -SVGSetElement -SVGScriptElement -SVGSVGElement -SVGRectElement -SVGRect -SVGRadialGradientElement -SVGPreserveAspectRatio -SVGPolylineElement -SVGPolygonElement -SVGPointList -SVGPoint -SVGPatternElement -SVGPathElement -SVGNumberList -SVGNumber -SVGMetadataElement -SVGMatrix -SVGMaskElement -SVGMarkerElement -SVGMPathElement -SVGLinearGradientElement -SVGLineElement -SVGLengthList -SVGLength -SVGImageElement -SVGGraphicsElement -SVGGradientElement -SVGGeometryElement -SVGGElement -SVGForeignObjectElement -SVGFilterElement -SVGFETurbulenceElement -SVGFETileElement -SVGFESpotLightElement -SVGFESpecularLightingElement -SVGFEPointLightElement -SVGFEOffsetElement -SVGFEMorphologyElement -SVGFEMergeNodeElement -SVGFEMergeElement -SVGFEImageElement -SVGFEGaussianBlurElement -SVGFEFuncRElement -SVGFEFuncGElement -SVGFEFuncBElement -SVGFEFuncAElement -SVGFEFloodElement -SVGFEDropShadowElement -SVGFEDistantLightElement -SVGFEDisplacementMapElement -SVGFEDiffuseLightingElement -SVGFEConvolveMatrixElement -SVGFECompositeElement -SVGFEComponentTransferElement -SVGFEColorMatrixElement -SVGFEBlendElement -SVGEllipseElement -SVGElement -SVGDiscardElement -SVGDescElement -SVGDefsElement -SVGComponentTransferFunctionElement -SVGClipPathElement -SVGCircleElement -SVGAnimationElement -SVGAnimatedTransformList -SVGAnimatedString -SVGAnimatedRect -SVGAnimatedPreserveAspectRatio -SVGAnimatedNumberList -SVGAnimatedNumber -SVGAnimatedLengthList -SVGAnimatedLength -SVGAnimatedInteger -SVGAnimatedEnumeration -SVGAnimatedBoolean -SVGAnimatedAngle -SVGAnimateTransformElement -SVGAnimateMotionElement -SVGAnimateElement -SVGAngle -SVGAElement -Response -ResizeObserverEntry -ResizeObserver -Request -ReportingObserver -ReadableStream -Range -RadioNodeList -PromiseRejectionEvent -ProgressEvent -ProcessingInstruction -PopStateEvent -PointerEvent -PerformanceTiming -PerformanceServerTiming -PerformanceResourceTiming -PerformancePaintTiming -PerformanceObserverEntryList -PerformanceObserver -PerformanceNavigationTiming -PerformanceNavigation -PerformanceMeasure -PerformanceMark -PerformanceLongTaskTiming -PerformanceEntry -Performance -PageTransitionEvent -NodeList -NodeIterator -NodeFilter -Node -Navigator -NamedNodeMap -MutationRecord -MutationObserver -MutationEvent -MouseEvent -MessagePort -MessageEvent -MessageChannel -MediaQueryListEvent -MediaQueryList -MediaList -MediaError -Location -KeyboardEvent -IntersectionObserverEntry -IntersectionObserver -InputEvent -InputDeviceCapabilities -ImageData -ImageBitmap -IdleDeadline -History -Headers -HashChangeEvent -HTMLVideoElement -HTMLUnknownElement -HTMLUListElement -HTMLTrackElement -HTMLTitleElement -HTMLTimeElement -HTMLTextAreaElement -HTMLTemplateElement -HTMLTableSectionElement -HTMLTableRowElement -HTMLTableElement -HTMLTableColElement -HTMLTableCellElement -HTMLTableCaptionElement -HTMLStyleElement -HTMLSpanElement -HTMLSourceElement -HTMLSlotElement -HTMLShadowElement -HTMLSelectElement -HTMLScriptElement -HTMLQuoteElement -HTMLProgressElement -HTMLPreElement -HTMLPictureElement -HTMLParamElement -HTMLParagraphElement -HTMLOutputElement -HTMLOptionsCollection -Option -HTMLOptionElement -HTMLOptGroupElement -HTMLObjectElement -HTMLOListElement -HTMLModElement -HTMLMeterElement -HTMLMetaElement -HTMLMenuElement -HTMLMediaElement -HTMLMarqueeElement -HTMLMapElement -HTMLLinkElement -HTMLLegendElement -HTMLLabelElement -HTMLLIElement +GamepadEvent +GamepadHapticActuator +Geolocation +GeolocationCoordinates +GeolocationPosition +GeolocationPositionError +HTMLAllCollection +HTMLAnchorElement +HTMLAreaElement +HTMLAudioElement +HTMLBRElement +HTMLBaseElement +HTMLBodyElement +HTMLButtonElement +HTMLCanvasElement +HTMLCollection +HTMLDListElement +HTMLDataElement +HTMLDataListElement +HTMLDetailsElement +HTMLDialogElement +HTMLDirectoryElement +HTMLDivElement +HTMLDocument +HTMLElement +HTMLEmbedElement +HTMLFieldSetElement +HTMLFontElement +HTMLFormControlsCollection +HTMLFormElement +HTMLFrameElement +HTMLFrameSetElement +HTMLHRElement +HTMLHeadElement +HTMLHeadingElement +HTMLHtmlElement +HTMLIFrameElement +HTMLImageElement HTMLInputElement +HTMLLIElement +HTMLLabelElement +HTMLLegendElement +HTMLLinkElement +HTMLMapElement +HTMLMarqueeElement +HTMLMediaElement +HTMLMenuElement +HTMLMetaElement +HTMLMeterElement +HTMLModElement +HTMLOListElement +HTMLObjectElement +HTMLOptGroupElement +HTMLOptionElement +HTMLOptionsCollection +HTMLOutputElement +HTMLParagraphElement +HTMLParamElement +HTMLPictureElement +HTMLPreElement +HTMLProgressElement +HTMLQuoteElement +HTMLScriptElement +HTMLSelectElement +HTMLSlotElement +HTMLSourceElement +HTMLSpanElement +HTMLStyleElement +HTMLTableCaptionElement +HTMLTableCellElement +HTMLTableColElement +HTMLTableElement +HTMLTableRowElement +HTMLTableSectionElement +HTMLTemplateElement +HTMLTextAreaElement +HTMLTimeElement +HTMLTitleElement +HTMLTrackElement +HTMLUListElement +HTMLUnknownElement +HTMLVideoElement +HashChangeEvent +Headers +Highlight +HighlightRegistry +History +IDBCursor +IDBCursorWithValue +IDBDatabase +IDBFactory +IDBIndex +IDBKeyRange +IDBObjectStore +IDBOpenDBRequest +IDBRequest +IDBTransaction +IDBVersionChangeEvent +IIRFilterNode +IdleDeadline Image -HTMLImageElement -HTMLIFrameElement -HTMLHtmlElement -HTMLHeadingElement -HTMLHeadElement -HTMLHRElement -HTMLFrameSetElement -HTMLFrameElement -HTMLFormElement -HTMLFormControlsCollection -HTMLFontElement -HTMLFieldSetElement -HTMLEmbedElement -HTMLElement -HTMLDocument -HTMLDivElement -HTMLDirectoryElement -HTMLDialogElement -HTMLDetailsElement -HTMLDataListElement -HTMLDataElement -HTMLDListElement -HTMLContentElement -HTMLCollection -HTMLCanvasElement -HTMLButtonElement -HTMLBodyElement -HTMLBaseElement -HTMLBRElement -Audio -HTMLAudioElement -HTMLAreaElement -HTMLAnchorElement -HTMLAllCollection -FormData -FontFaceSetLoadEvent -FocusEvent -FileReader -FileList -File -EventTarget -Event -ErrorEvent -Element -DragEvent -DocumentType -DocumentFragment -Document -DataTransferItemList -DataTransferItem -DataTransfer -DOMTokenList -DOMStringMap -DOMStringList -DOMRectReadOnly -DOMRectList -DOMRect -DOMQuad -DOMPointReadOnly -DOMPoint -DOMParser -DOMMatrixReadOnly -DOMMatrix -DOMImplementation -DOMException -CustomEvent -CustomElementRegistry -CompositionEvent -Comment -ClipboardEvent -CharacterData -CSSVariableReferenceValue -CSSUnparsedValue -CSSUnitValue -CSSTranslate -CSSTransformValue -CSSTransformComponent -CSSSupportsRule -CSSStyleValue -CSSStyleSheet -CSSStyleRule -CSSStyleDeclaration -CSSSkewY -CSSSkewX -CSSSkew -CSSScale -CSSRuleList -CSSRule -CSSRotate -CSSPositionValue -CSSPerspective -CSSPageRule -CSSNumericValue -CSSNumericArray -CSSNamespaceRule -CSSMediaRule -CSSMatrixComponent -CSSMathValue -CSSMathSum -CSSMathProduct -CSSMathNegate -CSSMathMin -CSSMathMax -CSSMathInvert -CSSKeywordValue -CSSKeyframesRule -CSSKeyframeRule -CSSImportRule -CSSImageValue -CSSGroupingRule -CSSFontFaceRule -CSS -CSSConditionRule -CDATASection -Blob -BeforeUnloadEvent -BarProp -Attr -AnimationEvent -AbortSignal -AbortController -WebKitCSSMatrix -WebKitMutationObserver -SharedArrayBuffer -Atomics -WebAssembly -MediaCapabilitiesInfo -OffscreenCanvas -SharedWorker -FontFace -UserActivation -XSLTProcessor -TextDecoderStream -TextEncoderStream -GamepadHapticActuator +ImageBitmap +ImageBitmapRenderingContext +ImageCapture +ImageData +ImageTrack +ImageTrackList +Infinity +Ink +InputDeviceCapabilities +InputDeviceInfo +InputEvent +Int16Array +Int32Array +Int8Array +IntersectionObserver +IntersectionObserverEntry +Intl +JSON +KeyboardEvent +KeyframeEffect +LargestContentfulPaint +LaunchParams +LaunchQueue +LayoutShift +LayoutShiftAttribution +Location +Map +Math +MathMLElement +MediaCapabilities +MediaElementAudioSourceNode +MediaEncryptedEvent +MediaError +MediaList +MediaMetadata +MediaQueryList +MediaQueryListEvent +MediaRecorder +MediaSession +MediaSource +MediaSourceHandle +MediaStream +MediaStreamAudioDestinationNode +MediaStreamAudioSourceNode +MediaStreamEvent +MediaStreamTrack +MediaStreamTrackEvent +MediaStreamTrackGenerator +MediaStreamTrackProcessor +MessageChannel +MessageEvent +MessagePort +MimeType +MimeTypeArray +MouseEvent +MutationEvent +MutationObserver +MutationRecord +NaN +NamedNodeMap +NavigateEvent +Navigation +NavigationCurrentEntryChangeEvent +NavigationDestination +NavigationHistoryEntry +NavigationTransition +Navigator +NavigatorUAData +NetworkInformation +Node +NodeFilter +NodeIterator +NodeList Notification +Number +Object +OfflineAudioCompletionEvent +OfflineAudioContext +OffscreenCanvas OffscreenCanvasRenderingContext2D -PaymentInstruments +Option +OscillatorNode +OverconstrainedError +PageTransitionEvent +PannerNode +Path2D PaymentManager PaymentRequestUpdateEvent -Permissions +Performance +PerformanceElementTiming +PerformanceEntry +PerformanceEventTiming +PerformanceLongTaskTiming +PerformanceMark +PerformanceMeasure +PerformanceNavigation +PerformanceNavigationTiming +PerformanceObserver +PerformanceObserverEntryList +PerformancePaintTiming +PerformanceResourceTiming +PerformanceServerTiming +PerformanceTiming +PeriodicSyncManager +PeriodicWave PermissionStatus -EnterPictureInPictureEvent +Permissions +PictureInPictureEvent PictureInPictureWindow +Plugin +PluginArray +PointerEvent +PopStateEvent +ProcessingInstruction +Profiler +ProgressEvent +Promise +PromiseRejectionEvent +Proxy PushManager PushSubscription PushSubscriptionOptions +RTCCertificate +RTCDTMFSender +RTCDTMFToneChangeEvent +RTCDataChannel +RTCDataChannelEvent +RTCDtlsTransport +RTCEncodedAudioFrame +RTCEncodedVideoFrame +RTCError +RTCErrorEvent +RTCIceCandidate +RTCIceTransport +RTCPeerConnection +RTCPeerConnectionIceErrorEvent +RTCPeerConnectionIceEvent +RTCRtpReceiver +RTCRtpSender +RTCRtpTransceiver +RTCSctpTransport +RTCSessionDescription +RTCStatsReport +RTCTrackEvent +RadioNodeList +Range +RangeError +ReadableByteStreamController +ReadableStream +ReadableStreamBYOBReader +ReadableStreamBYOBRequest +ReadableStreamDefaultController +ReadableStreamDefaultReader +ReferenceError +Reflect +RegExp RemotePlayback +ReportingObserver +Request +ResizeObserver +ResizeObserverEntry +ResizeObserverSize +Response +SVGAElement +SVGAngle +SVGAnimateElement +SVGAnimateMotionElement +SVGAnimateTransformElement +SVGAnimatedAngle +SVGAnimatedBoolean +SVGAnimatedEnumeration +SVGAnimatedInteger +SVGAnimatedLength +SVGAnimatedLengthList +SVGAnimatedNumber +SVGAnimatedNumberList +SVGAnimatedPreserveAspectRatio +SVGAnimatedRect +SVGAnimatedString +SVGAnimatedTransformList +SVGAnimationElement +SVGCircleElement +SVGClipPathElement +SVGComponentTransferFunctionElement +SVGDefsElement +SVGDescElement +SVGElement +SVGEllipseElement +SVGFEBlendElement +SVGFEColorMatrixElement +SVGFEComponentTransferElement +SVGFECompositeElement +SVGFEConvolveMatrixElement +SVGFEDiffuseLightingElement +SVGFEDisplacementMapElement +SVGFEDistantLightElement +SVGFEDropShadowElement +SVGFEFloodElement +SVGFEFuncAElement +SVGFEFuncBElement +SVGFEFuncGElement +SVGFEFuncRElement +SVGFEGaussianBlurElement +SVGFEImageElement +SVGFEMergeElement +SVGFEMergeNodeElement +SVGFEMorphologyElement +SVGFEOffsetElement +SVGFEPointLightElement +SVGFESpecularLightingElement +SVGFESpotLightElement +SVGFETileElement +SVGFETurbulenceElement +SVGFilterElement +SVGForeignObjectElement +SVGGElement +SVGGeometryElement +SVGGradientElement +SVGGraphicsElement +SVGImageElement +SVGLength +SVGLengthList +SVGLineElement +SVGLinearGradientElement +SVGMPathElement +SVGMarkerElement +SVGMaskElement +SVGMatrix +SVGMetadataElement +SVGNumber +SVGNumberList +SVGPathElement +SVGPatternElement +SVGPoint +SVGPointList +SVGPolygonElement +SVGPolylineElement +SVGPreserveAspectRatio +SVGRadialGradientElement +SVGRect +SVGRectElement +SVGSVGElement +SVGScriptElement +SVGSetElement +SVGStopElement +SVGStringList +SVGStyleElement +SVGSwitchElement +SVGSymbolElement +SVGTSpanElement +SVGTextContentElement +SVGTextElement +SVGTextPathElement +SVGTextPositioningElement +SVGTitleElement +SVGTransform +SVGTransformList +SVGUnitTypes +SVGUseElement +SVGViewElement +Scheduler +Scheduling +Screen +ScreenOrientation +ScriptProcessorNode +SecurityPolicyViolationEvent +Selection +Set +ShadowRoot +SharedWorker +SourceBuffer +SourceBufferList SpeechSynthesisErrorEvent SpeechSynthesisEvent SpeechSynthesisUtterance -CanvasGradient -CanvasPattern -Path2D +StaticRange +StereoPannerNode +Storage +StorageEvent +String +StylePropertyMap +StylePropertyMapReadOnly +StyleSheet +StyleSheetList +SubmitEvent +Symbol +SyncManager +SyntaxError +TaskAttributionTiming +TaskController +TaskPriorityChangeEvent +TaskSignal +Text +TextDecoder +TextDecoderStream +TextEncoder +TextEncoderStream +TextEvent +TextMetrics +TextTrack +TextTrackCue +TextTrackCueList +TextTrackList +TimeRanges +Touch +TouchEvent +TouchList +TrackEvent +TransformStream +TransformStreamDefaultController +TransitionEvent +TreeWalker +TrustedHTML +TrustedScript +TrustedScriptURL +TrustedTypePolicy +TrustedTypePolicyFactory +TypeError +UIEvent +URIError +URL +URLPattern +URLSearchParams +Uint16Array +Uint32Array +Uint8Array +Uint8ClampedArray +UserActivation +VTTCue +ValidityState +VideoColorSpace +VideoFrame +VideoPlaybackQuality +ViewTransition +VirtualKeyboardGeometryChangeEvent +VisualViewport +WaveShaperNode +WeakMap +WeakRef +WeakSet +WebAssembly WebGL2RenderingContext WebGLActiveInfo WebGLBuffer +WebGLContextEvent WebGLFramebuffer WebGLProgram WebGLQuery @@ -571,4 +635,23 @@ WebGLTexture WebGLTransformFeedback WebGLUniformLocation WebGLVertexArrayObject -BluetoothUUID \ No newline at end of file +WebKitCSSMatrix +WebKitMutationObserver +WebSocket +WheelEvent +Window +WindowControlsOverlay +WindowControlsOverlayGeometryChangeEvent +Worker +WritableStream +WritableStreamDefaultController +WritableStreamDefaultWriter +XMLDocument +XMLHttpRequest +XMLHttpRequestEventTarget +XMLHttpRequestUpload +XMLSerializer +XPathEvaluator +XPathExpression +XPathResult +XSLTProcessor \ No newline at end of file diff --git a/jscomp/test/reactEvent.js b/jscomp/test/reactEvent.js index 5856d2226c..551d6dfab7 100644 --- a/jscomp/test/reactEvent.js +++ b/jscomp/test/reactEvent.js @@ -27,7 +27,7 @@ var Media = {}; var $$Image = {}; -var Animation = {}; +var $$Animation = {}; var Transition = {}; @@ -44,6 +44,6 @@ exports.UI = UI; exports.Wheel = Wheel; exports.Media = Media; exports.$$Image = $$Image; -exports.Animation = Animation; +exports.$$Animation = $$Animation; exports.Transition = Transition; /* No side effect */ diff --git a/lib/es6/jsxEventC.js b/lib/es6/jsxEventC.js index d21199bd53..986f6171c6 100644 --- a/lib/es6/jsxEventC.js +++ b/lib/es6/jsxEventC.js @@ -33,7 +33,7 @@ var Media = {}; var $$Image = {}; -var Animation = {}; +var $$Animation = {}; var Transition = {}; @@ -53,7 +53,7 @@ export { Wheel , Media , $$Image , - Animation , + $$Animation , Transition , } /* No side effect */ diff --git a/lib/es6/jsxEventU.js b/lib/es6/jsxEventU.js index d21199bd53..986f6171c6 100644 --- a/lib/es6/jsxEventU.js +++ b/lib/es6/jsxEventU.js @@ -33,7 +33,7 @@ var Media = {}; var $$Image = {}; -var Animation = {}; +var $$Animation = {}; var Transition = {}; @@ -53,7 +53,7 @@ export { Wheel , Media , $$Image , - Animation , + $$Animation , Transition , } /* No side effect */ diff --git a/lib/js/jsxEventC.js b/lib/js/jsxEventC.js index 41006f5a8d..d09731cc54 100644 --- a/lib/js/jsxEventC.js +++ b/lib/js/jsxEventC.js @@ -33,7 +33,7 @@ var Media = {}; var $$Image = {}; -var Animation = {}; +var $$Animation = {}; var Transition = {}; @@ -52,6 +52,6 @@ exports.UI = UI; exports.Wheel = Wheel; exports.Media = Media; exports.$$Image = $$Image; -exports.Animation = Animation; +exports.$$Animation = $$Animation; exports.Transition = Transition; /* No side effect */ diff --git a/lib/js/jsxEventU.js b/lib/js/jsxEventU.js index 41006f5a8d..d09731cc54 100644 --- a/lib/js/jsxEventU.js +++ b/lib/js/jsxEventU.js @@ -33,7 +33,7 @@ var Media = {}; var $$Image = {}; -var Animation = {}; +var $$Animation = {}; var Transition = {}; @@ -52,6 +52,6 @@ exports.UI = UI; exports.Wheel = Wheel; exports.Media = Media; exports.$$Image = $$Image; -exports.Animation = Animation; +exports.$$Animation = $$Animation; exports.Transition = Transition; /* No side effect */ diff --git a/scripts/build_reserved.js b/scripts/build_reserved.js new file mode 100644 index 0000000000..18e1042bd8 --- /dev/null +++ b/scripts/build_reserved.js @@ -0,0 +1,32 @@ +//@ts-check + +const fs = require("fs"); +const path = require("path"); +const { execSync } = require("child_process"); +const puppeteer = require("puppeteer"); + +const jscompDir = path.join(__dirname, "..", "jscomp"); +const keywordsFile = path.join(jscompDir, "keywords.list"); +const reservedMap = path.join(jscompDir, "ext", "js_reserved_map.ml"); + +(async function () { + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + /** + * @type string[] + */ + const result = await page.evaluate(`Object.getOwnPropertyNames(window)`); + fs.writeFileSync( + keywordsFile, + result + .filter(x => /^[A-Z]/.test(x)) + .sort() + .join("\n"), + "utf8" + ); + await browser.close(); + + execSync(`ocaml build_reserved.ml ${keywordsFile} ${reservedMap}`, { + cwd: __dirname, + }); +})(); diff --git a/scripts/build_sorted.ml b/scripts/build_reserved.ml similarity index 99% rename from scripts/build_sorted.ml rename to scripts/build_reserved.ml index 9a20fb515b..f343d538fa 100644 --- a/scripts/build_sorted.ml +++ b/scripts/build_reserved.ml @@ -228,6 +228,6 @@ for i = 0 to Array.length Sys.argv - 1 do print_endline ">"; print_string Sys.argv.(i) done ;; *) -let () = main Sys.argv.(1) "ext/js_reserved_map.ml" +let () = main Sys.argv.(1) Sys.argv.(2)