chore(deps): replace chalk and rimraf with builtin functions (#1879)
				
					
				
			Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
		
							
								
								
									
										407
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										407
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -17,7 +17,6 @@
 | 
				
			|||||||
        "@webgpu/types": "^0.1.60",
 | 
					        "@webgpu/types": "^0.1.60",
 | 
				
			||||||
        "ansi-truncate": "^1.2.0",
 | 
					        "ansi-truncate": "^1.2.0",
 | 
				
			||||||
        "async-mutex": "^0.5.0",
 | 
					        "async-mutex": "^0.5.0",
 | 
				
			||||||
        "chalk": "^5.4.1",
 | 
					 | 
				
			||||||
        "chokidar": "^4.0.3",
 | 
					        "chokidar": "^4.0.3",
 | 
				
			||||||
        "cli-spinner": "^0.2.10",
 | 
					        "cli-spinner": "^0.2.10",
 | 
				
			||||||
        "d3": "^7.9.0",
 | 
					        "d3": "^7.9.0",
 | 
				
			||||||
@@ -59,7 +58,6 @@
 | 
				
			|||||||
        "remark-rehype": "^11.1.2",
 | 
					        "remark-rehype": "^11.1.2",
 | 
				
			||||||
        "remark-smartypants": "^3.0.2",
 | 
					        "remark-smartypants": "^3.0.2",
 | 
				
			||||||
        "rfdc": "^1.4.1",
 | 
					        "rfdc": "^1.4.1",
 | 
				
			||||||
        "rimraf": "^6.0.1",
 | 
					 | 
				
			||||||
        "satori": "^0.12.2",
 | 
					        "satori": "^0.12.2",
 | 
				
			||||||
        "serve-handler": "^6.1.6",
 | 
					        "serve-handler": "^6.1.6",
 | 
				
			||||||
        "sharp": "^0.34.1",
 | 
					        "sharp": "^0.34.1",
 | 
				
			||||||
@@ -1011,22 +1009,6 @@
 | 
				
			|||||||
        "url": "https://opencollective.com/libvips"
 | 
					        "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": {
 | 
					    "node_modules/@myriaddreamin/rehype-typst": {
 | 
				
			||||||
      "version": "0.6.0",
 | 
					      "version": "0.6.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@myriaddreamin/rehype-typst/-/rehype-typst-0.6.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@myriaddreamin/rehype-typst/-/rehype-typst-0.6.0.tgz",
 | 
				
			||||||
@@ -1516,15 +1498,6 @@
 | 
				
			|||||||
      "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==",
 | 
					      "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==",
 | 
				
			||||||
      "license": "MIT"
 | 
					      "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": {
 | 
					    "node_modules/@shikijs/core": {
 | 
				
			||||||
      "version": "1.26.2",
 | 
					      "version": "1.26.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.26.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.26.2.tgz",
 | 
				
			||||||
@@ -2043,17 +2016,6 @@
 | 
				
			|||||||
        "node": ">= 14"
 | 
					        "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": {
 | 
					    "node_modules/ansi-styles": {
 | 
				
			||||||
      "version": "4.3.0",
 | 
					      "version": "4.3.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
 | 
				
			||||||
@@ -2212,17 +2174,6 @@
 | 
				
			|||||||
        "url": "https://github.com/sponsors/wooorm"
 | 
					        "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": {
 | 
					    "node_modules/character-entities": {
 | 
				
			||||||
      "version": "2.0.2",
 | 
					      "version": "2.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
 | 
				
			||||||
@@ -2435,20 +2386,6 @@
 | 
				
			|||||||
        "node-fetch": "^2.6.12"
 | 
					        "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": {
 | 
					    "node_modules/css-background-parser": {
 | 
				
			||||||
      "version": "0.1.0",
 | 
					      "version": "0.1.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/css-background-parser/-/css-background-parser-0.1.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/css-background-parser/-/css-background-parser-0.1.0.tgz",
 | 
				
			||||||
@@ -2931,16 +2868,6 @@
 | 
				
			|||||||
      "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==",
 | 
					      "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==",
 | 
				
			||||||
      "license": "ISC"
 | 
					      "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": {
 | 
					    "node_modules/emoji-regex-xs": {
 | 
				
			||||||
      "version": "1.0.0",
 | 
					      "version": "1.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz",
 | 
				
			||||||
@@ -3199,21 +3126,6 @@
 | 
				
			|||||||
      "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.43.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.43.tgz",
 | 
				
			||||||
      "integrity": "sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg=="
 | 
					      "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": {
 | 
					    "node_modules/format": {
 | 
				
			||||||
      "version": "0.2.2",
 | 
					      "version": "0.2.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
 | 
				
			||||||
@@ -3278,28 +3190,6 @@
 | 
				
			|||||||
      "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="
 | 
					      "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": {
 | 
					    "node_modules/glob-parent": {
 | 
				
			||||||
      "version": "5.1.2",
 | 
					      "version": "5.1.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
 | 
				
			||||||
@@ -3950,34 +3840,12 @@
 | 
				
			|||||||
        "url": "https://github.com/sponsors/sindresorhus"
 | 
					        "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": {
 | 
					    "node_modules/ismobilejs": {
 | 
				
			||||||
      "version": "1.1.1",
 | 
					      "version": "1.1.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==",
 | 
					      "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==",
 | 
				
			||||||
      "license": "MIT"
 | 
					      "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": {
 | 
					    "node_modules/js-binary-schema-parser": {
 | 
				
			||||||
      "version": "2.0.3",
 | 
					      "version": "2.0.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz",
 | 
				
			||||||
@@ -4283,14 +4151,6 @@
 | 
				
			|||||||
        "url": "https://github.com/sponsors/wooorm"
 | 
					        "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": {
 | 
					    "node_modules/markdown-table": {
 | 
				
			||||||
      "version": "3.0.3",
 | 
					      "version": "3.0.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
 | 
				
			||||||
@@ -5300,14 +5160,6 @@
 | 
				
			|||||||
        "url": "https://github.com/sponsors/isaacs"
 | 
					        "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": {
 | 
					    "node_modules/mj-context-menu": {
 | 
				
			||||||
      "version": "0.6.1",
 | 
					      "version": "0.6.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
 | 
				
			||||||
@@ -5384,11 +5236,6 @@
 | 
				
			|||||||
        "regex-recursion": "^5.1.1"
 | 
					        "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": {
 | 
					    "node_modules/pako": {
 | 
				
			||||||
      "version": "0.2.9",
 | 
					      "version": "0.2.9",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
 | 
				
			||||||
@@ -5473,34 +5320,11 @@
 | 
				
			|||||||
      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w=="
 | 
					      "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": {
 | 
					    "node_modules/path-parse": {
 | 
				
			||||||
      "version": "1.0.7",
 | 
					      "version": "1.0.7",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
 | 
				
			||||||
      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
 | 
					      "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": {
 | 
					    "node_modules/path-to-regexp": {
 | 
				
			||||||
      "version": "3.3.0",
 | 
					      "version": "3.3.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz",
 | 
				
			||||||
@@ -6090,24 +5914,6 @@
 | 
				
			|||||||
      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="
 | 
					      "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": {
 | 
					    "node_modules/robust-predicates": {
 | 
				
			||||||
      "version": "3.0.2",
 | 
					      "version": "3.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
 | 
				
			||||||
@@ -6665,25 +6471,6 @@
 | 
				
			|||||||
        "@img/sharp-win32-x64": "0.34.1"
 | 
					        "@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": {
 | 
					    "node_modules/shiki": {
 | 
				
			||||||
      "version": "1.26.2",
 | 
					      "version": "1.26.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.26.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.26.2.tgz",
 | 
				
			||||||
@@ -6699,17 +6486,6 @@
 | 
				
			|||||||
        "@types/hast": "^3.0.4"
 | 
					        "@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": {
 | 
					    "node_modules/simple-swizzle": {
 | 
				
			||||||
      "version": "0.2.2",
 | 
					      "version": "0.2.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
 | 
				
			||||||
@@ -6796,60 +6572,6 @@
 | 
				
			|||||||
      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
 | 
				
			||||||
      "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
 | 
					      "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": {
 | 
					    "node_modules/string.prototype.codepointat": {
 | 
				
			||||||
      "version": "0.2.1",
 | 
					      "version": "0.2.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz",
 | 
				
			||||||
@@ -6869,40 +6591,6 @@
 | 
				
			|||||||
        "url": "https://github.com/sponsors/wooorm"
 | 
					        "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": {
 | 
					    "node_modules/strip-bom-string": {
 | 
				
			||||||
      "version": "1.0.0",
 | 
					      "version": "1.0.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
 | 
				
			||||||
@@ -7333,20 +7021,6 @@
 | 
				
			|||||||
        "url": "https://github.com/sponsors/wooorm"
 | 
					        "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": {
 | 
					    "node_modules/wicked-good-xpath": {
 | 
				
			||||||
      "version": "1.3.0",
 | 
					      "version": "1.3.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
 | 
				
			||||||
@@ -7357,87 +7031,6 @@
 | 
				
			|||||||
      "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.2.0.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.2.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-PKZqBOCo6CYkVOwAxWxQaSF2Fvb5Iv2fCeTP7buyWI2GiynWr46NcXSgK/idoV6e60dgCBfgYc+Un3HMvmqP8w=="
 | 
					      "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": {
 | 
					    "node_modules/ws": {
 | 
				
			||||||
      "version": "8.18.2",
 | 
					      "version": "8.18.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,7 +43,6 @@
 | 
				
			|||||||
    "@webgpu/types": "^0.1.60",
 | 
					    "@webgpu/types": "^0.1.60",
 | 
				
			||||||
    "ansi-truncate": "^1.2.0",
 | 
					    "ansi-truncate": "^1.2.0",
 | 
				
			||||||
    "async-mutex": "^0.5.0",
 | 
					    "async-mutex": "^0.5.0",
 | 
				
			||||||
    "chalk": "^5.4.1",
 | 
					 | 
				
			||||||
    "chokidar": "^4.0.3",
 | 
					    "chokidar": "^4.0.3",
 | 
				
			||||||
    "cli-spinner": "^0.2.10",
 | 
					    "cli-spinner": "^0.2.10",
 | 
				
			||||||
    "d3": "^7.9.0",
 | 
					    "d3": "^7.9.0",
 | 
				
			||||||
@@ -85,7 +84,6 @@
 | 
				
			|||||||
    "remark-rehype": "^11.1.2",
 | 
					    "remark-rehype": "^11.1.2",
 | 
				
			||||||
    "remark-smartypants": "^3.0.2",
 | 
					    "remark-smartypants": "^3.0.2",
 | 
				
			||||||
    "rfdc": "^1.4.1",
 | 
					    "rfdc": "^1.4.1",
 | 
				
			||||||
    "rimraf": "^6.0.1",
 | 
					 | 
				
			||||||
    "satori": "^0.12.2",
 | 
					    "satori": "^0.12.2",
 | 
				
			||||||
    "serve-handler": "^6.1.6",
 | 
					    "serve-handler": "^6.1.6",
 | 
				
			||||||
    "sharp": "^0.34.1",
 | 
					    "sharp": "^0.34.1",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,9 +2,9 @@ import sourceMapSupport from "source-map-support"
 | 
				
			|||||||
sourceMapSupport.install(options)
 | 
					sourceMapSupport.install(options)
 | 
				
			||||||
import path from "path"
 | 
					import path from "path"
 | 
				
			||||||
import { PerfTimer } from "./util/perf"
 | 
					import { PerfTimer } from "./util/perf"
 | 
				
			||||||
import { rimraf } from "rimraf"
 | 
					import { rm } from "fs/promises"
 | 
				
			||||||
import { GlobbyFilterFunction, isGitIgnored } from "globby"
 | 
					import { GlobbyFilterFunction, isGitIgnored } from "globby"
 | 
				
			||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
import { parseMarkdown } from "./processors/parse"
 | 
					import { parseMarkdown } from "./processors/parse"
 | 
				
			||||||
import { filterContent } from "./processors/filter"
 | 
					import { filterContent } from "./processors/filter"
 | 
				
			||||||
import { emitContent } from "./processors/emit"
 | 
					import { emitContent } from "./processors/emit"
 | 
				
			||||||
@@ -67,7 +67,7 @@ async function buildQuartz(argv: Argv, mut: Mutex, clientRefresh: () => void) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  const release = await mut.acquire()
 | 
					  const release = await mut.acquire()
 | 
				
			||||||
  perf.addEvent("clean")
 | 
					  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")}`)
 | 
					  console.log(`Cleaned output directory \`${output}\` in ${perf.timeSince("clean")}`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  perf.addEvent("glob")
 | 
					  perf.addEvent("glob")
 | 
				
			||||||
@@ -85,7 +85,9 @@ async function buildQuartz(argv: Argv, mut: Mutex, clientRefresh: () => void) {
 | 
				
			|||||||
  const filteredContent = filterContent(ctx, parsedFiles)
 | 
					  const filteredContent = filterContent(ctx, parsedFiles)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  await emitContent(ctx, filteredContent)
 | 
					  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()
 | 
					  release()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (argv.watch) {
 | 
					  if (argv.watch) {
 | 
				
			||||||
@@ -186,7 +188,7 @@ async function rebuild(changes: ChangeEvent[], clientRefresh: () => void, buildD
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  const perf = new PerfTimer()
 | 
					  const perf = new PerfTimer()
 | 
				
			||||||
  perf.addEvent("rebuild")
 | 
					  perf.addEvent("rebuild")
 | 
				
			||||||
  console.log(chalk.yellow("Detected change, rebuilding..."))
 | 
					  console.log(styleText("yellow", "Detected change, rebuilding..."))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // update changesSinceLastBuild
 | 
					  // update changesSinceLastBuild
 | 
				
			||||||
  for (const change of changes) {
 | 
					  for (const change of changes) {
 | 
				
			||||||
@@ -281,7 +283,7 @@ async function rebuild(changes: ChangeEvent[], clientRefresh: () => void, buildD
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  console.log(`Emitted ${emittedFiles} files to \`${argv.output}\` in ${perf.timeSince("rebuild")}`)
 | 
					  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)
 | 
					  changes.splice(0, numChangesInBuild)
 | 
				
			||||||
  clientRefresh()
 | 
					  clientRefresh()
 | 
				
			||||||
  release()
 | 
					  release()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,11 @@
 | 
				
			|||||||
import { promises } from "fs"
 | 
					import { promises } from "fs"
 | 
				
			||||||
import path from "path"
 | 
					import path from "path"
 | 
				
			||||||
import esbuild from "esbuild"
 | 
					import esbuild from "esbuild"
 | 
				
			||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
import { sassPlugin } from "esbuild-sass-plugin"
 | 
					import { sassPlugin } from "esbuild-sass-plugin"
 | 
				
			||||||
import fs from "fs"
 | 
					import fs from "fs"
 | 
				
			||||||
import { intro, outro, select, text } from "@clack/prompts"
 | 
					import { intro, outro, select, text } from "@clack/prompts"
 | 
				
			||||||
import { rimraf } from "rimraf"
 | 
					import { rm } from "fs/promises"
 | 
				
			||||||
import chokidar from "chokidar"
 | 
					import chokidar from "chokidar"
 | 
				
			||||||
import prettyBytes from "pretty-bytes"
 | 
					import prettyBytes from "pretty-bytes"
 | 
				
			||||||
import { execSync, spawnSync } from "child_process"
 | 
					import { execSync, spawnSync } from "child_process"
 | 
				
			||||||
@@ -48,7 +48,7 @@ function resolveContentPath(contentPath) {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
export async function handleCreate(argv) {
 | 
					export async function handleCreate(argv) {
 | 
				
			||||||
  console.log()
 | 
					  console.log()
 | 
				
			||||||
  intro(chalk.bgGreen.black(` Quartz v${version} `))
 | 
					  intro(styleText(["bgGreen", "black"], ` Quartz v${version} `))
 | 
				
			||||||
  const contentFolder = resolveContentPath(argv.directory)
 | 
					  const contentFolder = resolveContentPath(argv.directory)
 | 
				
			||||||
  let setupStrategy = argv.strategy?.toLowerCase()
 | 
					  let setupStrategy = argv.strategy?.toLowerCase()
 | 
				
			||||||
  let linkResolutionStrategy = argv.links?.toLowerCase()
 | 
					  let linkResolutionStrategy = argv.links?.toLowerCase()
 | 
				
			||||||
@@ -61,12 +61,16 @@ export async function handleCreate(argv) {
 | 
				
			|||||||
      // Error handling
 | 
					      // Error handling
 | 
				
			||||||
      if (!sourceDirectory) {
 | 
					      if (!sourceDirectory) {
 | 
				
			||||||
        outro(
 | 
					        outro(
 | 
				
			||||||
          chalk.red(
 | 
					          styleText(
 | 
				
			||||||
            `Setup strategies (arg '${chalk.yellow(
 | 
					            "red",
 | 
				
			||||||
 | 
					            `Setup strategies (arg '${styleText(
 | 
				
			||||||
 | 
					              "yellow",
 | 
				
			||||||
              `-${CreateArgv.strategy.alias[0]}`,
 | 
					              `-${CreateArgv.strategy.alias[0]}`,
 | 
				
			||||||
            )}') other than '${chalk.yellow(
 | 
					            )}') other than '${styleText(
 | 
				
			||||||
 | 
					              "yellow",
 | 
				
			||||||
              "new",
 | 
					              "new",
 | 
				
			||||||
            )}' require content folder argument ('${chalk.yellow(
 | 
					            )}' require content folder argument ('${styleText(
 | 
				
			||||||
 | 
					              "yellow",
 | 
				
			||||||
              `-${CreateArgv.source.alias[0]}`,
 | 
					              `-${CreateArgv.source.alias[0]}`,
 | 
				
			||||||
            )}') to be set`,
 | 
					            )}') to be set`,
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
@@ -75,19 +79,23 @@ export async function handleCreate(argv) {
 | 
				
			|||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        if (!fs.existsSync(sourceDirectory)) {
 | 
					        if (!fs.existsSync(sourceDirectory)) {
 | 
				
			||||||
          outro(
 | 
					          outro(
 | 
				
			||||||
            chalk.red(
 | 
					            styleText(
 | 
				
			||||||
              `Input directory to copy/symlink 'content' from not found ('${chalk.yellow(
 | 
					              "red",
 | 
				
			||||||
 | 
					              `Input directory to copy/symlink 'content' from not found ('${styleText(
 | 
				
			||||||
 | 
					                "yellow",
 | 
				
			||||||
                sourceDirectory,
 | 
					                sourceDirectory,
 | 
				
			||||||
              )}', invalid argument "${chalk.yellow(`-${CreateArgv.source.alias[0]}`)})`,
 | 
					              )}', invalid argument "${styleText("yellow", `-${CreateArgv.source.alias[0]}`)})`,
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
          )
 | 
					          )
 | 
				
			||||||
          process.exit(1)
 | 
					          process.exit(1)
 | 
				
			||||||
        } else if (!fs.lstatSync(sourceDirectory).isDirectory()) {
 | 
					        } else if (!fs.lstatSync(sourceDirectory).isDirectory()) {
 | 
				
			||||||
          outro(
 | 
					          outro(
 | 
				
			||||||
            chalk.red(
 | 
					            styleText(
 | 
				
			||||||
              `Source directory to copy/symlink 'content' from is not a directory (found file at '${chalk.yellow(
 | 
					              "red",
 | 
				
			||||||
 | 
					              `Source directory to copy/symlink 'content' from is not a directory (found file at '${styleText(
 | 
				
			||||||
 | 
					                "yellow",
 | 
				
			||||||
                sourceDirectory,
 | 
					                sourceDirectory,
 | 
				
			||||||
              )}', invalid argument ${chalk.yellow(`-${CreateArgv.source.alias[0]}`)}")`,
 | 
					              )}', invalid argument ${styleText("yellow", `-${CreateArgv.source.alias[0]}`)}")`,
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
          )
 | 
					          )
 | 
				
			||||||
          process.exit(1)
 | 
					          process.exit(1)
 | 
				
			||||||
@@ -119,7 +127,7 @@ export async function handleCreate(argv) {
 | 
				
			|||||||
    if (contentStat.isSymbolicLink()) {
 | 
					    if (contentStat.isSymbolicLink()) {
 | 
				
			||||||
      await fs.promises.unlink(contentFolder)
 | 
					      await fs.promises.unlink(contentFolder)
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      await rimraf(contentFolder)
 | 
					      await rm(contentFolder, { recursive: true, force: true })
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -229,7 +237,7 @@ export async function handleBuild(argv) {
 | 
				
			|||||||
    argv.watch = 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({
 | 
					  const ctx = await esbuild.context({
 | 
				
			||||||
    entryPoints: [fp],
 | 
					    entryPoints: [fp],
 | 
				
			||||||
    outfile: cacheFile,
 | 
					    outfile: cacheFile,
 | 
				
			||||||
@@ -304,13 +312,13 @@ export async function handleBuild(argv) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (cleanupBuild) {
 | 
					    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()
 | 
					      await cleanupBuild()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const result = await ctx.rebuild().catch((err) => {
 | 
					    const result = await ctx.rebuild().catch((err) => {
 | 
				
			||||||
      console.error(`${chalk.red("Couldn't parse Quartz configuration:")} ${fp}`)
 | 
					      console.error(`${styleText("red", "Couldn't parse Quartz configuration:")} ${fp}`)
 | 
				
			||||||
      console.log(`Reason: ${chalk.grey(err)}`)
 | 
					      console.log(`Reason: ${styleText("grey", err)}`)
 | 
				
			||||||
      process.exit(1)
 | 
					      process.exit(1)
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    release()
 | 
					    release()
 | 
				
			||||||
@@ -348,7 +356,8 @@ export async function handleBuild(argv) {
 | 
				
			|||||||
    const server = http.createServer(async (req, res) => {
 | 
					    const server = http.createServer(async (req, res) => {
 | 
				
			||||||
      if (argv.baseDir && !req.url?.startsWith(argv.baseDir)) {
 | 
					      if (argv.baseDir && !req.url?.startsWith(argv.baseDir)) {
 | 
				
			||||||
        console.log(
 | 
					        console.log(
 | 
				
			||||||
          chalk.red(
 | 
					          styleText(
 | 
				
			||||||
 | 
					            "red",
 | 
				
			||||||
            `[404] ${req.url} (warning: link outside of site, this is likely a Quartz bug)`,
 | 
					            `[404] ${req.url} (warning: link outside of site, this is likely a Quartz bug)`,
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
@@ -383,8 +392,10 @@ export async function handleBuild(argv) {
 | 
				
			|||||||
        })
 | 
					        })
 | 
				
			||||||
        const status = res.statusCode
 | 
					        const status = res.statusCode
 | 
				
			||||||
        const statusString =
 | 
					        const statusString =
 | 
				
			||||||
          status >= 200 && status < 300 ? chalk.green(`[${status}]`) : chalk.red(`[${status}]`)
 | 
					          status >= 200 && status < 300
 | 
				
			||||||
        console.log(statusString + chalk.grey(` ${argv.baseDir}${req.url}`))
 | 
					            ? styleText("green", `[${status}]`)
 | 
				
			||||||
 | 
					            : styleText("red", `[${status}]`)
 | 
				
			||||||
 | 
					        console.log(statusString + styleText("grey", ` ${argv.baseDir}${req.url}`))
 | 
				
			||||||
        release()
 | 
					        release()
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -393,7 +404,10 @@ export async function handleBuild(argv) {
 | 
				
			|||||||
        res.writeHead(302, {
 | 
					        res.writeHead(302, {
 | 
				
			||||||
          Location: newFp,
 | 
					          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()
 | 
					        res.end()
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -443,7 +457,8 @@ export async function handleBuild(argv) {
 | 
				
			|||||||
    const wss = new WebSocketServer({ port: argv.wsPort })
 | 
					    const wss = new WebSocketServer({ port: argv.wsPort })
 | 
				
			||||||
    wss.on("connection", (ws) => connections.push(ws))
 | 
					    wss.on("connection", (ws) => connections.push(ws))
 | 
				
			||||||
    console.log(
 | 
					    console.log(
 | 
				
			||||||
      chalk.cyan(
 | 
					      styleText(
 | 
				
			||||||
 | 
					        "cyan",
 | 
				
			||||||
        `Started a Quartz server listening at http://localhost:${argv.port}${argv.baseDir}`,
 | 
					        `Started a Quartz server listening at http://localhost:${argv.port}${argv.baseDir}`,
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
@@ -467,7 +482,7 @@ export async function handleBuild(argv) {
 | 
				
			|||||||
      .on("change", () => build(clientRefresh))
 | 
					      .on("change", () => build(clientRefresh))
 | 
				
			||||||
      .on("unlink", () => build(clientRefresh))
 | 
					      .on("unlink", () => build(clientRefresh))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    console.log(chalk.grey("hint: exit with ctrl+c"))
 | 
					    console.log(styleText("grey", "hint: exit with ctrl+c"))
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -477,7 +492,7 @@ export async function handleBuild(argv) {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
export async function handleUpdate(argv) {
 | 
					export async function handleUpdate(argv) {
 | 
				
			||||||
  const contentFolder = resolveContentPath(argv.directory)
 | 
					  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")
 | 
					  console.log("Backing up your content")
 | 
				
			||||||
  execSync(
 | 
					  execSync(
 | 
				
			||||||
    `git remote show upstream || git remote add upstream https://github.com/jackyzha0/quartz.git`,
 | 
					    `git remote show upstream || git remote add upstream https://github.com/jackyzha0/quartz.git`,
 | 
				
			||||||
@@ -490,7 +505,7 @@ export async function handleUpdate(argv) {
 | 
				
			|||||||
  try {
 | 
					  try {
 | 
				
			||||||
    gitPull(UPSTREAM_NAME, QUARTZ_SOURCE_BRANCH)
 | 
					    gitPull(UPSTREAM_NAME, QUARTZ_SOURCE_BRANCH)
 | 
				
			||||||
  } catch {
 | 
					  } 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)
 | 
					    await popContentFolder(contentFolder)
 | 
				
			||||||
    return
 | 
					    return
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@@ -517,9 +532,9 @@ export async function handleUpdate(argv) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  const res = spawnSync("npm", ["i"], opts)
 | 
					  const res = spawnSync("npm", ["i"], opts)
 | 
				
			||||||
  if (res.status === 0) {
 | 
					  if (res.status === 0) {
 | 
				
			||||||
    console.log(chalk.green("Done!"))
 | 
					    console.log(styleText("green", "Done!"))
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    console.log(chalk.red("An error occurred above while installing dependencies."))
 | 
					    console.log(styleText("red", "An error occurred above while installing dependencies."))
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -538,14 +553,14 @@ export async function handleRestore(argv) {
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
export async function handleSync(argv) {
 | 
					export async function handleSync(argv) {
 | 
				
			||||||
  const contentFolder = resolveContentPath(argv.directory)
 | 
					  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")
 | 
					  console.log("Backing up your content")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (argv.commit) {
 | 
					  if (argv.commit) {
 | 
				
			||||||
    const contentStat = await fs.promises.lstat(contentFolder)
 | 
					    const contentStat = await fs.promises.lstat(contentFolder)
 | 
				
			||||||
    if (contentStat.isSymbolicLink()) {
 | 
					    if (contentStat.isSymbolicLink()) {
 | 
				
			||||||
      const linkTarg = await fs.promises.readlink(contentFolder)
 | 
					      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
 | 
					      // stash symlink file
 | 
				
			||||||
      await stashContentFolder(contentFolder)
 | 
					      await stashContentFolder(contentFolder)
 | 
				
			||||||
@@ -580,7 +595,7 @@ export async function handleSync(argv) {
 | 
				
			|||||||
    try {
 | 
					    try {
 | 
				
			||||||
      gitPull(ORIGIN_NAME, QUARTZ_SOURCE_BRANCH)
 | 
					      gitPull(ORIGIN_NAME, QUARTZ_SOURCE_BRANCH)
 | 
				
			||||||
    } catch {
 | 
					    } 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)
 | 
					      await popContentFolder(contentFolder)
 | 
				
			||||||
      return
 | 
					      return
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -594,10 +609,12 @@ export async function handleSync(argv) {
 | 
				
			|||||||
      stdio: "inherit",
 | 
					      stdio: "inherit",
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    if (res.status !== 0) {
 | 
					    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
 | 
					      return
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  console.log(chalk.green("Done!"))
 | 
					  console.log(styleText("green", "Done!"))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import { isCancel, outro } from "@clack/prompts"
 | 
					import { isCancel, outro } from "@clack/prompts"
 | 
				
			||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
import { contentCacheFolder } from "./constants.js"
 | 
					import { contentCacheFolder } from "./constants.js"
 | 
				
			||||||
import { spawnSync } from "child_process"
 | 
					import { spawnSync } from "child_process"
 | 
				
			||||||
import fs from "fs"
 | 
					import fs from "fs"
 | 
				
			||||||
@@ -14,7 +14,7 @@ export function escapePath(fp) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export function exitIfCancel(val) {
 | 
					export function exitIfCancel(val) {
 | 
				
			||||||
  if (isCancel(val)) {
 | 
					  if (isCancel(val)) {
 | 
				
			||||||
    outro(chalk.red("Exiting"))
 | 
					    outro(styleText("red", "Exiting"))
 | 
				
			||||||
    process.exit(0)
 | 
					    process.exit(0)
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    return val
 | 
					    return val
 | 
				
			||||||
@@ -36,9 +36,9 @@ export function gitPull(origin, branch) {
 | 
				
			|||||||
  const flags = ["--no-rebase", "--autostash", "-s", "recursive", "-X", "ours", "--no-edit"]
 | 
					  const flags = ["--no-rebase", "--autostash", "-s", "recursive", "-X", "ours", "--no-edit"]
 | 
				
			||||||
  const out = spawnSync("git", ["pull", ...flags, origin, branch], { stdio: "inherit" })
 | 
					  const out = spawnSync("git", ["pull", ...flags, origin, branch], { stdio: "inherit" })
 | 
				
			||||||
  if (out.stderr) {
 | 
					  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) {
 | 
					  } else if (out.status !== 0) {
 | 
				
			||||||
    throw new Error(chalk.red("Error while pulling updates"))
 | 
					    throw new Error(styleText("red", "Error while pulling updates"))
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
import { FilePath, joinSegments } from "../../util/path"
 | 
					import { FilePath, joinSegments } from "../../util/path"
 | 
				
			||||||
import { QuartzEmitterPlugin } from "../types"
 | 
					import { QuartzEmitterPlugin } from "../types"
 | 
				
			||||||
import fs from "fs"
 | 
					import fs from "fs"
 | 
				
			||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function extractDomainFromBaseUrl(baseUrl: string) {
 | 
					export function extractDomainFromBaseUrl(baseUrl: string) {
 | 
				
			||||||
  const url = new URL(`https://${baseUrl}`)
 | 
					  const url = new URL(`https://${baseUrl}`)
 | 
				
			||||||
@@ -12,7 +12,9 @@ export const CNAME: QuartzEmitterPlugin = () => ({
 | 
				
			|||||||
  name: "CNAME",
 | 
					  name: "CNAME",
 | 
				
			||||||
  async emit({ argv, cfg }) {
 | 
					  async emit({ argv, cfg }) {
 | 
				
			||||||
    if (!cfg.configuration.baseUrl) {
 | 
					    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 []
 | 
					      return []
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    const path = joinSegments(argv.output, "CNAME")
 | 
					    const path = joinSegments(argv.output, "CNAME")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ import { FullPageLayout } from "../../cfg"
 | 
				
			|||||||
import { pathToRoot } from "../../util/path"
 | 
					import { pathToRoot } from "../../util/path"
 | 
				
			||||||
import { defaultContentPageLayout, sharedPageComponents } from "../../../quartz.layout"
 | 
					import { defaultContentPageLayout, sharedPageComponents } from "../../../quartz.layout"
 | 
				
			||||||
import { Content } from "../../components"
 | 
					import { Content } from "../../components"
 | 
				
			||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
import { write } from "./helpers"
 | 
					import { write } from "./helpers"
 | 
				
			||||||
import { BuildCtx } from "../../util/ctx"
 | 
					import { BuildCtx } from "../../util/ctx"
 | 
				
			||||||
import { Node } from "unist"
 | 
					import { Node } from "unist"
 | 
				
			||||||
@@ -90,7 +90,8 @@ export const ContentPage: QuartzEmitterPlugin<Partial<FullPageLayout>> = (userOp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      if (!containsIndex) {
 | 
					      if (!containsIndex) {
 | 
				
			||||||
        console.log(
 | 
					        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.`,
 | 
					            `\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.`,
 | 
				
			||||||
          ),
 | 
					          ),
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,7 @@ import { write } from "./helpers"
 | 
				
			|||||||
import { BuildCtx } from "../../util/ctx"
 | 
					import { BuildCtx } from "../../util/ctx"
 | 
				
			||||||
import { QuartzPluginData } from "../vfile"
 | 
					import { QuartzPluginData } from "../vfile"
 | 
				
			||||||
import fs from "node:fs/promises"
 | 
					import fs from "node:fs/promises"
 | 
				
			||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const defaultOptions: SocialImageOptions = {
 | 
					const defaultOptions: SocialImageOptions = {
 | 
				
			||||||
  colorScheme: "lightMode",
 | 
					  colorScheme: "lightMode",
 | 
				
			||||||
@@ -36,7 +36,7 @@ async function generateSocialImage(
 | 
				
			|||||||
    const iconData = await fs.readFile(iconPath)
 | 
					    const iconData = await fs.readFile(iconPath)
 | 
				
			||||||
    iconBase64 = `data:image/png;base64,${iconData.toString("base64")}`
 | 
					    iconBase64 = `data:image/png;base64,${iconData.toString("base64")}`
 | 
				
			||||||
  } catch (err) {
 | 
					  } 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({
 | 
					  const imageComponent = userOpts.imageStructure({
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
import fs from "fs"
 | 
					import fs from "fs"
 | 
				
			||||||
import { Repository } from "@napi-rs/simple-git"
 | 
					import { Repository } from "@napi-rs/simple-git"
 | 
				
			||||||
import { QuartzTransformerPlugin } from "../types"
 | 
					import { QuartzTransformerPlugin } from "../types"
 | 
				
			||||||
import chalk from "chalk"
 | 
					 | 
				
			||||||
import path from "path"
 | 
					import path from "path"
 | 
				
			||||||
 | 
					import { styleText } from "util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface Options {
 | 
					export interface Options {
 | 
				
			||||||
  priority: ("frontmatter" | "git" | "filesystem")[]
 | 
					  priority: ("frontmatter" | "git" | "filesystem")[]
 | 
				
			||||||
@@ -17,7 +17,8 @@ function coerceDate(fp: string, d: any): Date {
 | 
				
			|||||||
  const invalidDate = isNaN(dt.getTime()) || dt.getTime() === 0
 | 
					  const invalidDate = isNaN(dt.getTime()) || dt.getTime() === 0
 | 
				
			||||||
  if (invalidDate && d !== undefined) {
 | 
					  if (invalidDate && d !== undefined) {
 | 
				
			||||||
    console.log(
 | 
					    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`,
 | 
					        `\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`,
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
@@ -42,7 +43,10 @@ export const CreatedModifiedDate: QuartzTransformerPlugin<Partial<Options>> = (u
 | 
				
			|||||||
              repositoryWorkdir = repo.workdir() ?? ctx.argv.directory
 | 
					              repositoryWorkdir = repo.workdir() ?? ctx.argv.directory
 | 
				
			||||||
            } catch (e) {
 | 
					            } catch (e) {
 | 
				
			||||||
              console.log(
 | 
					              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}`,
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
              )
 | 
					              )
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
@@ -69,7 +73,8 @@ export const CreatedModifiedDate: QuartzTransformerPlugin<Partial<Options>> = (u
 | 
				
			|||||||
                  modified ||= await repo.getFileLatestModifiedDateAsync(relativePath)
 | 
					                  modified ||= await repo.getFileLatestModifiedDateAsync(relativePath)
 | 
				
			||||||
                } catch {
 | 
					                } catch {
 | 
				
			||||||
                  console.log(
 | 
					                  console.log(
 | 
				
			||||||
                    chalk.yellow(
 | 
					                    styleText(
 | 
				
			||||||
 | 
					                      "yellow",
 | 
				
			||||||
                      `\nWarning: ${file.data.filePath!} isn't yet tracked by git, dates will be inaccurate`,
 | 
					                      `\nWarning: ${file.data.filePath!} isn't yet tracked by git, dates will be inaccurate`,
 | 
				
			||||||
                    ),
 | 
					                    ),
 | 
				
			||||||
                  )
 | 
					                  )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ import { ProcessedContent } from "../plugins/vfile"
 | 
				
			|||||||
import { QuartzLogger } from "../util/log"
 | 
					import { QuartzLogger } from "../util/log"
 | 
				
			||||||
import { trace } from "../util/trace"
 | 
					import { trace } from "../util/trace"
 | 
				
			||||||
import { BuildCtx } from "../util/ctx"
 | 
					import { BuildCtx } from "../util/ctx"
 | 
				
			||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export async function emitContent(ctx: BuildCtx, content: ProcessedContent[]) {
 | 
					export async function emitContent(ctx: BuildCtx, content: ProcessedContent[]) {
 | 
				
			||||||
  const { argv, cfg } = ctx
 | 
					  const { argv, cfg } = ctx
 | 
				
			||||||
@@ -26,7 +26,7 @@ export async function emitContent(ctx: BuildCtx, content: ProcessedContent[]) {
 | 
				
			|||||||
            if (ctx.argv.verbose) {
 | 
					            if (ctx.argv.verbose) {
 | 
				
			||||||
              console.log(`[emit:${emitter.name}] ${file}`)
 | 
					              console.log(`[emit:${emitter.name}] ${file}`)
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
              log.updateText(`${emitter.name} -> ${chalk.gray(file)}`)
 | 
					              log.updateText(`${emitter.name} -> ${styleText("gray", file)}`)
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
@@ -36,7 +36,7 @@ export async function emitContent(ctx: BuildCtx, content: ProcessedContent[]) {
 | 
				
			|||||||
            if (ctx.argv.verbose) {
 | 
					            if (ctx.argv.verbose) {
 | 
				
			||||||
              console.log(`[emit:${emitter.name}] ${file}`)
 | 
					              console.log(`[emit:${emitter.name}] ${file}`)
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
              log.updateText(`${emitter.name} -> ${chalk.gray(file)}`)
 | 
					              log.updateText(`${emitter.name} -> ${styleText("gray", file)}`)
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ import workerpool, { Promise as WorkerPromise } from "workerpool"
 | 
				
			|||||||
import { QuartzLogger } from "../util/log"
 | 
					import { QuartzLogger } from "../util/log"
 | 
				
			||||||
import { trace } from "../util/trace"
 | 
					import { trace } from "../util/trace"
 | 
				
			||||||
import { BuildCtx, WorkerSerializableBuildCtx } from "../util/ctx"
 | 
					import { BuildCtx, WorkerSerializableBuildCtx } from "../util/ctx"
 | 
				
			||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type QuartzMdProcessor = Processor<MDRoot, MDRoot, MDRoot>
 | 
					export type QuartzMdProcessor = Processor<MDRoot, MDRoot, MDRoot>
 | 
				
			||||||
export type QuartzHtmlProcessor = Processor<undefined, MDRoot, HTMLRoot>
 | 
					export type QuartzHtmlProcessor = Processor<undefined, MDRoot, HTMLRoot>
 | 
				
			||||||
@@ -194,7 +194,7 @@ export async function parseMarkdown(ctx: BuildCtx, fps: FilePath[]): Promise<Pro
 | 
				
			|||||||
      textToMarkdownPromises.map(async (promise) => {
 | 
					      textToMarkdownPromises.map(async (promise) => {
 | 
				
			||||||
        const result = await promise
 | 
					        const result = await promise
 | 
				
			||||||
        processedFiles += result.length
 | 
					        processedFiles += result.length
 | 
				
			||||||
        log.updateText(`text->markdown ${chalk.gray(`${processedFiles}/${fps.length}`)}`)
 | 
					        log.updateText(`text->markdown ${styleText("gray", `${processedFiles}/${fps.length}`)}`)
 | 
				
			||||||
        return result
 | 
					        return result
 | 
				
			||||||
      }),
 | 
					      }),
 | 
				
			||||||
    ).catch(errorHandler)
 | 
					    ).catch(errorHandler)
 | 
				
			||||||
@@ -208,7 +208,7 @@ export async function parseMarkdown(ctx: BuildCtx, fps: FilePath[]): Promise<Pro
 | 
				
			|||||||
      markdownToHtmlPromises.map(async (promise) => {
 | 
					      markdownToHtmlPromises.map(async (promise) => {
 | 
				
			||||||
        const result = await promise
 | 
					        const result = await promise
 | 
				
			||||||
        processedFiles += result.length
 | 
					        processedFiles += result.length
 | 
				
			||||||
        log.updateText(`markdown->html ${chalk.gray(`${processedFiles}/${fps.length}`)}`)
 | 
					        log.updateText(`markdown->html ${styleText("gray", `${processedFiles}/${fps.length}`)}`)
 | 
				
			||||||
        return result
 | 
					        return result
 | 
				
			||||||
      }),
 | 
					      }),
 | 
				
			||||||
    ).catch(errorHandler)
 | 
					    ).catch(errorHandler)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ import { QUARTZ } from "./path"
 | 
				
			|||||||
import { formatDate, getDate } from "../components/Date"
 | 
					import { formatDate, getDate } from "../components/Date"
 | 
				
			||||||
import readingTime from "reading-time"
 | 
					import readingTime from "reading-time"
 | 
				
			||||||
import { i18n } from "../i18n"
 | 
					import { i18n } from "../i18n"
 | 
				
			||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const defaultHeaderWeight = [700]
 | 
					const defaultHeaderWeight = [700]
 | 
				
			||||||
const defaultBodyWeight = [400]
 | 
					const defaultBodyWeight = [400]
 | 
				
			||||||
@@ -100,7 +100,8 @@ export async function fetchTtf(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  if (!match) {
 | 
					  if (!match) {
 | 
				
			||||||
    console.log(
 | 
					    console.log(
 | 
				
			||||||
      chalk.yellow(
 | 
					      styleText(
 | 
				
			||||||
 | 
					        "yellow",
 | 
				
			||||||
        `\nWarning: Failed to fetch font ${rawFontName} with weight ${weight}, got ${cssResponse.statusText}`,
 | 
					        `\nWarning: Failed to fetch font ${rawFontName} with weight ${weight}, got ${cssResponse.statusText}`,
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import chalk from "chalk"
 | 
					 | 
				
			||||||
import pretty from "pretty-time"
 | 
					import pretty from "pretty-time"
 | 
				
			||||||
 | 
					import { styleText } from "util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class PerfTimer {
 | 
					export class PerfTimer {
 | 
				
			||||||
  evts: { [key: string]: [number, number] }
 | 
					  evts: { [key: string]: [number, number] }
 | 
				
			||||||
@@ -14,6 +14,6 @@ export class PerfTimer {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  timeSince(evtName?: string): string {
 | 
					  timeSince(evtName?: string): string {
 | 
				
			||||||
    return chalk.yellow(pretty(process.hrtime(this.evts[evtName ?? "start"])))
 | 
					    return styleText("yellow", pretty(process.hrtime(this.evts[evtName ?? "start"])))
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
import chalk from "chalk"
 | 
					import { styleText } from "util"
 | 
				
			||||||
import process from "process"
 | 
					import process from "process"
 | 
				
			||||||
import { isMainThread } from "workerpool"
 | 
					import { isMainThread } from "workerpool"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -11,9 +11,9 @@ export function trace(msg: string, err: Error) {
 | 
				
			|||||||
  lines.push("")
 | 
					  lines.push("")
 | 
				
			||||||
  lines.push(
 | 
					  lines.push(
 | 
				
			||||||
    "\n" +
 | 
					    "\n" +
 | 
				
			||||||
      chalk.bgRed.black.bold(" ERROR ") +
 | 
					      styleText(["bgRed", "black", "bold"], " ERROR ") +
 | 
				
			||||||
      "\n\n" +
 | 
					      "\n\n" +
 | 
				
			||||||
      chalk.red(` ${msg}`) +
 | 
					      styleText("red", ` ${msg}`) +
 | 
				
			||||||
      (err.message.length > 0 ? `: ${err.message}` : ""),
 | 
					      (err.message.length > 0 ? `: ${err.message}` : ""),
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user