1 files deleted
10 files modified
| | |
| | | "license": "MIT", |
| | | "dependencies": { |
| | | "@floating-ui/dom": "^1.4.0", |
| | | "@inquirer/prompts": "^1.0.3", |
| | | "@napi-rs/simple-git": "^0.1.8", |
| | | "chalk": "^4.1.2", |
| | | "cli-spinner": "^0.2.10", |
| | |
| | | "@floating-ui/core": "^1.3.1" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/checkbox": { |
| | | "version": "1.3.1", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-1.3.1.tgz", |
| | | "integrity": "sha512-3l3aC6gYOPGaVOa9cNe4dZ8t96e3CFifC3Hee1MD+F7qaRxGAuXnhCQiUr4ngj2P7xd9U3DCDbLXNsLKQoHYCg==", |
| | | "dependencies": { |
| | | "@inquirer/core": "^2.1.0", |
| | | "@inquirer/type": "^1.1.0", |
| | | "ansi-escapes": "^4.3.2", |
| | | "chalk": "^4.1.2", |
| | | "figures": "^3.2.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/checkbox/node_modules/@inquirer/core": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-2.1.0.tgz", |
| | | "integrity": "sha512-Hq9hZ5G/VUaeWkSs283HZwwMbe79lcOI5HWwW1GIM1ohouy2/x489Qf/A1BJYvMUj+QG4LSB5LtVMjn9P3Ge6Q==", |
| | | "dependencies": { |
| | | "@inquirer/type": "^1.1.0", |
| | | "ansi-escapes": "^4.3.2", |
| | | "chalk": "^4.1.2", |
| | | "cli-spinners": "^2.8.0", |
| | | "cli-width": "^4.0.0", |
| | | "figures": "^3.2.0", |
| | | "mute-stream": "^1.0.0", |
| | | "run-async": "^3.0.0", |
| | | "string-width": "^4.2.3", |
| | | "strip-ansi": "^6.0.1", |
| | | "wrap-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/confirm": { |
| | | "version": "1.0.11", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-1.0.11.tgz", |
| | | "integrity": "sha512-UWYJ+0dN9rWw0czTPqqKRGLqHsLML9rrQlScn5oOVUtiL2WDTxs95JehP2axKsNkSBMxmFAdA7TdctJkZFJcxA==", |
| | | "dependencies": { |
| | | "@inquirer/core": "^1.3.0", |
| | | "@inquirer/type": "^1.0.5", |
| | | "chalk": "^4.1.2" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/core": { |
| | | "version": "1.3.0", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-1.3.0.tgz", |
| | | "integrity": "sha512-W7EA48gIMahFLiGW/zF+rgoineqTDK5IQizsOmwvbFfYgiQ8Asetut94THBmB3KnW0nrZL5UPHUK6QzcjEzaCw==", |
| | | "dependencies": { |
| | | "@inquirer/type": "^1.0.5", |
| | | "ansi-escapes": "^4.3.2", |
| | | "chalk": "^4.1.2", |
| | | "cli-spinners": "^2.8.0", |
| | | "cli-width": "^4.0.0", |
| | | "figures": "^3.2.0", |
| | | "mute-stream": "^1.0.0", |
| | | "run-async": "^3.0.0", |
| | | "string-width": "^4.2.3", |
| | | "strip-ansi": "^6.0.1", |
| | | "wrap-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/editor": { |
| | | "version": "1.2.0", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-1.2.0.tgz", |
| | | "integrity": "sha512-NMXLLNadvqIR6TD6mNZRa/PKHTvdaa4ndGGeXl+DwybQ4K7cVSJNRrztixpM1KDEoG8Ape5ightNwq25cyugTg==", |
| | | "dependencies": { |
| | | "@inquirer/core": "^2.1.0", |
| | | "@inquirer/type": "^1.1.0", |
| | | "chalk": "^4.1.2", |
| | | "external-editor": "^3.0.3" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/editor/node_modules/@inquirer/core": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-2.1.0.tgz", |
| | | "integrity": "sha512-Hq9hZ5G/VUaeWkSs283HZwwMbe79lcOI5HWwW1GIM1ohouy2/x489Qf/A1BJYvMUj+QG4LSB5LtVMjn9P3Ge6Q==", |
| | | "dependencies": { |
| | | "@inquirer/type": "^1.1.0", |
| | | "ansi-escapes": "^4.3.2", |
| | | "chalk": "^4.1.2", |
| | | "cli-spinners": "^2.8.0", |
| | | "cli-width": "^4.0.0", |
| | | "figures": "^3.2.0", |
| | | "mute-stream": "^1.0.0", |
| | | "run-async": "^3.0.0", |
| | | "string-width": "^4.2.3", |
| | | "strip-ansi": "^6.0.1", |
| | | "wrap-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/expand": { |
| | | "version": "1.1.1", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-1.1.1.tgz", |
| | | "integrity": "sha512-fXk5NG2FOAiluDWPYfXHuof3sklL/HhZh3NnXfnBZ2IhTCRzXvlXRcQcPlev2sGcZknHn0g6JdKlxjSa+7H2nQ==", |
| | | "dependencies": { |
| | | "@inquirer/core": "^2.1.0", |
| | | "@inquirer/type": "^1.1.0", |
| | | "chalk": "^4.1.2", |
| | | "figures": "^3.2.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/expand/node_modules/@inquirer/core": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-2.1.0.tgz", |
| | | "integrity": "sha512-Hq9hZ5G/VUaeWkSs283HZwwMbe79lcOI5HWwW1GIM1ohouy2/x489Qf/A1BJYvMUj+QG4LSB5LtVMjn9P3Ge6Q==", |
| | | "dependencies": { |
| | | "@inquirer/type": "^1.1.0", |
| | | "ansi-escapes": "^4.3.2", |
| | | "chalk": "^4.1.2", |
| | | "cli-spinners": "^2.8.0", |
| | | "cli-width": "^4.0.0", |
| | | "figures": "^3.2.0", |
| | | "mute-stream": "^1.0.0", |
| | | "run-async": "^3.0.0", |
| | | "string-width": "^4.2.3", |
| | | "strip-ansi": "^6.0.1", |
| | | "wrap-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/input": { |
| | | "version": "1.2.1", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-1.2.1.tgz", |
| | | "integrity": "sha512-OYwG3dEo1+lMAE6rYB8b1HTg8eSP++jk0pHSjKZu00gTlN5IHW/dliB82nsWe9Bn//93E9LJ1KrhjFMqOzkCFw==", |
| | | "dependencies": { |
| | | "@inquirer/core": "^2.1.0", |
| | | "@inquirer/type": "^1.1.0", |
| | | "chalk": "^4.1.2" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/input/node_modules/@inquirer/core": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-2.1.0.tgz", |
| | | "integrity": "sha512-Hq9hZ5G/VUaeWkSs283HZwwMbe79lcOI5HWwW1GIM1ohouy2/x489Qf/A1BJYvMUj+QG4LSB5LtVMjn9P3Ge6Q==", |
| | | "dependencies": { |
| | | "@inquirer/type": "^1.1.0", |
| | | "ansi-escapes": "^4.3.2", |
| | | "chalk": "^4.1.2", |
| | | "cli-spinners": "^2.8.0", |
| | | "cli-width": "^4.0.0", |
| | | "figures": "^3.2.0", |
| | | "mute-stream": "^1.0.0", |
| | | "run-async": "^3.0.0", |
| | | "string-width": "^4.2.3", |
| | | "strip-ansi": "^6.0.1", |
| | | "wrap-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/password": { |
| | | "version": "1.1.1", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-1.1.1.tgz", |
| | | "integrity": "sha512-3M03aA04hOA4lRjLviB9uGoNmmd1YDNo4CYSFM9Uh4qlXdgvhke3xPU07k3kVstRIo0Te1hF14RL7vEgHJQ8tA==", |
| | | "dependencies": { |
| | | "@inquirer/input": "^1.2.1", |
| | | "@inquirer/type": "^1.1.0", |
| | | "chalk": "^4.1.2" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/prompts": { |
| | | "version": "1.2.3", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-1.2.3.tgz", |
| | | "integrity": "sha512-vcPUWXA/boMJc5IDVx/9+ihf1FupsBK1RThnEXnLTpF6hR1iJCoaBoSpREZRdDp/XcPHe/b+QovehBYJoWsUhg==", |
| | | "dependencies": { |
| | | "@inquirer/checkbox": "^1.2.8", |
| | | "@inquirer/confirm": "^1.0.11", |
| | | "@inquirer/core": "^1.3.0", |
| | | "@inquirer/editor": "^1.0.11", |
| | | "@inquirer/expand": "^1.0.11", |
| | | "@inquirer/input": "^1.1.2", |
| | | "@inquirer/password": "^1.0.11", |
| | | "@inquirer/rawlist": "^1.1.3", |
| | | "@inquirer/select": "^1.1.7" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/rawlist": { |
| | | "version": "1.2.1", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-1.2.1.tgz", |
| | | "integrity": "sha512-t8lMbE3Gqook4PvQYQl9eVJrl/mBy5kCgolwY9El8HLyGZ7Wc3SGIqHnQUlha4qms8HPOdUIBzyPfcAXl5+3SQ==", |
| | | "dependencies": { |
| | | "@inquirer/core": "^2.1.0", |
| | | "@inquirer/type": "^1.1.0", |
| | | "chalk": "^4.1.2" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/rawlist/node_modules/@inquirer/core": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-2.1.0.tgz", |
| | | "integrity": "sha512-Hq9hZ5G/VUaeWkSs283HZwwMbe79lcOI5HWwW1GIM1ohouy2/x489Qf/A1BJYvMUj+QG4LSB5LtVMjn9P3Ge6Q==", |
| | | "dependencies": { |
| | | "@inquirer/type": "^1.1.0", |
| | | "ansi-escapes": "^4.3.2", |
| | | "chalk": "^4.1.2", |
| | | "cli-spinners": "^2.8.0", |
| | | "cli-width": "^4.0.0", |
| | | "figures": "^3.2.0", |
| | | "mute-stream": "^1.0.0", |
| | | "run-async": "^3.0.0", |
| | | "string-width": "^4.2.3", |
| | | "strip-ansi": "^6.0.1", |
| | | "wrap-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/select": { |
| | | "version": "1.2.1", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-1.2.1.tgz", |
| | | "integrity": "sha512-13JDLtlwFoqQUYRdMzz5wP3a4DWccJfNA/8M8MDUhhZ8HeKZ3MPaTMlpxwY+Q0Jgbmt56nf7xUuck0XXPce8Xw==", |
| | | "dependencies": { |
| | | "@inquirer/core": "^2.1.0", |
| | | "@inquirer/type": "^1.1.0", |
| | | "ansi-escapes": "^4.3.2", |
| | | "chalk": "^4.1.2", |
| | | "figures": "^3.2.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/select/node_modules/@inquirer/core": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-2.1.0.tgz", |
| | | "integrity": "sha512-Hq9hZ5G/VUaeWkSs283HZwwMbe79lcOI5HWwW1GIM1ohouy2/x489Qf/A1BJYvMUj+QG4LSB5LtVMjn9P3Ge6Q==", |
| | | "dependencies": { |
| | | "@inquirer/type": "^1.1.0", |
| | | "ansi-escapes": "^4.3.2", |
| | | "chalk": "^4.1.2", |
| | | "cli-spinners": "^2.8.0", |
| | | "cli-width": "^4.0.0", |
| | | "figures": "^3.2.0", |
| | | "mute-stream": "^1.0.0", |
| | | "run-async": "^3.0.0", |
| | | "string-width": "^4.2.3", |
| | | "strip-ansi": "^6.0.1", |
| | | "wrap-ansi": "^6.0.1" |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@inquirer/type": { |
| | | "version": "1.1.0", |
| | | "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.1.0.tgz", |
| | | "integrity": "sha512-XMaorygt2o/mXinZg/OOz6d3JKuV3o4jRc/3KDiVPeKLLkjiO4iJErbLKtKn+Od2ZC2lbiFQkrIuloVpEubisA==", |
| | | "engines": { |
| | | "node": ">=14.18.0" |
| | | } |
| | | }, |
| | | "node_modules/@isaacs/cliui": { |
| | | "version": "8.0.2", |
| | | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", |
| | |
| | | "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/ansi-escapes": { |
| | | "version": "4.3.2", |
| | | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", |
| | | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", |
| | | "dependencies": { |
| | | "type-fest": "^0.21.3" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/ansi-regex": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", |
| | |
| | | "url": "https://github.com/sponsors/wooorm" |
| | | } |
| | | }, |
| | | "node_modules/chardet": { |
| | | "version": "0.7.0", |
| | | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", |
| | | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" |
| | | }, |
| | | "node_modules/chokidar": { |
| | | "version": "3.5.3", |
| | | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", |
| | |
| | | "node": ">=0.10" |
| | | } |
| | | }, |
| | | "node_modules/cli-spinners": { |
| | | "version": "2.9.0", |
| | | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", |
| | | "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", |
| | | "engines": { |
| | | "node": ">=6" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/cli-width": { |
| | | "version": "4.0.0", |
| | | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz", |
| | | "integrity": "sha512-ZksGS2xpa/bYkNzN3BAw1wEjsLV/ZKOf/CCrJ/QOBsxx6fOARIkwTutxp1XIOIohi6HKmOFjMoK/XaqDVUpEEw==", |
| | | "engines": { |
| | | "node": ">= 12" |
| | | } |
| | | }, |
| | | "node_modules/cliui": { |
| | | "version": "8.0.1", |
| | | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", |
| | |
| | | "node": ">=6" |
| | | } |
| | | }, |
| | | "node_modules/escape-string-regexp": { |
| | | "version": "1.0.5", |
| | | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", |
| | | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", |
| | | "engines": { |
| | | "node": ">=0.8.0" |
| | | } |
| | | }, |
| | | "node_modules/esprima": { |
| | | "version": "4.0.1", |
| | | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", |
| | |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/external-editor": { |
| | | "version": "3.1.0", |
| | | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", |
| | | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", |
| | | "dependencies": { |
| | | "chardet": "^0.7.0", |
| | | "iconv-lite": "^0.4.24", |
| | | "tmp": "^0.0.33" |
| | | }, |
| | | "engines": { |
| | | "node": ">=4" |
| | | } |
| | | }, |
| | | "node_modules/external-editor/node_modules/iconv-lite": { |
| | | "version": "0.4.24", |
| | | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", |
| | | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", |
| | | "dependencies": { |
| | | "safer-buffer": ">= 2.1.2 < 3" |
| | | }, |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/fast-glob": { |
| | | "version": "3.2.12", |
| | | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", |
| | |
| | | "url": "https://github.com/sponsors/wooorm" |
| | | } |
| | | }, |
| | | "node_modules/figures": { |
| | | "version": "3.2.0", |
| | | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", |
| | | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", |
| | | "dependencies": { |
| | | "escape-string-regexp": "^1.0.5" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/fill-range": { |
| | | "version": "7.0.1", |
| | | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", |
| | | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" |
| | | }, |
| | | "node_modules/mute-stream": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", |
| | | "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", |
| | | "engines": { |
| | | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" |
| | | } |
| | | }, |
| | | "node_modules/nlcst-to-string": { |
| | | "version": "3.1.1", |
| | | "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", |
| | |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/os-tmpdir": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", |
| | | "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/parse-latin": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-5.0.1.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", |
| | | "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" |
| | | }, |
| | | "node_modules/run-async": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", |
| | | "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", |
| | | "engines": { |
| | | "node": ">=0.12.0" |
| | | } |
| | | }, |
| | | "node_modules/run-parallel": { |
| | | "version": "1.2.0", |
| | | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", |
| | |
| | | "url": "https://github.com/sponsors/ljharb" |
| | | } |
| | | }, |
| | | "node_modules/tmp": { |
| | | "version": "0.0.33", |
| | | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", |
| | | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", |
| | | "dependencies": { |
| | | "os-tmpdir": "~1.0.2" |
| | | }, |
| | | "engines": { |
| | | "node": ">=0.6.0" |
| | | } |
| | | }, |
| | | "node_modules/to-regex-range": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", |
| | |
| | | "url": "https://github.com/sponsors/wooorm" |
| | | } |
| | | }, |
| | | "node_modules/type-fest": { |
| | | "version": "0.21.3", |
| | | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", |
| | | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", |
| | | "engines": { |
| | | "node": ">=10" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/typescript": { |
| | | "version": "5.1.3", |
| | | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.4.0.tgz", |
| | | "integrity": "sha512-i3KR1mQMNwY2wx20ozq2EjISGtQWDIfV56We+yGJ5yDs8jTwQiLLaqHlkBHITlCuJnYlVRmXegxFxZg7gqI++A==" |
| | | }, |
| | | "node_modules/wrap-ansi": { |
| | | "version": "6.2.0", |
| | | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", |
| | | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", |
| | | "dependencies": { |
| | | "ansi-styles": "^4.0.0", |
| | | "string-width": "^4.1.0", |
| | | "strip-ansi": "^6.0.0" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8" |
| | | } |
| | | }, |
| | | "node_modules/wrap-ansi-cjs": { |
| | | "name": "wrap-ansi", |
| | | "version": "7.0.0", |
| | |
| | | }, |
| | | "dependencies": { |
| | | "@floating-ui/dom": "^1.4.0", |
| | | "@inquirer/prompts": "^1.0.3", |
| | | "@napi-rs/simple-git": "^0.1.8", |
| | | "chalk": "^4.1.2", |
| | | "cli-spinner": "^0.2.10", |
| | |
| | | const sharedPageComponents = { |
| | | head: Component.Head(), |
| | | header: [ |
| | | Component.PageTitle({ title: "🪴 Quartz 4.0" }), |
| | | Component.PageTitle(), |
| | | Component.Spacer(), |
| | | Component.Search(), |
| | | Component.Darkmode() |
| | |
| | | |
| | | const config: QuartzConfig = { |
| | | configuration: { |
| | | pageTitle: "🪴 Quartz 4.0", |
| | | enableSPA: true, |
| | | enablePopovers: true, |
| | | canonicalUrl: "quartz.jzhao.xyz", |
| | | ignorePatterns: ["private", "templates"], |
| | | theme: { |
| | | typography: { // loaded from Google Fonts |
| | |
| | | Plugin.Description(), |
| | | ], |
| | | filters: [ |
| | | Plugin.RemoveDrafts() |
| | | Plugin.RemoveDrafts(), |
| | | ], |
| | | emitters: [ |
| | | Plugin.AliasRedirects(), |
| | |
| | | ...listPageLayout, |
| | | pageBody: Component.FolderContent(), |
| | | }), |
| | | Plugin.ContentIndex(), // you can exclude this if you don't plan on using popovers, graph view, or backlinks |
| | | Plugin.CNAME({ domain: "quartz.jzhao.xyz" }) // set this to your final deployed domain |
| | | Plugin.ContentIndex({ |
| | | enableSiteMap: true, |
| | | enableRSS: true, |
| | | }), |
| | | ] |
| | | }, |
| | | } |
| | |
| | | import { Theme } from "./theme" |
| | | |
| | | export interface GlobalConfiguration { |
| | | pageTitle: string, |
| | | /** Whether to enable single-page-app style rendering. this prevents flashes of unstyled content and improves smoothness of Quartz */ |
| | | enableSPA: boolean, |
| | | /** Whether to display Wikipedia-style popovers when hovering over links */ |
| | | enablePopovers: boolean, |
| | | /** Glob patterns to not search */ |
| | | ignorePatterns: string[], |
| | | /** Base URL to use for CNAME files, sitemaps, and RSS feeds that require an absolute URL. |
| | | * Quartz will avoid using this as much as possible and use relative URLs most of the time |
| | | */ |
| | | canonicalUrl?: string, |
| | | theme: Theme |
| | | } |
| | | |
| | |
| | | import { resolveToRoot } from "../path" |
| | | import { QuartzComponentConstructor, QuartzComponentProps } from "./types" |
| | | |
| | | interface Options { |
| | | title: string |
| | | function PageTitle({ fileData, cfg }: QuartzComponentProps) { |
| | | const title = cfg?.pageTitle ?? "Untitled Quartz" |
| | | const slug = fileData.slug! |
| | | const baseDir = resolveToRoot(slug) |
| | | return <h1 class="page-title"><a href={baseDir}>{title}</a></h1> |
| | | } |
| | | |
| | | export default ((opts?: Options) => { |
| | | const title = opts?.title ?? "Untitled Quartz" |
| | | function PageTitle({ fileData }: QuartzComponentProps) { |
| | | const slug = fileData.slug! |
| | | const baseDir = resolveToRoot(slug) |
| | | return <h1 class="page-title"><a href={baseDir}>{title}</a></h1> |
| | | } |
| | | PageTitle.css = ` |
| | | .page-title { |
| | | margin: 0; |
| | | } |
| | | ` |
| | | PageTitle.css = ` |
| | | .page-title { |
| | | margin: 0; |
| | | } |
| | | ` |
| | | |
| | | return PageTitle |
| | | }) satisfies QuartzComponentConstructor |
| | | export default (() => PageTitle) satisfies QuartzComponentConstructor |
| | |
| | | // resolve /a/b/c to ../../ |
| | | export function resolveToRoot(slug: string): string { |
| | | let fp = trimPathSuffix(slug) |
| | | if (fp.endsWith("index")) { |
| | | fp = fp.slice(0, -"index".length) |
| | | } |
| | | |
| | | if (fp === "") { |
| | | return "." |
| | |
| | | import { GlobalConfiguration } from "../../cfg" |
| | | import { QuartzEmitterPlugin } from "../types" |
| | | import path from "path" |
| | | |
| | | export type ContentIndex = Map<string, ContentDetails> |
| | | export type ContentDetails = { |
| | | title: string, |
| | | links?: string[], |
| | | tags?: string[], |
| | | links: string[], |
| | | tags: string[], |
| | | content: string, |
| | | date?: Date, |
| | | description?: string, |
| | | } |
| | | |
| | | export const ContentIndex: QuartzEmitterPlugin = () => { |
| | | interface Options { |
| | | enableSiteMap: boolean |
| | | enableRSS: boolean |
| | | } |
| | | |
| | | const defaultOptions: Options = { |
| | | enableSiteMap: true, |
| | | enableRSS: true, |
| | | } |
| | | |
| | | function generateSiteMap(cfg: GlobalConfiguration, idx: ContentIndex): string { |
| | | const base = cfg.canonicalUrl ?? "" |
| | | const createURLEntry = (slug: string, content: ContentDetails): string => `<url> |
| | | <loc>https://${base}/${slug}</loc> |
| | | <lastmod>${content.date?.toISOString()}</lastmod> |
| | | </url>` |
| | | const urls = Array.from(idx).map(([slug, content]) => createURLEntry(slug, content)).join("") |
| | | return `<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">${urls}</urlset>` |
| | | } |
| | | |
| | | function generateRSSFeed(cfg: GlobalConfiguration, idx: ContentIndex): string { |
| | | const base = cfg.canonicalUrl ?? "" |
| | | const root = `https://${base}` |
| | | |
| | | // TODO: ogimage |
| | | const createURLEntry = (slug: string, content: ContentDetails): string => `<items> |
| | | <title>${content.title}</title> |
| | | <link>${root}/${slug}</link> |
| | | <guid>${root}/${slug}</guid> |
| | | <description>${content.description}</description> |
| | | <pubDate>${content.date?.toUTCString()}</pubDate> |
| | | </items>` |
| | | |
| | | const items = Array.from(idx).map(([slug, content]) => createURLEntry(slug, content)).join("") |
| | | return `<rss xmlns:atom="http://www.w3.org/2005/atom" version="2.0"> |
| | | <channel> |
| | | <title>${cfg.pageTitle}</title> |
| | | <link>${root}</link> |
| | | <description>Recent content on ${cfg.pageTitle}</description> |
| | | <generator>Quartz -- quartz.jzhao.xyz</generator> |
| | | <atom:link href="${root}/index.xml" rel="self" type="application/rss+xml"/> |
| | | </channel> |
| | | ${items} |
| | | </rss>` |
| | | } |
| | | |
| | | export const ContentIndex: QuartzEmitterPlugin<Options> = (opts) => { |
| | | opts = { ...defaultOptions, ...opts } |
| | | return { |
| | | name: "ContentIndex", |
| | | async emit(_contentDir, _cfg, content, _resources, emit) { |
| | | const fp = path.join("static", "contentIndex") |
| | | async emit(_contentDir, cfg, content, _resources, emit) { |
| | | const emitted: string[] = [] |
| | | const linkIndex: ContentIndex = new Map() |
| | | for (const [_tree, file] of content) { |
| | | let slug = file.data.slug! |
| | | const slug = file.data.slug! |
| | | const date = file.data.dates?.modified ?? new Date() |
| | | linkIndex.set(slug, { |
| | | title: file.data.frontmatter?.title!, |
| | | links: file.data.links ?? [], |
| | | tags: file.data.frontmatter?.tags, |
| | | content: file.data.text ?? "" |
| | | tags: file.data.frontmatter?.tags ?? [], |
| | | content: file.data.text ?? "", |
| | | date: date, |
| | | description: file.data.description ?? "" |
| | | }) |
| | | } |
| | | |
| | | if (opts?.enableSiteMap) { |
| | | await emit({ |
| | | content: generateSiteMap(cfg, linkIndex), |
| | | slug: "sitemap", |
| | | ext: ".xml" |
| | | }) |
| | | emitted.push("sitemap.xml") |
| | | } |
| | | |
| | | if (opts?.enableRSS) { |
| | | await emit({ |
| | | content: generateRSSFeed(cfg, linkIndex), |
| | | slug: "index", |
| | | ext: ".xml" |
| | | }) |
| | | emitted.push("index.xml") |
| | | } |
| | | |
| | | const fp = path.join("static", "contentIndex") |
| | | const simplifiedIndex = Object.fromEntries( |
| | | Array.from(linkIndex).map(([slug, content]) => { |
| | | // remove description and from content index as nothing downstream |
| | | // actually uses it. we only keep it in the index as we need it |
| | | // for the RSS feed |
| | | delete content.description |
| | | delete content.date |
| | | return [slug, content] |
| | | }) |
| | | ) |
| | | await emit({ |
| | | content: JSON.stringify(Object.fromEntries(linkIndex)), |
| | | content: JSON.stringify(simplifiedIndex), |
| | | slug: fp, |
| | | ext: ".json", |
| | | }) |
| | | emitted.push(`${fp}.json`) |
| | | |
| | | return [`${fp}.json`] |
| | | return emitted |
| | | }, |
| | | getQuartzComponents: () => [], |
| | | } |
| | |
| | | export { FolderPage } from './folderPage' |
| | | export { ContentIndex } from './contentIndex' |
| | | export { AliasRedirects } from './aliases' |
| | | export { CNAME } from './cname' |
| | |
| | | componentResources.afterDOMLoaded.push(afterDOMLoaded) |
| | | } |
| | | } |
| | | |
| | | if (cfg.enablePopovers) { |
| | | componentResources.afterDOMLoaded.push(popoverScript) |
| | | componentResources.css.push(popoverStyle) |
| | | } |
| | | |
| | | if (cfg.enableSPA) { |
| | | componentResources.afterDOMLoaded.push(spaRouterScript) |
| | |
| | | ) |
| | | } |
| | | |
| | | if (cfg.enablePopovers) { |
| | | componentResources.afterDOMLoaded.push(popoverScript) |
| | | componentResources.css.push(popoverStyle) |
| | | } |
| | | |
| | | emit({ |
| | | slug: "index", |
| | | ext: ".css", |
| | |
| | | descriptionLength: 150 |
| | | } |
| | | |
| | | const escapeHTML = (unsafe: string) => { |
| | | return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"').replaceAll("'", '''); |
| | | } |
| | | |
| | | export const Description: QuartzTransformerPlugin<Partial<Options> | undefined> = (userOpts) => { |
| | | const opts = { ...defaultOptions, ...userOpts } |
| | | return { |
| | |
| | | () => { |
| | | return async (tree: HTMLRoot, file) => { |
| | | const frontMatterDescription = file.data.frontmatter?.description |
| | | const text = toString(tree) |
| | | const text = escapeHTML(toString(tree)) |
| | | |
| | | const desc = frontMatterDescription ?? text |
| | | const sentences = desc.replace(/\s+/g, ' ').split('.') |