Jacky Zhao
2024-01-28 efdce070e1cea59d52d9f3bf47d468890658eceb
package-lock.json
@@ -11,14 +11,14 @@
      "dependencies": {
        "@clack/prompts": "^0.7.0",
        "@floating-ui/dom": "^1.5.3",
        "@napi-rs/simple-git": "0.1.9",
        "@napi-rs/simple-git": "0.1.11",
        "async-mutex": "^0.4.0",
        "chalk": "^5.3.0",
        "chokidar": "^3.5.3",
        "cli-spinner": "^0.2.10",
        "d3": "^7.8.5",
        "esbuild-sass-plugin": "^2.16.0",
        "flexsearch": "0.7.21",
        "flexsearch": "0.7.43",
        "github-slugger": "^2.0.0",
        "globby": "^14.0.0",
        "gray-matter": "^4.0.3",
@@ -39,7 +39,7 @@
        "reading-time": "^1.5.0",
        "rehype-autolink-headings": "^7.1.0",
        "rehype-katex": "^7.0.0",
        "rehype-mathjax": "^5.0.0",
        "rehype-mathjax": "^6.0.0",
        "rehype-pretty-code": "^0.12.6",
        "rehype-raw": "^7.0.0",
        "rehype-slug": "^6.0.0",
@@ -54,7 +54,7 @@
        "rfdc": "^1.3.0",
        "rimraf": "^5.0.5",
        "serve-handler": "^6.1.5",
        "shikiji": "^0.9.9",
        "shikiji": "^0.10.2",
        "source-map-support": "^0.5.21",
        "to-vfile": "^8.0.0",
        "toml": "^3.0.0",
@@ -71,7 +71,6 @@
      "devDependencies": {
        "@types/cli-spinner": "^0.2.3",
        "@types/d3": "^7.4.3",
        "@types/flexsearch": "^0.7.3",
        "@types/hast": "^3.0.3",
        "@types/js-yaml": "^4.0.9",
        "@types/node": "^20.1.2",
@@ -90,6 +89,16 @@
        "npm": ">=9.3.1"
      }
    },
    "node_modules/@asamuzakjp/dom-selector": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz",
      "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==",
      "dependencies": {
        "bidi-js": "^1.0.3",
        "css-tree": "^2.3.1",
        "is-potential-custom-element-name": "^1.0.1"
      }
    },
    "node_modules/@clack/core": {
      "version": "0.3.3",
      "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.3.3.tgz",
@@ -508,30 +517,30 @@
      }
    },
    "node_modules/@napi-rs/simple-git": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git/-/simple-git-0.1.9.tgz",
      "integrity": "sha512-qKzDS0+VjMvVyU28px+C6zlD1HKy83NIdYzfMQWa/g/V1iG/Ic8uwrS2ihHfm7mp7X0PPrmINLiTTi6ieUIKfw==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git/-/simple-git-0.1.11.tgz",
      "integrity": "sha512-z14cPCBrtDKKVJ3q4GS5gmXEithGUAt+U8sICgA9i3UFdxJKD4H5rCnO7BVC3htdE9g6OR2w2IcHAL56AjpFbg==",
      "engines": {
        "node": ">= 10"
      },
      "optionalDependencies": {
        "@napi-rs/simple-git-android-arm-eabi": "0.1.9",
        "@napi-rs/simple-git-android-arm64": "0.1.9",
        "@napi-rs/simple-git-darwin-arm64": "0.1.9",
        "@napi-rs/simple-git-darwin-x64": "0.1.9",
        "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.9",
        "@napi-rs/simple-git-linux-arm64-gnu": "0.1.9",
        "@napi-rs/simple-git-linux-arm64-musl": "0.1.9",
        "@napi-rs/simple-git-linux-x64-gnu": "0.1.9",
        "@napi-rs/simple-git-linux-x64-musl": "0.1.9",
        "@napi-rs/simple-git-win32-arm64-msvc": "0.1.9",
        "@napi-rs/simple-git-win32-x64-msvc": "0.1.9"
        "@napi-rs/simple-git-android-arm-eabi": "0.1.11",
        "@napi-rs/simple-git-android-arm64": "0.1.11",
        "@napi-rs/simple-git-darwin-arm64": "0.1.11",
        "@napi-rs/simple-git-darwin-x64": "0.1.11",
        "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.11",
        "@napi-rs/simple-git-linux-arm64-gnu": "0.1.11",
        "@napi-rs/simple-git-linux-arm64-musl": "0.1.11",
        "@napi-rs/simple-git-linux-x64-gnu": "0.1.11",
        "@napi-rs/simple-git-linux-x64-musl": "0.1.11",
        "@napi-rs/simple-git-win32-arm64-msvc": "0.1.11",
        "@napi-rs/simple-git-win32-x64-msvc": "0.1.11"
      }
    },
    "node_modules/@napi-rs/simple-git-android-arm-eabi": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm-eabi/-/simple-git-android-arm-eabi-0.1.9.tgz",
      "integrity": "sha512-9D4JnfePMpgL4pg9aMUX7/TIWEUQ+Tgx8n3Pf8TNCMGjUbImJyYsDSLJzbcv9wH7srgn4GRjSizXFJHAPjzEug==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm-eabi/-/simple-git-android-arm-eabi-0.1.11.tgz",
      "integrity": "sha512-wt4Wu9MxvKzEqT4iwodFs7Nrc31K73gR5hM7VnlO6iLELmUQZ5JVJkYoFWgzLQWtzIC48W2+zFMbBgY6+F2rZg==",
      "cpu": [
        "arm"
      ],
@@ -544,9 +553,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-android-arm64": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm64/-/simple-git-android-arm64-0.1.9.tgz",
      "integrity": "sha512-Krilsw0gPrrASZzudNEl9pdLuNbhoTK0j7pUbfB8FRifpPdFB/zouwuEm0aSnsDXN4ftGrmGG82kuiR/2MeoPg==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm64/-/simple-git-android-arm64-0.1.11.tgz",
      "integrity": "sha512-5/Aj6N44CxwhV3TZWRZ4vGqFj4wb2/a2gwvUZJo9Dwik9Spls7As8LaLe7pOptiGPH0GRP3H5kTT7I6twHNgqw==",
      "cpu": [
        "arm64"
      ],
@@ -559,9 +568,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-darwin-arm64": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-arm64/-/simple-git-darwin-arm64-0.1.9.tgz",
      "integrity": "sha512-H/F09nDgYjv4gcFrZBgdTKkZEepqt0KLYcCJuUADuxkKupmjLdecMhypXLk13AzvLW4UQI7NlLTLDXUFLyr2BA==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-arm64/-/simple-git-darwin-arm64-0.1.11.tgz",
      "integrity": "sha512-vdVsJUNcRsGVu0hBmLZdxxgwIbJA/Ias8NKWze8MZkZ3VyBwhg0uAzFgESEL3/USAgeCCHjF3uwVki8E+iPq1w==",
      "cpu": [
        "arm64"
      ],
@@ -574,9 +583,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-darwin-x64": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-x64/-/simple-git-darwin-x64-0.1.9.tgz",
      "integrity": "sha512-jBR2xS9nVPqmHv0TWz874W0m/d453MGrMeLjB+boK5IPPLhg3AWIZj0aN9jy2Je1BGVAa0w3INIQJtBBeB6kFA==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-x64/-/simple-git-darwin-x64-0.1.11.tgz",
      "integrity": "sha512-ufVuZxyJ3LpApk3V101X9qYNX91fnQ4isulz9lWjg90U7Xz0Cav4J3yyFZy6B/cJpYxuiy49R8wV1xDtTeGThA==",
      "cpu": [
        "x64"
      ],
@@ -589,9 +598,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-linux-arm-gnueabihf": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm-gnueabihf/-/simple-git-linux-arm-gnueabihf-0.1.9.tgz",
      "integrity": "sha512-3n0+VpO4YfZxndZ0sCvsHIvsazd+JmbSjrlTRBCnJeAU1/sfos3skNZtKGZksZhjvd+3o+/GFM8L7Xnv01yggA==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm-gnueabihf/-/simple-git-linux-arm-gnueabihf-0.1.11.tgz",
      "integrity": "sha512-rFafW0Qc/j5we2ghUecB7mFzGcNDtJ5lTiB4I7kffNeL8pEi6Yi7kST8hylswcCowia65d45xsyeNp1mFlFwcg==",
      "cpu": [
        "arm"
      ],
@@ -604,9 +613,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-linux-arm64-gnu": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-gnu/-/simple-git-linux-arm64-gnu-0.1.9.tgz",
      "integrity": "sha512-lIzf0KHU2SKC12vMrWwCtysG2Sdt31VHRPMUiz9lD9t3xwVn8qhFSTn5yDkTeG3rgX6o0p5EKalfQN5BXsJq2w==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-gnu/-/simple-git-linux-arm64-gnu-0.1.11.tgz",
      "integrity": "sha512-HZ4yaqpj/FQ3V9qNQrTGhtXb7pLAARXeRJrwoaGfz3eZ069y2bHReFcNR//5bsVhZ18JaS9EV47F8WjDxtpI5g==",
      "cpu": [
        "arm64"
      ],
@@ -619,9 +628,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-linux-arm64-musl": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-musl/-/simple-git-linux-arm64-musl-0.1.9.tgz",
      "integrity": "sha512-KQozUoNXrxrB8k741ncWXSiMbjl1AGBGfZV21PANzUM8wH4Yem2bg3kfglYS/QIx3udspsT35I9abu49n7D1/w==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-musl/-/simple-git-linux-arm64-musl-0.1.11.tgz",
      "integrity": "sha512-b39lJiC3n2+Y6Exjx6qwHoBF++D3k2hN4mZZkvQCFSdLXJ2xtalCatSRWW3pt+mHOHMOgbGektL5v5BYq52hxw==",
      "cpu": [
        "arm64"
      ],
@@ -634,9 +643,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-linux-x64-gnu": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-gnu/-/simple-git-linux-x64-gnu-0.1.9.tgz",
      "integrity": "sha512-O/Niui5mnHPcK3iYC3ui8wgERtJWsQ3Y74W/09t0bL/3dgzGMl4oQt0qTj9dWCsnoGsIEYHPzwCBp/2vqYp/pw==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-gnu/-/simple-git-linux-x64-gnu-0.1.11.tgz",
      "integrity": "sha512-9EPFvY7PZg+oqWi6Jft5WgSsQtvy9Ey1g4NG+LG8y1RbvaNKthxKbR5zgx196pnFVdcLtsuIdOv/OaQlbcTXkw==",
      "cpu": [
        "x64"
      ],
@@ -649,9 +658,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-linux-x64-musl": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-musl/-/simple-git-linux-x64-musl-0.1.9.tgz",
      "integrity": "sha512-L9n+e8Wn3hKr3RsIdY8GaB+ry4xZ4BaGwyKExgoB8nDGQuRUY9oP6p0WA4hWfJvJnU1H6hvo36a5UFPReyBO7A==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-musl/-/simple-git-linux-x64-musl-0.1.11.tgz",
      "integrity": "sha512-doIt1lPYIGL3UthlEQjdM9s1Wv0v8bz8LVAgbzJMS+UpVZzArwLWkanAJCy1HjgMTUMiE3AVJqACKIF3EfW/TQ==",
      "cpu": [
        "x64"
      ],
@@ -664,9 +673,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-win32-arm64-msvc": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-arm64-msvc/-/simple-git-win32-arm64-msvc-0.1.9.tgz",
      "integrity": "sha512-Z6Ja/SZK+lMvRWaxj7wjnvSbAsGrH006sqZo8P8nxKUdZfkVvoCaAWr1r0cfkk2Z3aijLLtD+vKeXGlUPH6gGQ==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-arm64-msvc/-/simple-git-win32-arm64-msvc-0.1.11.tgz",
      "integrity": "sha512-TK3Uvj3Q72ebxfxDT/eLFt8sxCNHo20QMvqJ5BHt4zP1Y9Fl1DXSPRUKLBIhJd0nPcI45ZOMRiZyoT8joxAC9g==",
      "cpu": [
        "arm64"
      ],
@@ -679,9 +688,9 @@
      }
    },
    "node_modules/@napi-rs/simple-git-win32-x64-msvc": {
      "version": "0.1.9",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-x64-msvc/-/simple-git-win32-x64-msvc-0.1.9.tgz",
      "integrity": "sha512-VAZj1UvC+R2MjKOD3I/Y7dmQlHWAYy4omhReQJRpbCf+oGCBi9CWiIduGqeYEq723nLIKdxP7XjaO0wl1NnUww==",
      "version": "0.1.11",
      "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-x64-msvc/-/simple-git-win32-x64-msvc-0.1.11.tgz",
      "integrity": "sha512-XOgP6kFDXGmB2KCXFQEsCq70n/Do2h7W9o7qZu8APAD+Sc8JGKz4hKG7PKY2ot924v9nIoKSYbHnupnhXSoXkg==",
      "cpu": [
        "x64"
      ],
@@ -745,14 +754,6 @@
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/@tootallnate/once": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
      "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
      "engines": {
        "node": ">= 10"
      }
    },
    "node_modules/@types/cli-spinner": {
      "version": "0.2.3",
      "resolved": "https://registry.npmjs.org/@types/cli-spinner/-/cli-spinner-0.2.3.tgz",
@@ -1036,12 +1037,6 @@
        "@types/estree": "*"
      }
    },
    "node_modules/@types/flexsearch": {
      "version": "0.7.3",
      "resolved": "https://registry.npmjs.org/@types/flexsearch/-/flexsearch-0.7.3.tgz",
      "integrity": "sha512-HXwADeHEP4exXkCIwy2n1+i0f1ilP1ETQOH5KDOugjkTFZPntWo0Gr8stZOaebkxsdx+k0X/K6obU/+it07ocg==",
      "dev": true
    },
    "node_modules/@types/geojson": {
      "version": "7946.0.10",
      "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz",
@@ -1068,9 +1063,9 @@
      "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ=="
    },
    "node_modules/@types/mathjax": {
      "version": "0.0.37",
      "resolved": "https://registry.npmjs.org/@types/mathjax/-/mathjax-0.0.37.tgz",
      "integrity": "sha512-y0WSZBtBNQwcYipTU/BhgeFu1EZNlFvUNCmkMXV9kBQZq7/o5z82dNVyH3yy2Xv5zzeNeQoHSL4Xm06+EQiH+g=="
      "version": "0.0.40",
      "resolved": "https://registry.npmjs.org/@types/mathjax/-/mathjax-0.0.40.tgz",
      "integrity": "sha512-rHusx08LCg92WJxrsM3SPjvLTSvK5C+gealtSuhKbEOcUZfWlwigaFoPLf6Dfxhg4oryN5qP9Sj7zOQ4HYXINw=="
    },
    "node_modules/@types/mdast": {
      "version": "4.0.3",
@@ -1157,21 +1152,15 @@
      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
      "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
    },
    "node_modules/abab": {
      "version": "2.0.6",
      "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
      "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
      "deprecated": "Use your platform's native atob() and btoa() methods instead"
    },
    "node_modules/agent-base": {
      "version": "6.0.2",
      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
      "version": "7.1.0",
      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
      "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
      "dependencies": {
        "debug": "4"
        "debug": "^4.3.4"
      },
      "engines": {
        "node": ">= 6.0.0"
        "node": ">= 14"
      }
    },
    "node_modules/ansi-regex": {
@@ -1252,6 +1241,14 @@
      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
    },
    "node_modules/bidi-js": {
      "version": "1.0.3",
      "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
      "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
      "dependencies": {
        "require-from-string": "^2.0.2"
      }
    },
    "node_modules/binary-extensions": {
      "version": "2.2.0",
      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -1518,15 +1515,27 @@
        "node": ">= 8"
      }
    },
    "node_modules/css-tree": {
      "version": "2.3.1",
      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
      "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
      "dependencies": {
        "mdn-data": "2.0.30",
        "source-map-js": "^1.0.1"
      },
      "engines": {
        "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
      }
    },
    "node_modules/cssstyle": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz",
      "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==",
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz",
      "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==",
      "dependencies": {
        "rrweb-cssom": "^0.6.0"
      },
      "engines": {
        "node": ">=14"
        "node": ">=18"
      }
    },
    "node_modules/d3": {
@@ -1900,16 +1909,15 @@
      }
    },
    "node_modules/data-urls": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz",
      "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==",
      "version": "5.0.0",
      "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
      "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
      "dependencies": {
        "abab": "^2.0.6",
        "whatwg-mimetype": "^3.0.0",
        "whatwg-url": "^12.0.0"
        "whatwg-mimetype": "^4.0.0",
        "whatwg-url": "^14.0.0"
      },
      "engines": {
        "node": ">=14"
        "node": ">=18"
      }
    },
    "node_modules/debug": {
@@ -1992,18 +2000,6 @@
        "url": "https://github.com/sponsors/wooorm"
      }
    },
    "node_modules/domexception": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz",
      "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==",
      "deprecated": "Use your platform's native DOMException instead",
      "dependencies": {
        "webidl-conversions": "^7.0.0"
      },
      "engines": {
        "node": ">=12"
      }
    },
    "node_modules/eastasianwidth": {
      "version": "0.2.0",
      "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -2193,9 +2189,9 @@
      }
    },
    "node_modules/flexsearch": {
      "version": "0.7.21",
      "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.21.tgz",
      "integrity": "sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg=="
      "version": "0.7.43",
      "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.43.tgz",
      "integrity": "sha512-c5o/+Um8aqCSOXGcZoqZOm+NqtVwNsvVpWv6lfmSclU954O3wvQKxxK8zj74fPaSJbXpSLTs4PRhh+wnoCXnKg=="
    },
    "node_modules/foreground-child": {
      "version": "3.1.1",
@@ -2703,14 +2699,14 @@
      }
    },
    "node_modules/html-encoding-sniffer": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz",
      "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==",
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
      "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
      "dependencies": {
        "whatwg-encoding": "^2.0.0"
        "whatwg-encoding": "^3.1.1"
      },
      "engines": {
        "node": ">=12"
        "node": ">=18"
      }
    },
    "node_modules/html-void-elements": {
@@ -2723,28 +2719,27 @@
      }
    },
    "node_modules/http-proxy-agent": {
      "version": "5.0.0",
      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
      "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
      "version": "7.0.0",
      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz",
      "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==",
      "dependencies": {
        "@tootallnate/once": "2",
        "agent-base": "6",
        "debug": "4"
        "agent-base": "^7.1.0",
        "debug": "^4.3.4"
      },
      "engines": {
        "node": ">= 6"
        "node": ">= 14"
      }
    },
    "node_modules/https-proxy-agent": {
      "version": "5.0.1",
      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
      "version": "7.0.2",
      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
      "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
      "dependencies": {
        "agent-base": "6",
        "agent-base": "^7.0.2",
        "debug": "4"
      },
      "engines": {
        "node": ">= 6"
        "node": ">= 14"
      }
    },
    "node_modules/iconv-lite": {
@@ -2972,39 +2967,37 @@
      }
    },
    "node_modules/jsdom": {
      "version": "22.1.0",
      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz",
      "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==",
      "version": "23.2.0",
      "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz",
      "integrity": "sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==",
      "dependencies": {
        "abab": "^2.0.6",
        "cssstyle": "^3.0.0",
        "data-urls": "^4.0.0",
        "@asamuzakjp/dom-selector": "^2.0.1",
        "cssstyle": "^4.0.1",
        "data-urls": "^5.0.0",
        "decimal.js": "^10.4.3",
        "domexception": "^4.0.0",
        "form-data": "^4.0.0",
        "html-encoding-sniffer": "^3.0.0",
        "http-proxy-agent": "^5.0.0",
        "https-proxy-agent": "^5.0.1",
        "html-encoding-sniffer": "^4.0.0",
        "http-proxy-agent": "^7.0.0",
        "https-proxy-agent": "^7.0.2",
        "is-potential-custom-element-name": "^1.0.1",
        "nwsapi": "^2.2.4",
        "parse5": "^7.1.2",
        "rrweb-cssom": "^0.6.0",
        "saxes": "^6.0.0",
        "symbol-tree": "^3.2.4",
        "tough-cookie": "^4.1.2",
        "w3c-xmlserializer": "^4.0.0",
        "tough-cookie": "^4.1.3",
        "w3c-xmlserializer": "^5.0.0",
        "webidl-conversions": "^7.0.0",
        "whatwg-encoding": "^2.0.0",
        "whatwg-mimetype": "^3.0.0",
        "whatwg-url": "^12.0.1",
        "ws": "^8.13.0",
        "xml-name-validator": "^4.0.0"
        "whatwg-encoding": "^3.1.1",
        "whatwg-mimetype": "^4.0.0",
        "whatwg-url": "^14.0.0",
        "ws": "^8.16.0",
        "xml-name-validator": "^5.0.0"
      },
      "engines": {
        "node": ">=16"
        "node": ">=18"
      },
      "peerDependencies": {
        "canvas": "^2.5.0"
        "canvas": "^2.11.2"
      },
      "peerDependenciesMeta": {
        "canvas": {
@@ -3678,6 +3671,11 @@
        "url": "https://opencollective.com/unified"
      }
    },
    "node_modules/mdn-data": {
      "version": "2.0.30",
      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
      "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
    },
    "node_modules/merge2": {
      "version": "1.4.1",
      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -4347,11 +4345,6 @@
        "node": ">=0.10.0"
      }
    },
    "node_modules/nwsapi": {
      "version": "2.2.7",
      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz",
      "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ=="
    },
    "node_modules/parse-entities": {
      "version": "4.0.1",
      "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
@@ -4658,15 +4651,15 @@
      }
    },
    "node_modules/rehype-mathjax": {
      "version": "5.0.0",
      "resolved": "https://registry.npmjs.org/rehype-mathjax/-/rehype-mathjax-5.0.0.tgz",
      "integrity": "sha512-IRPgpSpwOq4JNn3efeTrbYDMmzjOKCTJtu1Wyo/+6nenyqwqIvlojYDczRILOeHa1HyCMYmqpdvfOovOVzDIGg==",
      "version": "6.0.0",
      "resolved": "https://registry.npmjs.org/rehype-mathjax/-/rehype-mathjax-6.0.0.tgz",
      "integrity": "sha512-SioRmn+0mRWtDc4QVKG9JG88bXhPazfhc11GQoQ68mwot2WWyfabyZ7tuJu3Z4LCf893wXkQTVTF8PUlntoDwA==",
      "dependencies": {
        "@types/hast": "^3.0.0",
        "@types/mathjax": "^0.0.37",
        "@types/mathjax": "^0.0.40",
        "hast-util-from-dom": "^5.0.0",
        "hast-util-to-text": "^4.0.0",
        "jsdom": "^22.0.0",
        "jsdom": "^23.0.0",
        "mathjax-full": "^3.0.0",
        "unified": "^11.0.0",
        "unist-util-visit-parents": "^6.0.0"
@@ -4925,6 +4918,14 @@
        "node": ">=0.10.0"
      }
    },
    "node_modules/require-from-string": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/requires-port": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
@@ -5327,17 +5328,17 @@
      }
    },
    "node_modules/shikiji": {
      "version": "0.9.9",
      "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.9.9.tgz",
      "integrity": "sha512-/S3unr/0mZTstNOuAmNDEufeimtqeQb8lXvPMLsYfDvqyfmG6334bO2xmDzD0kfxH2y8gnFgSWAJpdEzksmYXg==",
      "version": "0.10.2",
      "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.10.2.tgz",
      "integrity": "sha512-wtZg3T0vtYV2PnqusWQs3mDaJBdCPWxFDrBM/SE5LfrX92gjUvfEMlc+vJnoKY6Z/S44OWaCRzNIsdBRWcTAiw==",
      "dependencies": {
        "shikiji-core": "0.9.9"
        "shikiji-core": "0.10.2"
      }
    },
    "node_modules/shikiji-core": {
      "version": "0.9.9",
      "resolved": "https://registry.npmjs.org/shikiji-core/-/shikiji-core-0.9.9.tgz",
      "integrity": "sha512-qu5Qq7Co6JIMY312J9Ek6WYjXieeyJT/fIqmkcjF4MdnMNlUnhSqPo8/42g5UdPgdyTCwijS7Nhg8DfLSLodkg=="
      "version": "0.10.2",
      "resolved": "https://registry.npmjs.org/shikiji-core/-/shikiji-core-0.10.2.tgz",
      "integrity": "sha512-9Of8HMlF96usXJHmCL3Gd0Fcf0EcyJUF9m8EoAKKd98mHXi0La2AZl1h6PegSFGtiYcBDK/fLuKbDa1l16r1fA=="
    },
    "node_modules/signal-exit": {
      "version": "4.1.0",
@@ -5610,14 +5611,14 @@
      }
    },
    "node_modules/tr46": {
      "version": "4.1.1",
      "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz",
      "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==",
      "version": "5.0.0",
      "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
      "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
      "dependencies": {
        "punycode": "^2.3.0"
        "punycode": "^2.3.1"
      },
      "engines": {
        "node": ">=14"
        "node": ">=18"
      }
    },
    "node_modules/tr46/node_modules/punycode": {
@@ -5990,14 +5991,14 @@
      }
    },
    "node_modules/w3c-xmlserializer": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
      "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==",
      "version": "5.0.0",
      "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
      "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
      "dependencies": {
        "xml-name-validator": "^4.0.0"
        "xml-name-validator": "^5.0.0"
      },
      "engines": {
        "node": ">=14"
        "node": ">=18"
      }
    },
    "node_modules/web-namespaces": {
@@ -6018,34 +6019,34 @@
      }
    },
    "node_modules/whatwg-encoding": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
      "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==",
      "version": "3.1.1",
      "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
      "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
      "dependencies": {
        "iconv-lite": "0.6.3"
      },
      "engines": {
        "node": ">=12"
        "node": ">=18"
      }
    },
    "node_modules/whatwg-mimetype": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz",
      "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==",
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
      "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
      "engines": {
        "node": ">=12"
        "node": ">=18"
      }
    },
    "node_modules/whatwg-url": {
      "version": "12.0.1",
      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz",
      "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==",
      "version": "14.0.0",
      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz",
      "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==",
      "dependencies": {
        "tr46": "^4.1.1",
        "tr46": "^5.0.0",
        "webidl-conversions": "^7.0.0"
      },
      "engines": {
        "node": ">=14"
        "node": ">=18"
      }
    },
    "node_modules/which": {
@@ -6154,9 +6155,9 @@
      }
    },
    "node_modules/ws": {
      "version": "8.15.1",
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz",
      "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==",
      "version": "8.16.0",
      "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
      "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
      "engines": {
        "node": ">=10.0.0"
      },
@@ -6174,11 +6175,11 @@
      }
    },
    "node_modules/xml-name-validator": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
      "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
      "version": "5.0.0",
      "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
      "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
      "engines": {
        "node": ">=12"
        "node": ">=18"
      }
    },
    "node_modules/xmlchars": {