From 3e67c16a53f4ee6c0b9df6458b99d0281663df91 Mon Sep 17 00:00:00 2001 From: fratzinger <22286818+fratzinger@users.noreply.github.com> Date: Tue, 16 Jan 2024 23:41:26 +0100 Subject: [PATCH] chore: migrate to vitest from mocha/chai --- .eslintrc | 17 +- .mocharc.js | 12 - package-lock.json | 4158 ++++++++++++++++------ package.json | 16 +- src/common/pluck.ts | 8 +- src/common/set-fields.ts | 2 +- src/common/transform-items.ts | 2 +- src/common/traverse.ts | 2 +- src/hooks/alter-items.ts | 2 +- src/hooks/cache.ts | 2 +- src/hooks/debug.ts | 2 +- src/hooks/disallow.ts | 4 +- src/hooks/fast-join.ts | 10 +- src/hooks/fgraphql.ts | 32 +- src/hooks/iff-else.ts | 4 +- src/hooks/keep-in-array.ts | 6 +- src/hooks/keep-query-in-array.ts | 6 +- src/hooks/keep.ts | 2 +- src/hooks/mongo-keys.ts | 2 +- src/hooks/populate.ts | 14 +- src/hooks/run-parallel.ts | 2 +- src/hooks/sequelize-convert.ts | 4 +- src/hooks/serialize.ts | 2 +- src/hooks/sifter.ts | 2 +- src/hooks/soft-delete.ts | 2 +- src/hooks/traverse.ts | 2 +- src/hooks/validate-schema.ts | 4 +- src/hooks/validate.ts | 6 +- src/utils/calling-params.ts | 2 +- src/utils/check-context-if.ts | 2 +- src/utils/check-context.ts | 2 +- src/utils/combine.ts | 2 +- src/utils/is-not.ts | 2 +- src/utils/is-provider.ts | 2 +- src/utils/run-hook.ts | 2 +- test/common/traverse.test.ts | 2 +- test/helpers/make-services.ts | 2 +- test/hooks/act-on-dispatch.test.ts | 12 +- test/hooks/alter-items.test.ts | 10 +- test/hooks/cache.test.ts | 2 +- test/hooks/de-populate.test.ts | 2 +- test/hooks/disable-pagination.test.ts | 2 +- test/hooks/disallow.test.ts | 2 +- test/hooks/discard-1.test.ts | 6 +- test/hooks/discard-2.test.ts | 6 +- test/hooks/discard-query.test.ts | 2 +- test/hooks/discard.test.ts | 2 +- test/hooks/fast-join-cache.test.ts | 14 +- test/hooks/fast-join.test.ts | 18 +- test/hooks/fgraphql.test.ts | 10 +- test/hooks/get-replace-items.test.ts | 2 +- test/hooks/iff-else.test.ts | 58 +- test/hooks/iff.test.ts | 233 +- test/hooks/iffelse.test.ts | 14 +- test/hooks/is-provider.test.ts | 6 +- test/hooks/keep-in-array.test.ts | 2 +- test/hooks/keep-query-in-array.test.ts | 2 +- test/hooks/keep-query.test.ts | 2 +- test/hooks/keep.test.ts | 2 +- test/hooks/lowercase.test.ts | 2 +- test/hooks/mongo-keys.test.ts | 4 +- test/hooks/params-from-client.test.ts | 2 +- test/hooks/populate-1deep-1child.test.ts | 6 +- test/hooks/populate-basics.test.ts | 2 +- test/hooks/populate-misc.test.ts | 8 +- test/hooks/populate-relations.test.ts | 2 +- test/hooks/populate-scaffolding.test.ts | 7 +- test/hooks/prevent-changes.test.ts | 6 +- test/hooks/required.test.ts | 2 +- test/hooks/run-parallel.test.ts | 64 +- test/hooks/sequelize-convert.test.ts | 4 +- test/hooks/serialize.test.ts | 2 +- test/hooks/set-field.test.ts | 49 +- test/hooks/set-now.test.ts | 25 +- test/hooks/set-slug.test.ts | 2 +- test/hooks/sifter.test.ts | 2 +- test/hooks/soft-delete.test.ts | 59 +- test/hooks/stash-before.test.ts | 15 +- test/hooks/unless.test.ts | 241 +- test/hooks/validate-schema.test.ts | 99 +- test/hooks/validate.test.ts | 37 +- test/hooks/when.test.ts | 235 +- test/index.test.ts | 4 +- test/utils/calling-params-1.test.ts | 2 +- test/utils/calling-params-2.test.ts | 2 +- test/utils/check-context.test.ts | 2 +- test/utils/combine.test.ts | 6 +- test/utils/every.test.ts | 20 +- test/utils/is-not.test.ts | 20 +- test/utils/params-for-server.test.ts | 2 +- test/utils/run-hook.test.ts | 4 +- test/utils/some.test.ts | 20 +- tsconfig.json | 67 +- tsconfig.test.json | 66 - vite.config.ts | 19 + 95 files changed, 3793 insertions(+), 2070 deletions(-) delete mode 100644 .mocharc.js delete mode 100644 tsconfig.test.json create mode 100644 vite.config.ts diff --git a/.eslintrc b/.eslintrc index a490dc9e..e7ab5c05 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,19 +1,11 @@ { + "root": true, "env": { - "browser": true, - "es6": true, - "mocha": true, "node": true }, - "extends": [ - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:prettier/recommended" - ], "parser": "@typescript-eslint/parser", "parserOptions": { - "project": "tsconfig.test.json", - "sourceType": "module" + "project": ["./tsconfig.json"] }, "plugins": [ "eslint-plugin-import", @@ -21,6 +13,11 @@ "@typescript-eslint", "prettier" ], + "extends": [ + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/recommended-requiring-type-checking", + "plugin:prettier/recommended" + ], "rules": { // "indent": ["warn", 2], "prefer-rest-params": "off", diff --git a/.mocharc.js b/.mocharc.js deleted file mode 100644 index 30deb049..00000000 --- a/.mocharc.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; -const path = require("path"); - -module.exports = { - extension: ["ts", "js"], - package: path.join(__dirname, "./package.json"), - ui: "bdd", - spec: [ - "./test/**/*.test.*", - ], - exit: true -}; diff --git a/package-lock.json b/package-lock.json index d5335b38..c01da8f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,33 +27,29 @@ "@feathersjs/memory": "^5.0.8", "@feathersjs/socketio": "^5.0.8", "@feathersjs/socketio-client": "^5.0.8", - "@types/chai": "^4.3.5", "@types/clone": "^2.1.1", "@types/debug": "^4.1.8", "@types/lodash": "^4.14.197", - "@types/mocha": "^10.0.1", "@types/node": "^20.5.3", "@types/traverse": "^0.6.32", "@typescript-eslint/eslint-plugin": "^6.4.1", "@typescript-eslint/parser": "^6.4.1", - "c8": "^8.0.1", - "chai": "^4.3.7", + "@vitest/coverage-v8": "^1.2.0", "clone": "^2.1.2", "eslint": "^8.47.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "^2.28.1", "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-prettier": "^5.0.0", - "mocha": "^10.2.0", "mongodb": "^5.8.0", "npm-check-updates": "^16.13.0", "prettier": "^3.0.2", "shx": "^0.3.4", "sift": "^17.0.1", - "ts-node": "^10.9.1", "tsup": "^7.2.0", "typescript": "^5.1.6", - "vitepress": "^1.0.0-rc.4" + "vitepress": "^1.0.0-rc.4", + "vitest": "^1.2.0" }, "engines": { "node": ">= 14" @@ -245,10 +241,41 @@ "@algolia/requester-common": "4.19.1" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/parser": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", - "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -269,6 +296,20 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -290,6 +331,8 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -345,6 +388,22 @@ } } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -1379,6 +1438,32 @@ "node": ">=8" } }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", @@ -1388,10 +1473,19 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "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==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { @@ -1642,6 +1736,175 @@ "node": ">=12" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", + "integrity": "sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz", + "integrity": "sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz", + "integrity": "sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz", + "integrity": "sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz", + "integrity": "sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz", + "integrity": "sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz", + "integrity": "sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz", + "integrity": "sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", + "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz", + "integrity": "sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz", + "integrity": "sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz", + "integrity": "sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz", + "integrity": "sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sigstore/bundle": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", @@ -1690,6 +1953,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "node_modules/@sindresorhus/is": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", @@ -1748,25 +2017,33 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@tufjs/canonical-json": { "version": "1.0.0", @@ -1824,12 +2101,6 @@ "@types/node": "*" } }, - "node_modules/@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", - "dev": true - }, "node_modules/@types/clone": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@types/clone/-/clone-2.1.1.tgz", @@ -1884,6 +2155,12 @@ "@types/ms": "*" } }, + "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/@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -1916,9 +2193,9 @@ "optional": true }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, "node_modules/@types/json-schema": { @@ -1954,12 +2231,6 @@ "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, - "node_modules/@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, "node_modules/@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -2256,55 +2527,187 @@ "vue": "^3.2.25" } }, - "node_modules/@vue/compiler-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", - "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "node_modules/@vitest/coverage-v8": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.2.0.tgz", + "integrity": "sha512-YvX8ULTUm1+zkvkl14IqXYGxE1h13OXKPoDsxazARKlp4YLrP28hHEBdplaU7ZTN/Yn6zy6Z3JadWNRJwcmyrQ==", "dev": true, "dependencies": { - "@babel/parser": "^7.21.3", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.4", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.1.6", + "magic-string": "^0.30.5", + "magicast": "^0.3.2", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "^1.0.0" } }, - "node_modules/@vue/compiler-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", - "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "node_modules/@vitest/expect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.0.tgz", + "integrity": "sha512-H+2bHzhyvgp32o7Pgj2h9RTHN0pgYaoi26Oo3mE+dCi1PAqV31kIIVfTbqMO3Bvshd5mIrJLc73EwSRrbol9Lw==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4" + "@vitest/spy": "1.2.0", + "@vitest/utils": "1.2.0", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@vue/compiler-sfc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", - "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "node_modules/@vitest/runner": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.2.0.tgz", + "integrity": "sha512-vaJkDoQaNUTroT70OhM0NPznP7H3WyRwt4LvGwCVYs/llLaqhoSLnlIhUClZpbF5RgAee29KRcNz0FEhYcgxqA==", "dev": true, "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-ssr": "3.3.4", - "@vue/reactivity-transform": "3.3.4", - "@vue/shared": "3.3.4", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.0", - "postcss": "^8.1.10", - "source-map-js": "^1.0.2" + "@vitest/utils": "1.2.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@vue/compiler-ssr": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", - "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/shared": "3.3.4" - } + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.2.0.tgz", + "integrity": "sha512-P33EE7TrVgB3HDLllrjK/GG6WSnmUtWohbwcQqmm7TAk9AVHpdgf7M3F3qRHKm6vhr7x3eGIln7VH052Smo6Kw==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.2.0.tgz", + "integrity": "sha512-MNxSAfxUaCeowqyyGwC293yZgk7cECZU9wGb8N1pYQ0yOn/SIr8t0l9XnGRdQZvNV/ZHBYu6GO/W3tj5K3VN1Q==", + "dev": true, + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-FyD5bpugsXlwVpTcGLDf3wSPYy8g541fQt14qtzo8mJ4LdEpDKZ9mQy2+qdJm2TZRpjY5JLXihXCgIxiRJgi5g==", + "dev": true, + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } }, "node_modules/@vue/devtools-api": { "version": "6.5.0", @@ -2574,9 +2977,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2595,9 +2998,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" @@ -2725,15 +3128,6 @@ "string-width": "^4.1.0" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -2806,7 +3200,9 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/argparse": { "version": "2.0.1", @@ -3180,12 +3576,6 @@ "node": ">=8" } }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, "node_modules/bson": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", @@ -3255,90 +3645,6 @@ "node": ">= 0.8" } }, - "node_modules/c8": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/c8/-/c8-8.0.1.tgz", - "integrity": "sha512-EINpopxZNH1mETuI0DzRA4MZpAUH+IFiRhnmFD3vFr3vdrgxqi3VfE3KL0AIL+zDq8rC9bZqwM/VDmmoe04y7w==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.1.6", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1" - }, - "bin": { - "c8": "bin/c8.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/c8/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/c8/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/c8/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/c8/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -3524,18 +3830,18 @@ } }, "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -3558,10 +3864,13 @@ } }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -3656,34 +3965,6 @@ "@colors/colors": "1.5.0" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -3859,18 +4140,9 @@ } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/convert-source-map/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, "node_modules/cookie": { @@ -3905,7 +4177,9 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -3970,18 +4244,6 @@ } } }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -4254,13 +4516,13 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { - "node": ">=0.3.1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { @@ -4545,15 +4807,6 @@ "@esbuild/win32-x64": "0.18.20" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/escape-goat": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", @@ -5233,15 +5486,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -5279,19 +5523,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/form-data-encoder": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.2.tgz", @@ -5356,9 +5587,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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, @@ -5430,19 +5661,10 @@ "node": ">=6.0.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" @@ -5780,15 +6002,6 @@ "integrity": "sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==", "dev": true }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, "node_modules/hosted-git-info": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", @@ -6419,18 +6632,6 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -6492,9 +6693,9 @@ "dev": true }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -6514,15 +6715,29 @@ "node": ">=10" } }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { "node": ">=8" } @@ -6767,6 +6982,22 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -6799,22 +7030,6 @@ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/long-timeout": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", @@ -6822,12 +7037,12 @@ "dev": true }, "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lowercase-keys": { @@ -6853,17 +7068,28 @@ } }, "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { "node": ">=12" } }, + "node_modules/magicast": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.3.tgz", + "integrity": "sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "source-map-js": "^1.0.2" + } + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -6883,7 +7109,9 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/make-fetch-happen": { "version": "11.1.1", @@ -7289,95 +7517,16 @@ "node": ">=10" } }, - "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/mlly": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz", + "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" } }, "node_modules/mongo-sql": { @@ -7453,18 +7602,6 @@ "thenify-all": "^1.0.0" } }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -8288,6 +8425,12 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, "node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", @@ -8324,10 +8467,21 @@ "node": ">= 6" } }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, "node_modules/postcss": { - "version": "8.4.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", - "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "dev": true, "funding": [ { @@ -8344,7 +8498,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -8382,9 +8536,9 @@ } }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -8445,6 +8599,32 @@ "node": ">=6.0.0" } }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -8599,15 +8779,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -8683,6 +8854,12 @@ "node": ">=0.10.0" } }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/read-package-json": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", @@ -8882,15 +9059,6 @@ "node": ">=8" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "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", @@ -9202,15 +9370,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", @@ -9333,6 +9492,12 @@ "integrity": "sha512-10rmPF5nuz5UdKuhhxgfS7Vz1aIRGmb+kn5Zy6bntCgNwkbZc0a7Z2dUw2Y9wSoRrBzf7Oim81SUsYdOkVnI8Q==", "dev": true }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -9566,6 +9731,12 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -9575,6 +9746,12 @@ "node": ">= 0.8" } }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "dev": true + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -9713,6 +9890,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/sucrase": { "version": "3.27.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.27.0.tgz", @@ -9897,6 +10086,30 @@ "node": ">=0.8" } }, + "node_modules/tinybench": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz", + "integrity": "sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.1.tgz", + "integrity": "sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", + "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/titleize": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", @@ -9909,6 +10122,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -9988,6 +10210,8 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -10031,6 +10255,8 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.3.1" } @@ -10304,6 +10530,12 @@ "node": ">=14.17" } }, + "node_modules/ufo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", + "dev": true + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -10452,30 +10684,32 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/v8-to-istanbul": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", - "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz", + "integrity": "sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/validate-npm-package-license": { @@ -10564,59 +10798,1235 @@ } } }, - "node_modules/vitepress": { - "version": "1.0.0-rc.4", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.4.tgz", - "integrity": "sha512-JCQ89Bm6ECUTnyzyas3JENo00UDJeK8q1SUQyJYou+4Yz5BKEc/F3O21cu++DnUT2zXc0kvQ2Aj4BZCc/nioXQ==", + "node_modules/vite-node": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.2.0.tgz", + "integrity": "sha512-ETnQTHeAbbOxl7/pyBck9oAPZZZo+kYnFt1uQDD+hPReOc+wCjXw4r4jHriBRuVDB5isHmPXxrfc1yJnfBERqg==", "dev": true, "dependencies": { - "@docsearch/css": "^3.5.1", - "@docsearch/js": "^3.5.1", - "@vitejs/plugin-vue": "^4.2.3", - "@vue/devtools-api": "^6.5.0", - "@vueuse/core": "^10.3.0", - "@vueuse/integrations": "^10.3.0", - "body-scroll-lock": "4.0.0-beta.0", - "focus-trap": "^7.5.2", - "mark.js": "8.11.1", - "minisearch": "^6.1.0", - "shiki": "^0.14.3", - "vite": "^4.4.9", - "vue": "^3.3.4" + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" }, "bin": { - "vitepress": "bin/vitepress.js" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, - "node_modules/vue": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", - "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-dom": "3.3.4", - "@vue/server-renderer": "3.3.4", - "@vue/shared": "3.3.4" + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "node_modules/vite-node/node_modules/@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" + } + }, + "node_modules/vite-node/node_modules/rollup": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz", + "integrity": "sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==", + "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.9.5", + "@rollup/rollup-android-arm64": "4.9.5", + "@rollup/rollup-darwin-arm64": "4.9.5", + "@rollup/rollup-darwin-x64": "4.9.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.5", + "@rollup/rollup-linux-arm64-gnu": "4.9.5", + "@rollup/rollup-linux-arm64-musl": "4.9.5", + "@rollup/rollup-linux-riscv64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-musl": "4.9.5", + "@rollup/rollup-win32-arm64-msvc": "4.9.5", + "@rollup/rollup-win32-ia32-msvc": "4.9.5", + "@rollup/rollup-win32-x64-msvc": "4.9.5", + "fsevents": "~2.3.2" + } + }, + "node_modules/vite-node/node_modules/vite": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", + "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.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/vitepress": { + "version": "1.0.0-rc.4", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.4.tgz", + "integrity": "sha512-JCQ89Bm6ECUTnyzyas3JENo00UDJeK8q1SUQyJYou+4Yz5BKEc/F3O21cu++DnUT2zXc0kvQ2Aj4BZCc/nioXQ==", + "dev": true, + "dependencies": { + "@docsearch/css": "^3.5.1", + "@docsearch/js": "^3.5.1", + "@vitejs/plugin-vue": "^4.2.3", + "@vue/devtools-api": "^6.5.0", + "@vueuse/core": "^10.3.0", + "@vueuse/integrations": "^10.3.0", + "body-scroll-lock": "4.0.0-beta.0", + "focus-trap": "^7.5.2", + "mark.js": "8.11.1", + "minisearch": "^6.1.0", + "shiki": "^0.14.3", + "vite": "^4.4.9", + "vue": "^3.3.4" + }, + "bin": { + "vitepress": "bin/vitepress.js" + } + }, + "node_modules/vitest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.2.0.tgz", + "integrity": "sha512-Ixs5m7BjqvLHXcibkzKRQUvD/XLw0E3rvqaCMlrm/0LMsA0309ZqYvTlPzkhh81VlEyVZXFlwWnkhb6/UMtcaQ==", + "dev": true, + "dependencies": { + "@vitest/expect": "1.2.0", + "@vitest/runner": "1.2.0", + "@vitest/snapshot": "1.2.0", + "@vitest/spy": "1.2.0", + "@vitest/utils": "1.2.0", + "acorn-walk": "^8.3.1", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^1.3.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.1", + "vite": "^5.0.0", + "vite-node": "1.2.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "^1.0.0", + "@vitest/ui": "^1.0.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" + } + }, + "node_modules/vitest/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/vitest/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/vitest/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/rollup": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz", + "integrity": "sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==", + "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.9.5", + "@rollup/rollup-android-arm64": "4.9.5", + "@rollup/rollup-darwin-arm64": "4.9.5", + "@rollup/rollup-darwin-x64": "4.9.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.5", + "@rollup/rollup-linux-arm64-gnu": "4.9.5", + "@rollup/rollup-linux-arm64-musl": "4.9.5", + "@rollup/rollup-linux-riscv64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-musl": "4.9.5", + "@rollup/rollup-win32-arm64-msvc": "4.9.5", + "@rollup/rollup-win32-ia32-msvc": "4.9.5", + "@rollup/rollup-win32-x64-msvc": "4.9.5", + "fsevents": "~2.3.2" + } + }, + "node_modules/vitest/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/vitest/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/vite": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", + "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.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/vscode-oniguruma": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true + }, + "node_modules/vue": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, "engines": { "node": ">=12" @@ -10685,6 +12095,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -10759,12 +12185,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -10913,15 +12333,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -10937,74 +12348,13 @@ "node": ">= 14" } }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -11193,10 +12543,32 @@ "@algolia/requester-common": "4.19.1" } }, + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true + }, "@babel/parser": { - "version": "7.22.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz", - "integrity": "sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true }, "@babel/runtime": { @@ -11208,6 +12580,17 @@ "regenerator-runtime": "^0.14.0" } }, + "@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, "@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -11226,6 +12609,8 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, + "optional": true, + "peer": true, "requires": { "@jridgewell/trace-mapping": "0.3.9" } @@ -11258,6 +12643,13 @@ "algoliasearch": "^4.19.1" } }, + "@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "dev": true, + "optional": true + }, "@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -11897,16 +13289,42 @@ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@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 }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, "@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==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "@jridgewell/trace-mapping": { @@ -12097,6 +13515,97 @@ "config-chain": "^1.1.11" } }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz", + "integrity": "sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz", + "integrity": "sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz", + "integrity": "sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz", + "integrity": "sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz", + "integrity": "sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz", + "integrity": "sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz", + "integrity": "sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz", + "integrity": "sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz", + "integrity": "sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz", + "integrity": "sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz", + "integrity": "sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz", + "integrity": "sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz", + "integrity": "sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ==", + "dev": true, + "optional": true + }, "@sigstore/bundle": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", @@ -12133,6 +13642,12 @@ "tuf-js": "^1.1.7" } }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "@sindresorhus/is": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", @@ -12181,25 +13696,33 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "@tufjs/canonical-json": { "version": "1.0.0", @@ -12247,12 +13770,6 @@ "@types/node": "*" } }, - "@types/chai": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz", - "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==", - "dev": true - }, "@types/clone": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@types/clone/-/clone-2.1.1.tgz", @@ -12307,6 +13824,12 @@ "@types/ms": "*" } }, + "@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 + }, "@types/express": { "version": "4.17.17", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", @@ -12339,9 +13862,9 @@ "optional": true }, "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, "@types/json-schema": { @@ -12377,12 +13900,6 @@ "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, - "@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true - }, "@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -12586,6 +14103,109 @@ "dev": true, "requires": {} }, + "@vitest/coverage-v8": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.2.0.tgz", + "integrity": "sha512-YvX8ULTUm1+zkvkl14IqXYGxE1h13OXKPoDsxazARKlp4YLrP28hHEBdplaU7ZTN/Yn6zy6Z3JadWNRJwcmyrQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.4", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.1.6", + "magic-string": "^0.30.5", + "magicast": "^0.3.2", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.2.0" + } + }, + "@vitest/expect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.0.tgz", + "integrity": "sha512-H+2bHzhyvgp32o7Pgj2h9RTHN0pgYaoi26Oo3mE+dCi1PAqV31kIIVfTbqMO3Bvshd5mIrJLc73EwSRrbol9Lw==", + "dev": true, + "requires": { + "@vitest/spy": "1.2.0", + "@vitest/utils": "1.2.0", + "chai": "^4.3.10" + } + }, + "@vitest/runner": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.2.0.tgz", + "integrity": "sha512-vaJkDoQaNUTroT70OhM0NPznP7H3WyRwt4LvGwCVYs/llLaqhoSLnlIhUClZpbF5RgAee29KRcNz0FEhYcgxqA==", + "dev": true, + "requires": { + "@vitest/utils": "1.2.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "dependencies": { + "p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, + "@vitest/snapshot": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.2.0.tgz", + "integrity": "sha512-P33EE7TrVgB3HDLllrjK/GG6WSnmUtWohbwcQqmm7TAk9AVHpdgf7M3F3qRHKm6vhr7x3eGIln7VH052Smo6Kw==", + "dev": true, + "requires": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + } + }, + "@vitest/spy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.2.0.tgz", + "integrity": "sha512-MNxSAfxUaCeowqyyGwC293yZgk7cECZU9wGb8N1pYQ0yOn/SIr8t0l9XnGRdQZvNV/ZHBYu6GO/W3tj5K3VN1Q==", + "dev": true, + "requires": { + "tinyspy": "^2.2.0" + } + }, + "@vitest/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-FyD5bpugsXlwVpTcGLDf3wSPYy8g541fQt14qtzo8mJ4LdEpDKZ9mQy2+qdJm2TZRpjY5JLXihXCgIxiRJgi5g==", + "dev": true, + "requires": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0" + } + } + } + }, "@vue/compiler-core": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", @@ -12783,9 +14403,9 @@ } }, "acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true }, "acorn-jsx": { @@ -12796,9 +14416,9 @@ "requires": {} }, "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true }, "agent-base": { @@ -12900,12 +14520,6 @@ "string-width": "^4.1.0" } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -12963,7 +14577,9 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "argparse": { "version": "2.0.1", @@ -13238,12 +14854,6 @@ "fill-range": "^7.0.1" } }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, "bson": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", @@ -13295,71 +14905,6 @@ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, - "c8": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/c8/-/c8-8.0.1.tgz", - "integrity": "sha512-EINpopxZNH1mETuI0DzRA4MZpAUH+IFiRhnmFD3vFr3vdrgxqi3VfE3KL0AIL+zDq8rC9bZqwM/VDmmoe04y7w==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.1.6", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, "cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -13490,18 +15035,18 @@ "dev": true }, "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "requires": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" } }, "chalk": { @@ -13515,10 +15060,13 @@ } }, "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "requires": { + "get-func-name": "^2.0.2" + } }, "chokidar": { "version": "3.5.3", @@ -13581,30 +15129,6 @@ "string-width": "^4.2.0" } }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", @@ -13746,25 +15270,14 @@ "content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "cookie": { "version": "0.5.0", @@ -13792,7 +15305,9 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "cross-spawn": { "version": "7.0.3", @@ -13836,12 +15351,6 @@ "ms": "2.1.2" } }, - "decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true - }, "decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -14021,10 +15530,10 @@ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true }, "dir-glob": { @@ -14261,12 +15770,6 @@ "@esbuild/win32-x64": "0.18.20" } }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, "escape-goat": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", @@ -14811,12 +16314,6 @@ "path-exists": "^4.0.0" } }, - "flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true - }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -14851,16 +16348,6 @@ "is-callable": "^1.1.3" } }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, "form-data-encoder": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.2.tgz", @@ -14909,9 +16396,9 @@ "dev": true }, "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "optional": true }, @@ -14961,16 +16448,10 @@ "integrity": "sha512-LuYDCS1DbKQsvChP1xHmAzHnGdd0z0K1XMebmbNbFzGZI62KODnV2CXA7zOqebiDzlK2sxXrPGfwlDzSm9aP4g==", "dev": true }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "get-intrinsic": { @@ -15198,12 +16679,6 @@ "integrity": "sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==", "dev": true }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, "hosted-git-info": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", @@ -15646,12 +17121,6 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -15697,9 +17166,9 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true }, "istanbul-lib-report": { @@ -15713,6 +17182,17 @@ "supports-color": "^7.1.0" } }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, "istanbul-reports": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", @@ -15912,6 +17392,16 @@ "integrity": "sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==", "dev": true }, + "local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "requires": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -15938,16 +17428,6 @@ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, "long-timeout": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", @@ -15955,12 +17435,12 @@ "dev": true }, "loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "requires": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "lowercase-keys": { @@ -15980,12 +17460,23 @@ } }, "magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "magicast": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.3.tgz", + "integrity": "sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==", "dev": true, "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "source-map-js": "^1.0.2" } }, "make-dir": { @@ -16001,7 +17492,9 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "make-fetch-happen": { "version": "11.1.1", @@ -16331,74 +17824,16 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "mlly": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz", + "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==", "dev": true, "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true - } + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" } }, "mongo-sql": { @@ -16445,12 +17880,6 @@ "thenify-all": "^1.0.0" } }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -17038,6 +18467,12 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, "pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", @@ -17062,21 +18497,32 @@ "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", "dev": true }, + "pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, "postcss": { - "version": "8.4.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", - "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "dev": true, "requires": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, "dependencies": { "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true } } @@ -17118,6 +18564,25 @@ "fast-diff": "^1.1.2" } }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, "proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -17219,15 +18684,6 @@ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -17292,6 +18748,12 @@ "require-from-string": "^2.0.2" } }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "read-package-json": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", @@ -17433,12 +18895,6 @@ "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", "dev": true }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -17654,15 +19110,6 @@ } } }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, "serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", @@ -17761,6 +19208,12 @@ "integrity": "sha512-10rmPF5nuz5UdKuhhxgfS7Vz1aIRGmb+kn5Zy6bntCgNwkbZc0a7Z2dUw2Y9wSoRrBzf7Oim81SUsYdOkVnI8Q==", "dev": true }, + "siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -17952,12 +19405,24 @@ } } }, + "stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, + "std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "dev": true + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -18058,6 +19523,15 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, + "strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "requires": { + "acorn": "^8.10.0" + } + }, "sucrase": { "version": "3.27.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.27.0.tgz", @@ -18202,12 +19676,36 @@ "thenify": ">= 3.1.0 < 4" } }, + "tinybench": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz", + "integrity": "sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==", + "dev": true + }, + "tinypool": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.1.tgz", + "integrity": "sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==", + "dev": true + }, + "tinyspy": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", + "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", + "dev": true + }, "titleize": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", "dev": true }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -18267,6 +19765,8 @@ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, + "optional": true, + "peer": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -18287,7 +19787,9 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true + "dev": true, + "optional": true, + "peer": true } } }, @@ -18489,6 +19991,12 @@ "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true }, + "ufo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", + "dev": true + }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -18600,68 +20108,305 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "v8-to-istanbul": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", - "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "dependencies": { "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz", + "integrity": "sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vite": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", + "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "dev": true, + "requires": { + "esbuild": "^0.18.10", + "fsevents": "~2.3.2", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + } + }, + "vite-node": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.2.0.tgz", + "integrity": "sha512-ETnQTHeAbbOxl7/pyBck9oAPZZZo+kYnFt1uQDD+hPReOc+wCjXw4r4jHriBRuVDB5isHmPXxrfc1yJnfBERqg==", + "dev": true, + "requires": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" + } + }, + "rollup": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz", + "integrity": "sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.9.5", + "@rollup/rollup-android-arm64": "4.9.5", + "@rollup/rollup-darwin-arm64": "4.9.5", + "@rollup/rollup-darwin-x64": "4.9.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.5", + "@rollup/rollup-linux-arm64-gnu": "4.9.5", + "@rollup/rollup-linux-arm64-musl": "4.9.5", + "@rollup/rollup-linux-riscv64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-musl": "4.9.5", + "@rollup/rollup-win32-arm64-msvc": "4.9.5", + "@rollup/rollup-win32-ia32-msvc": "4.9.5", + "@rollup/rollup-win32-x64-msvc": "4.9.5", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, + "vite": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", + "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "esbuild": "^0.19.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" } } } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", - "dev": true, - "requires": { - "esbuild": "^0.18.10", - "fsevents": "~2.3.2", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - } - }, "vitepress": { "version": "1.0.0-rc.4", "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.4.tgz", @@ -18683,6 +20428,334 @@ "vue": "^3.3.4" } }, + "vitest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.2.0.tgz", + "integrity": "sha512-Ixs5m7BjqvLHXcibkzKRQUvD/XLw0E3rvqaCMlrm/0LMsA0309ZqYvTlPzkhh81VlEyVZXFlwWnkhb6/UMtcaQ==", + "dev": true, + "requires": { + "@vitest/expect": "1.2.0", + "@vitest/runner": "1.2.0", + "@vitest/snapshot": "1.2.0", + "@vitest/spy": "1.2.0", + "@vitest/utils": "1.2.0", + "acorn-walk": "^8.3.1", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^1.3.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.1", + "vite": "^5.0.0", + "vite-node": "1.2.0", + "why-is-node-running": "^2.2.2" + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" + } + }, + "execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true + }, + "human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "rollup": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.5.tgz", + "integrity": "sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.9.5", + "@rollup/rollup-android-arm64": "4.9.5", + "@rollup/rollup-darwin-arm64": "4.9.5", + "@rollup/rollup-darwin-x64": "4.9.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.5", + "@rollup/rollup-linux-arm64-gnu": "4.9.5", + "@rollup/rollup-linux-arm64-musl": "4.9.5", + "@rollup/rollup-linux-riscv64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-gnu": "4.9.5", + "@rollup/rollup-linux-x64-musl": "4.9.5", + "@rollup/rollup-win32-arm64-msvc": "4.9.5", + "@rollup/rollup-win32-ia32-msvc": "4.9.5", + "@rollup/rollup-win32-x64-msvc": "4.9.5", + "@types/estree": "1.0.5", + "fsevents": "~2.3.2" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + }, + "vite": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", + "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", + "dev": true, + "requires": { + "esbuild": "^0.19.3", + "fsevents": "~2.3.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + } + } + } + }, "vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", @@ -18759,6 +20832,16 @@ "has-tostringtag": "^1.0.0" } }, + "why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "requires": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + } + }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -18811,12 +20894,6 @@ } } }, - "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, "wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -18910,12 +20987,6 @@ "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -18928,58 +20999,13 @@ "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, - "yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } - } - }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "yocto-queue": { "version": "0.1.0", diff --git a/package.json b/package.json index 3aee3380..04f9ff59 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,9 @@ "changelog": "github_changelog_generator --max-issues 200 -u feathersjs-ecosystem -p feathers-hooks-common && git add CHANGELOG.md && git commit -am \"Updating changelog\"", "lint": "eslint src/**/*.ts test/**/*.ts --fix", "update-dependencies": "ncu -u -x ajv", - "mocha": "mocha --require ts-node/register", - "coverage": "c8 npm run mocha", - "test": "npm run lint && npm run coverage" + "test:unit": "vitest run", + "coverage": "vitest run --coverage", + "test": "npm run lint && npm run test:unit" }, "repository": { "type": "git", @@ -80,33 +80,29 @@ "@feathersjs/memory": "^5.0.8", "@feathersjs/socketio": "^5.0.8", "@feathersjs/socketio-client": "^5.0.8", - "@types/chai": "^4.3.5", "@types/clone": "^2.1.1", "@types/debug": "^4.1.8", "@types/lodash": "^4.14.197", - "@types/mocha": "^10.0.1", "@types/node": "^20.5.3", "@types/traverse": "^0.6.32", "@typescript-eslint/eslint-plugin": "^6.4.1", "@typescript-eslint/parser": "^6.4.1", - "c8": "^8.0.1", - "chai": "^4.3.7", + "@vitest/coverage-v8": "^1.2.0", "clone": "^2.1.2", "eslint": "^8.47.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "^2.28.1", "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-prettier": "^5.0.0", - "mocha": "^10.2.0", "mongodb": "^5.8.0", "npm-check-updates": "^16.13.0", "prettier": "^3.0.2", "shx": "^0.3.4", "sift": "^17.0.1", - "ts-node": "^10.9.1", "tsup": "^7.2.0", "typescript": "^5.1.6", - "vitepress": "^1.0.0-rc.4" + "vitepress": "^1.0.0-rc.4", + "vitest": "^1.2.0" }, "peerDependencies": { "@feathersjs/feathers": "^5.0.0" diff --git a/src/common/pluck.ts b/src/common/pluck.ts index 5dc68c70..ecd91d9f 100755 --- a/src/common/pluck.ts +++ b/src/common/pluck.ts @@ -2,22 +2,22 @@ import _pick from 'lodash/pick.js'; export function pluck>( items: T, - fieldNames: string[] + fieldNames: string[], ): Record; export function pluck>( items: T[], - fieldNames: string[] + fieldNames: string[], ): Record[]; export function pluck>( items: T | T[], - fieldNames: string[] + fieldNames: string[], ): Record | Record[] { if (!Array.isArray(items)) { return _pick(items, fieldNames); } const pluckedItems = (Array.isArray(items) ? items : [items]).map(item => - _pick(item, fieldNames) + _pick(item, fieldNames), ); return pluckedItems; diff --git a/src/common/set-fields.ts b/src/common/set-fields.ts index c820bbdd..8ae66905 100755 --- a/src/common/set-fields.ts +++ b/src/common/set-fields.ts @@ -4,7 +4,7 @@ export function setFields>( items: T | T[], fieldValue: any, fieldNames: string[], - defaultFieldName: string + defaultFieldName: string, ): void { const value = typeof fieldValue === 'function' ? fieldValue() : fieldValue; diff --git a/src/common/transform-items.ts b/src/common/transform-items.ts index 89869e2d..091e94ce 100755 --- a/src/common/transform-items.ts +++ b/src/common/transform-items.ts @@ -3,7 +3,7 @@ import _get from 'lodash/get.js'; export function transformItems>( items: T | T[], fieldNames: string[], - transformer: (item: T, fieldName: string, val: any) => void + transformer: (item: T, fieldName: string, val: any) => void, ): void { (Array.isArray(items) ? items : [items]).forEach(item => { fieldNames.forEach((fieldName: any) => { diff --git a/src/common/traverse.ts b/src/common/traverse.ts index 8b1b18fa..18417cf2 100755 --- a/src/common/traverse.ts +++ b/src/common/traverse.ts @@ -2,7 +2,7 @@ import traverser from 'traverse'; export function traverse>( items: T | T[], - converter: (item: T) => void + converter: (item: T) => void, ) { (Array.isArray(items) ? items : [items]).forEach(item => { traverser(item).forEach(converter); // replacement is in place diff --git a/src/hooks/alter-items.ts b/src/hooks/alter-items.ts index 9b9a50a1..4e6863dc 100755 --- a/src/hooks/alter-items.ts +++ b/src/hooks/alter-items.ts @@ -10,7 +10,7 @@ import { replaceItems } from '../utils/replace-items'; * @see https://hooks-common.feathersjs.com/hooks.html#alteritems */ export function alterItems( - cb: (record: T, context: H) => any + cb: (record: T, context: H) => any, ) { if (!cb) { cb = () => {}; diff --git a/src/hooks/cache.ts b/src/hooks/cache.ts index 8fc25ed3..bf95c741 100755 --- a/src/hooks/cache.ts +++ b/src/hooks/cache.ts @@ -19,7 +19,7 @@ const defaultMakeCacheKey = (key: any) => key; export function cache( cacheMap: CacheMap, keyField?: string, - options?: CacheOptions + options?: CacheOptions, ) { const clone = options?.clone || defaultClone; const makeCacheKey = options?.makeCacheKey || defaultMakeCacheKey; diff --git a/src/hooks/debug.ts b/src/hooks/debug.ts index cd4b0856..6d54e0d9 100755 --- a/src/hooks/debug.ts +++ b/src/hooks/debug.ts @@ -12,7 +12,7 @@ export function debug(msg: string, ...field console.log( `${now.getFullYear()}-${ now.getMonth() + 1 - }-${now.getDate()} ${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}` + }-${now.getDate()} ${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}`, ); if (msg) { diff --git a/src/hooks/disallow.ts b/src/hooks/disallow.ts index bb5c2c0c..c46d6e2e 100755 --- a/src/hooks/disallow.ts +++ b/src/hooks/disallow.ts @@ -15,12 +15,12 @@ export function disallow(...transports: Tra provider => provider === hookProvider || (provider === 'server' && !hookProvider) || - (provider === 'external' && !!hookProvider) + (provider === 'external' && !!hookProvider), ); if (anyProvider || thisProvider) { throw new MethodNotAllowed( - `Provider '${context.params.provider}' can not call '${context.method}'. (disallow)` + `Provider '${context.params.provider}' can not call '${context.method}'. (disallow)`, ); } }; diff --git a/src/hooks/fast-join.ts b/src/hooks/fast-join.ts index b18a35e8..3dd46c50 100755 --- a/src/hooks/fast-join.ts +++ b/src/hooks/fast-join.ts @@ -41,7 +41,7 @@ export interface ResolverMap { */ export function fastJoin( resolvers: ResolverMap | SyncContextFunction, H>, - query?: Query | SyncContextFunction + query?: Query | SyncContextFunction, ) { return (context: H) => { const { method, data, result, params } = context; @@ -64,7 +64,7 @@ export function fastJoin( // @ts-ignore .then(() => before && before(context)) .then( - () => joins && results && recursive(joinsForQuery(joins2, q, context), results, context) + () => joins && results && recursive(joinsForQuery(joins2, q, context), results, context), ) // @ts-ignore .then(() => after && after(context)) @@ -121,8 +121,8 @@ function recursive(joins: any, results: any, context: any) { return recursive(joins, addedResults, context); }); - }) - ) - ) + }), + ), + ), ); } diff --git a/src/hooks/fgraphql.ts b/src/hooks/fgraphql.ts index a3f8432d..4ecda88e 100755 --- a/src/hooks/fgraphql.ts +++ b/src/hooks/fgraphql.ts @@ -59,7 +59,7 @@ export function fgraphql(options1: FGraphQL inclJoinedNames: true, extraAuthProps: [], }, - options1.options || {} + options1.options || {}, ); // @ts-ignore @@ -68,7 +68,7 @@ export function fgraphql(options1: FGraphQL if (!isObject(schema) && !isString(schema)) { throwError( `Resolved schema is typeof ${typeof schema} rather than string or object. (fgraphql)`, - 101 + 101, ); } @@ -85,7 +85,7 @@ export function fgraphql(options1: FGraphQL // @ts-ignore throwError( `option extraAuthProps is typeof ${typeof options.extraAuthProps} rather than array. (fgraphql)`, - 105 + 105, ); } @@ -99,7 +99,7 @@ export function fgraphql(options1: FGraphQL const optSkipHookWhen = options.skipHookWhen; const skipHookWhen = isFunction(optSkipHookWhen) ? optSkipHookWhen(context) : optSkipHookWhen; debug( - `\n.....hook called. type ${context.type} method ${context.method} resolved skipHookWhen ${skipHookWhen}` + `\n.....hook called. type ${context.type} method ${context.method} resolved skipHookWhen ${skipHookWhen}`, ); if (context.params.$populate) return context; // populate or fastJoin are running @@ -179,7 +179,7 @@ function processRecords(store: any, query: any, recs: any, type: any, depth = 0) if (!isObject(storeOurResolversType)) { throwError( `Resolvers for Type ${type} are typeof ${typeof storeOurResolversType} not object. (fgraphql)`, - 201 + 201, ); } @@ -188,7 +188,7 @@ function processRecords(store: any, query: any, recs: any, type: any, depth = 0) } return Promise.all( - recs.map((rec: any, j: any) => processRecord(store, query, depth, rec, type, j)) + recs.map((rec: any, j: any) => processRecord(store, query, depth, rec, type, j)), ).then(() => { debug(`^^^^^^^^^^ exit ${depth}\n`); }); @@ -216,9 +216,9 @@ function processRecord(store: any, query: any, depth: any, rec: any, type: any, recFieldNamesInQuery, joinedNamesInQuery, j, - i - ) - ) + i, + ), + ), ).then(() => { // Retain only record fields selected debug(`field names found ${recFieldNamesInQuery} joined names ${joinedNamesInQuery}`); @@ -253,7 +253,7 @@ function processRecordQuery( recFieldNamesInQuery: any, joinedNamesInQuery: any, j: any, - i: any + i: any, ): any { debug(`\nprocessRecordQuery rec# ${j} Type ${type} field# ${i} name ${fieldName}`); @@ -277,7 +277,7 @@ function processRecordFieldResolver( depth: any, rec: any, fieldName: any, - type: any + type: any, ) { debug('is resolver call'); const ourQuery = store.feathersSdl[type][fieldName]; @@ -286,7 +286,7 @@ function processRecordFieldResolver( if (!isFunction(ourResolver)) { throwError( `Resolver for Type ${type} fieldName ${fieldName} is typeof ${typeof ourResolver} not function. (fgraphql)`, - 203 + 203, ); } @@ -299,7 +299,7 @@ function processRecordFieldResolver( debug( `resolver returned typeof ${ isArray(rawResult) ? `array #recs ${rawResult.length}` : typeof rawResult - }` + }`, ); // Convert rawResult to query requirements. @@ -308,7 +308,7 @@ function processRecordFieldResolver( debug( `.....resolver result converted to typeof ${ isArray(result) ? `array #recs ${result.length}` : typeof result - }` + }`, ); } rec[fieldName] = result; @@ -323,7 +323,7 @@ function processRecordFieldResolver( } else { debug('no population of results required'); } - } + }, ); } @@ -339,7 +339,7 @@ function convertResolverResult(result: any, ourQuery: any, fieldName: any, type: if (result.length > 1) { throwError( `Query listType true. Resolver for Type ${type} fieldName ${fieldName} result is array len ${result.length} (fgraphql)`, - 204 + 204, ); } diff --git a/src/hooks/iff-else.ts b/src/hooks/iff-else.ts index 46f77b68..029b3835 100755 --- a/src/hooks/iff-else.ts +++ b/src/hooks/iff-else.ts @@ -10,7 +10,7 @@ import type { HookFunction, PredicateFn } from '../types'; export function iffElse( predicate: boolean | PredicateFn, trueHook: HookFunction | HookFunction[] | undefined, - falseHook?: HookFunction | HookFunction[] | undefined + falseHook?: HookFunction | HookFunction[] | undefined, ) { // fnArgs is [context] for service & permission hooks, [data, connection, context] for event filters return function (this: any, ctx: H) { @@ -47,7 +47,7 @@ export function iffElse( function callHooks( this: any, ctx: H, - serviceHooks: HookFunction[] + serviceHooks: HookFunction[], ) { return serviceHooks ? combine(...serviceHooks).call(this, ctx) : ctx; } diff --git a/src/hooks/keep-in-array.ts b/src/hooks/keep-in-array.ts index e8ccfb98..51833bba 100755 --- a/src/hooks/keep-in-array.ts +++ b/src/hooks/keep-in-array.ts @@ -11,7 +11,7 @@ import type { HookContext } from '@feathersjs/feathers'; */ export function keepInArray( arrayName: string, - fieldNames: string[] + fieldNames: string[], ) { return (context: H) => { const items = getItems(context); @@ -31,13 +31,13 @@ function replaceIn(item: any, field: any, fieldNames: any) { if (target) { if (!Array.isArray(target)) throw new BadRequest( - `The 'field' param must lead to array. found type '${typeof target}' instead` + `The 'field' param must lead to array. found type '${typeof target}' instead`, ); _set( item, field, - target.map(item => replaceItem(item, fieldNames)) + target.map(item => replaceItem(item, fieldNames)), ); } } diff --git a/src/hooks/keep-query-in-array.ts b/src/hooks/keep-query-in-array.ts index fe1e47af..7b32ab5d 100644 --- a/src/hooks/keep-query-in-array.ts +++ b/src/hooks/keep-query-in-array.ts @@ -11,7 +11,7 @@ import type { HookContext } from '@feathersjs/feathers'; */ export function keepQueryInArray( arrayName: string, - fieldNames: string[] + fieldNames: string[], ) { return (context: H) => { checkContext(context, 'before', null, 'keepQueryInArray'); @@ -27,13 +27,13 @@ function replaceIn(item: any, field: any, fieldNames: any) { if (target) { if (!Array.isArray(target)) throw new BadRequest( - `The 'field' param must lead to array. found type '${typeof target}' instead` + `The 'field' param must lead to array. found type '${typeof target}' instead`, ); _set( item, field, - target.map(item => replaceItem(item, fieldNames)) + target.map(item => replaceItem(item, fieldNames)), ); } } diff --git a/src/hooks/keep.ts b/src/hooks/keep.ts index e34c488b..48df0eef 100755 --- a/src/hooks/keep.ts +++ b/src/hooks/keep.ts @@ -19,7 +19,7 @@ export function keep(...fieldNames: string[ if (Array.isArray(items)) { replaceItems( context, - items.map(item => replaceItem(item, fieldNames)) + items.map(item => replaceItem(item, fieldNames)), ); } else { replaceItems(context, replaceItem(items, fieldNames)); diff --git a/src/hooks/mongo-keys.ts b/src/hooks/mongo-keys.ts index e9a35ef4..0025766a 100755 --- a/src/hooks/mongo-keys.ts +++ b/src/hooks/mongo-keys.ts @@ -9,7 +9,7 @@ import { checkContext } from '../utils/check-context'; */ export function mongoKeys( ObjectId: new (id?: string | number) => any, - keyFields: string | string[] + keyFields: string | string[], ) { keyFields = Array.isArray(keyFields) ? keyFields : [keyFields]; const keyLeaves: any = []; diff --git a/src/hooks/populate.ts b/src/hooks/populate.ts index c05cf93a..d08b7720 100755 --- a/src/hooks/populate.ts +++ b/src/hooks/populate.ts @@ -144,7 +144,7 @@ function populateItemArray( context: HookContext, items: any, includeSchema: any, - depth: number + depth: number, ): any { // 'items' is an item or an array of items // 'includeSchema' is like [ { nameAs: 'author', ... }, { nameAs: 'readers', ... } ] @@ -158,7 +158,7 @@ function populateItemArray( } return Promise.all( - items.map(item => populateItem(options, context, item, includeSchema, depth + 1)) + items.map(item => populateItem(options, context, item, includeSchema, depth + 1)), ); } @@ -167,7 +167,7 @@ function populateItem( context: HookContext, item: any, includeSchema: any, - depth: number + depth: number, ): any { // 'item' is one item // 'includeSchema' is like [ { nameAs: 'author', ... }, { nameAs: 'readers', ... } ] @@ -194,7 +194,7 @@ function populateItem( return result; }); - }) + }), ).then(children => { // 'children' is like // [{ nameAs: 'authorInfo', items: {...} }, { nameAs: readersInfo, items: [{...}, {...}] }] @@ -218,7 +218,7 @@ function populateAddChild( context: HookContext, parentItem: any, childSchema: any, - depth: any + depth: any, ): any { /* @params @@ -281,7 +281,7 @@ function populateAddChild( {}, query, sqlQuery, - selectQuery // dynamic options override static ones + selectQuery, // dynamic options override static ones ); const serviceHandle = context.app.service(service); @@ -305,7 +305,7 @@ function populateAddChild( paginateObj, { query: queryObj }, useInnerPopulate ? {} : { _populate: 'skip' }, - 'provider' in childSchema ? { provider: childSchema.provider } : {} + 'provider' in childSchema ? { provider: childSchema.provider } : {}, ); return serviceHandle.find(params); diff --git a/src/hooks/run-parallel.ts b/src/hooks/run-parallel.ts index 017f1e6b..fc837b8a 100755 --- a/src/hooks/run-parallel.ts +++ b/src/hooks/run-parallel.ts @@ -9,7 +9,7 @@ import type { HookFunction } from '../types'; */ export function runParallel( hook: HookFunction, - clone?: (item: H) => H + clone?: (item: H) => H, ) { if (typeof hook !== 'function') { throw new BadRequest('Function not provided. (runParallel)'); diff --git a/src/hooks/sequelize-convert.ts b/src/hooks/sequelize-convert.ts index 11e50757..558eeb4c 100755 --- a/src/hooks/sequelize-convert.ts +++ b/src/hooks/sequelize-convert.ts @@ -32,11 +32,11 @@ const defaultConversions = { */ export function sequelizeConvert< C extends { [name: string]: SequelizeConversion }, - H extends HookContext = HookContext + H extends HookContext = HookContext, >( converts: SequelizeConverts | null | undefined | false, ignores?: string[] | null | undefined | false, - conversions?: C + conversions?: C, ) { const converter = sequelizeConversion(converts, ignores, conversions); diff --git a/src/hooks/serialize.ts b/src/hooks/serialize.ts index 058248b1..e9ef09ab 100755 --- a/src/hooks/serialize.ts +++ b/src/hooks/serialize.ts @@ -27,7 +27,7 @@ export interface SerializeSchema { * @see https://hooks-common.feathersjs.com/hooks.html#serialize */ export function serialize( - schema1: SerializeSchema | SyncContextFunction + schema1: SerializeSchema | SyncContextFunction, ) { return (context: H) => { const schema = typeof schema1 === 'function' ? schema1(context) : schema1; diff --git a/src/hooks/sifter.ts b/src/hooks/sifter.ts index 9acd044e..ba4f481d 100755 --- a/src/hooks/sifter.ts +++ b/src/hooks/sifter.ts @@ -6,7 +6,7 @@ import { getItems } from '../utils/get-items'; import { replaceItems } from '../utils/replace-items'; export function sifter( - siftFunc: SyncContextFunction<(item: any) => boolean, H> + siftFunc: SyncContextFunction<(item: any) => boolean, H>, ) { return (context: H) => { checkContext(context, 'after', 'find', 'sifter'); diff --git a/src/hooks/soft-delete.ts b/src/hooks/soft-delete.ts index 24180701..04551eef 100755 --- a/src/hooks/soft-delete.ts +++ b/src/hooks/soft-delete.ts @@ -2,7 +2,7 @@ import type { HookContext } from '@feathersjs/feathers'; import { checkContext } from '../utils/check-context'; export type SoftDeleteOptionFunction = ( - context?: H + context?: H, ) => Promise<{ [key: string]: any }>; export interface SoftDeleteOptions { diff --git a/src/hooks/traverse.ts b/src/hooks/traverse.ts index 628a8fcb..7666f25c 100755 --- a/src/hooks/traverse.ts +++ b/src/hooks/traverse.ts @@ -10,7 +10,7 @@ import { getItems } from '../utils/get-items'; */ export function traverse( transformer: (transformContext: any) => any, - getObject?: SyncContextFunction + getObject?: SyncContextFunction, ) { return (context: H) => { const items = diff --git a/src/hooks/validate-schema.ts b/src/hooks/validate-schema.ts index 0f9cfb01..fb89e1c7 100755 --- a/src/hooks/validate-schema.ts +++ b/src/hooks/validate-schema.ts @@ -11,7 +11,7 @@ export function validateSchema( schema: object | string, ajvOrAjv: AjvOrNewable, // @ts-ignore - options: ValidateSchemaOptions = { allErrors: true } + options: ValidateSchemaOptions = { allErrors: true }, ) { const addNewError = options?.addNewError || addNewErrorDflt; // delete options.addNewError; @@ -45,7 +45,7 @@ export function validateSchema( addErrors(err.errors, index); }); - }) + }), ).then(() => { if (invalid) { throw new BadRequest('Data does not match schema', { errors: errorMessages }); diff --git a/src/hooks/validate.ts b/src/hooks/validate.ts index faefd114..72b07fd3 100755 --- a/src/hooks/validate.ts +++ b/src/hooks/validate.ts @@ -8,11 +8,11 @@ import { replaceItems } from '../utils/replace-items'; export type SyncValidatorFn = ( values: any, - context: H + context: H, ) => { [key: string]: string } | null; export type AsyncValidatorFn = ( values: any, - context: H + context: H, ) => Promise; export type ValidatorFn = | SyncValidatorFn @@ -30,7 +30,7 @@ export interface ValidateSchemaOptions extends AjvOptions { currentFormattedMessages: any, ajvErrorObject: ajvErrorObject, itemsLen: number, - itemIndex: number + itemIndex: number, ) => any; } diff --git a/src/utils/calling-params.ts b/src/utils/calling-params.ts index 454d146e..5a24e534 100755 --- a/src/utils/calling-params.ts +++ b/src/utils/calling-params.ts @@ -124,7 +124,7 @@ export function makeCallingParams( context: H, query?: any, include?: string | string[], - inject = {} + inject = {}, ) { return callingParams({ query, diff --git a/src/utils/check-context-if.ts b/src/utils/check-context-if.ts index 641ec248..23b3f2ef 100755 --- a/src/utils/check-context-if.ts +++ b/src/utils/check-context-if.ts @@ -13,7 +13,7 @@ export function checkContextIf( context: H, type: HookType | HookType[], methods?: MethodName | MethodName[] | null, - label?: string + label?: string, ) { if (Array.isArray(type) ? !type.includes(context.type) : type !== context.type) { return; diff --git a/src/utils/check-context.ts b/src/utils/check-context.ts index cfdd7db4..54fc9e45 100755 --- a/src/utils/check-context.ts +++ b/src/utils/check-context.ts @@ -10,7 +10,7 @@ export function checkContext( context: H, type?: HookType | HookType[] | null, methods?: MethodName | MethodName[] | null, - label = 'anonymous' + label = 'anonymous', ): void { if (type) { const types = Array.isArray(type) ? type : [type]; // safe enough for allowed values diff --git a/src/utils/combine.ts b/src/utils/combine.ts index 21a795b3..e1e44eca 100755 --- a/src/utils/combine.ts +++ b/src/utils/combine.ts @@ -23,7 +23,7 @@ export function combine(...serviceHooks: Ho if (current) { if (!isContext(current)) { throw new Error( - `${ctx.type} hook for '${ctx.method}' method returned invalid hook object` + `${ctx.type} hook for '${ctx.method}' method returned invalid hook object`, ); } diff --git a/src/utils/is-not.ts b/src/utils/is-not.ts index 045f6fb0..fa6b359d 100755 --- a/src/utils/is-not.ts +++ b/src/utils/is-not.ts @@ -9,7 +9,7 @@ import type { PredicateFn } from '../types'; * @see https://hooks-common.feathersjs.com/utilities.html#isnot */ export function isNot( - predicate: boolean | PredicateFn + predicate: boolean | PredicateFn, ): PredicateFn { if (typeof predicate !== 'function') { throw new MethodNotAllowed('Expected function as param. (isNot)'); diff --git a/src/utils/is-provider.ts b/src/utils/is-provider.ts index b40f41e5..fe695042 100755 --- a/src/utils/is-provider.ts +++ b/src/utils/is-provider.ts @@ -18,7 +18,7 @@ export function isProvider(...providers: Tr provider => provider === hookProvider || (provider === 'server' && !hookProvider) || - (provider === 'external' && !!hookProvider) + (provider === 'external' && !!hookProvider), ); }; } diff --git a/src/utils/run-hook.ts b/src/utils/run-hook.ts index 2745d117..706b08f4 100755 --- a/src/utils/run-hook.ts +++ b/src/utils/run-hook.ts @@ -5,7 +5,7 @@ import type { HookContext, Paginated } from '@feathersjs/feathers'; * @see https://hooks-common.feathersjs.com/utilities.html#runhook */ export function runHook( - context?: H + context?: H, ): (hook: any) => (data: any[] | Paginated) => Promise { const extraContent = context; // cannot access extraContent1 below. why not? diff --git a/test/common/traverse.test.ts b/test/common/traverse.test.ts index 33327d3d..3a498c2b 100755 --- a/test/common/traverse.test.ts +++ b/test/common/traverse.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { traverse } from '../../src'; describe('services traverse', () => { diff --git a/test/helpers/make-services.ts b/test/helpers/make-services.ts index 659526bd..85d2e533 100755 --- a/test/helpers/make-services.ts +++ b/test/helpers/make-services.ts @@ -67,7 +67,7 @@ function makeService(store1: any, _name: any) { ? post[field] === value : value.$in.indexOf(post[field]) !== -1; }) - .map((post: any) => pluck(post, $select)) + .map((post: any) => pluck(post, $select)), ); }, }; diff --git a/test/hooks/act-on-dispatch.test.ts b/test/hooks/act-on-dispatch.test.ts index 9786895e..60373faa 100755 --- a/test/hooks/act-on-dispatch.test.ts +++ b/test/hooks/act-on-dispatch.test.ts @@ -1,5 +1,5 @@ import type { HookContext } from '@feathersjs/feathers'; -import { assert } from 'chai'; +import { assert } from 'vitest'; import { actOnDefault, actOnDispatch, combine, getItems, replaceItems } from '../../src'; let hookBefore: any; @@ -28,7 +28,7 @@ describe('services actOn', () => { const result: any = await actOnDefault( testHook(undefined, 1), testHook(undefined, 2), - testHook(undefined, 3) + testHook(undefined, 3), )(hookBefore); assert.deepEqual(result.params._actOnCodes, [1, 2, 3]); @@ -38,7 +38,7 @@ describe('services actOn', () => { const result: any = await actOnDispatch( testHook('dispatch', 10), testHook('dispatch', 20), - testHook('dispatch', 30) + testHook('dispatch', 30), )(hookBefore); assert.deepEqual(result.params._actOnCodes, [10, 20, 30]); @@ -57,7 +57,7 @@ describe('services actOn', () => { it('actOnDefault calling actOnDefault', async () => { const result: any = await actOnDefault( combine(testHook(undefined, 11), testHook(undefined, 12)), - combine(testHook(undefined, 21), testHook(undefined, 22)) + combine(testHook(undefined, 21), testHook(undefined, 22)), )(hookBefore); assert.deepEqual(result.params._actOnCodes, [11, 12, 21, 22]); @@ -66,7 +66,7 @@ describe('services actOn', () => { it('actOnDefault calling actOnDispatch', async () => { const result: any = await actOnDefault( actOnDispatch(combine(testHook('dispatch', 11), testHook('dispatch', 12))), - combine(testHook(undefined, 21), testHook(undefined, 22)) + combine(testHook(undefined, 21), testHook(undefined, 22)), )(hookBefore); assert.deepEqual(result.params._actOnCodes, [11, 12, 21, 22]); @@ -75,7 +75,7 @@ describe('services actOn', () => { it('actOnDispatch calling actOnDefault', async () => { const result: any = await actOnDispatch( actOnDefault(combine(testHook(undefined, 11), testHook(undefined, 12))), - combine(testHook('dispatch', 21), testHook('dispatch', 22)) + combine(testHook('dispatch', 21), testHook('dispatch', 22)), )(hookBefore); assert.deepEqual(result.params._actOnCodes, [11, 12, 21, 22]); diff --git a/test/hooks/alter-items.test.ts b/test/hooks/alter-items.test.ts index 412a30ff..95f9d30c 100755 --- a/test/hooks/alter-items.test.ts +++ b/test/hooks/alter-items.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { alterItems } from '../../src'; let hookBefore: any; @@ -159,7 +159,7 @@ describe('services alterItems', () => { it('updates hook before::create with new item returned', () => { // @ts-ignore return alterItems((rec: any) => Promise.resolve(Object.assign({}, rec, { state: 'UT' })))( - hookBefore + hookBefore, ).then(() => { assert.deepEqual(hookBefore.data, { first: 'John', last: 'Doe', state: 'UT' }); }); @@ -197,7 +197,7 @@ describe('services alterItems', () => { it('updates hook after::create with new item returned', () => { // @ts-ignore return alterItems((rec: any) => Promise.resolve(Object.assign({}, rec, { new: rec.first })))( - hookAfter + hookAfter, ).then(() => { assert.deepEqual(hookAfter.result, { first: 'Jane', last: 'Doe', new: 'Jane' }); }); @@ -229,7 +229,7 @@ describe('services alterItems', () => { it('updates hook after::find with pagination with new item returned', () => { // @ts-ignore return alterItems((rec: any) => Promise.resolve(Object.assign({}, { first: rec.first })))( - hookFindPaginate + hookFindPaginate, ).then(() => { assert.deepEqual(hookFindPaginate.result.data, [{ first: 'John' }, { first: 'Jane' }]); }); @@ -238,7 +238,7 @@ describe('services alterItems', () => { it('updates hook after::find with no pagination with new item returned', () => { // @ts-ignore return alterItems((rec: any) => Promise.resolve(Object.assign({}, rec, { new: rec.first })))( - hookFind + hookFind, ).then(() => { assert.deepEqual(hookFind.result, [ { first: 'John', last: 'Doe', new: 'John' }, diff --git a/test/hooks/cache.test.ts b/test/hooks/cache.test.ts index 2bae4485..141cc5a4 100755 --- a/test/hooks/cache.test.ts +++ b/test/hooks/cache.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { cache } from '../../src'; // @ts-ignore diff --git a/test/hooks/de-populate.test.ts b/test/hooks/de-populate.test.ts index 58bdecf1..8f7ffde0 100755 --- a/test/hooks/de-populate.test.ts +++ b/test/hooks/de-populate.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { dePopulate } from '../../src'; describe('services dePopulate - not dot notation', () => { diff --git a/test/hooks/disable-pagination.test.ts b/test/hooks/disable-pagination.test.ts index 6f7d92f0..9ff8fe9c 100755 --- a/test/hooks/disable-pagination.test.ts +++ b/test/hooks/disable-pagination.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { disablePagination } from '../../src'; let hookBefore: any; diff --git a/test/hooks/disallow.test.ts b/test/hooks/disallow.test.ts index 53ab2284..861221c6 100755 --- a/test/hooks/disallow.test.ts +++ b/test/hooks/disallow.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { disallow } from '../../src'; diff --git a/test/hooks/discard-1.test.ts b/test/hooks/discard-1.test.ts index 8bfd467d..00c2b946 100755 --- a/test/hooks/discard-1.test.ts +++ b/test/hooks/discard-1.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { discard } from '../../src'; describe('common hook discard', () => { @@ -62,7 +62,7 @@ describe('common hook discard', () => { discard(...args)(context); assert.deepEqual( context.data ? context.data : context.result.data || context.result, - result + result, ); }); }); @@ -126,7 +126,7 @@ describe('common hook discard', () => { discard(...args)(context); assert.deepEqual( context.data ? context.data : context.result.data || context.result, - result + result, ); }); }); diff --git a/test/hooks/discard-2.test.ts b/test/hooks/discard-2.test.ts index 1fc18e1d..45eb0480 100755 --- a/test/hooks/discard-2.test.ts +++ b/test/hooks/discard-2.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { discard } from '../../src'; describe('common hook discard', () => { @@ -117,7 +117,7 @@ describe('common hook discard', () => { discard(...args)(context); assert.deepEqual( context.data ? context.data : context.result.data || context.result, - result + result, ); }); }); @@ -181,7 +181,7 @@ describe('common hook discard', () => { discard(...args)(context); assert.deepEqual( context.data ? context.data : context.result.data || context.result, - result + result, ); }); }); diff --git a/test/hooks/discard-query.test.ts b/test/hooks/discard-query.test.ts index 4def0f9f..e46b96c7 100755 --- a/test/hooks/discard-query.test.ts +++ b/test/hooks/discard-query.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { discardQuery } from '../../src'; let hookBefore: any; diff --git a/test/hooks/discard.test.ts b/test/hooks/discard.test.ts index 7b74f9e6..668572e0 100755 --- a/test/hooks/discard.test.ts +++ b/test/hooks/discard.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import * as hooks from '../../src'; let hookBefore: any; diff --git a/test/hooks/fast-join-cache.test.ts b/test/hooks/fast-join-cache.test.ts index 58c49940..242ed7e6 100755 --- a/test/hooks/fast-join-cache.test.ts +++ b/test/hooks/fast-join-cache.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { feathers } from '@feathersjs/feathers'; import BatchLoader from '@feathers-plus/batch-loader'; // @ts-ignore @@ -37,11 +37,11 @@ const userBatchLoader = new BatchLoader( async (keys: any, context: any) => { userBatchLoaderCount += 1; const result: any = await users.find( - makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }) + makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }), ); return getResultsByKey(keys, result, (user: any) => user.id, '!'); }, - { context: {}, cacheMap: cacheMapUsers } + { context: {}, cacheMap: cacheMapUsers }, ); function services(this: any) { @@ -274,11 +274,11 @@ async function ex8() { context._loaders.user.id = new BatchLoader( async (keys: any, context: any) => { const result = await users.find( - makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }) + makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }), ); return getResultsByKey(keys, result, (user: any) => user.id, '!'); }, - { context } + { context }, ); }, @@ -313,11 +313,11 @@ async function ex8a() { context._loaders.user.id = new BatchLoader( async (keys: any, context: any) => { const result = await users.find( - makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }) + makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }), ); return getResultsByKey(keys, result, (user: any) => user.id, '!'); }, - { context, cacheMap } + { context, cacheMap }, ); }, diff --git a/test/hooks/fast-join.test.ts b/test/hooks/fast-join.test.ts index 7856391b..85c50a2d 100755 --- a/test/hooks/fast-join.test.ts +++ b/test/hooks/fast-join.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import BatchLoader from '@feathers-plus/batch-loader'; import { fastJoin, makeCallingParams } from '../../src'; @@ -485,7 +485,7 @@ async function ex3() { return fastJoin( (_context: any) => postResolvers, - (_context: any) => query + (_context: any) => query, )(context); } @@ -644,11 +644,11 @@ async function ex8() { context._loaders.user.id = new BatchLoader( async (keys: any, context: any) => { const result = await users.find( - makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }) + makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }), ); return getResultsByKey(keys, result, (user: any) => user.id, '!'); }, - { context } + { context }, ); }, @@ -690,22 +690,22 @@ async function ex9() { context._loaders.user.id = new BatchLoader( async (keys: any, context: any) => { const result = await users.find( - makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }) + makeCallingParams(context, { id: { $in: getUniqueKeys(keys) } }), ); return getResultsByKey(keys, result, (user: any) => user.id, '!'); }, - { context } + { context }, ); context._loaders.comments.postId = new BatchLoader( async (keys: any, context: any) => { const result = await comments.find( - makeCallingParams(context, { postId: { $in: getUniqueKeys(keys) } }) + makeCallingParams(context, { postId: { $in: getUniqueKeys(keys) } }), ); // @ts-ignore return getResultsByKey(keys, result, (comment: any) => comment.postId, '[!]'); }, - { context } + { context }, ); }, @@ -724,7 +724,7 @@ async function ex9() { async (post: any, context: any): Promise => { if (!post.reputation) return null; const authors = await context._loaders.user.id.loadMany( - post.reputation.map((rep: any) => rep.userId) + post.reputation.map((rep: any) => rep.userId), ); post.reputation.forEach((rep: any, i: any) => { rep.author = authors[i].name; diff --git a/test/hooks/fgraphql.test.ts b/test/hooks/fgraphql.test.ts index 1770003d..27817ebe 100755 --- a/test/hooks/fgraphql.test.ts +++ b/test/hooks/fgraphql.test.ts @@ -1,7 +1,7 @@ // @ts-ignore import runTime from '@feathers-plus/graphql/lib/run-time'; import BatchLoader from '@feathers-plus/batch-loader'; -import { assert } from 'chai'; +import { assert } from 'vitest'; import { parse } from 'graphql'; import { fgraphql } from '../../src'; @@ -84,7 +84,7 @@ describe('services fgraphql', () => { })(context); if (!isObject(result)) { - assert(false, `Unexpected success. Expected ${result}.`); + assert.fail(`Unexpected success. Expected ${result}.`); } else { // inspector('result=', result); // inspector('actual=', newContext.data || newContext.result); @@ -96,14 +96,14 @@ describe('services fgraphql', () => { } if (isObject(result)) { - assert(false, `unexpected fail: ${err.message}`); + assert.fail(`unexpected fail: ${err.message}`); return; } assert.strictEqual(err.code, result, `unexpected error: ${err.message}`); } }); - } + }, ); }); @@ -274,7 +274,7 @@ describe('services fgraphql', () => { assert.deepEqual( usersBatchLoaderCalls, [['31', '32', '35', '36', '37']], - 'unexpected calls' + 'unexpected calls', ); } catch (err) { console.log(err); diff --git a/test/hooks/get-replace-items.test.ts b/test/hooks/get-replace-items.test.ts index 63534679..f9d10d63 100755 --- a/test/hooks/get-replace-items.test.ts +++ b/test/hooks/get-replace-items.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { getItems, replaceItems } from '../../src'; // Tests when context.params._actOn === 'dispatch' are in act-on.test.ts diff --git a/test/hooks/iff-else.test.ts b/test/hooks/iff-else.test.ts index 092acf81..b36757e4 100755 --- a/test/hooks/iff-else.test.ts +++ b/test/hooks/iff-else.test.ts @@ -1,5 +1,5 @@ import type { HookContext } from '@feathersjs/feathers'; -import { assert } from 'chai'; +import { assert } from 'vitest'; import { iff } from '../../src'; import { isPromise } from '../../src/common'; @@ -80,7 +80,7 @@ describe('services iff - sync predicate, sync hook', () => { iff( // @ts-ignore 'a', - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -96,7 +96,7 @@ describe('services iff - sync predicate, sync hook', () => { const result: any = iff('', hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); @@ -109,7 +109,7 @@ describe('services iff - sync predicate, sync hook', () => { iff( // @ts-ignore () => 'a', - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -125,7 +125,7 @@ describe('services iff - sync predicate, sync hook', () => { const result = iff(() => '', hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); @@ -147,7 +147,7 @@ describe('services iff - sync predicate, async hook', () => { return ( iff( true, - hookFcnAsync + hookFcnAsync, )(hook) // @ts-ignore .then((result1: any) => { @@ -162,7 +162,7 @@ describe('services iff - sync predicate, async hook', () => { const result = iff(false, hookFcnAsync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnAsyncCalls, 0); @@ -174,7 +174,7 @@ describe('services iff - sync predicate, async hook', () => { return ( iff( () => true, - hookFcnAsync + hookFcnAsync, )(hook) // @ts-ignore .then((result1: any) => { @@ -199,7 +199,7 @@ describe('services iff - async predicate, sync hook', () => { return ( iff( () => new Promise(resolve => resolve(true)), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((result1: any) => { @@ -214,7 +214,7 @@ describe('services iff - async predicate, sync hook', () => { return ( iff( () => new Promise(resolve => resolve(false)), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((result1: any) => { @@ -239,7 +239,7 @@ describe('services iff - async predicate, async hook', () => { return ( iff( () => new Promise(resolve => resolve(true)), - hookFcnAsync + hookFcnAsync, )(hook) // @ts-ignore .then((result1: any) => { @@ -254,7 +254,7 @@ describe('services iff - async predicate, async hook', () => { return ( iff( () => new Promise(resolve => resolve(false)), - hookFcnAsync + hookFcnAsync, )(hook) // @ts-ignore .then((result1: any) => { @@ -282,7 +282,7 @@ describe('services iff - sync predicate', () => { iff( // @ts-ignore () => 'a', - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -297,7 +297,7 @@ describe('services iff - sync predicate', () => { return ( iff( predicateSync, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -313,7 +313,7 @@ describe('services iff - sync predicate', () => { return ( iff( predicateSync2({ z: 'z' }), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -343,7 +343,7 @@ describe('services iff - async predicate', () => { return ( iff( predicateAsync, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((result1: any) => { @@ -360,7 +360,7 @@ describe('services iff - async predicate', () => { iff( // @ts-ignore predicateAsyncFunny, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((result1: any) => { @@ -378,7 +378,7 @@ describe('services iff - async predicate', () => { return ( iff( predicateAsync2({ y: 'y' }), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((result1: any) => { @@ -408,7 +408,7 @@ describe('services iff - runs .else()', () => { true, hookFcnSync, hookFcnSync, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -442,7 +442,7 @@ describe('services iff - runs .else()', () => { .else( hookFcnSync, hookFcnSync, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -472,7 +472,7 @@ describe('services iff - runs iff(true, iff(true, ...)', () => { true, hookFcnAsync, iff(true, hookFcnSync), - hookCb + hookCb, )(hook) // @ts-ignore .then((hook: any) => { @@ -491,7 +491,7 @@ describe('services iff - runs iff(true, iff(true, ...)', () => { true, hookFcnSync, iff(true, hookFcnAsync), - hookCb + hookCb, )(hook) // @ts-ignore .then((hook: any) => { @@ -510,7 +510,7 @@ describe('services iff - runs iff(true, iff(true, ...)', () => { true, hookFcnSync, iff(true, hookCb), - hookFcnAsync + hookFcnAsync, )(hook) // @ts-ignore .then((hook: any) => { @@ -540,7 +540,7 @@ describe('services iff - runs iff(true, iff(false).else(...)', () => { true, hookFcnAsync, iff(false, hookCb).else(hookFcnSync), - hookFcnAsync + hookFcnAsync, )(hook) // @ts-ignore .then((hook: any) => { @@ -559,7 +559,7 @@ describe('services iff - runs iff(true, iff(false).else(...)', () => { true, hookFcnSync, iff(false, hookFcnSync).else(hookFcnAsync), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -589,7 +589,7 @@ describe('services iff - runs iff(false).else(iff(...).else(...))', () => { .else( hookFcnSync, iff(true, hookFcnAsync), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -608,7 +608,7 @@ describe('services iff - runs iff(false).else(iff(...).else(...))', () => { .else( hookFcnSync, iff(false, hookFcnSync).else(hookFcnAsync), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -640,7 +640,7 @@ describe('services iff - multiple iff() sequentially', () => { iff(true, hookFcnSync, hookFcnSync, hookFcnSync), hookCb, iff(true, hookFcnAsync, hookFcnAsync, hookFcnAsync, hookFcnAsync), - hookCb + hookCb, )(hook) // @ts-ignore .then((hook: any) => { @@ -660,7 +660,7 @@ describe('services iff - multiple iff() sequentially', () => { hookFcnSync, iff(true, hookFcnAsync), iff(false, hookFcnSync).else(hookCb), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { diff --git a/test/hooks/iff.test.ts b/test/hooks/iff.test.ts index 4f622b79..3cd132ca 100755 --- a/test/hooks/iff.test.ts +++ b/test/hooks/iff.test.ts @@ -1,5 +1,5 @@ import type { HookContext } from '@feathersjs/feathers'; -import { assert } from 'chai'; +import { assert } from 'vitest'; import { iff } from '../../src'; import { isPromise } from '../../src/common'; @@ -77,7 +77,7 @@ describe('services iff - sync predicate, sync hook', () => { iff( // @ts-ignore 'a', - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -92,7 +92,7 @@ describe('services iff - sync predicate, sync hook', () => { const result = iff('', hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); @@ -104,7 +104,7 @@ describe('services iff - sync predicate, sync hook', () => { iff( // @ts-ignore () => 'a', - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -119,7 +119,7 @@ describe('services iff - sync predicate, sync hook', () => { const result = iff(() => '', hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); @@ -137,50 +137,44 @@ describe('services iff - sync predicate, async hook', () => { hookFcnAsyncCalls = 0; }); - it('calls async hook function if sync predicate truthy', (done: any) => { + it('calls async hook function if sync predicate truthy', async () => { const result = iff(true, hookFcnAsync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnAsyncCalls, 1); - assert.deepEqual(hook, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnAsyncCalls, 1); + assert.deepEqual(hook, hookAfter); + }); }); it('does not call async hook function if sync predicate falsey', () => { const result = iff(false, hookFcnAsync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); - } else { - assert.deepEqual(result, hookBefore); - assert.equal(hookFcnAsyncCalls, 0); - assert.deepEqual(hook, hookBefore); + assert.fail('promise unexpectedly returned'); } + + assert.deepEqual(result, hookBefore); + assert.equal(hookFcnAsyncCalls, 0); + assert.deepEqual(hook, hookBefore); }); - it('calls async hook function if sync predicate returns truthy', (done: any) => { + it('calls async hook function if sync predicate returns truthy', async () => { const result = iff(() => true, hookFcnAsync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnAsyncCalls, 1); - assert.deepEqual(hook, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnAsyncCalls, 1); + assert.deepEqual(hook, hookAfter); + }); }); }); @@ -193,38 +187,32 @@ describe('services iff - async predicate, sync hook', () => { hookFcnAsyncCalls = 0; }); - it('calls sync hook function if aync predicate truthy', (done: any) => { + it('calls sync hook function if aync predicate truthy', async () => { const result = iff(() => new Promise(resolve => resolve(true)), hookFcnSync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); - it('does not call sync hook function if async predicate falsey', (done: any) => { + it('does not call sync hook function if async predicate falsey', async () => { const result = iff(() => new Promise(resolve => resolve(false)), hookFcnSync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(result1, hookBefore); - assert.equal(hookFcnSyncCalls, 0); - assert.deepEqual(hook, hookBefore); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookBefore); + assert.equal(hookFcnSyncCalls, 0); + assert.deepEqual(hook, hookBefore); + }); }); }); @@ -237,38 +225,32 @@ describe('services iff - async predicate, async hook', () => { hookFcnAsyncCalls = 0; }); - it('calls async hook function if aync predicate truthy', (done: any) => { + it('calls async hook function if aync predicate truthy', async () => { const result = iff(() => new Promise(resolve => resolve(true)), hookFcnAsync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnAsyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnAsyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); - it('does not call async hook function if async predicate falsey', (done: any) => { + it('does not call async hook function if async predicate falsey', async () => { const result = iff(() => new Promise(resolve => resolve(false)), hookFcnAsync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(result1, hookBefore); - assert.equal(hookFcnAsyncCalls, 0); - assert.deepEqual(hook, hookBefore); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookBefore); + assert.equal(hookFcnAsyncCalls, 0); + assert.deepEqual(hook, hookBefore); + }); }); }); @@ -287,7 +269,7 @@ describe('services iff - sync predicate', () => { iff( // @ts-ignore () => 'a', - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -300,7 +282,7 @@ describe('services iff - sync predicate', () => { it('is passed hook as param', () => { iff( predicateSync, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -314,7 +296,7 @@ describe('services iff - sync predicate', () => { it('a higher order predicate can pass more options', () => { iff( predicateSync2({ z: 'z' }), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -339,64 +321,55 @@ describe('services iff - async predicate', () => { predicateValue = null; }); - it('is passed hook as param', (done: any) => { + it('is passed hook as param', async () => { // @ts-ignore const result = iff(predicateAsync, hookFcnSync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(predicateHook, hookBefore); - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(predicateHook, hookBefore); + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); - it('is resolved', (done: any) => { + it('is resolved', async () => { // @ts-ignore const result = iff(predicateAsyncFunny, hookFcnSync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(predicateHook, hookBefore); - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); + } - assert.equal(predicateValue, 'abc'); + await result.then((result1: any) => { + assert.deepEqual(predicateHook, hookBefore); + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); - } + assert.equal(predicateValue, 'abc'); + }); }); - it('a higher order predicate can pass more options', (done: any) => { + it('a higher order predicate can pass more options', async () => { // @ts-ignore const result = iff(predicateAsync2({ y: 'y' }), hookFcnSync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(predicateOptions, { y: 'y' }); - assert.deepEqual(predicateHook, hookBefore); - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(predicateOptions, { y: 'y' }); + assert.deepEqual(predicateHook, hookBefore); + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); }); @@ -409,12 +382,12 @@ describe('services iff - runs multiple hooks', () => { hookFcnAsyncCalls = 0; }); - it('runs successfully', (done: any) => { - iff( + it('runs successfully', async () => { + await iff( true, hookFcnSync, hookFcnAsync, - hookFcn + hookFcn, )(hook) // @ts-ignore .then((hook: any) => { @@ -423,8 +396,6 @@ describe('services iff - runs multiple hooks', () => { assert.equal(hookFcnAsyncCalls, 1); assert.equal(hookFcnCbCalls, 1); assert.deepEqual(hook, hookAfter); - - done(); }); }); }); diff --git a/test/hooks/iffelse.test.ts b/test/hooks/iffelse.test.ts index e926c379..2a46dabb 100755 --- a/test/hooks/iffelse.test.ts +++ b/test/hooks/iffelse.test.ts @@ -1,5 +1,5 @@ import type { HookContext } from '@feathersjs/feathers'; -import { assert } from 'chai'; +import { assert } from 'vitest'; import { iffElse, some, every } from '../../src'; let hook: any; @@ -72,7 +72,7 @@ describe('services iffElse', () => { iffElse( true, hookFcnSync, - hookFcnAsync + hookFcnAsync, )(hook) // @ts-ignore .then((hook: any) => { @@ -89,7 +89,7 @@ describe('services iffElse', () => { iffElse( false, hookFcnSync, - hookFcnAsync + hookFcnAsync, )(hook) // @ts-ignore .then((hook: any) => { @@ -109,7 +109,7 @@ describe('services iffElse', () => { true, // @ts-ignore [hookFcnSync, hookFcnAsync, hookFcn], - null + null, )(hook) // @ts-ignore .then((hook: any) => { @@ -145,7 +145,7 @@ describe('services iffElse', () => { // @ts-ignore predicateTrue, [hookFcnSync, hookFcnAsync, hookFcn], - null + null, )(hook) // @ts-ignore .then(() => { @@ -164,7 +164,7 @@ describe('services iffElse', () => { every(predicateTrue), // @ts-ignore [hookFcnSync, hookFcnAsync, hookFcn], - null + null, )(hook) // @ts-ignore .then(() => { @@ -183,7 +183,7 @@ describe('services iffElse', () => { some(predicateTrue), // @ts-ignore [hookFcnSync, hookFcnAsync, hookFcn], - null + null, )(hook) // @ts-ignore .then(() => { diff --git a/test/hooks/is-provider.test.ts b/test/hooks/is-provider.test.ts index 1b050694..0e7106b4 100755 --- a/test/hooks/is-provider.test.ts +++ b/test/hooks/is-provider.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { iff, isProvider } from '../../src'; import { isPromise } from '../../src/common'; @@ -111,7 +111,7 @@ describe('services isProvider - works with iff', () => { it('calls sync hook function if truthy', () => { iff( isProvider('rest'), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -125,7 +125,7 @@ describe('services isProvider - works with iff', () => { const result = iff(isProvider('server'), hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); diff --git a/test/hooks/keep-in-array.test.ts b/test/hooks/keep-in-array.test.ts index d892ee07..32aba0a0 100755 --- a/test/hooks/keep-in-array.test.ts +++ b/test/hooks/keep-in-array.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { keepInArray } from '../../src'; diff --git a/test/hooks/keep-query-in-array.test.ts b/test/hooks/keep-query-in-array.test.ts index bfa496fd..58c12bf5 100755 --- a/test/hooks/keep-query-in-array.test.ts +++ b/test/hooks/keep-query-in-array.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { keepQueryInArray } from '../../src'; let hookBefore: any; diff --git a/test/hooks/keep-query.test.ts b/test/hooks/keep-query.test.ts index 61403b33..70f3c3aa 100755 --- a/test/hooks/keep-query.test.ts +++ b/test/hooks/keep-query.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { keepQuery } from '../../src'; let hookBefore: any; diff --git a/test/hooks/keep.test.ts b/test/hooks/keep.test.ts index 77504b4d..e132873d 100755 --- a/test/hooks/keep.test.ts +++ b/test/hooks/keep.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { keep } from '../../src'; let hookBefore: any; diff --git a/test/hooks/lowercase.test.ts b/test/hooks/lowercase.test.ts index dc5eccda..c2f72bdc 100755 --- a/test/hooks/lowercase.test.ts +++ b/test/hooks/lowercase.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { lowerCase } from '../../src'; let hookBefore: any; diff --git a/test/hooks/mongo-keys.test.ts b/test/hooks/mongo-keys.test.ts index b351ca8f..a60f8525 100755 --- a/test/hooks/mongo-keys.test.ts +++ b/test/hooks/mongo-keys.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { ObjectId } from 'mongodb'; import { mongoKeys } from '../../src'; @@ -68,7 +68,7 @@ describe('services mongoKeys', () => { function wrapper(keys: any, query: any) { const newContext: any = mongoKeys( ObjectId, - keys + keys, )({ params: { query }, type: 'before', method: 'find' } as any); return newContext.params.query; } diff --git a/test/hooks/params-from-client.test.ts b/test/hooks/params-from-client.test.ts index ebfcd6e9..40be1c3a 100755 --- a/test/hooks/params-from-client.test.ts +++ b/test/hooks/params-from-client.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { paramsFromClient } from '../../src'; describe('services params-from-client', () => { diff --git a/test/hooks/populate-1deep-1child.test.ts b/test/hooks/populate-1deep-1child.test.ts index 12e3340f..7436bc2a 100755 --- a/test/hooks/populate-1deep-1child.test.ts +++ b/test/hooks/populate-1deep-1child.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import _set from 'lodash/set.js'; import configApp from '../helpers/config-app'; @@ -558,7 +558,7 @@ let provider: any; populate({ schema, profile: true })(hook) // @ts-ignore .then(() => { - assert(false, 'unexpectedly succeeeded'); + assert.fail('unexpectedly succeeeded'); }) .catch((err: any) => { assert.isObject(err, 'no error object'); @@ -584,7 +584,7 @@ let provider: any; populate({ schema, profile: true })(hook) // @ts-ignore .then(() => { - assert(false, 'unexpectedly succeeded'); + assert.fail('unexpectedly succeeded'); }) .catch((err: any) => { assert.isObject(err, 'no error object'); diff --git a/test/hooks/populate-basics.test.ts b/test/hooks/populate-basics.test.ts index c452295b..2245402a 100755 --- a/test/hooks/populate-basics.test.ts +++ b/test/hooks/populate-basics.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { populate } from '../../src'; describe('services populate - finds items in hook', () => { diff --git a/test/hooks/populate-misc.test.ts b/test/hooks/populate-misc.test.ts index 932e03ac..de6bbf42 100755 --- a/test/hooks/populate-misc.test.ts +++ b/test/hooks/populate-misc.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { feathers } from '@feathersjs/feathers'; import { MemoryService } from '@feathersjs/memory'; import { iff, populate } from '../../src'; @@ -154,7 +154,7 @@ function user(this: any) { default: 2, max: 2, }, - }) + }), ); app.service('users').hooks({ @@ -176,7 +176,7 @@ function team(this: any) { new MemoryService({ store: clone(teamInit), startId: teamId, - }) + }), ); app.service('teams').hooks({ @@ -255,7 +255,7 @@ describe('services populate - hook.params passed to includes', () => { return teams .find({ query: { id: 0 } }) .then(() => { - assert.fail(true, false, 'unexpected succeeded'); + assert.fail('unexpected succeeded'); }) .catch((err: any) => { assert.equal(err.className, 'bad-request'); diff --git a/test/hooks/populate-relations.test.ts b/test/hooks/populate-relations.test.ts index 7d577a63..a90e9a6e 100755 --- a/test/hooks/populate-relations.test.ts +++ b/test/hooks/populate-relations.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import configApp from '../helpers/config-app'; import getInitDb from '../helpers/get-init-db'; import { populate } from '../../src'; diff --git a/test/hooks/populate-scaffolding.test.ts b/test/hooks/populate-scaffolding.test.ts index 9b82e056..07318e56 100755 --- a/test/hooks/populate-scaffolding.test.ts +++ b/test/hooks/populate-scaffolding.test.ts @@ -1,12 +1,12 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import configApp from '../helpers/config-app'; describe('services populate - test scaffolding', () => { - it('can reinitialize database', (done: any) => { + it('can reinitialize database', async () => { const app = configApp(['users', 'comments', 'posts', 'recommendation']); const users = app.service('users'); - users + await users .find({ query: {} }) .then((data: any) => { assert.equal(data.length, 2); @@ -28,7 +28,6 @@ describe('services populate - test scaffolding', () => { }) .then((data: any) => { assert.equal(data.length, 2); - done(); }); }); }); diff --git a/test/hooks/prevent-changes.test.ts b/test/hooks/prevent-changes.test.ts index 04c382b1..2b67ebd6 100755 --- a/test/hooks/prevent-changes.test.ts +++ b/test/hooks/prevent-changes.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { preventChanges } from '../../src'; let hookBefore: any; @@ -120,7 +120,7 @@ describe('services preventChanges', () => { assert.deepEqual( context.data, { first: 'John', last: 'Doe', a: { c: { d: { e: 1 } } } }, - '3' + '3', ); context = preventChanges(false, 'name', 'a.c')(clone(hookBefore)); @@ -130,7 +130,7 @@ describe('services preventChanges', () => { assert.deepEqual( context.data, { first: 'John', last: 'Doe', a: { b: 'john', c: { d: {} } } }, - '5' + '5', ); context = preventChanges(false, 'first', 'last')(clone(hookBefore)); diff --git a/test/hooks/required.test.ts b/test/hooks/required.test.ts index f470b8b7..30f7a7c3 100755 --- a/test/hooks/required.test.ts +++ b/test/hooks/required.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { required } from '../../src'; let hookBefore: any; diff --git a/test/hooks/run-parallel.test.ts b/test/hooks/run-parallel.test.ts index 24ffd3fb..2be3c0af 100755 --- a/test/hooks/run-parallel.test.ts +++ b/test/hooks/run-parallel.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import clone from 'clone'; import { runParallel } from '../../src'; @@ -24,42 +24,46 @@ describe('services runParallel', () => { }; }); - it('runs the func', (done: any) => { - runParallel(test(tester))(contextBefore); + it('runs the func', () => + new Promise(resolve => { + runParallel(test(tester))(contextBefore); - function tester() { - done(); - } - }); + function tester() { + resolve(); + } + })); - it('passes this', (done: any) => { - runParallel(test(tester)).call({ bar: true }, contextBefore); + it('passes this', () => + new Promise(resolve => { + runParallel(test(tester)).call({ bar: true }, contextBefore); - function tester() { - assert.strictEqual(that.bar, true); - done(); - } - }); + function tester() { + assert.strictEqual(that.bar, true); + resolve(); + } + })); - it('defaults to uncloned context', (done: any) => { - runParallel(test(tester))(contextBefore); - contextBefore._foo = true; + it('defaults to uncloned context', () => + new Promise(resolve => { + runParallel(test(tester))(contextBefore); + contextBefore._foo = true; - function tester(contextCloned: any) { - assert.property(contextCloned, '_foo'); - done(); - } - }); + function tester(contextCloned: any) { + assert.property(contextCloned, '_foo'); + resolve(); + } + })); - it('clones', (done: any) => { - runParallel(test(tester), clone)(contextBefore); - contextBefore._foo = true; + it('clones', () => + new Promise(resolve => { + runParallel(test(tester), clone)(contextBefore); + contextBefore._foo = true; - function tester(contextCloned: any) { - assert.notProperty(contextCloned, '_foo'); - done(); - } - }); + function tester(contextCloned: any) { + assert.notProperty(contextCloned, '_foo'); + resolve(); + } + })); it('Throws if no func', () => { assert.throws(() => { diff --git a/test/hooks/sequelize-convert.test.ts b/test/hooks/sequelize-convert.test.ts index 5e3d557d..4a0935e3 100755 --- a/test/hooks/sequelize-convert.test.ts +++ b/test/hooks/sequelize-convert.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { sequelizeConvert } from '../../src'; const converts: any = { @@ -313,7 +313,7 @@ describe('sequelize-convert.test.ts', function () { it('uses datetime converter', () => { const newContext: any = sequelizeConvert(converts, null, { date: convertDatetime })( - contextISO + contextISO, ); assert.deepEqual(newContext.result, { diff --git a/test/hooks/serialize.test.ts b/test/hooks/serialize.test.ts index babd44c4..f095d3b0 100755 --- a/test/hooks/serialize.test.ts +++ b/test/hooks/serialize.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { serialize } from '../../src'; describe('services serialize', () => { diff --git a/test/hooks/set-field.test.ts b/test/hooks/set-field.test.ts index 68ac7612..9c3c6b37 100644 --- a/test/hooks/set-field.test.ts +++ b/test/hooks/set-field.test.ts @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { assert, expect } from 'vitest'; import { feathers } from '@feathersjs/feathers'; import { MemoryService } from '@feathersjs/memory'; import { setField } from '../../src'; @@ -45,7 +45,7 @@ describe('setField', () => { // @ts-expect-error get: setField(), }, - }) + }), ); assert.throws(() => app.service('messages').hooks({ @@ -53,7 +53,7 @@ describe('setField', () => { // @ts-expect-error get: setField({ as: 'me' }), }, - }) + }), ); assert.throws(() => app.service('messages').hooks({ @@ -61,7 +61,7 @@ describe('setField', () => { // @ts-expect-error get: setField({ from: 'you' }), }, - }) + }), ); }); @@ -75,16 +75,10 @@ describe('setField', () => { }); it('adds user information to get, throws NotFound event if record exists', async () => { - await assert.rejects( - async () => { - // @ts-ignore - await app.service('messages').get(2, { user }); - }, - { - name: 'NotFound', - message: "No record found for id '2'", - } - ); + await expect(async () => { + // @ts-ignore + await app.service('messages').get(2, { user }); + }).rejects.toThrow(); // @ts-ignore const result = await app.service('messages').get(1, { user }); @@ -103,17 +97,11 @@ describe('setField', () => { }); it('errors on external calls if value does not exists', async () => { - await assert.rejects( - async () => { - await app.service('messages').find({ - provider: 'rest', - }); - }, - { - name: 'Forbidden', - message: 'Expected field params.query.userId not available', - } - ); + await expect(async () => { + await app.service('messages').find({ + provider: 'rest', + }); + }).rejects.toThrow(); }); it('errors when not used as a before hook', async () => { @@ -126,13 +114,8 @@ describe('setField', () => { }, }); - await assert.rejects( - async () => { - await app.service('messages').get(1); - }, - { - message: "The 'setField' hook can only be used as a 'before' hook.", - } - ); + await expect(async () => { + await app.service('messages').get(1); + }).rejects.toThrow(); }); }); diff --git a/test/hooks/set-now.test.ts b/test/hooks/set-now.test.ts index c0e0165d..5e6dbe3b 100755 --- a/test/hooks/set-now.test.ts +++ b/test/hooks/set-now.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { setNow } from '../../src'; let hookBefore: any; @@ -96,7 +96,7 @@ describe('services setNow', () => { checkHook( hookBefore.data, { empl: { name: { first: 'John', last: 'Doe' }, status: 'AA' }, dept: 'Acct' }, - 'madeAt' + 'madeAt', ); }); @@ -105,7 +105,7 @@ describe('services setNow', () => { checkHook( hookBefore.data, { empl: { name: { first: 'John', last: 'Doe' }, status: 'AA' }, dept: 'Acct' }, - ['madeAt', 'builtAt'] + ['madeAt', 'builtAt'], ); }); @@ -150,16 +150,17 @@ describe('services setNow', () => { hookBefore = { type: 'before', method: 'create', data: { first: 'John', last: 'Doe' } }; }); - it('for 2 hooks', (next: any) => { - setNow('createdAt')(hookBefore); - const firstTime = hookBefore.data.createdAt; - - setTimeout(() => { + it('for 2 hooks', () => + new Promise(resolve => { setNow('createdAt')(hookBefore); - assert.isAbove(hookBefore.data.createdAt.getTime(), firstTime.getTime()); - next(); - }, 50); - }); + const firstTime = hookBefore.data.createdAt; + + setTimeout(() => { + setNow('createdAt')(hookBefore); + assert.isAbove(hookBefore.data.createdAt.getTime(), firstTime.getTime()); + resolve(); + }, 50); + })); }); }); diff --git a/test/hooks/set-slug.test.ts b/test/hooks/set-slug.test.ts index 2e2c349e..41b1457c 100755 --- a/test/hooks/set-slug.test.ts +++ b/test/hooks/set-slug.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { setSlug } from '../../src'; diff --git a/test/hooks/sifter.test.ts b/test/hooks/sifter.test.ts index acffd49c..d83abc2a 100755 --- a/test/hooks/sifter.test.ts +++ b/test/hooks/sifter.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import sift from 'sift'; import { sifter } from '../../src'; diff --git a/test/hooks/soft-delete.test.ts b/test/hooks/soft-delete.test.ts index f1903eda..12ad0bfa 100755 --- a/test/hooks/soft-delete.test.ts +++ b/test/hooks/soft-delete.test.ts @@ -1,4 +1,4 @@ -import assert from 'assert'; +import { assert, expect } from 'vitest'; import { feathers } from '@feathersjs/feathers'; import { MemoryService } from '@feathersjs/memory'; import { softDelete } from '../../src'; @@ -20,7 +20,7 @@ describe('services softDelete', () => { '/users', new MemoryService({ multi: ['create', 'patch', 'remove'], - }) + }), ); userService = app.service('users'); @@ -73,15 +73,9 @@ describe('services softDelete', () => { }); it('throws on deleted item', async () => { - assert.rejects( - async () => { - await userService.get(2); - }, - { - name: 'NotFound', - message: "No record found for id '2'", - } - ); + await expect(async () => { + await userService.get(2); + }).rejects.toThrow(); }); it('returns deleted when params.disableSoftDelete is set', async () => { @@ -98,15 +92,9 @@ describe('services softDelete', () => { }); it('throws on missing item', async () => { - await assert.rejects( - async () => { - await userService.get(99); - }, - { - name: 'NotFound', - message: "No record found for id '99'", - } - ); + await expect(async () => { + await userService.get(99); + }).rejects.toThrow(); }); }); @@ -118,15 +106,9 @@ describe('services softDelete', () => { }); it.skip('throws on deleted item', async () => { - await assert.rejects( - async () => { - await userService.update(2, { y: 'y' }); - }, - { - name: 'NotFound', - message: "No record found for id '2'", - } - ); + await expect(async () => { + await userService.update(2, { y: 'y' }); + }).rejects.toThrow(); }); }); @@ -143,10 +125,7 @@ describe('services softDelete', () => { }); it('throws on deleted item', async () => { - await assert.rejects(() => userService.patch(2, { y: 'y' }), { - name: 'NotFound', - message: "No record found for id '2'", - }); + await expect(() => userService.patch(2, { y: 'y' })).rejects.toThrow(); }); it('multi updates on undeleted items', async () => { @@ -172,15 +151,11 @@ describe('services softDelete', () => { deleted: true, }); - await assert.rejects(() => userService.get(0), { - name: 'NotFound', - }); + await expect(() => userService.get(0)).rejects.toThrow(); }); it('throws if item already deleted', async () => { - await assert.rejects(() => userService.remove(2), { - name: 'NotFound', - }); + await expect(() => userService.remove(2)).rejects.toThrow(); }); }); @@ -209,7 +184,7 @@ describe('services softDelete', () => { '/people', new MemoryService({ multi: ['create', 'patch', 'remove'], - }) + }), ); peopleService = app.service('people'); @@ -240,9 +215,7 @@ describe('services softDelete', () => { assert.ok(deletedUser.deletedAt !== null); - await assert.rejects(() => peopleService.get(user.id), { - name: 'NotFound', - }); + await expect(() => peopleService.get(user.id)).rejects.toThrow(); }); }); }); diff --git a/test/hooks/stash-before.test.ts b/test/hooks/stash-before.test.ts index a8a0c488..e1c44372 100755 --- a/test/hooks/stash-before.test.ts +++ b/test/hooks/stash-before.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert, expect } from 'vitest'; import { feathers } from '@feathersjs/feathers'; import { MemoryService } from '@feathersjs/memory'; import { stashBefore } from '../../src'; @@ -32,7 +32,7 @@ function users(this: any) { store, startId, multi: true, - }) + }), ); app.service('users').hooks({ @@ -79,15 +79,8 @@ describe('services stash-before', () => { }); ['create', 'find'].forEach(method => { - it(`throws on ${method}`, (done: any) => { - users[method]({}) - .then(() => { - assert(false, 'unexpectedly successful'); - done(); - }) - .catch(() => { - done(); - }); + it(`throws on ${method}`, async () => { + await expect(users[method]({})).rejects.toThrow(); }); }); diff --git a/test/hooks/unless.test.ts b/test/hooks/unless.test.ts index 3a4e8fd9..cc15ec8e 100755 --- a/test/hooks/unless.test.ts +++ b/test/hooks/unless.test.ts @@ -1,5 +1,5 @@ import type { HookContext } from '@feathersjs/feathers'; -import { assert } from 'chai'; +import { assert } from 'vitest'; import { unless } from '../../src'; import { isPromise } from '../../src/common'; @@ -76,7 +76,7 @@ describe('services unless - sync predicate, sync hook', () => { it('calls sync hook function if falsey non-function', () => { unless( false, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -90,7 +90,7 @@ describe('services unless - sync predicate, sync hook', () => { const result = unless(true, hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); @@ -101,7 +101,7 @@ describe('services unless - sync predicate, sync hook', () => { it('calls sync hook function if sync predicate falsey', () => { unless( () => false, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -115,7 +115,7 @@ describe('services unless - sync predicate, sync hook', () => { const result = unless(() => true, hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); @@ -133,49 +133,44 @@ describe('services unless - sync predicate, async hook', () => { hookFcnAsyncCalls = 0; }); - it('calls async hook function if sync predicate falsey', (done: any) => { + it('calls async hook function if sync predicate falsey', async () => { const result = unless(false, hookFcnAsync)(hook); - if (isPromise(result)) { - // @ts-ignore - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnAsyncCalls, 1); - assert.deepEqual(hook, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnAsyncCalls, 1); + assert.deepEqual(hook, hookAfter); + }); }); it('does not call async hook function if sync predicate truthy', () => { const result = unless(true, hookFcnAsync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); - } else { - assert.deepEqual(result, hookBefore); - assert.equal(hookFcnAsyncCalls, 0); - assert.deepEqual(hook, hookBefore); + assert.fail('promise unexpectedly returned'); } + + assert.deepEqual(result, hookBefore); + assert.equal(hookFcnAsyncCalls, 0); + assert.deepEqual(hook, hookBefore); }); - it('calls async hook function if sync predicate returns falsey', (done: any) => { + it('calls async hook function if sync predicate returns falsey', async () => { const result = unless(() => false, hookFcnAsync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnAsyncCalls, 1); - assert.deepEqual(hook, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnAsyncCalls, 1); + assert.deepEqual(hook, hookAfter); + }); }); }); @@ -188,36 +183,32 @@ describe('services unless - async predicate, sync hook', () => { hookFcnAsyncCalls = 0; }); - it('calls sync hook function if aync predicate falsey', (done: any) => { + it('calls sync hook function if aync predicate falsey', async () => { const result = unless(() => new Promise(resolve => resolve(false)), hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); - it('does not call sync hook function if async predicate truthy', (done: any) => { + it('does not call sync hook function if async predicate truthy', async () => { const result = unless(() => new Promise(resolve => resolve(true)), hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookBefore); - assert.equal(hookFcnSyncCalls, 0); - assert.deepEqual(hook, hookBefore); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookBefore); + assert.equal(hookFcnSyncCalls, 0); + assert.deepEqual(hook, hookBefore); + }); }); }); @@ -230,36 +221,32 @@ describe('services unless - async predicate, async hook', () => { hookFcnAsyncCalls = 0; }); - it('calls async hook function if aync predicate falsey', (done: any) => { + it('calls async hook function if aync predicate falsey', async () => { const result = unless(() => new Promise(resolve => resolve(false)), hookFcnAsync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnAsyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnAsyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); - it('does not call async hook function if async predicate truthy', (done: any) => { + it('does not call async hook function if async predicate truthy', async () => { const result = unless(() => new Promise(resolve => resolve(true)), hookFcnAsync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookBefore); - assert.equal(hookFcnAsyncCalls, 0); - assert.deepEqual(hook, hookBefore); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + result.then((result1: any) => { + assert.deepEqual(result1, hookBefore); + assert.equal(hookFcnAsyncCalls, 0); + assert.deepEqual(hook, hookBefore); + }); }); }); @@ -277,7 +264,7 @@ describe('services unless - sync predicate', () => { it('does not need to access hook', () => { unless( () => false, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -290,7 +277,7 @@ describe('services unless - sync predicate', () => { it('is passed hook as param', () => { unless( predicateSync, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -304,7 +291,7 @@ describe('services unless - sync predicate', () => { it('a higher order predicate can pass more options', () => { unless( predicateSync2({ z: 'z' }), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -329,59 +316,53 @@ describe('services unless - async predicate', () => { predicateValue = null; }); - it('is passed hook as param', (done: any) => { + it('is passed hook as param', async () => { const result = unless(predicateAsync, hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(predicateHook, hookBefore); - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(predicateHook, hookBefore); + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); - it('is resolved', (done: any) => { + it('is resolved', async () => { // @ts-ignore const result = unless(predicateAsyncFunny, hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(predicateHook, hookBefore); - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); + } - assert.equal(predicateValue, null); + await result.then((result1: any) => { + assert.deepEqual(predicateHook, hookBefore); + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); - } + assert.equal(predicateValue, null); + }); }); - it('a higher order predicate can pass more options', (done: any) => { + it('a higher order predicate can pass more options', async () => { const result = unless(predicateAsync2({ y: 'y' }), hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(predicateOptions, { y: 'y' }); - assert.deepEqual(predicateHook, hookBefore); - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(predicateOptions, { y: 'y' }); + assert.deepEqual(predicateHook, hookBefore); + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); }); @@ -394,23 +375,19 @@ describe('services unless - runs multiple hooks', () => { hookFcnAsyncCalls = 0; }); - it('runs successfully', (done: any) => { - unless( + it('runs successfully', async () => { + await unless( false, hookFcnSync, hookFcnAsync, - hookFcn - )(hook) - // @ts-ignore - .then((hook: any) => { - assert.deepEqual(hook, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.equal(hookFcnAsyncCalls, 1); - assert.equal(hookFcnCalls, 1); - assert.deepEqual(hook, hookAfter); - - done(); - }); + hookFcn, + )(hook).then((hook: any) => { + assert.deepEqual(hook, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.equal(hookFcnAsyncCalls, 1); + assert.equal(hookFcnCalls, 1); + assert.deepEqual(hook, hookAfter); + }); }); }); diff --git a/test/hooks/validate-schema.test.ts b/test/hooks/validate-schema.test.ts index 20d58569..ebb0300d 100755 --- a/test/hooks/validate-schema.test.ts +++ b/test/hooks/validate-schema.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert, expect } from 'vitest'; import { validateSchema } from '../../src/hooks/validate-schema'; @@ -117,7 +117,7 @@ describe('services validateSchema', () => { try { validateSchema(schema, Ajv)(hookBefore); - assert.fail(true, false, 'test succeeds unexpectedly'); + assert.fail('test succeeds unexpectedly'); } catch (err: any) { assert.deepEqual(err.errors, [ "'first' should be string", @@ -132,7 +132,7 @@ describe('services validateSchema', () => { try { validateSchema(schema, Ajv)(hookBeforeArray); - assert.fail(true, false, 'test succeeds unexpectedly'); + assert.fail('test succeeds unexpectedly'); } catch (err: any) { assert.deepEqual(err.errors, [ "'in row 1 of 3, first' should be string", @@ -146,7 +146,7 @@ describe('services validateSchema', () => { try { validateSchema(schemaForAjvInstance, ajv)(hookBefore); - assert.fail(true, false, 'test succeeds unexpectedly'); + assert.fail('test succeeds unexpectedly'); } catch (err: any) { assert.deepEqual(err.errors, [ '\'first\' should match format "startWithJo"', @@ -161,7 +161,7 @@ describe('services validateSchema', () => { try { validateSchema(schemaForAjvInstance, ajv)(hookBeforeArray); - assert.fail(true, false, 'test succeeds unexpectedly'); + assert.fail('test succeeds unexpectedly'); } catch (err: any) { assert.deepEqual(err.errors, [ '\'in row 1 of 3, first\' should match format "startWithJo"', @@ -177,7 +177,7 @@ describe('services validateSchema', () => { try { validateSchema(schemaForAjvInstance, ajv)(hookBefore); - assert.fail(true, false, 'test succeeds unexpectedly'); + assert.fail('test succeeds unexpectedly'); } catch (err: any) { assert.deepEqual(err.errors, ["'nested' should NOT have additional properties: 'foo'"]); } @@ -185,7 +185,7 @@ describe('services validateSchema', () => { }); describe('Async validation', () => { - before(() => { + beforeAll(() => { ajvAsync = new Ajv({ allErrors: true }); ajvAsync.addKeyword('equalsDoe', { @@ -248,94 +248,45 @@ describe('services validateSchema', () => { }; }); - it('works with string schema id', (next: any) => { - // @ts-ignore - validateSchema( - 'asyncSchema', - ajvAsync - )(hookBefore) - // @ts-ignore - .then(() => { - next(); - }) - .catch((err: any) => { - console.log(err); - assert.fail(true, false, 'test fails unexpectedly'); - }); + it('works with string schema id', async () => { + await validateSchema('asyncSchema', ajvAsync)(hookBefore); }); - it('works with valid single item', (next: any) => { - // @ts-ignore - validateSchema( - asyncSchema, - ajvAsync - )(hookBefore) - // @ts-ignore - .then(() => { - next(); - }) - .catch((err: any) => { - console.log(err); - assert.fail(true, false, 'test fails unexpectedly'); - }); + it('works with valid single item', async () => { + await validateSchema(asyncSchema, ajvAsync)(hookBefore); }); - it('works with array of valid items', (next: any) => { - // @ts-ignore - validateSchema( - asyncSchema, - ajvAsync - )(hookBeforeArray) - // @ts-ignore - .then(() => { - next(); - }) - .catch(() => { - assert.fail(true, false, 'test fails unexpectedly'); - }); + it('works with array of valid items', async () => { + await validateSchema(asyncSchema, ajvAsync)(hookBeforeArray); }); - it('fails with in valid single item', (next: any) => { + it('fails with in valid single item', async () => { hookBefore.data = { first: '1' }; - // @ts-ignore - validateSchema( - asyncSchema, - ajvAsync - )(hookBefore) - // @ts-ignore - .then(() => { - assert.fail(true, false, 'test succeeds unexpectedly'); - }) - .catch((err: any) => { + await expect(validateSchema(asyncSchema, ajvAsync)(hookBefore)).rejects.toSatisfy( + (err: any) => { assert.deepEqual(err.errors, [ '\'first\' should match format "3or4chars"', "should have required property 'last'", ]); - next(); - }); + return true; + }, + ); }); - it('fails with array of invalid items', (next: any) => { + it('fails with array of invalid items', async () => { hookBeforeArray.data[0].last = 'not Doe'; delete hookBeforeArray.data[2].last; - // @ts-ignore - validateSchema( - asyncSchema, - ajvAsync - )(hookBeforeArray) - // @ts-ignore - .then(() => { - assert.fail(true, false, 'test succeeds unexpectedly'); - }) - .catch((err: any) => { + await expect(validateSchema(asyncSchema, ajvAsync)(hookBeforeArray)).rejects.toSatisfy( + (err: any) => { assert.deepEqual(err.errors, [ "in row 3 of 3, should have required property 'last'", "'in row 1 of 3, last' should be Doe", ]); - next(); - }); + return true; + }, + ); }); }); }); diff --git a/test/hooks/validate.test.ts b/test/hooks/validate.test.ts index 62c1b00c..196b392a 100755 --- a/test/hooks/validate.test.ts +++ b/test/hooks/validate.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert, expect } from 'vitest'; import { validate } from '../../src'; import { BadRequest } from '@feathersjs/errors'; @@ -71,34 +71,21 @@ describe('services validate', () => { }); }); - it('test passes on correct data', (next: any) => { - validate(fcnPromise)(hookOk) - // @ts-ignore - .then((hook: any) => { - assert.deepEqual(hook, origHookOk); - assert.deepEqual(fcnHook, origHookOk); - next(); - }) - .catch((err: any) => next(err)); + it('test passes on correct data', async () => { + const result = await validate(fcnPromise)(hookOk); + + assert.deepEqual(result, origHookOk); + assert.deepEqual(fcnHook, origHookOk); }); - it('test can sanitize correct data', (next: any) => { - validate(fcnPromiseSanitize)(hookOk) - // @ts-ignore - .then((hook: any) => { - assert.equal(hook.data.email, 'a@a.com'); - next(); - }) - .catch((err: any) => next(err)); + it('test can sanitize correct data', async () => { + const result = await validate(fcnPromiseSanitize)(hookOk); + + assert.equal(result.data.email, 'a@a.com'); }); - it('test fails on errors', (next: any) => { - validate(fcnPromiseSanitize)(hookBad) - // @ts-ignore - .then(() => { - assert.fail(true, false, 'test should not have completed successfully'); - }) - .catch(() => next()); + it('test fails on errors', async () => { + await expect(validate(fcnPromiseSanitize)(hookBad)).rejects.toThrow(); }); }); }); diff --git a/test/hooks/when.test.ts b/test/hooks/when.test.ts index 9b7fc095..5cc51dd6 100755 --- a/test/hooks/when.test.ts +++ b/test/hooks/when.test.ts @@ -1,5 +1,5 @@ import type { HookContext } from '@feathersjs/feathers'; -import { assert } from 'chai'; +import { assert } from 'vitest'; import { when } from '../../src'; import { isPromise } from '../../src/common'; @@ -77,7 +77,7 @@ describe('services when - sync predicate, sync hook', () => { when( // @ts-ignore 'a', - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -92,7 +92,7 @@ describe('services when - sync predicate, sync hook', () => { const result = when('', hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); @@ -104,7 +104,7 @@ describe('services when - sync predicate, sync hook', () => { when( // @ts-ignore () => 'a', - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -119,7 +119,7 @@ describe('services when - sync predicate, sync hook', () => { const result = when(() => '', hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); @@ -137,28 +137,25 @@ describe('services when - sync predicate, async hook', () => { hookFcnAsyncCalls = 0; }); - it('calls async hook function if sync predicate truthy', (done: any) => { - // @ts-ignore + it('calls async hook function if sync predicate truthy', async () => { const result = when(true, hookFcnAsync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnAsyncCalls, 1); - assert.deepEqual(hook, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnAsyncCalls, 1); + assert.deepEqual(hook, hookAfter); + }); }); it('does not call async hook function if sync predicate falsey', () => { const result = when(false, hookFcnAsync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnAsyncCalls, 0); @@ -166,20 +163,18 @@ describe('services when - sync predicate, async hook', () => { } }); - it('calls async hook function if sync predicate returns truthy', (done: any) => { + it('calls async hook function if sync predicate returns truthy', async () => { const result = when(() => true, hookFcnAsync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnAsyncCalls, 1); - assert.deepEqual(hook, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnAsyncCalls, 1); + assert.deepEqual(hook, hookAfter); + }); }); }); @@ -192,36 +187,32 @@ describe('services when - async predicate, sync hook', () => { hookFcnAsyncCalls = 0; }); - it('calls sync hook function if async predicate truthy', (done: any) => { + it('calls sync hook function if async predicate truthy', async () => { const result = when(() => new Promise(resolve => resolve(true)), hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); - it('does not call sync hook function if async predicate falsey', (done: any) => { + it('does not call sync hook function if async predicate falsey', async () => { const result = when(() => new Promise(resolve => resolve(false)), hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookBefore); - assert.equal(hookFcnSyncCalls, 0); - assert.deepEqual(hook, hookBefore); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookBefore); + assert.equal(hookFcnSyncCalls, 0); + assert.deepEqual(hook, hookBefore); + }); }); }); @@ -234,36 +225,32 @@ describe('services when - async predicate, async hook', () => { hookFcnAsyncCalls = 0; }); - it('calls async hook function if async predicate truthy', (done: any) => { + it('calls async hook function if async predicate truthy', async () => { const result = when(() => new Promise(resolve => resolve(true)), hookFcnAsync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnAsyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnAsyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); - it('does not call async hook function if async predicate falsey', (done: any) => { + it('does not call async hook function if async predicate falsey', async () => { const result = when(() => new Promise(resolve => resolve(false)), hookFcnAsync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(result1, hookBefore); - assert.equal(hookFcnAsyncCalls, 0); - assert.deepEqual(hook, hookBefore); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(result1, hookBefore); + assert.equal(hookFcnAsyncCalls, 0); + assert.deepEqual(hook, hookBefore); + }); }); }); @@ -282,7 +269,7 @@ describe('services when - sync predicate', () => { when( // @ts-ignore () => 'a', - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -295,7 +282,7 @@ describe('services when - sync predicate', () => { it('is passed hook as param', () => { when( predicateSync, - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -309,7 +296,7 @@ describe('services when - sync predicate', () => { it('a higher order predicate can pass more options', () => { when( predicateSync2({ z: 'z' }), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -334,61 +321,53 @@ describe('services when - async predicate', () => { predicateValue = null; }); - it('is passed hook as param', (done: any) => { + it('is passed hook as param', async () => { // @ts-ignore const result = when(predicateAsync, hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(predicateHook, hookBefore); - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(predicateHook, hookBefore); + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); - it('is resolved', (done: any) => { - // @ts-ignore + it('is resolved', async () => { const result = when(predicateAsyncFunny, hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(predicateHook, hookBefore); - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); + } - assert.equal(predicateValue, 'abc'); + await result.then((result1: any) => { + assert.deepEqual(predicateHook, hookBefore); + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); - } + assert.equal(predicateValue, 'abc'); + }); }); - it('a higher order predicate can pass more options', (done: any) => { - // @ts-ignore + it('a higher order predicate can pass more options', async () => { const result = when(predicateAsync2({ y: 'y' }), hookFcnSync)(hook); - if (isPromise(result)) { - result.then((result1: any) => { - assert.deepEqual(predicateOptions, { y: 'y' }); - assert.deepEqual(predicateHook, hookBefore); - assert.deepEqual(result1, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.deepEqual(result1, hookAfter); - - done(); - }); - } else { - assert.fail(true, false, 'promise unexpectedly not returned'); + if (!isPromise(result)) { + assert.fail('promise unexpectedly not returned'); } + + await result.then((result1: any) => { + assert.deepEqual(predicateOptions, { y: 'y' }); + assert.deepEqual(predicateHook, hookBefore); + assert.deepEqual(result1, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.deepEqual(result1, hookAfter); + }); }); }); @@ -401,23 +380,19 @@ describe('services when - runs multiple hooks', () => { hookFcnAsyncCalls = 0; }); - it('runs successfully', (done: any) => { - when( + it('runs successfully', async () => { + await when( true, hookFcnSync, hookFcnAsync, - hookFcn - )(hook) - // @ts-ignore - .then((hook: any) => { - assert.deepEqual(hook, hookAfter); - assert.equal(hookFcnSyncCalls, 1); - assert.equal(hookFcnAsyncCalls, 1); - assert.equal(hookFcnCalls, 1); - assert.deepEqual(hook, hookAfter); - - done(); - }); + hookFcn, + )(hook).then((hook: any) => { + assert.deepEqual(hook, hookAfter); + assert.equal(hookFcnSyncCalls, 1); + assert.equal(hookFcnAsyncCalls, 1); + assert.equal(hookFcnCalls, 1); + assert.deepEqual(hook, hookAfter); + }); }); }); diff --git a/test/index.test.ts b/test/index.test.ts index b48b2e1f..c2908803 100755 --- a/test/index.test.ts +++ b/test/index.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import * as allExported from '../src'; const members = [ @@ -55,7 +55,7 @@ const members = [ 'unless', 'some', 'every', - 'isNot' + 'isNot', ].sort(); describe('services exposed hooks', () => { diff --git a/test/utils/calling-params-1.test.ts b/test/utils/calling-params-1.test.ts index a143ad04..cd50d5db 100755 --- a/test/utils/calling-params-1.test.ts +++ b/test/utils/calling-params-1.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { callingParamsDefaults, callingParams } from '../../src'; let context1: any; diff --git a/test/utils/calling-params-2.test.ts b/test/utils/calling-params-2.test.ts index 11586a49..9303e094 100755 --- a/test/utils/calling-params-2.test.ts +++ b/test/utils/calling-params-2.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { makeCallingParams } from '../../src'; let context: any; diff --git a/test/utils/check-context.test.ts b/test/utils/check-context.test.ts index b9cce324..7eac289c 100755 --- a/test/utils/check-context.test.ts +++ b/test/utils/check-context.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { checkContext } from '../../src'; diff --git a/test/utils/combine.test.ts b/test/utils/combine.test.ts index d9d78aa1..32000b5d 100755 --- a/test/utils/combine.test.ts +++ b/test/utils/combine.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { feathers } from '@feathersjs/feathers'; import { MemoryService } from '@feathersjs/memory'; import { combine } from '../../src'; @@ -32,7 +32,7 @@ function user(this: any) { new MemoryService({ store, startId, - }) + }), ); app.service('users').hooks({ @@ -107,7 +107,7 @@ function user(this: any) { } hook.params.trace.push('sync3'); return hook; - } + }, ), function (this: any, hook: any) { if (hook.app !== app) { diff --git a/test/utils/every.test.ts b/test/utils/every.test.ts index adde8e85..13b5fbcb 100755 --- a/test/utils/every.test.ts +++ b/test/utils/every.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { feathers } from '@feathersjs/feathers'; import { MemoryService } from '@feathersjs/memory'; import { iff, every, isNot } from '../../src'; @@ -21,9 +21,9 @@ describe('util every', () => { // @ts-ignore (_hook: any) => 1, (_hook: any) => {}, - (_hook: any) => Promise.resolve(true) + (_hook: any) => Promise.resolve(true), ), - (hook: any) => Promise.resolve(hook) + (hook: any) => Promise.resolve(hook), ), ], }, @@ -51,9 +51,9 @@ describe('util every', () => { (_hook: any) => { throw new Error('Hook 2 errored'); }, - (_hook: any) => true + (_hook: any) => true, ), - (hook: any) => Promise.resolve(hook) + (hook: any) => Promise.resolve(hook), ), ], }, @@ -79,9 +79,9 @@ describe('util every', () => { every( (_hook: any) => true, (_hook: any) => Promise.reject(Error('Hook 2 errored')), - (_hook: any) => true + (_hook: any) => true, ), - (hook: any) => Promise.resolve(hook) + (hook: any) => Promise.resolve(hook), ), ], }, @@ -114,10 +114,10 @@ describe('util every', () => { (_hook: any) => 0, (_hook: any) => null, (_hook: any) => undefined, - (_hook: any) => true - ) + (_hook: any) => true, + ), ), - () => Promise.reject(new Error('A hook returned false')) + () => Promise.reject(new Error('A hook returned false')), ), ], }, diff --git a/test/utils/is-not.test.ts b/test/utils/is-not.test.ts index ebe9e19c..6ed3d4e1 100755 --- a/test/utils/is-not.test.ts +++ b/test/utils/is-not.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { iff, isNot, isProvider } from '../../src'; import { isPromise } from '../../src/common'; @@ -58,32 +58,30 @@ describe('util isNot - predicate', () => { assert.equal(result, true); }); - it('negates an async function 1', (done: any) => { + it('negates an async function 1', async () => { const hook = clone(hookServer); - isNot(predicateAsync(true))(hook) + await isNot(predicateAsync(true))(hook) // @ts-ignore .then((result: any) => { assert.equal(predicateCalls, 1); assert.equal(result, false); - done(); }) .catch(() => { - assert.equal(true, false, 'unexpected catch'); + assert.fail('unexpected catch'); }); }); - it('negates an async function 2', (done: any) => { + it('negates an async function 2', async () => { const hook = clone(hookServer); - isNot(predicateAsync(false))(hook) + await isNot(predicateAsync(false))(hook) // @ts-ignore .then((result: any) => { assert.equal(predicateCalls, 1); assert.equal(result, true); - done(); }) .catch(() => { - assert.equal(true, false, 'unexpected catch'); + assert.fail('unexpected catch'); }); }); }); @@ -109,7 +107,7 @@ describe('services isNot - works with iff and isProvider', () => { it('calls sync hook function if truthy', () => { iff( isNot(isProvider('server')), - hookFcnSync + hookFcnSync, )(hook) // @ts-ignore .then((hook: any) => { @@ -123,7 +121,7 @@ describe('services isNot - works with iff and isProvider', () => { const result = iff(isNot(isProvider('rest')), hookFcnSync)(hook); if (isPromise(result)) { - assert.fail(true, false, 'promise unexpectedly returned'); + assert.fail('promise unexpectedly returned'); } else { assert.deepEqual(result, hookBefore); assert.equal(hookFcnSyncCalls, 0); diff --git a/test/utils/params-for-server.test.ts b/test/utils/params-for-server.test.ts index 0fe20d32..bec8f3b4 100755 --- a/test/utils/params-for-server.test.ts +++ b/test/utils/params-for-server.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { paramsForServer } from '../../src'; diff --git a/test/utils/run-hook.test.ts b/test/utils/run-hook.test.ts index 52b4eb6b..e92d9fe4 100755 --- a/test/utils/run-hook.test.ts +++ b/test/utils/run-hook.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { fastJoin, keep, runHook } from '../../src'; const app = { a: 'a' }; @@ -38,7 +38,7 @@ describe('util runHooks', () => { result: data, type: 'after', }, - 'test hook' + 'test hook', ); }); }); diff --git a/test/utils/some.test.ts b/test/utils/some.test.ts index 1fd2c15c..5958a048 100755 --- a/test/utils/some.test.ts +++ b/test/utils/some.test.ts @@ -1,4 +1,4 @@ -import { assert } from 'chai'; +import { assert } from 'vitest'; import { feathers } from '@feathersjs/feathers'; import { MemoryService } from '@feathersjs/memory'; import { iff, some, isNot } from '../../src'; @@ -23,9 +23,9 @@ describe('util some', () => { (_hook: any) => true, // @ts-ignore (_hook: any) => 1, - (_hook: any) => {} + (_hook: any) => {}, ), - (hook: any) => Promise.resolve(hook) + (hook: any) => Promise.resolve(hook), ), ], }, @@ -53,9 +53,9 @@ describe('util some', () => { (_hook: any) => { throw new Error('Hook 2 errored'); }, - (_hook: any) => true + (_hook: any) => true, ), - (hook: any) => Promise.resolve(hook) + (hook: any) => Promise.resolve(hook), ), ], }, @@ -81,9 +81,9 @@ describe('util some', () => { some( (_hook: any) => true, (_hook: any) => Promise.reject(Error('Hook 2 errored')), - (_hook: any) => true + (_hook: any) => true, ), - (hook: any) => Promise.resolve(hook) + (hook: any) => Promise.resolve(hook), ), ], }, @@ -114,10 +114,10 @@ describe('util some', () => { (_hook: any) => null, (_hook: any) => undefined, // @ts-ignore - (_hook: any) => 0 - ) + (_hook: any) => 0, + ), ), - () => Promise.reject(new Error('All hooks returned false')) + () => Promise.reject(new Error('All hooks returned false')), ), ], }, diff --git a/tsconfig.json b/tsconfig.json index afcb7f0b..1eadbd48 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,61 +1,12 @@ { - "include": ["src/**/*.ts"], - "exclude": ["test/**/*test.ts"], "compilerOptions": { - "outDir": "dist", - /* Basic Options */ - "target": "es2018" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */, - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true /* Generates corresponding '.d.ts' file. */, - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true /* Generates corresponding '.map' file. */, - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - "strictNullChecks": false /* Enable strict null checks. */, - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - "noUnusedLocals": true /* Report errors on unused locals. */, - "noUnusedParameters": true /* Report errors on unused parameters. */, - "noImplicitReturns": true /* Report error when not all code paths in function return a value. */, - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - } + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Node", + "esModuleInterop": true, + "strict": true, + "types": ["vitest/globals"] + }, + "include": ["src/**/*", "test/**/*"], + "exclude": ["node_modules"] } diff --git a/tsconfig.test.json b/tsconfig.test.json deleted file mode 100644 index f7f0e803..00000000 --- a/tsconfig.test.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "include": [ - "src/**/*.ts", - "test/**/*.ts" - ], - "exclude": [ - "dist/**/*" - ], - "compilerOptions": { - "outDir": "dist", - /* Basic Options */ - "target": "es2018", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ - // "lib": [], /* Specify library files to be included in the compilation. */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "composite": true, /* Enable project compilation */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - "strictNullChecks": false, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - "noUnusedLocals": true, /* Report errors on unused locals. */ - "noUnusedParameters": true, /* Report errors on unused parameters. */ - "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - } -} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 00000000..732a9a36 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + globals: true, + coverage: { + provider: "v8", + reporter: ["text", "lcov"], + include: ["src/**/*.{js,ts}"], + exclude: ["**/*.test.{js,ts}", "src/types.ts"], + thresholds: { + lines: 90, + functions: 90, + branches: 90, + statements: 90, + } + }, + }, +});