-{
- "name": "flatnotes",
- "version": "4.0.5",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "flatnotes",
- "version": "4.0.5",
- "license": "MIT",
- "devDependencies": {
- "@toast-ui/editor-plugin-code-syntax-highlight": "3.1.0",
- "@toast-ui/vue-editor": "3.2.3",
- "@vitejs/plugin-vue2": "^2.3.1",
- "axios": "1.6.8",
- "bootstrap-vue": "2.23.1",
- "mousetrap": "1.6.5",
- "vite": "^5.2.9"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.20.15",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz",
- "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==",
- "dev": true,
- "peer": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
- "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
- "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
- "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
- "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
- "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
- "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
- "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
- "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
- "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
- "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
- "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
- "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
- "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
- "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
- "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
- "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
- "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
- "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
- "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
- "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
- "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
- "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
- "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true,
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
- "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
- "dev": true,
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
- "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25"
- }
- },
- "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.24"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.25",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
- "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@nuxt/opencollective": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.3.tgz",
- "integrity": "sha512-6IKCd+gP0HliixqZT/p8nW3tucD6Sv/u/eR2A9X4rxT/6hXlMzA4GZQzq4d2qnBAwSwGpmKyzkyTjNjrhaA25A==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "consola": "^2.15.0",
- "node-fetch": "^2.6.7"
- },
- "bin": {
- "opencollective": "bin/opencollective.js"
- },
- "engines": {
- "node": ">=8.0.0",
- "npm": ">=5.0.0"
- }
- },
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz",
- "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz",
- "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz",
- "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz",
- "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz",
- "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz",
- "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz",
- "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz",
- "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz",
- "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz",
- "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz",
- "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz",
- "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz",
- "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz",
- "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz",
- "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz",
- "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@toast-ui/editor": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@toast-ui/editor/-/editor-3.2.2.tgz",
- "integrity": "sha512-ASX7LFjN2ZYQJrwmkUajPs7DRr9FsM1+RQ82CfTO0Y5ZXorBk1VZS4C2Dpxinx9kl55V4F8/A2h2QF4QMDtRbA==",
- "dev": true,
- "dependencies": {
- "dompurify": "^2.3.3",
- "prosemirror-commands": "^1.1.9",
- "prosemirror-history": "^1.1.3",
- "prosemirror-inputrules": "^1.1.3",
- "prosemirror-keymap": "^1.1.4",
- "prosemirror-model": "^1.14.1",
- "prosemirror-state": "^1.3.4",
- "prosemirror-view": "^1.18.7"
- }
- },
- "node_modules/@toast-ui/editor-plugin-code-syntax-highlight": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@toast-ui/editor-plugin-code-syntax-highlight/-/editor-plugin-code-syntax-highlight-3.1.0.tgz",
- "integrity": "sha512-OgX5pZiTnHREoTTXDAFu1k6RzEspGOxeJNRlt/Lnoi1GvLbIpUTTbBcls9becpXT/Qdls++8G3r5C60cVdellA==",
- "dev": true,
- "dependencies": {
- "prismjs": "^1.23.0"
- }
- },
- "node_modules/@toast-ui/vue-editor": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/@toast-ui/vue-editor/-/vue-editor-3.2.3.tgz",
- "integrity": "sha512-IjoV5tBh/yesIuqRqmOQx1+F0oeeAbIeBA7edMTawIXHQXBeJ1qzGHLTY5NWrUQ6BBtV8CDBeedjnVsJ+mHjKQ==",
- "dev": true,
- "dependencies": {
- "@toast-ui/editor": "^3.2.2"
- },
- "peerDependencies": {
- "vue": "^2.5.0"
- }
- },
- "node_modules/@types/estree": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
- },
- "node_modules/@vitejs/plugin-vue2": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue2/-/plugin-vue2-2.3.1.tgz",
- "integrity": "sha512-/ksaaz2SRLN11JQhLdEUhDzOn909WEk99q9t9w+N12GjQCljzv7GyvAbD/p20aBUjHkvpGOoQ+FCOkG+mjDF4A==",
- "dev": true,
- "engines": {
- "node": "^14.18.0 || >= 16.0.0"
- },
- "peerDependencies": {
- "vite": "^3.0.0 || ^4.0.0 || ^5.0.0",
- "vue": "^2.7.0-0"
- }
- },
- "node_modules/@vue/compiler-sfc": {
- "version": "2.7.14",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz",
- "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@babel/parser": "^7.18.4",
- "postcss": "^8.4.14",
- "source-map": "^0.6.1"
- }
- },
- "node_modules/@vue/compiler-sfc/node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true,
- "peer": true
- },
- "node_modules/@vue/compiler-sfc/node_modules/postcss": {
- "version": "8.4.21",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
- "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- }
- ],
- "peer": true,
- "dependencies": {
- "nanoid": "^3.3.4",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
- },
- "node_modules/axios": {
- "version": "1.6.8",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
- "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
- "dev": true,
- "dependencies": {
- "follow-redirects": "^1.15.6",
- "form-data": "^4.0.0",
- "proxy-from-env": "^1.1.0"
- }
- },
- "node_modules/axios/node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "dev": true,
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/bootstrap": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz",
- "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/twbs"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/bootstrap"
- }
- ],
- "peerDependencies": {
- "jquery": "1.9.1 - 3",
- "popper.js": "^1.16.1"
- }
- },
- "node_modules/bootstrap-vue": {
- "version": "2.23.1",
- "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.23.1.tgz",
- "integrity": "sha512-SEWkG4LzmMuWjQdSYmAQk1G/oOKm37dtNfjB5kxq0YafnL2W6qUAmeDTcIZVbPiQd2OQlIkWOMPBRGySk/zGsg==",
- "dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "@nuxt/opencollective": "^0.3.2",
- "bootstrap": "^4.6.1",
- "popper.js": "^1.16.1",
- "portal-vue": "^2.1.7",
- "vue-functional-data-merge": "^3.1.0"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "node_modules/consola": {
- "version": "2.15.3",
- "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
- "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
- "dev": true
- },
- "node_modules/csstype": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
- "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
- "dev": true,
- "peer": true
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/dompurify": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.0.tgz",
- "integrity": "sha512-5RXhAXSCrKTqt9pSbobT9PVRX+oPpENplTZqCiK1l0ya+ZOzwo9kqsGLbYRsAhzIiLCwKEy99XKSSrqnRTLVcw==",
- "dev": true
- },
- "node_modules/esbuild": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
- "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.20.2",
- "@esbuild/android-arm": "0.20.2",
- "@esbuild/android-arm64": "0.20.2",
- "@esbuild/android-x64": "0.20.2",
- "@esbuild/darwin-arm64": "0.20.2",
- "@esbuild/darwin-x64": "0.20.2",
- "@esbuild/freebsd-arm64": "0.20.2",
- "@esbuild/freebsd-x64": "0.20.2",
- "@esbuild/linux-arm": "0.20.2",
- "@esbuild/linux-arm64": "0.20.2",
- "@esbuild/linux-ia32": "0.20.2",
- "@esbuild/linux-loong64": "0.20.2",
- "@esbuild/linux-mips64el": "0.20.2",
- "@esbuild/linux-ppc64": "0.20.2",
- "@esbuild/linux-riscv64": "0.20.2",
- "@esbuild/linux-s390x": "0.20.2",
- "@esbuild/linux-x64": "0.20.2",
- "@esbuild/netbsd-x64": "0.20.2",
- "@esbuild/openbsd-x64": "0.20.2",
- "@esbuild/sunos-x64": "0.20.2",
- "@esbuild/win32-arm64": "0.20.2",
- "@esbuild/win32-ia32": "0.20.2",
- "@esbuild/win32-x64": "0.20.2"
- }
- },
- "node_modules/follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/immutable": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz",
- "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==",
- "dev": true,
- "optional": true,
- "peer": true
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jquery": {
- "version": "3.6.3",
- "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz",
- "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==",
- "dev": true,
- "peer": true
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mousetrap": {
- "version": "1.6.5",
- "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz",
- "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==",
- "dev": true
- },
- "node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/node-fetch": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
- "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
- "dev": true,
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/orderedmap": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz",
- "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==",
- "dev": true
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/popper.js": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
- "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
- "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/popperjs"
- }
- },
- "node_modules/portal-vue": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz",
- "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g==",
- "dev": true,
- "peerDependencies": {
- "vue": "^2.5.18"
- }
- },
- "node_modules/prismjs": {
- "version": "1.29.0",
- "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
- "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/prosemirror-commands": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz",
- "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==",
- "dev": true,
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.0.0"
- }
- },
- "node_modules/prosemirror-history": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz",
- "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==",
- "dev": true,
- "dependencies": {
- "prosemirror-state": "^1.2.2",
- "prosemirror-transform": "^1.0.0",
- "prosemirror-view": "^1.31.0",
- "rope-sequence": "^1.3.0"
- }
- },
- "node_modules/prosemirror-inputrules": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz",
- "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==",
- "dev": true,
- "dependencies": {
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.0.0"
- }
- },
- "node_modules/prosemirror-keymap": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz",
- "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==",
- "dev": true,
- "dependencies": {
- "prosemirror-state": "^1.0.0",
- "w3c-keyname": "^2.2.0"
- }
- },
- "node_modules/prosemirror-model": {
- "version": "1.20.0",
- "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.20.0.tgz",
- "integrity": "sha512-q7AY7vMjKYqDCeoedgUiAgrLabliXxndJuuFmcmc2+YU1SblvnOiG2WEACF2lwAZsMlfLpiAilA3L+TWlDqIsQ==",
- "dev": true,
- "dependencies": {
- "orderedmap": "^2.0.0"
- }
- },
- "node_modules/prosemirror-state": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz",
- "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==",
- "dev": true,
- "dependencies": {
- "prosemirror-model": "^1.0.0",
- "prosemirror-transform": "^1.0.0",
- "prosemirror-view": "^1.27.0"
- }
- },
- "node_modules/prosemirror-transform": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz",
- "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==",
- "dev": true,
- "dependencies": {
- "prosemirror-model": "^1.0.0"
- }
- },
- "node_modules/prosemirror-view": {
- "version": "1.33.4",
- "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.4.tgz",
- "integrity": "sha512-xQqAhH8/HGleVpKDhQsrd+oqdyeKMxFtdCWDxWMmP+n0k27fBpyUqa8pA+RB5cFY8rqDDc1hll69aRZQa7UaAw==",
- "dev": true,
- "dependencies": {
- "prosemirror-model": "^1.20.0",
- "prosemirror-state": "^1.0.0",
- "prosemirror-transform": "^1.1.0"
- }
- },
- "node_modules/proxy-from-env": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "dev": true
- },
- "node_modules/rollup": {
- "version": "4.14.3",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz",
- "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==",
- "dev": true,
- "dependencies": {
- "@types/estree": "1.0.5"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.14.3",
- "@rollup/rollup-android-arm64": "4.14.3",
- "@rollup/rollup-darwin-arm64": "4.14.3",
- "@rollup/rollup-darwin-x64": "4.14.3",
- "@rollup/rollup-linux-arm-gnueabihf": "4.14.3",
- "@rollup/rollup-linux-arm-musleabihf": "4.14.3",
- "@rollup/rollup-linux-arm64-gnu": "4.14.3",
- "@rollup/rollup-linux-arm64-musl": "4.14.3",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3",
- "@rollup/rollup-linux-riscv64-gnu": "4.14.3",
- "@rollup/rollup-linux-s390x-gnu": "4.14.3",
- "@rollup/rollup-linux-x64-gnu": "4.14.3",
- "@rollup/rollup-linux-x64-musl": "4.14.3",
- "@rollup/rollup-win32-arm64-msvc": "4.14.3",
- "@rollup/rollup-win32-ia32-msvc": "4.14.3",
- "@rollup/rollup-win32-x64-msvc": "4.14.3",
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/rope-sequence": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz",
- "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==",
- "dev": true
- },
- "node_modules/sass": {
- "version": "1.74.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.74.1.tgz",
- "integrity": "sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- },
- "bin": {
- "sass": "sass.js"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/sass/node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/sass/node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true,
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/sass/node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/sass/node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "optional": true,
- "peer": true,
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/sass/node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/sass/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/sass/node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/sass/node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "optional": true,
- "peer": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/sass/node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/sass/node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/terser": {
- "version": "5.30.3",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz",
- "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==",
- "dev": true,
- "optional": true,
- "peer": true,
- "dependencies": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/terser/node_modules/acorn": {
- "version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
- "dev": true,
- "optional": true,
- "peer": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "dev": true
- },
- "node_modules/vite": {
- "version": "5.2.9",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.9.tgz",
- "integrity": "sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==",
- "dev": true,
- "dependencies": {
- "esbuild": "^0.20.1",
- "postcss": "^8.4.38",
- "rollup": "^4.13.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/vite/node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "node_modules/vite/node_modules/postcss": {
- "version": "8.4.38",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
- "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.2.0"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/vue": {
- "version": "2.7.14",
- "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz",
- "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@vue/compiler-sfc": "2.7.14",
- "csstype": "^3.1.0"
- }
- },
- "node_modules/vue-functional-data-merge": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz",
- "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==",
- "dev": true
- },
- "node_modules/w3c-keyname": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
- "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==",
- "dev": true
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dev": true,
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/whatwg-url/node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "dev": true
- }
- }
-}
+{\r
+ "name": "flatnotes",\r
- "version": "4.0.4",\r
++ "version": "4.0.5",\r
+ "lockfileVersion": 3,\r
+ "requires": true,\r
+ "packages": {\r
+ "": {\r
+ "name": "flatnotes",\r
- "version": "4.0.4",\r
++ "version": "4.0.5",\r
+ "license": "MIT",\r
+ "dependencies": {\r
+ "@jamescoyle/vue-icon": "0.1.2",\r
+ "@mdi/js": "7.4.47",\r
+ "@mdi/light-js": "0.2.63",\r
+ "@toast-ui/editor": "3.2.2",\r
+ "@toast-ui/editor-plugin-code-syntax-highlight": "3.1.0",\r
+ "axios": "1.6.8",\r
+ "mousetrap": "1.6.5",\r
+ "pinia": "2.1.7",\r
+ "primevue": "3.52.0",\r
+ "vue": "3.4.27",\r
+ "vue-router": "4.3.2"\r
+ },\r
+ "devDependencies": {\r
+ "@vitejs/plugin-vue": "5.0.4",\r
+ "autoprefixer": "10.4.19",\r
+ "postcss": "8.4.38",\r
+ "prettier": "3.2.5",\r
+ "prettier-plugin-tailwindcss": "0.5.14",\r
+ "tailwindcss": "3.4.3",\r
+ "vite": "5.2.11"\r
+ }\r
+ },\r
+ "node_modules/@alloc/quick-lru": {\r
+ "version": "5.2.0",\r
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",\r
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=10"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/sindresorhus"\r
+ }\r
+ },\r
+ "node_modules/@babel/parser": {\r
+ "version": "7.24.5",\r
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",\r
+ "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",\r
+ "bin": {\r
+ "parser": "bin/babel-parser.js"\r
+ },\r
+ "engines": {\r
+ "node": ">=6.0.0"\r
+ }\r
+ },\r
- "node_modules/@esbuild/aix-ppc64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",\r
- "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",\r
- "cpu": [\r
- "ppc64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "aix"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/android-arm": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",\r
- "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",\r
- "cpu": [\r
- "arm"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "android"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/android-arm64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",\r
- "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "android"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/android-x64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",\r
- "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",\r
- "cpu": [\r
- "x64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "android"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/darwin-arm64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",\r
- "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "darwin"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/darwin-x64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",\r
- "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",\r
- "cpu": [\r
- "x64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "darwin"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/freebsd-arm64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",\r
- "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "freebsd"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/freebsd-x64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",\r
- "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",\r
- "cpu": [\r
- "x64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "freebsd"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/linux-arm": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",\r
- "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",\r
- "cpu": [\r
- "arm"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/linux-arm64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",\r
- "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/linux-ia32": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",\r
- "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",\r
- "cpu": [\r
- "ia32"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/linux-loong64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",\r
- "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",\r
- "cpu": [\r
- "loong64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/linux-mips64el": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",\r
- "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",\r
- "cpu": [\r
- "mips64el"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/linux-ppc64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",\r
- "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",\r
- "cpu": [\r
- "ppc64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/linux-riscv64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",\r
- "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",\r
- "cpu": [\r
- "riscv64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/linux-s390x": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",\r
- "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",\r
- "cpu": [\r
- "s390x"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
+ "node_modules/@esbuild/linux-x64": {\r
+ "version": "0.20.2",\r
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",\r
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",\r
+ "cpu": [\r
+ "x64"\r
+ ],\r
+ "dev": true,\r
+ "optional": true,\r
+ "os": [\r
+ "linux"\r
+ ],\r
+ "engines": {\r
+ "node": ">=12"\r
+ }\r
+ },\r
- "node_modules/@esbuild/netbsd-x64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",\r
- "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",\r
- "cpu": [\r
- "x64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "netbsd"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/openbsd-x64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",\r
- "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",\r
- "cpu": [\r
- "x64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "openbsd"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/sunos-x64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",\r
- "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",\r
- "cpu": [\r
- "x64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "sunos"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/win32-arm64": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",\r
- "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "win32"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
- "node_modules/@esbuild/win32-ia32": {\r
- "version": "0.20.2",\r
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",\r
- "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",\r
- "cpu": [\r
- "ia32"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "win32"\r
- ],\r
- "engines": {\r
- "node": ">=12"\r
- }\r
- },\r
+ "node_modules/@esbuild/win32-x64": {\r
+ "version": "0.20.2",\r
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",\r
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",\r
+ "cpu": [\r
+ "x64"\r
+ ],\r
+ "dev": true,\r
+ "optional": true,\r
+ "os": [\r
+ "win32"\r
+ ],\r
+ "engines": {\r
+ "node": ">=12"\r
+ }\r
+ },\r
+ "node_modules/@isaacs/cliui": {\r
+ "version": "8.0.2",\r
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",\r
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "string-width": "^5.1.2",\r
+ "string-width-cjs": "npm:string-width@^4.2.0",\r
+ "strip-ansi": "^7.0.1",\r
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",\r
+ "wrap-ansi": "^8.1.0",\r
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"\r
+ },\r
+ "engines": {\r
+ "node": ">=12"\r
+ }\r
+ },\r
+ "node_modules/@jamescoyle/vue-icon": {\r
+ "version": "0.1.2",\r
+ "resolved": "https://registry.npmjs.org/@jamescoyle/vue-icon/-/vue-icon-0.1.2.tgz",\r
+ "integrity": "sha512-KFrImXx5TKIi6iQXlnyLEBl4rNosNKbTeRnr70ucTdUaciVmd9qK9d/pZAaKt1Ob/8xNnX2GMp8LisyHdKtEgw=="\r
+ },\r
+ "node_modules/@jridgewell/gen-mapping": {\r
+ "version": "0.3.5",\r
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",\r
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "@jridgewell/set-array": "^1.2.1",\r
+ "@jridgewell/sourcemap-codec": "^1.4.10",\r
+ "@jridgewell/trace-mapping": "^0.3.24"\r
+ },\r
+ "engines": {\r
+ "node": ">=6.0.0"\r
+ }\r
+ },\r
+ "node_modules/@jridgewell/resolve-uri": {\r
+ "version": "3.1.0",\r
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",\r
+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=6.0.0"\r
+ }\r
+ },\r
+ "node_modules/@jridgewell/set-array": {\r
+ "version": "1.2.1",\r
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",\r
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=6.0.0"\r
+ }\r
+ },\r
+ "node_modules/@jridgewell/source-map": {\r
+ "version": "0.3.6",\r
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",\r
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "peer": true,\r
+ "dependencies": {\r
+ "@jridgewell/gen-mapping": "^0.3.5",\r
+ "@jridgewell/trace-mapping": "^0.3.25"\r
+ }\r
+ },\r
+ "node_modules/@jridgewell/sourcemap-codec": {\r
+ "version": "1.4.15",\r
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",\r
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="\r
+ },\r
+ "node_modules/@jridgewell/trace-mapping": {\r
+ "version": "0.3.25",\r
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",\r
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "@jridgewell/resolve-uri": "^3.1.0",\r
+ "@jridgewell/sourcemap-codec": "^1.4.14"\r
+ }\r
+ },\r
+ "node_modules/@mdi/js": {\r
+ "version": "7.4.47",\r
+ "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.4.47.tgz",\r
+ "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ=="\r
+ },\r
+ "node_modules/@mdi/light-js": {\r
+ "version": "0.2.63",\r
+ "resolved": "https://registry.npmjs.org/@mdi/light-js/-/light-js-0.2.63.tgz",\r
+ "integrity": "sha512-+SUtJIOxvEy6DiVq0wTRPIzVuoPB5fhnubmzaN7e2ew0v3/nvnpC4mqbGCjiTK0diVd3+zvhEQHZzPDErGb1fg=="\r
+ },\r
+ "node_modules/@nodelib/fs.scandir": {\r
+ "version": "2.1.5",\r
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",\r
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "@nodelib/fs.stat": "2.0.5",\r
+ "run-parallel": "^1.1.9"\r
+ },\r
+ "engines": {\r
+ "node": ">= 8"\r
+ }\r
+ },\r
+ "node_modules/@nodelib/fs.stat": {\r
+ "version": "2.0.5",\r
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",\r
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">= 8"\r
+ }\r
+ },\r
+ "node_modules/@nodelib/fs.walk": {\r
+ "version": "1.2.8",\r
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",\r
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "@nodelib/fs.scandir": "2.1.5",\r
+ "fastq": "^1.6.0"\r
+ },\r
+ "engines": {\r
+ "node": ">= 8"\r
+ }\r
+ },\r
+ "node_modules/@pkgjs/parseargs": {\r
+ "version": "0.11.0",\r
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",\r
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "engines": {\r
+ "node": ">=14"\r
+ }\r
+ },\r
- "node_modules/@rollup/rollup-android-arm-eabi": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz",\r
- "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==",\r
- "cpu": [\r
- "arm"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "android"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-android-arm64": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz",\r
- "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "android"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-darwin-arm64": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz",\r
- "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "darwin"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-darwin-x64": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz",\r
- "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==",\r
- "cpu": [\r
- "x64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "darwin"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz",\r
- "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==",\r
- "cpu": [\r
- "arm"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz",\r
- "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==",\r
- "cpu": [\r
- "arm"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-linux-arm64-gnu": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz",\r
- "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-linux-arm64-musl": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz",\r
- "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz",\r
- "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==",\r
- "cpu": [\r
- "ppc64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz",\r
- "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==",\r
- "cpu": [\r
- "riscv64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-linux-s390x-gnu": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz",\r
- "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==",\r
- "cpu": [\r
- "s390x"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "linux"\r
- ]\r
- },\r
+ "node_modules/@rollup/rollup-linux-x64-gnu": {\r
+ "version": "4.14.3",\r
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz",\r
+ "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==",\r
+ "cpu": [\r
+ "x64"\r
+ ],\r
+ "dev": true,\r
+ "optional": true,\r
+ "os": [\r
+ "linux"\r
+ ]\r
+ },\r
+ "node_modules/@rollup/rollup-linux-x64-musl": {\r
+ "version": "4.14.3",\r
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz",\r
+ "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==",\r
+ "cpu": [\r
+ "x64"\r
+ ],\r
+ "dev": true,\r
+ "optional": true,\r
+ "os": [\r
+ "linux"\r
+ ]\r
+ },\r
- "node_modules/@rollup/rollup-win32-arm64-msvc": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz",\r
- "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==",\r
- "cpu": [\r
- "arm64"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "win32"\r
- ]\r
- },\r
- "node_modules/@rollup/rollup-win32-ia32-msvc": {\r
- "version": "4.14.3",\r
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz",\r
- "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==",\r
- "cpu": [\r
- "ia32"\r
- ],\r
- "dev": true,\r
- "optional": true,\r
- "os": [\r
- "win32"\r
- ]\r
- },\r
+ "node_modules/@rollup/rollup-win32-x64-msvc": {\r
+ "version": "4.14.3",\r
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz",\r
+ "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==",\r
+ "cpu": [\r
+ "x64"\r
+ ],\r
+ "dev": true,\r
+ "optional": true,\r
+ "os": [\r
+ "win32"\r
+ ]\r
+ },\r
+ "node_modules/@toast-ui/editor": {\r
+ "version": "3.2.2",\r
+ "resolved": "https://registry.npmjs.org/@toast-ui/editor/-/editor-3.2.2.tgz",\r
+ "integrity": "sha512-ASX7LFjN2ZYQJrwmkUajPs7DRr9FsM1+RQ82CfTO0Y5ZXorBk1VZS4C2Dpxinx9kl55V4F8/A2h2QF4QMDtRbA==",\r
+ "dependencies": {\r
+ "dompurify": "^2.3.3",\r
+ "prosemirror-commands": "^1.1.9",\r
+ "prosemirror-history": "^1.1.3",\r
+ "prosemirror-inputrules": "^1.1.3",\r
+ "prosemirror-keymap": "^1.1.4",\r
+ "prosemirror-model": "^1.14.1",\r
+ "prosemirror-state": "^1.3.4",\r
+ "prosemirror-view": "^1.18.7"\r
+ }\r
+ },\r
+ "node_modules/@toast-ui/editor-plugin-code-syntax-highlight": {\r
+ "version": "3.1.0",\r
+ "resolved": "https://registry.npmjs.org/@toast-ui/editor-plugin-code-syntax-highlight/-/editor-plugin-code-syntax-highlight-3.1.0.tgz",\r
+ "integrity": "sha512-OgX5pZiTnHREoTTXDAFu1k6RzEspGOxeJNRlt/Lnoi1GvLbIpUTTbBcls9becpXT/Qdls++8G3r5C60cVdellA==",\r
+ "dependencies": {\r
+ "prismjs": "^1.23.0"\r
+ }\r
+ },\r
+ "node_modules/@types/estree": {\r
+ "version": "1.0.5",\r
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",\r
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",\r
+ "dev": true\r
+ },\r
+ "node_modules/@vitejs/plugin-vue": {\r
+ "version": "5.0.4",\r
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz",\r
+ "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": "^18.0.0 || >=20.0.0"\r
+ },\r
+ "peerDependencies": {\r
+ "vite": "^5.0.0",\r
+ "vue": "^3.2.25"\r
+ }\r
+ },\r
+ "node_modules/@vue/compiler-core": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.27.tgz",\r
+ "integrity": "sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==",\r
+ "dependencies": {\r
+ "@babel/parser": "^7.24.4",\r
+ "@vue/shared": "3.4.27",\r
+ "entities": "^4.5.0",\r
+ "estree-walker": "^2.0.2",\r
+ "source-map-js": "^1.2.0"\r
+ }\r
+ },\r
+ "node_modules/@vue/compiler-dom": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz",\r
+ "integrity": "sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==",\r
+ "dependencies": {\r
+ "@vue/compiler-core": "3.4.27",\r
+ "@vue/shared": "3.4.27"\r
+ }\r
+ },\r
+ "node_modules/@vue/compiler-sfc": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz",\r
+ "integrity": "sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==",\r
+ "dependencies": {\r
+ "@babel/parser": "^7.24.4",\r
+ "@vue/compiler-core": "3.4.27",\r
+ "@vue/compiler-dom": "3.4.27",\r
+ "@vue/compiler-ssr": "3.4.27",\r
+ "@vue/shared": "3.4.27",\r
+ "estree-walker": "^2.0.2",\r
+ "magic-string": "^0.30.10",\r
+ "postcss": "^8.4.38",\r
+ "source-map-js": "^1.2.0"\r
+ }\r
+ },\r
+ "node_modules/@vue/compiler-ssr": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz",\r
+ "integrity": "sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==",\r
+ "dependencies": {\r
+ "@vue/compiler-dom": "3.4.27",\r
+ "@vue/shared": "3.4.27"\r
+ }\r
+ },\r
+ "node_modules/@vue/devtools-api": {\r
+ "version": "6.6.1",\r
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz",\r
+ "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA=="\r
+ },\r
+ "node_modules/@vue/reactivity": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.27.tgz",\r
+ "integrity": "sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==",\r
+ "dependencies": {\r
+ "@vue/shared": "3.4.27"\r
+ }\r
+ },\r
+ "node_modules/@vue/runtime-core": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.27.tgz",\r
+ "integrity": "sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==",\r
+ "dependencies": {\r
+ "@vue/reactivity": "3.4.27",\r
+ "@vue/shared": "3.4.27"\r
+ }\r
+ },\r
+ "node_modules/@vue/runtime-dom": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz",\r
+ "integrity": "sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==",\r
+ "dependencies": {\r
+ "@vue/runtime-core": "3.4.27",\r
+ "@vue/shared": "3.4.27",\r
+ "csstype": "^3.1.3"\r
+ }\r
+ },\r
+ "node_modules/@vue/server-renderer": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.27.tgz",\r
+ "integrity": "sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==",\r
+ "dependencies": {\r
+ "@vue/compiler-ssr": "3.4.27",\r
+ "@vue/shared": "3.4.27"\r
+ },\r
+ "peerDependencies": {\r
+ "vue": "3.4.27"\r
+ }\r
+ },\r
+ "node_modules/@vue/shared": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.27.tgz",\r
+ "integrity": "sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA=="\r
+ },\r
+ "node_modules/ansi-regex": {\r
+ "version": "6.0.1",\r
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",\r
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=12"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"\r
+ }\r
+ },\r
+ "node_modules/ansi-styles": {\r
+ "version": "6.2.1",\r
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",\r
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=12"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"\r
+ }\r
+ },\r
+ "node_modules/any-promise": {\r
+ "version": "1.3.0",\r
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",\r
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",\r
+ "dev": true\r
+ },\r
+ "node_modules/anymatch": {\r
+ "version": "3.1.3",\r
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",\r
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "normalize-path": "^3.0.0",\r
+ "picomatch": "^2.0.4"\r
+ },\r
+ "engines": {\r
+ "node": ">= 8"\r
+ }\r
+ },\r
+ "node_modules/arg": {\r
+ "version": "5.0.2",\r
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",\r
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",\r
+ "dev": true\r
+ },\r
+ "node_modules/asynckit": {\r
+ "version": "0.4.0",\r
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",\r
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="\r
+ },\r
+ "node_modules/autoprefixer": {\r
+ "version": "10.4.19",\r
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",\r
+ "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",\r
+ "dev": true,\r
+ "funding": [\r
+ {\r
+ "type": "opencollective",\r
+ "url": "https://opencollective.com/postcss/"\r
+ },\r
+ {\r
+ "type": "tidelift",\r
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"\r
+ },\r
+ {\r
+ "type": "github",\r
+ "url": "https://github.com/sponsors/ai"\r
+ }\r
+ ],\r
+ "dependencies": {\r
+ "browserslist": "^4.23.0",\r
+ "caniuse-lite": "^1.0.30001599",\r
+ "fraction.js": "^4.3.7",\r
+ "normalize-range": "^0.1.2",\r
+ "picocolors": "^1.0.0",\r
+ "postcss-value-parser": "^4.2.0"\r
+ },\r
+ "bin": {\r
+ "autoprefixer": "bin/autoprefixer"\r
+ },\r
+ "engines": {\r
+ "node": "^10 || ^12 || >=14"\r
+ },\r
+ "peerDependencies": {\r
+ "postcss": "^8.1.0"\r
+ }\r
+ },\r
+ "node_modules/axios": {\r
+ "version": "1.6.8",\r
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",\r
+ "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",\r
+ "dependencies": {\r
+ "follow-redirects": "^1.15.6",\r
+ "form-data": "^4.0.0",\r
+ "proxy-from-env": "^1.1.0"\r
+ }\r
+ },\r
+ "node_modules/axios/node_modules/form-data": {\r
+ "version": "4.0.0",\r
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",\r
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",\r
+ "dependencies": {\r
+ "asynckit": "^0.4.0",\r
+ "combined-stream": "^1.0.8",\r
+ "mime-types": "^2.1.12"\r
+ },\r
+ "engines": {\r
+ "node": ">= 6"\r
+ }\r
+ },\r
+ "node_modules/balanced-match": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",\r
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",\r
+ "dev": true\r
+ },\r
+ "node_modules/binary-extensions": {\r
+ "version": "2.3.0",\r
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",\r
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=8"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/sindresorhus"\r
+ }\r
+ },\r
+ "node_modules/brace-expansion": {\r
+ "version": "2.0.1",\r
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",\r
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "balanced-match": "^1.0.0"\r
+ }\r
+ },\r
+ "node_modules/braces": {\r
+ "version": "3.0.2",\r
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",\r
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "fill-range": "^7.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/browserslist": {\r
+ "version": "4.23.0",\r
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",\r
+ "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",\r
+ "dev": true,\r
+ "funding": [\r
+ {\r
+ "type": "opencollective",\r
+ "url": "https://opencollective.com/browserslist"\r
+ },\r
+ {\r
+ "type": "tidelift",\r
+ "url": "https://tidelift.com/funding/github/npm/browserslist"\r
+ },\r
+ {\r
+ "type": "github",\r
+ "url": "https://github.com/sponsors/ai"\r
+ }\r
+ ],\r
+ "dependencies": {\r
+ "caniuse-lite": "^1.0.30001587",\r
+ "electron-to-chromium": "^1.4.668",\r
+ "node-releases": "^2.0.14",\r
+ "update-browserslist-db": "^1.0.13"\r
+ },\r
+ "bin": {\r
+ "browserslist": "cli.js"\r
+ },\r
+ "engines": {\r
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"\r
+ }\r
+ },\r
+ "node_modules/buffer-from": {\r
+ "version": "1.1.2",\r
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",\r
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "peer": true\r
+ },\r
+ "node_modules/camelcase-css": {\r
+ "version": "2.0.1",\r
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",\r
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">= 6"\r
+ }\r
+ },\r
+ "node_modules/caniuse-lite": {\r
+ "version": "1.0.30001612",\r
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz",\r
+ "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==",\r
+ "dev": true,\r
+ "funding": [\r
+ {\r
+ "type": "opencollective",\r
+ "url": "https://opencollective.com/browserslist"\r
+ },\r
+ {\r
+ "type": "tidelift",\r
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"\r
+ },\r
+ {\r
+ "type": "github",\r
+ "url": "https://github.com/sponsors/ai"\r
+ }\r
+ ]\r
+ },\r
+ "node_modules/chokidar": {\r
+ "version": "3.6.0",\r
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",\r
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "anymatch": "~3.1.2",\r
+ "braces": "~3.0.2",\r
+ "glob-parent": "~5.1.2",\r
+ "is-binary-path": "~2.1.0",\r
+ "is-glob": "~4.0.1",\r
+ "normalize-path": "~3.0.0",\r
+ "readdirp": "~3.6.0"\r
+ },\r
+ "engines": {\r
+ "node": ">= 8.10.0"\r
+ },\r
+ "funding": {\r
+ "url": "https://paulmillr.com/funding/"\r
+ },\r
+ "optionalDependencies": {\r
+ "fsevents": "~2.3.2"\r
+ }\r
+ },\r
+ "node_modules/chokidar/node_modules/glob-parent": {\r
+ "version": "5.1.2",\r
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",\r
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "is-glob": "^4.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">= 6"\r
+ }\r
+ },\r
+ "node_modules/color-convert": {\r
+ "version": "2.0.1",\r
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",\r
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "color-name": "~1.1.4"\r
+ },\r
+ "engines": {\r
+ "node": ">=7.0.0"\r
+ }\r
+ },\r
+ "node_modules/color-name": {\r
+ "version": "1.1.4",\r
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",\r
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",\r
+ "dev": true\r
+ },\r
+ "node_modules/combined-stream": {\r
+ "version": "1.0.8",\r
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",\r
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",\r
+ "dependencies": {\r
+ "delayed-stream": "~1.0.0"\r
+ },\r
+ "engines": {\r
+ "node": ">= 0.8"\r
+ }\r
+ },\r
+ "node_modules/commander": {\r
+ "version": "2.20.3",\r
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",\r
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "peer": true\r
+ },\r
+ "node_modules/cross-spawn": {\r
+ "version": "7.0.3",\r
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",\r
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "path-key": "^3.1.0",\r
+ "shebang-command": "^2.0.0",\r
+ "which": "^2.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">= 8"\r
+ }\r
+ },\r
+ "node_modules/cssesc": {\r
+ "version": "3.0.0",\r
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",\r
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",\r
+ "dev": true,\r
+ "bin": {\r
+ "cssesc": "bin/cssesc"\r
+ },\r
+ "engines": {\r
+ "node": ">=4"\r
+ }\r
+ },\r
+ "node_modules/csstype": {\r
+ "version": "3.1.3",\r
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",\r
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="\r
+ },\r
+ "node_modules/delayed-stream": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",\r
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",\r
+ "engines": {\r
+ "node": ">=0.4.0"\r
+ }\r
+ },\r
+ "node_modules/didyoumean": {\r
+ "version": "1.2.2",\r
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",\r
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",\r
+ "dev": true\r
+ },\r
+ "node_modules/dlv": {\r
+ "version": "1.1.3",\r
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",\r
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",\r
+ "dev": true\r
+ },\r
+ "node_modules/dompurify": {\r
+ "version": "2.5.2",\r
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.2.tgz",\r
+ "integrity": "sha512-5vSyvxRAb45EoWwAktUT3AYqAwXK4FL7si22Cgj46U6ICsj/YJczCN+Bk7WNABIQmpWRymGfslMhrRUZkQNnqA=="\r
+ },\r
+ "node_modules/eastasianwidth": {\r
+ "version": "0.2.0",\r
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",\r
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",\r
+ "dev": true\r
+ },\r
+ "node_modules/electron-to-chromium": {\r
+ "version": "1.4.746",\r
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.746.tgz",\r
+ "integrity": "sha512-jeWaIta2rIG2FzHaYIhSuVWqC6KJYo7oSBX4Jv7g+aVujKztfvdpf+n6MGwZdC5hQXbax4nntykLH2juIQrfPg==",\r
+ "dev": true\r
+ },\r
+ "node_modules/emoji-regex": {\r
+ "version": "9.2.2",\r
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",\r
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",\r
+ "dev": true\r
+ },\r
+ "node_modules/entities": {\r
+ "version": "4.5.0",\r
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",\r
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",\r
+ "engines": {\r
+ "node": ">=0.12"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/fb55/entities?sponsor=1"\r
+ }\r
+ },\r
+ "node_modules/esbuild": {\r
+ "version": "0.20.2",\r
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",\r
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",\r
+ "dev": true,\r
+ "hasInstallScript": true,\r
+ "bin": {\r
+ "esbuild": "bin/esbuild"\r
+ },\r
+ "engines": {\r
+ "node": ">=12"\r
+ },\r
+ "optionalDependencies": {\r
+ "@esbuild/aix-ppc64": "0.20.2",\r
+ "@esbuild/android-arm": "0.20.2",\r
+ "@esbuild/android-arm64": "0.20.2",\r
+ "@esbuild/android-x64": "0.20.2",\r
+ "@esbuild/darwin-arm64": "0.20.2",\r
+ "@esbuild/darwin-x64": "0.20.2",\r
+ "@esbuild/freebsd-arm64": "0.20.2",\r
+ "@esbuild/freebsd-x64": "0.20.2",\r
+ "@esbuild/linux-arm": "0.20.2",\r
+ "@esbuild/linux-arm64": "0.20.2",\r
+ "@esbuild/linux-ia32": "0.20.2",\r
+ "@esbuild/linux-loong64": "0.20.2",\r
+ "@esbuild/linux-mips64el": "0.20.2",\r
+ "@esbuild/linux-ppc64": "0.20.2",\r
+ "@esbuild/linux-riscv64": "0.20.2",\r
+ "@esbuild/linux-s390x": "0.20.2",\r
+ "@esbuild/linux-x64": "0.20.2",\r
+ "@esbuild/netbsd-x64": "0.20.2",\r
+ "@esbuild/openbsd-x64": "0.20.2",\r
+ "@esbuild/sunos-x64": "0.20.2",\r
+ "@esbuild/win32-arm64": "0.20.2",\r
+ "@esbuild/win32-ia32": "0.20.2",\r
+ "@esbuild/win32-x64": "0.20.2"\r
+ }\r
+ },\r
+ "node_modules/escalade": {\r
+ "version": "3.1.2",\r
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",\r
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=6"\r
+ }\r
+ },\r
+ "node_modules/estree-walker": {\r
+ "version": "2.0.2",\r
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",\r
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="\r
+ },\r
+ "node_modules/fast-glob": {\r
+ "version": "3.3.2",\r
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",\r
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "@nodelib/fs.stat": "^2.0.2",\r
+ "@nodelib/fs.walk": "^1.2.3",\r
+ "glob-parent": "^5.1.2",\r
+ "merge2": "^1.3.0",\r
+ "micromatch": "^4.0.4"\r
+ },\r
+ "engines": {\r
+ "node": ">=8.6.0"\r
+ }\r
+ },\r
+ "node_modules/fast-glob/node_modules/glob-parent": {\r
+ "version": "5.1.2",\r
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",\r
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "is-glob": "^4.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">= 6"\r
+ }\r
+ },\r
+ "node_modules/fastq": {\r
+ "version": "1.17.1",\r
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",\r
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "reusify": "^1.0.4"\r
+ }\r
+ },\r
+ "node_modules/fill-range": {\r
+ "version": "7.0.1",\r
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",\r
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "to-regex-range": "^5.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/follow-redirects": {\r
+ "version": "1.15.6",\r
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",\r
+ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",\r
+ "funding": [\r
+ {\r
+ "type": "individual",\r
+ "url": "https://github.com/sponsors/RubenVerborgh"\r
+ }\r
+ ],\r
+ "engines": {\r
+ "node": ">=4.0"\r
+ },\r
+ "peerDependenciesMeta": {\r
+ "debug": {\r
+ "optional": true\r
+ }\r
+ }\r
+ },\r
+ "node_modules/foreground-child": {\r
+ "version": "3.1.1",\r
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",\r
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "cross-spawn": "^7.0.0",\r
+ "signal-exit": "^4.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=14"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/isaacs"\r
+ }\r
+ },\r
+ "node_modules/fraction.js": {\r
+ "version": "4.3.7",\r
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",\r
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": "*"\r
+ },\r
+ "funding": {\r
+ "type": "patreon",\r
+ "url": "https://github.com/sponsors/rawify"\r
+ }\r
+ },\r
- "node_modules/fsevents": {\r
- "version": "2.3.3",\r
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",\r
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",\r
- "dev": true,\r
- "hasInstallScript": true,\r
- "optional": true,\r
- "os": [\r
- "darwin"\r
- ],\r
- "engines": {\r
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"\r
- }\r
- },\r
+ "node_modules/function-bind": {\r
+ "version": "1.1.2",\r
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",\r
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",\r
+ "dev": true,\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/ljharb"\r
+ }\r
+ },\r
+ "node_modules/glob": {\r
+ "version": "10.3.12",\r
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",\r
+ "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "foreground-child": "^3.1.0",\r
+ "jackspeak": "^2.3.6",\r
+ "minimatch": "^9.0.1",\r
+ "minipass": "^7.0.4",\r
+ "path-scurry": "^1.10.2"\r
+ },\r
+ "bin": {\r
+ "glob": "dist/esm/bin.mjs"\r
+ },\r
+ "engines": {\r
+ "node": ">=16 || 14 >=14.17"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/isaacs"\r
+ }\r
+ },\r
+ "node_modules/glob-parent": {\r
+ "version": "6.0.2",\r
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",\r
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "is-glob": "^4.0.3"\r
+ },\r
+ "engines": {\r
+ "node": ">=10.13.0"\r
+ }\r
+ },\r
+ "node_modules/hasown": {\r
+ "version": "2.0.2",\r
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",\r
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "function-bind": "^1.1.2"\r
+ },\r
+ "engines": {\r
+ "node": ">= 0.4"\r
+ }\r
+ },\r
+ "node_modules/immutable": {\r
+ "version": "4.2.4",\r
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz",\r
+ "integrity": "sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "peer": true\r
+ },\r
+ "node_modules/is-binary-path": {\r
+ "version": "2.1.0",\r
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",\r
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "binary-extensions": "^2.0.0"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/is-core-module": {\r
+ "version": "2.13.1",\r
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",\r
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "hasown": "^2.0.0"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/ljharb"\r
+ }\r
+ },\r
+ "node_modules/is-extglob": {\r
+ "version": "2.1.1",\r
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",\r
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=0.10.0"\r
+ }\r
+ },\r
+ "node_modules/is-fullwidth-code-point": {\r
+ "version": "3.0.0",\r
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",\r
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/is-glob": {\r
+ "version": "4.0.3",\r
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",\r
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "is-extglob": "^2.1.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=0.10.0"\r
+ }\r
+ },\r
+ "node_modules/is-number": {\r
+ "version": "7.0.0",\r
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",\r
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=0.12.0"\r
+ }\r
+ },\r
+ "node_modules/isexe": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",\r
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",\r
+ "dev": true\r
+ },\r
+ "node_modules/jackspeak": {\r
+ "version": "2.3.6",\r
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",\r
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "@isaacs/cliui": "^8.0.2"\r
+ },\r
+ "engines": {\r
+ "node": ">=14"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/isaacs"\r
+ },\r
+ "optionalDependencies": {\r
+ "@pkgjs/parseargs": "^0.11.0"\r
+ }\r
+ },\r
+ "node_modules/jiti": {\r
+ "version": "1.21.0",\r
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",\r
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",\r
+ "dev": true,\r
+ "bin": {\r
+ "jiti": "bin/jiti.js"\r
+ }\r
+ },\r
+ "node_modules/lilconfig": {\r
+ "version": "2.1.0",\r
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",\r
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=10"\r
+ }\r
+ },\r
+ "node_modules/lines-and-columns": {\r
+ "version": "1.2.4",\r
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",\r
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",\r
+ "dev": true\r
+ },\r
+ "node_modules/lru-cache": {\r
+ "version": "10.2.0",\r
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",\r
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": "14 || >=16.14"\r
+ }\r
+ },\r
+ "node_modules/magic-string": {\r
+ "version": "0.30.10",\r
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",\r
+ "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",\r
+ "dependencies": {\r
+ "@jridgewell/sourcemap-codec": "^1.4.15"\r
+ }\r
+ },\r
+ "node_modules/merge2": {\r
+ "version": "1.4.1",\r
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",\r
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">= 8"\r
+ }\r
+ },\r
+ "node_modules/micromatch": {\r
+ "version": "4.0.5",\r
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",\r
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "braces": "^3.0.2",\r
+ "picomatch": "^2.3.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8.6"\r
+ }\r
+ },\r
+ "node_modules/mime-db": {\r
+ "version": "1.52.0",\r
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",\r
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",\r
+ "engines": {\r
+ "node": ">= 0.6"\r
+ }\r
+ },\r
+ "node_modules/mime-types": {\r
+ "version": "2.1.35",\r
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",\r
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",\r
+ "dependencies": {\r
+ "mime-db": "1.52.0"\r
+ },\r
+ "engines": {\r
+ "node": ">= 0.6"\r
+ }\r
+ },\r
+ "node_modules/minimatch": {\r
+ "version": "9.0.4",\r
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",\r
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "brace-expansion": "^2.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=16 || 14 >=14.17"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/isaacs"\r
+ }\r
+ },\r
+ "node_modules/minipass": {\r
+ "version": "7.0.4",\r
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",\r
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=16 || 14 >=14.17"\r
+ }\r
+ },\r
+ "node_modules/mousetrap": {\r
+ "version": "1.6.5",\r
+ "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz",\r
+ "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA=="\r
+ },\r
+ "node_modules/mz": {\r
+ "version": "2.7.0",\r
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",\r
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "any-promise": "^1.0.0",\r
+ "object-assign": "^4.0.1",\r
+ "thenify-all": "^1.0.0"\r
+ }\r
+ },\r
+ "node_modules/nanoid": {\r
+ "version": "3.3.7",\r
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",\r
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",\r
+ "funding": [\r
+ {\r
+ "type": "github",\r
+ "url": "https://github.com/sponsors/ai"\r
+ }\r
+ ],\r
+ "bin": {\r
+ "nanoid": "bin/nanoid.cjs"\r
+ },\r
+ "engines": {\r
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"\r
+ }\r
+ },\r
+ "node_modules/node-releases": {\r
+ "version": "2.0.14",\r
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",\r
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",\r
+ "dev": true\r
+ },\r
+ "node_modules/normalize-path": {\r
+ "version": "3.0.0",\r
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",\r
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=0.10.0"\r
+ }\r
+ },\r
+ "node_modules/normalize-range": {\r
+ "version": "0.1.2",\r
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",\r
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=0.10.0"\r
+ }\r
+ },\r
+ "node_modules/object-assign": {\r
+ "version": "4.1.1",\r
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",\r
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=0.10.0"\r
+ }\r
+ },\r
+ "node_modules/object-hash": {\r
+ "version": "3.0.0",\r
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",\r
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">= 6"\r
+ }\r
+ },\r
+ "node_modules/orderedmap": {\r
+ "version": "2.1.1",\r
+ "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz",\r
+ "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="\r
+ },\r
+ "node_modules/path-key": {\r
+ "version": "3.1.1",\r
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",\r
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/path-parse": {\r
+ "version": "1.0.7",\r
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",\r
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",\r
+ "dev": true\r
+ },\r
+ "node_modules/path-scurry": {\r
+ "version": "1.10.2",\r
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz",\r
+ "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "lru-cache": "^10.2.0",\r
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"\r
+ },\r
+ "engines": {\r
+ "node": ">=16 || 14 >=14.17"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/isaacs"\r
+ }\r
+ },\r
+ "node_modules/picocolors": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",\r
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="\r
+ },\r
+ "node_modules/picomatch": {\r
+ "version": "2.3.1",\r
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",\r
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=8.6"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/jonschlinkert"\r
+ }\r
+ },\r
+ "node_modules/pify": {\r
+ "version": "2.3.0",\r
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",\r
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=0.10.0"\r
+ }\r
+ },\r
+ "node_modules/pinia": {\r
+ "version": "2.1.7",\r
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",\r
+ "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",\r
+ "dependencies": {\r
+ "@vue/devtools-api": "^6.5.0",\r
+ "vue-demi": ">=0.14.5"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/posva"\r
+ },\r
+ "peerDependencies": {\r
+ "@vue/composition-api": "^1.4.0",\r
+ "typescript": ">=4.4.4",\r
+ "vue": "^2.6.14 || ^3.3.0"\r
+ },\r
+ "peerDependenciesMeta": {\r
+ "@vue/composition-api": {\r
+ "optional": true\r
+ },\r
+ "typescript": {\r
+ "optional": true\r
+ }\r
+ }\r
+ },\r
+ "node_modules/pinia/node_modules/vue-demi": {\r
+ "version": "0.14.7",\r
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",\r
+ "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",\r
+ "hasInstallScript": true,\r
+ "bin": {\r
+ "vue-demi-fix": "bin/vue-demi-fix.js",\r
+ "vue-demi-switch": "bin/vue-demi-switch.js"\r
+ },\r
+ "engines": {\r
+ "node": ">=12"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/antfu"\r
+ },\r
+ "peerDependencies": {\r
+ "@vue/composition-api": "^1.0.0-rc.1",\r
+ "vue": "^3.0.0-0 || ^2.6.0"\r
+ },\r
+ "peerDependenciesMeta": {\r
+ "@vue/composition-api": {\r
+ "optional": true\r
+ }\r
+ }\r
+ },\r
+ "node_modules/pirates": {\r
+ "version": "4.0.6",\r
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",\r
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">= 6"\r
+ }\r
+ },\r
+ "node_modules/postcss": {\r
+ "version": "8.4.38",\r
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",\r
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",\r
+ "funding": [\r
+ {\r
+ "type": "opencollective",\r
+ "url": "https://opencollective.com/postcss/"\r
+ },\r
+ {\r
+ "type": "tidelift",\r
+ "url": "https://tidelift.com/funding/github/npm/postcss"\r
+ },\r
+ {\r
+ "type": "github",\r
+ "url": "https://github.com/sponsors/ai"\r
+ }\r
+ ],\r
+ "dependencies": {\r
+ "nanoid": "^3.3.7",\r
+ "picocolors": "^1.0.0",\r
+ "source-map-js": "^1.2.0"\r
+ },\r
+ "engines": {\r
+ "node": "^10 || ^12 || >=14"\r
+ }\r
+ },\r
+ "node_modules/postcss-import": {\r
+ "version": "15.1.0",\r
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",\r
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "postcss-value-parser": "^4.0.0",\r
+ "read-cache": "^1.0.0",\r
+ "resolve": "^1.1.7"\r
+ },\r
+ "engines": {\r
+ "node": ">=14.0.0"\r
+ },\r
+ "peerDependencies": {\r
+ "postcss": "^8.0.0"\r
+ }\r
+ },\r
+ "node_modules/postcss-js": {\r
+ "version": "4.0.1",\r
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",\r
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "camelcase-css": "^2.0.1"\r
+ },\r
+ "engines": {\r
+ "node": "^12 || ^14 || >= 16"\r
+ },\r
+ "funding": {\r
+ "type": "opencollective",\r
+ "url": "https://opencollective.com/postcss/"\r
+ },\r
+ "peerDependencies": {\r
+ "postcss": "^8.4.21"\r
+ }\r
+ },\r
+ "node_modules/postcss-load-config": {\r
+ "version": "4.0.2",\r
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",\r
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",\r
+ "dev": true,\r
+ "funding": [\r
+ {\r
+ "type": "opencollective",\r
+ "url": "https://opencollective.com/postcss/"\r
+ },\r
+ {\r
+ "type": "github",\r
+ "url": "https://github.com/sponsors/ai"\r
+ }\r
+ ],\r
+ "dependencies": {\r
+ "lilconfig": "^3.0.0",\r
+ "yaml": "^2.3.4"\r
+ },\r
+ "engines": {\r
+ "node": ">= 14"\r
+ },\r
+ "peerDependencies": {\r
+ "postcss": ">=8.0.9",\r
+ "ts-node": ">=9.0.0"\r
+ },\r
+ "peerDependenciesMeta": {\r
+ "postcss": {\r
+ "optional": true\r
+ },\r
+ "ts-node": {\r
+ "optional": true\r
+ }\r
+ }\r
+ },\r
+ "node_modules/postcss-load-config/node_modules/lilconfig": {\r
+ "version": "3.1.1",\r
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz",\r
+ "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=14"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/antonk52"\r
+ }\r
+ },\r
+ "node_modules/postcss-nested": {\r
+ "version": "6.0.1",\r
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",\r
+ "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "postcss-selector-parser": "^6.0.11"\r
+ },\r
+ "engines": {\r
+ "node": ">=12.0"\r
+ },\r
+ "funding": {\r
+ "type": "opencollective",\r
+ "url": "https://opencollective.com/postcss/"\r
+ },\r
+ "peerDependencies": {\r
+ "postcss": "^8.2.14"\r
+ }\r
+ },\r
+ "node_modules/postcss-selector-parser": {\r
+ "version": "6.0.16",\r
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",\r
+ "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "cssesc": "^3.0.0",\r
+ "util-deprecate": "^1.0.2"\r
+ },\r
+ "engines": {\r
+ "node": ">=4"\r
+ }\r
+ },\r
+ "node_modules/postcss-value-parser": {\r
+ "version": "4.2.0",\r
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",\r
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",\r
+ "dev": true\r
+ },\r
+ "node_modules/prettier": {\r
+ "version": "3.2.5",\r
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",\r
+ "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",\r
+ "dev": true,\r
+ "bin": {\r
+ "prettier": "bin/prettier.cjs"\r
+ },\r
+ "engines": {\r
+ "node": ">=14"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/prettier/prettier?sponsor=1"\r
+ }\r
+ },\r
+ "node_modules/prettier-plugin-tailwindcss": {\r
+ "version": "0.5.14",\r
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.14.tgz",\r
+ "integrity": "sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=14.21.3"\r
+ },\r
+ "peerDependencies": {\r
+ "@ianvs/prettier-plugin-sort-imports": "*",\r
+ "@prettier/plugin-pug": "*",\r
+ "@shopify/prettier-plugin-liquid": "*",\r
+ "@trivago/prettier-plugin-sort-imports": "*",\r
+ "@zackad/prettier-plugin-twig-melody": "*",\r
+ "prettier": "^3.0",\r
+ "prettier-plugin-astro": "*",\r
+ "prettier-plugin-css-order": "*",\r
+ "prettier-plugin-import-sort": "*",\r
+ "prettier-plugin-jsdoc": "*",\r
+ "prettier-plugin-marko": "*",\r
+ "prettier-plugin-organize-attributes": "*",\r
+ "prettier-plugin-organize-imports": "*",\r
+ "prettier-plugin-sort-imports": "*",\r
+ "prettier-plugin-style-order": "*",\r
+ "prettier-plugin-svelte": "*"\r
+ },\r
+ "peerDependenciesMeta": {\r
+ "@ianvs/prettier-plugin-sort-imports": {\r
+ "optional": true\r
+ },\r
+ "@prettier/plugin-pug": {\r
+ "optional": true\r
+ },\r
+ "@shopify/prettier-plugin-liquid": {\r
+ "optional": true\r
+ },\r
+ "@trivago/prettier-plugin-sort-imports": {\r
+ "optional": true\r
+ },\r
+ "@zackad/prettier-plugin-twig-melody": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-astro": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-css-order": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-import-sort": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-jsdoc": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-marko": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-organize-attributes": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-organize-imports": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-sort-imports": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-style-order": {\r
+ "optional": true\r
+ },\r
+ "prettier-plugin-svelte": {\r
+ "optional": true\r
+ }\r
+ }\r
+ },\r
+ "node_modules/primevue": {\r
+ "version": "3.52.0",\r
+ "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.52.0.tgz",\r
+ "integrity": "sha512-HLOVP5YI0ArFKUhIyfZsWmTNMaBYNCBWC/3DYvdd/Po4LY5/WXf7yIYvArE2q/3OuwSXJXvjlR8UNQeJYRSQog==",\r
+ "peerDependencies": {\r
+ "vue": "^3.0.0"\r
+ }\r
+ },\r
+ "node_modules/prismjs": {\r
+ "version": "1.29.0",\r
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",\r
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",\r
+ "engines": {\r
+ "node": ">=6"\r
+ }\r
+ },\r
+ "node_modules/prosemirror-commands": {\r
+ "version": "1.5.2",\r
+ "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz",\r
+ "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==",\r
+ "dependencies": {\r
+ "prosemirror-model": "^1.0.0",\r
+ "prosemirror-state": "^1.0.0",\r
+ "prosemirror-transform": "^1.0.0"\r
+ }\r
+ },\r
+ "node_modules/prosemirror-history": {\r
+ "version": "1.4.0",\r
+ "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz",\r
+ "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==",\r
+ "dependencies": {\r
+ "prosemirror-state": "^1.2.2",\r
+ "prosemirror-transform": "^1.0.0",\r
+ "prosemirror-view": "^1.31.0",\r
+ "rope-sequence": "^1.3.0"\r
+ }\r
+ },\r
+ "node_modules/prosemirror-inputrules": {\r
+ "version": "1.4.0",\r
+ "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz",\r
+ "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==",\r
+ "dependencies": {\r
+ "prosemirror-state": "^1.0.0",\r
+ "prosemirror-transform": "^1.0.0"\r
+ }\r
+ },\r
+ "node_modules/prosemirror-keymap": {\r
+ "version": "1.2.2",\r
+ "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz",\r
+ "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==",\r
+ "dependencies": {\r
+ "prosemirror-state": "^1.0.0",\r
+ "w3c-keyname": "^2.2.0"\r
+ }\r
+ },\r
+ "node_modules/prosemirror-model": {\r
+ "version": "1.20.0",\r
+ "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.20.0.tgz",\r
+ "integrity": "sha512-q7AY7vMjKYqDCeoedgUiAgrLabliXxndJuuFmcmc2+YU1SblvnOiG2WEACF2lwAZsMlfLpiAilA3L+TWlDqIsQ==",\r
+ "dependencies": {\r
+ "orderedmap": "^2.0.0"\r
+ }\r
+ },\r
+ "node_modules/prosemirror-state": {\r
+ "version": "1.4.3",\r
+ "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz",\r
+ "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==",\r
+ "dependencies": {\r
+ "prosemirror-model": "^1.0.0",\r
+ "prosemirror-transform": "^1.0.0",\r
+ "prosemirror-view": "^1.27.0"\r
+ }\r
+ },\r
+ "node_modules/prosemirror-transform": {\r
+ "version": "1.8.0",\r
+ "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz",\r
+ "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==",\r
+ "dependencies": {\r
+ "prosemirror-model": "^1.0.0"\r
+ }\r
+ },\r
+ "node_modules/prosemirror-view": {\r
+ "version": "1.33.6",\r
+ "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.6.tgz",\r
+ "integrity": "sha512-zRLUNgLIQfd8IfGprsXxWTjdA8xEAFJe8cDNrOptj6Mop9sj+BMeVbJvceyAYCm5G2dOdT2prctH7K9dfnpIMw==",\r
+ "dependencies": {\r
+ "prosemirror-model": "^1.20.0",\r
+ "prosemirror-state": "^1.0.0",\r
+ "prosemirror-transform": "^1.1.0"\r
+ }\r
+ },\r
+ "node_modules/proxy-from-env": {\r
+ "version": "1.1.0",\r
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",\r
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="\r
+ },\r
+ "node_modules/queue-microtask": {\r
+ "version": "1.2.3",\r
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",\r
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",\r
+ "dev": true,\r
+ "funding": [\r
+ {\r
+ "type": "github",\r
+ "url": "https://github.com/sponsors/feross"\r
+ },\r
+ {\r
+ "type": "patreon",\r
+ "url": "https://www.patreon.com/feross"\r
+ },\r
+ {\r
+ "type": "consulting",\r
+ "url": "https://feross.org/support"\r
+ }\r
+ ]\r
+ },\r
+ "node_modules/read-cache": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",\r
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "pify": "^2.3.0"\r
+ }\r
+ },\r
+ "node_modules/readdirp": {\r
+ "version": "3.6.0",\r
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",\r
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "picomatch": "^2.2.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8.10.0"\r
+ }\r
+ },\r
+ "node_modules/resolve": {\r
+ "version": "1.22.8",\r
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",\r
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "is-core-module": "^2.13.0",\r
+ "path-parse": "^1.0.7",\r
+ "supports-preserve-symlinks-flag": "^1.0.0"\r
+ },\r
+ "bin": {\r
+ "resolve": "bin/resolve"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/ljharb"\r
+ }\r
+ },\r
+ "node_modules/reusify": {\r
+ "version": "1.0.4",\r
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",\r
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",\r
+ "dev": true,\r
+ "engines": {\r
+ "iojs": ">=1.0.0",\r
+ "node": ">=0.10.0"\r
+ }\r
+ },\r
+ "node_modules/rollup": {\r
+ "version": "4.14.3",\r
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz",\r
+ "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "@types/estree": "1.0.5"\r
+ },\r
+ "bin": {\r
+ "rollup": "dist/bin/rollup"\r
+ },\r
+ "engines": {\r
+ "node": ">=18.0.0",\r
+ "npm": ">=8.0.0"\r
+ },\r
+ "optionalDependencies": {\r
+ "@rollup/rollup-android-arm-eabi": "4.14.3",\r
+ "@rollup/rollup-android-arm64": "4.14.3",\r
+ "@rollup/rollup-darwin-arm64": "4.14.3",\r
+ "@rollup/rollup-darwin-x64": "4.14.3",\r
+ "@rollup/rollup-linux-arm-gnueabihf": "4.14.3",\r
+ "@rollup/rollup-linux-arm-musleabihf": "4.14.3",\r
+ "@rollup/rollup-linux-arm64-gnu": "4.14.3",\r
+ "@rollup/rollup-linux-arm64-musl": "4.14.3",\r
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3",\r
+ "@rollup/rollup-linux-riscv64-gnu": "4.14.3",\r
+ "@rollup/rollup-linux-s390x-gnu": "4.14.3",\r
+ "@rollup/rollup-linux-x64-gnu": "4.14.3",\r
+ "@rollup/rollup-linux-x64-musl": "4.14.3",\r
+ "@rollup/rollup-win32-arm64-msvc": "4.14.3",\r
+ "@rollup/rollup-win32-ia32-msvc": "4.14.3",\r
+ "@rollup/rollup-win32-x64-msvc": "4.14.3",\r
+ "fsevents": "~2.3.2"\r
+ }\r
+ },\r
+ "node_modules/rope-sequence": {\r
+ "version": "1.3.4",\r
+ "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz",\r
+ "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="\r
+ },\r
+ "node_modules/run-parallel": {\r
+ "version": "1.2.0",\r
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",\r
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",\r
+ "dev": true,\r
+ "funding": [\r
+ {\r
+ "type": "github",\r
+ "url": "https://github.com/sponsors/feross"\r
+ },\r
+ {\r
+ "type": "patreon",\r
+ "url": "https://www.patreon.com/feross"\r
+ },\r
+ {\r
+ "type": "consulting",\r
+ "url": "https://feross.org/support"\r
+ }\r
+ ],\r
+ "dependencies": {\r
+ "queue-microtask": "^1.2.2"\r
+ }\r
+ },\r
+ "node_modules/sass": {\r
+ "version": "1.74.1",\r
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.74.1.tgz",\r
+ "integrity": "sha512-w0Z9p/rWZWelb88ISOLyvqTWGmtmu2QJICqDBGyNnfG4OUnPX9BBjjYIXUpXCMOOg5MQWNpqzt876la1fsTvUA==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "peer": true,\r
+ "dependencies": {\r
+ "chokidar": ">=3.0.0 <4.0.0",\r
+ "immutable": "^4.0.0",\r
+ "source-map-js": ">=0.6.2 <2.0.0"\r
+ },\r
+ "bin": {\r
+ "sass": "sass.js"\r
+ },\r
+ "engines": {\r
+ "node": ">=14.0.0"\r
+ }\r
+ },\r
+ "node_modules/shebang-command": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",\r
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "shebang-regex": "^3.0.0"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/shebang-regex": {\r
+ "version": "3.0.0",\r
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",\r
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/signal-exit": {\r
+ "version": "4.1.0",\r
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",\r
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=14"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/isaacs"\r
+ }\r
+ },\r
+ "node_modules/source-map": {\r
+ "version": "0.6.1",\r
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",\r
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "peer": true,\r
+ "engines": {\r
+ "node": ">=0.10.0"\r
+ }\r
+ },\r
+ "node_modules/source-map-js": {\r
+ "version": "1.2.0",\r
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",\r
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",\r
+ "engines": {\r
+ "node": ">=0.10.0"\r
+ }\r
+ },\r
+ "node_modules/source-map-support": {\r
+ "version": "0.5.21",\r
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",\r
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "peer": true,\r
+ "dependencies": {\r
+ "buffer-from": "^1.0.0",\r
+ "source-map": "^0.6.0"\r
+ }\r
+ },\r
+ "node_modules/string-width": {\r
+ "version": "5.1.2",\r
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",\r
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "eastasianwidth": "^0.2.0",\r
+ "emoji-regex": "^9.2.2",\r
+ "strip-ansi": "^7.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=12"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/sindresorhus"\r
+ }\r
+ },\r
+ "node_modules/string-width-cjs": {\r
+ "name": "string-width",\r
+ "version": "4.2.3",\r
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",\r
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "emoji-regex": "^8.0.0",\r
+ "is-fullwidth-code-point": "^3.0.0",\r
+ "strip-ansi": "^6.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {\r
+ "version": "5.0.1",\r
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",\r
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {\r
+ "version": "8.0.0",\r
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",\r
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",\r
+ "dev": true\r
+ },\r
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {\r
+ "version": "6.0.1",\r
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",\r
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "ansi-regex": "^5.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/strip-ansi": {\r
+ "version": "7.1.0",\r
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",\r
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "ansi-regex": "^6.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=12"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"\r
+ }\r
+ },\r
+ "node_modules/strip-ansi-cjs": {\r
+ "name": "strip-ansi",\r
+ "version": "6.0.1",\r
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",\r
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "ansi-regex": "^5.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {\r
+ "version": "5.0.1",\r
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",\r
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/sucrase": {\r
+ "version": "3.35.0",\r
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",\r
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "@jridgewell/gen-mapping": "^0.3.2",\r
+ "commander": "^4.0.0",\r
+ "glob": "^10.3.10",\r
+ "lines-and-columns": "^1.1.6",\r
+ "mz": "^2.7.0",\r
+ "pirates": "^4.0.1",\r
+ "ts-interface-checker": "^0.1.9"\r
+ },\r
+ "bin": {\r
+ "sucrase": "bin/sucrase",\r
+ "sucrase-node": "bin/sucrase-node"\r
+ },\r
+ "engines": {\r
+ "node": ">=16 || 14 >=14.17"\r
+ }\r
+ },\r
+ "node_modules/sucrase/node_modules/commander": {\r
+ "version": "4.1.1",\r
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",\r
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">= 6"\r
+ }\r
+ },\r
+ "node_modules/supports-preserve-symlinks-flag": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",\r
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">= 0.4"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/ljharb"\r
+ }\r
+ },\r
+ "node_modules/tailwindcss": {\r
+ "version": "3.4.3",\r
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz",\r
+ "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "@alloc/quick-lru": "^5.2.0",\r
+ "arg": "^5.0.2",\r
+ "chokidar": "^3.5.3",\r
+ "didyoumean": "^1.2.2",\r
+ "dlv": "^1.1.3",\r
+ "fast-glob": "^3.3.0",\r
+ "glob-parent": "^6.0.2",\r
+ "is-glob": "^4.0.3",\r
+ "jiti": "^1.21.0",\r
+ "lilconfig": "^2.1.0",\r
+ "micromatch": "^4.0.5",\r
+ "normalize-path": "^3.0.0",\r
+ "object-hash": "^3.0.0",\r
+ "picocolors": "^1.0.0",\r
+ "postcss": "^8.4.23",\r
+ "postcss-import": "^15.1.0",\r
+ "postcss-js": "^4.0.1",\r
+ "postcss-load-config": "^4.0.1",\r
+ "postcss-nested": "^6.0.1",\r
+ "postcss-selector-parser": "^6.0.11",\r
+ "resolve": "^1.22.2",\r
+ "sucrase": "^3.32.0"\r
+ },\r
+ "bin": {\r
+ "tailwind": "lib/cli.js",\r
+ "tailwindcss": "lib/cli.js"\r
+ },\r
+ "engines": {\r
+ "node": ">=14.0.0"\r
+ }\r
+ },\r
+ "node_modules/terser": {\r
+ "version": "5.30.3",\r
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz",\r
+ "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "peer": true,\r
+ "dependencies": {\r
+ "@jridgewell/source-map": "^0.3.3",\r
+ "acorn": "^8.8.2",\r
+ "commander": "^2.20.0",\r
+ "source-map-support": "~0.5.20"\r
+ },\r
+ "bin": {\r
+ "terser": "bin/terser"\r
+ },\r
+ "engines": {\r
+ "node": ">=10"\r
+ }\r
+ },\r
+ "node_modules/terser/node_modules/acorn": {\r
+ "version": "8.11.3",\r
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",\r
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",\r
+ "dev": true,\r
+ "optional": true,\r
+ "peer": true,\r
+ "bin": {\r
+ "acorn": "bin/acorn"\r
+ },\r
+ "engines": {\r
+ "node": ">=0.4.0"\r
+ }\r
+ },\r
+ "node_modules/thenify": {\r
+ "version": "3.3.1",\r
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",\r
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "any-promise": "^1.0.0"\r
+ }\r
+ },\r
+ "node_modules/thenify-all": {\r
+ "version": "1.6.0",\r
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",\r
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "thenify": ">= 3.1.0 < 4"\r
+ },\r
+ "engines": {\r
+ "node": ">=0.8"\r
+ }\r
+ },\r
+ "node_modules/to-regex-range": {\r
+ "version": "5.0.1",\r
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",\r
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "is-number": "^7.0.0"\r
+ },\r
+ "engines": {\r
+ "node": ">=8.0"\r
+ }\r
+ },\r
+ "node_modules/ts-interface-checker": {\r
+ "version": "0.1.13",\r
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",\r
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",\r
+ "dev": true\r
+ },\r
+ "node_modules/update-browserslist-db": {\r
+ "version": "1.0.13",\r
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",\r
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",\r
+ "dev": true,\r
+ "funding": [\r
+ {\r
+ "type": "opencollective",\r
+ "url": "https://opencollective.com/browserslist"\r
+ },\r
+ {\r
+ "type": "tidelift",\r
+ "url": "https://tidelift.com/funding/github/npm/browserslist"\r
+ },\r
+ {\r
+ "type": "github",\r
+ "url": "https://github.com/sponsors/ai"\r
+ }\r
+ ],\r
+ "dependencies": {\r
+ "escalade": "^3.1.1",\r
+ "picocolors": "^1.0.0"\r
+ },\r
+ "bin": {\r
+ "update-browserslist-db": "cli.js"\r
+ },\r
+ "peerDependencies": {\r
+ "browserslist": ">= 4.21.0"\r
+ }\r
+ },\r
+ "node_modules/util-deprecate": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",\r
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",\r
+ "dev": true\r
+ },\r
+ "node_modules/vite": {\r
+ "version": "5.2.11",\r
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz",\r
+ "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "esbuild": "^0.20.1",\r
+ "postcss": "^8.4.38",\r
+ "rollup": "^4.13.0"\r
+ },\r
+ "bin": {\r
+ "vite": "bin/vite.js"\r
+ },\r
+ "engines": {\r
+ "node": "^18.0.0 || >=20.0.0"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/vitejs/vite?sponsor=1"\r
+ },\r
+ "optionalDependencies": {\r
+ "fsevents": "~2.3.3"\r
+ },\r
+ "peerDependencies": {\r
+ "@types/node": "^18.0.0 || >=20.0.0",\r
+ "less": "*",\r
+ "lightningcss": "^1.21.0",\r
+ "sass": "*",\r
+ "stylus": "*",\r
+ "sugarss": "*",\r
+ "terser": "^5.4.0"\r
+ },\r
+ "peerDependenciesMeta": {\r
+ "@types/node": {\r
+ "optional": true\r
+ },\r
+ "less": {\r
+ "optional": true\r
+ },\r
+ "lightningcss": {\r
+ "optional": true\r
+ },\r
+ "sass": {\r
+ "optional": true\r
+ },\r
+ "stylus": {\r
+ "optional": true\r
+ },\r
+ "sugarss": {\r
+ "optional": true\r
+ },\r
+ "terser": {\r
+ "optional": true\r
+ }\r
+ }\r
+ },\r
+ "node_modules/vue": {\r
+ "version": "3.4.27",\r
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz",\r
+ "integrity": "sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==",\r
+ "dependencies": {\r
+ "@vue/compiler-dom": "3.4.27",\r
+ "@vue/compiler-sfc": "3.4.27",\r
+ "@vue/runtime-dom": "3.4.27",\r
+ "@vue/server-renderer": "3.4.27",\r
+ "@vue/shared": "3.4.27"\r
+ },\r
+ "peerDependencies": {\r
+ "typescript": "*"\r
+ },\r
+ "peerDependenciesMeta": {\r
+ "typescript": {\r
+ "optional": true\r
+ }\r
+ }\r
+ },\r
+ "node_modules/vue-router": {\r
+ "version": "4.3.2",\r
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz",\r
+ "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==",\r
+ "dependencies": {\r
+ "@vue/devtools-api": "^6.5.1"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/sponsors/posva"\r
+ },\r
+ "peerDependencies": {\r
+ "vue": "^3.2.0"\r
+ }\r
+ },\r
+ "node_modules/w3c-keyname": {\r
+ "version": "2.2.8",\r
+ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",\r
+ "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="\r
+ },\r
+ "node_modules/which": {\r
+ "version": "2.0.2",\r
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",\r
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "isexe": "^2.0.0"\r
+ },\r
+ "bin": {\r
+ "node-which": "bin/node-which"\r
+ },\r
+ "engines": {\r
+ "node": ">= 8"\r
+ }\r
+ },\r
+ "node_modules/wrap-ansi": {\r
+ "version": "8.1.0",\r
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",\r
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "ansi-styles": "^6.1.0",\r
+ "string-width": "^5.0.1",\r
+ "strip-ansi": "^7.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=12"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"\r
+ }\r
+ },\r
+ "node_modules/wrap-ansi-cjs": {\r
+ "name": "wrap-ansi",\r
+ "version": "7.0.0",\r
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",\r
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "ansi-styles": "^4.0.0",\r
+ "string-width": "^4.1.0",\r
+ "strip-ansi": "^6.0.0"\r
+ },\r
+ "engines": {\r
+ "node": ">=10"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"\r
+ }\r
+ },\r
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {\r
+ "version": "5.0.1",\r
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",\r
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",\r
+ "dev": true,\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {\r
+ "version": "4.3.0",\r
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",\r
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "color-convert": "^2.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ },\r
+ "funding": {\r
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"\r
+ }\r
+ },\r
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {\r
+ "version": "8.0.0",\r
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",\r
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",\r
+ "dev": true\r
+ },\r
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {\r
+ "version": "4.2.3",\r
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",\r
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "emoji-regex": "^8.0.0",\r
+ "is-fullwidth-code-point": "^3.0.0",\r
+ "strip-ansi": "^6.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {\r
+ "version": "6.0.1",\r
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",\r
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",\r
+ "dev": true,\r
+ "dependencies": {\r
+ "ansi-regex": "^5.0.1"\r
+ },\r
+ "engines": {\r
+ "node": ">=8"\r
+ }\r
+ },\r
+ "node_modules/yaml": {\r
+ "version": "2.4.1",\r
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz",\r
+ "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==",\r
+ "dev": true,\r
+ "bin": {\r
+ "yaml": "bin.mjs"\r
+ },\r
+ "engines": {\r
+ "node": ">= 14"\r
+ }\r
+ }\r
+ }\r
+}\r
-import glob
-import os
-import re
-import shutil
-from datetime import datetime
-from typing import List, Literal, Set, Tuple
-
-import whoosh
-from whoosh import writing
-from whoosh.analysis import CharsetFilter, StemmingAnalyzer
-from whoosh.fields import DATETIME, ID, KEYWORD, TEXT, SchemaClass
-from whoosh.highlight import ContextFragmenter, WholeFragmenter
-from whoosh.index import Index
-from whoosh.qparser import MultifieldParser
-from whoosh.qparser.dateparse import DateParserPlugin
-from whoosh.query import Every
-from whoosh.searching import Hit
-from whoosh.support.charset import accent_map
-
-from helpers import get_env, is_valid_filename
-from logger import logger
-
-from ..base import BaseNotes
-from ..models import Note, NoteCreate, NoteUpdate, SearchResult
-
-MARKDOWN_EXT = ".md"
-INDEX_SCHEMA_VERSION = "4"
-
-StemmingFoldingAnalyzer = StemmingAnalyzer() | CharsetFilter(accent_map)
-
-
-class IndexSchema(SchemaClass):
- filename = ID(unique=True, stored=True)
- last_modified = DATETIME(stored=True, sortable=True)
- title = TEXT(
- field_boost=2.0, analyzer=StemmingFoldingAnalyzer, sortable=True
- )
- content = TEXT(analyzer=StemmingFoldingAnalyzer)
- tags = KEYWORD(lowercase=True, field_boost=2.0)
-
-
-class FileSystemNotes(BaseNotes):
- TAGS_RE = re.compile(r"(?:(?<=^#)|(?<=\s#))\w+(?=\s|$)")
- CODEBLOCK_RE = re.compile(r"`{1,3}.*?`{1,3}", re.DOTALL)
- TAGS_WITH_HASH_RE = re.compile(r"(?:(?<=^)|(?<=\s))#\w+(?=\s|$)")
-
- def __init__(self):
- self.storage_path = get_env("FLATNOTES_PATH", mandatory=True)
- if not os.path.exists(self.storage_path):
- raise NotADirectoryError(
- f"'{self.storage_path}' is not a valid directory."
- )
- self.index = self._load_index()
- self._sync_index()
-
- def create(self, data: NoteCreate) -> Note:
- """Create a new note."""
- filepath = self._path_from_title(data.title)
- self._write_file(filepath, data.content)
- return Note(
- title=data.title,
- content=data.content,
- last_modified=os.path.getmtime(filepath),
- )
-
- def get(self, title: str) -> Note:
- """Get a specific note."""
- is_valid_filename(title)
- filepath = self._path_from_title(title)
- content = self._read_file(filepath)
- return Note(
- title=title,
- content=content,
- last_modified=os.path.getmtime(filepath),
- )
-
- def update(self, title: str, data: NoteUpdate) -> Note:
- """Update a specific note."""
- is_valid_filename(title)
- filepath = self._path_from_title(title)
- if data.new_title is not None:
- new_filepath = self._path_from_title(data.new_title)
- if filepath != new_filepath and os.path.isfile(new_filepath):
- raise FileExistsError(
- f"Failed to rename. '{data.new_title}' already exists."
- )
- os.rename(filepath, new_filepath)
- title = data.new_title
- filepath = new_filepath
- if data.new_content is not None:
- self._write_file(filepath, data.new_content, overwrite=True)
- content = data.new_content
- else:
- content = self._read_file(filepath)
- return Note(
- title=title,
- content=content,
- last_modified=os.path.getmtime(filepath),
- )
-
- def delete(self, title: str) -> None:
- """Delete a specific note."""
- is_valid_filename(title)
- filepath = self._path_from_title(title)
- os.remove(filepath)
-
- def search(
- self,
- term: str,
- sort: Literal["score", "title", "last_modified"] = "score",
- order: Literal["asc", "desc"] = "desc",
- limit: int = None,
- ) -> Tuple[SearchResult, ...]:
- """Search the index for the given term."""
- self._sync_index()
- term = self._pre_process_search_term(term)
- with self.index.searcher() as searcher:
- # Parse Query
- if term == "*":
- query = Every()
- else:
- parser = MultifieldParser(
- self._fieldnames_for_term(term), self.index.schema
- )
- parser.add_plugin(DateParserPlugin())
- query = parser.parse(term)
-
- # Determine Sort By
- # Note: For the 'sort' option, "score" is converted to None as
- # that is the default for searches anyway and it's quicker for
- # Whoosh if you specify None.
- sort = sort if sort in ["title", "last_modified"] else None
-
- # Determine Sort Direction
- # Note: Confusingly, when sorting by 'score', reverse = True means
- # asc so we have to flip the logic for that case!
- reverse = order == "desc"
- if sort is None:
- reverse = not reverse
-
- # Run Search
- results = searcher.search(
- query,
- sortedby=sort,
- reverse=reverse,
- limit=limit,
- terms=True,
- )
- return tuple(self._search_result_from_hit(hit) for hit in results)
-
- def get_tags(self) -> list[str]:
- """Return a list of all indexed tags."""
- self._sync_index()
- with self.index.reader() as reader:
- tags = reader.field_terms("tags")
- return [tag for tag in tags]
-
- @property
- def _index_path(self):
- return os.path.join(self.storage_path, ".flatnotes")
-
- def _path_from_title(self, title: str) -> str:
- return os.path.join(self.storage_path, title + MARKDOWN_EXT)
-
- def _get_by_filename(self, filename: str) -> Note:
- """Get a note by its filename."""
- return self.get(self._strip_ext(filename))
-
- def _load_index(self) -> Index:
- """Load the note index or create new if not exists."""
- index_dir_exists = os.path.exists(self._index_path)
- if index_dir_exists and whoosh.index.exists_in(
- self._index_path, indexname=INDEX_SCHEMA_VERSION
- ):
- logger.info("Loading existing index")
- return whoosh.index.open_dir(
- self._index_path, indexname=INDEX_SCHEMA_VERSION
- )
- else:
- if index_dir_exists:
- logger.info("Deleting outdated index")
- self._clear_dir(self._index_path)
- else:
- os.mkdir(self._index_path)
- logger.info("Creating new index")
- return whoosh.index.create_in(
- self._index_path, IndexSchema, indexname=INDEX_SCHEMA_VERSION
- )
-
- @classmethod
- def _extract_tags(cls, content) -> Tuple[str, Set[str]]:
- """Strip tags from the given content and return a tuple consisting of:
-
- - The content without the tags.
- - A set of tags converted to lowercase."""
- content_ex_codeblock = re.sub(cls.CODEBLOCK_RE, "", content)
- _, tags = cls._re_extract(cls.TAGS_RE, content_ex_codeblock)
- content_ex_tags, _ = cls._re_extract(cls.TAGS_RE, content)
- try:
- tags = [tag.lower() for tag in tags]
- return (content_ex_tags, set(tags))
- except IndexError:
- return (content, set())
-
- def _add_note_to_index(
- self, writer: writing.IndexWriter, note: Note
- ) -> None:
- """Add a Note object to the index using the given writer. If the
- filename already exists in the index an update will be performed
- instead."""
- content_ex_tags, tag_set = self._extract_tags(note.content)
- tag_string = " ".join(tag_set)
- writer.update_document(
- filename=note.title + MARKDOWN_EXT,
- last_modified=datetime.fromtimestamp(note.last_modified),
- title=note.title,
- content=content_ex_tags,
- tags=tag_string,
- )
-
- def _list_all_note_filenames(self) -> List[str]:
- """Return a list of all note filenames."""
- return [
- os.path.split(filepath)[1]
- for filepath in glob.glob(
- os.path.join(self.storage_path, "*" + MARKDOWN_EXT)
- )
- ]
-
- def _sync_index(self, clean: bool = False) -> None:
- """Synchronize the index with the notes directory.
- Specify clean=True to completely rebuild the index"""
- indexed = set()
- writer = self.index.writer()
- if clean:
- writer.mergetype = writing.CLEAR # Clear the index
- with self.index.searcher() as searcher:
- for idx_note in searcher.all_stored_fields():
- idx_filename = idx_note["filename"]
- idx_filepath = os.path.join(self.storage_path, idx_filename)
- # Delete missing
- if not os.path.exists(idx_filepath):
- writer.delete_by_term("filename", idx_filename)
- logger.info(f"'{idx_filename}' removed from index")
- # Update modified
- elif (
- datetime.fromtimestamp(os.path.getmtime(idx_filepath))
- != idx_note["last_modified"]
- ):
- logger.info(f"'{idx_filename}' updated")
- self._add_note_to_index(
- writer, self._get_by_filename(idx_filename)
- )
- indexed.add(idx_filename)
- # Ignore already indexed
- else:
- indexed.add(idx_filename)
- # Add new
- for filename in self._list_all_note_filenames():
- if filename not in indexed:
- self._add_note_to_index(
- writer, self._get_by_filename(filename)
- )
- logger.info(f"'{filename}' added to index")
- writer.commit()
-
- @classmethod
- def _pre_process_search_term(cls, term):
- term = term.strip()
- # Replace "#tagname" with "tags:tagname"
- term = re.sub(
- cls.TAGS_WITH_HASH_RE,
- lambda tag: "tags:" + tag.group(0)[1:],
- term,
- )
- return term
-
- @staticmethod
- def _re_extract(pattern, string) -> Tuple[str, List[str]]:
- """Similar to re.sub but returns a tuple of:
-
- - `string` with matches removed
- - list of matches"""
- matches = []
- text = re.sub(pattern, lambda tag: matches.append(tag.group()), string)
- return (text, matches)
-
- @staticmethod
- def _strip_ext(filename):
- """Return the given filename without the extension."""
- return os.path.splitext(filename)[0]
-
- @staticmethod
- def _clear_dir(path):
- """Delete all contents of the given directory."""
- for item in os.listdir(path):
- item_path = os.path.join(path, item)
- if os.path.isfile(item_path):
- os.remove(item_path)
- elif os.path.isdir(item_path):
- shutil.rmtree(item_path)
-
- def _search_result_from_hit(self, hit: Hit):
- matched_fields = self._get_matched_fields(hit.matched_terms())
-
- title = self._strip_ext(hit["filename"])
- last_modified = hit["last_modified"].timestamp()
-
- # If the search was ordered using a text field then hit.score is the
- # value of that field. This isn't useful so only set self._score if it
- # is a float.
- score = hit.score if type(hit.score) is float else None
-
- if "title" in matched_fields:
- hit.results.fragmenter = WholeFragmenter()
- title_highlights = hit.highlights("title", text=title)
- else:
- title_highlights = None
-
- if "content" in matched_fields:
- hit.results.fragmenter = ContextFragmenter()
- content = self._read_file(self._path_from_title(title))
- content_ex_tags, _ = FileSystemNotes._extract_tags(content)
- content_highlights = hit.highlights(
- "content",
- text=content_ex_tags,
- )
- else:
- content_highlights = None
-
- tag_matches = (
- [field[1] for field in hit.matched_terms() if field[0] == "tags"]
- if "tags" in matched_fields
- else None
- )
-
- return SearchResult(
- title=title,
- last_modified=last_modified,
- score=score,
- title_highlights=title_highlights,
- content_highlights=content_highlights,
- tag_matches=tag_matches,
- )
-
- def _fieldnames_for_term(self, term: str) -> List[str]:
- """Return a list of field names to search based on the given term. If
- the term includes a phrase then only search title and content. If the
- term does not include a phrase then also search tags."""
- fields = ["title", "content"]
- if '"' not in term:
- # If the term does not include a phrase then also search tags
- fields.append("tags")
- return fields
-
- @staticmethod
- def _get_matched_fields(matched_terms):
- """Return a set of matched fields from a set of ('field', 'term') "
- "tuples generated by whoosh.searching.Hit.matched_terms()."""
- return set([matched_term[0] for matched_term in matched_terms])
-
- @staticmethod
- def _read_file(filepath: str):
- logger.debug(f"Reading from '{filepath}'")
- with open(filepath, "r") as f:
- content = f.read()
- return content
-
- @staticmethod
- def _write_file(filepath: str, content: str, overwrite: bool = False):
- logger.debug(f"Writing to '{filepath}'")
- with open(filepath, "w" if overwrite else "x") as f:
- f.write(content)
+import glob\r
+import os\r
+import re\r
+import shutil\r
+import time\r
+from datetime import datetime\r
+from typing import List, Literal, Set, Tuple\r
+\r
+import whoosh\r
+from whoosh import writing\r
+from whoosh.analysis import CharsetFilter, StemmingAnalyzer\r
+from whoosh.fields import DATETIME, ID, KEYWORD, TEXT, SchemaClass\r
+from whoosh.highlight import ContextFragmenter, WholeFragmenter\r
+from whoosh.index import Index, LockError\r
+from whoosh.qparser import MultifieldParser\r
+from whoosh.qparser.dateparse import DateParserPlugin\r
+from whoosh.query import Every\r
+from whoosh.searching import Hit\r
+from whoosh.support.charset import accent_map\r
+\r
+from helpers import get_env, is_valid_filename\r
+from logger import logger\r
+\r
+from ..base import BaseNotes\r
+from ..models import Note, NoteCreate, NoteUpdate, SearchResult\r
+\r
+MARKDOWN_EXT = ".md"\r
+INDEX_SCHEMA_VERSION = "4"\r
+\r
+StemmingFoldingAnalyzer = StemmingAnalyzer() | CharsetFilter(accent_map)\r
+\r
+\r
+class IndexSchema(SchemaClass):\r
+ filename = ID(unique=True, stored=True)\r
+ last_modified = DATETIME(stored=True, sortable=True)\r
+ title = TEXT(\r
+ field_boost=2.0, analyzer=StemmingFoldingAnalyzer, sortable=True\r
+ )\r
+ content = TEXT(analyzer=StemmingFoldingAnalyzer)\r
+ tags = KEYWORD(lowercase=True, field_boost=2.0)\r
+\r
+\r
+class FileSystemNotes(BaseNotes):\r
+ TAGS_RE = re.compile(r"(?:(?<=^#)|(?<=\s#))\w+(?=\s|$)")\r
+ CODEBLOCK_RE = re.compile(r"`{1,3}.*?`{1,3}", re.DOTALL)\r
+ TAGS_WITH_HASH_RE = re.compile(r"(?:(?<=^)|(?<=\s))#\w+(?=\s|$)")\r
+\r
+ def __init__(self):\r
+ self.storage_path = get_env("FLATNOTES_PATH", mandatory=True)\r
+ if not os.path.exists(self.storage_path):\r
+ raise NotADirectoryError(\r
+ f"'{self.storage_path}' is not a valid directory."\r
+ )\r
+ self.index = self._load_index()\r
+ self._sync_index_with_retry(optimize=True)\r
+\r
+ def create(self, data: NoteCreate) -> Note:\r
+ """Create a new note."""\r
+ filepath = self._path_from_title(data.title)\r
+ self._write_file(filepath, data.content)\r
+ return Note(\r
+ title=data.title,\r
+ content=data.content,\r
+ last_modified=os.path.getmtime(filepath),\r
+ )\r
+\r
+ def get(self, title: str) -> Note:\r
+ """Get a specific note."""\r
+ is_valid_filename(title)\r
+ filepath = self._path_from_title(title)\r
+ content = self._read_file(filepath)\r
+ return Note(\r
+ title=title,\r
+ content=content,\r
+ last_modified=os.path.getmtime(filepath),\r
+ )\r
+\r
+ def update(self, title: str, data: NoteUpdate) -> Note:\r
+ """Update a specific note."""\r
+ is_valid_filename(title)\r
+ filepath = self._path_from_title(title)\r
+ if data.new_title is not None:\r
+ new_filepath = self._path_from_title(data.new_title)\r
++ if filepath != new_filepath and os.path.isfile(new_filepath):\r
++ raise FileExistsError(\r
++ f"Failed to rename. '{data.new_title}' already exists."\r
++ )\r
+ os.rename(filepath, new_filepath)\r
+ title = data.new_title\r
+ filepath = new_filepath\r
+ if data.new_content is not None:\r
+ self._write_file(filepath, data.new_content, overwrite=True)\r
+ content = data.new_content\r
+ else:\r
+ content = self._read_file(filepath)\r
+ return Note(\r
+ title=title,\r
+ content=content,\r
+ last_modified=os.path.getmtime(filepath),\r
+ )\r
+\r
+ def delete(self, title: str) -> None:\r
+ """Delete a specific note."""\r
+ is_valid_filename(title)\r
+ filepath = self._path_from_title(title)\r
+ os.remove(filepath)\r
+\r
+ def search(\r
+ self,\r
+ term: str,\r
+ sort: Literal["score", "title", "last_modified"] = "score",\r
+ order: Literal["asc", "desc"] = "desc",\r
+ limit: int = None,\r
+ ) -> Tuple[SearchResult, ...]:\r
+ """Search the index for the given term."""\r
+ self._sync_index_with_retry()\r
+ term = self._pre_process_search_term(term)\r
+ with self.index.searcher() as searcher:\r
+ # Parse Query\r
+ if term == "*":\r
+ query = Every()\r
+ else:\r
+ parser = MultifieldParser(\r
+ self._fieldnames_for_term(term), self.index.schema\r
+ )\r
+ parser.add_plugin(DateParserPlugin())\r
+ query = parser.parse(term)\r
+\r
+ # Determine Sort By\r
+ # Note: For the 'sort' option, "score" is converted to None as\r
+ # that is the default for searches anyway and it's quicker for\r
+ # Whoosh if you specify None.\r
+ sort = sort if sort in ["title", "last_modified"] else None\r
+\r
+ # Determine Sort Direction\r
+ # Note: Confusingly, when sorting by 'score', reverse = True means\r
+ # asc so we have to flip the logic for that case!\r
+ reverse = order == "desc"\r
+ if sort is None:\r
+ reverse = not reverse\r
+\r
+ # Run Search\r
+ results = searcher.search(\r
+ query,\r
+ sortedby=sort,\r
+ reverse=reverse,\r
+ limit=limit,\r
+ terms=True,\r
+ )\r
+ return tuple(self._search_result_from_hit(hit) for hit in results)\r
+\r
+ def get_tags(self) -> list[str]:\r
+ """Return a list of all indexed tags. Note: Tags no longer in use will\r
+ only be cleared when the index is next optimized."""\r
+ self._sync_index_with_retry()\r
+ with self.index.reader() as reader:\r
+ tags = reader.field_terms("tags")\r
+ return [tag for tag in tags]\r
+\r
+ @property\r
+ def _index_path(self):\r
+ return os.path.join(self.storage_path, ".flatnotes")\r
+\r
+ def _path_from_title(self, title: str) -> str:\r
+ return os.path.join(self.storage_path, title + MARKDOWN_EXT)\r
+\r
+ def _get_by_filename(self, filename: str) -> Note:\r
+ """Get a note by its filename."""\r
+ return self.get(self._strip_ext(filename))\r
+\r
+ def _load_index(self) -> Index:\r
+ """Load the note index or create new if not exists."""\r
+ index_dir_exists = os.path.exists(self._index_path)\r
+ if index_dir_exists and whoosh.index.exists_in(\r
+ self._index_path, indexname=INDEX_SCHEMA_VERSION\r
+ ):\r
+ logger.info("Loading existing index")\r
+ return whoosh.index.open_dir(\r
+ self._index_path, indexname=INDEX_SCHEMA_VERSION\r
+ )\r
+ else:\r
+ if index_dir_exists:\r
+ logger.info("Deleting outdated index")\r
+ self._clear_dir(self._index_path)\r
+ else:\r
+ os.mkdir(self._index_path)\r
+ logger.info("Creating new index")\r
+ return whoosh.index.create_in(\r
+ self._index_path, IndexSchema, indexname=INDEX_SCHEMA_VERSION\r
+ )\r
+\r
+ @classmethod\r
+ def _extract_tags(cls, content) -> Tuple[str, Set[str]]:\r
+ """Strip tags from the given content and return a tuple consisting of:\r
+\r
+ - The content without the tags.\r
+ - A set of tags converted to lowercase."""\r
+ content_ex_codeblock = re.sub(cls.CODEBLOCK_RE, "", content)\r
+ _, tags = cls._re_extract(cls.TAGS_RE, content_ex_codeblock)\r
+ content_ex_tags, _ = cls._re_extract(cls.TAGS_RE, content)\r
+ try:\r
+ tags = [tag.lower() for tag in tags]\r
+ return (content_ex_tags, set(tags))\r
+ except IndexError:\r
+ return (content, set())\r
+\r
+ def _add_note_to_index(\r
+ self, writer: writing.IndexWriter, note: Note\r
+ ) -> None:\r
+ """Add a Note object to the index using the given writer. If the\r
+ filename already exists in the index an update will be performed\r
+ instead."""\r
+ content_ex_tags, tag_set = self._extract_tags(note.content)\r
+ tag_string = " ".join(tag_set)\r
+ writer.update_document(\r
+ filename=note.title + MARKDOWN_EXT,\r
+ last_modified=datetime.fromtimestamp(note.last_modified),\r
+ title=note.title,\r
+ content=content_ex_tags,\r
+ tags=tag_string,\r
+ )\r
+\r
+ def _list_all_note_filenames(self) -> List[str]:\r
+ """Return a list of all note filenames."""\r
+ return [\r
+ os.path.split(filepath)[1]\r
+ for filepath in glob.glob(\r
+ os.path.join(self.storage_path, "*" + MARKDOWN_EXT)\r
+ )\r
+ ]\r
+\r
+ def _sync_index(self, optimize: bool = False, clean: bool = False) -> None:\r
+ """Synchronize the index with the notes directory.\r
+ Specify clean=True to completely rebuild the index"""\r
+ indexed = set()\r
+ writer = self.index.writer()\r
+ if clean:\r
+ writer.mergetype = writing.CLEAR # Clear the index\r
+ with self.index.searcher() as searcher:\r
+ for idx_note in searcher.all_stored_fields():\r
+ idx_filename = idx_note["filename"]\r
+ idx_filepath = os.path.join(self.storage_path, idx_filename)\r
+ # Delete missing\r
+ if not os.path.exists(idx_filepath):\r
+ writer.delete_by_term("filename", idx_filename)\r
+ logger.info(f"'{idx_filename}' removed from index")\r
+ # Update modified\r
+ elif (\r
+ datetime.fromtimestamp(os.path.getmtime(idx_filepath))\r
+ != idx_note["last_modified"]\r
+ ):\r
+ logger.info(f"'{idx_filename}' updated")\r
+ self._add_note_to_index(\r
+ writer, self._get_by_filename(idx_filename)\r
+ )\r
+ indexed.add(idx_filename)\r
+ # Ignore already indexed\r
+ else:\r
+ indexed.add(idx_filename)\r
+ # Add new\r
+ for filename in self._list_all_note_filenames():\r
+ if filename not in indexed:\r
+ self._add_note_to_index(\r
+ writer, self._get_by_filename(filename)\r
+ )\r
+ logger.info(f"'{filename}' added to index")\r
+ writer.commit(optimize=optimize)\r
+ logger.info("Index synchronized")\r
+\r
+ def _sync_index_with_retry(\r
+ self,\r
+ optimize: bool = False,\r
+ clean: bool = False,\r
+ max_retries: int = 8,\r
+ retry_delay: float = 0.25,\r
+ ) -> None:\r
+ for _ in range(max_retries):\r
+ try:\r
+ self._sync_index(optimize=optimize, clean=clean)\r
+ return\r
+ except LockError:\r
+ logger.warning(f"Index locked, retrying in {retry_delay}s")\r
+ time.sleep(retry_delay)\r
+ logger.error(f"Failed to sync index after {max_retries} retries")\r
+\r
+ @classmethod\r
+ def _pre_process_search_term(cls, term):\r
+ term = term.strip()\r
+ # Replace "#tagname" with "tags:tagname"\r
+ term = re.sub(\r
+ cls.TAGS_WITH_HASH_RE,\r
+ lambda tag: "tags:" + tag.group(0)[1:],\r
+ term,\r
+ )\r
+ return term\r
+\r
+ @staticmethod\r
+ def _re_extract(pattern, string) -> Tuple[str, List[str]]:\r
+ """Similar to re.sub but returns a tuple of:\r
+\r
+ - `string` with matches removed\r
+ - list of matches"""\r
+ matches = []\r
+ text = re.sub(pattern, lambda tag: matches.append(tag.group()), string)\r
+ return (text, matches)\r
+\r
+ @staticmethod\r
+ def _strip_ext(filename):\r
+ """Return the given filename without the extension."""\r
+ return os.path.splitext(filename)[0]\r
+\r
+ @staticmethod\r
+ def _clear_dir(path):\r
+ """Delete all contents of the given directory."""\r
+ for item in os.listdir(path):\r
+ item_path = os.path.join(path, item)\r
+ if os.path.isfile(item_path):\r
+ os.remove(item_path)\r
+ elif os.path.isdir(item_path):\r
+ shutil.rmtree(item_path)\r
+\r
+ def _search_result_from_hit(self, hit: Hit):\r
+ matched_fields = self._get_matched_fields(hit.matched_terms())\r
+\r
+ title = self._strip_ext(hit["filename"])\r
+ last_modified = hit["last_modified"].timestamp()\r
+\r
+ # If the search was ordered using a text field then hit.score is the\r
+ # value of that field. This isn't useful so only set self._score if it\r
+ # is a float.\r
+ score = hit.score if type(hit.score) is float else None\r
+\r
+ if "title" in matched_fields:\r
+ hit.results.fragmenter = WholeFragmenter()\r
+ title_highlights = hit.highlights("title", text=title)\r
+ else:\r
+ title_highlights = None\r
+\r
+ if "content" in matched_fields:\r
+ hit.results.fragmenter = ContextFragmenter()\r
+ content = self._read_file(self._path_from_title(title))\r
+ content_ex_tags, _ = FileSystemNotes._extract_tags(content)\r
+ content_highlights = hit.highlights(\r
+ "content",\r
+ text=content_ex_tags,\r
+ )\r
+ else:\r
+ content_highlights = None\r
+\r
+ tag_matches = (\r
+ [field[1] for field in hit.matched_terms() if field[0] == "tags"]\r
+ if "tags" in matched_fields\r
+ else None\r
+ )\r
+\r
+ return SearchResult(\r
+ title=title,\r
+ last_modified=last_modified,\r
+ score=score,\r
+ title_highlights=title_highlights,\r
+ content_highlights=content_highlights,\r
+ tag_matches=tag_matches,\r
+ )\r
+\r
+ def _fieldnames_for_term(self, term: str) -> List[str]:\r
+ """Return a list of field names to search based on the given term. If\r
+ the term includes a phrase then only search title and content. If the\r
+ term does not include a phrase then also search tags."""\r
+ fields = ["title", "content"]\r
+ if '"' not in term:\r
+ # If the term does not include a phrase then also search tags\r
+ fields.append("tags")\r
+ return fields\r
+\r
+ @staticmethod\r
+ def _get_matched_fields(matched_terms):\r
+ """Return a set of matched fields from a set of ('field', 'term') "\r
+ "tuples generated by whoosh.searching.Hit.matched_terms()."""\r
+ return set([matched_term[0] for matched_term in matched_terms])\r
+\r
+ @staticmethod\r
+ def _read_file(filepath: str):\r
+ logger.debug(f"Reading from '{filepath}'")\r
+ with open(filepath, "r") as f:\r
+ content = f.read()\r
+ return content\r
+\r
+ @staticmethod\r
+ def _write_file(filepath: str, content: str, overwrite: bool = False):\r
+ logger.debug(f"Writing to '{filepath}'")\r
+ with open(filepath, "w" if overwrite else "x") as f:\r
+ f.write(content)\r