add nonfunctional validateCSS plugin

pyrox.dev c8828f26 0cedf211

verified
+1
deno.json
··· 2 2 "imports": { 3 3 "@img/sharp-wasm32": "npm:@img/sharp-wasm32@0.33.5", 4 4 "@nolebase/markdown-it-bi-directional-links": "npm:@nolebase/markdown-it-bi-directional-links@^2.15.0", 5 + "csstree-validator": "npm:csstree-validator@^4.0.1", 5 6 "lume/": "https://cdn.jsdelivr.net/gh/lumeland/lume@f6e8b76726f84055e7d56f201bad44ab4162ed9c/", 6 7 "markdown-it-obsidian-callouts": "npm:markdown-it-obsidian-callouts@^0.3.1", 7 8 "html-validate": "npm:html-validate@9.4.0"
+42
deno.lock
··· 38 38 "npm:@tailwindcss/oxide@4.0.3": "4.0.3", 39 39 "npm:@tailwindcss/oxide@4.0.6": "4.0.6", 40 40 "npm:@types/estree@1.0.6": "1.0.6", 41 + "npm:csstree-validator@^4.0.1": "4.0.1", 41 42 "npm:date-fns@4.1.0": "4.1.0", 42 43 "npm:estree-walker@3.0.3": "3.0.3", 43 44 "npm:html-validate@9.4.0": "9.4.0_ajv@8.17.1", ··· 398 399 "require-from-string" 399 400 ] 400 401 }, 402 + "ansi-colors@4.1.3": { 403 + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" 404 + }, 401 405 "ansi-regex@5.0.1": { 402 406 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 403 407 }, ··· 426 430 "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 427 431 "dependencies": [ 428 432 "balanced-match" 433 + ] 434 + }, 435 + "clap@3.1.1": { 436 + "integrity": "sha512-vp42956Ax06WwaaheYEqEOgXZ3VKJxgccZ0gJL0HpyiupkIS9RVJFo5eDU1BPeQAOqz+cclndZg4DCqG1sJReQ==", 437 + "dependencies": [ 438 + "ansi-colors" 429 439 ] 430 440 }, 431 441 "color-convert@2.0.1": { ··· 489 499 "source-map-js" 490 500 ] 491 501 }, 502 + "css-tree@3.1.0": { 503 + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", 504 + "dependencies": [ 505 + "mdn-data@2.12.2", 506 + "source-map-js" 507 + ] 508 + }, 492 509 "css-what@6.1.0": { 493 510 "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" 494 511 }, ··· 498 515 "css-tree@2.2.1" 499 516 ] 500 517 }, 518 + "csstree-validator@4.0.1": { 519 + "integrity": "sha512-ywwDonvo6BuhXkrNSCAW4JLxsNd8HzpOtVVv22W5BNtZNeviZORSOLb7CLskeaKnL9jjvi24kL7UNh5m52ygpw==", 520 + "dependencies": [ 521 + "clap", 522 + "css-tree@3.1.0", 523 + "enhanced-resolve" 524 + ] 525 + }, 501 526 "date-fns@4.1.0": { 502 527 "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==" 503 528 }, ··· 543 568 }, 544 569 "emoji-regex@9.2.2": { 545 570 "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" 571 + }, 572 + "enhanced-resolve@5.18.1": { 573 + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", 574 + "dependencies": [ 575 + "graceful-fs", 576 + "tapable" 577 + ] 546 578 }, 547 579 "entities@4.5.0": { 548 580 "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" ··· 583 615 "path-scurry" 584 616 ] 585 617 }, 618 + "graceful-fs@4.2.11": { 619 + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 620 + }, 586 621 "html-validate@9.4.0_ajv@8.17.1": { 587 622 "integrity": "sha512-Io8vjeAf2JJJTHJDGvozVB6Vv/IZRkNRruSENg9lmLzE1gUcr77sIdtE2rzwLkBsCESDv5+nAAtk2TCer78jxA==", 588 623 "dependencies": [ ··· 673 708 }, 674 709 "mdn-data@2.0.30": { 675 710 "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" 711 + }, 712 + "mdn-data@2.12.2": { 713 + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==" 676 714 }, 677 715 "mdurl@2.0.0": { 678 716 "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" ··· 838 876 }, 839 877 "tailwindcss@4.0.6": { 840 878 "integrity": "sha512-mysewHYJKaXgNOW6pp5xon/emCsfAMnO8WMaGKZZ35fomnR/T5gYnRg2/yRTTrtXiEl1tiVkeRt0eMO6HxEZqw==" 879 + }, 880 + "tapable@2.2.1": { 881 + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" 841 882 }, 842 883 "tinyglobby@0.2.12_picomatch@4.0.2": { 843 884 "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", ··· 1151 1192 "dependencies": [ 1152 1193 "npm:@img/sharp-wasm32@0.33.5", 1153 1194 "npm:@nolebase/markdown-it-bi-directional-links@^2.15.0", 1195 + "npm:csstree-validator@^4.0.1", 1154 1196 "npm:html-validate@9.4.0", 1155 1197 "npm:markdown-it-obsidian-callouts@~0.3.1" 1156 1198 ]
+20
plugins/validateCSS.ts
··· 1 + import { validate } from "csstree-validator"; 2 + import "lume/types.ts"; 3 + import { log } from "lume/core/utils/log.ts"; 4 + 5 + // CSS Validation Plugin, by dish 6 + // version 1.0.0 7 + 8 + export default function () { 9 + return (site: Lume.Site) => { 10 + site.process([".css"], validateStylesheets); 11 + 12 + function validateStylesheets(pages: Lume.Page[]) { 13 + for (const page of pages) { 14 + // const report = validate(page.content, page.sourcePath); 15 + log.info(page.content as string); 16 + log.error(validate(page.content as string, page.sourcePath)); 17 + } 18 + } 19 + }; 20 + }
+1 -1
plugins/validateHTML.ts
··· 3 3 import { merge } from "lume/core/utils/object.ts"; 4 4 import { log } from "lume/core/utils/log.ts"; 5 5 6 - // validateHTML Plugin, by dish 6 + // HTML Validation Plugin, by dish 7 7 // version 1.0.1 8 8 9 9 export const defaults: ConfigData = {