CSS definitions of the web platform
This package contains CSS property definitions scraped from the latest versions of web platform specifications in webref, with fixes applied to ensure (almost) all CSS value definitions can be parsed with CSSTree.
API
The async listAll()
method resolves with an object where the keys are spec shortnames, and the values are the data for that spec. Example:
const css = require('@webref/css');
const parsedFiles = await css.listAll();
for (const [shortname, data] of Object.entries(parsedFiles)) {
}
CSS fragments that appear in the objects, in other words the contents of the properties[].value
, properties[].newValues
, atrules[].value
, atrules[].descriptors[].value
, selectors[].value
and values[].value
properties can be parsed with the CSSTree Value Definition Syntax parser. Example:
const css = require('@webref/css');
const { definitionSyntax } = require('css-tree');
const parsedFiles = await css.listAll();
for (const [shortname, data] of Object.entries(parsedFiles)) {
for (const property of data.properties) {
if (property.value) {
try {
const ast = definitionSyntax.parse(property.value);
}
catch {
}
}
}
}
Guarantees
The following guarantees are provided by this package:
- All values in CSS files can be parsed by the version of CSSTree used in
peerDependencies
in package.json
. - No duplicate definitions of CSS properties provided that CSS extracts of delta specs are not taken into account (such extracts end with
-n.json
, where n
is a level number). - CSS extracts contain a base definition of all CSS properties that get extended by other CSS property definitions (those for which
newValues
is set). - All entries in CSS files that do not extend a base definition link back to their actual definition in the spec. In other words, all entries under
properties[]
, properties[].values[]
, selectors[]
, atrules[]
and values[]
have an href
key that contains an absolute URL with fragment, except properties that that have a newValues
key, at-rules that neither have a prose
nor a value
key, and definitions of a delta spec that completely override a definition in a previous level.