@markuplint/types
Type declaration and value checker
Type declaration
API
import { check } from '@markuplint/types';
check('2020-01-01', 'DateTime');
// => { matched: true }
check('2020-02-30', 'DateTime');
// => {
// matched: false,
// reason: { type: 'out-of-range', gte: 1, lte: 29 },
// expects: [],
// partName: 'date',
// ref: 'https://html.spec.whatwg.org/multipage/text-level-semantics.html#datetime-value',
// raw: '30',
// offset: 8,
// length: 2,
// line: 1,
// column: 9,
// }
checkBase
Validates a value against a type definition object (enum, list, number, directive, or keyword type).
import { checkBase } from '@markuplint/types';
checkBase('hello', { enum: ['hello', 'world'] }, {});
// => { matched: true }
isCustomElementName
Checks whether a string is a valid custom element name according to the WHATWG specification.
import { isCustomElementName } from '@markuplint/types';
isCustomElementName()('my-element'); // => true
isCustomElementName()('div'); // => false
Type Exports
The package also exports the following types:
| Type | Description |
|---|---|
Result |
Union type of MatchedResult and UnmatchedResult |
MatchedResult |
Represents a successful match ({ matched: true }) |
UnmatchedResult |
Represents a failed match with location and reason details |
Type |
Union of all type definition shapes (enum, list, etc.) |
Defs |
Registry mapping type identifiers to their definitions |
CustomSyntaxChecker |
Factory function type for creating value checkers |
Type Identifiers
| Identifier | Use on | Spec | Supported |
|---|---|---|---|
Any |
Some attributes | ||
NoEmptyAny |
Some attributes | ||
OneLineAny |
Some attributes | ||
Zero |
Some attributes | ||
Number |
Some attributes | ||
Uint |
Some attributes | ||
JSON |
Attributes on some frameworks etc. | ||
XMLName |
svg|[attributeName] and more |
XML | |
DOMID |
The id attribute and more |
WHATWG | |
FunctionBody |
Event handler attributes | ||
Pattern |
input[pattern] |
WHATWG | |
DateTime |
time[datetime] and more |
WHATWG | |
DateStringWithOptionalTime |
del[datetime], ins[datetime] |
WHATWG | |
DateString |
input[value] when type=date |
WHATWG | |
TimeString |
input[value] when type=time |
WHATWG | |
MonthString |
input[value] when type=month |
WHATWG | |
WeekString |
input[value] when type=week |
WHATWG | |
LocalDateTimeString |
input[value] when type=datetime-local |
WHATWG | |
SimpleColor |
input[value] when type=color |
WHATWG | |
Email |
input[value] when type=email |
WHATWG | |
TabIndex |
The tabindex attribute |
WHATWG | |
BCP47 |
The lang attribute and more |
RFC | |
URL |
a[href], area[href], blockquote[cite], del[cite], ins[cite], q[cite] and more (every URL-typed attribute that does not require a non-empty value) |
WHATWG | |
NonEmptyURL |
audio[src], button[formaction], embed[src], form[action], iframe[src], img[src], input[formaction], input[type=image][src], link[href], object[data], script[src], source[src], track[src], video[poster], video[src] |
WHATWG | |
BaseURL |
base[href] |
WHATWG | |
AbsoluteURL |
The itemtype attribute (as list) |
WHATWG | |
AbsoluteURLOrEmpty |
input[type=url][value] |
WHATWG | |
HashName |
img[usemap] |
WHATWG | |
OneCodePointChar |
The accesskey attribute (as list) |
WHATWG | |
CustomElementName |
The is attribute |
WHATWG | |
BrowsingContextName |
Use NavigableTargetName instead. |
Obsoleted | |
BrowsingContextNameOrKeyword |
Use NavigableTargetNameOrKeyword instead. |
Obsoleted | |
NavigableTargetName |
iframe[name] and more |
WHATWG | |
NavigableTargetNameOrKeyword |
a[target] and more |
WHATWG | |
HTTPSchemaURL |
a[ping] (as list) and more |
WHATWG | |
MIMEType |
embed[type] and more |
WHATWG | |
MediaQueryList |
link[media], style[media], source[media], svg|style[media] |
W3C | |
HTTPEquivRefresh |
meta[content] when http-equiv=refresh |
WHATWG | |
HTTPEquivContentType |
meta[content] when http-equiv=content-type |
WHATWG | |
ContentSecurityPolicy |
meta[content] when http-equiv=content-security-policy |
W3C | |
ItemProp |
The itemprop attribute (as list) |
WHATWG | |
Srcset |
img[srcset] and more |
WHATWG | |
SourceSizeList |
img[sizes] and more |
WHATWG | |
IconSize |
link[sizes] (as list) |
WHATWG | |
AutoComplete |
input[autocomplete] and more |
WHATWG | |
Accept |
input[accept] |
WHATWG | |
SerializedPermissionsPolicy |
iframe[allow] |
W3C | |
LinkTypeForLinkElement |
link[rel] |
WHATWG microformats | |
LinkTypeForLinkElementInBody |
link[rel] in <body> |
WHATWG microformats | |
LinkTypeForAnchorAndAreaElement |
a[rel], area[rel] |
WHATWG microformats | |
LinkTypeForFormElement |
form[rel] |
WHATWG microformats | |
<css-declaration-list> |
The style attribute |
CSS | |
<class-list> |
The class attribute |
SVG | |
<svg-font-size> |
Some attributes for SVG | CSS | |
<svg-font-size-adjust> |
Some attributes for SVG | CSS | |
<'color-profile'> |
Some attributes for SVG | SVG | |
<'color-rendering'> |
Some attributes for SVG | SVG | |
<'enable-background'> |
Some attributes for SVG | SVG | |
<list-of-svg-feature-string> |
Some attributes for SVG | SVG | |
<animatable-value> |
Some attributes for SVG | SVG | |
<begin-value-list> |
Some attributes for SVG | SVG | |
<end-value-list> |
Some attributes for SVG | SVG | |
<list-of-value> |
Some attributes for SVG | SVG | |
<clock-value> |
Some attributes for SVG | SMIL | |
<color-matrix> |
Some attributes for SVG | W3C | |
<dasharray> |
Some attributes for SVG | SVG | |
<key-points> |
Some attributes for SVG | SVG | |
<key-splines> |
Some attributes for SVG | SVG | |
<key-times> |
Some attributes for SVG | SVG | |
<system-language> |
Some attributes for SVG | SVG | |
<origin> |
Some attributes for SVG | SMIL | |
<svg-path> |
Some attributes for SVG | SVG | |
<points> |
Some attributes for SVG | SVG | |
<preserve-aspect-ratio> |
Some attributes for SVG | SVG | |
<view-box> |
Some attributes for SVG | SVG | |
<rotate> |
Some attributes for SVG | SVG | |
<text-coordinate> |
Some attributes for SVG | SVG | |
<list-of-lengths> |
Some attributes for SVG | ||
<list-of-numbers> |
Some attributes for SVG | ||
<list-of-percentages> |
Some attributes for SVG | ||
<number-optional-number> |
Some attributes for SVG |
In addition, you can use types CSSTree defined.
Install
$ npm install @markuplint/types
$ yarn add @markuplint/types