From 5b2db4dd69220d603ec18e5ef09ba95ba18d903b Mon Sep 17 00:00:00 2001 From: Darius <19603573+itsMapleLeaf@users.noreply.github.com> Date: Tue, 11 Jan 2022 00:33:13 -0600 Subject: [PATCH] Convert tests to Vitest (#4) --- .eslintrc.json | 4 +- .../{deploy-docs.yml => deploy-website.yml} | 5 +- .github/workflows/main.yml | 30 +- Dockerfile | 4 +- package.json | 6 +- .../videos/mobile-popover-menu.test.ts.mp4 | Bin 68192 -> 0 bytes .../convert-object-property-case.test.ts | 13 +- packages/reacord/helpers/is-object.ts | 7 + packages/reacord/helpers/prune-null-values.ts | 15 - .../reacord/helpers/prune-nullish-values.ts | 27 + packages/reacord/helpers/reject-after.ts | 2 +- packages/reacord/jest.config.js | 15 - .../library/core/components/select.tsx | 30 +- .../library/core/reacord-discord-js.ts | 2 +- packages/reacord/library/internal/message.ts | 9 +- packages/reacord/library/main.ts | 1 - packages/reacord/package.json | 14 +- packages/reacord/test/action-row.test.tsx | 3 +- .../reacord/test/channel-message-renderer.tsx | 3 +- packages/reacord/test/discord-js.test.tsx | 3 +- packages/reacord/test/embed.test.tsx | 3 +- packages/reacord/test/ephemeral-reply.test.ts | 2 +- .../reacord/test/event-callbacks.test.tsx | 3 +- packages/reacord/test/link.test.tsx | 3 +- packages/reacord/test/reacord.test.tsx | 10 +- packages/reacord/test/renderer.test.ts | 4 +- packages/reacord/test/select.test.tsx | 13 +- .../test-adapter.ts} | 69 +- packages/reacord/vitest.config.ts | 8 + packages/{docs => website}/.gitignore | 2 + .../{docs => website}/app/entry.client.tsx | 0 .../{docs => website}/app/entry.server.tsx | 0 .../app/modules/helpers/raise.ts | 0 .../app/modules/landing/landing-example.mdx | 0 .../app/modules/navigation/app-link.tsx | 0 .../navigation/guide-links-context.tsx | 0 .../navigation/load-guide-links.server.ts | 0 .../app/modules/navigation/main-links.tsx | 0 .../modules/navigation/main-navigation.tsx | 0 .../app/modules/ui/components.ts | 0 .../app/modules/ui/popover-menu.tsx | 0 .../app/modules/ui/prism-theme.css | 0 .../app/modules/ui/tailwind.css | 0 packages/{docs => website}/app/react.d.ts | 0 packages/{docs => website}/app/remix.env.d.ts | 0 packages/{docs => website}/app/root.tsx | 0 .../{docs => website}/app/routes/guides.tsx | 0 .../app/routes/guides/buttons.md | 0 .../app/routes/guides/custom-adapters.md | 0 .../app/routes/guides/embeds.md | 0 .../app/routes/guides/getting-started.md | 0 .../app/routes/guides/links.md | 0 .../app/routes/guides/select-menu.md | 0 .../app/routes/guides/sending-messages.md | 0 .../{docs => website}/app/routes/index.tsx | 0 .../app/routes/tailwind[.]css.tsx | 0 packages/{docs => website}/cypress.json | 0 .../cypress/fixtures/example.json | 0 .../integration/mobile-popover-menu.test.ts | 0 .../cypress/plugins/index.js | 8 +- .../cypress/support/commands.js | 0 .../cypress/support/index.js | 0 .../{docs => website}/cypress/tsconfig.json | 0 packages/{docs => website}/package.json | 10 +- packages/{docs => website}/public/favicon.ico | Bin packages/{docs => website}/remix.config.js | 0 packages/website/scripts/package.json | 3 + packages/website/scripts/test.js | 10 + .../{docs => website}/tailwind.config.cjs | 0 packages/{docs => website}/tsconfig.json | 0 packages/{docs => website}/typedoc.json | 0 pnpm-lock.yaml | 2187 +++-------------- 72 files changed, 544 insertions(+), 1984 deletions(-) rename .github/workflows/{deploy-docs.yml => deploy-website.yml} (86%) delete mode 100644 packages/docs/cypress/videos/mobile-popover-menu.test.ts.mp4 create mode 100644 packages/reacord/helpers/is-object.ts delete mode 100644 packages/reacord/helpers/prune-null-values.ts create mode 100644 packages/reacord/helpers/prune-nullish-values.ts delete mode 100644 packages/reacord/jest.config.js rename packages/reacord/{library/core/reacord-tester.ts => test/test-adapter.ts} (83%) create mode 100644 packages/reacord/vitest.config.ts rename packages/{docs => website}/.gitignore (63%) rename packages/{docs => website}/app/entry.client.tsx (100%) rename packages/{docs => website}/app/entry.server.tsx (100%) rename packages/{docs => website}/app/modules/helpers/raise.ts (100%) rename packages/{docs => website}/app/modules/landing/landing-example.mdx (100%) rename packages/{docs => website}/app/modules/navigation/app-link.tsx (100%) rename packages/{docs => website}/app/modules/navigation/guide-links-context.tsx (100%) rename packages/{docs => website}/app/modules/navigation/load-guide-links.server.ts (100%) rename packages/{docs => website}/app/modules/navigation/main-links.tsx (100%) rename packages/{docs => website}/app/modules/navigation/main-navigation.tsx (100%) rename packages/{docs => website}/app/modules/ui/components.ts (100%) rename packages/{docs => website}/app/modules/ui/popover-menu.tsx (100%) rename packages/{docs => website}/app/modules/ui/prism-theme.css (100%) rename packages/{docs => website}/app/modules/ui/tailwind.css (100%) rename packages/{docs => website}/app/react.d.ts (100%) rename packages/{docs => website}/app/remix.env.d.ts (100%) rename packages/{docs => website}/app/root.tsx (100%) rename packages/{docs => website}/app/routes/guides.tsx (100%) rename packages/{docs => website}/app/routes/guides/buttons.md (100%) rename packages/{docs => website}/app/routes/guides/custom-adapters.md (100%) rename packages/{docs => website}/app/routes/guides/embeds.md (100%) rename packages/{docs => website}/app/routes/guides/getting-started.md (100%) rename packages/{docs => website}/app/routes/guides/links.md (100%) rename packages/{docs => website}/app/routes/guides/select-menu.md (100%) rename packages/{docs => website}/app/routes/guides/sending-messages.md (100%) rename packages/{docs => website}/app/routes/index.tsx (100%) rename packages/{docs => website}/app/routes/tailwind[.]css.tsx (100%) rename packages/{docs => website}/cypress.json (100%) rename packages/{docs => website}/cypress/fixtures/example.json (100%) rename packages/{docs => website}/cypress/integration/mobile-popover-menu.test.ts (100%) rename packages/{docs => website}/cypress/plugins/index.js (79%) rename packages/{docs => website}/cypress/support/commands.js (100%) rename packages/{docs => website}/cypress/support/index.js (100%) rename packages/{docs => website}/cypress/tsconfig.json (100%) rename packages/{docs => website}/package.json (87%) rename packages/{docs => website}/public/favicon.ico (100%) rename packages/{docs => website}/remix.config.js (100%) create mode 100644 packages/website/scripts/package.json create mode 100644 packages/website/scripts/test.js rename packages/{docs => website}/tailwind.config.cjs (100%) rename packages/{docs => website}/tsconfig.json (100%) rename packages/{docs => website}/typedoc.json (100%) diff --git a/.eslintrc.json b/.eslintrc.json index 7b15bc2..82464ae 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -17,9 +17,9 @@ }, "overrides": [ { - "files": ["packages/docs/cypress/**"], + "files": ["packages/website/cypress/**"], "parserOptions": { - "project": "./packages/docs/cypress/tsconfig.json" + "project": "./packages/website/cypress/tsconfig.json" } } ] diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-website.yml similarity index 86% rename from .github/workflows/deploy-docs.yml rename to .github/workflows/deploy-website.yml index cd9278b..a834ca4 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-website.yml @@ -1,11 +1,10 @@ -name: deploy docs +name: deploy website on: push: branches: [main] paths: - - "packages/docs/**" + - "packages/website/**" - "reacord/library/**/*.{ts,tsx}" - jobs: deploy: runs-on: ubuntu-latest diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b86de1f..ba63361 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,20 +11,24 @@ env: TEST_GUILD_ID: ${{ secrets.TEST_GUILD_ID }} jobs: - run-scripts: + run-commands: strategy: - matrix: - scripts: - - name: test - script: coverage - - name: lint - script: lint - - name: typecheck - script: typecheck - - name: build - script: build fail-fast: false - name: ${{ matrix.scripts.name }} + matrix: + command: + # if these run in the same process, it dies, + # so we test them separate + - name: test reacord + run: pnpm test -C packages/reacord + - name: test website + run: pnpm test -C packages/website + - name: build + run: pnpm build --recursive + - name: lint + run: pnpm lint + - name: typecheck + run: pnpm typecheck --parallel + name: ${{ matrix.command.name }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -34,4 +38,4 @@ jobs: node-version: "16" - run: npm i -g pnpm - run: pnpm install --frozen-lockfile - - run: pnpm run --recursive ${{ matrix.scripts.script }} + - run: ${{ matrix.command.run }} diff --git a/Dockerfile b/Dockerfile index 93eb99e..69706e2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,7 @@ RUN ls -R RUN npm install -g pnpm RUN pnpm install --unsafe-perm --frozen-lockfile -RUN pnpm run build -C packages/docs +RUN pnpm run build -C packages/website ENV NODE_ENV=production -CMD [ "pnpm", "-C", "packages/docs", "start" ] +CMD [ "pnpm", "-C", "packages/website", "start" ] diff --git a/package.json b/package.json index 5719ed3..ebfb76e 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ "@itsmapleleaf/configs": "^1.1.2" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.9.0", - "@typescript-eslint/parser": "^5.9.0", + "@typescript-eslint/eslint-plugin": "^5.9.1", + "@typescript-eslint/parser": "^5.9.1", "eslint": "^8.6.0", "eslint-config-prettier": "^8.3.0", "eslint-import-resolver-typescript": "^2.5.0", @@ -18,7 +18,7 @@ "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.28.0", "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-unicorn": "^39.0.0", + "eslint-plugin-unicorn": "^40.0.0", "prettier": "^2.5.1", "typescript": "^4.5.4" }, diff --git a/packages/docs/cypress/videos/mobile-popover-menu.test.ts.mp4 b/packages/docs/cypress/videos/mobile-popover-menu.test.ts.mp4 deleted file mode 100644 index d84530334c5740716aa0c25737ab589eabf1decf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68192 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 diff --git a/packages/reacord/helpers/convert-object-property-case.test.ts b/packages/reacord/helpers/convert-object-property-case.test.ts index 3d4c9b9..431765e 100644 --- a/packages/reacord/helpers/convert-object-property-case.test.ts +++ b/packages/reacord/helpers/convert-object-property-case.test.ts @@ -2,6 +2,7 @@ import type { CamelCasedPropertiesDeep, SnakeCasedPropertiesDeep, } from "type-fest" +import { expect, test } from "vitest" import { camelCaseDeep, snakeCaseDeep } from "./convert-object-property-case" test("camelCaseDeep", () => { @@ -12,12 +13,14 @@ test("camelCaseDeep", () => { someOtherProp: "someOtherValue", } - expect(camelCaseDeep(input)).toEqual>({ + const expected: CamelCasedPropertiesDeep = { someProp: { someDeepProp: "some_deep_value", }, someOtherProp: "someOtherValue", - }) + } + + expect(camelCaseDeep(input)).toEqual(expected) }) test("snakeCaseDeep", () => { @@ -28,10 +31,12 @@ test("snakeCaseDeep", () => { some_other_prop: "someOtherValue", } - expect(snakeCaseDeep(input)).toEqual>({ + const expected: SnakeCasedPropertiesDeep = { some_prop: { some_deep_prop: "someDeepValue", }, some_other_prop: "someOtherValue", - }) + } + + expect(snakeCaseDeep(input)).toEqual(expected) }) diff --git a/packages/reacord/helpers/is-object.ts b/packages/reacord/helpers/is-object.ts new file mode 100644 index 0000000..b6d975d --- /dev/null +++ b/packages/reacord/helpers/is-object.ts @@ -0,0 +1,7 @@ +export function isObject( + value: T, +): value is Exclude { + return typeof value === "object" && value !== null +} +type Primitive = string | number | boolean | undefined | null +type AnyFunction = (...args: any[]) => any diff --git a/packages/reacord/helpers/prune-null-values.ts b/packages/reacord/helpers/prune-null-values.ts deleted file mode 100644 index 5ce7dc3..0000000 --- a/packages/reacord/helpers/prune-null-values.ts +++ /dev/null @@ -1,15 +0,0 @@ -export function pruneNullishValues( - object: T, -): PruneNullishValues { - const result: any = {} - for (const [key, value] of Object.entries(object)) { - if (value != undefined) { - result[key] = value - } - } - return result -} - -type PruneNullishValues = { - [Key in keyof T]: NonNullable -} diff --git a/packages/reacord/helpers/prune-nullish-values.ts b/packages/reacord/helpers/prune-nullish-values.ts new file mode 100644 index 0000000..1bc28e2 --- /dev/null +++ b/packages/reacord/helpers/prune-nullish-values.ts @@ -0,0 +1,27 @@ +import { isObject } from "./is-object" + +export function pruneNullishValues(input: T): PruneNullishValues { + if (Array.isArray(input)) { + return input.filter(Boolean).map((item) => pruneNullishValues(item)) as any + } + + if (!isObject(input)) { + return input as any + } + + const result: any = {} + for (const [key, value] of Object.entries(input)) { + if (value != undefined) { + result[key] = isObject(value) ? pruneNullishValues(value) : value + } + } + return result +} + +type PruneNullishValues = Input extends ReadonlyArray + ? ReadonlyArray> + : Input extends object + ? { + [Key in keyof Input]: NonNullable + } + : Input diff --git a/packages/reacord/helpers/reject-after.ts b/packages/reacord/helpers/reject-after.ts index c6bcb1b..12b236c 100644 --- a/packages/reacord/helpers/reject-after.ts +++ b/packages/reacord/helpers/reject-after.ts @@ -6,5 +6,5 @@ export async function rejectAfter( error: unknown = `rejected after ${timeMs}ms`, ): Promise { await setTimeout(timeMs) - return Promise.reject(toError(error)) + throw toError(error) } diff --git a/packages/reacord/jest.config.js b/packages/reacord/jest.config.js deleted file mode 100644 index a99424e..0000000 --- a/packages/reacord/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/** @type {import('@jest/types').Config.InitialOptions} */ -const config = { - transform: { - "^.+\\.[jt]sx?$": ["esbuild-jest", { format: "esm", sourcemap: true }], - }, - extensionsToTreatAsEsm: [".ts", ".tsx"], - moduleNameMapper: { - "^(\\.\\.?/.+)\\.jsx?$": "$1", - }, - verbose: true, - cache: false, - coverageReporters: ["text", "text-summary", "html"], - coveragePathIgnorePatterns: ["discord-js-adapter", "test/setup-testing"], -} -export default config diff --git a/packages/reacord/library/core/components/select.tsx b/packages/reacord/library/core/components/select.tsx index 3519091..c8fb79d 100644 --- a/packages/reacord/library/core/components/select.tsx +++ b/packages/reacord/library/core/components/select.tsx @@ -4,7 +4,11 @@ import React from "react" import { isInstanceOf } from "../../../helpers/is-instance-of" import { ReacordElement } from "../../internal/element.js" import type { ComponentInteraction } from "../../internal/interaction" -import type { ActionRow, MessageOptions } from "../../internal/message" +import type { + ActionRow, + ActionRowItem, + MessageOptions, +} from "../../internal/message" import { Node } from "../../internal/node.js" import type { ComponentEvent } from "../component-event" import { OptionNode } from "./option-node" @@ -108,19 +112,25 @@ class SelectNode extends Node { ...props } = this.props - actionRow.push({ + const item: ActionRowItem = { ...props, type: "select", customId: this.customId, options, - // I'm not counting on people using value and values at the same time, - // but maybe we should resolve this differently anyhow? e.g. one should override the other - // or just warn if there are both - // or... try some other alternative design entirely - values: [...(values || []), ...(value ? [value] : [])], - minValues: multiple ? minValues : undefined, - maxValues: multiple ? Math.max(minValues, maxValues) : undefined, - }) + values: [], + } + + if (multiple) { + item.minValues = minValues + item.maxValues = maxValues + if (values) item.values = values + } + + if (!multiple && value != undefined) { + item.values = [value] + } + + actionRow.push(item) } override handleComponentInteraction( diff --git a/packages/reacord/library/core/reacord-discord-js.ts b/packages/reacord/library/core/reacord-discord-js.ts index ee1d6dd..466689e 100644 --- a/packages/reacord/library/core/reacord-discord-js.ts +++ b/packages/reacord/library/core/reacord-discord-js.ts @@ -3,7 +3,7 @@ import * as Discord from "discord.js" import type { ReactNode } from "react" import type { Except } from "type-fest" import { pick } from "../../helpers/pick" -import { pruneNullishValues } from "../../helpers/prune-null-values" +import { pruneNullishValues } from "../../helpers/prune-nullish-values" import { raise } from "../../helpers/raise" import { toUpper } from "../../helpers/to-upper" import type { ComponentInteraction } from "../internal/interaction" diff --git a/packages/reacord/library/internal/message.ts b/packages/reacord/library/internal/message.ts index a670a12..246f8ac 100644 --- a/packages/reacord/library/internal/message.ts +++ b/packages/reacord/library/internal/message.ts @@ -9,9 +9,12 @@ export type MessageOptions = { actionRows: ActionRow[] } -export type ActionRow = Array< - MessageButtonOptions | MessageLinkOptions | MessageSelectOptions -> +export type ActionRow = ActionRowItem[] + +export type ActionRowItem = + | MessageButtonOptions + | MessageLinkOptions + | MessageSelectOptions export type MessageButtonOptions = { type: "button" diff --git a/packages/reacord/library/main.ts b/packages/reacord/library/main.ts index 0db269d..536d7c6 100644 --- a/packages/reacord/library/main.ts +++ b/packages/reacord/library/main.ts @@ -15,4 +15,3 @@ export * from "./core/components/select" export * from "./core/instance" export * from "./core/reacord" export * from "./core/reacord-discord-js" -export * from "./core/reacord-tester" diff --git a/packages/reacord/package.json b/packages/reacord/package.json index 83ff822..2f80bc3 100644 --- a/packages/reacord/package.json +++ b/packages/reacord/package.json @@ -20,9 +20,8 @@ "scripts": { "build": "tsup-node library/main.ts --target node16 --format cjs,esm --dts --sourcemap", "build-watch": "pnpm build -- --watch", - "test": "node --experimental-vm-modules --no-warnings ./node_modules/jest/bin/jest.js --colors", - "test-watch": "pnpm test -- --watch", - "coverage": "pnpm test -- --coverage", + "test": "vitest --coverage --no-watch", + "test-dev": "vitest", "typecheck": "tsc --noEmit", "playground": "nodemon --exec esmo --ext ts,tsx ./playground/main.tsx", "release": "release-it" @@ -33,7 +32,7 @@ "@types/react-reconciler": "^0.26.4", "nanoid": "^3.1.30", "react-reconciler": "^0.26.2", - "rxjs": "^7.5.1" + "rxjs": "^7.5.2" }, "peerDependencies": { "discord.js": "^13.3", @@ -45,8 +44,6 @@ } }, "devDependencies": { - "@jest/globals": "^27.4.6", - "@types/jest": "^27.4.0", "@types/lodash-es": "^4.17.5", "c8": "^7.11.0", "discord.js": "^13.5.1", @@ -54,7 +51,6 @@ "esbuild": "latest", "esbuild-jest": "^0.5.0", "esmo": "^0.13.0", - "jest": "^27.4.7", "lodash-es": "^4.17.21", "nodemon": "^2.0.15", "prettier": "^2.5.1", @@ -63,7 +59,9 @@ "release-it": "^14.12.1", "tsup": "^5.11.11", "type-fest": "^2.9.0", - "typescript": "^4.5.4" + "typescript": "^4.5.4", + "vite": "^2.7.10", + "vitest": "^0.0.140" }, "resolutions": { "esbuild": "latest" diff --git a/packages/reacord/test/action-row.test.tsx b/packages/reacord/test/action-row.test.tsx index 9c81132..26b6369 100644 --- a/packages/reacord/test/action-row.test.tsx +++ b/packages/reacord/test/action-row.test.tsx @@ -1,6 +1,7 @@ import React from "react" -import { ReacordTester } from "../library/core/reacord-tester" +import { test } from "vitest" import { ActionRow, Button, Select } from "../library/main" +import { ReacordTester } from "./test-adapter" const testing = new ReacordTester() diff --git a/packages/reacord/test/channel-message-renderer.tsx b/packages/reacord/test/channel-message-renderer.tsx index e5e96f3..a56c433 100644 --- a/packages/reacord/test/channel-message-renderer.tsx +++ b/packages/reacord/test/channel-message-renderer.tsx @@ -1,2 +1,3 @@ +import { test } from "vitest" + test.todo("channel message renderer") -export {} diff --git a/packages/reacord/test/discord-js.test.tsx b/packages/reacord/test/discord-js.test.tsx index 5e147d0..787cc9d 100644 --- a/packages/reacord/test/discord-js.test.tsx +++ b/packages/reacord/test/discord-js.test.tsx @@ -1,2 +1,3 @@ +import { test } from "vitest" + test.todo("discord js integration") -export {} diff --git a/packages/reacord/test/embed.test.tsx b/packages/reacord/test/embed.test.tsx index d86eeb1..7262c43 100644 --- a/packages/reacord/test/embed.test.tsx +++ b/packages/reacord/test/embed.test.tsx @@ -1,5 +1,5 @@ import React from "react" -import { ReacordTester } from "../library/core/reacord-tester" +import { test } from "vitest" import { Embed, EmbedAuthor, @@ -9,6 +9,7 @@ import { EmbedThumbnail, EmbedTitle, } from "../library/main" +import { ReacordTester } from "./test-adapter" const testing = new ReacordTester() diff --git a/packages/reacord/test/ephemeral-reply.test.ts b/packages/reacord/test/ephemeral-reply.test.ts index e97f785..d761f9a 100644 --- a/packages/reacord/test/ephemeral-reply.test.ts +++ b/packages/reacord/test/ephemeral-reply.test.ts @@ -1,2 +1,2 @@ +import { test } from "vitest" test.todo("ephemeral reply") -export {} diff --git a/packages/reacord/test/event-callbacks.test.tsx b/packages/reacord/test/event-callbacks.test.tsx index 72d481c..7108cd1 100644 --- a/packages/reacord/test/event-callbacks.test.tsx +++ b/packages/reacord/test/event-callbacks.test.tsx @@ -1,3 +1,4 @@ +import { test } from "vitest" + test.todo("button onClick") test.todo("select onChange") -export {} diff --git a/packages/reacord/test/link.test.tsx b/packages/reacord/test/link.test.tsx index f23facf..2ad260a 100644 --- a/packages/reacord/test/link.test.tsx +++ b/packages/reacord/test/link.test.tsx @@ -1,6 +1,7 @@ import React from "react" -import { ReacordTester } from "../library/core/reacord-tester" +import { test } from "vitest" import { Link } from "../library/main" +import { ReacordTester } from "./test-adapter" const tester = new ReacordTester() diff --git a/packages/reacord/test/reacord.test.tsx b/packages/reacord/test/reacord.test.tsx index 2c283b9..b529dba 100644 --- a/packages/reacord/test/reacord.test.tsx +++ b/packages/reacord/test/reacord.test.tsx @@ -1,11 +1,7 @@ import * as React from "react" -import { - Button, - Embed, - EmbedField, - EmbedTitle, - ReacordTester, -} from "../library/main" +import { test } from "vitest" +import { Button, Embed, EmbedField, EmbedTitle } from "../library/main" +import { ReacordTester } from "./test-adapter" test("rendering behavior", async () => { const tester = new ReacordTester() diff --git a/packages/reacord/test/renderer.test.ts b/packages/reacord/test/renderer.test.ts index 845a283..55bcd53 100644 --- a/packages/reacord/test/renderer.test.ts +++ b/packages/reacord/test/renderer.test.ts @@ -1,6 +1,6 @@ +import { test } from "vitest" + // test that the interaction update is _eventually_ deferred if there's no component update, // and that update isn't called after the fact // ...somehow test.todo("defer update timeout") - -export {} diff --git a/packages/reacord/test/select.test.tsx b/packages/reacord/test/select.test.tsx index 0c9c968..6c240fa 100644 --- a/packages/reacord/test/select.test.tsx +++ b/packages/reacord/test/select.test.tsx @@ -1,10 +1,11 @@ -import { jest } from "@jest/globals" import React, { useState } from "react" -import { Button, Option, ReacordTester, Select } from "../library/main" +import { expect, fn, test } from "vitest" +import { Button, Option, Select } from "../library/main" +import { ReacordTester } from "./test-adapter" test("single select", async () => { const tester = new ReacordTester() - const onSelect = jest.fn() + const onSelect = fn() function TestSelect() { const [value, setValue] = useState() @@ -74,7 +75,7 @@ test("single select", async () => { test("multiple select", async () => { const tester = new ReacordTester() - const onSelect = jest.fn() + const onSelect = fn() function TestSelect() { const [values, setValues] = useState([]) @@ -125,13 +126,13 @@ test("multiple select", async () => { expect(onSelect).toHaveBeenCalledTimes(0) tester.findSelectByPlaceholder("select").select("1", "3") - await assertSelect(expect.arrayContaining(["1", "3"])) + await assertSelect(expect.arrayContaining(["1", "3"]) as unknown as string[]) expect(onSelect).toHaveBeenCalledWith( expect.objectContaining({ values: expect.arrayContaining(["1", "3"]) }), ) tester.findSelectByPlaceholder("select").select("2") - await assertSelect(expect.arrayContaining(["2"])) + await assertSelect(expect.arrayContaining(["2"]) as unknown as string[]) expect(onSelect).toHaveBeenCalledWith( expect.objectContaining({ values: expect.arrayContaining(["2"]) }), ) diff --git a/packages/reacord/library/core/reacord-tester.ts b/packages/reacord/test/test-adapter.ts similarity index 83% rename from packages/reacord/library/core/reacord-tester.ts rename to packages/reacord/test/test-adapter.ts index 3ae9c4e..4114089 100644 --- a/packages/reacord/library/core/reacord-tester.ts +++ b/packages/reacord/test/test-adapter.ts @@ -4,34 +4,36 @@ import { nanoid } from "nanoid" import { nextTick } from "node:process" import { promisify } from "node:util" import type { ReactNode } from "react" -import { logPretty } from "../../helpers/log-pretty" -import { omit } from "../../helpers/omit" -import { raise } from "../../helpers/raise" -import type { Channel } from "../internal/channel" -import { Container } from "../internal/container" -import type { - ButtonInteraction, - CommandInteraction, - SelectInteraction, -} from "../internal/interaction" -import type { - Message, - MessageButtonOptions, - MessageOptions, - MessageSelectOptions, -} from "../internal/message" -import { ChannelMessageRenderer } from "../internal/renderers/channel-message-renderer" -import { InteractionReplyRenderer } from "../internal/renderers/interaction-reply-renderer" +import { expect } from "vitest" +import { logPretty } from "../helpers/log-pretty" +import { omit } from "../helpers/omit" +import { pruneNullishValues } from "../helpers/prune-nullish-values" +import { raise } from "../helpers/raise" import type { ChannelInfo, GuildInfo, MessageInfo, UserInfo, -} from "./component-event" -import type { ButtonClickEvent } from "./components/button" -import type { SelectChangeEvent } from "./components/select" -import type { ReacordInstance } from "./instance" -import { Reacord } from "./reacord" +} from "../library/core/component-event" +import type { ButtonClickEvent } from "../library/core/components/button" +import type { SelectChangeEvent } from "../library/core/components/select" +import type { ReacordInstance } from "../library/core/instance" +import { Reacord } from "../library/core/reacord" +import type { Channel } from "../library/internal/channel" +import { Container } from "../library/internal/container" +import type { + ButtonInteraction, + CommandInteraction, + SelectInteraction, +} from "../library/internal/interaction" +import type { + Message, + MessageButtonOptions, + MessageOptions, + MessageSelectOptions, +} from "../library/internal/message" +import { ChannelMessageRenderer } from "../library/internal/renderers/channel-message-renderer" +import { InteractionReplyRenderer } from "../library/internal/renderers/interaction-reply-renderer" const nextTickPromise = promisify(nextTick) @@ -87,14 +89,21 @@ export class ReacordTester extends Reacord { } sampleMessages() { - return this.messages.map((message) => ({ - ...message.options, - actionRows: message.options.actionRows.map((row) => - row.map((component) => - omit(component, ["customId", "onClick", "onSelect", "onSelectValue"]), + return pruneNullishValues( + this.messages.map((message) => ({ + ...message.options, + actionRows: message.options.actionRows.map((row) => + row.map((component) => + omit(component, [ + "customId", + "onClick", + "onSelect", + "onSelectValue", + ]), + ), ), - ), - })) + })), + ) } findButtonByLabel(label: string) { diff --git a/packages/reacord/vitest.config.ts b/packages/reacord/vitest.config.ts new file mode 100644 index 0000000..0323425 --- /dev/null +++ b/packages/reacord/vitest.config.ts @@ -0,0 +1,8 @@ +/// +import { defineConfig } from "vite" + +export default defineConfig({ + build: { + sourcemap: true, + }, +}) diff --git a/packages/docs/.gitignore b/packages/website/.gitignore similarity index 63% rename from packages/docs/.gitignore rename to packages/website/.gitignore index 656df74..5e8f322 100644 --- a/packages/docs/.gitignore +++ b/packages/website/.gitignore @@ -5,3 +5,5 @@ node_modules /public/build .env /public/api +cypress/videos +cypress/screenshots diff --git a/packages/docs/app/entry.client.tsx b/packages/website/app/entry.client.tsx similarity index 100% rename from packages/docs/app/entry.client.tsx rename to packages/website/app/entry.client.tsx diff --git a/packages/docs/app/entry.server.tsx b/packages/website/app/entry.server.tsx similarity index 100% rename from packages/docs/app/entry.server.tsx rename to packages/website/app/entry.server.tsx diff --git a/packages/docs/app/modules/helpers/raise.ts b/packages/website/app/modules/helpers/raise.ts similarity index 100% rename from packages/docs/app/modules/helpers/raise.ts rename to packages/website/app/modules/helpers/raise.ts diff --git a/packages/docs/app/modules/landing/landing-example.mdx b/packages/website/app/modules/landing/landing-example.mdx similarity index 100% rename from packages/docs/app/modules/landing/landing-example.mdx rename to packages/website/app/modules/landing/landing-example.mdx diff --git a/packages/docs/app/modules/navigation/app-link.tsx b/packages/website/app/modules/navigation/app-link.tsx similarity index 100% rename from packages/docs/app/modules/navigation/app-link.tsx rename to packages/website/app/modules/navigation/app-link.tsx diff --git a/packages/docs/app/modules/navigation/guide-links-context.tsx b/packages/website/app/modules/navigation/guide-links-context.tsx similarity index 100% rename from packages/docs/app/modules/navigation/guide-links-context.tsx rename to packages/website/app/modules/navigation/guide-links-context.tsx diff --git a/packages/docs/app/modules/navigation/load-guide-links.server.ts b/packages/website/app/modules/navigation/load-guide-links.server.ts similarity index 100% rename from packages/docs/app/modules/navigation/load-guide-links.server.ts rename to packages/website/app/modules/navigation/load-guide-links.server.ts diff --git a/packages/docs/app/modules/navigation/main-links.tsx b/packages/website/app/modules/navigation/main-links.tsx similarity index 100% rename from packages/docs/app/modules/navigation/main-links.tsx rename to packages/website/app/modules/navigation/main-links.tsx diff --git a/packages/docs/app/modules/navigation/main-navigation.tsx b/packages/website/app/modules/navigation/main-navigation.tsx similarity index 100% rename from packages/docs/app/modules/navigation/main-navigation.tsx rename to packages/website/app/modules/navigation/main-navigation.tsx diff --git a/packages/docs/app/modules/ui/components.ts b/packages/website/app/modules/ui/components.ts similarity index 100% rename from packages/docs/app/modules/ui/components.ts rename to packages/website/app/modules/ui/components.ts diff --git a/packages/docs/app/modules/ui/popover-menu.tsx b/packages/website/app/modules/ui/popover-menu.tsx similarity index 100% rename from packages/docs/app/modules/ui/popover-menu.tsx rename to packages/website/app/modules/ui/popover-menu.tsx diff --git a/packages/docs/app/modules/ui/prism-theme.css b/packages/website/app/modules/ui/prism-theme.css similarity index 100% rename from packages/docs/app/modules/ui/prism-theme.css rename to packages/website/app/modules/ui/prism-theme.css diff --git a/packages/docs/app/modules/ui/tailwind.css b/packages/website/app/modules/ui/tailwind.css similarity index 100% rename from packages/docs/app/modules/ui/tailwind.css rename to packages/website/app/modules/ui/tailwind.css diff --git a/packages/docs/app/react.d.ts b/packages/website/app/react.d.ts similarity index 100% rename from packages/docs/app/react.d.ts rename to packages/website/app/react.d.ts diff --git a/packages/docs/app/remix.env.d.ts b/packages/website/app/remix.env.d.ts similarity index 100% rename from packages/docs/app/remix.env.d.ts rename to packages/website/app/remix.env.d.ts diff --git a/packages/docs/app/root.tsx b/packages/website/app/root.tsx similarity index 100% rename from packages/docs/app/root.tsx rename to packages/website/app/root.tsx diff --git a/packages/docs/app/routes/guides.tsx b/packages/website/app/routes/guides.tsx similarity index 100% rename from packages/docs/app/routes/guides.tsx rename to packages/website/app/routes/guides.tsx diff --git a/packages/docs/app/routes/guides/buttons.md b/packages/website/app/routes/guides/buttons.md similarity index 100% rename from packages/docs/app/routes/guides/buttons.md rename to packages/website/app/routes/guides/buttons.md diff --git a/packages/docs/app/routes/guides/custom-adapters.md b/packages/website/app/routes/guides/custom-adapters.md similarity index 100% rename from packages/docs/app/routes/guides/custom-adapters.md rename to packages/website/app/routes/guides/custom-adapters.md diff --git a/packages/docs/app/routes/guides/embeds.md b/packages/website/app/routes/guides/embeds.md similarity index 100% rename from packages/docs/app/routes/guides/embeds.md rename to packages/website/app/routes/guides/embeds.md diff --git a/packages/docs/app/routes/guides/getting-started.md b/packages/website/app/routes/guides/getting-started.md similarity index 100% rename from packages/docs/app/routes/guides/getting-started.md rename to packages/website/app/routes/guides/getting-started.md diff --git a/packages/docs/app/routes/guides/links.md b/packages/website/app/routes/guides/links.md similarity index 100% rename from packages/docs/app/routes/guides/links.md rename to packages/website/app/routes/guides/links.md diff --git a/packages/docs/app/routes/guides/select-menu.md b/packages/website/app/routes/guides/select-menu.md similarity index 100% rename from packages/docs/app/routes/guides/select-menu.md rename to packages/website/app/routes/guides/select-menu.md diff --git a/packages/docs/app/routes/guides/sending-messages.md b/packages/website/app/routes/guides/sending-messages.md similarity index 100% rename from packages/docs/app/routes/guides/sending-messages.md rename to packages/website/app/routes/guides/sending-messages.md diff --git a/packages/docs/app/routes/index.tsx b/packages/website/app/routes/index.tsx similarity index 100% rename from packages/docs/app/routes/index.tsx rename to packages/website/app/routes/index.tsx diff --git a/packages/docs/app/routes/tailwind[.]css.tsx b/packages/website/app/routes/tailwind[.]css.tsx similarity index 100% rename from packages/docs/app/routes/tailwind[.]css.tsx rename to packages/website/app/routes/tailwind[.]css.tsx diff --git a/packages/docs/cypress.json b/packages/website/cypress.json similarity index 100% rename from packages/docs/cypress.json rename to packages/website/cypress.json diff --git a/packages/docs/cypress/fixtures/example.json b/packages/website/cypress/fixtures/example.json similarity index 100% rename from packages/docs/cypress/fixtures/example.json rename to packages/website/cypress/fixtures/example.json diff --git a/packages/docs/cypress/integration/mobile-popover-menu.test.ts b/packages/website/cypress/integration/mobile-popover-menu.test.ts similarity index 100% rename from packages/docs/cypress/integration/mobile-popover-menu.test.ts rename to packages/website/cypress/integration/mobile-popover-menu.test.ts diff --git a/packages/docs/cypress/plugins/index.js b/packages/website/cypress/plugins/index.js similarity index 79% rename from packages/docs/cypress/plugins/index.js rename to packages/website/cypress/plugins/index.js index 41173d2..517e605 100644 --- a/packages/docs/cypress/plugins/index.js +++ b/packages/website/cypress/plugins/index.js @@ -16,7 +16,7 @@ * @type {Cypress.PluginConfig} */ // eslint-disable-next-line no-unused-vars -// module.exports = (on, config) => { -// `on` is used to hook into various events Cypress emits -// `config` is the resolved Cypress config -// } +export default function cypressConfig(on, config) { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +} diff --git a/packages/docs/cypress/support/commands.js b/packages/website/cypress/support/commands.js similarity index 100% rename from packages/docs/cypress/support/commands.js rename to packages/website/cypress/support/commands.js diff --git a/packages/docs/cypress/support/index.js b/packages/website/cypress/support/index.js similarity index 100% rename from packages/docs/cypress/support/index.js rename to packages/website/cypress/support/index.js diff --git a/packages/docs/cypress/tsconfig.json b/packages/website/cypress/tsconfig.json similarity index 100% rename from packages/docs/cypress/tsconfig.json rename to packages/website/cypress/tsconfig.json diff --git a/packages/docs/package.json b/packages/website/package.json similarity index 87% rename from packages/docs/package.json rename to packages/website/package.json index b622ae4..9a78e55 100644 --- a/packages/docs/package.json +++ b/packages/website/package.json @@ -1,10 +1,10 @@ { "private": true, - "name": "reacord-docs-new", + "name": "website", "scripts": { "prepare": "remix setup node", "dev": "concurrently 'typedoc --watch' 'remix dev'", - "test": "pnpm build && pnpm start & wait-on http-get://localhost:3000 && cypress run", + "test": "node ./scripts/test.js", "test-dev": "pnpm dev & wait-on http-get://localhost:3000 && cypress open", "build": "typedoc && remix build", "start": "remix-serve build", @@ -35,9 +35,11 @@ "@types/react": "^17.0.38", "@types/react-dom": "^17.0.11", "@types/tailwindcss": "^3.0.2", + "@types/wait-on": "^5.3.1", "concurrently": "^7.0.0", - "cypress": "^9.2.0", - "rehype-prism-plus": "^1.2.2", + "cypress": "^9.2.1", + "execa": "^6.0.0", + "rehype-prism-plus": "^1.3.0", "typedoc": "^0.22.10", "typescript": "^4.5.4", "wait-on": "^6.0.0" diff --git a/packages/docs/public/favicon.ico b/packages/website/public/favicon.ico similarity index 100% rename from packages/docs/public/favicon.ico rename to packages/website/public/favicon.ico diff --git a/packages/docs/remix.config.js b/packages/website/remix.config.js similarity index 100% rename from packages/docs/remix.config.js rename to packages/website/remix.config.js diff --git a/packages/website/scripts/package.json b/packages/website/scripts/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/packages/website/scripts/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/packages/website/scripts/test.js b/packages/website/scripts/test.js new file mode 100644 index 0000000..c41dc55 --- /dev/null +++ b/packages/website/scripts/test.js @@ -0,0 +1,10 @@ +import cypress from "cypress" +import { execa } from "execa" +import waitOn from "wait-on" + +await execa("pnpm", ["build"], { stdio: "inherit" }) +const app = execa("pnpm", ["start"], { stdio: "inherit" }) +await waitOn({ resources: ["http-get://localhost:3000"] }) +await cypress.run() +console.log("cypress run done") +app.kill() diff --git a/packages/docs/tailwind.config.cjs b/packages/website/tailwind.config.cjs similarity index 100% rename from packages/docs/tailwind.config.cjs rename to packages/website/tailwind.config.cjs diff --git a/packages/docs/tsconfig.json b/packages/website/tsconfig.json similarity index 100% rename from packages/docs/tsconfig.json rename to packages/website/tsconfig.json diff --git a/packages/docs/typedoc.json b/packages/website/typedoc.json similarity index 100% rename from packages/docs/typedoc.json rename to packages/website/typedoc.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 430eb90..e4e5346 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,8 +8,8 @@ importers: .: specifiers: '@itsmapleleaf/configs': ^1.1.2 - '@typescript-eslint/eslint-plugin': ^5.9.0 - '@typescript-eslint/parser': ^5.9.0 + '@typescript-eslint/eslint-plugin': ^5.9.1 + '@typescript-eslint/parser': ^5.9.1 eslint: ^8.6.0 eslint-config-prettier: ^8.3.0 eslint-import-resolver-typescript: ^2.5.0 @@ -17,14 +17,14 @@ importers: eslint-plugin-jsx-a11y: ^6.5.1 eslint-plugin-react: ^7.28.0 eslint-plugin-react-hooks: ^4.3.0 - eslint-plugin-unicorn: ^39.0.0 + eslint-plugin-unicorn: ^40.0.0 prettier: ^2.5.1 typescript: ^4.5.4 dependencies: '@itsmapleleaf/configs': 1.1.2 devDependencies: - '@typescript-eslint/eslint-plugin': 5.9.0_bd2fd93dbcc607ad2f21b784bccfe0c8 - '@typescript-eslint/parser': 5.9.0_eslint@8.6.0+typescript@4.5.4 + '@typescript-eslint/eslint-plugin': 5.9.1_b7b2e42b32ee097737cd3e626b10847b + '@typescript-eslint/parser': 5.9.1_eslint@8.6.0+typescript@4.5.4 eslint: 8.6.0 eslint-config-prettier: 8.3.0_eslint@8.6.0 eslint-import-resolver-typescript: 2.5.0_b5a36b8c1535387c8dd00eff7ec6b551 @@ -32,11 +32,64 @@ importers: eslint-plugin-jsx-a11y: 6.5.1_eslint@8.6.0 eslint-plugin-react: 7.28.0_eslint@8.6.0 eslint-plugin-react-hooks: 4.3.0_eslint@8.6.0 - eslint-plugin-unicorn: 39.0.0_eslint@8.6.0 + eslint-plugin-unicorn: 40.0.0_eslint@8.6.0 prettier: 2.5.1 typescript: 4.5.4 - packages/docs: + packages/reacord: + specifiers: + '@types/lodash-es': ^4.17.5 + '@types/node': '*' + '@types/react': '*' + '@types/react-reconciler': ^0.26.4 + c8: ^7.11.0 + discord.js: ^13.5.1 + dotenv: ^10.0.0 + esbuild: latest + esbuild-jest: ^0.5.0 + esmo: ^0.13.0 + lodash-es: ^4.17.21 + nanoid: ^3.1.30 + nodemon: ^2.0.15 + prettier: ^2.5.1 + pretty-ms: ^7.0.1 + react: ^17.0.2 + react-reconciler: ^0.26.2 + release-it: ^14.12.1 + rxjs: ^7.5.2 + tsup: ^5.11.11 + type-fest: ^2.9.0 + typescript: ^4.5.4 + vite: ^2.7.10 + vitest: ^0.0.140 + dependencies: + '@types/node': 17.0.8 + '@types/react': 17.0.38 + '@types/react-reconciler': 0.26.4 + nanoid: 3.1.30 + react-reconciler: 0.26.2_react@17.0.2 + rxjs: 7.5.2 + devDependencies: + '@types/lodash-es': 4.17.5 + c8: 7.11.0 + discord.js: 13.5.1 + dotenv: 10.0.0 + esbuild: 0.14.11 + esbuild-jest: 0.5.0_esbuild@0.14.11 + esmo: 0.13.0_typescript@4.5.4 + lodash-es: 4.17.21 + nodemon: 2.0.15 + prettier: 2.5.1 + pretty-ms: 7.0.1 + react: 17.0.2 + release-it: 14.12.1 + tsup: 5.11.11_typescript@4.5.4 + type-fest: 2.9.0 + typescript: 4.5.4 + vite: 2.7.10 + vitest: 0.0.140_c8@7.11.0 + + packages/website: specifiers: '@heroicons/react': ^1.0.5 '@remix-run/dev': ^1.1.1 @@ -49,17 +102,19 @@ importers: '@types/react': ^17.0.38 '@types/react-dom': ^17.0.11 '@types/tailwindcss': ^3.0.2 + '@types/wait-on': ^5.3.1 autoprefixer: ^10.4.2 clsx: ^1.1.1 concurrently: ^7.0.0 - cypress: ^9.2.0 + cypress: ^9.2.1 + execa: ^6.0.0 fast-glob: ^3.2.10 gray-matter: ^4.0.3 postcss: ^8.4.5 reacord: workspace:* react: ^17.0.2 react-dom: ^17.0.2 - rehype-prism-plus: ^1.2.2 + rehype-prism-plus: ^1.3.0 remix: ^1.1.1 remix-tailwind: ^0.2.1 tailwindcss: ^3.0.12 @@ -85,129 +140,49 @@ importers: devDependencies: '@remix-run/dev': 1.1.1 '@remix-run/node': 1.1.1_react-dom@17.0.2+react@17.0.2 - '@testing-library/cypress': 8.0.2_cypress@9.2.0 + '@testing-library/cypress': 8.0.2_cypress@9.2.1 '@types/node': 17.0.8 '@types/react': 17.0.38 '@types/react-dom': 17.0.11 '@types/tailwindcss': 3.0.2 + '@types/wait-on': 5.3.1 concurrently: 7.0.0 - cypress: 9.2.0 - rehype-prism-plus: 1.2.2 + cypress: 9.2.1 + execa: 6.0.0 + rehype-prism-plus: 1.3.0 typedoc: 0.22.10_typescript@4.5.4 typescript: 4.5.4 wait-on: 6.0.0 - packages/reacord: - specifiers: - '@jest/globals': ^27.4.6 - '@types/jest': ^27.4.0 - '@types/lodash-es': ^4.17.5 - '@types/node': '*' - '@types/react': '*' - '@types/react-reconciler': ^0.26.4 - c8: ^7.11.0 - discord.js: ^13.5.1 - dotenv: ^10.0.0 - esbuild: latest - esbuild-jest: ^0.5.0 - esmo: ^0.13.0 - jest: ^27.4.7 - lodash-es: ^4.17.21 - nanoid: ^3.1.30 - nodemon: ^2.0.15 - prettier: ^2.5.1 - pretty-ms: ^7.0.1 - react: ^17.0.2 - react-reconciler: ^0.26.2 - release-it: ^14.12.1 - rxjs: ^7.5.1 - tsup: ^5.11.11 - type-fest: ^2.9.0 - typescript: ^4.5.4 - dependencies: - '@types/node': 17.0.8 - '@types/react': 17.0.38 - '@types/react-reconciler': 0.26.4 - nanoid: 3.1.30 - react-reconciler: 0.26.2_react@17.0.2 - rxjs: 7.5.1 - devDependencies: - '@jest/globals': 27.4.6 - '@types/jest': 27.4.0 - '@types/lodash-es': 4.17.5 - c8: 7.11.0 - discord.js: 13.5.1 - dotenv: 10.0.0 - esbuild: 0.14.11 - esbuild-jest: 0.5.0_esbuild@0.14.11 - esmo: 0.13.0_typescript@4.5.4 - jest: 27.4.7 - lodash-es: 4.17.21 - nodemon: 2.0.15 - prettier: 2.5.1 - pretty-ms: 7.0.1 - react: 17.0.2 - release-it: 14.12.1 - tsup: 5.11.11_typescript@4.5.4 - type-fest: 2.9.0 - typescript: 4.5.4 + packages/website/scripts: + specifiers: {} packages: - /@babel/code-frame/7.16.0: - resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.16.0 - dev: true - /@babel/code-frame/7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.16.7 - /@babel/compat-data/7.16.4: - resolution: {integrity: sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==} + /@babel/compat-data/7.16.8: + resolution: {integrity: sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.16.5: - resolution: {integrity: sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.0 - '@babel/generator': 7.16.5 - '@babel/helper-compilation-targets': 7.16.3_@babel+core@7.16.5 - '@babel/helper-module-transforms': 7.16.5 - '@babel/helpers': 7.16.5 - '@babel/parser': 7.16.6 - '@babel/template': 7.16.0 - '@babel/traverse': 7.16.5 - '@babel/types': 7.16.0 - convert-source-map: 1.8.0 - debug: 4.3.3 - gensync: 1.0.0-beta.2 - json5: 2.2.0 - semver: 6.3.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/core/7.16.7: resolution: {integrity: sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.16.7 - '@babel/generator': 7.16.7 + '@babel/generator': 7.16.8 '@babel/helper-compilation-targets': 7.16.7_@babel+core@7.16.7 '@babel/helper-module-transforms': 7.16.7 '@babel/helpers': 7.16.7 - '@babel/parser': 7.16.7 + '@babel/parser': 7.16.8 '@babel/template': 7.16.7 - '@babel/traverse': 7.16.7 - '@babel/types': 7.16.7 + '@babel/traverse': 7.16.8 + '@babel/types': 7.16.8 convert-source-map: 1.8.0 debug: 4.3.3 gensync: 1.0.0-beta.2 @@ -218,85 +193,33 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.16.5_@babel+core@7.16.7+eslint@8.6.0: - resolution: {integrity: sha512-mUqYa46lgWqHKQ33Q6LNCGp/wPR3eqOYTUixHFsfrSQqRxH0+WOzca75iEjFr5RDGH1dDz622LaHhLOzOuQRUA==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': '>=7.11.0' - eslint: ^7.5.0 || ^8.0.0 - dependencies: - '@babel/core': 7.16.7 - eslint: 8.6.0 - eslint-scope: 5.1.1 - eslint-visitor-keys: 2.1.0 - semver: 6.3.0 - dev: true - - /@babel/generator/7.16.5: - resolution: {integrity: sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==} + /@babel/generator/7.16.8: + resolution: {integrity: sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.7 + '@babel/types': 7.16.8 jsesc: 2.5.2 source-map: 0.5.7 dev: true - /@babel/generator/7.16.7: - resolution: {integrity: sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.7 - jsesc: 2.5.2 - source-map: 0.5.7 - dev: true - - /@babel/helper-compilation-targets/7.16.3_@babel+core@7.16.5: - resolution: {integrity: sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.16.4 - '@babel/core': 7.16.5 - '@babel/helper-validator-option': 7.14.5 - browserslist: 4.19.1 - semver: 6.3.0 - dev: true - /@babel/helper-compilation-targets/7.16.7_@babel+core@7.16.7: resolution: {integrity: sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.16.4 + '@babel/compat-data': 7.16.8 '@babel/core': 7.16.7 '@babel/helper-validator-option': 7.16.7 browserslist: 4.19.1 semver: 6.3.0 dev: true - /@babel/helper-environment-visitor/7.16.5: - resolution: {integrity: sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.7 - dev: true - /@babel/helper-environment-visitor/7.16.7: resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.7 - dev: true - - /@babel/helper-function-name/7.16.0: - resolution: {integrity: sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-get-function-arity': 7.16.0 - '@babel/template': 7.16.0 - '@babel/types': 7.16.7 + '@babel/types': 7.16.8 dev: true /@babel/helper-function-name/7.16.7: @@ -305,58 +228,28 @@ packages: dependencies: '@babel/helper-get-function-arity': 7.16.7 '@babel/template': 7.16.7 - '@babel/types': 7.16.7 - dev: true - - /@babel/helper-get-function-arity/7.16.0: - resolution: {integrity: sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.7 + '@babel/types': 7.16.8 dev: true /@babel/helper-get-function-arity/7.16.7: resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.7 - dev: true - - /@babel/helper-hoist-variables/7.16.0: - resolution: {integrity: sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.7 + '@babel/types': 7.16.8 dev: true /@babel/helper-hoist-variables/7.16.7: resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.7 + '@babel/types': 7.16.8 dev: true /@babel/helper-module-imports/7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.7 - dev: true - - /@babel/helper-module-transforms/7.16.5: - resolution: {integrity: sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.16.5 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-simple-access': 7.16.0 - '@babel/helper-split-export-declaration': 7.16.0 - '@babel/helper-validator-identifier': 7.16.7 - '@babel/template': 7.16.0 - '@babel/traverse': 7.16.5 - '@babel/types': 7.16.7 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.16.8 dev: true /@babel/helper-module-transforms/7.16.7: @@ -369,95 +262,51 @@ packages: '@babel/helper-split-export-declaration': 7.16.7 '@babel/helper-validator-identifier': 7.16.7 '@babel/template': 7.16.7 - '@babel/traverse': 7.16.7 - '@babel/types': 7.16.7 + '@babel/traverse': 7.16.8 + '@babel/types': 7.16.8 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-plugin-utils/7.16.5: - resolution: {integrity: sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-plugin-utils/7.16.7: resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access/7.16.0: - resolution: {integrity: sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.7 - dev: true - /@babel/helper-simple-access/7.16.7: resolution: {integrity: sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.7 - dev: true - - /@babel/helper-split-export-declaration/7.16.0: - resolution: {integrity: sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.16.7 + '@babel/types': 7.16.8 dev: true /@babel/helper-split-export-declaration/7.16.7: resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.16.7 + '@babel/types': 7.16.8 dev: true /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.14.5: - resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option/7.16.7: resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.16.5: - resolution: {integrity: sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.16.0 - '@babel/traverse': 7.16.5 - '@babel/types': 7.16.7 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helpers/7.16.7: resolution: {integrity: sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.16.7 - '@babel/traverse': 7.16.7 - '@babel/types': 7.16.7 + '@babel/traverse': 7.16.8 + '@babel/types': 7.16.8 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight/7.16.0: - resolution: {integrity: sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.16.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - /@babel/highlight/7.16.7: resolution: {integrity: sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==} engines: {node: '>=6.9.0'} @@ -466,43 +315,19 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.16.6: - resolution: {integrity: sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==} + /@babel/parser/7.16.8: + resolution: {integrity: sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==} engines: {node: '>=6.0.0'} hasBin: true dev: true - /@babel/parser/7.16.7: - resolution: {integrity: sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==} - engines: {node: '>=6.0.0'} - hasBin: true - dev: true - - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.16.5: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.16.7: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.16.5: - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.16.7: @@ -511,16 +336,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.16.5: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.16.7: @@ -529,16 +345,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.5: - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.16.7: @@ -547,16 +354,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.16.5: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.16.7: @@ -565,16 +363,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.16.5: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.16.7: @@ -583,16 +372,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.16.5: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.16.7: @@ -601,16 +381,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.16.5: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.16.7: @@ -619,16 +390,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.16.5: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.16.7: @@ -637,16 +399,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.16.5: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.16.7: @@ -655,16 +408,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.16.5: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.16.7: @@ -673,17 +417,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 - dev: true - - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.16.5: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.16.7: @@ -693,36 +427,26 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.16.7: - resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} + /@babel/plugin-transform-modules-commonjs/7.16.8_@babel+core@7.16.7: + resolution: {integrity: sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.16.7 + '@babel/helper-module-transforms': 7.16.7 '@babel/helper-plugin-utils': 7.16.7 - dev: true - - /@babel/plugin-transform-modules-commonjs/7.16.5_@babel+core@7.16.5: - resolution: {integrity: sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.16.5 - '@babel/helper-module-transforms': 7.16.5 - '@babel/helper-plugin-utils': 7.16.5 - '@babel/helper-simple-access': 7.16.0 + '@babel/helper-simple-access': 7.16.7 babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color dev: true - /@babel/runtime-corejs3/7.16.7: - resolution: {integrity: sha512-MiYR1yk8+TW/CpOD0CyX7ve9ffWTKqLk/L6pk8TPl0R8pNi+1pFY8fH9yET55KlvukQ4PAWfXsGr2YHVjcI4Pw==} + /@babel/runtime-corejs3/7.16.8: + resolution: {integrity: sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==} engines: {node: '>=6.9.0'} dependencies: core-js-pure: 3.20.2 @@ -735,70 +459,35 @@ packages: dependencies: regenerator-runtime: 0.13.9 - /@babel/template/7.16.0: - resolution: {integrity: sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.0 - '@babel/parser': 7.16.6 - '@babel/types': 7.16.7 - dev: true - /@babel/template/7.16.7: resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.16.7 - '@babel/parser': 7.16.7 - '@babel/types': 7.16.7 + '@babel/parser': 7.16.8 + '@babel/types': 7.16.8 dev: true - /@babel/traverse/7.16.5: - resolution: {integrity: sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.16.0 - '@babel/generator': 7.16.5 - '@babel/helper-environment-visitor': 7.16.5 - '@babel/helper-function-name': 7.16.0 - '@babel/helper-hoist-variables': 7.16.0 - '@babel/helper-split-export-declaration': 7.16.0 - '@babel/parser': 7.16.7 - '@babel/types': 7.16.7 - debug: 4.3.3 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse/7.16.7: - resolution: {integrity: sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==} + /@babel/traverse/7.16.8: + resolution: {integrity: sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.16.7 - '@babel/generator': 7.16.7 + '@babel/generator': 7.16.8 '@babel/helper-environment-visitor': 7.16.7 '@babel/helper-function-name': 7.16.7 '@babel/helper-hoist-variables': 7.16.7 '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.16.7 - '@babel/types': 7.16.7 + '@babel/parser': 7.16.8 + '@babel/types': 7.16.8 debug: 4.3.3 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.16.0: - resolution: {integrity: sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.16.7 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types/7.16.7: - resolution: {integrity: sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==} + /@babel/types/7.16.8: + resolution: {integrity: sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.16.7 @@ -835,7 +524,7 @@ packages: json-stringify-safe: 5.0.1 mime-types: 2.1.34 performance-now: 2.1.0 - qs: 6.5.2 + qs: 6.5.3 safe-buffer: 5.2.1 tough-cookie: 2.5.0 tunnel-agent: 0.6.0 @@ -954,174 +643,17 @@ packages: type-fest: 2.9.0 dev: false - /@jest/console/27.4.6: - resolution: {integrity: sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - chalk: 4.1.2 - jest-message-util: 27.4.6 - jest-util: 27.4.2 - slash: 3.0.0 - dev: true - - /@jest/core/27.4.7: - resolution: {integrity: sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 27.4.6 - '@jest/reporters': 27.4.6 - '@jest/test-result': 27.4.6 - '@jest/transform': 27.4.6 - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.9 - jest-changed-files: 27.4.2 - jest-config: 27.4.7 - jest-haste-map: 27.4.6 - jest-message-util: 27.4.6 - jest-regex-util: 27.4.0 - jest-resolve: 27.4.6 - jest-resolve-dependencies: 27.4.6 - jest-runner: 27.4.6 - jest-runtime: 27.4.6 - jest-snapshot: 27.4.6 - jest-util: 27.4.2 - jest-validate: 27.4.6 - jest-watcher: 27.4.6 - micromatch: 4.0.4 - rimraf: 3.0.2 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /@jest/environment/27.4.6: - resolution: {integrity: sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/fake-timers': 27.4.6 - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - jest-mock: 27.4.6 - dev: true - - /@jest/fake-timers/27.4.6: - resolution: {integrity: sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - '@sinonjs/fake-timers': 8.1.0 - '@types/node': 17.0.8 - jest-message-util: 27.4.6 - jest-mock: 27.4.6 - jest-util: 27.4.2 - dev: true - - /@jest/globals/27.4.6: - resolution: {integrity: sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.4.6 - '@jest/types': 27.4.2 - expect: 27.4.6 - dev: true - - /@jest/reporters/27.4.6: - resolution: {integrity: sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 27.4.6 - '@jest/test-result': 27.4.6 - '@jest/transform': 27.4.6 - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.0 - graceful-fs: 4.2.9 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.1.0 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.3 - jest-haste-map: 27.4.6 - jest-resolve: 27.4.6 - jest-util: 27.4.2 - jest-worker: 27.4.6 - slash: 3.0.0 - source-map: 0.6.1 - string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 8.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/source-map/27.4.0: - resolution: {integrity: sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.9 - source-map: 0.6.1 - dev: true - - /@jest/test-result/27.4.6: - resolution: {integrity: sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.4.6 - '@jest/types': 27.4.2 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true - - /@jest/test-sequencer/27.4.6: - resolution: {integrity: sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/test-result': 27.4.6 - graceful-fs: 4.2.9 - jest-haste-map: 27.4.6 - jest-runtime: 27.4.6 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/transform/26.6.2: resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} engines: {node: '>= 10.14.2'} dependencies: - '@babel/core': 7.16.5 + '@babel/core': 7.16.7 '@jest/types': 26.6.2 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 1.8.0 fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 jest-haste-map: 26.6.2 jest-regex-util: 26.0.0 jest-util: 26.6.2 @@ -1134,29 +666,6 @@ packages: - supports-color dev: true - /@jest/transform/27.4.6: - resolution: {integrity: sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.16.7 - '@jest/types': 27.4.2 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.8.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.9 - jest-haste-map: 27.4.6 - jest-regex-util: 27.4.0 - jest-util: 27.4.2 - micromatch: 4.0.4 - pirates: 4.0.4 - slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/types/26.6.2: resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} engines: {node: '>= 10.14.2'} @@ -1168,17 +677,6 @@ packages: chalk: 4.1.2 dev: true - /@jest/types/27.4.2: - resolution: {integrity: sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 17.0.8 - '@types/yargs': 16.0.4 - chalk: 4.1.2 - dev: true - /@mrmlnc/readdir-enhanced/2.2.1: resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} engines: {node: '>=4'} @@ -1456,18 +954,6 @@ packages: engines: {node: '>=10'} dev: true - /@sinonjs/commons/1.8.3: - resolution: {integrity: sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==} - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers/8.1.0: - resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==} - dependencies: - '@sinonjs/commons': 1.8.3 - dev: true - /@szmarczak/http-timer/1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} @@ -1494,7 +980,7 @@ packages: tailwindcss: 3.0.12_ef48b3b8837f8a23677bffe8f9cd866d dev: false - /@testing-library/cypress/8.0.2_cypress@9.2.0: + /@testing-library/cypress/8.0.2_cypress@9.2.1: resolution: {integrity: sha512-KVdm7n37sg/A4e3wKMD4zUl0NpzzVhx06V9Tf0hZHZ7nrZ4yFva6Zwg2EFF1VzHkEfN/ahUzRtT1qiW+vuWnJw==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -1502,7 +988,7 @@ packages: dependencies: '@babel/runtime': 7.16.7 '@testing-library/dom': 8.11.1 - cypress: 9.2.0 + cypress: 9.2.1 dev: true /@testing-library/dom/8.11.1: @@ -1519,11 +1005,6 @@ packages: pretty-format: 27.4.6 dev: true - /@tootallnate/once/1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - dev: true - /@types/acorn/4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: @@ -1534,21 +1015,11 @@ packages: resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} dev: true - /@types/babel__core/7.1.17: - resolution: {integrity: sha512-6zzkezS9QEIL8yCBvXWxPTJPNuMeECJVxSOhxNY/jfq9LxOTHivaYTqr37n9LknWWRTIkzqH2UilS5QFvfa90A==} - dependencies: - '@babel/parser': 7.16.6 - '@babel/types': 7.16.0 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.14.2 - dev: true - /@types/babel__core/7.1.18: resolution: {integrity: sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==} dependencies: - '@babel/parser': 7.16.7 - '@babel/types': 7.16.7 + '@babel/parser': 7.16.8 + '@babel/types': 7.16.8 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.14.2 @@ -1557,20 +1028,20 @@ packages: /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.16.0 + '@babel/types': 7.16.8 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.16.6 - '@babel/types': 7.16.0 + '@babel/parser': 7.16.8 + '@babel/types': 7.16.8 dev: true /@types/babel__traverse/7.14.2: resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} dependencies: - '@babel/types': 7.16.0 + '@babel/types': 7.16.8 dev: true /@types/busboy/0.3.2: @@ -1587,6 +1058,16 @@ packages: '@types/responselike': 1.0.0 dev: true + /@types/chai-subset/1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + dependencies: + '@types/chai': 4.3.0 + dev: true + + /@types/chai/4.3.0: + resolution: {integrity: sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==} + dev: true + /@types/cookie/0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -1662,13 +1143,6 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/27.4.0: - resolution: {integrity: sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==} - dependencies: - jest-diff: 27.4.2 - pretty-format: 27.4.2 - dev: true - /@types/json-schema/7.0.9: resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} @@ -1736,10 +1210,6 @@ packages: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} dev: true - /@types/prettier/2.4.2: - resolution: {integrity: sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==} - dev: true - /@types/prismjs/1.16.6: resolution: {integrity: sha512-dTvnamRITNqNkqhlBd235kZl3KfVJQQoT5jkXeiWSBK7i4/TLKBNLV0S1wOt8gy4E2TY722KLtdmv2xc6+Wevg==} dev: true @@ -1783,10 +1253,6 @@ packages: resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} dev: true - /@types/stack-utils/2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - /@types/tailwindcss/2.2.4: resolution: {integrity: sha512-8mIk+0BoReKiaBI4e3hjaz9YDQto+rdZ2eEExHf6AfS38FZcALQ6s8mTd+74N8BtBaLnTzLdNe5GbkzObWlSXw==} dev: false @@ -1805,6 +1271,12 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: true + /@types/wait-on/5.3.1: + resolution: {integrity: sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==} + dependencies: + '@types/node': 17.0.8 + dev: true + /@types/ws/8.2.2: resolution: {integrity: sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==} dependencies: @@ -1821,12 +1293,6 @@ packages: '@types/yargs-parser': 20.2.1 dev: true - /@types/yargs/16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} - dependencies: - '@types/yargs-parser': 20.2.1 - dev: true - /@types/yauzl/2.9.2: resolution: {integrity: sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==} requiresBuild: true @@ -1835,8 +1301,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin/5.9.0_bd2fd93dbcc607ad2f21b784bccfe0c8: - resolution: {integrity: sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==} + /@typescript-eslint/eslint-plugin/5.9.1_b7b2e42b32ee097737cd3e626b10847b: + resolution: {integrity: sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1846,10 +1312,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 5.9.0_eslint@8.6.0+typescript@4.5.4 - '@typescript-eslint/parser': 5.9.0_eslint@8.6.0+typescript@4.5.4 - '@typescript-eslint/scope-manager': 5.9.0 - '@typescript-eslint/type-utils': 5.9.0_eslint@8.6.0+typescript@4.5.4 + '@typescript-eslint/experimental-utils': 5.9.1_eslint@8.6.0+typescript@4.5.4 + '@typescript-eslint/parser': 5.9.1_eslint@8.6.0+typescript@4.5.4 + '@typescript-eslint/scope-manager': 5.9.1 + '@typescript-eslint/type-utils': 5.9.1_eslint@8.6.0+typescript@4.5.4 debug: 4.3.3 eslint: 8.6.0 functional-red-black-tree: 1.0.1 @@ -1862,16 +1328,16 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/5.9.0_eslint@8.6.0+typescript@4.5.4: - resolution: {integrity: sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==} + /@typescript-eslint/experimental-utils/5.9.1_eslint@8.6.0+typescript@4.5.4: + resolution: {integrity: sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.9 - '@typescript-eslint/scope-manager': 5.9.0 - '@typescript-eslint/types': 5.9.0 - '@typescript-eslint/typescript-estree': 5.9.0_typescript@4.5.4 + '@typescript-eslint/scope-manager': 5.9.1 + '@typescript-eslint/types': 5.9.1 + '@typescript-eslint/typescript-estree': 5.9.1_typescript@4.5.4 eslint: 8.6.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.6.0 @@ -1880,8 +1346,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.9.0_eslint@8.6.0+typescript@4.5.4: - resolution: {integrity: sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==} + /@typescript-eslint/parser/5.9.1_eslint@8.6.0+typescript@4.5.4: + resolution: {integrity: sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1890,9 +1356,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.9.0 - '@typescript-eslint/types': 5.9.0 - '@typescript-eslint/typescript-estree': 5.9.0_typescript@4.5.4 + '@typescript-eslint/scope-manager': 5.9.1 + '@typescript-eslint/types': 5.9.1 + '@typescript-eslint/typescript-estree': 5.9.1_typescript@4.5.4 debug: 4.3.3 eslint: 8.6.0 typescript: 4.5.4 @@ -1900,16 +1366,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager/5.9.0: - resolution: {integrity: sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==} + /@typescript-eslint/scope-manager/5.9.1: + resolution: {integrity: sha512-8BwvWkho3B/UOtzRyW07ffJXPaLSUKFBjpq8aqsRvu6HdEuzCY57+ffT7QoV4QXJXWSU1+7g3wE4AlgImmQ9pQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.9.0 - '@typescript-eslint/visitor-keys': 5.9.0 + '@typescript-eslint/types': 5.9.1 + '@typescript-eslint/visitor-keys': 5.9.1 dev: true - /@typescript-eslint/type-utils/5.9.0_eslint@8.6.0+typescript@4.5.4: - resolution: {integrity: sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==} + /@typescript-eslint/type-utils/5.9.1_eslint@8.6.0+typescript@4.5.4: + resolution: {integrity: sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1918,7 +1384,7 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 5.9.0_eslint@8.6.0+typescript@4.5.4 + '@typescript-eslint/experimental-utils': 5.9.1_eslint@8.6.0+typescript@4.5.4 debug: 4.3.3 eslint: 8.6.0 tsutils: 3.21.0_typescript@4.5.4 @@ -1927,13 +1393,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types/5.9.0: - resolution: {integrity: sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==} + /@typescript-eslint/types/5.9.1: + resolution: {integrity: sha512-SsWegWudWpkZCwwYcKoDwuAjoZXnM1y2EbEerTHho19Hmm+bQ56QG4L4jrtCu0bI5STaRTvRTZmjprWlTw/5NQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.9.0_typescript@4.5.4: - resolution: {integrity: sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==} + /@typescript-eslint/typescript-estree/5.9.1_typescript@4.5.4: + resolution: {integrity: sha512-gL1sP6A/KG0HwrahVXI9fZyeVTxEYV//6PmcOn1tD0rw8VhUWYeZeuWHwwhnewnvEMcHjhnJLOBhA9rK4vmb8A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1941,8 +1407,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.9.0 - '@typescript-eslint/visitor-keys': 5.9.0 + '@typescript-eslint/types': 5.9.1 + '@typescript-eslint/visitor-keys': 5.9.1 debug: 4.3.3 globby: 11.1.0 is-glob: 4.0.3 @@ -1953,11 +1419,11 @@ packages: - supports-color dev: true - /@typescript-eslint/visitor-keys/5.9.0: - resolution: {integrity: sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==} + /@typescript-eslint/visitor-keys/5.9.1: + resolution: {integrity: sha512-Xh37pNz9e9ryW4TVdwiFzmr4hloty8cFj8GTWMXh3Z8swGwyQWeCcNgF0hm6t09iZd6eiZmIf4zHedQVP6TVtg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.9.0 + '@typescript-eslint/types': 5.9.1 eslint-visitor-keys: 3.1.0 dev: true @@ -1982,10 +1448,6 @@ packages: requiresBuild: true optional: true - /abab/2.0.5: - resolution: {integrity: sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==} - dev: true - /abbrev/1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: true @@ -2004,13 +1466,6 @@ packages: negotiator: 0.6.2 dev: false - /acorn-globals/6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - dev: true - /acorn-jsx/5.3.2_acorn@8.7.0: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2030,11 +1485,13 @@ packages: /acorn-walk/7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} + dev: false /acorn/7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true + dev: false /acorn/8.7.0: resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} @@ -2042,15 +1499,6 @@ packages: hasBin: true dev: true - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.3 - transitivePeerDependencies: - - supports-color - dev: true - /aggregate-error/3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -2150,7 +1598,7 @@ packages: engines: {node: '>=6.0'} dependencies: '@babel/runtime': 7.16.7 - '@babel/runtime-corejs3': 7.16.7 + '@babel/runtime-corejs3': 7.16.8 dev: true /aria-query/5.0.0: @@ -2245,6 +1693,10 @@ packages: engines: {node: '>=0.8'} dev: true + /assertion-error/1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + /assign-symbols/1.0.0: resolution: {integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=} engines: {node: '>=0.10.0'} @@ -2331,37 +1783,18 @@ packages: resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==} dev: true - /babel-jest/26.6.3_@babel+core@7.16.5: + /babel-jest/26.6.3_@babel+core@7.16.7: resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} engines: {node: '>= 10.14.2'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.16.5 + '@babel/core': 7.16.7 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/babel__core': 7.1.17 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 26.6.2_@babel+core@7.16.5 - chalk: 4.1.2 - graceful-fs: 4.2.8 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-jest/27.4.6_@babel+core@7.16.7: - resolution: {integrity: sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.16.7 - '@jest/transform': 27.4.6 - '@jest/types': 27.4.2 '@types/babel__core': 7.1.18 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.4.0_@babel+core@7.16.7 + babel-preset-jest: 26.6.2_@babel+core@7.16.7 chalk: 4.1.2 graceful-fs: 4.2.9 slash: 3.0.0 @@ -2379,7 +1812,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.16.5 + '@babel/helper-plugin-utils': 7.16.7 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.1.0 @@ -2391,43 +1824,13 @@ packages: /babel-plugin-jest-hoist/26.6.2: resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} engines: {node: '>= 10.14.2'} - dependencies: - '@babel/template': 7.16.0 - '@babel/types': 7.16.0 - '@types/babel__core': 7.1.17 - '@types/babel__traverse': 7.14.2 - dev: true - - /babel-plugin-jest-hoist/27.4.0: - resolution: {integrity: sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@babel/template': 7.16.7 - '@babel/types': 7.16.7 + '@babel/types': 7.16.8 '@types/babel__core': 7.1.18 '@types/babel__traverse': 7.14.2 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.16.5: - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.16.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.16.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.16.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.16.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.16.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.16.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.16.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.16.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.16.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.16.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.16.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.5 - dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.16.7: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: @@ -2448,25 +1851,14 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.16.7 dev: true - /babel-preset-jest/26.6.2_@babel+core@7.16.5: + /babel-preset-jest/26.6.2_@babel+core@7.16.7: resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} engines: {node: '>= 10.14.2'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.16.5 - babel-plugin-jest-hoist: 26.6.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.16.5 - dev: true - - /babel-preset-jest/27.4.0_@babel+core@7.16.7: - resolution: {integrity: sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.16.7 - babel-plugin-jest-hoist: 27.4.0 + babel-plugin-jest-hoist: 26.6.2 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.16.7 dev: true @@ -2576,7 +1968,7 @@ packages: engines: {node: '>=10'} dependencies: ansi-align: 3.0.1 - camelcase: 6.2.1 + camelcase: 6.3.0 chalk: 4.1.2 cli-boxes: 2.2.1 string-width: 4.2.3 @@ -2612,17 +2004,13 @@ packages: dependencies: fill-range: 7.0.1 - /browser-process-hrtime/1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: true - /browserslist/4.19.1: resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: caniuse-lite: 1.0.30001298 - electron-to-chromium: 1.4.38 + electron-to-chromium: 1.4.40 escalade: 3.1.1 node-releases: 2.0.1 picocolors: 1.0.0 @@ -2637,10 +2025,6 @@ packages: resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} dev: true - /buffer-from/1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - /buffer/5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -2700,10 +2084,10 @@ packages: foreground-child: 2.0.0 istanbul-lib-coverage: 3.2.0 istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.2 + istanbul-reports: 3.1.3 rimraf: 3.0.2 test-exclude: 6.0.0 - v8-to-istanbul: 8.1.0 + v8-to-istanbul: 8.1.1 yargs: 16.2.0 yargs-parser: 20.2.9 dev: true @@ -2820,11 +2204,6 @@ packages: engines: {node: '>=6'} dev: true - /camelcase/6.2.1: - resolution: {integrity: sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==} - engines: {node: '>=10'} - dev: true - /camelcase/6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -2844,8 +2223,16 @@ packages: resolution: {integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=} dev: true - /ccount/2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + /chai/4.3.4: + resolution: {integrity: sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 3.0.1 + get-func-name: 2.0.0 + pathval: 1.1.1 + type-detect: 4.0.8 dev: true /chalk/2.4.2: @@ -2868,11 +2255,6 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: false - /char-regex/1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true - /character-entities-html4/2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} dev: true @@ -2892,6 +2274,10 @@ packages: /chardet/0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + /check-error/1.0.2: + resolution: {integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=} + dev: true + /check-more-types/2.24.0: resolution: {integrity: sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=} engines: {node: '>= 0.8.0'} @@ -2924,10 +2310,6 @@ packages: resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} dev: true - /cjs-module-lexer/1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - dev: true - /class-utils/0.3.6: resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} engines: {node: '>=0.10.0'} @@ -3014,15 +2396,6 @@ packages: engines: {node: '>=6'} dev: false - /co/4.6.0: - resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - - /collect-v8-coverage/1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true - /collection-visit/1.0.0: resolution: {integrity: sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=} engines: {node: '>=0.10.0'} @@ -3129,7 +2502,7 @@ packages: engines: {node: '>=8'} dependencies: dot-prop: 5.3.0 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 make-dir: 3.1.0 unique-string: 2.0.0 write-file-atomic: 3.0.3 @@ -3244,26 +2617,11 @@ packages: hasBin: true dev: false - /cssom/0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom/0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - dev: true - - /cssstyle/2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - dependencies: - cssom: 0.3.8 - dev: true - /csstype/3.0.10: resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==} - /cypress/9.2.0: - resolution: {integrity: sha512-Jn26Tprhfzh/a66Sdj9SoaYlnNX6Mjfmj5PHu2a7l3YHXhrgmavM368wjCmgrxC6KHTOv9SpMQGhAJn+upDViA==} + /cypress/9.2.1: + resolution: {integrity: sha512-LVEe4yWCo4xO0Vd8iYjFHRyd5ulRvM56XqMgAdn05Qb9kJ6iJdO/MmjKD8gNd768698cp1FDuSmFQZHVZGk+Og==} engines: {node: '>=12.0.0'} hasBin: true requiresBuild: true @@ -3322,15 +2680,6 @@ packages: assert-plus: 1.0.0 dev: true - /data-urls/2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} - dependencies: - abab: 2.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - dev: true - /date-fns/2.28.0: resolution: {integrity: sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==} engines: {node: '>=0.11'} @@ -3399,10 +2748,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /decimal.js/10.3.1: - resolution: {integrity: sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==} - dev: true - /decode-named-character-reference/1.0.1: resolution: {integrity: sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==} dependencies: @@ -3427,8 +2772,11 @@ packages: mimic-response: 3.1.0 dev: true - /dedent/0.7.0: - resolution: {integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=} + /deep-eql/3.0.1: + resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} + engines: {node: '>=0.12'} + dependencies: + type-detect: 4.0.8 dev: true /deep-extend/0.6.0: @@ -3440,11 +2788,6 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} - dev: true - /defaults/1.0.3: resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=} dependencies: @@ -3523,11 +2866,6 @@ packages: resolution: {integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=} dev: false - /detect-newline/3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - /detective/5.2.0: resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==} engines: {node: '>=0.8.0'} @@ -3548,11 +2886,6 @@ packages: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false - /diff-sequences/27.4.0: - resolution: {integrity: sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - /diff/5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.1'} @@ -3617,13 +2950,6 @@ packages: resolution: {integrity: sha512-Xu9mD0UjrJisTmv7lmVSDMagQcU9R5hwAbxsaAE/35XPnPLJobbuREfV/rraiSaEj/UOvgrzQs66zyTWTlyd+g==} dev: true - /domexception/2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - dependencies: - webidl-conversions: 5.0.0 - dev: true - /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -3651,13 +2977,8 @@ packages: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: false - /electron-to-chromium/1.4.38: - resolution: {integrity: sha512-WhHt3sZazKj0KK/UpgsbGQnUUoFeAHVishzHFExMxagpZgjiGYSC9S0ZlbhCfSH2L2i+2A1yyqOIliTctMx7KQ==} - - /emittery/0.8.1: - resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==} - engines: {node: '>=10'} - dev: true + /electron-to-chromium/1.4.40: + resolution: {integrity: sha512-j+eVIyQGt2EU5xPWUblhpp5P5z5xyAdRgzogBgfe2F5JGV17gr9pfzWBua6DlPL00LavbOjxubWkWkbVQe9Wlw==} /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3772,9 +3093,9 @@ packages: peerDependencies: esbuild: '>=0.8.50' dependencies: - '@babel/core': 7.16.5 - '@babel/plugin-transform-modules-commonjs': 7.16.5_@babel+core@7.16.5 - babel-jest: 26.6.3_@babel+core@7.16.5 + '@babel/core': 7.16.7 + '@babel/plugin-transform-modules-commonjs': 7.16.8_@babel+core@7.16.7 + babel-jest: 26.6.3_@babel+core@7.16.7 esbuild: 0.14.11 transitivePeerDependencies: - supports-color @@ -3943,29 +3264,11 @@ packages: resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} engines: {node: '>=0.8.0'} - /escape-string-regexp/2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /escodegen/2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /eslint-config-prettier/8.3.0_eslint@8.6.0: resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} hasBin: true @@ -4083,8 +3386,8 @@ packages: string.prototype.matchall: 4.0.6 dev: true - /eslint-plugin-unicorn/39.0.0_eslint@8.6.0: - resolution: {integrity: sha512-fd5RK2FtYjGcIx3wra7csIE/wkkmBo22T1gZtRTsLr1Mb+KsFKJ+JOdSqhHXQUrI/JTs/Mon64cEYzTgSCbltw==} + /eslint-plugin-unicorn/40.0.0_eslint@8.6.0: + resolution: {integrity: sha512-5GRXISfBk8jMmYk1eeNDw8zSRnWTxBjWkzx2Prre6E2/yLu2twozZ3EomLWCBu9nWms/ZE361BItyMQwfnG1qA==} engines: {node: '>=12'} peerDependencies: eslint: '>=7.32.0' @@ -4093,7 +3396,6 @@ packages: ci-info: 3.3.0 clean-regexp: 1.0.0 eslint: 8.6.0 - eslint-template-visitor: 2.3.2_eslint@8.6.0 eslint-utils: 3.0.0_eslint@8.6.0 esquery: 1.4.0 indent-string: 4.0.0 @@ -4105,8 +3407,6 @@ packages: safe-regex: 2.1.1 semver: 7.3.5 strip-indent: 3.0.0 - transitivePeerDependencies: - - supports-color dev: true /eslint-scope/5.1.1: @@ -4125,21 +3425,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-template-visitor/2.3.2_eslint@8.6.0: - resolution: {integrity: sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==} - peerDependencies: - eslint: '>=7.0.0' - dependencies: - '@babel/core': 7.16.7 - '@babel/eslint-parser': 7.16.5_@babel+core@7.16.7+eslint@8.6.0 - eslint: 8.6.0 - eslint-visitor-keys: 2.1.0 - esquery: 1.4.0 - multimap: 1.1.0 - transitivePeerDependencies: - - supports-color - dev: true - /eslint-utils/3.0.0_eslint@8.6.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} @@ -4380,7 +3665,6 @@ packages: onetime: 6.0.0 signal-exit: 3.0.6 strip-final-newline: 3.0.0 - dev: false /executable/4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} @@ -4394,11 +3678,6 @@ packages: engines: {node: '>=6'} dev: true - /exit/0.1.2: - resolution: {integrity: sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=} - engines: {node: '>= 0.8.0'} - dev: true - /expand-brackets/2.1.4: resolution: {integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI=} engines: {node: '>=0.10.0'} @@ -4411,16 +3690,6 @@ packages: snapdragon: 0.8.2 to-regex: 3.0.2 - /expect/27.4.6: - resolution: {integrity: sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - jest-get-type: 27.4.0 - jest-matcher-utils: 27.4.6 - jest-message-util: 27.4.6 - dev: true - /express/4.17.2: resolution: {integrity: sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==} engines: {node: '>= 0.10.0'} @@ -4793,6 +4062,10 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true + /get-func-name/2.0.0: + resolution: {integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=} + dev: true + /get-intrinsic/1.1.1: resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} dependencies: @@ -4994,10 +4267,6 @@ packages: url-parse-lax: 3.0.0 dev: true - /graceful-fs/4.2.8: - resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} - dev: true - /graceful-fs/4.2.9: resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} @@ -5095,13 +4364,6 @@ packages: web-namespaces: 2.0.1 dev: true - /hast-util-is-element/2.1.2: - resolution: {integrity: sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==} - dependencies: - '@types/hast': 2.3.4 - '@types/unist': 2.0.6 - dev: true - /hast-util-parse-selector/3.1.0: resolution: {integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==} dependencies: @@ -5129,21 +4391,6 @@ packages: - supports-color dev: true - /hast-util-to-html/8.0.3: - resolution: {integrity: sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==} - dependencies: - '@types/hast': 2.3.4 - ccount: 2.0.1 - comma-separated-tokens: 2.0.2 - hast-util-is-element: 2.1.2 - hast-util-whitespace: 2.0.0 - html-void-elements: 2.0.1 - property-information: 6.1.1 - space-separated-tokens: 2.0.1 - stringify-entities: 4.0.2 - unist-util-is: 5.1.1 - dev: true - /hast-util-to-string/2.0.0: resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} dependencies: @@ -5173,21 +4420,10 @@ packages: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /html-encoding-sniffer/2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - dependencies: - whatwg-encoding: 1.0.5 - dev: true - /html-escaper/2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /html-void-elements/2.0.1: - resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} - dev: true - /http-cache-semantics/4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} dev: true @@ -5203,17 +4439,6 @@ packages: toidentifier: 1.0.1 dev: false - /http-proxy-agent/4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.3 - transitivePeerDependencies: - - supports-color - dev: true - /http-signature/1.3.6: resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} engines: {node: '>=0.10'} @@ -5231,16 +4456,6 @@ packages: resolve-alpn: 1.2.1 dev: true - /https-proxy-agent/5.0.0: - resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.3 - transitivePeerDependencies: - - supports-color - dev: true - /human-signals/1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} @@ -5254,7 +4469,6 @@ packages: /human-signals/3.0.1: resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} engines: {node: '>=12.20.0'} - dev: false /iconv-lite/0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -5283,6 +4497,7 @@ packages: engines: {node: '>=8'} dependencies: import-from: 3.0.0 + dev: true /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -5296,21 +4511,13 @@ packages: engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true /import-lazy/2.1.0: resolution: {integrity: sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=} engines: {node: '>=4'} dev: true - /import-local/3.0.3: - resolution: {integrity: sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - /import-meta-resolve/1.1.1: resolution: {integrity: sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==} dependencies: @@ -5366,7 +4573,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.5.1 + rxjs: 7.5.2 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -5473,16 +4680,10 @@ packages: ci-info: 3.3.0 dev: true - /is-core-module/2.8.0: - resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} - dependencies: - has: 1.0.3 - /is-core-module/2.8.1: resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} dependencies: has: 1.0.3 - dev: true /is-data-descriptor/0.1.4: resolution: {integrity: sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=} @@ -5546,11 +4747,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - /is-generator-fn/2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - /is-generator-function/1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} @@ -5652,10 +4848,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-potential-custom-element-name/1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true - /is-reference/3.0.0: resolution: {integrity: sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==} dependencies: @@ -5691,7 +4883,6 @@ packages: /is-stream/3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false /is-string/1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} @@ -5777,8 +4968,8 @@ packages: resolution: {integrity: sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.16.5 - '@babel/parser': 7.16.6 + '@babel/core': 7.16.7 + '@babel/parser': 7.16.8 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -5795,25 +4986,6 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.3 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports/3.1.2: - resolution: {integrity: sha512-0gHxuT1NNC0aEIL1zbJ+MTgPbbHhU77eJPuU35WKA7TgXiSNlCAx4PENoMrH0Or6M2H80TaZcWKhM0IK6V8gRw==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - /istanbul-reports/3.1.3: resolution: {integrity: sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==} engines: {node: '>=8'} @@ -5822,183 +4994,6 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/27.4.2: - resolution: {integrity: sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - execa: 5.1.1 - throat: 6.0.1 - dev: true - - /jest-circus/27.4.6: - resolution: {integrity: sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.4.6 - '@jest/test-result': 27.4.6 - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - expect: 27.4.6 - is-generator-fn: 2.1.0 - jest-each: 27.4.6 - jest-matcher-utils: 27.4.6 - jest-message-util: 27.4.6 - jest-runtime: 27.4.6 - jest-snapshot: 27.4.6 - jest-util: 27.4.2 - pretty-format: 27.4.6 - slash: 3.0.0 - stack-utils: 2.0.5 - throat: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-cli/27.4.7: - resolution: {integrity: sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 27.4.7 - '@jest/test-result': 27.4.6 - '@jest/types': 27.4.2 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.9 - import-local: 3.0.3 - jest-config: 27.4.7 - jest-util: 27.4.2 - jest-validate: 27.4.6 - prompts: 2.4.2 - yargs: 16.2.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /jest-config/27.4.7: - resolution: {integrity: sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - peerDependencies: - ts-node: '>=9.0.0' - peerDependenciesMeta: - ts-node: - optional: true - dependencies: - '@babel/core': 7.16.7 - '@jest/test-sequencer': 27.4.6 - '@jest/types': 27.4.2 - babel-jest: 27.4.6_@babel+core@7.16.7 - chalk: 4.1.2 - ci-info: 3.3.0 - deepmerge: 4.2.2 - glob: 7.2.0 - graceful-fs: 4.2.9 - jest-circus: 27.4.6 - jest-environment-jsdom: 27.4.6 - jest-environment-node: 27.4.6 - jest-get-type: 27.4.0 - jest-jasmine2: 27.4.6 - jest-regex-util: 27.4.0 - jest-resolve: 27.4.6 - jest-runner: 27.4.6 - jest-util: 27.4.2 - jest-validate: 27.4.6 - micromatch: 4.0.4 - pretty-format: 27.4.6 - slash: 3.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - - /jest-diff/27.4.2: - resolution: {integrity: sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 27.4.0 - jest-get-type: 27.4.0 - pretty-format: 27.4.2 - dev: true - - /jest-diff/27.4.6: - resolution: {integrity: sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 27.4.0 - jest-get-type: 27.4.0 - pretty-format: 27.4.6 - dev: true - - /jest-docblock/27.4.0: - resolution: {integrity: sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each/27.4.6: - resolution: {integrity: sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - chalk: 4.1.2 - jest-get-type: 27.4.0 - jest-util: 27.4.2 - pretty-format: 27.4.6 - dev: true - - /jest-environment-jsdom/27.4.6: - resolution: {integrity: sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.4.6 - '@jest/fake-timers': 27.4.6 - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - jest-mock: 27.4.6 - jest-util: 27.4.2 - jsdom: 16.7.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - - /jest-environment-node/27.4.6: - resolution: {integrity: sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.4.6 - '@jest/fake-timers': 27.4.6 - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - jest-mock: 27.4.6 - jest-util: 27.4.2 - dev: true - - /jest-get-type/27.4.0: - resolution: {integrity: sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - /jest-haste-map/26.6.2: resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} engines: {node: '>= 10.14.2'} @@ -6008,7 +5003,7 @@ packages: '@types/node': 17.0.8 anymatch: 3.1.2 fb-watchman: 2.0.1 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 jest-regex-util: 26.0.0 jest-serializer: 26.6.2 jest-util: 26.6.2 @@ -6020,250 +5015,19 @@ packages: fsevents: 2.3.2 dev: true - /jest-haste-map/27.4.6: - resolution: {integrity: sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - '@types/graceful-fs': 4.1.5 - '@types/node': 17.0.8 - anymatch: 3.1.2 - fb-watchman: 2.0.1 - graceful-fs: 4.2.9 - jest-regex-util: 27.4.0 - jest-serializer: 27.4.0 - jest-util: 27.4.2 - jest-worker: 27.4.6 - micromatch: 4.0.4 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /jest-jasmine2/27.4.6: - resolution: {integrity: sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.4.6 - '@jest/source-map': 27.4.0 - '@jest/test-result': 27.4.6 - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - chalk: 4.1.2 - co: 4.6.0 - expect: 27.4.6 - is-generator-fn: 2.1.0 - jest-each: 27.4.6 - jest-matcher-utils: 27.4.6 - jest-message-util: 27.4.6 - jest-runtime: 27.4.6 - jest-snapshot: 27.4.6 - jest-util: 27.4.2 - pretty-format: 27.4.6 - throat: 6.0.1 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-leak-detector/27.4.6: - resolution: {integrity: sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - jest-get-type: 27.4.0 - pretty-format: 27.4.6 - dev: true - - /jest-matcher-utils/27.4.6: - resolution: {integrity: sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 27.4.6 - jest-get-type: 27.4.0 - pretty-format: 27.4.6 - dev: true - - /jest-message-util/27.4.6: - resolution: {integrity: sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/code-frame': 7.16.7 - '@jest/types': 27.4.2 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.9 - micromatch: 4.0.4 - pretty-format: 27.4.6 - slash: 3.0.0 - stack-utils: 2.0.5 - dev: true - - /jest-mock/27.4.6: - resolution: {integrity: sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - dev: true - - /jest-pnp-resolver/1.2.2_jest-resolve@27.4.6: - resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 27.4.6 - dev: true - /jest-regex-util/26.0.0: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} dev: true - /jest-regex-util/27.4.0: - resolution: {integrity: sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - - /jest-resolve-dependencies/27.4.6: - resolution: {integrity: sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - jest-regex-util: 27.4.0 - jest-snapshot: 27.4.6 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve/27.4.6: - resolution: {integrity: sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - chalk: 4.1.2 - graceful-fs: 4.2.9 - jest-haste-map: 27.4.6 - jest-pnp-resolver: 1.2.2_jest-resolve@27.4.6 - jest-util: 27.4.2 - jest-validate: 27.4.6 - resolve: 1.21.0 - resolve.exports: 1.1.0 - slash: 3.0.0 - dev: true - - /jest-runner/27.4.6: - resolution: {integrity: sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/console': 27.4.6 - '@jest/environment': 27.4.6 - '@jest/test-result': 27.4.6 - '@jest/transform': 27.4.6 - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - chalk: 4.1.2 - emittery: 0.8.1 - exit: 0.1.2 - graceful-fs: 4.2.9 - jest-docblock: 27.4.0 - jest-environment-jsdom: 27.4.6 - jest-environment-node: 27.4.6 - jest-haste-map: 27.4.6 - jest-leak-detector: 27.4.6 - jest-message-util: 27.4.6 - jest-resolve: 27.4.6 - jest-runtime: 27.4.6 - jest-util: 27.4.2 - jest-worker: 27.4.6 - source-map-support: 0.5.21 - throat: 6.0.1 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate - dev: true - - /jest-runtime/27.4.6: - resolution: {integrity: sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/environment': 27.4.6 - '@jest/fake-timers': 27.4.6 - '@jest/globals': 27.4.6 - '@jest/source-map': 27.4.0 - '@jest/test-result': 27.4.6 - '@jest/transform': 27.4.6 - '@jest/types': 27.4.2 - chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - execa: 5.1.1 - glob: 7.2.0 - graceful-fs: 4.2.9 - jest-haste-map: 27.4.6 - jest-message-util: 27.4.6 - jest-mock: 27.4.6 - jest-regex-util: 27.4.0 - jest-resolve: 27.4.6 - jest-snapshot: 27.4.6 - jest-util: 27.4.2 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /jest-serializer/26.6.2: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} - dependencies: - '@types/node': 17.0.8 - graceful-fs: 4.2.8 - dev: true - - /jest-serializer/27.4.0: - resolution: {integrity: sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@types/node': 17.0.8 graceful-fs: 4.2.9 dev: true - /jest-snapshot/27.4.6: - resolution: {integrity: sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@babel/core': 7.16.7 - '@babel/generator': 7.16.7 - '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.16.7 - '@babel/traverse': 7.16.7 - '@babel/types': 7.16.7 - '@jest/transform': 27.4.6 - '@jest/types': 27.4.2 - '@types/babel__traverse': 7.14.2 - '@types/prettier': 2.4.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.16.7 - chalk: 4.1.2 - expect: 27.4.6 - graceful-fs: 4.2.9 - jest-diff: 27.4.6 - jest-get-type: 27.4.0 - jest-haste-map: 27.4.6 - jest-matcher-utils: 27.4.6 - jest-message-util: 27.4.6 - jest-util: 27.4.2 - natural-compare: 1.4.0 - pretty-format: 27.4.6 - semver: 7.3.5 - transitivePeerDependencies: - - supports-color - dev: true - /jest-util/26.6.2: resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} engines: {node: '>= 10.14.2'} @@ -6271,48 +5035,11 @@ packages: '@jest/types': 26.6.2 '@types/node': 17.0.8 chalk: 4.1.2 - graceful-fs: 4.2.8 + graceful-fs: 4.2.9 is-ci: 2.0.0 micromatch: 4.0.4 dev: true - /jest-util/27.4.2: - resolution: {integrity: sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - chalk: 4.1.2 - ci-info: 3.3.0 - graceful-fs: 4.2.9 - picomatch: 2.3.1 - dev: true - - /jest-validate/27.4.6: - resolution: {integrity: sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 27.4.0 - leven: 3.1.0 - pretty-format: 27.4.6 - dev: true - - /jest-watcher/27.4.6: - resolution: {integrity: sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/test-result': 27.4.6 - '@jest/types': 27.4.2 - '@types/node': 17.0.8 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - jest-util: 27.4.2 - string-length: 4.0.2 - dev: true - /jest-worker/26.6.2: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} @@ -6322,36 +5049,6 @@ packages: supports-color: 7.2.0 dev: true - /jest-worker/27.4.6: - resolution: {integrity: sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 17.0.8 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest/27.4.7: - resolution: {integrity: sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 27.4.7 - import-local: 3.0.3 - jest-cli: 27.4.7 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - /joi/17.5.0: resolution: {integrity: sha512-R7hR50COp7StzLnDi4ywOXHrBrgNXuUUfJWIR5lPY5Bm/pOD3jZaTwpluUXVLRWcoWZxkrHBBJ5hLxgnlehbdw==} dependencies: @@ -6388,48 +5085,6 @@ packages: resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=} dev: true - /jsdom/16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.5 - acorn: 8.7.0 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.3.1 - domexception: 2.0.1 - escodegen: 2.0.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.0 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.0 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.0.0 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.6 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -6549,11 +5204,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - /kleur/3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true - /kleur/4.1.4: resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} engines: {node: '>=6'} @@ -6581,19 +5231,6 @@ packages: engines: {node: '> 0.8'} dev: true - /leven/3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - - /levn/0.3.0: - resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - dev: true - /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -6624,7 +5261,7 @@ packages: log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 - rxjs: 7.5.1 + rxjs: 7.5.2 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -6638,6 +5275,11 @@ packages: json5: 2.2.0 dev: true + /local-pkg/0.4.1: + resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} + engines: {node: '>=14'} + dev: true + /locate-path/2.0.0: resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} engines: {node: '>=4'} @@ -7257,7 +5899,6 @@ packages: /mimic-fn/4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - dev: false /mimic-response/1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} @@ -7366,10 +6007,6 @@ packages: /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /multimap/1.1.0: - resolution: {integrity: sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==} - dev: true - /mute-stream/0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} @@ -7385,7 +6022,6 @@ packages: resolution: {integrity: sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: false /nanomatch/1.2.13: resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} @@ -7528,11 +6164,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 - dev: false - - /nwsapi/2.2.0: - resolution: {integrity: sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==} - dev: true /object-assign/4.1.1: resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} @@ -7641,7 +6272,6 @@ packages: engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 - dev: false /open/7.4.2: resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} @@ -7651,18 +6281,6 @@ packages: is-wsl: 2.2.0 dev: true - /optionator/0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.3 - dev: true - /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -7885,7 +6503,7 @@ packages: dependencies: is-ssh: 1.3.3 protocols: 1.4.8 - qs: 6.9.6 + qs: 6.10.2 query-string: 6.14.1 dev: true @@ -7941,7 +6559,6 @@ packages: /path-key/4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - dev: false /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -7961,6 +6578,10 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /pathval/1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /pend/1.2.0: resolution: {integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=} dev: true @@ -8003,13 +6624,6 @@ packages: engines: {node: '>= 6'} dev: true - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - /pluralize/8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} @@ -8029,8 +6643,8 @@ packages: postcss: 8.4.5 dev: false - /postcss-load-config/3.1.0: - resolution: {integrity: sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==} + /postcss-load-config/3.1.1: + resolution: {integrity: sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==} engines: {node: '>= 10'} peerDependencies: ts-node: '>=9.0.0' @@ -8038,7 +6652,6 @@ packages: ts-node: optional: true dependencies: - import-cwd: 3.0.0 lilconfig: 2.0.4 yaml: 1.10.2 @@ -8071,12 +6684,6 @@ packages: nanoid: 3.1.30 picocolors: 1.0.0 source-map-js: 1.0.1 - dev: false - - /prelude-ls/1.1.2: - resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} - engines: {node: '>= 0.8.0'} - dev: true /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -8099,16 +6706,6 @@ packages: engines: {node: '>=6'} dev: true - /pretty-format/27.4.2: - resolution: {integrity: sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.4.2 - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - /pretty-format/27.4.6: resolution: {integrity: sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -8146,14 +6743,6 @@ packages: inquirer: 8.2.0 dev: false - /prompts/2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - /prop-types/15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -8213,14 +6802,22 @@ packages: escape-goat: 2.1.1 dev: true - /qs/6.5.2: - resolution: {integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==} + /qs/6.10.2: + resolution: {integrity: sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /qs/6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} dev: true /qs/6.9.6: resolution: {integrity: sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==} engines: {node: '>=0.6'} + dev: false /query-string/6.14.1: resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} @@ -8377,7 +6974,7 @@ packages: resolution: {integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=} engines: {node: '>= 0.10'} dependencies: - resolve: 1.20.0 + resolve: 1.21.0 dev: true /redent/3.0.0: @@ -8449,15 +7046,13 @@ packages: unified: 10.1.1 dev: true - /rehype-prism-plus/1.2.2: - resolution: {integrity: sha512-9zPxqIv7ET5zXw7j0ApDQlaJSMARd9gSYRb47Gm2f8CUiHl4eXq+AoiJHZN7Dhf+ymxyXPqht2GFhfH9sqXshg==} + /rehype-prism-plus/1.3.0: + resolution: {integrity: sha512-qipMym4Acp2xwMY50zPW8l8f2RAAjFd/DSg75rTRfvTWZ9xIy2ZEnIiDmqoPLH4BQ/VybrQcFxG0lwZau9l+Qw==} dependencies: - hast-util-to-html: 8.0.3 hast-util-to-string: 2.0.0 parse-numeric-range: 1.3.0 refractor: 4.4.0 rehype-parse: 8.0.3 - unified: 10.1.1 unist-util-filter: 4.0.0 unist-util-visit: 4.1.0 dev: true @@ -8586,13 +7181,6 @@ packages: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} dev: true - /resolve-cwd/3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -8600,22 +7188,12 @@ packages: /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + dev: true /resolve-url/0.2.1: resolution: {integrity: sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=} deprecated: https://github.com/lydell/resolve-url#deprecated - /resolve.exports/1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} - engines: {node: '>=10'} - dev: true - - /resolve/1.20.0: - resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} - dependencies: - is-core-module: 2.8.0 - path-parse: 1.0.7 - /resolve/1.21.0: resolution: {integrity: sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==} hasBin: true @@ -8623,7 +7201,6 @@ packages: is-core-module: 2.8.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /resolve/2.0.0-next.3: resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} @@ -8683,8 +7260,8 @@ packages: glob: 7.2.0 dev: true - /rollup/2.62.0: - resolution: {integrity: sha512-cJEQq2gwB0GWMD3rYImefQTSjrPYaC6s4J9pYqnstVLJ1CHa/aZNVkD4Epuvg4iLeMA4KRiq7UM7awKK6j7jcw==} + /rollup/2.63.0: + resolution: {integrity: sha512-nps0idjmD+NXl6OREfyYXMn/dar3WGcyKn+KBzPdaLecub3x/LrId0wUcthcr8oZUAcZAR8NKcfGGFlNgGL1kQ==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: @@ -8711,8 +7288,8 @@ packages: dependencies: tslib: 1.14.1 - /rxjs/7.5.1: - resolution: {integrity: sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==} + /rxjs/7.5.2: + resolution: {integrity: sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==} dependencies: tslib: 2.3.1 @@ -8760,13 +7337,6 @@ packages: walker: 1.0.8 dev: true - /saxes/5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - dependencies: - xmlchars: 2.2.0 - dev: true - /scheduler/0.20.2: resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} dependencies: @@ -8901,10 +7471,6 @@ packages: /signal-exit/3.0.6: resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} - /sisteransi/1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true - /slash/2.0.0: resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} engines: {node: '>=6'} @@ -8963,7 +7529,6 @@ packages: /source-map-js/1.0.1: resolution: {integrity: sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==} engines: {node: '>=0.10.0'} - dev: false /source-map-resolve/0.5.3: resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} @@ -8974,13 +7539,6 @@ packages: source-map-url: 0.4.1 urix: 0.1.0 - /source-map-support/0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map-url/0.4.1: resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} @@ -9064,13 +7622,6 @@ packages: minipass: 3.1.6 dev: true - /stack-utils/2.0.5: - resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - /static-extend/0.1.2: resolution: {integrity: sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=} engines: {node: '>=0.10.0'} @@ -9092,14 +7643,6 @@ packages: engines: {node: '>=4'} dev: true - /string-length/4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - /string-width/4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -9168,11 +7711,6 @@ packages: engines: {node: '>=4'} dev: true - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - /strip-eof/1.0.0: resolution: {integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=} engines: {node: '>=0.10.0'} @@ -9186,7 +7724,6 @@ packages: /strip-final-newline/3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - dev: false /strip-indent/3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} @@ -9243,22 +7780,9 @@ packages: has-flag: 4.0.0 dev: true - /supports-hyperlinks/2.2.0: - resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - dev: true - - /symbol-tree/3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true /tailwindcss/3.0.12_ef48b3b8837f8a23677bffe8f9cd866d: resolution: {integrity: sha512-VqhF86z2c34sJyS5ZS8Q2nYuN0KzqZw1GGsuQQO9kJ3mY1oG7Fsag0vICkxUVXk6P+1sUkTkjMjKWCjEF0hNHw==} @@ -9284,12 +7808,12 @@ packages: object-hash: 2.2.0 postcss: 8.4.5 postcss-js: 4.0.0_postcss@8.4.5 - postcss-load-config: 3.1.0 + postcss-load-config: 3.1.1 postcss-nested: 5.0.6_postcss@8.4.5 postcss-selector-parser: 6.0.8 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 - resolve: 1.20.0 + resolve: 1.21.0 transitivePeerDependencies: - ts-node dev: false @@ -9306,14 +7830,6 @@ packages: yallist: 4.0.0 dev: true - /terminal-link/2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.2.0 - dev: true - /test-exclude/6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -9340,10 +7856,6 @@ packages: any-promise: 1.3.0 dev: true - /throat/6.0.1: - resolution: {integrity: sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==} - dev: true - /throttleit/1.0.0: resolution: {integrity: sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=} dev: true @@ -9351,6 +7863,16 @@ packages: /through/2.3.8: resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + /tinypool/0.1.1: + resolution: {integrity: sha512-sW2fQZ2BRb/GX5v55NkHiTrbMLx0eX0xNpP+VGhOe2f7Oo04+LeClDyM19zCE/WCy7jJ8kzIJ0Ojrxj3UhN9Sg==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy/0.2.8: + resolution: {integrity: sha512-4VXqQzzh9gC5uOLk77cLr9R3wqJq07xJlgM9IUdCNJCet139r+046ETKbU1x7mGs7B0k7eopyH5U6yflbBXNyA==} + engines: {node: '>=14.0.0'} + dev: true + /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -9430,25 +7952,9 @@ packages: punycode: 2.1.1 dev: true - /tough-cookie/4.0.0: - resolution: {integrity: sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==} - engines: {node: '>=6'} - dependencies: - psl: 1.8.0 - punycode: 2.1.1 - universalify: 0.1.2 - dev: true - /tr46/0.0.3: resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} - /tr46/2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} - dependencies: - punycode: 2.1.1 - dev: true - /tree-kill/1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -9501,11 +8007,11 @@ packages: debug: 4.3.3 esbuild: 0.14.11 execa: 5.1.1 - globby: 11.0.4 + globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 3.1.0 + postcss-load-config: 3.1.1 resolve-from: 5.0.0 - rollup: 2.62.0 + rollup: 2.63.0 source-map: 0.7.3 sucrase: 3.20.3 tree-kill: 1.2.2 @@ -9535,13 +8041,6 @@ packages: resolution: {integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=} dev: true - /type-check/0.3.2: - resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - dev: true - /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -9753,11 +8252,6 @@ packages: resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} dev: true - /universalify/0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true - /universalify/2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} @@ -9869,8 +8363,8 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/8.1.0: - resolution: {integrity: sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==} + /v8-to-istanbul/8.1.1: + resolution: {integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==} engines: {node: '>=10.12.0'} dependencies: '@types/istanbul-lib-coverage': 2.0.4 @@ -9922,6 +8416,63 @@ packages: vfile-message: 3.1.0 dev: true + /vite/2.7.10: + resolution: {integrity: sha512-KEY96ntXUid1/xJihJbgmLZx7QSC2D4Tui0FdS0Old5OokYzFclcofhtxtjDdGOk/fFpPbHv9yw88+rB93Tb8w==} + engines: {node: '>=12.2.0'} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + dependencies: + esbuild: 0.14.11 + postcss: 8.4.5 + resolve: 1.21.0 + rollup: 2.63.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitest/0.0.140_c8@7.11.0: + resolution: {integrity: sha512-tBv9rMKUH7AA7Vg9X5FMNZ7zyjGLNtNCBcKc2NNjPHKO1+cPttjF+jVvGIOP0Bo0l6pkRZWvsd3nywvktqVvvQ==} + engines: {node: '>=14.14.0'} + hasBin: true + peerDependencies: + '@vitest/ui': '*' + c8: '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@vitest/ui': + optional: true + c8: + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 4.3.0 + '@types/chai-subset': 1.3.3 + c8: 7.11.0 + chai: 4.3.4 + local-pkg: 0.4.1 + tinypool: 0.1.1 + tinyspy: 0.2.8 + vite: 2.7.10 + transitivePeerDependencies: + - less + - sass + - stylus + dev: true + /vscode-oniguruma/1.6.1: resolution: {integrity: sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ==} dev: true @@ -9930,19 +8481,6 @@ packages: resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} dev: true - /w3c-hr-time/1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - dependencies: - browser-process-hrtime: 1.0.0 - dev: true - - /w3c-xmlserializer/2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - dependencies: - xml-name-validator: 3.0.0 - dev: true - /wait-on/6.0.0: resolution: {integrity: sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==} engines: {node: '>=10.0.0'} @@ -9952,7 +8490,7 @@ packages: joi: 17.5.0 lodash: 4.17.21 minimist: 1.2.5 - rxjs: 7.5.1 + rxjs: 7.5.2 transitivePeerDependencies: - debug dev: true @@ -9986,41 +8524,12 @@ packages: /webidl-conversions/3.0.1: resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} - /webidl-conversions/5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: true - - /webidl-conversions/6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} - dev: true - - /whatwg-encoding/1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - dependencies: - iconv-lite: 0.4.24 - dev: true - - /whatwg-mimetype/2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - dev: true - /whatwg-url/5.0.0: resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /whatwg-url/8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} - dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 - dev: true - /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -10165,14 +8674,6 @@ packages: - supports-color dev: true - /xml-name-validator/3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - dev: true - - /xmlchars/2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true - /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'}