Created
December 13, 2021 15:23
-
-
Save Ruben-E/091c96ea508ce8fb33eec59d324bdfab to your computer and use it in GitHub Desktop.
Reserved properties Stencil
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SOURCE: https://github.com/ionic-team/stencil-eslint/blob/main/src/rules/reserved-member-names.ts | |
| const HTML_ELEMENT_KEYS = [ | |
| "title", | |
| "lang", | |
| "translate", | |
| "dir", | |
| // 'dataset', | |
| // 'hidden', | |
| "tabIndex", | |
| "accessKey", | |
| "draggable", | |
| // 'spellcheck', | |
| // 'autocapitalize', | |
| "contentEditable", | |
| "isContentEditable", | |
| // 'inputMode', | |
| "offsetParent", | |
| "offsetTop", | |
| "offsetLeft", | |
| "offsetWidth", | |
| "offsetHeight", | |
| "style", | |
| "innerText", | |
| "outerText", | |
| "oncopy", | |
| "oncut", | |
| "onpaste", | |
| "onabort", | |
| "onblur", | |
| "oncancel", | |
| "oncanplay", | |
| "oncanplaythrough", | |
| "onchange", | |
| "onclick", | |
| "onclose", | |
| "oncontextmenu", | |
| "oncuechange", | |
| "ondblclick", | |
| "ondrag", | |
| "ondragend", | |
| "ondragenter", | |
| "ondragleave", | |
| "ondragover", | |
| "ondragstart", | |
| "ondrop", | |
| "ondurationchange", | |
| "onemptied", | |
| "onended", | |
| "onerror", | |
| "onfocus", | |
| "oninput", | |
| "oninvalid", | |
| "onkeydown", | |
| "onkeypress", | |
| "onkeyup", | |
| "onload", | |
| "onloadeddata", | |
| "onloadedmetadata", | |
| "onloadstart", | |
| "onmousedown", | |
| "onmouseenter", | |
| "onmouseleave", | |
| "onmousemove", | |
| "onmouseout", | |
| "onmouseover", | |
| "onmouseup", | |
| "onmousewheel", | |
| "onpause", | |
| "onplay", | |
| "onplaying", | |
| "onprogress", | |
| "onratechange", | |
| "onreset", | |
| "onresize", | |
| "onscroll", | |
| "onseeked", | |
| "onseeking", | |
| "onselect", | |
| "onstalled", | |
| "onsubmit", | |
| "onsuspend", | |
| "ontimeupdate", | |
| "ontoggle", | |
| "onvolumechange", | |
| "onwaiting", | |
| "onwheel", | |
| "onauxclick", | |
| "ongotpointercapture", | |
| "onlostpointercapture", | |
| "onpointerdown", | |
| "onpointermove", | |
| "onpointerup", | |
| "onpointercancel", | |
| "onpointerover", | |
| "onpointerout", | |
| "onpointerenter", | |
| "onpointerleave", | |
| "onselectstart", | |
| "onselectionchange", | |
| "nonce", | |
| "click", | |
| "focus", | |
| "blur", | |
| ]; | |
| const ELEMENT_KEYS = [ | |
| "namespaceURI", | |
| "prefix", | |
| "localName", | |
| "tagName", | |
| "id", | |
| "className", | |
| "classList", | |
| "slot", | |
| "attributes", | |
| "shadowRoot", | |
| "assignedSlot", | |
| "innerHTML", | |
| "outerHTML", | |
| "scrollTop", | |
| "scrollLeft", | |
| "scrollWidth", | |
| "scrollHeight", | |
| "clientTop", | |
| "clientLeft", | |
| "clientWidth", | |
| "clientHeight", | |
| "attributeStyleMap", | |
| "onbeforecopy", | |
| "onbeforecut", | |
| "onbeforepaste", | |
| "onsearch", | |
| "previousElementSibling", | |
| "nextElementSibling", | |
| "children", | |
| "firstElementChild", | |
| "lastElementChild", | |
| "childElementCount", | |
| "onfullscreenchange", | |
| "onfullscreenerror", | |
| "onwebkitfullscreenchange", | |
| "onwebkitfullscreenerror", | |
| "setPointerCapture", | |
| "releasePointerCapture", | |
| "hasPointerCapture", | |
| "hasAttributes", | |
| "getAttributeNames", | |
| "getAttribute", | |
| "getAttributeNS", | |
| "setAttribute", | |
| "setAttributeNS", | |
| "removeAttribute", | |
| "removeAttributeNS", | |
| "hasAttribute", | |
| "hasAttributeNS", | |
| "toggleAttribute", | |
| "getAttributeNode", | |
| "getAttributeNodeNS", | |
| "setAttributeNode", | |
| "setAttributeNodeNS", | |
| "removeAttributeNode", | |
| "closest", | |
| "matches", | |
| "webkitMatchesSelector", | |
| "attachShadow", | |
| "getElementsByTagName", | |
| "getElementsByTagNameNS", | |
| "getElementsByClassName", | |
| "insertAdjacentElement", | |
| "insertAdjacentText", | |
| "insertAdjacentHTML", | |
| "requestPointerLock", | |
| "getClientRects", | |
| "getBoundingClientRect", | |
| "scrollIntoView", | |
| "scroll", | |
| "scrollTo", | |
| "scrollBy", | |
| "scrollIntoViewIfNeeded", | |
| "animate", | |
| "computedStyleMap", | |
| "before", | |
| "after", | |
| "replaceWith", | |
| "remove", | |
| "prepend", | |
| "append", | |
| "querySelector", | |
| "querySelectorAll", | |
| "requestFullscreen", | |
| "webkitRequestFullScreen", | |
| "webkitRequestFullscreen", | |
| "part", | |
| "createShadowRoot", | |
| "getDestinationInsertionPoints", | |
| ]; | |
| const NODE_KEYS = [ | |
| "ELEMENT_NODE", | |
| "ATTRIBUTE_NODE", | |
| "TEXT_NODE", | |
| "CDATA_SECTION_NODE", | |
| "ENTITY_REFERENCE_NODE", | |
| "ENTITY_NODE", | |
| "PROCESSING_INSTRUCTION_NODE", | |
| "COMMENT_NODE", | |
| "DOCUMENT_NODE", | |
| "DOCUMENT_TYPE_NODE", | |
| "DOCUMENT_FRAGMENT_NODE", | |
| "NOTATION_NODE", | |
| "DOCUMENT_POSITION_DISCONNECTED", | |
| "DOCUMENT_POSITION_PRECEDING", | |
| "DOCUMENT_POSITION_FOLLOWING", | |
| "DOCUMENT_POSITION_CONTAINS", | |
| "DOCUMENT_POSITION_CONTAINED_BY", | |
| "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC", | |
| "nodeType", | |
| "nodeName", | |
| "baseURI", | |
| "isConnected", | |
| "ownerDocument", | |
| "parentNode", | |
| "parentElement", | |
| "childNodes", | |
| "firstChild", | |
| "lastChild", | |
| "previousSibling", | |
| "nextSibling", | |
| "nodeValue", | |
| "textContent", | |
| "hasChildNodes", | |
| "getRootNode", | |
| "normalize", | |
| "cloneNode", | |
| "isEqualNode", | |
| "isSameNode", | |
| "compareDocumentPosition", | |
| "contains", | |
| "lookupPrefix", | |
| "lookupNamespaceURI", | |
| "isDefaultNamespace", | |
| "insertBefore", | |
| "appendChild", | |
| "replaceChild", | |
| "removeChild", | |
| ]; | |
| const JSX_KEYS = ["ref", "key"]; | |
| const RESERVED_PUBLIC_MEMBERS = new Set( | |
| [...HTML_ELEMENT_KEYS, ...ELEMENT_KEYS, ...NODE_KEYS, ...JSX_KEYS].map((p) => | |
| p.toLowerCase() | |
| ) | |
| ); | |
| function isReservedMember(memberName: string) { | |
| memberName = memberName.toLowerCase(); | |
| return RESERVED_PUBLIC_MEMBERS.has(memberName); | |
| } | |
| // SOURCE: https://github.com/ionic-team/stencil/blob/main/src/declarations/stencil-public-runtime.ts#L1238 | |
| const stencilHTMLAttributes = [ | |
| "innerHTML", | |
| "accessKey", | |
| "class", | |
| "contentEditable", | |
| "contenteditable", | |
| "contextMenu", | |
| "contextmenu", | |
| "dir", | |
| "draggable", | |
| "hidden", | |
| "id", | |
| "lang", | |
| "spellcheck", | |
| "style", | |
| "tabIndex", | |
| "tabindex?", | |
| "title", | |
| "inputMode", | |
| "inputmode", | |
| "enterKeyHint", | |
| "enterkeyhint", | |
| "is", | |
| "radioGroup", | |
| "radiogroup", | |
| "role", | |
| "about", | |
| "datatype", | |
| "inlist", | |
| "prefix", | |
| "property", | |
| "resource", | |
| "typeof", | |
| "vocab", | |
| "autoCapitalize", | |
| "autocapitalize", | |
| "autoCorrect", | |
| "autocorrect", | |
| "autoSave", | |
| "autosave", | |
| "color", | |
| "itemProp", | |
| "itemprop", | |
| "itemScope", | |
| "itemscope", | |
| "itemType", | |
| "itemtype", | |
| "itemID", | |
| "itemid", | |
| "itemRef", | |
| "itemref", | |
| "results", | |
| "security", | |
| "unselectable", | |
| ]; | |
| // CHECK | |
| console.log( | |
| new Set( | |
| stencilHTMLAttributes | |
| .map((a) => a.toLowerCase()) | |
| .filter((a) => !isReservedMember(a)) | |
| ) | |
| ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment