this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

initial blog implementation

alice 9facd99d c2a8666a

+1112 -1
+6
_posts/0001.md
··· 1 + --- 2 + title: First post 3 + date: 2023-04-08 4 + --- 5 + 6 + Hello world!
+11 -1
package.json
··· 9 9 "lint": "next lint" 10 10 }, 11 11 "dependencies": { 12 + "@leafac/rehype-shiki": "^2.2.1", 12 13 "@types/node": "^20.1.0", 13 14 "@types/react": "^18.2.6", 14 15 "@types/react-dom": "^18.2.4", 15 16 "autoprefixer": "^10.4.14", 16 17 "eslint": "^8.40.0", 17 18 "eslint-config-next": "^13.4.1", 19 + "gray-matter": "^4.0.3", 18 20 "next": "^13.4.1", 19 21 "postcss": "^8.4.23", 20 22 "react": "^18.2.0", 21 23 "react-dom": "^18.2.0", 24 + "rehype-autolink-headings": "^6.1.1", 25 + "rehype-slug": "^5.1.0", 26 + "rehype-stringify": "^9.0.3", 27 + "remark-gfm": "^3.0.1", 28 + "remark-parse": "^10.0.1", 29 + "remark-rehype": "^10.1.0", 30 + "shiki": "^0.14.2", 22 31 "tailwindcss": "^3.3.2", 23 - "typescript": "^5.0.4" 32 + "typescript": "^5.0.4", 33 + "unified": "^10.1.2" 24 34 } 25 35 }
+964
pnpm-lock.yaml
··· 1 1 lockfileVersion: '6.0' 2 2 3 3 dependencies: 4 + '@leafac/rehype-shiki': 5 + specifier: ^2.2.1 6 + version: 2.2.1(shiki@0.14.2) 4 7 '@types/node': 5 8 specifier: ^20.1.0 6 9 version: 20.1.0 ··· 19 22 eslint-config-next: 20 23 specifier: ^13.4.1 21 24 version: 13.4.1(eslint@8.40.0)(typescript@5.0.4) 25 + gray-matter: 26 + specifier: ^4.0.3 27 + version: 4.0.3 22 28 next: 23 29 specifier: ^13.4.1 24 30 version: 13.4.1(react-dom@18.2.0)(react@18.2.0) ··· 31 37 react-dom: 32 38 specifier: ^18.2.0 33 39 version: 18.2.0(react@18.2.0) 40 + rehype-autolink-headings: 41 + specifier: ^6.1.1 42 + version: 6.1.1 43 + rehype-slug: 44 + specifier: ^5.1.0 45 + version: 5.1.0 46 + rehype-stringify: 47 + specifier: ^9.0.3 48 + version: 9.0.3 49 + remark-gfm: 50 + specifier: ^3.0.1 51 + version: 3.0.1 52 + remark-parse: 53 + specifier: ^10.0.1 54 + version: 10.0.1 55 + remark-rehype: 56 + specifier: ^10.1.0 57 + version: 10.1.0 58 + shiki: 59 + specifier: ^0.14.2 60 + version: 0.14.2 34 61 tailwindcss: 35 62 specifier: ^3.3.2 36 63 version: 3.3.2 37 64 typescript: 38 65 specifier: ^5.0.4 39 66 version: 5.0.4 67 + unified: 68 + specifier: ^10.1.2 69 + version: 10.1.2 40 70 41 71 packages: 42 72 ··· 143 173 '@jridgewell/sourcemap-codec': 1.4.14 144 174 dev: false 145 175 176 + /@leafac/html@3.0.3: 177 + resolution: {integrity: sha512-/98cnqmt4WztcEG7VAs19Bsebp1PldgV4prnkL5oB9xtRMnc1JbupbD0oFSfmAqxgyU8fiJbk2B/AioNPVzkHg==} 178 + dependencies: 179 + he: 1.2.0 180 + sanitize-xml-string: 1.1.0 181 + dev: false 182 + 183 + /@leafac/rehype-shiki@2.2.1(shiki@0.14.2): 184 + resolution: {integrity: sha512-rN2r98YDdy1q61TppykZmk1np01K6jFBC/3FsLHbDYhMu0wpJ+1XW8LjrjotpBSoyy0MOzrnlVf74nUT6RJ4jA==} 185 + peerDependencies: 186 + shiki: ^0.11.1 187 + dependencies: 188 + '@leafac/html': 3.0.3 189 + hast-util-to-text: 3.1.2 190 + rehype-parse: 8.0.4 191 + shiki: 0.14.2 192 + unified: 10.1.2 193 + unist-util-modify-children: 3.1.1 194 + dev: false 195 + 146 196 /@next/env@13.4.1: 147 197 resolution: {integrity: sha512-eD6WCBMFjLFooLM19SIhSkWBHtaFrZFfg2Cxnyl3vS3DAdFRfnx5TY2RxlkuKXdIRCC0ySbtK9JXXt8qLCqzZg==} 148 198 dev: false ··· 277 327 tslib: 2.5.0 278 328 dev: false 279 329 330 + /@types/debug@4.1.7: 331 + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} 332 + dependencies: 333 + '@types/ms': 0.7.31 334 + dev: false 335 + 336 + /@types/hast@2.3.4: 337 + resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} 338 + dependencies: 339 + '@types/unist': 2.0.6 340 + dev: false 341 + 280 342 /@types/json5@0.0.29: 281 343 resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 282 344 dev: false 283 345 346 + /@types/mdast@3.0.11: 347 + resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} 348 + dependencies: 349 + '@types/unist': 2.0.6 350 + dev: false 351 + 352 + /@types/ms@0.7.31: 353 + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} 354 + dev: false 355 + 284 356 /@types/node@20.1.0: 285 357 resolution: {integrity: sha512-O+z53uwx64xY7D6roOi4+jApDGFg0qn6WHcxe5QeqjMaTezBO/mxdfFXIVAVVyNWKx84OmPB3L8kbVYOTeN34A==} 358 + dev: false 359 + 360 + /@types/parse5@6.0.3: 361 + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} 286 362 dev: false 287 363 288 364 /@types/prop-types@15.7.5: ··· 307 383 resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 308 384 dev: false 309 385 386 + /@types/unist@2.0.6: 387 + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} 388 + dev: false 389 + 310 390 /@typescript-eslint/parser@5.59.2(eslint@8.40.0)(typescript@5.0.4): 311 391 resolution: {integrity: sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==} 312 392 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} ··· 397 477 engines: {node: '>=8'} 398 478 dev: false 399 479 480 + /ansi-sequence-parser@1.1.0: 481 + resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} 482 + dev: false 483 + 400 484 /ansi-styles@4.3.0: 401 485 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 402 486 engines: {node: '>=8'} ··· 420 504 resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 421 505 dev: false 422 506 507 + /argparse@1.0.10: 508 + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 509 + dependencies: 510 + sprintf-js: 1.0.3 511 + dev: false 512 + 423 513 /argparse@2.0.1: 424 514 resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 425 515 dev: false ··· 448 538 is-string: 1.0.7 449 539 dev: false 450 540 541 + /array-iterate@2.0.1: 542 + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} 543 + dev: false 544 + 451 545 /array-union@2.1.0: 452 546 resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 453 547 engines: {node: '>=8'} ··· 517 611 resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} 518 612 dependencies: 519 613 deep-equal: 2.2.1 614 + dev: false 615 + 616 + /bail@2.0.2: 617 + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} 520 618 dev: false 521 619 522 620 /balanced-match@1.0.2: ··· 600 698 resolution: {integrity: sha512-8aUpZ7sjhlOyiNsg+pgcrTTPUXKh+rg544QYHSvQErljVEKJzvkYkCR/hUFeeVoEfTToUtY9cUKNRC7+c45YkA==} 601 699 dev: false 602 700 701 + /ccount@2.0.1: 702 + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 703 + dev: false 704 + 603 705 /chalk@4.1.2: 604 706 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 605 707 engines: {node: '>=10'} ··· 608 710 supports-color: 7.2.0 609 711 dev: false 610 712 713 + /character-entities-html4@2.1.0: 714 + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} 715 + dev: false 716 + 717 + /character-entities-legacy@3.0.0: 718 + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} 719 + dev: false 720 + 721 + /character-entities@2.0.2: 722 + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 723 + dev: false 724 + 611 725 /chokidar@3.5.3: 612 726 resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 613 727 engines: {node: '>= 8.10.0'} ··· 636 750 637 751 /color-name@1.1.4: 638 752 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 753 + dev: false 754 + 755 + /comma-separated-tokens@2.0.3: 756 + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 639 757 dev: false 640 758 641 759 /commander@4.1.1: ··· 693 811 ms: 2.1.2 694 812 dev: false 695 813 814 + /decode-named-character-reference@1.0.2: 815 + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} 816 + dependencies: 817 + character-entities: 2.0.2 818 + dev: false 819 + 696 820 /deep-equal@2.2.1: 697 821 resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} 698 822 dependencies: ··· 751 875 object-keys: 1.1.1 752 876 dev: false 753 877 878 + /dequal@2.0.3: 879 + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 880 + engines: {node: '>=6'} 881 + dev: false 882 + 754 883 /didyoumean@1.2.2: 755 884 resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 885 + dev: false 886 + 887 + /diff@5.1.0: 888 + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} 889 + engines: {node: '>=0.3.1'} 756 890 dev: false 757 891 758 892 /dir-glob@3.0.1: ··· 884 1018 engines: {node: '>=10'} 885 1019 dev: false 886 1020 1021 + /escape-string-regexp@5.0.0: 1022 + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1023 + engines: {node: '>=12'} 1024 + dev: false 1025 + 887 1026 /eslint-config-next@13.4.1(eslint@8.40.0)(typescript@5.0.4): 888 1027 resolution: {integrity: sha512-ajuxjCkW1hvirr0EQZb3/B/bFH52Z7CT89uCtTcICFL9l30i5c8hN4p0LXvTjdOXNPV5fEDcxBgGHgXdzTj1/A==} 889 1028 peerDependencies: ··· 1135 1274 eslint-visitor-keys: 3.4.1 1136 1275 dev: false 1137 1276 1277 + /esprima@4.0.1: 1278 + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1279 + engines: {node: '>=4'} 1280 + hasBin: true 1281 + dev: false 1282 + 1138 1283 /esquery@1.5.0: 1139 1284 resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1140 1285 engines: {node: '>=0.10'} ··· 1189 1334 strip-final-newline: 3.0.0 1190 1335 dev: false 1191 1336 1337 + /extend-shallow@2.0.1: 1338 + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} 1339 + engines: {node: '>=0.10.0'} 1340 + dependencies: 1341 + is-extendable: 0.1.1 1342 + dev: false 1343 + 1344 + /extend@3.0.2: 1345 + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1346 + dev: false 1347 + 1192 1348 /fast-deep-equal@3.1.3: 1193 1349 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1194 1350 dev: false ··· 1317 1473 resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} 1318 1474 dev: false 1319 1475 1476 + /github-slugger@2.0.0: 1477 + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} 1478 + dev: false 1479 + 1320 1480 /glob-parent@5.1.2: 1321 1481 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1322 1482 engines: {node: '>= 6'} ··· 1415 1575 resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1416 1576 dev: false 1417 1577 1578 + /gray-matter@4.0.3: 1579 + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} 1580 + engines: {node: '>=6.0'} 1581 + dependencies: 1582 + js-yaml: 3.14.1 1583 + kind-of: 6.0.3 1584 + section-matter: 1.0.0 1585 + strip-bom-string: 1.0.0 1586 + dev: false 1587 + 1418 1588 /has-bigints@1.0.2: 1419 1589 resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1420 1590 dev: false ··· 1454 1624 function-bind: 1.1.1 1455 1625 dev: false 1456 1626 1627 + /hast-util-from-parse5@7.1.2: 1628 + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} 1629 + dependencies: 1630 + '@types/hast': 2.3.4 1631 + '@types/unist': 2.0.6 1632 + hastscript: 7.2.0 1633 + property-information: 6.2.0 1634 + vfile: 5.3.7 1635 + vfile-location: 4.1.0 1636 + web-namespaces: 2.0.1 1637 + dev: false 1638 + 1639 + /hast-util-has-property@2.0.1: 1640 + resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} 1641 + dev: false 1642 + 1643 + /hast-util-heading-rank@2.1.1: 1644 + resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==} 1645 + dependencies: 1646 + '@types/hast': 2.3.4 1647 + dev: false 1648 + 1649 + /hast-util-is-element@2.1.3: 1650 + resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} 1651 + dependencies: 1652 + '@types/hast': 2.3.4 1653 + '@types/unist': 2.0.6 1654 + dev: false 1655 + 1656 + /hast-util-parse-selector@3.1.1: 1657 + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} 1658 + dependencies: 1659 + '@types/hast': 2.3.4 1660 + dev: false 1661 + 1662 + /hast-util-raw@7.2.3: 1663 + resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} 1664 + dependencies: 1665 + '@types/hast': 2.3.4 1666 + '@types/parse5': 6.0.3 1667 + hast-util-from-parse5: 7.1.2 1668 + hast-util-to-parse5: 7.1.0 1669 + html-void-elements: 2.0.1 1670 + parse5: 6.0.1 1671 + unist-util-position: 4.0.4 1672 + unist-util-visit: 4.1.2 1673 + vfile: 5.3.7 1674 + web-namespaces: 2.0.1 1675 + zwitch: 2.0.4 1676 + dev: false 1677 + 1678 + /hast-util-to-html@8.0.4: 1679 + resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} 1680 + dependencies: 1681 + '@types/hast': 2.3.4 1682 + '@types/unist': 2.0.6 1683 + ccount: 2.0.1 1684 + comma-separated-tokens: 2.0.3 1685 + hast-util-raw: 7.2.3 1686 + hast-util-whitespace: 2.0.1 1687 + html-void-elements: 2.0.1 1688 + property-information: 6.2.0 1689 + space-separated-tokens: 2.0.2 1690 + stringify-entities: 4.0.3 1691 + zwitch: 2.0.4 1692 + dev: false 1693 + 1694 + /hast-util-to-parse5@7.1.0: 1695 + resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} 1696 + dependencies: 1697 + '@types/hast': 2.3.4 1698 + comma-separated-tokens: 2.0.3 1699 + property-information: 6.2.0 1700 + space-separated-tokens: 2.0.2 1701 + web-namespaces: 2.0.1 1702 + zwitch: 2.0.4 1703 + dev: false 1704 + 1705 + /hast-util-to-string@2.0.0: 1706 + resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} 1707 + dependencies: 1708 + '@types/hast': 2.3.4 1709 + dev: false 1710 + 1711 + /hast-util-to-text@3.1.2: 1712 + resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==} 1713 + dependencies: 1714 + '@types/hast': 2.3.4 1715 + '@types/unist': 2.0.6 1716 + hast-util-is-element: 2.1.3 1717 + unist-util-find-after: 4.0.1 1718 + dev: false 1719 + 1720 + /hast-util-whitespace@2.0.1: 1721 + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} 1722 + dev: false 1723 + 1724 + /hastscript@7.2.0: 1725 + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} 1726 + dependencies: 1727 + '@types/hast': 2.3.4 1728 + comma-separated-tokens: 2.0.3 1729 + hast-util-parse-selector: 3.1.1 1730 + property-information: 6.2.0 1731 + space-separated-tokens: 2.0.2 1732 + dev: false 1733 + 1734 + /he@1.2.0: 1735 + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 1736 + hasBin: true 1737 + dev: false 1738 + 1739 + /html-void-elements@2.0.1: 1740 + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} 1741 + dev: false 1742 + 1457 1743 /human-signals@2.1.0: 1458 1744 resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1459 1745 engines: {node: '>=10.17.0'} ··· 1539 1825 has-tostringtag: 1.0.0 1540 1826 dev: false 1541 1827 1828 + /is-buffer@2.0.5: 1829 + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} 1830 + engines: {node: '>=4'} 1831 + dev: false 1832 + 1542 1833 /is-callable@1.2.7: 1543 1834 resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1544 1835 engines: {node: '>= 0.4'} ··· 1567 1858 resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} 1568 1859 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1569 1860 hasBin: true 1861 + dev: false 1862 + 1863 + /is-extendable@0.1.1: 1864 + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} 1865 + engines: {node: '>=0.10.0'} 1570 1866 dev: false 1571 1867 1572 1868 /is-extglob@2.1.1: ··· 1613 1909 /is-path-inside@3.0.3: 1614 1910 resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1615 1911 engines: {node: '>=8'} 1912 + dev: false 1913 + 1914 + /is-plain-obj@4.1.0: 1915 + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 1916 + engines: {node: '>=12'} 1616 1917 dev: false 1617 1918 1618 1919 /is-regex@1.1.4: ··· 1713 2014 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1714 2015 dev: false 1715 2016 2017 + /js-yaml@3.14.1: 2018 + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 2019 + hasBin: true 2020 + dependencies: 2021 + argparse: 1.0.10 2022 + esprima: 4.0.1 2023 + dev: false 2024 + 1716 2025 /js-yaml@4.1.0: 1717 2026 resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1718 2027 hasBin: true ··· 1735 2044 minimist: 1.2.8 1736 2045 dev: false 1737 2046 2047 + /jsonc-parser@3.2.0: 2048 + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} 2049 + dev: false 2050 + 1738 2051 /jsx-ast-utils@3.3.3: 1739 2052 resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} 1740 2053 engines: {node: '>=4.0'} ··· 1743 2056 object.assign: 4.1.4 1744 2057 dev: false 1745 2058 2059 + /kind-of@6.0.3: 2060 + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 2061 + engines: {node: '>=0.10.0'} 2062 + dev: false 2063 + 2064 + /kleur@4.1.5: 2065 + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 2066 + engines: {node: '>=6'} 2067 + dev: false 2068 + 1746 2069 /language-subtag-registry@0.3.22: 1747 2070 resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 1748 2071 dev: false ··· 1781 2104 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1782 2105 dev: false 1783 2106 2107 + /longest-streak@3.1.0: 2108 + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 2109 + dev: false 2110 + 1784 2111 /loose-envify@1.4.0: 1785 2112 resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1786 2113 hasBin: true ··· 1795 2122 yallist: 4.0.0 1796 2123 dev: false 1797 2124 2125 + /markdown-table@3.0.3: 2126 + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} 2127 + dev: false 2128 + 2129 + /mdast-util-definitions@5.1.2: 2130 + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} 2131 + dependencies: 2132 + '@types/mdast': 3.0.11 2133 + '@types/unist': 2.0.6 2134 + unist-util-visit: 4.1.2 2135 + dev: false 2136 + 2137 + /mdast-util-find-and-replace@2.2.2: 2138 + resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} 2139 + dependencies: 2140 + '@types/mdast': 3.0.11 2141 + escape-string-regexp: 5.0.0 2142 + unist-util-is: 5.2.1 2143 + unist-util-visit-parents: 5.1.3 2144 + dev: false 2145 + 2146 + /mdast-util-from-markdown@1.3.0: 2147 + resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} 2148 + dependencies: 2149 + '@types/mdast': 3.0.11 2150 + '@types/unist': 2.0.6 2151 + decode-named-character-reference: 1.0.2 2152 + mdast-util-to-string: 3.2.0 2153 + micromark: 3.1.0 2154 + micromark-util-decode-numeric-character-reference: 1.0.0 2155 + micromark-util-decode-string: 1.0.2 2156 + micromark-util-normalize-identifier: 1.0.0 2157 + micromark-util-symbol: 1.0.1 2158 + micromark-util-types: 1.0.2 2159 + unist-util-stringify-position: 3.0.3 2160 + uvu: 0.5.6 2161 + transitivePeerDependencies: 2162 + - supports-color 2163 + dev: false 2164 + 2165 + /mdast-util-gfm-autolink-literal@1.0.3: 2166 + resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} 2167 + dependencies: 2168 + '@types/mdast': 3.0.11 2169 + ccount: 2.0.1 2170 + mdast-util-find-and-replace: 2.2.2 2171 + micromark-util-character: 1.1.0 2172 + dev: false 2173 + 2174 + /mdast-util-gfm-footnote@1.0.2: 2175 + resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} 2176 + dependencies: 2177 + '@types/mdast': 3.0.11 2178 + mdast-util-to-markdown: 1.5.0 2179 + micromark-util-normalize-identifier: 1.0.0 2180 + dev: false 2181 + 2182 + /mdast-util-gfm-strikethrough@1.0.3: 2183 + resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} 2184 + dependencies: 2185 + '@types/mdast': 3.0.11 2186 + mdast-util-to-markdown: 1.5.0 2187 + dev: false 2188 + 2189 + /mdast-util-gfm-table@1.0.7: 2190 + resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} 2191 + dependencies: 2192 + '@types/mdast': 3.0.11 2193 + markdown-table: 3.0.3 2194 + mdast-util-from-markdown: 1.3.0 2195 + mdast-util-to-markdown: 1.5.0 2196 + transitivePeerDependencies: 2197 + - supports-color 2198 + dev: false 2199 + 2200 + /mdast-util-gfm-task-list-item@1.0.2: 2201 + resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} 2202 + dependencies: 2203 + '@types/mdast': 3.0.11 2204 + mdast-util-to-markdown: 1.5.0 2205 + dev: false 2206 + 2207 + /mdast-util-gfm@2.0.2: 2208 + resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} 2209 + dependencies: 2210 + mdast-util-from-markdown: 1.3.0 2211 + mdast-util-gfm-autolink-literal: 1.0.3 2212 + mdast-util-gfm-footnote: 1.0.2 2213 + mdast-util-gfm-strikethrough: 1.0.3 2214 + mdast-util-gfm-table: 1.0.7 2215 + mdast-util-gfm-task-list-item: 1.0.2 2216 + mdast-util-to-markdown: 1.5.0 2217 + transitivePeerDependencies: 2218 + - supports-color 2219 + dev: false 2220 + 2221 + /mdast-util-phrasing@3.0.1: 2222 + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} 2223 + dependencies: 2224 + '@types/mdast': 3.0.11 2225 + unist-util-is: 5.2.1 2226 + dev: false 2227 + 2228 + /mdast-util-to-hast@12.3.0: 2229 + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} 2230 + dependencies: 2231 + '@types/hast': 2.3.4 2232 + '@types/mdast': 3.0.11 2233 + mdast-util-definitions: 5.1.2 2234 + micromark-util-sanitize-uri: 1.1.0 2235 + trim-lines: 3.0.1 2236 + unist-util-generated: 2.0.1 2237 + unist-util-position: 4.0.4 2238 + unist-util-visit: 4.1.2 2239 + dev: false 2240 + 2241 + /mdast-util-to-markdown@1.5.0: 2242 + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} 2243 + dependencies: 2244 + '@types/mdast': 3.0.11 2245 + '@types/unist': 2.0.6 2246 + longest-streak: 3.1.0 2247 + mdast-util-phrasing: 3.0.1 2248 + mdast-util-to-string: 3.2.0 2249 + micromark-util-decode-string: 1.0.2 2250 + unist-util-visit: 4.1.2 2251 + zwitch: 2.0.4 2252 + dev: false 2253 + 2254 + /mdast-util-to-string@3.2.0: 2255 + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} 2256 + dependencies: 2257 + '@types/mdast': 3.0.11 2258 + dev: false 2259 + 1798 2260 /merge-stream@2.0.0: 1799 2261 resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1800 2262 dev: false ··· 1804 2266 engines: {node: '>= 8'} 1805 2267 dev: false 1806 2268 2269 + /micromark-core-commonmark@1.0.6: 2270 + resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} 2271 + dependencies: 2272 + decode-named-character-reference: 1.0.2 2273 + micromark-factory-destination: 1.0.0 2274 + micromark-factory-label: 1.0.2 2275 + micromark-factory-space: 1.0.0 2276 + micromark-factory-title: 1.0.2 2277 + micromark-factory-whitespace: 1.0.0 2278 + micromark-util-character: 1.1.0 2279 + micromark-util-chunked: 1.0.0 2280 + micromark-util-classify-character: 1.0.0 2281 + micromark-util-html-tag-name: 1.1.0 2282 + micromark-util-normalize-identifier: 1.0.0 2283 + micromark-util-resolve-all: 1.0.0 2284 + micromark-util-subtokenize: 1.0.2 2285 + micromark-util-symbol: 1.0.1 2286 + micromark-util-types: 1.0.2 2287 + uvu: 0.5.6 2288 + dev: false 2289 + 2290 + /micromark-extension-gfm-autolink-literal@1.0.4: 2291 + resolution: {integrity: sha512-WCssN+M9rUyfHN5zPBn3/f0mIA7tqArHL/EKbv3CZK+LT2rG77FEikIQEqBkv46fOqXQK4NEW/Pc7Z27gshpeg==} 2292 + dependencies: 2293 + micromark-util-character: 1.1.0 2294 + micromark-util-sanitize-uri: 1.1.0 2295 + micromark-util-symbol: 1.0.1 2296 + micromark-util-types: 1.0.2 2297 + dev: false 2298 + 2299 + /micromark-extension-gfm-footnote@1.1.0: 2300 + resolution: {integrity: sha512-RWYce7j8+c0n7Djzv5NzGEGitNNYO3uj+h/XYMdS/JinH1Go+/Qkomg/rfxExFzYTiydaV6GLeffGO5qcJbMPA==} 2301 + dependencies: 2302 + micromark-core-commonmark: 1.0.6 2303 + micromark-factory-space: 1.0.0 2304 + micromark-util-character: 1.1.0 2305 + micromark-util-normalize-identifier: 1.0.0 2306 + micromark-util-sanitize-uri: 1.1.0 2307 + micromark-util-symbol: 1.0.1 2308 + micromark-util-types: 1.0.2 2309 + uvu: 0.5.6 2310 + dev: false 2311 + 2312 + /micromark-extension-gfm-strikethrough@1.0.5: 2313 + resolution: {integrity: sha512-X0oI5eYYQVARhiNfbETy7BfLSmSilzN1eOuoRnrf9oUNsPRrWOAe9UqSizgw1vNxQBfOwL+n2610S3bYjVNi7w==} 2314 + dependencies: 2315 + micromark-util-chunked: 1.0.0 2316 + micromark-util-classify-character: 1.0.0 2317 + micromark-util-resolve-all: 1.0.0 2318 + micromark-util-symbol: 1.0.1 2319 + micromark-util-types: 1.0.2 2320 + uvu: 0.5.6 2321 + dev: false 2322 + 2323 + /micromark-extension-gfm-table@1.0.5: 2324 + resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} 2325 + dependencies: 2326 + micromark-factory-space: 1.0.0 2327 + micromark-util-character: 1.1.0 2328 + micromark-util-symbol: 1.0.1 2329 + micromark-util-types: 1.0.2 2330 + uvu: 0.5.6 2331 + dev: false 2332 + 2333 + /micromark-extension-gfm-tagfilter@1.0.2: 2334 + resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} 2335 + dependencies: 2336 + micromark-util-types: 1.0.2 2337 + dev: false 2338 + 2339 + /micromark-extension-gfm-task-list-item@1.0.4: 2340 + resolution: {integrity: sha512-9XlIUUVnYXHsFF2HZ9jby4h3npfX10S1coXTnV035QGPgrtNYQq3J6IfIvcCIUAJrrqBVi5BqA/LmaOMJqPwMQ==} 2341 + dependencies: 2342 + micromark-factory-space: 1.0.0 2343 + micromark-util-character: 1.1.0 2344 + micromark-util-symbol: 1.0.1 2345 + micromark-util-types: 1.0.2 2346 + uvu: 0.5.6 2347 + dev: false 2348 + 2349 + /micromark-extension-gfm@2.0.1: 2350 + resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} 2351 + dependencies: 2352 + micromark-extension-gfm-autolink-literal: 1.0.4 2353 + micromark-extension-gfm-footnote: 1.1.0 2354 + micromark-extension-gfm-strikethrough: 1.0.5 2355 + micromark-extension-gfm-table: 1.0.5 2356 + micromark-extension-gfm-tagfilter: 1.0.2 2357 + micromark-extension-gfm-task-list-item: 1.0.4 2358 + micromark-util-combine-extensions: 1.0.0 2359 + micromark-util-types: 1.0.2 2360 + dev: false 2361 + 2362 + /micromark-factory-destination@1.0.0: 2363 + resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} 2364 + dependencies: 2365 + micromark-util-character: 1.1.0 2366 + micromark-util-symbol: 1.0.1 2367 + micromark-util-types: 1.0.2 2368 + dev: false 2369 + 2370 + /micromark-factory-label@1.0.2: 2371 + resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} 2372 + dependencies: 2373 + micromark-util-character: 1.1.0 2374 + micromark-util-symbol: 1.0.1 2375 + micromark-util-types: 1.0.2 2376 + uvu: 0.5.6 2377 + dev: false 2378 + 2379 + /micromark-factory-space@1.0.0: 2380 + resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} 2381 + dependencies: 2382 + micromark-util-character: 1.1.0 2383 + micromark-util-types: 1.0.2 2384 + dev: false 2385 + 2386 + /micromark-factory-title@1.0.2: 2387 + resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} 2388 + dependencies: 2389 + micromark-factory-space: 1.0.0 2390 + micromark-util-character: 1.1.0 2391 + micromark-util-symbol: 1.0.1 2392 + micromark-util-types: 1.0.2 2393 + uvu: 0.5.6 2394 + dev: false 2395 + 2396 + /micromark-factory-whitespace@1.0.0: 2397 + resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} 2398 + dependencies: 2399 + micromark-factory-space: 1.0.0 2400 + micromark-util-character: 1.1.0 2401 + micromark-util-symbol: 1.0.1 2402 + micromark-util-types: 1.0.2 2403 + dev: false 2404 + 2405 + /micromark-util-character@1.1.0: 2406 + resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} 2407 + dependencies: 2408 + micromark-util-symbol: 1.0.1 2409 + micromark-util-types: 1.0.2 2410 + dev: false 2411 + 2412 + /micromark-util-chunked@1.0.0: 2413 + resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} 2414 + dependencies: 2415 + micromark-util-symbol: 1.0.1 2416 + dev: false 2417 + 2418 + /micromark-util-classify-character@1.0.0: 2419 + resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} 2420 + dependencies: 2421 + micromark-util-character: 1.1.0 2422 + micromark-util-symbol: 1.0.1 2423 + micromark-util-types: 1.0.2 2424 + dev: false 2425 + 2426 + /micromark-util-combine-extensions@1.0.0: 2427 + resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} 2428 + dependencies: 2429 + micromark-util-chunked: 1.0.0 2430 + micromark-util-types: 1.0.2 2431 + dev: false 2432 + 2433 + /micromark-util-decode-numeric-character-reference@1.0.0: 2434 + resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} 2435 + dependencies: 2436 + micromark-util-symbol: 1.0.1 2437 + dev: false 2438 + 2439 + /micromark-util-decode-string@1.0.2: 2440 + resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} 2441 + dependencies: 2442 + decode-named-character-reference: 1.0.2 2443 + micromark-util-character: 1.1.0 2444 + micromark-util-decode-numeric-character-reference: 1.0.0 2445 + micromark-util-symbol: 1.0.1 2446 + dev: false 2447 + 2448 + /micromark-util-encode@1.0.1: 2449 + resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} 2450 + dev: false 2451 + 2452 + /micromark-util-html-tag-name@1.1.0: 2453 + resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} 2454 + dev: false 2455 + 2456 + /micromark-util-normalize-identifier@1.0.0: 2457 + resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} 2458 + dependencies: 2459 + micromark-util-symbol: 1.0.1 2460 + dev: false 2461 + 2462 + /micromark-util-resolve-all@1.0.0: 2463 + resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} 2464 + dependencies: 2465 + micromark-util-types: 1.0.2 2466 + dev: false 2467 + 2468 + /micromark-util-sanitize-uri@1.1.0: 2469 + resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} 2470 + dependencies: 2471 + micromark-util-character: 1.1.0 2472 + micromark-util-encode: 1.0.1 2473 + micromark-util-symbol: 1.0.1 2474 + dev: false 2475 + 2476 + /micromark-util-subtokenize@1.0.2: 2477 + resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} 2478 + dependencies: 2479 + micromark-util-chunked: 1.0.0 2480 + micromark-util-symbol: 1.0.1 2481 + micromark-util-types: 1.0.2 2482 + uvu: 0.5.6 2483 + dev: false 2484 + 2485 + /micromark-util-symbol@1.0.1: 2486 + resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} 2487 + dev: false 2488 + 2489 + /micromark-util-types@1.0.2: 2490 + resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} 2491 + dev: false 2492 + 2493 + /micromark@3.1.0: 2494 + resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} 2495 + dependencies: 2496 + '@types/debug': 4.1.7 2497 + debug: 4.3.4 2498 + decode-named-character-reference: 1.0.2 2499 + micromark-core-commonmark: 1.0.6 2500 + micromark-factory-space: 1.0.0 2501 + micromark-util-character: 1.1.0 2502 + micromark-util-chunked: 1.0.0 2503 + micromark-util-combine-extensions: 1.0.0 2504 + micromark-util-decode-numeric-character-reference: 1.0.0 2505 + micromark-util-encode: 1.0.1 2506 + micromark-util-normalize-identifier: 1.0.0 2507 + micromark-util-resolve-all: 1.0.0 2508 + micromark-util-sanitize-uri: 1.1.0 2509 + micromark-util-subtokenize: 1.0.2 2510 + micromark-util-symbol: 1.0.1 2511 + micromark-util-types: 1.0.2 2512 + uvu: 0.5.6 2513 + transitivePeerDependencies: 2514 + - supports-color 2515 + dev: false 2516 + 1807 2517 /micromatch@4.0.5: 1808 2518 resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1809 2519 engines: {node: '>=8.6'} ··· 1830 2540 1831 2541 /minimist@1.2.8: 1832 2542 resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2543 + dev: false 2544 + 2545 + /mri@1.2.0: 2546 + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 2547 + engines: {node: '>=4'} 1833 2548 dev: false 1834 2549 1835 2550 /ms@2.1.2: ··· 2065 2780 callsites: 3.1.0 2066 2781 dev: false 2067 2782 2783 + /parse5@6.0.1: 2784 + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 2785 + dev: false 2786 + 2068 2787 /path-exists@4.0.0: 2069 2788 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2070 2789 engines: {node: '>=8'} ··· 2203 2922 loose-envify: 1.4.0 2204 2923 object-assign: 4.1.1 2205 2924 react-is: 16.13.1 2925 + dev: false 2926 + 2927 + /property-information@6.2.0: 2928 + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} 2206 2929 dev: false 2207 2930 2208 2931 /punycode@2.3.0: ··· 2261 2984 functions-have-names: 1.2.3 2262 2985 dev: false 2263 2986 2987 + /rehype-autolink-headings@6.1.1: 2988 + resolution: {integrity: sha512-NMYzZIsHM3sA14nC5rAFuUPIOfg+DFmf9EY1YMhaNlB7+3kK/ZlE6kqPfuxr1tsJ1XWkTrMtMoyHosU70d35mA==} 2989 + dependencies: 2990 + '@types/hast': 2.3.4 2991 + extend: 3.0.2 2992 + hast-util-has-property: 2.0.1 2993 + hast-util-heading-rank: 2.1.1 2994 + hast-util-is-element: 2.1.3 2995 + unified: 10.1.2 2996 + unist-util-visit: 4.1.2 2997 + dev: false 2998 + 2999 + /rehype-parse@8.0.4: 3000 + resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==} 3001 + dependencies: 3002 + '@types/hast': 2.3.4 3003 + hast-util-from-parse5: 7.1.2 3004 + parse5: 6.0.1 3005 + unified: 10.1.2 3006 + dev: false 3007 + 3008 + /rehype-slug@5.1.0: 3009 + resolution: {integrity: sha512-Gf91dJoXneiorNEnn+Phx97CO7oRMrpi+6r155tTxzGuLtm+QrI4cTwCa9e1rtePdL4i9tSO58PeSS6HWfgsiw==} 3010 + dependencies: 3011 + '@types/hast': 2.3.4 3012 + github-slugger: 2.0.0 3013 + hast-util-has-property: 2.0.1 3014 + hast-util-heading-rank: 2.1.1 3015 + hast-util-to-string: 2.0.0 3016 + unified: 10.1.2 3017 + unist-util-visit: 4.1.2 3018 + dev: false 3019 + 3020 + /rehype-stringify@9.0.3: 3021 + resolution: {integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==} 3022 + dependencies: 3023 + '@types/hast': 2.3.4 3024 + hast-util-to-html: 8.0.4 3025 + unified: 10.1.2 3026 + dev: false 3027 + 3028 + /remark-gfm@3.0.1: 3029 + resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} 3030 + dependencies: 3031 + '@types/mdast': 3.0.11 3032 + mdast-util-gfm: 2.0.2 3033 + micromark-extension-gfm: 2.0.1 3034 + unified: 10.1.2 3035 + transitivePeerDependencies: 3036 + - supports-color 3037 + dev: false 3038 + 3039 + /remark-parse@10.0.1: 3040 + resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} 3041 + dependencies: 3042 + '@types/mdast': 3.0.11 3043 + mdast-util-from-markdown: 1.3.0 3044 + unified: 10.1.2 3045 + transitivePeerDependencies: 3046 + - supports-color 3047 + dev: false 3048 + 3049 + /remark-rehype@10.1.0: 3050 + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} 3051 + dependencies: 3052 + '@types/hast': 2.3.4 3053 + '@types/mdast': 3.0.11 3054 + mdast-util-to-hast: 12.3.0 3055 + unified: 10.1.2 3056 + dev: false 3057 + 2264 3058 /resolve-from@4.0.0: 2265 3059 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2266 3060 engines: {node: '>=4'} ··· 2309 3103 queue-microtask: 1.2.3 2310 3104 dev: false 2311 3105 3106 + /sade@1.8.1: 3107 + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 3108 + engines: {node: '>=6'} 3109 + dependencies: 3110 + mri: 1.2.0 3111 + dev: false 3112 + 2312 3113 /safe-regex-test@1.0.0: 2313 3114 resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 2314 3115 dependencies: ··· 2317 3118 is-regex: 1.1.4 2318 3119 dev: false 2319 3120 3121 + /sanitize-xml-string@1.1.0: 3122 + resolution: {integrity: sha512-RzX25K64YtZm9FvdZr/Ac7Eeq0va1YX0xmpOkjWoREhgKXXldrJRVJhBel83nS8omIcaKcNTdLY8XzOIK920HA==} 3123 + engines: {node: '>=7.0.0'} 3124 + dev: false 3125 + 2320 3126 /scheduler@0.23.0: 2321 3127 resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2322 3128 dependencies: 2323 3129 loose-envify: 1.4.0 3130 + dev: false 3131 + 3132 + /section-matter@1.0.0: 3133 + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} 3134 + engines: {node: '>=4'} 3135 + dependencies: 3136 + extend-shallow: 2.0.1 3137 + kind-of: 6.0.3 2324 3138 dev: false 2325 3139 2326 3140 /semver@6.3.0: ··· 2348 3162 engines: {node: '>=8'} 2349 3163 dev: false 2350 3164 3165 + /shiki@0.14.2: 3166 + resolution: {integrity: sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==} 3167 + dependencies: 3168 + ansi-sequence-parser: 1.1.0 3169 + jsonc-parser: 3.2.0 3170 + vscode-oniguruma: 1.7.0 3171 + vscode-textmate: 8.0.0 3172 + dev: false 3173 + 2351 3174 /side-channel@1.0.4: 2352 3175 resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2353 3176 dependencies: ··· 2375 3198 engines: {node: '>=0.10.0'} 2376 3199 dev: false 2377 3200 3201 + /space-separated-tokens@2.0.2: 3202 + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 3203 + dev: false 3204 + 3205 + /sprintf-js@1.0.3: 3206 + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 3207 + dev: false 3208 + 2378 3209 /stop-iteration-iterator@1.0.0: 2379 3210 resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} 2380 3211 engines: {node: '>= 0.4'} ··· 2425 3256 es-abstract: 1.21.2 2426 3257 dev: false 2427 3258 3259 + /stringify-entities@4.0.3: 3260 + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} 3261 + dependencies: 3262 + character-entities-html4: 2.1.0 3263 + character-entities-legacy: 3.0.0 3264 + dev: false 3265 + 2428 3266 /strip-ansi@6.0.1: 2429 3267 resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2430 3268 engines: {node: '>=8'} 2431 3269 dependencies: 2432 3270 ansi-regex: 5.0.1 3271 + dev: false 3272 + 3273 + /strip-bom-string@1.0.0: 3274 + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} 3275 + engines: {node: '>=0.10.0'} 2433 3276 dev: false 2434 3277 2435 3278 /strip-bom@3.0.0: ··· 2569 3412 is-number: 7.0.0 2570 3413 dev: false 2571 3414 3415 + /trim-lines@3.0.1: 3416 + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} 3417 + dev: false 3418 + 3419 + /trough@2.1.0: 3420 + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} 3421 + dev: false 3422 + 2572 3423 /ts-interface-checker@0.1.13: 2573 3424 resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2574 3425 dev: false ··· 2635 3486 which-boxed-primitive: 1.0.2 2636 3487 dev: false 2637 3488 3489 + /unified@10.1.2: 3490 + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} 3491 + dependencies: 3492 + '@types/unist': 2.0.6 3493 + bail: 2.0.2 3494 + extend: 3.0.2 3495 + is-buffer: 2.0.5 3496 + is-plain-obj: 4.1.0 3497 + trough: 2.1.0 3498 + vfile: 5.3.7 3499 + dev: false 3500 + 3501 + /unist-util-find-after@4.0.1: 3502 + resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==} 3503 + dependencies: 3504 + '@types/unist': 2.0.6 3505 + unist-util-is: 5.2.1 3506 + dev: false 3507 + 3508 + /unist-util-generated@2.0.1: 3509 + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} 3510 + dev: false 3511 + 3512 + /unist-util-is@5.2.1: 3513 + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} 3514 + dependencies: 3515 + '@types/unist': 2.0.6 3516 + dev: false 3517 + 3518 + /unist-util-modify-children@3.1.1: 3519 + resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==} 3520 + dependencies: 3521 + '@types/unist': 2.0.6 3522 + array-iterate: 2.0.1 3523 + dev: false 3524 + 3525 + /unist-util-position@4.0.4: 3526 + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} 3527 + dependencies: 3528 + '@types/unist': 2.0.6 3529 + dev: false 3530 + 3531 + /unist-util-stringify-position@3.0.3: 3532 + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} 3533 + dependencies: 3534 + '@types/unist': 2.0.6 3535 + dev: false 3536 + 3537 + /unist-util-visit-parents@5.1.3: 3538 + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} 3539 + dependencies: 3540 + '@types/unist': 2.0.6 3541 + unist-util-is: 5.2.1 3542 + dev: false 3543 + 3544 + /unist-util-visit@4.1.2: 3545 + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} 3546 + dependencies: 3547 + '@types/unist': 2.0.6 3548 + unist-util-is: 5.2.1 3549 + unist-util-visit-parents: 5.1.3 3550 + dev: false 3551 + 2638 3552 /untildify@4.0.0: 2639 3553 resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} 2640 3554 engines: {node: '>=8'} ··· 2661 3575 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2662 3576 dev: false 2663 3577 3578 + /uvu@0.5.6: 3579 + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} 3580 + engines: {node: '>=8'} 3581 + hasBin: true 3582 + dependencies: 3583 + dequal: 2.0.3 3584 + diff: 5.1.0 3585 + kleur: 4.1.5 3586 + sade: 1.8.1 3587 + dev: false 3588 + 3589 + /vfile-location@4.1.0: 3590 + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} 3591 + dependencies: 3592 + '@types/unist': 2.0.6 3593 + vfile: 5.3.7 3594 + dev: false 3595 + 3596 + /vfile-message@3.1.4: 3597 + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} 3598 + dependencies: 3599 + '@types/unist': 2.0.6 3600 + unist-util-stringify-position: 3.0.3 3601 + dev: false 3602 + 3603 + /vfile@5.3.7: 3604 + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} 3605 + dependencies: 3606 + '@types/unist': 2.0.6 3607 + is-buffer: 2.0.5 3608 + unist-util-stringify-position: 3.0.3 3609 + vfile-message: 3.1.4 3610 + dev: false 3611 + 3612 + /vscode-oniguruma@1.7.0: 3613 + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} 3614 + dev: false 3615 + 3616 + /vscode-textmate@8.0.0: 3617 + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} 3618 + dev: false 3619 + 3620 + /web-namespaces@2.0.1: 3621 + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} 3622 + dev: false 3623 + 2664 3624 /which-boxed-primitive@1.0.2: 2665 3625 resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2666 3626 dependencies: ··· 2726 3686 /zod@3.21.4: 2727 3687 resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 2728 3688 dev: false 3689 + 3690 + /zwitch@2.0.4: 3691 + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 3692 + dev: false
+26
src/app/blog/page.tsx
··· 1 + import Link from 'next/link'; 2 + import { getAllPosts } from '@/utils/api'; 3 + 4 + export default async function Page() { 5 + const posts = await getAllPosts(); 6 + 7 + return ( 8 + <div> 9 + <h1>My blog</h1> 10 + 11 + <h2>All posts:</h2> 12 + <ul> 13 + {posts.map((post) => { 14 + const { id, date, title } = post; 15 + return ( 16 + <li key={id}> 17 + <Link href={`/posts/${id}`}> 18 + {date} - {title} 19 + </Link> 20 + </li> 21 + ); 22 + })} 23 + </ul> 24 + </div> 25 + ); 26 + }
+34
src/app/blog/posts/[id]/page.tsx
··· 1 + import { getPostById, getAllPosts } from '@/utils/api'; 2 + 3 + // Generate the post, note that this is a "react server component"! it is 4 + // allowed to be async 5 + export default async function Post({ params: { id } }: { params: { id: string } }) { 6 + const { html, title, date } = await getPostById(id); 7 + return ( 8 + <article> 9 + <h1>{title}</h1> 10 + <h4>{date}</h4> 11 + <div dangerouslySetInnerHTML={{ __html: html }} /> 12 + </article> 13 + ); 14 + } 15 + 16 + // This function can statically allow nextjs to find all the posts that you 17 + // have made, and statically generate them 18 + export async function generateStaticParams() { 19 + const posts = await getAllPosts(); 20 + 21 + return posts.map((post) => ({ 22 + id: post.id, 23 + })); 24 + } 25 + 26 + // Set the title of the page to be the post title, note that we no longer use 27 + // e.g. next/head in app dir, and this can be async just like the server 28 + // component 29 + export async function generateMetadata({ params: { id } }: { params: { id: string } }) { 30 + const { title } = await getPostById(id); 31 + return { 32 + title, 33 + }; 34 + }
+71
src/utils/api.ts
··· 1 + import fs from 'fs'; 2 + import matter from 'gray-matter'; 3 + import { join } from 'path'; 4 + import { unified } from 'unified'; 5 + import remarkGfm from 'remark-gfm'; 6 + import rehypeSlug from 'rehype-slug'; 7 + import rehypeAutolinkHeadings from 'rehype-autolink-headings'; 8 + import remarkParse from 'remark-parse'; 9 + import remarkRehype from 'remark-rehype'; 10 + import rehypeStringify from 'rehype-stringify'; 11 + import rehypeShiki from '@leafac/rehype-shiki'; 12 + import * as shiki from 'shiki'; 13 + 14 + // memoize/cache the creation of the markdown parser, this sped up the 15 + // building of the blog from ~60s->~10s 16 + let p: ReturnType<typeof getParserPre> | undefined; 17 + 18 + async function getParserPre() { 19 + return unified() 20 + .use(remarkParse) 21 + .use(remarkRehype) 22 + .use(remarkGfm) 23 + .use(rehypeShiki, { 24 + highlighter: await shiki.getHighlighter({ theme: 'poimandres' }), 25 + }) 26 + .use(rehypeStringify) 27 + .use(rehypeSlug) 28 + .use(rehypeAutolinkHeadings, { 29 + content: (arg) => ({ 30 + type: 'element', 31 + tagName: 'a', 32 + properties: { 33 + href: '#' + arg.properties?.id, 34 + style: 'margin-right: 10px', 35 + }, 36 + children: [{ type: 'text', value: '#' }], 37 + }), 38 + }); 39 + } 40 + 41 + function getParser() { 42 + if (!p) { 43 + p = getParserPre().catch((e) => { 44 + p = undefined; 45 + throw e; 46 + }); 47 + } 48 + return p; 49 + } 50 + 51 + export async function getPostById(id: string) { 52 + const realId = id.replace(/\.md$/, ''); 53 + const fullPath = join('_posts', `${realId}.md`); 54 + const { data, content } = matter(await fs.promises.readFile(fullPath, 'utf8')); 55 + 56 + const parser = await getParser(); 57 + const html = await parser.process(content); 58 + 59 + return { 60 + ...data, 61 + title: data.title, 62 + id: realId, 63 + date: `${data.date?.toISOString().slice(0, 10)}`, 64 + html: html.value.toString(), 65 + }; 66 + } 67 + 68 + export async function getAllPosts() { 69 + const posts = await Promise.all(fs.readdirSync('_posts').map((id) => getPostById(id))); 70 + return posts.sort((post1, post2) => (post1.date > post2.date ? -1 : 1)); 71 + }