matrix-art.meta

Issues/PRs archive for MTRNord/matrix-art
git clone git://archive.git.mtrnord.blog/MTRNord/matrix-art.meta.git
Log | Files | Refs

406.diff (29403B)


      1 diff --git a/package-lock.json b/package-lock.json
      2 index 9f8e6a0..b6f7b22 100644
      3 --- a/package-lock.json
      4 +++ b/package-lock.json
      5 @@ -45,7 +45,7 @@
      6          "typescript": "^4.9.4",
      7          "vite": "^4.0.4",
      8          "vite-plugin-ejs": "^1.6.4",
      9 -        "vitest": "^0.27.3"
     10 +        "vitest": "^0.29.8"
     11        }
     12      },
     13      "node_modules/@adobe/css-tools": {
     14 @@ -1572,6 +1572,64 @@
     15          "vite": "^4"
     16        }
     17      },
     18 +    "node_modules/@vitest/expect": {
     19 +      "version": "0.29.8",
     20 +      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.29.8.tgz",
     21 +      "integrity": "sha512-xlcVXn5I5oTq6NiZSY3ykyWixBxr5mG8HYtjvpgg6KaqHm0mvhX18xuwl5YGxIRNt/A5jidd7CWcNHrSvgaQqQ==",
     22 +      "dev": true,
     23 +      "dependencies": {
     24 +        "@vitest/spy": "0.29.8",
     25 +        "@vitest/utils": "0.29.8",
     26 +        "chai": "^4.3.7"
     27 +      }
     28 +    },
     29 +    "node_modules/@vitest/runner": {
     30 +      "version": "0.29.8",
     31 +      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.29.8.tgz",
     32 +      "integrity": "sha512-FzdhnRDwEr/A3Oo1jtIk/B952BBvP32n1ObMEb23oEJNO+qO5cBet6M2XWIDQmA7BDKGKvmhUf2naXyp/2JEwQ==",
     33 +      "dev": true,
     34 +      "dependencies": {
     35 +        "@vitest/utils": "0.29.8",
     36 +        "p-limit": "^4.0.0",
     37 +        "pathe": "^1.1.0"
     38 +      }
     39 +    },
     40 +    "node_modules/@vitest/runner/node_modules/p-limit": {
     41 +      "version": "4.0.0",
     42 +      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
     43 +      "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
     44 +      "dev": true,
     45 +      "dependencies": {
     46 +        "yocto-queue": "^1.0.0"
     47 +      },
     48 +      "engines": {
     49 +        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
     50 +      },
     51 +      "funding": {
     52 +        "url": "https://github.com/sponsors/sindresorhus"
     53 +      }
     54 +    },
     55 +    "node_modules/@vitest/runner/node_modules/yocto-queue": {
     56 +      "version": "1.0.0",
     57 +      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
     58 +      "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
     59 +      "dev": true,
     60 +      "engines": {
     61 +        "node": ">=12.20"
     62 +      },
     63 +      "funding": {
     64 +        "url": "https://github.com/sponsors/sindresorhus"
     65 +      }
     66 +    },
     67 +    "node_modules/@vitest/spy": {
     68 +      "version": "0.29.8",
     69 +      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.29.8.tgz",
     70 +      "integrity": "sha512-VdjBe9w34vOMl5I5mYEzNX8inTxrZ+tYUVk9jxaZJmHFwmDFC/GV3KBFTA/JKswr3XHvZL+FE/yq5EVhb6pSAw==",
     71 +      "dev": true,
     72 +      "dependencies": {
     73 +        "tinyspy": "^1.0.2"
     74 +      }
     75 +    },
     76      "node_modules/@vitest/ui": {
     77        "version": "0.27.3",
     78        "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.27.3.tgz",
     79 @@ -1583,6 +1641,18 @@
     80          "sirv": "^2.0.2"
     81        }
     82      },
     83 +    "node_modules/@vitest/utils": {
     84 +      "version": "0.29.8",
     85 +      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.29.8.tgz",
     86 +      "integrity": "sha512-qGzuf3vrTbnoY+RjjVVIBYfuWMjn3UMUqyQtdGNZ6ZIIyte7B37exj6LaVkrZiUTvzSadVvO/tJm8AEgbGCBPg==",
     87 +      "dev": true,
     88 +      "dependencies": {
     89 +        "cli-truncate": "^3.1.0",
     90 +        "diff": "^5.1.0",
     91 +        "loupe": "^2.3.6",
     92 +        "pretty-format": "^27.5.1"
     93 +      }
     94 +    },
     95      "node_modules/abab": {
     96        "version": "2.0.6",
     97        "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
     98 @@ -1590,9 +1660,9 @@
     99        "dev": true
    100      },
    101      "node_modules/acorn": {
    102 -      "version": "8.8.1",
    103 -      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
    104 -      "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
    105 +      "version": "8.8.2",
    106 +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
    107 +      "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
    108        "dev": true,
    109        "bin": {
    110          "acorn": "bin/acorn"
    111 @@ -2002,12 +2072,6 @@
    112          "ieee754": "^1.2.1"
    113        }
    114      },
    115 -    "node_modules/buffer-from": {
    116 -      "version": "1.1.2",
    117 -      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
    118 -      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
    119 -      "dev": true
    120 -    },
    121      "node_modules/builtin-modules": {
    122        "version": "3.3.0",
    123        "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
    124 @@ -2231,6 +2295,22 @@
    125          "url": "https://github.com/sponsors/sindresorhus"
    126        }
    127      },
    128 +    "node_modules/cli-truncate": {
    129 +      "version": "3.1.0",
    130 +      "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
    131 +      "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
    132 +      "dev": true,
    133 +      "dependencies": {
    134 +        "slice-ansi": "^5.0.0",
    135 +        "string-width": "^5.0.0"
    136 +      },
    137 +      "engines": {
    138 +        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
    139 +      },
    140 +      "funding": {
    141 +        "url": "https://github.com/sponsors/sindresorhus"
    142 +      }
    143 +    },
    144      "node_modules/cli-width": {
    145        "version": "4.0.0",
    146        "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz",
    147 @@ -2571,6 +2651,15 @@
    148        "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
    149        "dev": true
    150      },
    151 +    "node_modules/diff": {
    152 +      "version": "5.1.0",
    153 +      "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
    154 +      "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
    155 +      "dev": true,
    156 +      "engines": {
    157 +        "node": ">=0.3.1"
    158 +      }
    159 +    },
    160      "node_modules/diff-sequences": {
    161        "version": "29.3.1",
    162        "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz",
    163 @@ -3985,6 +4074,18 @@
    164          "node": ">=0.10.0"
    165        }
    166      },
    167 +    "node_modules/is-fullwidth-code-point": {
    168 +      "version": "4.0.0",
    169 +      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
    170 +      "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
    171 +      "dev": true,
    172 +      "engines": {
    173 +        "node": ">=12"
    174 +      },
    175 +      "funding": {
    176 +        "url": "https://github.com/sponsors/sindresorhus"
    177 +      }
    178 +    },
    179      "node_modules/is-glob": {
    180        "version": "4.0.3",
    181        "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
    182 @@ -4752,23 +4853,17 @@
    183        }
    184      },
    185      "node_modules/mlly": {
    186 -      "version": "1.1.0",
    187 -      "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.1.0.tgz",
    188 -      "integrity": "sha512-cwzBrBfwGC1gYJyfcy8TcZU1f+dbH/T+TuOhtYP2wLv/Fb51/uV7HJQfBPtEupZ2ORLRU1EKFS/QfS3eo9+kBQ==",
    189 +      "version": "1.2.0",
    190 +      "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.2.0.tgz",
    191 +      "integrity": "sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==",
    192        "dev": true,
    193        "dependencies": {
    194 -        "acorn": "^8.8.1",
    195 -        "pathe": "^1.0.0",
    196 -        "pkg-types": "^1.0.1",
    197 -        "ufo": "^1.0.1"
    198 +        "acorn": "^8.8.2",
    199 +        "pathe": "^1.1.0",
    200 +        "pkg-types": "^1.0.2",
    201 +        "ufo": "^1.1.1"
    202        }
    203      },
    204 -    "node_modules/mlly/node_modules/pathe": {
    205 -      "version": "1.1.0",
    206 -      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz",
    207 -      "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==",
    208 -      "dev": true
    209 -    },
    210      "node_modules/mrmime": {
    211        "version": "1.0.1",
    212        "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz",
    213 @@ -5184,9 +5279,9 @@
    214        }
    215      },
    216      "node_modules/pathe": {
    217 -      "version": "0.2.0",
    218 -      "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz",
    219 -      "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
    220 +      "version": "1.1.0",
    221 +      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz",
    222 +      "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==",
    223        "dev": true
    224      },
    225      "node_modules/pathval": {
    226 @@ -5225,22 +5320,16 @@
    227        }
    228      },
    229      "node_modules/pkg-types": {
    230 -      "version": "1.0.1",
    231 -      "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.1.tgz",
    232 -      "integrity": "sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==",
    233 +      "version": "1.0.2",
    234 +      "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.2.tgz",
    235 +      "integrity": "sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==",
    236        "dev": true,
    237        "dependencies": {
    238          "jsonc-parser": "^3.2.0",
    239 -        "mlly": "^1.0.0",
    240 -        "pathe": "^1.0.0"
    241 +        "mlly": "^1.1.1",
    242 +        "pathe": "^1.1.0"
    243        }
    244      },
    245 -    "node_modules/pkg-types/node_modules/pathe": {
    246 -      "version": "1.1.0",
    247 -      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz",
    248 -      "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==",
    249 -      "dev": true
    250 -    },
    251      "node_modules/pluralize": {
    252        "version": "8.0.0",
    253        "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
    254 @@ -6099,6 +6188,34 @@
    255          "node": ">=8"
    256        }
    257      },
    258 +    "node_modules/slice-ansi": {
    259 +      "version": "5.0.0",
    260 +      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
    261 +      "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
    262 +      "dev": true,
    263 +      "dependencies": {
    264 +        "ansi-styles": "^6.0.0",
    265 +        "is-fullwidth-code-point": "^4.0.0"
    266 +      },
    267 +      "engines": {
    268 +        "node": ">=12"
    269 +      },
    270 +      "funding": {
    271 +        "url": "https://github.com/chalk/slice-ansi?sponsor=1"
    272 +      }
    273 +    },
    274 +    "node_modules/slice-ansi/node_modules/ansi-styles": {
    275 +      "version": "6.2.1",
    276 +      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
    277 +      "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
    278 +      "dev": true,
    279 +      "engines": {
    280 +        "node": ">=12"
    281 +      },
    282 +      "funding": {
    283 +        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
    284 +      }
    285 +    },
    286      "node_modules/source-map": {
    287        "version": "0.6.1",
    288        "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    289 @@ -6117,16 +6234,6 @@
    290          "node": ">=0.10.0"
    291        }
    292      },
    293 -    "node_modules/source-map-support": {
    294 -      "version": "0.5.21",
    295 -      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
    296 -      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
    297 -      "dev": true,
    298 -      "dependencies": {
    299 -        "buffer-from": "^1.0.0",
    300 -        "source-map": "^0.6.0"
    301 -      }
    302 -    },
    303      "node_modules/spdx-correct": {
    304        "version": "3.1.1",
    305        "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
    306 @@ -6427,9 +6534,9 @@
    307        "dev": true
    308      },
    309      "node_modules/tinypool": {
    310 -      "version": "0.3.0",
    311 -      "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.0.tgz",
    312 -      "integrity": "sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==",
    313 +      "version": "0.4.0",
    314 +      "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.4.0.tgz",
    315 +      "integrity": "sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==",
    316        "dev": true,
    317        "engines": {
    318          "node": ">=14.0.0"
    319 @@ -6577,9 +6684,9 @@
    320        }
    321      },
    322      "node_modules/ufo": {
    323 -      "version": "1.0.1",
    324 -      "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.0.1.tgz",
    325 -      "integrity": "sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==",
    326 +      "version": "1.1.1",
    327 +      "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.1.tgz",
    328 +      "integrity": "sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==",
    329        "dev": true
    330      },
    331      "node_modules/unhomoglyph": {
    332 @@ -6714,18 +6821,16 @@
    333        }
    334      },
    335      "node_modules/vite-node": {
    336 -      "version": "0.27.3",
    337 -      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.27.3.tgz",
    338 -      "integrity": "sha512-eyJYOO64o5HIp8poc4bJX+ZNBwMZeI3f6/JdiUmJgW02Mt7LnoCtDMRVmLaY9S05SIsjGe339ZK4uo2wQ+bF9g==",
    339 +      "version": "0.29.8",
    340 +      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.29.8.tgz",
    341 +      "integrity": "sha512-b6OtCXfk65L6SElVM20q5G546yu10/kNrhg08afEoWlFRJXFq9/6glsvSVY+aI6YeC1tu2TtAqI2jHEQmOmsFw==",
    342        "dev": true,
    343        "dependencies": {
    344          "cac": "^6.7.14",
    345          "debug": "^4.3.4",
    346          "mlly": "^1.1.0",
    347 -        "pathe": "^0.2.0",
    348 +        "pathe": "^1.1.0",
    349          "picocolors": "^1.0.0",
    350 -        "source-map": "^0.6.1",
    351 -        "source-map-support": "^0.5.21",
    352          "vite": "^3.0.0 || ^4.0.0"
    353        },
    354        "bin": {
    355 @@ -6748,29 +6853,34 @@
    356        }
    357      },
    358      "node_modules/vitest": {
    359 -      "version": "0.27.3",
    360 -      "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.27.3.tgz",
    361 -      "integrity": "sha512-Ld3UVgRVhJUtqvQ3dW89GxiApFAgBsWJZBCWzK+gA3w2yG68csXlGZZ4WDJURf+8ecNfgrScga6xY+8YSOpiMg==",
    362 +      "version": "0.29.8",
    363 +      "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.29.8.tgz",
    364 +      "integrity": "sha512-JIAVi2GK5cvA6awGpH0HvH/gEG9PZ0a/WoxdiV3PmqK+3CjQMf8c+J/Vhv4mdZ2nRyXFw66sAg6qz7VNkaHfDQ==",
    365        "dev": true,
    366        "dependencies": {
    367          "@types/chai": "^4.3.4",
    368          "@types/chai-subset": "^1.3.3",
    369          "@types/node": "*",
    370 +        "@vitest/expect": "0.29.8",
    371 +        "@vitest/runner": "0.29.8",
    372 +        "@vitest/spy": "0.29.8",
    373 +        "@vitest/utils": "0.29.8",
    374          "acorn": "^8.8.1",
    375          "acorn-walk": "^8.2.0",
    376          "cac": "^6.7.14",
    377          "chai": "^4.3.7",
    378          "debug": "^4.3.4",
    379          "local-pkg": "^0.4.2",
    380 +        "pathe": "^1.1.0",
    381          "picocolors": "^1.0.0",
    382          "source-map": "^0.6.1",
    383          "std-env": "^3.3.1",
    384          "strip-literal": "^1.0.0",
    385          "tinybench": "^2.3.1",
    386 -        "tinypool": "^0.3.0",
    387 +        "tinypool": "^0.4.0",
    388          "tinyspy": "^1.0.2",
    389          "vite": "^3.0.0 || ^4.0.0",
    390 -        "vite-node": "0.27.3",
    391 +        "vite-node": "0.29.8",
    392          "why-is-node-running": "^2.2.2"
    393        },
    394        "bin": {
    395 @@ -6787,7 +6897,10 @@
    396          "@vitest/browser": "*",
    397          "@vitest/ui": "*",
    398          "happy-dom": "*",
    399 -        "jsdom": "*"
    400 +        "jsdom": "*",
    401 +        "playwright": "*",
    402 +        "safaridriver": "*",
    403 +        "webdriverio": "*"
    404        },
    405        "peerDependenciesMeta": {
    406          "@edge-runtime/vm": {
    407 @@ -6804,6 +6917,15 @@
    408          },
    409          "jsdom": {
    410            "optional": true
    411 +        },
    412 +        "playwright": {
    413 +          "optional": true
    414 +        },
    415 +        "safaridriver": {
    416 +          "optional": true
    417 +        },
    418 +        "webdriverio": {
    419 +          "optional": true
    420          }
    421        }
    422      },
    423 @@ -8092,6 +8214,54 @@
    424          "@swc/core": "^1.3.22"
    425        }
    426      },
    427 +    "@vitest/expect": {
    428 +      "version": "0.29.8",
    429 +      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.29.8.tgz",
    430 +      "integrity": "sha512-xlcVXn5I5oTq6NiZSY3ykyWixBxr5mG8HYtjvpgg6KaqHm0mvhX18xuwl5YGxIRNt/A5jidd7CWcNHrSvgaQqQ==",
    431 +      "dev": true,
    432 +      "requires": {
    433 +        "@vitest/spy": "0.29.8",
    434 +        "@vitest/utils": "0.29.8",
    435 +        "chai": "^4.3.7"
    436 +      }
    437 +    },
    438 +    "@vitest/runner": {
    439 +      "version": "0.29.8",
    440 +      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.29.8.tgz",
    441 +      "integrity": "sha512-FzdhnRDwEr/A3Oo1jtIk/B952BBvP32n1ObMEb23oEJNO+qO5cBet6M2XWIDQmA7BDKGKvmhUf2naXyp/2JEwQ==",
    442 +      "dev": true,
    443 +      "requires": {
    444 +        "@vitest/utils": "0.29.8",
    445 +        "p-limit": "^4.0.0",
    446 +        "pathe": "^1.1.0"
    447 +      },
    448 +      "dependencies": {
    449 +        "p-limit": {
    450 +          "version": "4.0.0",
    451 +          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
    452 +          "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
    453 +          "dev": true,
    454 +          "requires": {
    455 +            "yocto-queue": "^1.0.0"
    456 +          }
    457 +        },
    458 +        "yocto-queue": {
    459 +          "version": "1.0.0",
    460 +          "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
    461 +          "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
    462 +          "dev": true
    463 +        }
    464 +      }
    465 +    },
    466 +    "@vitest/spy": {
    467 +      "version": "0.29.8",
    468 +      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.29.8.tgz",
    469 +      "integrity": "sha512-VdjBe9w34vOMl5I5mYEzNX8inTxrZ+tYUVk9jxaZJmHFwmDFC/GV3KBFTA/JKswr3XHvZL+FE/yq5EVhb6pSAw==",
    470 +      "dev": true,
    471 +      "requires": {
    472 +        "tinyspy": "^1.0.2"
    473 +      }
    474 +    },
    475      "@vitest/ui": {
    476        "version": "0.27.3",
    477        "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.27.3.tgz",
    478 @@ -8103,6 +8273,18 @@
    479          "sirv": "^2.0.2"
    480        }
    481      },
    482 +    "@vitest/utils": {
    483 +      "version": "0.29.8",
    484 +      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.29.8.tgz",
    485 +      "integrity": "sha512-qGzuf3vrTbnoY+RjjVVIBYfuWMjn3UMUqyQtdGNZ6ZIIyte7B37exj6LaVkrZiUTvzSadVvO/tJm8AEgbGCBPg==",
    486 +      "dev": true,
    487 +      "requires": {
    488 +        "cli-truncate": "^3.1.0",
    489 +        "diff": "^5.1.0",
    490 +        "loupe": "^2.3.6",
    491 +        "pretty-format": "^27.5.1"
    492 +      }
    493 +    },
    494      "abab": {
    495        "version": "2.0.6",
    496        "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
    497 @@ -8110,9 +8292,9 @@
    498        "dev": true
    499      },
    500      "acorn": {
    501 -      "version": "8.8.1",
    502 -      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz",
    503 -      "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==",
    504 +      "version": "8.8.2",
    505 +      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
    506 +      "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
    507        "dev": true
    508      },
    509      "acorn-globals": {
    510 @@ -8393,12 +8575,6 @@
    511          "ieee754": "^1.2.1"
    512        }
    513      },
    514 -    "buffer-from": {
    515 -      "version": "1.1.2",
    516 -      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
    517 -      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
    518 -      "dev": true
    519 -    },
    520      "builtin-modules": {
    521        "version": "3.3.0",
    522        "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
    523 @@ -8542,6 +8718,16 @@
    524        "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz",
    525        "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw=="
    526      },
    527 +    "cli-truncate": {
    528 +      "version": "3.1.0",
    529 +      "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz",
    530 +      "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==",
    531 +      "dev": true,
    532 +      "requires": {
    533 +        "slice-ansi": "^5.0.0",
    534 +        "string-width": "^5.0.0"
    535 +      }
    536 +    },
    537      "cli-width": {
    538        "version": "4.0.0",
    539        "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.0.0.tgz",
    540 @@ -8804,6 +8990,12 @@
    541        "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
    542        "dev": true
    543      },
    544 +    "diff": {
    545 +      "version": "5.1.0",
    546 +      "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
    547 +      "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
    548 +      "dev": true
    549 +    },
    550      "diff-sequences": {
    551        "version": "29.3.1",
    552        "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.3.1.tgz",
    553 @@ -9853,6 +10045,12 @@
    554        "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
    555        "dev": true
    556      },
    557 +    "is-fullwidth-code-point": {
    558 +      "version": "4.0.0",
    559 +      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz",
    560 +      "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==",
    561 +      "dev": true
    562 +    },
    563      "is-glob": {
    564        "version": "4.0.3",
    565        "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
    566 @@ -10413,23 +10611,15 @@
    567        "dev": true
    568      },
    569      "mlly": {
    570 -      "version": "1.1.0",
    571 -      "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.1.0.tgz",
    572 -      "integrity": "sha512-cwzBrBfwGC1gYJyfcy8TcZU1f+dbH/T+TuOhtYP2wLv/Fb51/uV7HJQfBPtEupZ2ORLRU1EKFS/QfS3eo9+kBQ==",
    573 +      "version": "1.2.0",
    574 +      "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.2.0.tgz",
    575 +      "integrity": "sha512-+c7A3CV0KGdKcylsI6khWyts/CYrGTrRVo4R/I7u/cUsy0Conxa6LUhiEzVKIw14lc2L5aiO4+SeVe4TeGRKww==",
    576        "dev": true,
    577        "requires": {
    578 -        "acorn": "^8.8.1",
    579 -        "pathe": "^1.0.0",
    580 -        "pkg-types": "^1.0.1",
    581 -        "ufo": "^1.0.1"
    582 -      },
    583 -      "dependencies": {
    584 -        "pathe": {
    585 -          "version": "1.1.0",
    586 -          "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz",
    587 -          "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==",
    588 -          "dev": true
    589 -        }
    590 +        "acorn": "^8.8.2",
    591 +        "pathe": "^1.1.0",
    592 +        "pkg-types": "^1.0.2",
    593 +        "ufo": "^1.1.1"
    594        }
    595      },
    596      "mrmime": {
    597 @@ -10723,9 +10913,9 @@
    598        "dev": true
    599      },
    600      "pathe": {
    601 -      "version": "0.2.0",
    602 -      "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz",
    603 -      "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
    604 +      "version": "1.1.0",
    605 +      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz",
    606 +      "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==",
    607        "dev": true
    608      },
    609      "pathval": {
    610 @@ -10752,22 +10942,14 @@
    611        "dev": true
    612      },
    613      "pkg-types": {
    614 -      "version": "1.0.1",
    615 -      "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.1.tgz",
    616 -      "integrity": "sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==",
    617 +      "version": "1.0.2",
    618 +      "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.2.tgz",
    619 +      "integrity": "sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==",
    620        "dev": true,
    621        "requires": {
    622          "jsonc-parser": "^3.2.0",
    623 -        "mlly": "^1.0.0",
    624 -        "pathe": "^1.0.0"
    625 -      },
    626 -      "dependencies": {
    627 -        "pathe": {
    628 -          "version": "1.1.0",
    629 -          "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz",
    630 -          "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==",
    631 -          "dev": true
    632 -        }
    633 +        "mlly": "^1.1.1",
    634 +        "pathe": "^1.1.0"
    635        }
    636      },
    637      "pluralize": {
    638 @@ -11342,6 +11524,24 @@
    639        "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
    640        "dev": true
    641      },
    642 +    "slice-ansi": {
    643 +      "version": "5.0.0",
    644 +      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
    645 +      "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==",
    646 +      "dev": true,
    647 +      "requires": {
    648 +        "ansi-styles": "^6.0.0",
    649 +        "is-fullwidth-code-point": "^4.0.0"
    650 +      },
    651 +      "dependencies": {
    652 +        "ansi-styles": {
    653 +          "version": "6.2.1",
    654 +          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
    655 +          "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
    656 +          "dev": true
    657 +        }
    658 +      }
    659 +    },
    660      "source-map": {
    661        "version": "0.6.1",
    662        "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
    663 @@ -11354,16 +11554,6 @@
    664        "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
    665        "dev": true
    666      },
    667 -    "source-map-support": {
    668 -      "version": "0.5.21",
    669 -      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
    670 -      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
    671 -      "dev": true,
    672 -      "requires": {
    673 -        "buffer-from": "^1.0.0",
    674 -        "source-map": "^0.6.0"
    675 -      }
    676 -    },
    677      "spdx-correct": {
    678        "version": "3.1.1",
    679        "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
    680 @@ -11593,9 +11783,9 @@
    681        "dev": true
    682      },
    683      "tinypool": {
    684 -      "version": "0.3.0",
    685 -      "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.0.tgz",
    686 -      "integrity": "sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==",
    687 +      "version": "0.4.0",
    688 +      "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.4.0.tgz",
    689 +      "integrity": "sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==",
    690        "dev": true
    691      },
    692      "tinyspy": {
    693 @@ -11699,9 +11889,9 @@
    694        "dev": true
    695      },
    696      "ufo": {
    697 -      "version": "1.0.1",
    698 -      "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.0.1.tgz",
    699 -      "integrity": "sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==",
    700 +      "version": "1.1.1",
    701 +      "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.1.tgz",
    702 +      "integrity": "sha512-MvlCc4GHrmZdAllBc0iUDowff36Q9Ndw/UzqmEKyrfSzokTd9ZCy1i+IIk5hrYKkjoYVQyNbrw7/F8XJ2rEwTg==",
    703        "dev": true
    704      },
    705      "unhomoglyph": {
    706 @@ -11778,18 +11968,16 @@
    707        }
    708      },
    709      "vite-node": {
    710 -      "version": "0.27.3",
    711 -      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.27.3.tgz",
    712 -      "integrity": "sha512-eyJYOO64o5HIp8poc4bJX+ZNBwMZeI3f6/JdiUmJgW02Mt7LnoCtDMRVmLaY9S05SIsjGe339ZK4uo2wQ+bF9g==",
    713 +      "version": "0.29.8",
    714 +      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.29.8.tgz",
    715 +      "integrity": "sha512-b6OtCXfk65L6SElVM20q5G546yu10/kNrhg08afEoWlFRJXFq9/6glsvSVY+aI6YeC1tu2TtAqI2jHEQmOmsFw==",
    716        "dev": true,
    717        "requires": {
    718          "cac": "^6.7.14",
    719          "debug": "^4.3.4",
    720          "mlly": "^1.1.0",
    721 -        "pathe": "^0.2.0",
    722 +        "pathe": "^1.1.0",
    723          "picocolors": "^1.0.0",
    724 -        "source-map": "^0.6.1",
    725 -        "source-map-support": "^0.5.21",
    726          "vite": "^3.0.0 || ^4.0.0"
    727        }
    728      },
    729 @@ -11803,29 +11991,34 @@
    730        }
    731      },
    732      "vitest": {
    733 -      "version": "0.27.3",
    734 -      "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.27.3.tgz",
    735 -      "integrity": "sha512-Ld3UVgRVhJUtqvQ3dW89GxiApFAgBsWJZBCWzK+gA3w2yG68csXlGZZ4WDJURf+8ecNfgrScga6xY+8YSOpiMg==",
    736 +      "version": "0.29.8",
    737 +      "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.29.8.tgz",
    738 +      "integrity": "sha512-JIAVi2GK5cvA6awGpH0HvH/gEG9PZ0a/WoxdiV3PmqK+3CjQMf8c+J/Vhv4mdZ2nRyXFw66sAg6qz7VNkaHfDQ==",
    739        "dev": true,
    740        "requires": {
    741          "@types/chai": "^4.3.4",
    742          "@types/chai-subset": "^1.3.3",
    743          "@types/node": "*",
    744 +        "@vitest/expect": "0.29.8",
    745 +        "@vitest/runner": "0.29.8",
    746 +        "@vitest/spy": "0.29.8",
    747 +        "@vitest/utils": "0.29.8",
    748          "acorn": "^8.8.1",
    749          "acorn-walk": "^8.2.0",
    750          "cac": "^6.7.14",
    751          "chai": "^4.3.7",
    752          "debug": "^4.3.4",
    753          "local-pkg": "^0.4.2",
    754 +        "pathe": "^1.1.0",
    755          "picocolors": "^1.0.0",
    756          "source-map": "^0.6.1",
    757          "std-env": "^3.3.1",
    758          "strip-literal": "^1.0.0",
    759          "tinybench": "^2.3.1",
    760 -        "tinypool": "^0.3.0",
    761 +        "tinypool": "^0.4.0",
    762          "tinyspy": "^1.0.2",
    763          "vite": "^3.0.0 || ^4.0.0",
    764 -        "vite-node": "0.27.3",
    765 +        "vite-node": "0.29.8",
    766          "why-is-node-running": "^2.2.2"
    767        },
    768        "dependencies": {
    769 diff --git a/package.json b/package.json
    770 index da65691..7e48950 100644
    771 --- a/package.json
    772 +++ b/package.json
    773 @@ -50,6 +50,6 @@
    774      "typescript": "^4.9.4",
    775      "vite": "^4.0.4",
    776      "vite-plugin-ejs": "^1.6.4",
    777 -    "vitest": "^0.27.3"
    778 +    "vitest": "^0.29.8"
    779    }
    780  }
    781 \ No newline at end of file