Files
Loki/frontend/node_modules/property-information/readme.md
T
MichaelandClaude Opus 5 b405adea6c Jauge de contexte, espace disque sur partage agrégé, panneau Fichiers
Trois défauts sans rapport entre eux, tous visibles à l'écran.

Jauge de contexte bloquée à « 0 / N (0 %) » : le comptage exact vient de
usage.prompt_tokens (include_usage), qu'un llama-server récent a cessé de
renvoyer. On note désormais si l'usage est arrivé ; sinon la fin de tour
publie l'estimation qui pilote déjà la compaction — approximative, mais
jamais absente. Et la souscription envoie la valeur courante juste après
le rattrapage : une page rechargée affichait zéro sur une discussion
pourtant pleine, faute d'événement ctx_used dans la fenêtre rejouée.

Espace disque : « il ne reste que 11,9 Go » sur un partage Unraid qui en
a des centaines. /mnt/user est servi par shfs, un FUSE qui agrège
plusieurs disques — statfs y renvoie l'espace d'un seul, et ce chiffre
REFUSAIT l'installation du modèle. Les systèmes de fichiers qui
approximent (FUSE, overlay, NFS, CIFS, Ceph, Gluster) sont reconnus par
leur magie : leur chiffre reste affiché, précédé d'un « ~ », mais ne
bloque plus rien.

Panneau Fichiers : le panneau entier défilait, emportant vers le haut
l'en-tête, le fil d'Ariane et le pied (occupation disque, bouton .zip)
dès qu'il y avait quelques fichiers. Seule la liste défile maintenant ;
le pied reste en bas et l'état vide se centre.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 08:28:53 +02:00

1074 lines
68 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# property-information
[![Build][badge-build-image]][badge-build-url]
[![Coverage][badge-coverage-image]][badge-coverage-url]
[![Downloads][badge-downloads-image]][badge-downloads-url]
[![Size][badge-size-image]][badge-size-url]
Info on the properties and attributes of the web platform
(HTML, SVG, ARIA, XML, XMLNS, XLink).
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`Info`](#info)
* [`Schema`](#schema)
* [`Space`](#space)
* [`find(schema, name)`](#findschema-name)
* [`hastToReact`](#hasttoreact)
* [`html`](#html)
* [`normalize(name)`](#normalizename)
* [`svg`](#svg)
* [Compatibility](#compatibility)
* [Support](#support)
* [Security](#security)
* [Related](#related)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package contains lots of info on all the properties and attributes found
on the web platform.
It includes data on
HTML, SVG, ARIA, XML, XMLNS, and XLink.
The names of the properties follow [hast][github-hast-property-name]’s
sensible naming scheme.
It includes info on what data types attributes hold,
such as whether they’re booleans or contain lists of space separated numbers.
## When should I use this?
You can use this package if you’re working with hast,
which is an AST for HTML,
or have goals related to ASTs,
such as figuring out which properties or attributes are valid,
or what data types they hold.
## Install
This package is [ESM only][github-gist-esm].
In Node.js (version 16+),
install with [npm][npmjs-install]:
```sh
npm install property-information
```
In Deno with [`esm.sh`][esmsh]:
```js
import * as propertyInformation from 'https://esm.sh/property-information@7'
```
In browsers with [`esm.sh`][esmsh]:
```html
<script type="module">
import * as propertyInformation from 'https://esm.sh/property-information@7?bundle'
</script>
```
## Use
```js
import {find, html, svg} from 'property-information'
console.log(find(html, 'className'))
// Or: find(html, 'class')
console.log(find(svg, 'horiz-adv-x'))
// Or: find(svg, 'horizAdvX')
console.log(find(svg, 'xlink:arcrole'))
// Or: find(svg, 'xLinkArcRole')
console.log(find(html, 'xmlLang'))
// Or: find(html, 'xml:lang')
console.log(find(html, 'ariaValueNow'))
// Or: find(html, 'aria-valuenow')
```
Yields:
```js
{attribute: 'class', property: 'className', spaceSeparated: true, space: 'html'}
{attribute: 'horiz-adv-x', number: true, property: 'horizAdvX', space: 'svg'}
{attribute: 'xlink:arcrole', property: 'xLinkArcRole', space: 'xlink'}
{attribute: 'xml:lang', property: 'xmlLang', space: 'xml'}
{attribute: 'aria-valuenow', number: true, property: 'ariaValueNow'}
```
## API
This package exports the identifiers
[`find`][api-find],
[`hastToReact`][api-hast-to-react],
[`html`][api-html],
[`normalize`][api-normalize],
and
[`svg`][api-svg].
There is no default export.
It exports the [TypeScript][] types
[`Info`][api-info],
[`Schema`][api-schema],
and
[`Space`][api-space].
### `Info`
Info on a property (TypeScript type).
###### Fields
* `attribute` (`string`)
— attribute name for the property that could be used in markup
(such as `'aria-describedby'`, `'allowfullscreen'`, `'xml:lang'`, `'for'`,
or `'charoff'`)
* `booleanish` (`boolean`)
— the property is *like* a `boolean`
(such as `draggable`);
these properties have both an on and off state when defined,
*and* another state when not defined
* `boolean` (`boolean`)
— the property is a `boolean`
(such as `hidden`);
these properties have an on state when defined and an off state when not
defined
* `commaOrSpaceSeparated` (`boolean`)
— the property is a list separated by spaces or commas
(such as `strokeDashArray`)
* `commaSeparated` (`boolean`)
— the property is a list separated by commas
(such as `coords`)
* `defined` (`boolean`)
— the property is [defined by a space][section-support];
this is the case for values in HTML
(including [data][mozilla-dataset] and ARIA),
SVG, XML, XMLNS, and XLink;
not defined properties can only be found through `find`
* `mustUseProperty` (`boolean`)
— when working with the DOM,
this property has to be changed as a field on the element,
instead of through `setAttribute`
(this is true only for `'checked'`, `'multiple'`, `'muted'`, and
`'selected'`)
* `number` (`boolean`)
— the property is a `number` (such as `height`)
* `overloadedBoolean` (`boolean`)
— the property is *like* a `boolean` (such as `download`);
these properties have an on state *and* more states when defined and an off
state when not defined
* `property` (`string`)
— JavaScript-style camel-cased name;
based on the DOM but sometimes different
(such as `'ariaDescribedBy'`, `'allowFullScreen'`, `'xmlLang'`, `'htmlFor'`,
`'charOff'`)
* `spaceSeparated` (`boolean`)
— the property is a list separated by spaces
(such as `className`)
* `space` ([`Space`][api-space] or `undefined`)
— [space][github-web-namespaces] of the property
### `Schema`
Schema for a primary space (TypeScript type).
###### Fields
* `normal` (`Record<string, string>`)
— object mapping normalized attributes and properties to properly cased
properties
* `property` ([`Record<string, Info>`][api-info])
— object mapping properties to info
* `space` (`'html'` or `'svg'`)
— primary space of the schema
### `Space`
Space of a property (TypeScript type).
###### Type
```ts
type Space = 'html' | 'svg' | 'xlink' | 'xmlns' | 'xml'
```
### `find(schema, name)`
Look up info on a property.
In most cases the given `schema` contains info on the property.
All standard,
most legacy,
and some non-standard properties are supported.
For these cases,
the returned [`Info`][api-info] has hints about the value of the property.
`name` can also be a [valid data attribute or property][mozilla-dataset],
in which case an [`Info`][api-info] object with the correctly cased `attribute`
and `property` is returned.
`name` can be an unknown attribute,
in which case an [`Info`][api-info] object with `attribute` and `property` set
to the given name is returned.
It is not recommended to provide unsupported legacy or recently specced
properties.
###### Parameters
* `schema` ([`Schema`][api-schema])
— schema;
either the `html` or `svg` export
* `name` (`string`)
— an attribute-like or property-like name;
it will be passed through
[`normalize`][api-normalize] to hopefully find the correct info
###### Returns
[`Info`][api-info].
###### Example
Aside from the aforementioned example,
which shows known HTML, SVG, XML, XLink, and ARIA support,
data properties and attributes are also supported:
```js
console.log(find(html, 'data-date-of-birth'))
// Or: find(html, 'dataDateOfBirth')
// => {attribute: 'data-date-of-birth', property: 'dataDateOfBirth'}
```
Unknown values are passed through untouched:
```js
console.log(find(html, 'un-Known'))
// => {attribute: 'un-Known', property: 'un-Known'}
```
### `hastToReact`
Special cases for React (`Record<string, string>`).
[`hast`][github-hast] is close to [`React`][github-react]
but differs in a couple of cases.
To get a React property from a hast property,
check if it is in `hastToReact`.
If it is,
use the corresponding value.
### `html`
[`Schema`][api-schema] for HTML,
with info on properties from HTML itself and related embedded spaces
(ARIA, XML, XMLNS, XLink).
###### Example
```js
console.log(html.property.htmlFor)
// => {attribute: 'for', property: 'htmlFor', spaceSeparated: true, space: 'html'}
console.log(html.property.unknown)
// => undefined
```
### `normalize(name)`
Get the cleaned case insensitive form of an attribute or property.
###### Parameters
* `name` (`string`)
— an attribute-like or property-like name
###### Returns
Value (`string`) that can be used to look up the properly cased property on a
[`Schema`][api-schema].
###### Example
```js
html.normal[normalize('for')] // => 'htmlFor'
svg.normal[normalize('VIEWBOX')] // => 'viewBox'
html.normal[normalize('unknown')] // => undefined
html.normal[normalize('accept-charset')] // => 'acceptCharset'
```
### `svg`
[`Schema`][api-schema] for SVG,
with info on properties from SVG itself and related embedded spaces
(ARIA, XML, XMLNS, XLink).
###### Example
```js
console.log(svg.property.viewBox)
// => {attribute: 'viewBox', property: 'viewBox', space: 'svg'}
console.log(svg.property.unknown)
// => undefined
```
## Compatibility
This package is at least compatible with all maintained versions of Node.js.
As of now,
that is Node.js 16+.
It also works in Deno and modern browsers.
## Support
<!--list start-->
| Property | Attribute | Space |
| --------------------------------- | --------------------------------- | ------------- |
| `aLink` | `alink` | `html` |
| `abbr` | `abbr` | `html` |
| `about` | `about` | `svg` |
| `accentHeight` | `accent-height` | `svg` |
| `accept` | `accept` | `html` |
| `acceptCharset` | `accept-charset` | `html` |
| `accessKey` | `accesskey` | `html` |
| `accumulate` | `accumulate` | `svg` |
| `action` | `action` | `html` |
| `additive` | `additive` | `svg` |
| `align` | `align` | `html` |
| `alignmentBaseline` | `alignment-baseline` | `svg` |
| `allow` | `allow` | `html` |
| `allowFullScreen` | `allowfullscreen` | `html` |
| `allowPaymentRequest` | `allowpaymentrequest` | `html` |
| `allowTransparency` | `allowtransparency` | `html` |
| `allowUserMedia` | `allowusermedia` | `html` |
| `alpha` | `alpha` | `html` |
| `alphabetic` | `alphabetic` | `svg` |
| `alt` | `alt` | `html` |
| `amplitude` | `amplitude` | `svg` |
| `arabicForm` | `arabic-form` | `svg` |
| `archive` | `archive` | `html` |
| `ariaActiveDescendant` | `aria-activedescendant` | |
| `ariaAtomic` | `aria-atomic` | |
| `ariaAutoComplete` | `aria-autocomplete` | |
| `ariaBusy` | `aria-busy` | |
| `ariaChecked` | `aria-checked` | |
| `ariaColCount` | `aria-colcount` | |
| `ariaColIndex` | `aria-colindex` | |
| `ariaColSpan` | `aria-colspan` | |
| `ariaControls` | `aria-controls` | |
| `ariaCurrent` | `aria-current` | |
| `ariaDescribedBy` | `aria-describedby` | |
| `ariaDetails` | `aria-details` | |
| `ariaDisabled` | `aria-disabled` | |
| `ariaDropEffect` | `aria-dropeffect` | |
| `ariaErrorMessage` | `aria-errormessage` | |
| `ariaExpanded` | `aria-expanded` | |
| `ariaFlowTo` | `aria-flowto` | |
| `ariaGrabbed` | `aria-grabbed` | |
| `ariaHasPopup` | `aria-haspopup` | |
| `ariaHidden` | `aria-hidden` | |
| `ariaInvalid` | `aria-invalid` | |
| `ariaKeyShortcuts` | `aria-keyshortcuts` | |
| `ariaLabel` | `aria-label` | |
| `ariaLabelledBy` | `aria-labelledby` | |
| `ariaLevel` | `aria-level` | |
| `ariaLive` | `aria-live` | |
| `ariaModal` | `aria-modal` | |
| `ariaMultiLine` | `aria-multiline` | |
| `ariaMultiSelectable` | `aria-multiselectable` | |
| `ariaOrientation` | `aria-orientation` | |
| `ariaOwns` | `aria-owns` | |
| `ariaPlaceholder` | `aria-placeholder` | |
| `ariaPosInSet` | `aria-posinset` | |
| `ariaPressed` | `aria-pressed` | |
| `ariaReadOnly` | `aria-readonly` | |
| `ariaRelevant` | `aria-relevant` | |
| `ariaRequired` | `aria-required` | |
| `ariaRoleDescription` | `aria-roledescription` | |
| `ariaRowCount` | `aria-rowcount` | |
| `ariaRowIndex` | `aria-rowindex` | |
| `ariaRowSpan` | `aria-rowspan` | |
| `ariaSelected` | `aria-selected` | |
| `ariaSetSize` | `aria-setsize` | |
| `ariaSort` | `aria-sort` | |
| `ariaValueMax` | `aria-valuemax` | |
| `ariaValueMin` | `aria-valuemin` | |
| `ariaValueNow` | `aria-valuenow` | |
| `ariaValueText` | `aria-valuetext` | |
| `as` | `as` | `html` |
| `ascent` | `ascent` | `svg` |
| `async` | `async` | `html` |
| `attributeName` | `attributeName` | `svg` |
| `attributeType` | `attributeType` | `svg` |
| `autoCapitalize` | `autocapitalize` | `html` |
| `autoComplete` | `autocomplete` | `html` |
| `autoCorrect` | `autocorrect` | `html` |
| `autoFocus` | `autofocus` | `html` |
| `autoPlay` | `autoplay` | `html` |
| `autoSave` | `autosave` | `html` |
| `axis` | `axis` | `html` |
| `azimuth` | `azimuth` | `svg` |
| `background` | `background` | `html` |
| `bandwidth` | `bandwidth` | `svg` |
| `baseFrequency` | `baseFrequency` | `svg` |
| `baseProfile` | `baseProfile` | `svg` |
| `baselineShift` | `baseline-shift` | `svg` |
| `bbox` | `bbox` | `svg` |
| `begin` | `begin` | `svg` |
| `bgColor` | `bgcolor` | `html` |
| `bias` | `bias` | `svg` |
| `blocking` | `blocking` | `html` |
| `border` | `border` | `html` |
| `borderColor` | `bordercolor` | `html` |
| `bottomMargin` | `bottommargin` | `html` |
| `by` | `by` | `svg` |
| `calcMode` | `calcMode` | `svg` |
| `capHeight` | `cap-height` | `svg` |
| `capture` | `capture` | `html` |
| `cellPadding` | `cellpadding` | `html` |
| `cellSpacing` | `cellspacing` | `html` |
| `char` | `char` | `html` |
| `charOff` | `charoff` | `html` |
| `charSet` | `charset` | `html` |
| `checked` | `checked` | `html` |
| `cite` | `cite` | `html` |
| `classId` | `classid` | `html` |
| `className` | `class` | `svg`, `html` |
| `clear` | `clear` | `html` |
| `clip` | `clip` | `svg` |
| `clipPath` | `clip-path` | `svg` |
| `clipPathUnits` | `clipPathUnits` | `svg` |
| `clipRule` | `clip-rule` | `svg` |
| `closedBy` | `closedby` | `html` |
| `code` | `code` | `html` |
| `codeBase` | `codebase` | `html` |
| `codeType` | `codetype` | `html` |
| `colSpan` | `colspan` | `html` |
| `color` | `color` | `svg`, `html` |
| `colorInterpolation` | `color-interpolation` | `svg` |
| `colorInterpolationFilters` | `color-interpolation-filters` | `svg` |
| `colorProfile` | `color-profile` | `svg` |
| `colorRendering` | `color-rendering` | `svg` |
| `colorSpace` | `colorspace` | `html` |
| `cols` | `cols` | `html` |
| `command` | `command` | `html` |
| `commandFor` | `commandfor` | `html` |
| `compact` | `compact` | `html` |
| `content` | `content` | `svg`, `html` |
| `contentEditable` | `contenteditable` | `html` |
| `contentScriptType` | `contentScriptType` | `svg` |
| `contentStyleType` | `contentStyleType` | `svg` |
| `controls` | `controls` | `html` |
| `controlsList` | `controlslist` | `html` |
| `coords` | `coords` | `html` |
| `credentialless` | `credentialless` | `html` |
| `crossOrigin` | `crossorigin` | `svg`, `html` |
| `cursor` | `cursor` | `svg` |
| `cx` | `cx` | `svg` |
| `cy` | `cy` | `svg` |
| `d` | `d` | `svg` |
| `data` | `data` | `html` |
| `dataType` | `datatype` | `svg` |
| `dateTime` | `datetime` | `html` |
| `declare` | `declare` | `html` |
| `decoding` | `decoding` | `html` |
| `default` | `default` | `html` |
| `defaultAction` | `defaultAction` | `svg` |
| `defer` | `defer` | `html` |
| `descent` | `descent` | `svg` |
| `diffuseConstant` | `diffuseConstant` | `svg` |
| `dir` | `dir` | `html` |
| `dirName` | `dirname` | `html` |
| `direction` | `direction` | `svg` |
| `disablePictureInPicture` | `disablepictureinpicture` | `html` |
| `disableRemotePlayback` | `disableremoteplayback` | `html` |
| `disabled` | `disabled` | `html` |
| `display` | `display` | `svg` |
| `divisor` | `divisor` | `svg` |
| `dominantBaseline` | `dominant-baseline` | `svg` |
| `download` | `download` | `svg`, `html` |
| `draggable` | `draggable` | `html` |
| `dur` | `dur` | `svg` |
| `dx` | `dx` | `svg` |
| `dy` | `dy` | `svg` |
| `edgeMode` | `edgeMode` | `svg` |
| `editable` | `editable` | `svg` |
| `elevation` | `elevation` | `svg` |
| `enableBackground` | `enable-background` | `svg` |
| `encType` | `enctype` | `html` |
| `end` | `end` | `svg` |
| `enterKeyHint` | `enterkeyhint` | `html` |
| `event` | `event` | `svg`, `html` |
| `exponent` | `exponent` | `svg` |
| `exportParts` | `exportparts` | `html` |
| `externalResourcesRequired` | `externalResourcesRequired` | `svg` |
| `face` | `face` | `html` |
| `fetchPriority` | `fetchpriority` | `html` |
| `fill` | `fill` | `svg` |
| `fillOpacity` | `fill-opacity` | `svg` |
| `fillRule` | `fill-rule` | `svg` |
| `filter` | `filter` | `svg` |
| `filterRes` | `filterRes` | `svg` |
| `filterUnits` | `filterUnits` | `svg` |
| `floodColor` | `flood-color` | `svg` |
| `floodOpacity` | `flood-opacity` | `svg` |
| `focusHighlight` | `focusHighlight` | `svg` |
| `focusable` | `focusable` | `svg` |
| `fontFamily` | `font-family` | `svg` |
| `fontSize` | `font-size` | `svg` |
| `fontSizeAdjust` | `font-size-adjust` | `svg` |
| `fontStretch` | `font-stretch` | `svg` |
| `fontStyle` | `font-style` | `svg` |
| `fontVariant` | `font-variant` | `svg` |
| `fontWeight` | `font-weight` | `svg` |
| `form` | `form` | `html` |
| `formAction` | `formaction` | `html` |
| `formEncType` | `formenctype` | `html` |
| `formMethod` | `formmethod` | `html` |
| `formNoValidate` | `formnovalidate` | `html` |
| `formTarget` | `formtarget` | `html` |
| `format` | `format` | `svg` |
| `fr` | `fr` | `svg` |
| `frame` | `frame` | `html` |
| `frameBorder` | `frameborder` | `html` |
| `from` | `from` | `svg` |
| `fx` | `fx` | `svg` |
| `fy` | `fy` | `svg` |
| `g1` | `g1` | `svg` |
| `g2` | `g2` | `svg` |
| `glyphName` | `glyph-name` | `svg` |
| `glyphOrientationHorizontal` | `glyph-orientation-horizontal` | `svg` |
| `glyphOrientationVertical` | `glyph-orientation-vertical` | `svg` |
| `glyphRef` | `glyphRef` | `svg` |
| `gradientTransform` | `gradientTransform` | `svg` |
| `gradientUnits` | `gradientUnits` | `svg` |
| `hSpace` | `hspace` | `html` |
| `handler` | `handler` | `svg` |
| `hanging` | `hanging` | `svg` |
| `hatchContentUnits` | `hatchContentUnits` | `svg` |
| `hatchUnits` | `hatchUnits` | `svg` |
| `headers` | `headers` | `html` |
| `height` | `height` | `svg`, `html` |
| `hidden` | `hidden` | `html` |
| `high` | `high` | `html` |
| `horizAdvX` | `horiz-adv-x` | `svg` |
| `horizOriginX` | `horiz-origin-x` | `svg` |
| `horizOriginY` | `horiz-origin-y` | `svg` |
| `href` | `href` | `svg`, `html` |
| `hrefLang` | `hreflang` | `svg`, `html` |
| `htmlFor` | `for` | `html` |
| `httpEquiv` | `http-equiv` | `html` |
| `id` | `id` | `svg`, `html` |
| `ideographic` | `ideographic` | `svg` |
| `imageRendering` | `image-rendering` | `svg` |
| `imageSizes` | `imagesizes` | `html` |
| `imageSrcSet` | `imagesrcset` | `html` |
| `in` | `in` | `svg` |
| `in2` | `in2` | `svg` |
| `inert` | `inert` | `html` |
| `initialVisibility` | `initialVisibility` | `svg` |
| `inputMode` | `inputmode` | `html` |
| `integrity` | `integrity` | `html` |
| `intercept` | `intercept` | `svg` |
| `is` | `is` | `html` |
| `isMap` | `ismap` | `html` |
| `itemId` | `itemid` | `html` |
| `itemProp` | `itemprop` | `html` |
| `itemRef` | `itemref` | `html` |
| `itemScope` | `itemscope` | `html` |
| `itemType` | `itemtype` | `html` |
| `k` | `k` | `svg` |
| `k1` | `k1` | `svg` |
| `k2` | `k2` | `svg` |
| `k3` | `k3` | `svg` |
| `k4` | `k4` | `svg` |
| `kernelMatrix` | `kernelMatrix` | `svg` |
| `kernelUnitLength` | `kernelUnitLength` | `svg` |
| `kerning` | `kerning` | `svg` |
| `keyPoints` | `keyPoints` | `svg` |
| `keySplines` | `keySplines` | `svg` |
| `keyTimes` | `keyTimes` | `svg` |
| `kind` | `kind` | `html` |
| `label` | `label` | `html` |
| `lang` | `lang` | `svg`, `html` |
| `language` | `language` | `html` |
| `leftMargin` | `leftmargin` | `html` |
| `lengthAdjust` | `lengthAdjust` | `svg` |
| `letterSpacing` | `letter-spacing` | `svg` |
| `lightingColor` | `lighting-color` | `svg` |
| `limitingConeAngle` | `limitingConeAngle` | `svg` |
| `link` | `link` | `html` |
| `list` | `list` | `html` |
| `loading` | `loading` | `html` |
| `local` | `local` | `svg` |
| `longDesc` | `longdesc` | `html` |
| `loop` | `loop` | `html` |
| `low` | `low` | `html` |
| `lowSrc` | `lowsrc` | `html` |
| `manifest` | `manifest` | `html` |
| `marginHeight` | `marginheight` | `html` |
| `marginWidth` | `marginwidth` | `html` |
| `markerEnd` | `marker-end` | `svg` |
| `markerHeight` | `markerHeight` | `svg` |
| `markerMid` | `marker-mid` | `svg` |
| `markerStart` | `marker-start` | `svg` |
| `markerUnits` | `markerUnits` | `svg` |
| `markerWidth` | `markerWidth` | `svg` |
| `mask` | `mask` | `svg` |
| `maskContentUnits` | `maskContentUnits` | `svg` |
| `maskType` | `mask-type` | `svg` |
| `maskUnits` | `maskUnits` | `svg` |
| `mathematical` | `mathematical` | `svg` |
| `max` | `max` | `svg`, `html` |
| `maxLength` | `maxlength` | `html` |
| `media` | `media` | `svg`, `html` |
| `mediaCharacterEncoding` | `mediaCharacterEncoding` | `svg` |
| `mediaContentEncodings` | `mediaContentEncodings` | `svg` |
| `mediaSize` | `mediaSize` | `svg` |
| `mediaTime` | `mediaTime` | `svg` |
| `method` | `method` | `svg`, `html` |
| `min` | `min` | `svg`, `html` |
| `minLength` | `minlength` | `html` |
| `mode` | `mode` | `svg` |
| `multiple` | `multiple` | `html` |
| `muted` | `muted` | `html` |
| `name` | `name` | `svg`, `html` |
| `navDown` | `nav-down` | `svg` |
| `navDownLeft` | `nav-down-left` | `svg` |
| `navDownRight` | `nav-down-right` | `svg` |
| `navLeft` | `nav-left` | `svg` |
| `navNext` | `nav-next` | `svg` |
| `navPrev` | `nav-prev` | `svg` |
| `navRight` | `nav-right` | `svg` |
| `navUp` | `nav-up` | `svg` |
| `navUpLeft` | `nav-up-left` | `svg` |
| `navUpRight` | `nav-up-right` | `svg` |
| `noHref` | `nohref` | `html` |
| `noModule` | `nomodule` | `html` |
| `noResize` | `noresize` | `html` |
| `noShade` | `noshade` | `html` |
| `noValidate` | `novalidate` | `html` |
| `noWrap` | `nowrap` | `html` |
| `nonce` | `nonce` | `html` |
| `numOctaves` | `numOctaves` | `svg` |
| `object` | `object` | `html` |
| `observer` | `observer` | `svg` |
| `offset` | `offset` | `svg` |
| `onAbort` | `onabort` | `svg`, `html` |
| `onActivate` | `onactivate` | `svg` |
| `onAfterPrint` | `onafterprint` | `svg`, `html` |
| `onAuxClick` | `onauxclick` | `html` |
| `onBeforeMatch` | `onbeforematch` | `html` |
| `onBeforePrint` | `onbeforeprint` | `svg`, `html` |
| `onBeforeToggle` | `onbeforetoggle` | `html` |
| `onBeforeUnload` | `onbeforeunload` | `html` |
| `onBegin` | `onbegin` | `svg` |
| `onBlur` | `onblur` | `html` |
| `onCanPlay` | `oncanplay` | `svg`, `html` |
| `onCanPlayThrough` | `oncanplaythrough` | `svg`, `html` |
| `onCancel` | `oncancel` | `svg`, `html` |
| `onChange` | `onchange` | `svg`, `html` |
| `onClick` | `onclick` | `svg`, `html` |
| `onClose` | `onclose` | `svg`, `html` |
| `onContextLost` | `oncontextlost` | `html` |
| `onContextMenu` | `oncontextmenu` | `html` |
| `onContextRestored` | `oncontextrestored` | `html` |
| `onCopy` | `oncopy` | `svg`, `html` |
| `onCueChange` | `oncuechange` | `svg`, `html` |
| `onCut` | `oncut` | `svg`, `html` |
| `onDblClick` | `ondblclick` | `svg`, `html` |
| `onDrag` | `ondrag` | `svg`, `html` |
| `onDragEnd` | `ondragend` | `svg`, `html` |
| `onDragEnter` | `ondragenter` | `svg`, `html` |
| `onDragExit` | `ondragexit` | `svg`, `html` |
| `onDragLeave` | `ondragleave` | `svg`, `html` |
| `onDragOver` | `ondragover` | `svg`, `html` |
| `onDragStart` | `ondragstart` | `svg`, `html` |
| `onDrop` | `ondrop` | `svg`, `html` |
| `onDurationChange` | `ondurationchange` | `svg`, `html` |
| `onEmptied` | `onemptied` | `svg`, `html` |
| `onEnd` | `onend` | `svg` |
| `onEnded` | `onended` | `svg`, `html` |
| `onError` | `onerror` | `svg`, `html` |
| `onFocus` | `onfocus` | `svg`, `html` |
| `onFocusIn` | `onfocusin` | `svg` |
| `onFocusOut` | `onfocusout` | `svg` |
| `onFormData` | `onformdata` | `html` |
| `onHashChange` | `onhashchange` | `svg`, `html` |
| `onInput` | `oninput` | `svg`, `html` |
| `onInvalid` | `oninvalid` | `svg`, `html` |
| `onKeyDown` | `onkeydown` | `svg`, `html` |
| `onKeyPress` | `onkeypress` | `svg`, `html` |
| `onKeyUp` | `onkeyup` | `svg`, `html` |
| `onLanguageChange` | `onlanguagechange` | `html` |
| `onLoad` | `onload` | `svg`, `html` |
| `onLoadEnd` | `onloadend` | `html` |
| `onLoadStart` | `onloadstart` | `svg`, `html` |
| `onLoadedData` | `onloadeddata` | `svg`, `html` |
| `onLoadedMetadata` | `onloadedmetadata` | `svg`, `html` |
| `onMessage` | `onmessage` | `svg`, `html` |
| `onMessageError` | `onmessageerror` | `html` |
| `onMouseDown` | `onmousedown` | `svg`, `html` |
| `onMouseEnter` | `onmouseenter` | `svg`, `html` |
| `onMouseLeave` | `onmouseleave` | `svg`, `html` |
| `onMouseMove` | `onmousemove` | `svg`, `html` |
| `onMouseOut` | `onmouseout` | `svg`, `html` |
| `onMouseOver` | `onmouseover` | `svg`, `html` |
| `onMouseUp` | `onmouseup` | `svg`, `html` |
| `onMouseWheel` | `onmousewheel` | `svg` |
| `onOffline` | `onoffline` | `svg`, `html` |
| `onOnline` | `ononline` | `svg`, `html` |
| `onPageHide` | `onpagehide` | `svg`, `html` |
| `onPageShow` | `onpageshow` | `svg`, `html` |
| `onPaste` | `onpaste` | `svg`, `html` |
| `onPause` | `onpause` | `svg`, `html` |
| `onPlay` | `onplay` | `svg`, `html` |
| `onPlaying` | `onplaying` | `svg`, `html` |
| `onPopState` | `onpopstate` | `svg`, `html` |
| `onProgress` | `onprogress` | `svg`, `html` |
| `onRateChange` | `onratechange` | `svg`, `html` |
| `onRejectionHandled` | `onrejectionhandled` | `html` |
| `onRepeat` | `onrepeat` | `svg` |
| `onReset` | `onreset` | `svg`, `html` |
| `onResize` | `onresize` | `svg`, `html` |
| `onScroll` | `onscroll` | `svg`, `html` |
| `onScrollEnd` | `onscrollend` | `html` |
| `onSecurityPolicyViolation` | `onsecuritypolicyviolation` | `html` |
| `onSeeked` | `onseeked` | `svg`, `html` |
| `onSeeking` | `onseeking` | `svg`, `html` |
| `onSelect` | `onselect` | `svg`, `html` |
| `onShow` | `onshow` | `svg` |
| `onSlotChange` | `onslotchange` | `html` |
| `onStalled` | `onstalled` | `svg`, `html` |
| `onStorage` | `onstorage` | `svg`, `html` |
| `onSubmit` | `onsubmit` | `svg`, `html` |
| `onSuspend` | `onsuspend` | `svg`, `html` |
| `onTimeUpdate` | `ontimeupdate` | `svg`, `html` |
| `onToggle` | `ontoggle` | `svg`, `html` |
| `onUnhandledRejection` | `onunhandledrejection` | `html` |
| `onUnload` | `onunload` | `svg`, `html` |
| `onVolumeChange` | `onvolumechange` | `svg`, `html` |
| `onWaiting` | `onwaiting` | `svg`, `html` |
| `onWheel` | `onwheel` | `html` |
| `onZoom` | `onzoom` | `svg` |
| `opacity` | `opacity` | `svg` |
| `open` | `open` | `html` |
| `operator` | `operator` | `svg` |
| `optimum` | `optimum` | `html` |
| `order` | `order` | `svg` |
| `orient` | `orient` | `svg` |
| `orientation` | `orientation` | `svg` |
| `origin` | `origin` | `svg` |
| `overflow` | `overflow` | `svg` |
| `overlay` | `overlay` | `svg` |
| `overlinePosition` | `overline-position` | `svg` |
| `overlineThickness` | `overline-thickness` | `svg` |
| `paintOrder` | `paint-order` | `svg` |
| `panose1` | `panose-1` | `svg` |
| `part` | `part` | `html` |
| `path` | `path` | `svg` |
| `pathLength` | `pathLength` | `svg` |
| `pattern` | `pattern` | `html` |
| `patternContentUnits` | `patternContentUnits` | `svg` |
| `patternTransform` | `patternTransform` | `svg` |
| `patternUnits` | `patternUnits` | `svg` |
| `phase` | `phase` | `svg` |
| `ping` | `ping` | `svg`, `html` |
| `pitch` | `pitch` | `svg` |
| `placeholder` | `placeholder` | `html` |
| `playbackOrder` | `playbackorder` | `svg` |
| `playsInline` | `playsinline` | `html` |
| `pointerEvents` | `pointer-events` | `svg` |
| `points` | `points` | `svg` |
| `pointsAtX` | `pointsAtX` | `svg` |
| `pointsAtY` | `pointsAtY` | `svg` |
| `pointsAtZ` | `pointsAtZ` | `svg` |
| `popover` | `popover` | `html` |
| `popoverTarget` | `popovertarget` | `html` |
| `popoverTargetAction` | `popovertargetaction` | `html` |
| `poster` | `poster` | `html` |
| `prefix` | `prefix` | `html` |
| `preload` | `preload` | `html` |
| `preserveAlpha` | `preserveAlpha` | `svg` |
| `preserveAspectRatio` | `preserveAspectRatio` | `svg` |
| `primitiveUnits` | `primitiveUnits` | `svg` |
| `profile` | `profile` | `html` |
| `prompt` | `prompt` | `html` |
| `propagate` | `propagate` | `svg` |
| `property` | `property` | `svg`, `html` |
| `r` | `r` | `svg` |
| `radius` | `radius` | `svg` |
| `readOnly` | `readonly` | `html` |
| `refX` | `refX` | `svg` |
| `refY` | `refY` | `svg` |
| `referrerPolicy` | `referrerpolicy` | `svg`, `html` |
| `rel` | `rel` | `svg`, `html` |
| `renderingIntent` | `rendering-intent` | `svg` |
| `repeatCount` | `repeatCount` | `svg` |
| `repeatDur` | `repeatDur` | `svg` |
| `required` | `required` | `html` |
| `requiredExtensions` | `requiredExtensions` | `svg` |
| `requiredFeatures` | `requiredFeatures` | `svg` |
| `requiredFonts` | `requiredFonts` | `svg` |
| `requiredFormats` | `requiredFormats` | `svg` |
| `resource` | `resource` | `svg` |
| `restart` | `restart` | `svg` |
| `result` | `result` | `svg` |
| `results` | `results` | `html` |
| `rev` | `rev` | `svg`, `html` |
| `reversed` | `reversed` | `html` |
| `rightMargin` | `rightmargin` | `html` |
| `role` | `role` | |
| `rotate` | `rotate` | `svg` |
| `rowSpan` | `rowspan` | `html` |
| `rows` | `rows` | `html` |
| `rules` | `rules` | `html` |
| `rx` | `rx` | `svg` |
| `ry` | `ry` | `svg` |
| `sandbox` | `sandbox` | `html` |
| `scale` | `scale` | `svg` |
| `scheme` | `scheme` | `html` |
| `scope` | `scope` | `html` |
| `scoped` | `scoped` | `html` |
| `scrolling` | `scrolling` | `html` |
| `seamless` | `seamless` | `html` |
| `security` | `security` | `html` |
| `seed` | `seed` | `svg` |
| `selected` | `selected` | `html` |
| `shadowRootClonable` | `shadowrootclonable` | `html` |
| `shadowRootCustomElementRegistry` | `shadowrootcustomelementregistry` | `html` |
| `shadowRootDelegatesFocus` | `shadowrootdelegatesfocus` | `html` |
| `shadowRootMode` | `shadowrootmode` | `html` |
| `shadowRootSerializable` | `shadowrootserializable` | `html` |
| `shape` | `shape` | `html` |
| `shapeRendering` | `shape-rendering` | `svg` |
| `side` | `side` | `svg` |
| `size` | `size` | `html` |
| `sizes` | `sizes` | `html` |
| `slope` | `slope` | `svg` |
| `slot` | `slot` | `html` |
| `snapshotTime` | `snapshotTime` | `svg` |
| `spacing` | `spacing` | `svg` |
| `span` | `span` | `html` |
| `specularConstant` | `specularConstant` | `svg` |
| `specularExponent` | `specularExponent` | `svg` |
| `spellCheck` | `spellcheck` | `html` |
| `spreadMethod` | `spreadMethod` | `svg` |
| `src` | `src` | `html` |
| `srcDoc` | `srcdoc` | `html` |
| `srcLang` | `srclang` | `html` |
| `srcSet` | `srcset` | `html` |
| `standby` | `standby` | `html` |
| `start` | `start` | `html` |
| `startOffset` | `startOffset` | `svg` |
| `stdDeviation` | `stdDeviation` | `svg` |
| `stemh` | `stemh` | `svg` |
| `stemv` | `stemv` | `svg` |
| `step` | `step` | `html` |
| `stitchTiles` | `stitchTiles` | `svg` |
| `stopColor` | `stop-color` | `svg` |
| `stopOpacity` | `stop-opacity` | `svg` |
| `strikethroughPosition` | `strikethrough-position` | `svg` |
| `strikethroughThickness` | `strikethrough-thickness` | `svg` |
| `string` | `string` | `svg` |
| `stroke` | `stroke` | `svg` |
| `strokeDashArray` | `stroke-dasharray` | `svg` |
| `strokeDashOffset` | `stroke-dashoffset` | `svg` |
| `strokeLineCap` | `stroke-linecap` | `svg` |
| `strokeLineJoin` | `stroke-linejoin` | `svg` |
| `strokeMiterLimit` | `stroke-miterlimit` | `svg` |
| `strokeOpacity` | `stroke-opacity` | `svg` |
| `strokeWidth` | `stroke-width` | `svg` |
| `style` | `style` | `svg`, `html` |
| `summary` | `summary` | `html` |
| `surfaceScale` | `surfaceScale` | `svg` |
| `syncBehavior` | `syncBehavior` | `svg` |
| `syncBehaviorDefault` | `syncBehaviorDefault` | `svg` |
| `syncMaster` | `syncMaster` | `svg` |
| `syncTolerance` | `syncTolerance` | `svg` |
| `syncToleranceDefault` | `syncToleranceDefault` | `svg` |
| `systemLanguage` | `systemLanguage` | `svg` |
| `tabIndex` | `tabindex` | `svg`, `html` |
| `tableValues` | `tableValues` | `svg` |
| `target` | `target` | `svg`, `html` |
| `targetX` | `targetX` | `svg` |
| `targetY` | `targetY` | `svg` |
| `text` | `text` | `html` |
| `textAnchor` | `text-anchor` | `svg` |
| `textDecoration` | `text-decoration` | `svg` |
| `textLength` | `textLength` | `svg` |
| `textRendering` | `text-rendering` | `svg` |
| `timelineBegin` | `timelinebegin` | `svg` |
| `title` | `title` | `svg`, `html` |
| `to` | `to` | `svg` |
| `topMargin` | `topmargin` | `html` |
| `transform` | `transform` | `svg` |
| `transformBehavior` | `transformBehavior` | `svg` |
| `transformOrigin` | `transform-origin` | `svg` |
| `translate` | `translate` | `html` |
| `type` | `type` | `svg`, `html` |
| `typeMustMatch` | `typemustmatch` | `html` |
| `typeOf` | `typeof` | `svg` |
| `u1` | `u1` | `svg` |
| `u2` | `u2` | `svg` |
| `underlinePosition` | `underline-position` | `svg` |
| `underlineThickness` | `underline-thickness` | `svg` |
| `unicode` | `unicode` | `svg` |
| `unicodeBidi` | `unicode-bidi` | `svg` |
| `unicodeRange` | `unicode-range` | `svg` |
| `unitsPerEm` | `units-per-em` | `svg` |
| `unselectable` | `unselectable` | `html` |
| `useMap` | `usemap` | `html` |
| `vAlign` | `valign` | `html` |
| `vAlphabetic` | `v-alphabetic` | `svg` |
| `vHanging` | `v-hanging` | `svg` |
| `vIdeographic` | `v-ideographic` | `svg` |
| `vLink` | `vlink` | `html` |
| `vMathematical` | `v-mathematical` | `svg` |
| `vSpace` | `vspace` | `html` |
| `value` | `value` | `html` |
| `valueType` | `valuetype` | `html` |
| `values` | `values` | `svg` |
| `vectorEffect` | `vector-effect` | `svg` |
| `version` | `version` | `svg`, `html` |
| `vertAdvY` | `vert-adv-y` | `svg` |
| `vertOriginX` | `vert-origin-x` | `svg` |
| `vertOriginY` | `vert-origin-y` | `svg` |
| `viewBox` | `viewBox` | `svg` |
| `viewTarget` | `viewTarget` | `svg` |
| `visibility` | `visibility` | `svg` |
| `width` | `width` | `svg`, `html` |
| `widths` | `widths` | `svg` |
| `wordSpacing` | `word-spacing` | `svg` |
| `wrap` | `wrap` | `html` |
| `writingMode` | `writing-mode` | `svg` |
| `writingSuggestions` | `writingsuggestions` | `html` |
| `x` | `x` | `svg` |
| `x1` | `x1` | `svg` |
| `x2` | `x2` | `svg` |
| `xChannelSelector` | `xChannelSelector` | `svg` |
| `xHeight` | `x-height` | `svg` |
| `xLinkActuate` | `xlink:actuate` | `xlink` |
| `xLinkArcRole` | `xlink:arcrole` | `xlink` |
| `xLinkHref` | `xlink:href` | `xlink` |
| `xLinkRole` | `xlink:role` | `xlink` |
| `xLinkShow` | `xlink:show` | `xlink` |
| `xLinkTitle` | `xlink:title` | `xlink` |
| `xLinkType` | `xlink:type` | `xlink` |
| `xmlBase` | `xml:base` | `xml` |
| `xmlLang` | `xml:lang` | `xml` |
| `xmlSpace` | `xml:space` | `xml` |
| `xmlns` | `xmlns` | `xmlns` |
| `xmlnsXLink` | `xmlns:xlink` | `xmlns` |
| `y` | `y` | `svg` |
| `y1` | `y1` | `svg` |
| `y2` | `y2` | `svg` |
| `yChannelSelector` | `yChannelSelector` | `svg` |
| `z` | `z` | `svg` |
| `zoomAndPan` | `zoomAndPan` | `svg` |
<!--list end-->
## Security
This package is safe.
## Related
* [`wooorm/web-namespaces`][github-web-namespaces]
— list of web namespaces
* [`wooorm/space-separated-tokens`](https://github.com/wooorm/space-separated-tokens)
— parse/stringify space separated tokens
* [`wooorm/comma-separated-tokens`](https://github.com/wooorm/comma-separated-tokens)
— parse/stringify comma separated tokens
* [`wooorm/html-tag-names`](https://github.com/wooorm/html-tag-names)
— list of HTML tag names
* [`wooorm/mathml-tag-names`](https://github.com/wooorm/mathml-tag-names)
— list of MathML tag names
* [`wooorm/svg-tag-names`](https://github.com/wooorm/svg-tag-names)
— list of SVG tag names
* [`wooorm/html-void-elements`](https://github.com/wooorm/html-void-elements)
— list of void HTML tag names
* [`wooorm/svg-element-attributes`](https://github.com/wooorm/svg-element-attributes)
— map of SVG elements to allowed attributes
* [`wooorm/html-element-attributes`](https://github.com/wooorm/html-element-attributes)
— map of HTML elements to allowed attributes
* [`wooorm/aria-attributes`](https://github.com/wooorm/aria-attributes)
— list of ARIA attributes
## Contribute
Yes please!
See [*How to Contribute to Open Source*][opensource-guide].
## License
[MIT][file-license] © [Titus Wormer][wooorm]
Derivative work based on [React][github-react-source] licensed under
[MIT][github-react-source-license] © Facebook, Inc.
[api-find]: #findschema-name
[api-hast-to-react]: #hasttoreact
[api-html]: #html
[api-info]: #info
[api-normalize]: #normalizename
[api-schema]: #schema
[api-space]: #space
[api-svg]: #svg
[badge-build-image]: https://github.com/wooorm/property-information/workflows/main/badge.svg
[badge-build-url]: https://github.com/wooorm/property-information/actions
[badge-coverage-image]: https://img.shields.io/codecov/c/github/wooorm/property-information.svg
[badge-coverage-url]: https://codecov.io/github/wooorm/property-information
[badge-downloads-image]: https://img.shields.io/npm/dm/property-information.svg
[badge-downloads-url]: https://www.npmjs.com/package/property-information
[badge-size-image]: https://img.shields.io/bundlejs/size/property-information
[badge-size-url]: https://bundlejs.com/?q=property-information
[esmsh]: https://esm.sh
[file-license]: license
[github-gist-esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[github-hast]: https://github.com/syntax-tree/hast
[github-hast-property-name]: https://github.com/syntax-tree/hast#propertyname
[github-react]: https://github.com/facebook/react
[github-react-source]: https://github.com/facebook/react/blob/4632e36/packages/react-dom-bindings/src/shared/possibleStandardNames.js
[github-react-source-license]: https://github.com/facebook/react/blob/4632e36/LICENSE
[github-web-namespaces]: https://github.com/wooorm/web-namespaces
[mozilla-dataset]: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/dataset
[npmjs-install]: https://docs.npmjs.com/cli/install
[opensource-guide]: https://opensource.guide/how-to-contribute/
[section-support]: #support
[typescript]: https://www.typescriptlang.org
[wooorm]: https://wooorm.com