update site to kdlv2
This commit is contained in:
parent
a79d0413d1
commit
3c9e89273e
34
.eleventy.js
34
.eleventy.js
|
|
@ -1,34 +0,0 @@
|
||||||
const {
|
|
||||||
Worker,
|
|
||||||
receiveMessageOnPort,
|
|
||||||
MessageChannel,
|
|
||||||
} = require("worker_threads");
|
|
||||||
|
|
||||||
// See https://giuseppegurgone.com/synchronizing-async-functions/
|
|
||||||
function wait_highlight(...args) {
|
|
||||||
const worker = new Worker("./highlight_worker.js");
|
|
||||||
const signal = new Int32Array(new SharedArrayBuffer(4));
|
|
||||||
signal[0] = 0;
|
|
||||||
try {
|
|
||||||
const subChannel = new MessageChannel();
|
|
||||||
worker.postMessage({ signal, port: subChannel.port1, args }, [
|
|
||||||
subChannel.port1,
|
|
||||||
]);
|
|
||||||
Atomics.wait(signal, 0, 0);
|
|
||||||
return receiveMessageOnPort(subChannel.port2).message.result;
|
|
||||||
} finally {
|
|
||||||
worker.unref();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = (eleventyConfig) => {
|
|
||||||
eleventyConfig.addPassthroughCopy("src/CNAME");
|
|
||||||
eleventyConfig.addMarkdownHighlighter(wait_highlight);
|
|
||||||
|
|
||||||
return {
|
|
||||||
dir: {
|
|
||||||
input: "src",
|
|
||||||
output: "docs",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { createHighlighter } from "shiki";
|
||||||
|
import path from "node:path";
|
||||||
|
import { readFile } from "node:fs/promises";
|
||||||
|
|
||||||
|
export default function (eleventyConfig) {
|
||||||
|
eleventyConfig.addPassthroughCopy("src/CNAME");
|
||||||
|
eleventyConfig.addMarkdownHighlighter(shikiHighlight);
|
||||||
|
|
||||||
|
return {
|
||||||
|
dir: {
|
||||||
|
input: "src",
|
||||||
|
output: "docs",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const kdlGrammar = JSON.parse(await readFile(path.join(process.cwd(), "kdl.tmLanguage.json"), "utf8"));
|
||||||
|
|
||||||
|
const highlighter = await createHighlighter({
|
||||||
|
themes: ["nord"],
|
||||||
|
langs: [
|
||||||
|
{
|
||||||
|
name: "kdl",
|
||||||
|
scopeName: "source.kdl",
|
||||||
|
...kdlGrammar
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
function shikiHighlight(code, lang) {
|
||||||
|
return highlighter.codeToHtml(code, { lang, theme: "nord" });
|
||||||
|
}
|
||||||
|
|
@ -13,7 +13,10 @@ async function shiki_highlight(code, lang) {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
return highlighter.codeToHtml(code, lang);
|
console.log("highlighting...");
|
||||||
|
const ret = highlighter.codeToHtml(code, lang);
|
||||||
|
console.log("highlighted!");
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
parentPort.addListener("message", async ({ signal, port, args }) => {
|
parentPort.addListener("message", async ({ signal, port, args }) => {
|
||||||
|
|
@ -21,8 +24,11 @@ parentPort.addListener("message", async ({ signal, port, args }) => {
|
||||||
const result = await shiki_highlight(...args);
|
const result = await shiki_highlight(...args);
|
||||||
|
|
||||||
// Post the result to the main thread before unlocking "signal"
|
// Post the result to the main thread before unlocking "signal"
|
||||||
|
console.log("posting result...");
|
||||||
port.postMessage({ result });
|
port.postMessage({ result });
|
||||||
|
console.log("posted result");
|
||||||
port.close();
|
port.close();
|
||||||
|
console.log("port closed");
|
||||||
|
|
||||||
// Change the value of signal[0] to 1
|
// Change the value of signal[0] to 1
|
||||||
Atomics.store(signal, 0, 1);
|
Atomics.store(signal, 0, 1);
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
|
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
|
||||||
"comment": "Some of these patterns are taken straight from rust-analyzer: https://github.com/rust-lang/vscode-rust/blob/master/rust-analyzer/editors/code/rust.tmGrammar.json. Some was also taken from https://github.com/arm32x/vscode-sdlang/blob/master/syntaxes/sdlang.tmLanguage.json",
|
"comment": "Some of these patterns are taken straight from rust-analyzer: https://github.com/rust-lang/vscode-rust/blob/master/rust-analyzer/editors/code/rust.tmGrammar.json. Some was also taken from https://github.com/arm32x/vscode-sdlang/blob/master/syntaxes/sdlang.tmLanguage.json",
|
||||||
"name": "KDL",
|
"name": "kdl",
|
||||||
"patterns": [
|
"patterns": [
|
||||||
|
{
|
||||||
|
"include": "#forbidden_ident"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"include": "#null"
|
"include": "#null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#boolean"
|
"include": "#boolean"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"include": "#float_keyword"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"include": "#float_fraction"
|
"include": "#float_fraction"
|
||||||
},
|
},
|
||||||
|
|
@ -28,10 +34,13 @@
|
||||||
"include": "#binary"
|
"include": "#binary"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#raw-strings"
|
"include": "#raw-string"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#strings"
|
"include": "#string_multi_line"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include": "#string_single_line"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#block_comment"
|
"include": "#block_comment"
|
||||||
|
|
@ -45,6 +54,9 @@
|
||||||
{
|
{
|
||||||
"include": "#slashdash_comment"
|
"include": "#slashdash_comment"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"include": "#slashdash_node_with_children_comment"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"include": "#slashdash_node_comment"
|
"include": "#slashdash_node_comment"
|
||||||
},
|
},
|
||||||
|
|
@ -56,6 +68,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#node_name"
|
"include": "#node_name"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include": "#ident_string"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
@ -77,54 +92,77 @@
|
||||||
"hexadecimal": {
|
"hexadecimal": {
|
||||||
"comment": "Integer literal (hexadecimal)",
|
"comment": "Integer literal (hexadecimal)",
|
||||||
"name": "constant.numeric.integer.hexadecimal.rust",
|
"name": "constant.numeric.integer.hexadecimal.rust",
|
||||||
"match": "\\b0x[a-fA-F0-9_]+\\b"
|
"match": "\\b0x[a-fA-F0-9][a-fA-F0-9_]*\\b"
|
||||||
},
|
},
|
||||||
"octal": {
|
"octal": {
|
||||||
"comment": "Integer literal (octal)",
|
"comment": "Integer literal (octal)",
|
||||||
"name": "constant.numeric.integer.octal.rust",
|
"name": "constant.numeric.integer.octal.rust",
|
||||||
"match": "\\b0o[0-7_]+\\b"
|
"match": "\\b0o[0-7][0-7_]*\\b"
|
||||||
},
|
},
|
||||||
"binary": {
|
"binary": {
|
||||||
"comment": "Integer literal (binary)",
|
"comment": "Integer literal (binary)",
|
||||||
"name": "constant.numeric.integer.binary.rust",
|
"name": "constant.numeric.integer.binary.rust",
|
||||||
"match": "\\b0b[01_]+\\b"
|
"match": "\\b0b[01][01_]*\\b"
|
||||||
|
},
|
||||||
|
"forbidden_ident": {
|
||||||
|
"name": "invalid.illegal.kdl.bad-ident",
|
||||||
|
"match": "(?<!#)(?:true|false|null|nan|[-]?inf)"
|
||||||
},
|
},
|
||||||
"node_name": {
|
"node_name": {
|
||||||
"name": "entity.name.tag",
|
"name": "entity.name.tag",
|
||||||
"match": "(?![\\\\{\\}<>;\\[\\]\\=,])[\\w\\-_~!@#\\$%^&*+|/.\\(\\)]+"
|
"match": "((?<={|;)|^)\\s*(?![/\\\\{\\}#;\\[\\]\\=])[<>:\\w\\-_~,'`!\\?@\\$%^&*+|.\\(\\)]+\\d*[<>:\\w\\-_~,'`!\\?@\\$%^&*+|.\\(\\)]*"
|
||||||
},
|
},
|
||||||
"attribute": {
|
"attribute": {
|
||||||
"name": "entity.other.attribute-name.kdl",
|
"name": "entity.other.attribute-name.kdl",
|
||||||
"match": "(?![\\\\{\\}<>;\\[\\]\\=,])[\\w\\-_~!@#\\$%^&*+|/.]+(=)",
|
"match": "(?![/\\\\{\\}#;\\[\\]\\=])[<>:\\w\\-_~,'`!\\?@\\$%^&*+|.\\(\\)]+\\d*[<>:\\w\\-_~,'`!\\?@\\$%^&*+|.\\(\\)]*(=)",
|
||||||
"captures": {
|
"captures": {
|
||||||
"1": {
|
"1": {
|
||||||
"name": "punctuation.separator.key-value.kdl"
|
"name": "punctuation.separator.key-value.kdl"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ident_string": {
|
||||||
|
"name": "string.unquoted",
|
||||||
|
"match": "(?![/\\\\{\\}#;\\[\\]\\=])[<>:\\w\\-_~,'`!\\?@\\$%^&*+|.\\(\\)]+\\d*[<>:\\w\\-_~,'`!\\?@\\$%^&*+|.\\(\\)]*"
|
||||||
|
},
|
||||||
|
"float_keyword": {
|
||||||
|
"name": "constant.language.other.kdl",
|
||||||
|
"match": "#nan|#inf|#-inf"
|
||||||
|
},
|
||||||
"null": {
|
"null": {
|
||||||
"name": "constant.language.null.kdl",
|
"name": "constant.language.null.kdl",
|
||||||
"match": "\\bnull\\b"
|
"match": "#null"
|
||||||
},
|
},
|
||||||
"boolean": {
|
"boolean": {
|
||||||
"name": "constant.language.boolean.kdl",
|
"name": "constant.language.boolean.kdl",
|
||||||
"match": "\\b(true|false)\\b"
|
"match": "#true|#false"
|
||||||
},
|
},
|
||||||
"strings": {
|
"string_single_line": {
|
||||||
"name": "string.quoted.double.kdl",
|
"name": "string.quoted.double.kdl",
|
||||||
"begin": "\"",
|
"begin": "\"",
|
||||||
"end": "\"",
|
"end": "\"",
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "constant.character.escape.kdl",
|
"name": "constant.character.escape.kdl",
|
||||||
"match": "\\\\(:?[nrtbf\\\\\"]|u\\{[a-fA-F0-9]{1,6}\\})"
|
"match": "\\\\(:?[nrtbfs\\\\\"]|u\\{[a-fA-F0-9]{1,6}\\})"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"raw-strings": {
|
"string_multi_line": {
|
||||||
"name": "string.quoted.double.raw.kdl",
|
"name": "string.quoted.triple.kdl",
|
||||||
"begin": "b?r(#*)\"",
|
"begin": "\"\"\"",
|
||||||
"end": "\"\\1"
|
"end": "\"\"\"",
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"name": "constant.character.escape.kdl",
|
||||||
|
"match": "\\\\(:?[nrtbfs\\\\\"]|u\\{[a-fA-F0-9]{1,6}\\})"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"raw-string": {
|
||||||
|
"name": "string.quoted.other.raw.kdl",
|
||||||
|
"begin": "(#+)(\"{3,1})",
|
||||||
|
"end": "\\2\\1"
|
||||||
},
|
},
|
||||||
"block_doc_comment": {
|
"block_doc_comment": {
|
||||||
"comment": "Block documentation comment",
|
"comment": "Block documentation comment",
|
||||||
|
|
@ -156,26 +194,32 @@
|
||||||
},
|
},
|
||||||
"line_comment": {
|
"line_comment": {
|
||||||
"comment": "Single-line comment",
|
"comment": "Single-line comment",
|
||||||
"name": "comment.line.double-slash.rust",
|
"name": "comment.line.double-slash.kdl",
|
||||||
"begin": "//",
|
"begin": "//",
|
||||||
"end": "$"
|
"end": "$"
|
||||||
},
|
},
|
||||||
"slashdash_comment": {
|
"slashdash_comment": {
|
||||||
"name": "comment.line.double-slash",
|
"name": "comment.block.slashdash.kdl",
|
||||||
"comment": "Slashdash inline comment",
|
"comment": "Slashdash inline comment",
|
||||||
"begin": "(?<!^)/-",
|
"begin": "(?<!^)/-",
|
||||||
"end": "\\s"
|
"end": "\\s"
|
||||||
},
|
},
|
||||||
"slashdash_node_comment": {
|
"slashdash_node_comment": {
|
||||||
"name": "comment.block",
|
"name": "comment.block.slashdash.kdl",
|
||||||
"comment": "Slashdash node comment",
|
"comment": "Slashdash node comment",
|
||||||
"begin": "(?<=^)/-",
|
"begin": "(?<=^)/-",
|
||||||
"end": "}"
|
"end": "(?:;|(?<!\\\\)$)"
|
||||||
|
},
|
||||||
|
"slashdash_node_with_children_comment": {
|
||||||
|
"name": "comment.block.slashdash.kdl",
|
||||||
|
"comment": "Slashdash node comment",
|
||||||
|
"begin": "(?<=^)/-[^{]+{",
|
||||||
|
"end": "\\}"
|
||||||
},
|
},
|
||||||
"slashdash_block_comment": {
|
"slashdash_block_comment": {
|
||||||
"name": "comment.block",
|
"name": "comment.block.slashdash.kdl",
|
||||||
"comment": "Slashdash block comment",
|
"comment": "Slashdash block comment",
|
||||||
"begin": "/-{",
|
"begin": "/-(?:\\s*){",
|
||||||
"end": "}"
|
"end": "}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
"postcss": "^8.2.1",
|
"postcss": "^8.2.1",
|
||||||
"postcss-cli": "^8.3.1",
|
"postcss-cli": "^8.3.1",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^2.2.1",
|
||||||
"shiki": "^0.2.7",
|
"shiki": "^1.24.2",
|
||||||
"tailwindcss": "^2.0.2"
|
"tailwindcss": "^2.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -291,6 +291,57 @@
|
||||||
"node": ">=14"
|
"node": ">=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@shikijs/core": {
|
||||||
|
"version": "1.24.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.2.tgz",
|
||||||
|
"integrity": "sha512-BpbNUSKIwbKrRRA+BQj0BEWSw+8kOPKDJevWeSE/xIqGX7K0xrCZQ9kK0nnEQyrzsUoka1l81ZtJ2mGaCA32HQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@shikijs/engine-javascript": "1.24.2",
|
||||||
|
"@shikijs/engine-oniguruma": "1.24.2",
|
||||||
|
"@shikijs/types": "1.24.2",
|
||||||
|
"@shikijs/vscode-textmate": "^9.3.0",
|
||||||
|
"@types/hast": "^3.0.4",
|
||||||
|
"hast-util-to-html": "^9.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@shikijs/engine-javascript": {
|
||||||
|
"version": "1.24.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.2.tgz",
|
||||||
|
"integrity": "sha512-EqsmYBJdLEwEiO4H+oExz34a5GhhnVp+jH9Q/XjPjmBPc6TE/x4/gD0X3i0EbkKKNqXYHHJTJUpOLRQNkEzS9Q==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@shikijs/types": "1.24.2",
|
||||||
|
"@shikijs/vscode-textmate": "^9.3.0",
|
||||||
|
"oniguruma-to-es": "0.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@shikijs/engine-oniguruma": {
|
||||||
|
"version": "1.24.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.2.tgz",
|
||||||
|
"integrity": "sha512-ZN6k//aDNWRJs1uKB12pturKHh7GejKugowOFGAuG7TxDRLod1Bd5JhpOikOiFqPmKjKEPtEA6mRCf7q3ulDyQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@shikijs/types": "1.24.2",
|
||||||
|
"@shikijs/vscode-textmate": "^9.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@shikijs/types": {
|
||||||
|
"version": "1.24.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.2.tgz",
|
||||||
|
"integrity": "sha512-bdeWZiDtajGLG9BudI0AHet0b6e7FbR0EsE4jpGaI0YwHm/XJunI9+3uZnzFtX65gsyJ6ngCIWUfA4NWRPnBkQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@shikijs/vscode-textmate": "^9.3.0",
|
||||||
|
"@types/hast": "^3.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@shikijs/vscode-textmate": {
|
||||||
|
"version": "9.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz",
|
||||||
|
"integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/@sindresorhus/slugify": {
|
"node_modules/@sindresorhus/slugify": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz",
|
||||||
|
|
@ -331,12 +382,42 @@
|
||||||
"tailwindcss": "2.0.0-alpha.24 || ^2.0.0"
|
"tailwindcss": "2.0.0-alpha.24 || ^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/hast": {
|
||||||
|
"version": "3.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
|
||||||
|
"integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/unist": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/mdast": {
|
||||||
|
"version": "4.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
|
||||||
|
"integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/unist": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/parse-json": {
|
"node_modules/@types/parse-json": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
|
||||||
"integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
|
"integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/unist": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/@ungap/structured-clone": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz",
|
||||||
|
"integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/a-sync-waterfall": {
|
"node_modules/a-sync-waterfall": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz",
|
||||||
|
|
@ -731,6 +812,16 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"node_modules/ccount": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/chalk": {
|
"node_modules/chalk": {
|
||||||
"version": "4.1.2",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||||
|
|
@ -747,6 +838,26 @@
|
||||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/character-entities-html4": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/character-entities-legacy": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/chardet": {
|
"node_modules/chardet": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/chardet/-/chardet-2.0.0.tgz",
|
||||||
|
|
@ -887,6 +998,16 @@
|
||||||
"simple-swizzle": "^0.2.2"
|
"simple-swizzle": "^0.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/comma-separated-tokens": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/commander": {
|
"node_modules/commander": {
|
||||||
"version": "10.0.1",
|
"version": "10.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
|
||||||
|
|
@ -1037,6 +1158,15 @@
|
||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/dequal": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/destroy": {
|
"node_modules/destroy": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
|
||||||
|
|
@ -1076,6 +1206,19 @@
|
||||||
"node": ">= 0.8.0"
|
"node": ">= 0.8.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/devlop": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"dequal": "^2.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/didyoumean": {
|
"node_modules/didyoumean": {
|
||||||
"version": "1.2.2",
|
"version": "1.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
|
||||||
|
|
@ -1202,6 +1345,12 @@
|
||||||
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
|
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/emoji-regex-xs": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/encodeurl": {
|
"node_modules/encodeurl": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
|
||||||
|
|
@ -1753,6 +1902,42 @@
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/hast-util-to-html": {
|
||||||
|
"version": "9.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz",
|
||||||
|
"integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/hast": "^3.0.0",
|
||||||
|
"@types/unist": "^3.0.0",
|
||||||
|
"ccount": "^2.0.0",
|
||||||
|
"comma-separated-tokens": "^2.0.0",
|
||||||
|
"hast-util-whitespace": "^3.0.0",
|
||||||
|
"html-void-elements": "^3.0.0",
|
||||||
|
"mdast-util-to-hast": "^13.0.0",
|
||||||
|
"property-information": "^6.0.0",
|
||||||
|
"space-separated-tokens": "^2.0.0",
|
||||||
|
"stringify-entities": "^4.0.0",
|
||||||
|
"zwitch": "^2.0.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/hast-util-whitespace": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/hast": "^3.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/hex-color-regex": {
|
"node_modules/hex-color-regex": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
|
||||||
|
|
@ -1783,6 +1968,16 @@
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/html-void-elements": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/htmlparser2": {
|
"node_modules/htmlparser2": {
|
||||||
"version": "7.2.0",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz",
|
||||||
|
|
@ -2070,18 +2265,6 @@
|
||||||
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
|
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/json5": {
|
|
||||||
"version": "2.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
|
||||||
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
|
||||||
"dev": true,
|
|
||||||
"bin": {
|
|
||||||
"json5": "lib/cli.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/jsonfile": {
|
"node_modules/jsonfile": {
|
||||||
"version": "6.1.0",
|
"version": "6.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||||
|
|
@ -2251,6 +2434,27 @@
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/mdast-util-to-hast": {
|
||||||
|
"version": "13.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
|
||||||
|
"integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/hast": "^3.0.0",
|
||||||
|
"@types/mdast": "^4.0.0",
|
||||||
|
"@ungap/structured-clone": "^1.0.0",
|
||||||
|
"devlop": "^1.0.0",
|
||||||
|
"micromark-util-sanitize-uri": "^2.0.0",
|
||||||
|
"trim-lines": "^3.0.0",
|
||||||
|
"unist-util-position": "^5.0.0",
|
||||||
|
"unist-util-visit": "^5.0.0",
|
||||||
|
"vfile": "^6.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/mdurl": {
|
"node_modules/mdurl": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
|
||||||
|
|
@ -2266,6 +2470,95 @@
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/micromark-util-character": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "GitHub Sponsors",
|
||||||
|
"url": "https://github.com/sponsors/unifiedjs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "OpenCollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"micromark-util-symbol": "^2.0.0",
|
||||||
|
"micromark-util-types": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/micromark-util-encode": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "GitHub Sponsors",
|
||||||
|
"url": "https://github.com/sponsors/unifiedjs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "OpenCollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/micromark-util-sanitize-uri": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "GitHub Sponsors",
|
||||||
|
"url": "https://github.com/sponsors/unifiedjs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "OpenCollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"micromark-util-character": "^2.0.0",
|
||||||
|
"micromark-util-encode": "^2.0.0",
|
||||||
|
"micromark-util-symbol": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/micromark-util-symbol": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "GitHub Sponsors",
|
||||||
|
"url": "https://github.com/sponsors/unifiedjs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "OpenCollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/micromark-util-types": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "GitHub Sponsors",
|
||||||
|
"url": "https://github.com/sponsors/unifiedjs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "OpenCollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"node_modules/micromatch": {
|
"node_modules/micromatch": {
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
||||||
|
|
@ -2515,22 +2808,15 @@
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/onigasm": {
|
"node_modules/oniguruma-to-es": {
|
||||||
"version": "2.2.5",
|
"version": "0.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.7.0.tgz",
|
||||||
"integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==",
|
"integrity": "sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lru-cache": "^5.1.1"
|
"emoji-regex-xs": "^1.0.0",
|
||||||
}
|
"regex": "^5.0.2",
|
||||||
},
|
"regex-recursion": "^4.3.0"
|
||||||
"node_modules/onigasm/node_modules/lru-cache": {
|
|
||||||
"version": "5.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
|
||||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"yallist": "^3.0.2"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/package-json-from-dist": {
|
"node_modules/package-json-from-dist": {
|
||||||
|
|
@ -2936,6 +3222,16 @@
|
||||||
"asap": "~2.0.3"
|
"asap": "~2.0.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/property-information": {
|
||||||
|
"version": "6.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
|
||||||
|
"integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/prr": {
|
"node_modules/prr": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
|
||||||
|
|
@ -3074,6 +3370,30 @@
|
||||||
"integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
|
"integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/regex": {
|
||||||
|
"version": "5.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/regex/-/regex-5.0.2.tgz",
|
||||||
|
"integrity": "sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"regex-utilities": "^2.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/regex-recursion": {
|
||||||
|
"version": "4.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-4.3.0.tgz",
|
||||||
|
"integrity": "sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"regex-utilities": "^2.3.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/regex-utilities": {
|
||||||
|
"version": "2.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
|
||||||
|
"integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/require-directory": {
|
"node_modules/require-directory": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||||
|
|
@ -3296,34 +3616,17 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/shiki": {
|
"node_modules/shiki": {
|
||||||
"version": "0.2.7",
|
"version": "1.24.2",
|
||||||
"resolved": "https://registry.npmjs.org/shiki/-/shiki-0.2.7.tgz",
|
"resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.2.tgz",
|
||||||
"integrity": "sha512-bwVc7cdtYYHEO9O+XJ8aNOskKRfaQd5Y4ovLRfbQkmiLSUaR+bdlssbZUUhbQ0JAFMYcTcJ5tjG5KtnufttDHQ==",
|
"integrity": "sha512-TR1fi6mkRrzW+SKT5G6uKuc32Dj2EEa7Kj0k8kGqiBINb+C1TiflVOiT9ta6GqOJtC4fraxO5SLUaKBcSY38Fg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"onigasm": "^2.2.5",
|
"@shikijs/core": "1.24.2",
|
||||||
"shiki-languages": "^0.2.7",
|
"@shikijs/engine-javascript": "1.24.2",
|
||||||
"shiki-themes": "^0.2.7",
|
"@shikijs/engine-oniguruma": "1.24.2",
|
||||||
"vscode-textmate": "^5.2.0"
|
"@shikijs/types": "1.24.2",
|
||||||
}
|
"@shikijs/vscode-textmate": "^9.3.0",
|
||||||
},
|
"@types/hast": "^3.0.4"
|
||||||
"node_modules/shiki-languages": {
|
|
||||||
"version": "0.2.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/shiki-languages/-/shiki-languages-0.2.7.tgz",
|
|
||||||
"integrity": "sha512-REmakh7pn2jCn9GDMRSK36oDgqhh+rSvJPo77sdWTOmk44C5b0XlYPwJZcFOMJWUZJE0c7FCbKclw4FLwUKLRw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"vscode-textmate": "^5.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/shiki-themes": {
|
|
||||||
"version": "0.2.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/shiki-themes/-/shiki-themes-0.2.7.tgz",
|
|
||||||
"integrity": "sha512-ZMmboDYw5+SEpugM8KGUq3tkZ0vXg+k60XX6NngDK7gc1Sv6YLUlanpvG3evm57uKJvfXsky/S5MzSOTtYKLjA==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"json5": "^2.1.0",
|
|
||||||
"vscode-textmate": "^5.2.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/signal-exit": {
|
"node_modules/signal-exit": {
|
||||||
|
|
@ -3380,6 +3683,16 @@
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/space-separated-tokens": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
|
||||||
|
"integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/sprintf-js": {
|
"node_modules/sprintf-js": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
||||||
|
|
@ -3466,6 +3779,20 @@
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/stringify-entities": {
|
||||||
|
"version": "4.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
|
||||||
|
"integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"character-entities-html4": "^2.0.0",
|
||||||
|
"character-entities-legacy": "^3.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/strip-ansi": {
|
"node_modules/strip-ansi": {
|
||||||
"version": "7.1.0",
|
"version": "7.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
|
||||||
|
|
@ -3649,12 +3976,90 @@
|
||||||
"node": ">=0.6"
|
"node": ">=0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/trim-lines": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/uc.micro": {
|
"node_modules/uc.micro": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
|
||||||
"integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
|
"integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/unist-util-is": {
|
||||||
|
"version": "6.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
|
||||||
|
"integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/unist": "^3.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/unist-util-position": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/unist": "^3.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/unist-util-stringify-position": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/unist": "^3.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/unist-util-visit": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/unist": "^3.0.0",
|
||||||
|
"unist-util-is": "^6.0.0",
|
||||||
|
"unist-util-visit-parents": "^6.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/unist-util-visit-parents": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/unist": "^3.0.0",
|
||||||
|
"unist-util-is": "^6.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/universalify": {
|
"node_modules/universalify": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
|
||||||
|
|
@ -3715,11 +4120,33 @@
|
||||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/vscode-textmate": {
|
"node_modules/vfile": {
|
||||||
"version": "5.5.0",
|
"version": "6.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
|
||||||
"integrity": "sha512-jToQkPGMNKn0eyKyitYeINJF0NoD240aYyKPIWJv5W2jfPt++jIRg0OSergubtGhbw6SoefkvBYEpX7TsfoSUQ==",
|
"integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/unist": "^3.0.0",
|
||||||
|
"vfile-message": "^4.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/vfile-message": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/unist": "^3.0.0",
|
||||||
|
"unist-util-stringify-position": "^4.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/unified"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/which": {
|
"node_modules/which": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
|
|
@ -3869,12 +4296,6 @@
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yallist": {
|
|
||||||
"version": "3.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
|
||||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/yaml": {
|
"node_modules/yaml": {
|
||||||
"version": "1.10.2",
|
"version": "1.10.2",
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
||||||
|
|
@ -3951,6 +4372,16 @@
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_modules/zwitch": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": {
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
"clean": "rm -rf docs && mkdir -p docs/styles",
|
"clean": "rm -rf docs && mkdir -p docs/styles",
|
||||||
"static": "cp -r static/* docs",
|
"static": "cp -r static/* docs",
|
||||||
"build": "npm run clean && npm run static && postcss src/styles/global.css > docs/styles/global.css",
|
"build": "npm run clean && npm run static && postcss src/styles/global.css > docs/styles/global.css",
|
||||||
"dev": "npm run build && eleventy --serve",
|
"dev": "npm run build && eleventy --config=.eleventy.mjs --serve",
|
||||||
"prod": "NODE_ENV=production npm run build && eleventy",
|
"prod": "NODE_ENV=production npm run build && eleventy --config=.eleventy.mjs",
|
||||||
"format": "prettier --write src ./*.js ./.*.js"
|
"format": "prettier --write src ./*.js ./.*.js"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
"postcss": "^8.2.1",
|
"postcss": "^8.2.1",
|
||||||
"postcss-cli": "^8.3.1",
|
"postcss-cli": "^8.3.1",
|
||||||
"prettier": "^2.2.1",
|
"prettier": "^2.2.1",
|
||||||
"shiki": "^0.2.7",
|
"shiki": "^1.24.2",
|
||||||
"tailwindcss": "^2.0.2"
|
"tailwindcss": "^2.0.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
<section class="kdl-section" id="compatibility-with-json-and-xml">
|
|
||||||
|
|
||||||
## Compatibility with JSON and XML
|
|
||||||
|
|
||||||
There are two specifications for writing KDL that can be losslessly translated
|
|
||||||
between it and JSON or XML. These specifications define a stricter _subset_ of
|
|
||||||
KDL that, even if not entirely idiomatic, is still valid and fits into the
|
|
||||||
data models of the other two languages:
|
|
||||||
|
|
||||||
* [JSON in KDL](https://github.com/kdl-org/kdl/blob/main/JSON-IN-KDL.md)
|
|
||||||
* [XML in KDL](https://github.com/kdl-org/kdl/blob/main/XML-IN-KDL.md)
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
<section class="kdl-section" id="description">
|
|
||||||
|
|
||||||
KDL is a small, pleasing document language with xml-like semantics that looks
|
|
||||||
like you're invoking a bunch of CLI commands! It's meant to be used both as a
|
|
||||||
serialization format and a configuration language, much like JSON, YAML, or
|
|
||||||
XML. It looks like this:
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
package {
|
|
||||||
name "my-pkg"
|
|
||||||
version "1.2.3"
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
// Nodes can have standalone values as well as
|
|
||||||
// key/value pairs.
|
|
||||||
lodash "^3.2.1" optional=true alias="underscore"
|
|
||||||
}
|
|
||||||
|
|
||||||
scripts {
|
|
||||||
// "Raw" and multi-line strings are supported.
|
|
||||||
build r#"
|
|
||||||
echo "foo"
|
|
||||||
node -c "console.log('hello, world!');"
|
|
||||||
echo "foo" > some-file.txt
|
|
||||||
"#
|
|
||||||
}
|
|
||||||
|
|
||||||
// `\` breaks up a single node across multiple lines.
|
|
||||||
the-matrix 1 2 3 \
|
|
||||||
4 5 6 \
|
|
||||||
7 8 9
|
|
||||||
|
|
||||||
// "Slashdash" comments operate at the node level,
|
|
||||||
// with just `/-`.
|
|
||||||
/-this-is-commented {
|
|
||||||
this "entire" "node" {
|
|
||||||
"is" "gone"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
There's a living [specification](https://github.com/kdl-org/kdl/blob/main/SPEC.md), as well as various
|
|
||||||
[implementations](#implementations). You can also check out the [FAQ](#faq) to
|
|
||||||
answer all your burning questions!
|
|
||||||
|
|
||||||
In addition to a spec for KDL itself, there are also standard specs for [a KDL
|
|
||||||
Query Language](https://github.com/kdl-org/kdl/blob/main/QUERY-SPEC.md) based
|
|
||||||
on CSS selectors, and [a KDL Schema
|
|
||||||
Language](https://github.com/kdl-org/kdl/blob/main/SCHEMA-SPEC.md) loosely
|
|
||||||
based on JSON Schema.
|
|
||||||
|
|
||||||
The language is based on [SDLang](https://sdlang.org), with a number of
|
|
||||||
modifications and clarifications on its syntax and behavior.
|
|
||||||
|
|
||||||
The current version of the KDL spec is `1.0.0`.
|
|
||||||
|
|
||||||
[Play with it in your browser!](https://kdl-play.danini.dev/)
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
<section class="kdl-section" id="design-and-discussion">
|
|
||||||
|
|
||||||
## Design and Discussion
|
|
||||||
|
|
||||||
KDL is still extremely new, and discussion about the format should happen over
|
|
||||||
on the [discussions](https://github.com/kdl-org/kdl/discussions) page in the
|
|
||||||
Github repo. Feel free to jump in and give us your 2 cents!
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<section class="kdl-section" id="design-principles">
|
|
||||||
|
|
||||||
## Design Principles
|
|
||||||
|
|
||||||
1. Maintainability
|
|
||||||
1. Flexibility
|
|
||||||
1. Cognitive simplicity and Learnability
|
|
||||||
1. Ease of de/serialization
|
|
||||||
1. Ease of implementation
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
@ -1,103 +0,0 @@
|
||||||
<section class="kdl-section" id="faq">
|
|
||||||
|
|
||||||
## FAQ
|
|
||||||
|
|
||||||
#### How do you pronounce KDL?
|
|
||||||
|
|
||||||
Same as "cuddle".
|
|
||||||
|
|
||||||
#### Why yet another document language?
|
|
||||||
|
|
||||||
Because nothing out there felt quite right. The closest one I found was
|
|
||||||
SDLang, but that had some design choices I disagreed with.
|
|
||||||
|
|
||||||
#### Ok, then, why not SDLang?
|
|
||||||
|
|
||||||
SDLang is designed for use cases that are not interesting to me, but are very
|
|
||||||
relevant to the D-lang community. KDL is very similar in many ways, but is
|
|
||||||
different in the following ways:
|
|
||||||
|
|
||||||
* The grammar and expected semantics are [well-defined and specified](https://github.com/kdl-org/kdl/blob/main/SPEC.md).
|
|
||||||
* There is only one "number" type. KDL does not prescribe representations.
|
|
||||||
* Slashdash (`/-`) comments are great and useful!
|
|
||||||
* I am not interested in having first-class date types, and SDLang's are very
|
|
||||||
non-standard.
|
|
||||||
* Values and properties can be interspersed with each other, rather than one
|
|
||||||
having to follow the other.
|
|
||||||
* KDL does not have a first-class binary data type. Just use strings with base64.
|
|
||||||
* All strings in KDL are multi-line, and raw strings are written with
|
|
||||||
Rust-style syntax (`r"foo"`), instead of backticks.
|
|
||||||
* KDL identifiers can use UTF-8 and are much more lax about symbols than SDLang.
|
|
||||||
* KDL does not support "anonymous" nodes.
|
|
||||||
* Instead, KDL supports arbitrary identifiers for node names and attribute
|
|
||||||
names, meaning you can use arbitrary strings for those: `"123" "value"=1` is
|
|
||||||
a valid node, for example. This makes it easier to use KDL for
|
|
||||||
representing arbitrary key/value pairs.
|
|
||||||
|
|
||||||
#### Have you seen that one XKCD comic about standards?
|
|
||||||
|
|
||||||
Yes. I have. Please stop linking me to it.
|
|
||||||
|
|
||||||
#### What about YAML?
|
|
||||||
|
|
||||||
YAML is a great, widespread language. Unlike KDL, which is node-based (like
|
|
||||||
XML or HTML), it's based on map and array data structures, which can provide
|
|
||||||
an easier serialization experience in some cases.
|
|
||||||
|
|
||||||
At the same time, YAML can be ambiguous about what types the data written into
|
|
||||||
it is. There's also a persistent issue where very large YAML files become
|
|
||||||
unmanageable, especially due to the significant indentation feature.
|
|
||||||
|
|
||||||
KDL is designed to avoid these particular pitfalls by always being explicit
|
|
||||||
about types, and having clearly-delimited scope (and the ability to
|
|
||||||
auto-indent/auto-format). Syntax errors are easier to catch, and large files
|
|
||||||
are (hopefully!) much more manageable.
|
|
||||||
|
|
||||||
#### What about JSON?
|
|
||||||
|
|
||||||
JSON is a great serialization language, but it can be very difficult to use as
|
|
||||||
a human configuration language. This is largely due to its very specific, very
|
|
||||||
strict syntax, as well as its lack of support for comments.
|
|
||||||
|
|
||||||
KDL, on the other hand, has great comment support, and has a much more
|
|
||||||
forgiving syntax without being so flexible as to allow certain classes of
|
|
||||||
unfortunate mistakes. It also has much more flexibility around how to
|
|
||||||
represent data.
|
|
||||||
|
|
||||||
If you need to interoperate with a service that consumes or emits JSON, or for
|
|
||||||
some other reason have need to write "JSON in KDL", [we have JiK, an official
|
|
||||||
microsyntax for losslessly encoding JSON](https://github.com/kdl-org/kdl/blob/main/JSON-IN-KDL.md).
|
|
||||||
|
|
||||||
#### What about TOML?
|
|
||||||
|
|
||||||
It nests very poorly. It doesn't fare well with large files.
|
|
||||||
|
|
||||||
#### What about XML?
|
|
||||||
|
|
||||||
XML is actually pretty fantastic, and has long been a standard for data
|
|
||||||
exchange across many industries. At the same time, XML is known to be very
|
|
||||||
verbose, and editing it involves writing (and updating) matching tags. Another
|
|
||||||
large pitfall with XML is its lack of direct support for arbitrary string
|
|
||||||
key/value pairs, so what would be a simple `foo: x` in some languages has to
|
|
||||||
be represented as `<entry name="foo" value="x" />` or something similar. XML
|
|
||||||
also functions great as a **markup** language. That is, it is easy to
|
|
||||||
intersperse with text, like HTML.
|
|
||||||
|
|
||||||
KDL, just like XML, is a node/element-based language, but with much more
|
|
||||||
lightweight syntax. It also adds the ability to apply anonymous values
|
|
||||||
directly to a node, rather than as children. That is, `nodename 1 2 3` instead
|
|
||||||
of `<element><child>1</child><child>2</child>(etc)</element>`. This can make
|
|
||||||
it much more manageable and readable as a human configuration language, and is
|
|
||||||
also less verbose when exchanging documents across APIs!
|
|
||||||
|
|
||||||
Finally, KDL is **not** a markup language. XML or HTML do a much better job of
|
|
||||||
"marking up" a text document with special tags, although KDL can still be
|
|
||||||
useful for templating engines that want to be more strict about text
|
|
||||||
fragments.
|
|
||||||
|
|
||||||
If you need to interoperate with a service that consumes or emits XML, or for
|
|
||||||
some other reason have need to write "XML in KDL", [we have XiK, an official
|
|
||||||
microsyntax for losslessly encoding XML](https://github.com/kdl-org/kdl/blob/main/XML-IN-KDL.md).
|
|
||||||
|
|
||||||
|
|
||||||
</section>
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
<section class="kdl-section" id="implementations">
|
|
||||||
|
|
||||||
## Implementations
|
|
||||||
|
|
||||||
* Rust: [kdl-rs](https://github.com/kdl-org/kdl-rs), [knuffel](https://crates.io/crates/knuffel/) (latter includes derive macro), and [kaydle](https://github.com/Lucretiel/kaydle) (serde-based)
|
|
||||||
* JavaScript: [kdljs](https://github.com/kdl-org/kdljs), [@virtualstate/kdl](https://github.com/virtualstate/kdl) (query only, JSX based)
|
|
||||||
* Ruby: [kdl-rb](https://github.com/danini-the-panini/kdl-rb)
|
|
||||||
* Dart: [kdl-dart](https://github.com/danini-the-panini/kdl-dart)
|
|
||||||
* Java: [kdl4j](https://github.com/hkolbeck/kdl4j)
|
|
||||||
* PHP: [kdl-php](https://github.com/kdl-org/kdl-php)
|
|
||||||
* Python: [kdl-py](https://github.com/tabatkins/kdlpy), [cuddle](https://github.com/djmattyg007/python-cuddle), [ckdl](https://github.com/tjol/ckdl)
|
|
||||||
* Elixir: [kuddle](https://github.com/IceDragon200/kuddle)
|
|
||||||
* XSLT: [xml2kdl](https://github.com/Devasta/XML2KDL)
|
|
||||||
* Haskell: [Hustle](https://github.com/fuzzypixelz/Hustle)
|
|
||||||
* .NET: [Kadlet](https://github.com/oledfish/Kadlet)
|
|
||||||
* C: [ckdl](https://github.com/tjol/ckdl)
|
|
||||||
* C++: [kdlpp](https://github.com/tjol/ckdl) (part of ckdl, requires C++20)
|
|
||||||
* OCaml: [ocaml-kdl](https://github.com/Bannerets/ocaml-kdl)
|
|
||||||
* Nim: [kdl-nim](https://github.com/Patitotective/kdl-nim)
|
|
||||||
* Common Lisp: [kdlcl](https://github.com/chee/kdlcl)
|
|
||||||
* Go: [gokdl](https://github.com/lunjon/gokdl), [kdl-go](https://github.com/sblinch/kdl-go)
|
|
||||||
* Swift: [kdl-swift](https://github.com/danini-the-panini/kdl-swift)
|
|
||||||
* Crystal: [kdl-cr](https://github.com/danini-the-panini/kdl-cr)
|
|
||||||
* Lua: [kdlua](https://github.com/danini-the-panini/kdlua)
|
|
||||||
|
|
||||||
## Editor Support
|
|
||||||
|
|
||||||
* [VS Code](https://marketplace.visualstudio.com/items?itemName=kdl-org.kdl&ssr=false#review-details)
|
|
||||||
* [Sublime Text](https://packagecontrol.io/packages/KDL)
|
|
||||||
* [Intellij IDEA](https://plugins.jetbrains.com/plugin/20136-kdl-document-language)
|
|
||||||
* [vim](https://github.com/imsnif/kdl.vim)
|
|
||||||
</section>
|
|
||||||
|
|
@ -1,180 +0,0 @@
|
||||||
<section class="kdl-section" id="overview">
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
### Basics
|
|
||||||
|
|
||||||
A KDL node is a node name, followed by zero or more "arguments", and
|
|
||||||
children.
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
title "Hello, World"
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also have multiple values in a single node!
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
bookmarks 12 15 188 1234
|
|
||||||
```
|
|
||||||
|
|
||||||
Nodes can have properties.
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
author "Alex Monad" email="alex@example.com" active=true
|
|
||||||
```
|
|
||||||
|
|
||||||
And they can have nested child nodes, too!
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
contents {
|
|
||||||
section "First section" {
|
|
||||||
paragraph "This is the first paragraph"
|
|
||||||
paragraph "This is the second paragraph"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Nodes without children are terminated by a newline, a semicolon, or the end of
|
|
||||||
a file stream:
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
node1; node2; node3;
|
|
||||||
```
|
|
||||||
|
|
||||||
### Values
|
|
||||||
|
|
||||||
KDL supports 4 data types:
|
|
||||||
|
|
||||||
* Strings: `"hello world"`
|
|
||||||
* Numbers: `123.45`
|
|
||||||
* Booleans: `true` and `false`
|
|
||||||
* Null: `null`
|
|
||||||
|
|
||||||
#### Strings
|
|
||||||
It supports two different formats for string input: escaped and raw.
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
node "this\nhas\tescapes"
|
|
||||||
other r"C:\Users\zkat\"
|
|
||||||
```
|
|
||||||
Both types of string can be multiline as-is, without a different syntax:
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
string "my
|
|
||||||
multiline
|
|
||||||
value"
|
|
||||||
```
|
|
||||||
|
|
||||||
And for raw strings, you can add any number of # after the r and the last " to
|
|
||||||
disambiguate literal " characters:
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
other-raw r#"hello"world"#
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Numbers
|
|
||||||
|
|
||||||
There's 4 ways to represent numbers in KDL. KDL does not prescribe any
|
|
||||||
representation for these numbers, and it's entirely up to individual
|
|
||||||
implementations whether to represent all numbers with a single type, or to
|
|
||||||
have different representations for different forms.
|
|
||||||
|
|
||||||
KDL has regular decimal-radix numbers, with optional decimal part, as well as
|
|
||||||
an optional exponent.
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
num 1.234e-42
|
|
||||||
```
|
|
||||||
|
|
||||||
And using the appropriate prefix, you can also enter hexadecimal, octal, and
|
|
||||||
binary literals:
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
my-hex 0xdeadbeef
|
|
||||||
my-octal 0o755
|
|
||||||
my-binary 0b10101101
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, all numbers can have underscores to help readability:
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
bignum 1_000_000
|
|
||||||
```
|
|
||||||
|
|
||||||
### Comments
|
|
||||||
|
|
||||||
KDL supports C-style comments, both line-based and multiline. Multiline
|
|
||||||
comments can be nested.
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
// C style
|
|
||||||
|
|
||||||
/*
|
|
||||||
C style multiline
|
|
||||||
*/
|
|
||||||
|
|
||||||
tag /*foo=true*/ bar=false
|
|
||||||
|
|
||||||
/*/*
|
|
||||||
hello
|
|
||||||
*/*/
|
|
||||||
```
|
|
||||||
|
|
||||||
On top of that, KDL supports `/-` "slashdash" comments, which can be used to
|
|
||||||
comment out individual nodes, arguments, or children:
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
// This entire node and its children are all commented out.
|
|
||||||
/-mynode "foo" key=1 {
|
|
||||||
a
|
|
||||||
b
|
|
||||||
c
|
|
||||||
}
|
|
||||||
|
|
||||||
mynode /-"commented" "not commented" /-key="value" /-{
|
|
||||||
a
|
|
||||||
b
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Type Annotations
|
|
||||||
|
|
||||||
KDL supports type annotations on both values and nodes. These can be
|
|
||||||
arbitrary, but can be used by individual implementations or use-cases to
|
|
||||||
constrain KDL's basic types. A number of type names are also reserved to have
|
|
||||||
specific meanings.
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
numbers (u8)10 (i32)20 myfloat=(f32)1.5 {
|
|
||||||
strings (uuid)"123e4567-e89b-12d3-a456-426614174000" (date)"2021-02-03" filter=(regex)r"$\d+"
|
|
||||||
(author)person name="Alex"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### More Details
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
// Nodes can be separated into multiple lines
|
|
||||||
title \
|
|
||||||
"Some title"
|
|
||||||
|
|
||||||
|
|
||||||
// Files must be utf8 encoded!
|
|
||||||
smile "😁"
|
|
||||||
|
|
||||||
// Instead of anonymous nodes, nodes and properties can be wrapped
|
|
||||||
// in "" for arbitrary node names.
|
|
||||||
"!@#$@$%Q#$%~@!40" "1.2.3" "!!!!!"=true
|
|
||||||
|
|
||||||
// The following is a legal bare identifier:
|
|
||||||
foo123~!@#$%^&*.:'|?+ "weeee"
|
|
||||||
|
|
||||||
// And you can also use unicode!
|
|
||||||
ノード お名前="☜(゚ヮ゚☜)"
|
|
||||||
|
|
||||||
// kdl specifically allows properties and values to be
|
|
||||||
// interspersed with each other, much like CLI commands.
|
|
||||||
foo bar=true "baz" quux=false 1 2 3
|
|
||||||
```
|
|
||||||
|
|
||||||
</section>
|
|
||||||
22
src/index.md
22
src/index.md
|
|
@ -55,14 +55,15 @@ package {
|
||||||
|
|
||||||
For more details, see the [overview below](#overview).
|
For more details, see the [overview below](#overview).
|
||||||
|
|
||||||
There's a living [specification](SPEC.md), as well as various
|
There's a living
|
||||||
[implementations](#implementations). You can also check out the [FAQ](#faq) to
|
[specification](https://github.com/kdl-org/kdl/blob/main/SPEC.md), as well as
|
||||||
answer all your burning questions!
|
various [implementations](#implementations). You can also check out the
|
||||||
|
[FAQ](#faq) to answer all your burning questions!
|
||||||
|
|
||||||
The current version of the KDL spec is `2.0.0`. For legacy KDL, please refer to
|
The current version of the KDL spec is `2.0.0`. For legacy KDL, please refer to
|
||||||
the [KDL 1.0 spec](./SPEC_v1.md). All users are encouraged to migrate.
|
the [KDL 1.0 spec](https://github.com/kdl-org/kdl/blob/main/SPEC_v1.md). All
|
||||||
[Migration is forward-and-backward-compatible and
|
users are encouraged to migrate. [Migration is forward-and-backward-compatible
|
||||||
safe](./SPEC.md#compatibility), and can be automated.
|
and safe](./SPEC.md#compatibility), and can be automated.
|
||||||
|
|
||||||
In addition to a spec for KDL itself, there are specifications for [a KDL Query
|
In addition to a spec for KDL itself, there are specifications for [a KDL Query
|
||||||
Language](QUERY-SPEC.md) based on CSS selectors, and [a KDL Schema
|
Language](QUERY-SPEC.md) based on CSS selectors, and [a KDL Schema
|
||||||
|
|
@ -397,8 +398,8 @@ between it and JSON or XML. These specifications define a stricter _subset_ of
|
||||||
KDL that, even if not entirely idiomatic, is still valid and fits into the
|
KDL that, even if not entirely idiomatic, is still valid and fits into the
|
||||||
data models of the other two languages:
|
data models of the other two languages:
|
||||||
|
|
||||||
* [JSON in KDL](JSON-IN-KDL.md)
|
* [JSON in KDL](https://github.com/kdl-org/kdl/blob/main/JSON-IN-KDL.md)
|
||||||
* [XML in KDL](XML-IN-KDL.md)
|
* [XML in KDL](https://github.com/kdl-org/kdl/blob/main/JSON-IN-KDL.md)
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
@ -485,7 +486,8 @@ represent data.
|
||||||
|
|
||||||
If you need to interoperate with a service that consumes or emits JSON, or for
|
If you need to interoperate with a service that consumes or emits JSON, or for
|
||||||
some other reason have need to write "JSON in KDL", [we have JiK, an official
|
some other reason have need to write "JSON in KDL", [we have JiK, an official
|
||||||
microsyntax for losslessly encoding JSON](JSON-IN-KDL.md).
|
microsyntax for losslessly encoding
|
||||||
|
JSON](https://github.com/kdl-org/kdl/blob/main/JSON-IN-KDL.md).
|
||||||
|
|
||||||
#### What about TOML?
|
#### What about TOML?
|
||||||
|
|
||||||
|
|
@ -516,6 +518,6 @@ fragments.
|
||||||
|
|
||||||
If you need to interoperate with a service that consumes or emits XML, or for
|
If you need to interoperate with a service that consumes or emits XML, or for
|
||||||
some other reason have need to write "XML in KDL", [we have XiK, an official
|
some other reason have need to write "XML in KDL", [we have XiK, an official
|
||||||
microsyntax for losslessly encoding XML](XML-IN-KDL.md).
|
microsyntax for losslessly encoding XML](https://github.com/kdl-org/kdl/blob/main/XML-IN-KDL.md).
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
Loading…
Reference in New Issue