diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..6ab5fe3 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +export GUILE_AUTO_COMPILE=0 \ No newline at end of file diff --git a/.gitignore b/.gitignore index a52ae4e..d4d993b 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,7 @@ coverage/ *.lcov # Node Modules dir -node_modules/ \ No newline at end of file +node_modules/ + +# Test snapshots +tests/__snapshots__/ \ No newline at end of file diff --git a/README.md b/README.md index a7def57..1232194 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,9 @@ I need for [my Lume site](https://urutau-ltd.org/). [Lume TOC](https://lume.land/plugins/toc/) was beyond unusable for me and I'd rather maintain a fork to keep doing things my way. +Also tests are Deno runtime dependent and the build system doesn't use deno +tasks but `maak` instead. You'll need either `nix` or `guix` for that. + ### I don't care, I still want to use it Install it via JSR with: diff --git a/deno.json b/deno.json index dfe858f..93456a4 100644 --- a/deno.json +++ b/deno.json @@ -1,15 +1,13 @@ { "name": "@funcproglinux/markdown-it-toc-revived", - "version": "1.0.4", + "version": "1.0.5", "license": "AGPL-3.0-or-later", "exports": "./mod.ts", "nodeModulesDir": "auto", "imports": { "@std/assert": "jsr:@std/assert@^1.0.19", "@std/html": "jsr:@std/html@^1.0.7", - "@types/markdown-it": "npm:@types/markdown-it@^14.2.0", - - "markdown-it": "npm:markdown-it@^14.3.0", + "markdown-it": "npm:markdown-it@^15.0.0", "markdown-it-anchor": "npm:markdown-it-anchor@^9.2.1" }, "publish": { diff --git a/deno.lock b/deno.lock index 80be736..c98f986 100644 --- a/deno.lock +++ b/deno.lock @@ -2,27 +2,264 @@ "version": "5", "specifiers": { "jsr:@std/assert@^1.0.19": "1.0.19", + "jsr:@std/cli@1.0.32": "1.0.32", + "jsr:@std/cli@^1.0.32": "1.0.32", + "jsr:@std/collections@^1.1.3": "1.3.0", + "jsr:@std/crypto@1.1.0": "1.1.0", + "jsr:@std/encoding@^1.0.11": "1.0.11", + "jsr:@std/fmt@1.0.10": "1.0.10", + "jsr:@std/fmt@^1.0.10": "1.0.10", + "jsr:@std/front-matter@1.0.9": "1.0.9", + "jsr:@std/fs@1.0.24": "1.0.24", + "jsr:@std/fs@^1.0.24": "1.0.24", "jsr:@std/html@^1.0.7": "1.0.7", + "jsr:@std/http@1.1.3": "1.1.3", "jsr:@std/internal@^1.0.12": "1.0.14", - "npm:@types/markdown-it@^14.2.0": "14.2.0", - "npm:markdown-it-anchor@^9.2.1": "9.2.1_@types+markdown-it@14.2.0_markdown-it@14.3.0", - "npm:markdown-it@^14.3.0": "14.3.0" + "jsr:@std/internal@^1.0.14": "1.0.14", + "jsr:@std/json@^1.0.2": "1.1.0", + "jsr:@std/jsonc@1.0.2": "1.0.2", + "jsr:@std/media-types@^1.1.0": "1.1.0", + "jsr:@std/net@^1.0.6": "1.0.6", + "jsr:@std/path@1.1.6": "1.1.6", + "jsr:@std/path@^1.1.5": "1.1.6", + "jsr:@std/path@^1.1.6": "1.1.6", + "jsr:@std/semver@1.0.8": "1.0.8", + "jsr:@std/streams@^1.1.2": "1.1.2", + "jsr:@std/toml@1.0.11": "1.0.11", + "jsr:@std/toml@^1.0.3": "1.0.11", + "jsr:@std/yaml@1.2.0": "1.2.0", + "jsr:@std/yaml@^1.0.5": "1.2.0", + "npm:esbuild@0.28.2": "0.28.2", + "npm:lightningcss-wasm@1.33.0": "1.33.0", + "npm:markdown-it-anchor@^9.2.1": "9.2.1_@types+markdown-it@14.2.0_markdown-it@15.0.0", + "npm:markdown-it-attrs@5.0.1": "5.0.1_markdown-it@15.0.0", + "npm:markdown-it-deflist@4.0.0": "4.0.0", + "npm:markdown-it@15": "15.0.0", + "npm:markdown-it@15.0.0": "15.0.0" }, "jsr": { "@std/assert@1.0.19": { "integrity": "eaada96ee120cb980bc47e040f82814d786fe8162ecc53c91d8df60b8755991e", "dependencies": [ - "jsr:@std/internal" + "jsr:@std/internal@^1.0.12" + ] + }, + "@std/cli@1.0.32": { + "integrity": "188b3a100d6202d64e3f5bd3d799c7fa4f6d77f92cc65eb7f641c1fa0aa92a66" + }, + "@std/collections@1.3.0": { + "integrity": "eb36b43d784477ea0b476483ac034a14bdd182aff921c812ecf662a1fcef9498" + }, + "@std/crypto@1.1.0": { + "integrity": "b8d6d0a6377a32b213af2661ed7bf1062d94feac0c57def5526a8e74a95c3ec8" + }, + "@std/encoding@1.0.11": { + "integrity": "e7cef2f0b3153bccc17431e7c864a1de03a4b6d9647389c43e08aaa775d37385" + }, + "@std/fmt@1.0.10": { + "integrity": "90dfba288802ac6de82fb31d0917eb9e4450b9925b954d5e51fc29ac07419db5" + }, + "@std/front-matter@1.0.9": { + "integrity": "ee6201d06674cbef137dda2252f62477450b48249e7d8d9ab57a30f85ff6f051", + "dependencies": [ + "jsr:@std/toml@^1.0.3", + "jsr:@std/yaml@^1.0.5" + ] + }, + "@std/fs@1.0.24": { + "integrity": "f3061b45b81673a2bece689da041df32d174be064c89eb6397fb5718d3fb7877", + "dependencies": [ + "jsr:@std/path@^1.1.5" ] }, "@std/html@1.0.7": { "integrity": "175c818905a6e75743c69c251395e273d82698e58cfe7dd76268d70e28b8d8fe" }, + "@std/http@1.1.3": { + "integrity": "73a98e05ff58aa18bea562d286172e6c815b1eddd4fcab194beda19e3683b88c", + "dependencies": [ + "jsr:@std/cli@^1.0.32", + "jsr:@std/encoding", + "jsr:@std/fmt@^1.0.10", + "jsr:@std/fs@^1.0.24", + "jsr:@std/html", + "jsr:@std/media-types", + "jsr:@std/net", + "jsr:@std/path@^1.1.6", + "jsr:@std/streams" + ] + }, "@std/internal@1.0.14": { "integrity": "291516b3d4c35024d6ffbc0a9df5bf4c64116e05b50012cf846710152d2ffdf7" + }, + "@std/json@1.1.0": { + "integrity": "93330d3ed4054d6b1ffe54b075432c80a5f671be77277b978931e018014cb1cc" + }, + "@std/jsonc@1.0.2": { + "integrity": "909605dae3af22bd75b1cbda8d64a32cf1fd2cf6efa3f9e224aba6d22c0f44c7", + "dependencies": [ + "jsr:@std/json" + ] + }, + "@std/media-types@1.1.0": { + "integrity": "c9d093f0c05c3512932b330e3cc1fe1d627b301db33a4c2c2185c02471d6eaa4" + }, + "@std/net@1.0.6": { + "integrity": "110735f93e95bb9feb95790a8b1d1bf69ec0dc74f3f97a00a76ea5efea25500c" + }, + "@std/path@1.1.6": { + "integrity": "c68485c2a4dfbb5ae3cc74fae4e8c4e5d874cf8a8ed12927917235c758b46cbe", + "dependencies": [ + "jsr:@std/internal@^1.0.14" + ] + }, + "@std/semver@1.0.8": { + "integrity": "dc830e8b8b6a380c895d53fbfd1258dc253704ca57bbe1629ac65fd7830179b7" + }, + "@std/streams@1.1.2": { + "integrity": "0249bf9b78a999f57032ca4d8e7ccaa57579090242640b35ddc948fbb745d3af" + }, + "@std/toml@1.0.11": { + "integrity": "e084988b872ca4bad6aedfb7350f6eeed0e8ba88e9ee5e1590621c5b5bb8f715", + "dependencies": [ + "jsr:@std/collections" + ] + }, + "@std/yaml@1.2.0": { + "integrity": "20beb41e4983ba3437dbefac62b14061ab058e8a187596f19d28ff9035f6e6cf" } }, "npm": { + "@esbuild/aix-ppc64@0.28.2": { + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", + "os": ["aix"], + "cpu": ["ppc64"] + }, + "@esbuild/android-arm64@0.28.2": { + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", + "os": ["android"], + "cpu": ["arm64"] + }, + "@esbuild/android-arm@0.28.2": { + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", + "os": ["android"], + "cpu": ["arm"] + }, + "@esbuild/android-x64@0.28.2": { + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", + "os": ["android"], + "cpu": ["x64"] + }, + "@esbuild/darwin-arm64@0.28.2": { + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", + "os": ["darwin"], + "cpu": ["arm64"] + }, + "@esbuild/darwin-x64@0.28.2": { + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", + "os": ["darwin"], + "cpu": ["x64"] + }, + "@esbuild/freebsd-arm64@0.28.2": { + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", + "os": ["freebsd"], + "cpu": ["arm64"] + }, + "@esbuild/freebsd-x64@0.28.2": { + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", + "os": ["freebsd"], + "cpu": ["x64"] + }, + "@esbuild/linux-arm64@0.28.2": { + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", + "os": ["linux"], + "cpu": ["arm64"] + }, + "@esbuild/linux-arm@0.28.2": { + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", + "os": ["linux"], + "cpu": ["arm"] + }, + "@esbuild/linux-ia32@0.28.2": { + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", + "os": ["linux"], + "cpu": ["ia32"] + }, + "@esbuild/linux-loong64@0.28.2": { + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", + "os": ["linux"], + "cpu": ["loong64"] + }, + "@esbuild/linux-mips64el@0.28.2": { + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", + "os": ["linux"], + "cpu": ["mips64el"] + }, + "@esbuild/linux-ppc64@0.28.2": { + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", + "os": ["linux"], + "cpu": ["ppc64"] + }, + "@esbuild/linux-riscv64@0.28.2": { + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", + "os": ["linux"], + "cpu": ["riscv64"] + }, + "@esbuild/linux-s390x@0.28.2": { + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", + "os": ["linux"], + "cpu": ["s390x"] + }, + "@esbuild/linux-x64@0.28.2": { + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", + "os": ["linux"], + "cpu": ["x64"] + }, + "@esbuild/netbsd-arm64@0.28.2": { + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", + "os": ["netbsd"], + "cpu": ["arm64"] + }, + "@esbuild/netbsd-x64@0.28.2": { + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", + "os": ["netbsd"], + "cpu": ["x64"] + }, + "@esbuild/openbsd-arm64@0.28.2": { + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", + "os": ["openbsd"], + "cpu": ["arm64"] + }, + "@esbuild/openbsd-x64@0.28.2": { + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", + "os": ["openbsd"], + "cpu": ["x64"] + }, + "@esbuild/openharmony-arm64@0.28.2": { + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", + "os": ["openharmony"], + "cpu": ["arm64"] + }, + "@esbuild/sunos-x64@0.28.2": { + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", + "os": ["sunos"], + "cpu": ["x64"] + }, + "@esbuild/win32-arm64@0.28.2": { + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", + "os": ["win32"], + "cpu": ["arm64"] + }, + "@esbuild/win32-ia32@0.28.2": { + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", + "os": ["win32"], + "cpu": ["ia32"] + }, + "@esbuild/win32-x64@0.28.2": { + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", + "os": ["win32"], + "cpu": ["x64"] + }, "@types/linkify-it@5.0.0": { "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==" }, @@ -36,27 +273,72 @@ "@types/mdurl@2.0.0": { "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==" }, - "argparse@2.0.1": { - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "argparse@3.0.0": { + "integrity": "sha512-BOp5NMrHqKxmq/OLr+clzzrRxgOKSLkcjmkWuChp7Irqwn4s74WjOBPIgWfA/HMcBnVkZ5XEuf9uUqzlpfCQ6A==" + }, + "entities@8.0.0": { + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==" + }, + "esbuild@0.28.2": { + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", + "optionalDependencies": [ + "@esbuild/aix-ppc64", + "@esbuild/android-arm", + "@esbuild/android-arm64", + "@esbuild/android-x64", + "@esbuild/darwin-arm64", + "@esbuild/darwin-x64", + "@esbuild/freebsd-arm64", + "@esbuild/freebsd-x64", + "@esbuild/linux-arm", + "@esbuild/linux-arm64", + "@esbuild/linux-ia32", + "@esbuild/linux-loong64", + "@esbuild/linux-mips64el", + "@esbuild/linux-ppc64", + "@esbuild/linux-riscv64", + "@esbuild/linux-s390x", + "@esbuild/linux-x64", + "@esbuild/netbsd-arm64", + "@esbuild/netbsd-x64", + "@esbuild/openbsd-arm64", + "@esbuild/openbsd-x64", + "@esbuild/openharmony-arm64", + "@esbuild/sunos-x64", + "@esbuild/win32-arm64", + "@esbuild/win32-ia32", + "@esbuild/win32-x64" + ], + "scripts": true, + "bin": true }, - "entities@4.5.0": { - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + "lightningcss-wasm@1.33.0": { + "integrity": "sha512-OLAtqEyInBSVWjPrTjpLzcZUMUHO0q+2PFBXKr86nxZOu0P38givj/ZMtRaZ0d38pMTb9wQx+LtaLtHclv+sEA==" }, - "linkify-it@5.0.2": { - "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", + "linkify-it@6.1.0": { + "integrity": "sha512-wJ/TwpSDTLepCrQoYWYIExIKg5Zchex2Nn5yk2mFnB+6PtdkHtyLx742md9csRjjOnGkKIS/RrbY7l8D6gT9Vw==", "dependencies": [ "uc.micro" ] }, - "markdown-it-anchor@9.2.1_@types+markdown-it@14.2.0_markdown-it@14.3.0": { + "markdown-it-anchor@9.2.1_@types+markdown-it@14.2.0_markdown-it@15.0.0": { "integrity": "sha512-p6APiLJDFAW2GEvaavDvhIBn7jrX2jLv77NkBGgNacFTurbORYc4pyYySg/mI6mpR6cHQuAtzKtmqgQr4K8dsQ==", "dependencies": [ "@types/markdown-it", "markdown-it" ] }, - "markdown-it@14.3.0": { - "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", + "markdown-it-attrs@5.0.1_markdown-it@15.0.0": { + "integrity": "sha512-dTP49/FLERwbgqmfIG5LwnC99qecIJYalKQbl3pY+7Hajk+Z+cazeEZaKwofpM9KFxvfRVF0UN9GYxKKAakfNg==", + "dependencies": [ + "markdown-it" + ] + }, + "markdown-it-deflist@4.0.0": { + "integrity": "sha512-06186ZWDwNLg638THD70MxBeFrDMF0+nL7IWU/qwCGHGOcUIm4MTYXbfjpv0ooWnVjkSnAjW8msKaOQmNRfY6Q==" + }, + "markdown-it@15.0.0": { + "integrity": "sha512-Lf8ajvVNdRpzSNB4VegxNy7gjs8gU35l4b4+ET49LrQC5PKYwLZ72u60LeJ9gv3qiaesuYjJWCyVeQmv/QWKQw==", "dependencies": [ "argparse", "entities", @@ -73,17 +355,145 @@ "punycode.js@2.3.1": { "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==" }, - "uc.micro@2.1.0": { - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + "uc.micro@3.0.0": { + "integrity": "sha512-U3PppEkleoTnIfi8BozMx3yju3qc/L6SwqWo2Sw+54PX+PX0q9I+r1Um5HCmqD7n9VDX5/v3vQH/AjA6deDdtw==" } }, + "remote": { + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/build/deno-wasm/deno-wasm-dynamic.js": "fd05e83a855aa68b09396dc47a7638ef526c39917971715ac37e0fc3227db886", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/build/deno-wasm/deno-wasm.js": "ccde5219e42040b8f7a8b653acc6c8cca197c29f98d6b75f74c48111e34bcbea", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/build/deno-wasm/deno-wasm_bg-wasm.js": "52c57905a74047d1574f0b96e301ef1d5974cd962705615555b5e46b5ac420e4", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/build/deno-wasm/deno-wasm_bg.wasm": "b5fbd7ede316f7c13e4a7b927a053a35b475a9acce7c7cae864e91d9b8dd24c7", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/build/deno-wasm/env.js": "17da784c11b192c591dbf7df21ec6f65f63f45ca9a713e4ca100f3c886b4023f", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/build/deno-wasm/wbg.js": "b5b6de12bc010fa23438c8a8276067b9044a405da516d0bbe4ae61b7c6d61a22", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/deno-dom-wasm.ts": "34f0654b452568fbd95b8d1b2a493de19710ac9ceeb6b82f541d09c29613572d", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/api.ts": "0ff5790f0a3eeecb4e00b7d8fbfa319b165962cf6d0182a65ba90f158d74f7d7", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/constructor-lock.ts": "0e7b297e8b9cf921a3b0d3a692ec5fb462c5afc47ec554292e20090b9e16b40a", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/deserialize.ts": "514953418b7ae558ed7361ad9be21013f46cba2f58bd7f4acc90cf1e89f9c8cf", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/document-fragment.ts": "0b915d094830d43b330dc2fb8012b990f2c815773c6cdcd4a9fdff99fe47412e", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/document.ts": "ad584ac4ce6dce03f0ff6ef4b7db86fd598f9c7824da1387f7f2acd7d6948e4a", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/dom-parser.ts": "ab5e8382700bc3936ac67e8d11b7bb9c6999a994ac8b070b7cae94e2d2ecee5a", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/element.ts": "9726ebf139b97ae96671d38da720988cfd6481ff9068ba13f3b0d00e72f0c8c0", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/elements/html-template-element.ts": "1707dfb4cbb145f3bcb94426d7cdedbaa336620d0afed30e99f50fe87ba24a98", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/html-collection.ts": "dcf328e883877f7748d3e20fb6319e739f297a6e24f4b00ec5b1a2f390cfa3c6", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/node-list.ts": "be9793475d82539da8b97a17b6b5538cc723538c10cc5820a23e5e4b2248845d", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/node.ts": "53ada9e4b2ae21f10f5941ff257ed4585920ae392020544648f349c05d15d30c", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/selectors/custom-api.ts": "852696bd58e534bc41bd3be9e2250b60b67cd95fd28ed16b1deff1d548531a71", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/selectors/nwsapi-types.ts": "c43b36c36acc5d32caabaa54fda8c9d239b2b0fcbce9a28efb93c84aa1021698", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/selectors/nwsapi.js": "985d7d8fc1eabbb88946b47a1c44c1b2d4aa79ff23c21424219f1528fa27a2ff", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/selectors/selectors.ts": "83eab57be2290fb48e3130533448c93c6c61239f2a2f3b85f1917f80ca0fdc75", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/selectors/sizzle-types.ts": "78149e2502409989ce861ed636b813b059e16bc267bb543e7c2b26ef43e4798b", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/selectors/sizzle.js": "c3aed60c1045a106d8e546ac2f85cc82e65f62d9af2f8f515210b9212286682a", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/string-cache.ts": "8e935804f7bac244cc70cec90a28c9f6d30fea14c61c2c4ea48fca274376d786", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/utils-types.ts": "96db30e3e4a75b194201bb9fa30988215da7f91b380fca6a5143e51ece2a8436", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/dom/utils.ts": "bc429635e9204051ba1ecc1b212031b5ee7c6bcd95120c91bef696804aa67e74", + "https://cdn.jsdelivr.net/gh/b-fuze/deno-dom@0.1.56/src/parser.ts": "e06b2300d693e6ae7564e53dfa5c9a9e97fdb8c044c39c52c8b93b5d60860be3", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/archetypes.ts": "7d143dda9c38f506d3d5567722f3d375947d7ec74b48ca067c391ebe42eaf93b", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/cache.ts": "bec945853a7111babf1fb465090d84dbf4176af0ad465b63b51031134ad6ea2a", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/components.ts": "652ffa0be1091636eea3f95574f250a8ef22a7241d6f48df71e9420e3b145563", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/data_loader.ts": "a5f206eefc5041d1882b85a874e1d1f9b82f409eb586b62278b2f51e181da673", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/debugbar.ts": "b7fc66a6462c8c6267577b2bec572b8134cdbb88271e463c141da16e478a175e", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/events.ts": "e4fd1786eb7dd4a041d7d922779b9edf1ee89e51fd17ba5e756f380879ccb557", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/file.ts": "4fc912f7934ed8d24164d4c056ef0d6687d9f07c0c2c5fedefe332a98cd46772", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/formats.ts": "e65130e5c5f2e49435619479710c812199b480a9e145fdc6b2bac11cfe6ea08e", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/fs.ts": "3176c120d63b0adfd269050ff01408804d692f31227658b2427a708f95cd0f6c", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/loaders/binary.ts": "9cec5daf121e95e3de453463a34183fc90aa8183c6c94d1e1c53da4ea4cf26cd", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/loaders/json.ts": "5c8faa9fa86ae2c462f0420a4ea616cbf4b04be3d4e5f70198603033489a3905", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/loaders/module.ts": "dc8b578586502c58cb1fb6a8d219b406adb4e050e473c5c9211ba034732c9960", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/loaders/text.ts": "6cd4e3ce1a97f668fdd3fea957e71b51c7bc488e094e82b43bb089854a4bebc8", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/loaders/toml.ts": "8d3083b58e335eff9f11c0f3b1bfafe7e3bb49b1ddbabcffee6b45b09adcca68", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/loaders/yaml.ts": "a978f03562df13e995e3d10f69d3206a9e1575fe2cbd460916a748ec7d4137e7", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/logger.ts": "44591cf380eb3271c0ca0612da3d741621210d65cdc7099d8500f08aa2aafe7b", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/processors.ts": "c4829d8918a93da150e154b0ea624018cfe9bbd66e92757aebe1a8c1ca66ec8b", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/renderer.ts": "29179b87c1385f4ab3ff369630d9fb5d99b442b2ffb62e6aa9b86b8ee0619479", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/scopes.ts": "dbdf93d7a9cead84833779e974f190b1379356ec7c0ccd34aa92f917c2cdd2f9", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/scripts.ts": "286969b120d2290ba57a7fdd9b37e587aacf4e4162d92f51f1f1e9e18c864f30", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/searcher.ts": "f117ac194ab3f7901c2699c60fb155dd12d37f54a89121b5f6fc385f9e092379", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/server.ts": "3f73d4a886c29d2af5144e9475655f8bfa13a73d4f193eeb013ae4dd8394c3b3", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/site.ts": "359ac71dc5c87cc4750cf0839614810bfb0a5cdc8cd482a5dab87766c7ae612f", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/source.ts": "00f948a0262363553588eb3147c7ca1f7d48bf86e856f4bd4820ca0db710cabb", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/cdn.ts": "4309cb725106091d5d92a91f1599a6d5eacaaa5303fe7835ea27d55f97144e03", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/cli_options.ts": "6c6eb9ded1775b8d2654d3e218c09b11b26efa3dc6f3b74592bcd74a53447bd0", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/concurrent.ts": "f0172230b25d83aca497c64d92a08d9a373b9ffd13cf57c273a51d8a3a3a2a9e", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/date.ts": "3eb0b0e2ea15a95cdfe737be70cd4f48cbe49401928cb04c25a230f411ab2478", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/digest.ts": "edc8fc07f34fa3c748fea98704361d88e2449e8e91c0f2800fdab38bfad24bae", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/dom.ts": "8337af56c8d447b5ad1b021a0981f9cec912dba820b2ba346820258b80b5f12a", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/env.ts": "0f2d7ab9c1c39727803e1b22abeb1d6d9798ec4e76cf85d213a01f5db42de978", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/format.ts": "40a6f38eabd646eaf07c05b2c994ef5e7a69fe9594e194ea5dca847033b7b416", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/generator.ts": "1e664e9fd4c469e38a0acf5c94fd49dac4f38cb6334563ea4b7fc498b5958877", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/hmr.ts": "59ff6374c7d4711b31885ef509bbaf534d475756d2618e09c0189e63b61a9444", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/log.ts": "46c7096372dda547bc6b3b6c1eb4abdb8832862471032728593e52015589ef0a", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/merge_data.ts": "ee04ac54ff336ebc9acdce9f4f0e043ed368177c2f09da605692a36214fcb49b", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/net.ts": "d0d58c95668effc13669015c219295532f67e4a02396286308c772871b615a9b", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/object.ts": "c4dee88cf159718dab07fd2c32cf87fa2fe6191d80de3ac7e4ce2b5df0790a2b", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/page_content.ts": "bbadb588f9d9fcf1a2af156ce4b68974dfad39b65c3c8d42a6f1895b194c7eec", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/page_date.ts": "5ea81b631d3c3dc0ee532829261632786e3253f24b9e1b3d4fbffe7d3e701845", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/page_url.ts": "bca0a02fbe6c00aa92ab24e7a5631be1ea217b2a3fa0f5c9c1a345456dedaebf", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/path.ts": "73db7b3bf8df81b7af4085a9fef4d5648ac083a4e826ae98c0dcb96b0fa64e6b", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/read.ts": "32010c32c2d99be0fd6ba2566f04a30c8b16f5d0c9eaee18ca80e472d5ab2644", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/utils/tokens.ts": "7bb3731b4ee3232f38a6aec9c5364d7492b2ea4fcfe7321115a9af25a1ff2038", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/watcher.ts": "8c986e5546dea6c6dbc5ff593f2b734973588d465c3a2f5f4b1eacc0f1b72f5b", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/writer.ts": "1c25444a80f9b328979451e8e5c4d6154a6d66f7181d70136b041c547cbf3952", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/cli.ts": "18c71319d8d7712a5896df0f8f4f5a8bdf4b9a3860c677b490a72a4434e6898b", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/colors.ts": "eae71a8d83eb15ab20c140b94987a1c789e1ece31d99b3ec2841506eaff854bc", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/crypto.ts": "ee2052ca083ad5c5b89220a9ae1ba6c38cbcefa3a8cd8771c81e7e1469eeffae", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/dom.ts": "08bdf42363093cae0e0a3f6efb3c500cfc8a7a6ab09d73fa69d212a6c907d547", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/esbuild.ts": "6f54b993c41ebe16d91c7d106f8a41b57bf9f4aad0025222ba37221927e61870", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/front_matter.ts": "f5e5780d4a0502d50cde1f42a4aa7830756dc9bd0251ba7448cecd1eaa60878f", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/fs.ts": "622088d0a6846c8ba26da2e805a50d10d994647c6593362edff9b9dc0bea1e55", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/http.ts": "9ac1e4130a1de55b5ff4343cc0ee1d660eb3bdb0dfdc2dd1680bfe1ad904bce2", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/jsonc.ts": "abe9c7b88ded304adac6e1eec70a858ae5dcce95ca53d91bde425a2edf3a653d", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/lightningcss.ts": "3693059a5b5b4b3946ec00fd9346ad20b41543f763e45e970eae6457fa372943", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/markdown_it.ts": "6b9b8e9346810990cbbfedff65a8af37b5fe56880d68bfdbd1a1e31cfc93efd4", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/module.ts": "efb42611b158c42d86dac524fe9228a662709d397c0e835198451b15e6b832b4", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/path.ts": "222428da77a11a963236fdf6501aa3396ab313aefea9bba79b35c6073eb18366", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/semver.ts": "4089dbcbad21636cb3d743eb61b3727674c133fba17556f0738b799f1a5a9441", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/toml.ts": "61831fd046e8df6b35ccdacc7fc3b3ae7c0a2450b2f368cf933e518d243b3881", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/vento.ts": "a13fe85a6592a13e9f2a861fe73612315bbd24fe227152272a1cb76635c296a3", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/deps/yaml.ts": "e9a23af8531f36fc4350902845a9df553fd65b74925c8e96da828a8ee583c379", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/middlewares/not_found.ts": "6836ef5f8ecd4852d6bc89d4e6396b31700d2ef48d76a5f4390a1d26ba6bec1f", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/mod.ts": "c7864bfc76593c46f1a091aa78366b9567db2cf204e410c731f2382530900cfe", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/plugins/json.ts": "b7680d0593775bed69f7d5c83c861e490a95159efe7800c3eeed45fa6caad42f", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/plugins/markdown.ts": "2a6f40e67e188ebb8522faf7f959a41531479faef4e981cd2b64fd6e8960f9dd", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/plugins/modules.ts": "abbbe43cb6f237d36f02934c0d0fcffe59648d555b490229ebe6979081331957", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/plugins/paginate.ts": "29ff5d5b749f986d08e19ec509b1b2c61cb91b7a6fb9347b7aea51faf7efbdaa", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/plugins/search.ts": "d89a0fb5f11c33d75a3e1865db5df85dd9a7eec14ec33348da23a4dfbbccb157", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/plugins/toml.ts": "808f34d42bce68f6da4f526157772186fc2919d109dfd8b2a7cacba39569c2d8", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/plugins/url.ts": "15f2e80b6fcbf86f8795a3676b8d533bab003ac016ff127e58165a6ac3bffc1a", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/plugins/vento.ts": "5970a4bda08a1706bdd81fe8f82b0a424df783f4e25983b67de112dcca024834", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/plugins/yaml.ts": "1f57185f048716552c9786d1d160bc1537ec9e09b35efd64b9be92dbacb9f680", + "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/types.ts": "79e135b4a9e2d7aa69d6049ed1b5d3438e02b6ca06c7a9092910636aba341821", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/core/environment.ts": "1da293f6a837590ce95a829638b0ffdefd6b18ac5de54b6a55a284febf6d382f", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/core/errors.ts": "8606b682b465d598a394feea135dd2f84033b5ef2a61a23d116ccb782a0a547a", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/core/js.ts": "83084240150d7e8b83e43ec8fcf78564a8ba8599c3d517976efbb11b208903b2", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/core/reserved.ts": "e3ccafb4e5524b9c51fa14fa0e4bf17fd9bdd791848f17afa2aeb97835c486d1", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/core/tokenizer.ts": "460faa3de0e561e5046c46528c8bcbfc46b9de576af7ec8c4a8954a61a80ec76", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/loaders/file.ts": "83f579ac39838642bb45c6ddf48c05c08134cdd95fa7364d004fb443e972196a", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/mod.ts": "26081287509a87d81c51917795ff94ea80056c43599af8140bb5f666f0aaa767", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/auto_trim.ts": "5df5091763543493dba1160f805652c67892d3ecf06293bbfecdac71ed3c7d90", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/default.ts": "bab4f1f3e38a6ea3673d6aaa8409ca79ec241daa07a18582b4f2549cc5532200", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/echo.ts": "26109b7d47d33621dd764136be665052a48b3e68aeda2bd961504702f14c829f", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/empty.ts": "59b9ac2e6e30db7cf505c1ade3169af0010d08bb96176ff25f10eb4ac13e217e", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/escape.ts": "1db6eb7b22f88bbf94d21636c9b156ec4868e10bbcfa7dc5eae7113c36ef7b8a", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/export.ts": "40308665aeee8edeab4618d1838c1843c03cba8a7803ed9a27fceadf7a10bbef", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/for.ts": "a893a3de2c5cab43d5018cb80718ea46377c172d550e7a8ead076f00c58d59bf", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/function.ts": "472bdbe0bffb7d38c59003b02510cf85a78a35927219bc6a02ac2d4fde8b6597", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/if.ts": "db13776a5b9e7988f65c27943c344bec7463c5f3162a06cc4da1a313d7109195", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/import.ts": "b6fb6cc922c0897d15918d10766bbbd51069336780acdc8bbf23922ed870a1b3", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/include.ts": "7b39ae093e4c25f0de5f0b174c00c06c30bf7092b55f00a58a64968fa8ceabde", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/js.ts": "f5a7fd8cc48cb1b1dc0b396e3d1fee4664cf28932dc5f5f301e38243e0e987dc", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/layout.ts": "9c90bb58cc5302af48b97320f8eb128b37bb29f6128d7a75c8dd7b6625b870e1", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/mod.ts": "2bd756b503b1d100014fa02f92e2e8d07d894c6297358232a685c4a1527908c7", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/set.ts": "cbe42b771a04203b6fc1c178e655fa2536ab90ae67e52c083cf7c71f37c62711", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/trim.ts": "8d33271327b09ffd8f569ebde85125b1324fa9538a54d6072ac97a9fb5d24264", + "https://cdn.jsdelivr.net/gh/ventojs/vento@2.4.0/plugins/unescape.ts": "1c56f0310c7757880df7684fc6b7bf9efd27fdb6b929b89626802f5a99cb93ee" + }, "workspace": { "dependencies": [ "jsr:@std/assert@^1.0.19", "jsr:@std/html@^1.0.7", - "npm:@types/markdown-it@^14.2.0", "npm:markdown-it-anchor@^9.2.1", - "npm:markdown-it@^14.3.0" + "npm:markdown-it@15" ] } } diff --git a/maak.scm b/maak.scm new file mode 100644 index 0000000..5b58c78 --- /dev/null +++ b/maak.scm @@ -0,0 +1,66 @@ +(define-module (maak) + #:declarative? #t + #:use-module (maak maak)) + +(define %deno "deno") + +(define (run-deno . args) + "Deno arguments helper" + ($ (cons %deno args))) + +(define (fmt) + "Format sources with deno fmt" + (log-info "Formatting source...") + (run-deno "fmt")) + +(define (fmt-check) + "Verify formatting without writing." + (run-deno "fmt" "--check")) + +(define (lint) + "Run deno lint." + (run-deno "lint")) + +(define (check) + "Type-check sources and JSDoc code blocks." + (run-deno "check" "--doc")) + +(define (test) + "Run the markdown-it unit tests." + (run-deno "test" "-A" "tests/mod_test.ts")) + +(define (test-lume) + "Run the Lume integration snapshots." + (run-deno "test" "-A" "tests/lume_test.ts")) + +(define (snap) + "Regenerate Lume snapshots." + (run-deno "test" "-A" "-u" "tests/lume_test.ts")) + +(define (ci) + "Full pipeline with coverage." + (fmt-check) + (lint) + (check) + (run-deno "test" "-A" "--coverage=coverage") + (run-deno "coverage" "coverage")) + +(define (publish-dry) + "Validate the package without uploading." + (run-deno "publish" "--dry-run")) + +(define (publish) + "Publish to JSR after the full pipeline." + (default) + (run-deno "publish")) + +(define (clean) + "Remove coverage output." + (delete-file-recursively "coverage")) + +(define (default) + "fmt-check + lint + check + test." + (fmt-check) + (lint) + (check) + (test)) diff --git a/mod.ts b/mod.ts index 1b7733d..4f250b9 100644 --- a/mod.ts +++ b/mod.ts @@ -219,13 +219,13 @@ const renderList = (nodes: TocNode[], o: Resolved): string => { * @throws {TypeError} See `resolve()` at the internal API. * * @example - * ```ts + * ```ts ignore * // Markdown: `[[toc]]` alone on a line. * md.use(toc({ level: [2, 3], listType: "ul" })); * ``` * * @example - * ```ts + * ```ts ignore * const env = {}; * md.renderer.render(md.parse(src, env), {}, env); * env.toc; // TocNode[] diff --git a/tests/fixtures/bad-levels.md b/tests/fixtures/bad-levels.md new file mode 100644 index 0000000..c065c81 --- /dev/null +++ b/tests/fixtures/bad-levels.md @@ -0,0 +1,5 @@ +${toc} + +## One + +#### Four diff --git a/tests/fixtures/basic.md b/tests/fixtures/basic.md new file mode 100644 index 0000000..a7802c9 --- /dev/null +++ b/tests/fixtures/basic.md @@ -0,0 +1,9 @@ +${toc} + +# Title + +## First + +### Nested + +## Second diff --git a/tests/fixtures/code-blocks.md b/tests/fixtures/code-blocks.md new file mode 100644 index 0000000..12cbc8a --- /dev/null +++ b/tests/fixtures/code-blocks.md @@ -0,0 +1,7 @@ +${toc} + +## Real + +``` +## Not A Heading +``` diff --git a/tests/fixtures/dupes.md b/tests/fixtures/dupes.md new file mode 100644 index 0000000..a5e3d85 --- /dev/null +++ b/tests/fixtures/dupes.md @@ -0,0 +1,5 @@ +${toc} + +## Dupe + +## Dupe diff --git a/tests/fixtures/empty.md b/tests/fixtures/empty.md new file mode 100644 index 0000000..9191aad --- /dev/null +++ b/tests/fixtures/empty.md @@ -0,0 +1 @@ +${toc} diff --git a/tests/fixtures/heading-markup.md b/tests/fixtures/heading-markup.md new file mode 100644 index 0000000..82f7075 --- /dev/null +++ b/tests/fixtures/heading-markup.md @@ -0,0 +1,5 @@ +${toc} + +## **Bold** y `Code` + +## Less < and More > diff --git a/tests/fixtures/indented-details-urutau.md b/tests/fixtures/indented-details-urutau.md new file mode 100644 index 0000000..4cd2053 --- /dev/null +++ b/tests/fixtures/indented-details-urutau.md @@ -0,0 +1,8 @@ +
+ Índice: + + ${toc} + +
+ +## Título Urutaú diff --git a/tests/fixtures/unicode.md b/tests/fixtures/unicode.md new file mode 100644 index 0000000..ed15c93 --- /dev/null +++ b/tests/fixtures/unicode.md @@ -0,0 +1,3 @@ +${toc} + +## Ñandú año diff --git a/tests/lume_tests.ts b/tests/lume_tests.ts new file mode 100644 index 0000000..f260d83 --- /dev/null +++ b/tests/lume_tests.ts @@ -0,0 +1,18 @@ +import lume from "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/mod.ts"; +import { EmptyWriter } from "https://cdn.jsdelivr.net/gh/lumeland/lume@3.3.1/core/writer.ts"; +import { toc } from "../mod.ts"; + +Deno.test("toc en lume", async (t: Deno.TestContext): Promise => { + const site = lume({ cwd: import.meta.dirname, src: "fixtures" }, { + markdown: { + options: { html: true }, + plugins: [toc({ level: [2, 3], listType: "ul" })], + }, + }); + site.writer = new EmptyWriter(); // no escribe a disco + await site.build(); + + for (const page of site.pages) { + await t.assertSnapshot([page.outputPath, page.content]); + } +}); diff --git a/tests/mod_test.ts b/tests/mod_test.ts index 1680655..fd6ab07 100644 --- a/tests/mod_test.ts +++ b/tests/mod_test.ts @@ -5,13 +5,12 @@ import { assertStringIncludes, assertThrows, } from "@std/assert"; -import MarkdownIt from "markdown-it"; +import MarkdownIt, { type MarkdownIt as MD } from "markdown-it"; import anchor from "markdown-it-anchor"; import { defaultSlugify, toc } from "../mod.ts"; import { TocNode, TocOptions } from "../types.ts"; -const mk = (o?: TocOptions): MarkdownIt => - new MarkdownIt({ html: true }).use(toc(o)); +const mk = (o?: TocOptions): MD => new MarkdownIt({ html: true }).use(toc(o)); Deno.test("placeholder variants", () => { for (const p of ["${toc}", "[[toc]]", "[toc]", "[[_toc_]]", "[_TOC_]"]) { @@ -57,21 +56,25 @@ Deno.test("level number is a minimum", () => { }); Deno.test("reuses markdown-it-anchor ids even when registered first", () => { - const md: MarkdownIt = new MarkdownIt() + const md: MD = new MarkdownIt() .use(toc()) .use(anchor, { slugify: (s: string) => "x-" + s.toLowerCase() }); - const html = md.render("[[toc]]\n\n# Hello\n"); + const html: string = md.render("[[toc]]\n\n# Hello\n"); assertMatch(html, /href="#x-hello"/); assertMatch(html, /

{ - const md: MarkdownIt = new MarkdownIt().use(toc()).use( + const md: MD = new MarkdownIt().use(toc()).use( anchor, ); const html: string = md.render("[[toc]]\n\n# A\n\n# A\n"); - const ids = [...html.matchAll(/

m[1]); - const hrefs = [...html.matchAll(/href="#([^"]+)"/g)].map((m) => m[1]); + const ids: string[] = [...html.matchAll(/

+ m[1] + ); + const hrefs: string[] = [...html.matchAll(/href="#([^"]+)"/g)].map((m) => + m[1] + ); assertEquals(hrefs, ids); }); @@ -137,7 +140,7 @@ Deno.test("two placeholders both render", () => { }); Deno.test("reentrancy: parse A, parse B, render A", () => { - const md: MarkdownIt = mk(); + const md: MD = mk(); const a = md.parse("[[toc]]\n\n# AAA\n", {}); md.parse("[[toc]]\n\n# BBB\n", {}); assertMatch(md.renderer.render(a, md.options, {}), /AAA/); @@ -181,7 +184,7 @@ Deno.test("defaultSlugify", () => { }); Deno.test("permalink injection does not leak whitespace into labels", () => { - const md: MarkdownIt = new MarkdownIt() + const md: MD = new MarkdownIt() .use(toc()) .use(anchor, { permalink: anchor.permalink.linkInsideHeader({ diff --git a/types.ts b/types.ts index 6fe15bf..26335b3 100644 --- a/types.ts +++ b/types.ts @@ -112,8 +112,8 @@ export interface TocOptions { * yourself with the provided helper or you own the XSS, your choice, hacker * * @example - * ```ts - * format: (text, escape) => escape(text) + " (top)" + * ```ts ignore + * format: (text , escape) => escape(text) + " (top)" * ``` */ format?: (text: string, escape: (s: string) => string) => string;