chore(deps): replace `chalk` and `rimraf` with builtin functions (#1879)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
| | |
| | | "@webgpu/types": "^0.1.60", |
| | | "ansi-truncate": "^1.2.0", |
| | | "async-mutex": "^0.5.0", |
| | | "chalk": "^5.4.1", |
| | | "chokidar": "^4.0.3", |
| | | "cli-spinner": "^0.2.10", |
| | | "d3": "^7.9.0", |
| | |
| | | "remark-rehype": "^11.1.2", |
| | | "remark-smartypants": "^3.0.2", |
| | | "rfdc": "^1.4.1", |
| | | "rimraf": "^6.0.1", |
| | | "satori": "^0.12.2", |
| | | "serve-handler": "^6.1.6", |
| | | "sharp": "^0.34.1", |
| | |
| | | "url": "https://opencollective.com/libvips" |
| | | } |
| | | }, |
| | | "node_modules/@isaacs/cliui": { |
| | | "version": "8.0.2", |
| | | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", |
| | | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", |
| | | "dependencies": { |
| | | "string-width": "^5.1.2", |
| | | "string-width-cjs": "npm:string-width@^4.2.0", |
| | | "strip-ansi": "^7.0.1", |
| | | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", |
| | | "wrap-ansi": "^8.1.0", |
| | | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | } |
| | | }, |
| | | "node_modules/@myriaddreamin/rehype-typst": { |
| | | "version": "0.6.0", |
| | | "resolved": "https://registry.npmjs.org/@myriaddreamin/rehype-typst/-/rehype-typst-0.6.0.tgz", |
| | |
| | | "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/@pkgjs/parseargs": { |
| | | "version": "0.11.0", |
| | | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", |
| | | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", |
| | | "optional": true, |
| | | "engines": { |
| | | "node": ">=14" |
| | | } |
| | | }, |
| | | "node_modules/@shikijs/core": { |
| | | "version": "1.26.2", |
| | | "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.26.2.tgz", |
| | |
| | | "node": ">= 14" |
| | | } |
| | | }, |
| | | "node_modules/ansi-regex": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", |
| | | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/ansi-regex?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/ansi-styles": { |
| | | "version": "4.3.0", |
| | | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", |
| | |
| | | "url": "https://github.com/sponsors/wooorm" |
| | | } |
| | | }, |
| | | "node_modules/chalk": { |
| | | "version": "5.4.1", |
| | | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", |
| | | "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", |
| | | "engines": { |
| | | "node": "^12.17.0 || ^14.13 || >=16.0.0" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/chalk?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/character-entities": { |
| | | "version": "2.0.2", |
| | | "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", |
| | |
| | | "node-fetch": "^2.6.12" |
| | | } |
| | | }, |
| | | "node_modules/cross-spawn": { |
| | | "version": "7.0.6", |
| | | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", |
| | | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "path-key": "^3.1.0", |
| | | "shebang-command": "^2.0.0", |
| | | "which": "^2.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">= 8" |
| | | } |
| | | }, |
| | | "node_modules/css-background-parser": { |
| | | "version": "0.1.0", |
| | | "resolved": "https://registry.npmjs.org/css-background-parser/-/css-background-parser-0.1.0.tgz", |
| | |
| | | "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", |
| | | "license": "ISC" |
| | | }, |
| | | "node_modules/eastasianwidth": { |
| | | "version": "0.2.0", |
| | | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", |
| | | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" |
| | | }, |
| | | "node_modules/emoji-regex": { |
| | | "version": "9.2.2", |
| | | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", |
| | | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" |
| | | }, |
| | | "node_modules/emoji-regex-xs": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.43.tgz", |
| | | "integrity": "sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg==" |
| | | }, |
| | | "node_modules/foreground-child": { |
| | | "version": "3.2.1", |
| | | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", |
| | | "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", |
| | | "dependencies": { |
| | | "cross-spawn": "^7.0.0", |
| | | "signal-exit": "^4.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/isaacs" |
| | | } |
| | | }, |
| | | "node_modules/format": { |
| | | "version": "0.2.2", |
| | | "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", |
| | | "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" |
| | | }, |
| | | "node_modules/glob": { |
| | | "version": "11.0.0", |
| | | "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", |
| | | "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", |
| | | "dependencies": { |
| | | "foreground-child": "^3.1.0", |
| | | "jackspeak": "^4.0.1", |
| | | "minimatch": "^10.0.0", |
| | | "minipass": "^7.1.2", |
| | | "package-json-from-dist": "^1.0.0", |
| | | "path-scurry": "^2.0.0" |
| | | }, |
| | | "bin": { |
| | | "glob": "dist/esm/bin.mjs" |
| | | }, |
| | | "engines": { |
| | | "node": "20 || >=22" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/isaacs" |
| | | } |
| | | }, |
| | | "node_modules/glob-parent": { |
| | | "version": "5.1.2", |
| | | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", |
| | |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/isexe": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", |
| | | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" |
| | | }, |
| | | "node_modules/ismobilejs": { |
| | | "version": "1.1.1", |
| | | "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", |
| | | "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==", |
| | | "license": "MIT" |
| | | }, |
| | | "node_modules/jackspeak": { |
| | | "version": "4.0.1", |
| | | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", |
| | | "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", |
| | | "dependencies": { |
| | | "@isaacs/cliui": "^8.0.2" |
| | | }, |
| | | "engines": { |
| | | "node": "20 || >=22" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/isaacs" |
| | | }, |
| | | "optionalDependencies": { |
| | | "@pkgjs/parseargs": "^0.11.0" |
| | | } |
| | | }, |
| | | "node_modules/js-binary-schema-parser": { |
| | | "version": "2.0.3", |
| | | "resolved": "https://registry.npmjs.org/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz", |
| | |
| | | "url": "https://github.com/sponsors/wooorm" |
| | | } |
| | | }, |
| | | "node_modules/lru-cache": { |
| | | "version": "11.0.0", |
| | | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", |
| | | "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", |
| | | "engines": { |
| | | "node": "20 || >=22" |
| | | } |
| | | }, |
| | | "node_modules/markdown-table": { |
| | | "version": "3.0.3", |
| | | "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", |
| | |
| | | "url": "https://github.com/sponsors/isaacs" |
| | | } |
| | | }, |
| | | "node_modules/minipass": { |
| | | "version": "7.1.2", |
| | | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", |
| | | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", |
| | | "engines": { |
| | | "node": ">=16 || 14 >=14.17" |
| | | } |
| | | }, |
| | | "node_modules/mj-context-menu": { |
| | | "version": "0.6.1", |
| | | "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", |
| | |
| | | "regex-recursion": "^5.1.1" |
| | | } |
| | | }, |
| | | "node_modules/package-json-from-dist": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", |
| | | "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" |
| | | }, |
| | | "node_modules/pako": { |
| | | "version": "0.2.9", |
| | | "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", |
| | | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" |
| | | }, |
| | | "node_modules/path-key": { |
| | | "version": "3.1.1", |
| | | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", |
| | | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/path-parse": { |
| | | "version": "1.0.7", |
| | | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", |
| | | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" |
| | | }, |
| | | "node_modules/path-scurry": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", |
| | | "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", |
| | | "dependencies": { |
| | | "lru-cache": "^11.0.0", |
| | | "minipass": "^7.1.2" |
| | | }, |
| | | "engines": { |
| | | "node": "20 || >=22" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/isaacs" |
| | | } |
| | | }, |
| | | "node_modules/path-to-regexp": { |
| | | "version": "3.3.0", |
| | | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", |
| | | "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" |
| | | }, |
| | | "node_modules/rimraf": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", |
| | | "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", |
| | | "dependencies": { |
| | | "glob": "^11.0.0", |
| | | "package-json-from-dist": "^1.0.0" |
| | | }, |
| | | "bin": { |
| | | "rimraf": "dist/esm/bin.mjs" |
| | | }, |
| | | "engines": { |
| | | "node": "20 || >=22" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/isaacs" |
| | | } |
| | | }, |
| | | "node_modules/robust-predicates": { |
| | | "version": "3.0.2", |
| | | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", |
| | |
| | | "@img/sharp-win32-x64": "0.34.1" |
| | | } |
| | | }, |
| | | "node_modules/shebang-command": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", |
| | | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", |
| | | "dependencies": { |
| | | "shebang-regex": "^3.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/shebang-regex": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", |
| | | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/shiki": { |
| | | "version": "1.26.2", |
| | | "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.26.2.tgz", |
| | |
| | | "@types/hast": "^3.0.4" |
| | | } |
| | | }, |
| | | "node_modules/signal-exit": { |
| | | "version": "4.1.0", |
| | | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", |
| | | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", |
| | | "engines": { |
| | | "node": ">=14" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/isaacs" |
| | | } |
| | | }, |
| | | "node_modules/simple-swizzle": { |
| | | "version": "0.2.2", |
| | | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", |
| | | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" |
| | | }, |
| | | "node_modules/string-width": { |
| | | "version": "5.1.2", |
| | | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", |
| | | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", |
| | | "dependencies": { |
| | | "eastasianwidth": "^0.2.0", |
| | | "emoji-regex": "^9.2.2", |
| | | "strip-ansi": "^7.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/string-width-cjs": { |
| | | "name": "string-width", |
| | | "version": "4.2.3", |
| | | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", |
| | | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", |
| | | "dependencies": { |
| | | "emoji-regex": "^8.0.0", |
| | | "is-fullwidth-code-point": "^3.0.0", |
| | | "strip-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/string-width-cjs/node_modules/ansi-regex": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", |
| | | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/string-width-cjs/node_modules/emoji-regex": { |
| | | "version": "8.0.0", |
| | | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", |
| | | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" |
| | | }, |
| | | "node_modules/string-width-cjs/node_modules/strip-ansi": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", |
| | | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", |
| | | "dependencies": { |
| | | "ansi-regex": "^5.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/string.prototype.codepointat": { |
| | | "version": "0.2.1", |
| | | "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", |
| | |
| | | "url": "https://github.com/sponsors/wooorm" |
| | | } |
| | | }, |
| | | "node_modules/strip-ansi": { |
| | | "version": "7.1.0", |
| | | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", |
| | | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", |
| | | "dependencies": { |
| | | "ansi-regex": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/strip-ansi?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/strip-ansi-cjs": { |
| | | "name": "strip-ansi", |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", |
| | | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", |
| | | "dependencies": { |
| | | "ansi-regex": "^5.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", |
| | | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/strip-bom-string": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", |
| | |
| | | "url": "https://github.com/sponsors/wooorm" |
| | | } |
| | | }, |
| | | "node_modules/which": { |
| | | "version": "2.0.2", |
| | | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", |
| | | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", |
| | | "dependencies": { |
| | | "isexe": "^2.0.0" |
| | | }, |
| | | "bin": { |
| | | "node-which": "bin/node-which" |
| | | }, |
| | | "engines": { |
| | | "node": ">= 8" |
| | | } |
| | | }, |
| | | "node_modules/wicked-good-xpath": { |
| | | "version": "1.3.0", |
| | | "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.2.0.tgz", |
| | | "integrity": "sha512-PKZqBOCo6CYkVOwAxWxQaSF2Fvb5Iv2fCeTP7buyWI2GiynWr46NcXSgK/idoV6e60dgCBfgYc+Un3HMvmqP8w==" |
| | | }, |
| | | "node_modules/wrap-ansi": { |
| | | "version": "8.1.0", |
| | | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", |
| | | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", |
| | | "dependencies": { |
| | | "ansi-styles": "^6.1.0", |
| | | "string-width": "^5.0.1", |
| | | "strip-ansi": "^7.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/wrap-ansi-cjs": { |
| | | "name": "wrap-ansi", |
| | | "version": "7.0.0", |
| | | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", |
| | | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", |
| | | "dependencies": { |
| | | "ansi-styles": "^4.0.0", |
| | | "string-width": "^4.1.0", |
| | | "strip-ansi": "^6.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=10" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", |
| | | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { |
| | | "version": "8.0.0", |
| | | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", |
| | | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" |
| | | }, |
| | | "node_modules/wrap-ansi-cjs/node_modules/string-width": { |
| | | "version": "4.2.3", |
| | | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", |
| | | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", |
| | | "dependencies": { |
| | | "emoji-regex": "^8.0.0", |
| | | "is-fullwidth-code-point": "^3.0.0", |
| | | "strip-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { |
| | | "version": "6.0.1", |
| | | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", |
| | | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", |
| | | "dependencies": { |
| | | "ansi-regex": "^5.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/wrap-ansi/node_modules/ansi-styles": { |
| | | "version": "6.2.1", |
| | | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", |
| | | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", |
| | | "engines": { |
| | | "node": ">=12" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/chalk/ansi-styles?sponsor=1" |
| | | } |
| | | }, |
| | | "node_modules/ws": { |
| | | "version": "8.18.2", |
| | | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", |
| | |
| | | "@webgpu/types": "^0.1.60", |
| | | "ansi-truncate": "^1.2.0", |
| | | "async-mutex": "^0.5.0", |
| | | "chalk": "^5.4.1", |
| | | "chokidar": "^4.0.3", |
| | | "cli-spinner": "^0.2.10", |
| | | "d3": "^7.9.0", |
| | |
| | | "remark-rehype": "^11.1.2", |
| | | "remark-smartypants": "^3.0.2", |
| | | "rfdc": "^1.4.1", |
| | | "rimraf": "^6.0.1", |
| | | "satori": "^0.12.2", |
| | | "serve-handler": "^6.1.6", |
| | | "sharp": "^0.34.1", |
| | |
| | | sourceMapSupport.install(options) |
| | | import path from "path" |
| | | import { PerfTimer } from "./util/perf" |
| | | import { rimraf } from "rimraf" |
| | | import { rm } from "fs/promises" |
| | | import { GlobbyFilterFunction, isGitIgnored } from "globby" |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | import { parseMarkdown } from "./processors/parse" |
| | | import { filterContent } from "./processors/filter" |
| | | import { emitContent } from "./processors/emit" |
| | |
| | | |
| | | const release = await mut.acquire() |
| | | perf.addEvent("clean") |
| | | await rimraf(path.join(output, "*"), { glob: true }) |
| | | await rm(output, { recursive: true, force: true }) |
| | | console.log(`Cleaned output directory \`${output}\` in ${perf.timeSince("clean")}`) |
| | | |
| | | perf.addEvent("glob") |
| | |
| | | const filteredContent = filterContent(ctx, parsedFiles) |
| | | |
| | | await emitContent(ctx, filteredContent) |
| | | console.log(chalk.green(`Done processing ${markdownPaths.length} files in ${perf.timeSince()}`)) |
| | | console.log( |
| | | styleText("green", `Done processing ${markdownPaths.length} files in ${perf.timeSince()}`), |
| | | ) |
| | | release() |
| | | |
| | | if (argv.watch) { |
| | |
| | | |
| | | const perf = new PerfTimer() |
| | | perf.addEvent("rebuild") |
| | | console.log(chalk.yellow("Detected change, rebuilding...")) |
| | | console.log(styleText("yellow", "Detected change, rebuilding...")) |
| | | |
| | | // update changesSinceLastBuild |
| | | for (const change of changes) { |
| | |
| | | } |
| | | |
| | | console.log(`Emitted ${emittedFiles} files to \`${argv.output}\` in ${perf.timeSince("rebuild")}`) |
| | | console.log(chalk.green(`Done rebuilding in ${perf.timeSince()}`)) |
| | | console.log(styleText("green", `Done rebuilding in ${perf.timeSince()}`)) |
| | | changes.splice(0, numChangesInBuild) |
| | | clientRefresh() |
| | | release() |
| | |
| | | import { promises } from "fs" |
| | | import path from "path" |
| | | import esbuild from "esbuild" |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | import { sassPlugin } from "esbuild-sass-plugin" |
| | | import fs from "fs" |
| | | import { intro, outro, select, text } from "@clack/prompts" |
| | | import { rimraf } from "rimraf" |
| | | import { rm } from "fs/promises" |
| | | import chokidar from "chokidar" |
| | | import prettyBytes from "pretty-bytes" |
| | | import { execSync, spawnSync } from "child_process" |
| | |
| | | */ |
| | | export async function handleCreate(argv) { |
| | | console.log() |
| | | intro(chalk.bgGreen.black(` Quartz v${version} `)) |
| | | intro(styleText(["bgGreen", "black"], ` Quartz v${version} `)) |
| | | const contentFolder = resolveContentPath(argv.directory) |
| | | let setupStrategy = argv.strategy?.toLowerCase() |
| | | let linkResolutionStrategy = argv.links?.toLowerCase() |
| | |
| | | // Error handling |
| | | if (!sourceDirectory) { |
| | | outro( |
| | | chalk.red( |
| | | `Setup strategies (arg '${chalk.yellow( |
| | | styleText( |
| | | "red", |
| | | `Setup strategies (arg '${styleText( |
| | | "yellow", |
| | | `-${CreateArgv.strategy.alias[0]}`, |
| | | )}') other than '${chalk.yellow( |
| | | )}') other than '${styleText( |
| | | "yellow", |
| | | "new", |
| | | )}' require content folder argument ('${chalk.yellow( |
| | | )}' require content folder argument ('${styleText( |
| | | "yellow", |
| | | `-${CreateArgv.source.alias[0]}`, |
| | | )}') to be set`, |
| | | ), |
| | |
| | | } else { |
| | | if (!fs.existsSync(sourceDirectory)) { |
| | | outro( |
| | | chalk.red( |
| | | `Input directory to copy/symlink 'content' from not found ('${chalk.yellow( |
| | | styleText( |
| | | "red", |
| | | `Input directory to copy/symlink 'content' from not found ('${styleText( |
| | | "yellow", |
| | | sourceDirectory, |
| | | )}', invalid argument "${chalk.yellow(`-${CreateArgv.source.alias[0]}`)})`, |
| | | )}', invalid argument "${styleText("yellow", `-${CreateArgv.source.alias[0]}`)})`, |
| | | ), |
| | | ) |
| | | process.exit(1) |
| | | } else if (!fs.lstatSync(sourceDirectory).isDirectory()) { |
| | | outro( |
| | | chalk.red( |
| | | `Source directory to copy/symlink 'content' from is not a directory (found file at '${chalk.yellow( |
| | | styleText( |
| | | "red", |
| | | `Source directory to copy/symlink 'content' from is not a directory (found file at '${styleText( |
| | | "yellow", |
| | | sourceDirectory, |
| | | )}', invalid argument ${chalk.yellow(`-${CreateArgv.source.alias[0]}`)}")`, |
| | | )}', invalid argument ${styleText("yellow", `-${CreateArgv.source.alias[0]}`)}")`, |
| | | ), |
| | | ) |
| | | process.exit(1) |
| | |
| | | if (contentStat.isSymbolicLink()) { |
| | | await fs.promises.unlink(contentFolder) |
| | | } else { |
| | | await rimraf(contentFolder) |
| | | await rm(contentFolder, { recursive: true, force: true }) |
| | | } |
| | | } |
| | | |
| | |
| | | argv.watch = true |
| | | } |
| | | |
| | | console.log(chalk.bgGreen.black(`\n Quartz v${version} \n`)) |
| | | console.log(`\n${styleText(["bgGreen", "black"], ` Quartz v${version} `)} \n`) |
| | | const ctx = await esbuild.context({ |
| | | entryPoints: [fp], |
| | | outfile: cacheFile, |
| | |
| | | } |
| | | |
| | | if (cleanupBuild) { |
| | | console.log(chalk.yellow("Detected a source code change, doing a hard rebuild...")) |
| | | console.log(styleText("yellow", "Detected a source code change, doing a hard rebuild...")) |
| | | await cleanupBuild() |
| | | } |
| | | |
| | | const result = await ctx.rebuild().catch((err) => { |
| | | console.error(`${chalk.red("Couldn't parse Quartz configuration:")} ${fp}`) |
| | | console.log(`Reason: ${chalk.grey(err)}`) |
| | | console.error(`${styleText("red", "Couldn't parse Quartz configuration:")} ${fp}`) |
| | | console.log(`Reason: ${styleText("grey", err)}`) |
| | | process.exit(1) |
| | | }) |
| | | release() |
| | |
| | | const server = http.createServer(async (req, res) => { |
| | | if (argv.baseDir && !req.url?.startsWith(argv.baseDir)) { |
| | | console.log( |
| | | chalk.red( |
| | | styleText( |
| | | "red", |
| | | `[404] ${req.url} (warning: link outside of site, this is likely a Quartz bug)`, |
| | | ), |
| | | ) |
| | |
| | | }) |
| | | const status = res.statusCode |
| | | const statusString = |
| | | status >= 200 && status < 300 ? chalk.green(`[${status}]`) : chalk.red(`[${status}]`) |
| | | console.log(statusString + chalk.grey(` ${argv.baseDir}${req.url}`)) |
| | | status >= 200 && status < 300 |
| | | ? styleText("green", `[${status}]`) |
| | | : styleText("red", `[${status}]`) |
| | | console.log(statusString + styleText("grey", ` ${argv.baseDir}${req.url}`)) |
| | | release() |
| | | } |
| | | |
| | |
| | | res.writeHead(302, { |
| | | Location: newFp, |
| | | }) |
| | | console.log(chalk.yellow("[302]") + chalk.grey(` ${argv.baseDir}${req.url} -> ${newFp}`)) |
| | | console.log( |
| | | styleText("yellow", "[302]") + |
| | | styleText("grey", ` ${argv.baseDir}${req.url} -> ${newFp}`), |
| | | ) |
| | | res.end() |
| | | } |
| | | |
| | |
| | | const wss = new WebSocketServer({ port: argv.wsPort }) |
| | | wss.on("connection", (ws) => connections.push(ws)) |
| | | console.log( |
| | | chalk.cyan( |
| | | styleText( |
| | | "cyan", |
| | | `Started a Quartz server listening at http://localhost:${argv.port}${argv.baseDir}`, |
| | | ), |
| | | ) |
| | |
| | | .on("change", () => build(clientRefresh)) |
| | | .on("unlink", () => build(clientRefresh)) |
| | | |
| | | console.log(chalk.grey("hint: exit with ctrl+c")) |
| | | console.log(styleText("grey", "hint: exit with ctrl+c")) |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | export async function handleUpdate(argv) { |
| | | const contentFolder = resolveContentPath(argv.directory) |
| | | console.log(chalk.bgGreen.black(`\n Quartz v${version} \n`)) |
| | | console.log(`\n${styleText(["bgGreen", "black"], ` Quartz v${version} `)} \n`) |
| | | console.log("Backing up your content") |
| | | execSync( |
| | | `git remote show upstream || git remote add upstream https://github.com/jackyzha0/quartz.git`, |
| | |
| | | try { |
| | | gitPull(UPSTREAM_NAME, QUARTZ_SOURCE_BRANCH) |
| | | } catch { |
| | | console.log(chalk.red("An error occurred above while pulling updates.")) |
| | | console.log(styleText("red", "An error occurred above while pulling updates.")) |
| | | await popContentFolder(contentFolder) |
| | | return |
| | | } |
| | |
| | | |
| | | const res = spawnSync("npm", ["i"], opts) |
| | | if (res.status === 0) { |
| | | console.log(chalk.green("Done!")) |
| | | console.log(styleText("green", "Done!")) |
| | | } else { |
| | | console.log(chalk.red("An error occurred above while installing dependencies.")) |
| | | console.log(styleText("red", "An error occurred above while installing dependencies.")) |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | export async function handleSync(argv) { |
| | | const contentFolder = resolveContentPath(argv.directory) |
| | | console.log(chalk.bgGreen.black(`\n Quartz v${version} \n`)) |
| | | console.log(`\n${styleText(["bgGreen", "black"], ` Quartz v${version} `)}\n`) |
| | | console.log("Backing up your content") |
| | | |
| | | if (argv.commit) { |
| | | const contentStat = await fs.promises.lstat(contentFolder) |
| | | if (contentStat.isSymbolicLink()) { |
| | | const linkTarg = await fs.promises.readlink(contentFolder) |
| | | console.log(chalk.yellow("Detected symlink, trying to dereference before committing")) |
| | | console.log(styleText("yellow", "Detected symlink, trying to dereference before committing")) |
| | | |
| | | // stash symlink file |
| | | await stashContentFolder(contentFolder) |
| | |
| | | try { |
| | | gitPull(ORIGIN_NAME, QUARTZ_SOURCE_BRANCH) |
| | | } catch { |
| | | console.log(chalk.red("An error occurred above while pulling updates.")) |
| | | console.log(styleText("red", "An error occurred above while pulling updates.")) |
| | | await popContentFolder(contentFolder) |
| | | return |
| | | } |
| | |
| | | stdio: "inherit", |
| | | }) |
| | | if (res.status !== 0) { |
| | | console.log(chalk.red(`An error occurred above while pushing to remote ${ORIGIN_NAME}.`)) |
| | | console.log( |
| | | styleText("red", `An error occurred above while pushing to remote ${ORIGIN_NAME}.`), |
| | | ) |
| | | return |
| | | } |
| | | } |
| | | |
| | | console.log(chalk.green("Done!")) |
| | | console.log(styleText("green", "Done!")) |
| | | } |
| | |
| | | import { isCancel, outro } from "@clack/prompts" |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | import { contentCacheFolder } from "./constants.js" |
| | | import { spawnSync } from "child_process" |
| | | import fs from "fs" |
| | |
| | | |
| | | export function exitIfCancel(val) { |
| | | if (isCancel(val)) { |
| | | outro(chalk.red("Exiting")) |
| | | outro(styleText("red", "Exiting")) |
| | | process.exit(0) |
| | | } else { |
| | | return val |
| | |
| | | const flags = ["--no-rebase", "--autostash", "-s", "recursive", "-X", "ours", "--no-edit"] |
| | | const out = spawnSync("git", ["pull", ...flags, origin, branch], { stdio: "inherit" }) |
| | | if (out.stderr) { |
| | | throw new Error(chalk.red(`Error while pulling updates: ${out.stderr}`)) |
| | | throw new Error(styleText("red", `Error while pulling updates: ${out.stderr}`)) |
| | | } else if (out.status !== 0) { |
| | | throw new Error(chalk.red("Error while pulling updates")) |
| | | throw new Error(styleText("red", "Error while pulling updates")) |
| | | } |
| | | } |
| | | |
| | |
| | | import { FilePath, joinSegments } from "../../util/path" |
| | | import { QuartzEmitterPlugin } from "../types" |
| | | import fs from "fs" |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | |
| | | export function extractDomainFromBaseUrl(baseUrl: string) { |
| | | const url = new URL(`https://${baseUrl}`) |
| | |
| | | name: "CNAME", |
| | | async emit({ argv, cfg }) { |
| | | if (!cfg.configuration.baseUrl) { |
| | | console.warn(chalk.yellow("CNAME emitter requires `baseUrl` to be set in your configuration")) |
| | | console.warn( |
| | | styleText("yellow", "CNAME emitter requires `baseUrl` to be set in your configuration"), |
| | | ) |
| | | return [] |
| | | } |
| | | const path = joinSegments(argv.output, "CNAME") |
| | |
| | | import { pathToRoot } from "../../util/path" |
| | | import { defaultContentPageLayout, sharedPageComponents } from "../../../quartz.layout" |
| | | import { Content } from "../../components" |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | import { write } from "./helpers" |
| | | import { BuildCtx } from "../../util/ctx" |
| | | import { Node } from "unist" |
| | |
| | | |
| | | if (!containsIndex) { |
| | | console.log( |
| | | chalk.yellow( |
| | | styleText( |
| | | "yellow", |
| | | `\nWarning: you seem to be missing an \`index.md\` home page file at the root of your \`${ctx.argv.directory}\` folder (\`${path.join(ctx.argv.directory, "index.md")} does not exist\`). This may cause errors when deploying.`, |
| | | ), |
| | | ) |
| | |
| | | import { BuildCtx } from "../../util/ctx" |
| | | import { QuartzPluginData } from "../vfile" |
| | | import fs from "node:fs/promises" |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | |
| | | const defaultOptions: SocialImageOptions = { |
| | | colorScheme: "lightMode", |
| | |
| | | const iconData = await fs.readFile(iconPath) |
| | | iconBase64 = `data:image/png;base64,${iconData.toString("base64")}` |
| | | } catch (err) { |
| | | console.warn(chalk.yellow(`Warning: Could not find icon at ${iconPath}`)) |
| | | console.warn(styleText("yellow", `Warning: Could not find icon at ${iconPath}`)) |
| | | } |
| | | |
| | | const imageComponent = userOpts.imageStructure({ |
| | |
| | | import fs from "fs" |
| | | import { Repository } from "@napi-rs/simple-git" |
| | | import { QuartzTransformerPlugin } from "../types" |
| | | import chalk from "chalk" |
| | | import path from "path" |
| | | import { styleText } from "util" |
| | | |
| | | export interface Options { |
| | | priority: ("frontmatter" | "git" | "filesystem")[] |
| | |
| | | const invalidDate = isNaN(dt.getTime()) || dt.getTime() === 0 |
| | | if (invalidDate && d !== undefined) { |
| | | console.log( |
| | | chalk.yellow( |
| | | styleText( |
| | | "yellow", |
| | | `\nWarning: found invalid date "${d}" in \`${fp}\`. Supported formats: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format`, |
| | | ), |
| | | ) |
| | |
| | | repositoryWorkdir = repo.workdir() ?? ctx.argv.directory |
| | | } catch (e) { |
| | | console.log( |
| | | chalk.yellow(`\nWarning: couldn't find git repository for ${ctx.argv.directory}`), |
| | | styleText( |
| | | "yellow", |
| | | `\nWarning: couldn't find git repository for ${ctx.argv.directory}`, |
| | | ), |
| | | ) |
| | | } |
| | | } |
| | |
| | | modified ||= await repo.getFileLatestModifiedDateAsync(relativePath) |
| | | } catch { |
| | | console.log( |
| | | chalk.yellow( |
| | | styleText( |
| | | "yellow", |
| | | `\nWarning: ${file.data.filePath!} isn't yet tracked by git, dates will be inaccurate`, |
| | | ), |
| | | ) |
| | |
| | | import { QuartzLogger } from "../util/log" |
| | | import { trace } from "../util/trace" |
| | | import { BuildCtx } from "../util/ctx" |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | |
| | | export async function emitContent(ctx: BuildCtx, content: ProcessedContent[]) { |
| | | const { argv, cfg } = ctx |
| | |
| | | if (ctx.argv.verbose) { |
| | | console.log(`[emit:${emitter.name}] ${file}`) |
| | | } else { |
| | | log.updateText(`${emitter.name} -> ${chalk.gray(file)}`) |
| | | log.updateText(`${emitter.name} -> ${styleText("gray", file)}`) |
| | | } |
| | | } |
| | | } else { |
| | |
| | | if (ctx.argv.verbose) { |
| | | console.log(`[emit:${emitter.name}] ${file}`) |
| | | } else { |
| | | log.updateText(`${emitter.name} -> ${chalk.gray(file)}`) |
| | | log.updateText(`${emitter.name} -> ${styleText("gray", file)}`) |
| | | } |
| | | } |
| | | } |
| | |
| | | import { QuartzLogger } from "../util/log" |
| | | import { trace } from "../util/trace" |
| | | import { BuildCtx, WorkerSerializableBuildCtx } from "../util/ctx" |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | |
| | | export type QuartzMdProcessor = Processor<MDRoot, MDRoot, MDRoot> |
| | | export type QuartzHtmlProcessor = Processor<undefined, MDRoot, HTMLRoot> |
| | |
| | | textToMarkdownPromises.map(async (promise) => { |
| | | const result = await promise |
| | | processedFiles += result.length |
| | | log.updateText(`text->markdown ${chalk.gray(`${processedFiles}/${fps.length}`)}`) |
| | | log.updateText(`text->markdown ${styleText("gray", `${processedFiles}/${fps.length}`)}`) |
| | | return result |
| | | }), |
| | | ).catch(errorHandler) |
| | |
| | | markdownToHtmlPromises.map(async (promise) => { |
| | | const result = await promise |
| | | processedFiles += result.length |
| | | log.updateText(`markdown->html ${chalk.gray(`${processedFiles}/${fps.length}`)}`) |
| | | log.updateText(`markdown->html ${styleText("gray", `${processedFiles}/${fps.length}`)}`) |
| | | return result |
| | | }), |
| | | ).catch(errorHandler) |
| | |
| | | import { formatDate, getDate } from "../components/Date" |
| | | import readingTime from "reading-time" |
| | | import { i18n } from "../i18n" |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | |
| | | const defaultHeaderWeight = [700] |
| | | const defaultBodyWeight = [400] |
| | |
| | | |
| | | if (!match) { |
| | | console.log( |
| | | chalk.yellow( |
| | | styleText( |
| | | "yellow", |
| | | `\nWarning: Failed to fetch font ${rawFontName} with weight ${weight}, got ${cssResponse.statusText}`, |
| | | ), |
| | | ) |
| | |
| | | import chalk from "chalk" |
| | | import pretty from "pretty-time" |
| | | import { styleText } from "util" |
| | | |
| | | export class PerfTimer { |
| | | evts: { [key: string]: [number, number] } |
| | |
| | | } |
| | | |
| | | timeSince(evtName?: string): string { |
| | | return chalk.yellow(pretty(process.hrtime(this.evts[evtName ?? "start"]))) |
| | | return styleText("yellow", pretty(process.hrtime(this.evts[evtName ?? "start"]))) |
| | | } |
| | | } |
| | |
| | | import chalk from "chalk" |
| | | import { styleText } from "util" |
| | | import process from "process" |
| | | import { isMainThread } from "workerpool" |
| | | |
| | |
| | | lines.push("") |
| | | lines.push( |
| | | "\n" + |
| | | chalk.bgRed.black.bold(" ERROR ") + |
| | | styleText(["bgRed", "black", "bold"], " ERROR ") + |
| | | "\n\n" + |
| | | chalk.red(` ${msg}`) + |
| | | styleText("red", ` ${msg}`) + |
| | | (err.message.length > 0 ? `: ${err.message}` : ""), |
| | | ) |
| | | |