diff --git a/apps/webapp/app/components/integrations/WorkflowConnections.tsx b/apps/webapp/app/components/integrations/WorkflowConnections.tsx index 7d54aad0f40..b714ac915c6 100644 --- a/apps/webapp/app/components/integrations/WorkflowConnections.tsx +++ b/apps/webapp/app/components/integrations/WorkflowConnections.tsx @@ -1,69 +1,40 @@ +import { Link } from "@remix-run/react"; +import classNames from "classnames"; import invariant from "tiny-invariant"; -import { useConnectionSlots } from "~/hooks/useConnectionSlots"; +import type { ConnectionSlot } from "~/hooks/useConnectionSlots"; import { useCurrentOrganization } from "~/hooks/useOrganizations"; import { ApiLogoIcon } from "../code/ApiLogoIcon"; import { List } from "../layout/List"; -import { Body } from "../primitives/text/Body"; import { Header3 } from "../primitives/text/Headers"; import { SubTitle } from "../primitives/text/SubTitle"; import { ConnectionSelector } from "./ConnectionSelector"; -export function WorkflowConnections() { +export function WorkflowConnections({ + className, + connectionSlots, +}: { + className?: string; + connectionSlots: ConnectionSlot[]; +}) { const organization = useCurrentOrganization(); invariant(organization, "Organization not found"); - const connectionSlots = useConnectionSlots(); - invariant(connectionSlots, "Connection slots not found"); - const allApisCount = - connectionSlots.services.length + (connectionSlots.source ? 1 : 0); - const connectedApisCount = - connectionSlots.services.filter((c) => c.connection).length + - (connectionSlots.source?.connection ? 1 : 0); - const unconnectedApisCount = allApisCount - connectedApisCount ? 1 : 0; - const unconnectedApisCountCopy = `, ${unconnectedApisCount} to connect`; return ( - <> - - <> - {connectedApisCount} API - {connectedApisCount > 1 - ? "s" - : connectedApisCount === 0 - ? "s" - : ""}{" "} - connected - {unconnectedApisCount === 0 ? "" : unconnectedApisCountCopy} - - +
+ API Connections - {connectionSlots.source && ( -
  • - -
    - {connectionSlots.source.integration.name} - -
    -
  • - )} - {connectionSlots.services.map((slot) => ( + {connectionSlots.map((slot) => (
  • -
    +
    {slot.integration?.name} @@ -80,7 +51,18 @@ export function WorkflowConnections() {
  • ))} +
  • + You will be able to authenticate APIs on demand when your workflow + runs. You can also{" "} + + connect them now + + . +
  • - +
    ); } diff --git a/apps/webapp/app/components/primitives/IconPlug.tsx b/apps/webapp/app/components/primitives/IconPlug.tsx new file mode 100644 index 00000000000..f07a313ae64 --- /dev/null +++ b/apps/webapp/app/components/primitives/IconPlug.tsx @@ -0,0 +1,25 @@ +export function PlugIcon({ + className, + fill, +}: { + className?: string; + fill?: string; +}) { + return ( + + + + ); +} diff --git a/apps/webapp/app/hooks/useConnectionSlots.ts b/apps/webapp/app/hooks/useConnectionSlots.ts index a4dc0892da2..26b5f46ad8f 100644 --- a/apps/webapp/app/hooks/useConnectionSlots.ts +++ b/apps/webapp/app/hooks/useConnectionSlots.ts @@ -1,7 +1,16 @@ +import type { APIConnection } from ".prisma/client"; +import type { ServiceMetadata } from "@trigger.dev/integration-sdk"; import type { UseDataFunctionReturn } from "remix-typedjson/dist/remix"; import type { loader } from "~/routes/__app/orgs/$organizationSlug/workflows/$workflowSlug"; import { hydrateObject, useMatchesData } from "~/utils"; +export type ConnectionSlot = { + id: string; + connection: APIConnection | null; + integration: ServiceMetadata; + possibleConnections: APIConnection[]; +}; + export function useConnectionSlots() { const routeMatch = useMatchesData( "routes/__app/orgs/$organizationSlug/workflows/$workflowSlug" diff --git a/apps/webapp/app/presenters/workflowRunListPresenter.server.ts b/apps/webapp/app/presenters/workflowRunListPresenter.server.ts index 5a4bd5daa08..1ad00dba175 100644 --- a/apps/webapp/app/presenters/workflowRunListPresenter.server.ts +++ b/apps/webapp/app/presenters/workflowRunListPresenter.server.ts @@ -72,6 +72,29 @@ export class WorkflowRunListPresenter { }, }); + const totalRealRuns = await this.#prismaClient.workflowRun.count({ + where: { + isTest: false, + workflow: { + slug: workflowSlug, + organization: { + slug: organizationSlug, + users: { + some: { + id: userId, + }, + }, + }, + }, + environment: { + slug: environmentSlug, + }, + status: { + in: statuses, + }, + }, + }); + const runs = await this.#prismaClient.workflowRun.findMany({ select: { id: true, @@ -111,6 +134,7 @@ export class WorkflowRunListPresenter { page, pageCount: Math.ceil(total / pageSize), total, + totalRealRuns, filters: { statuses, }, diff --git a/apps/webapp/app/routes/__app/orgs/$organizationSlug/workflows/$workflowSlug/index.tsx b/apps/webapp/app/routes/__app/orgs/$organizationSlug/workflows/$workflowSlug/index.tsx index 1f3057eb3e3..4233ce18832 100644 --- a/apps/webapp/app/routes/__app/orgs/$organizationSlug/workflows/$workflowSlug/index.tsx +++ b/apps/webapp/app/routes/__app/orgs/$organizationSlug/workflows/$workflowSlug/index.tsx @@ -1,10 +1,25 @@ -import { InformationCircleIcon } from "@heroicons/react/24/outline"; +import { EventRule } from ".prisma/client"; +import { Disclosure } from "@headlessui/react"; +import { BeakerIcon } from "@heroicons/react/20/solid"; +import { + ArrowsRightLeftIcon, + ChevronDownIcon, + Cog6ToothIcon, + InformationCircleIcon, +} from "@heroicons/react/24/outline"; import type { LoaderArgs } from "@remix-run/server-runtime"; -import { typedjson, useTypedLoaderData } from "remix-typedjson"; +import classNames from "classnames"; +import { + typedjson, + UseDataFunctionReturn, + useTypedLoaderData, +} from "remix-typedjson"; import invariant from "tiny-invariant"; +import { ApiLogoIcon } from "~/components/code/ApiLogoIcon"; import CodeBlock from "~/components/code/CodeBlock"; import { CopyTextButton } from "~/components/CopyTextButton"; import { OctoKitty } from "~/components/GitHubLoginButton"; +import { ConnectionSelector } from "~/components/integrations/ConnectionSelector"; import { WorkflowConnections } from "~/components/integrations/WorkflowConnections"; import { Panel } from "~/components/layout/Panel"; import { PanelHeader } from "~/components/layout/PanelHeader"; @@ -15,6 +30,7 @@ import { SecondaryLink, TertiaryLink, } from "~/components/primitives/Buttons"; +import { PlugIcon } from "~/components/primitives/IconPlug"; import { Input } from "~/components/primitives/Input"; import { Body } from "~/components/primitives/text/Body"; import { Header2 } from "~/components/primitives/text/Headers"; @@ -62,7 +78,8 @@ export const loader = async ({ request, params }: LoaderArgs) => { }; export default function Page() { - const { runs, total, hasFilters } = useTypedLoaderData(); + const { runs, total, totalRealRuns, hasFilters } = + useTypedLoaderData(); const organization = useCurrentOrganization(); invariant(organization, "Organization not found"); @@ -106,7 +123,7 @@ export default function Page() { {workflow.organizationTemplate && ( @@ -125,79 +142,7 @@ export default function Page() { - {workflow.status === "CREATED" && ( - <> - {eventRule && - eventRule.trigger.type === "WEBHOOK" && - workflow.externalSourceConfig?.type === "manual" ? ( -
    - - {workflow.externalSourceConfig.data.success ? ( -
    - - Use these details to register your webhook – this usually - involves logging in to the developer section of the service. - -
    - - URL - -
    - - -
    -
    - {workflow.externalSourceConfig.data.secret && ( -
    - - Secret - -
    - - -
    -
    - )} -
    - ) : ( -
    - - Your custom webhook event is incorrectly formatted. See the - error below - - -
    - )} -
    - ) : ( - - )} - - )} + {workflow.status === "DISABLED" && ( - Workflow type + Your workflow Test workflow - + @@ -234,12 +179,255 @@ export default function Page() { /> +
    + {connectionSlots.source && + connectionSlots.source.connection === null ? ( + + {({ open }) => ( +
    + +
    + + + Connect to{" "} + {connectionSlots.source && + connectionSlots.source.integration.name}{" "} + so your workflow can be triggered + +
    +
    + + {open ? "Close" : "Open"} + + +
    +
    + + {connectionSlots.source && ( +
    + +
    + + {connectionSlots.source.integration.name} + + +
    +
    + )} +
    +
    + )} +
    + ) : ( + <> + )} + {workflow.status === "CREATED" && + eventRule && + eventRule.trigger.type === "WEBHOOK" && + workflow.externalSourceConfig?.type === "manual" && ( + + {({ open }) => ( +
    + +
    + + Register your webhook +
    +
    + + {open ? "Close" : "Open"} + + +
    +
    + + {workflow.status === "CREATED" && ( + <> + {eventRule && + eventRule.trigger.type === "WEBHOOK" && + workflow.externalSourceConfig?.type === "manual" ? ( +
    + {workflow.externalSourceConfig.data.success ? ( + <> + + Use these details to register your + webhook. This usually involves logging in + to the developer section of the service. + +
    +
    + + URL + +
    + + +
    +
    + {workflow.externalSourceConfig.data + .secret && ( +
    + + Secret + +
    + + +
    +
    + )} +
    + + ) : ( +
    + + Your custom webhook event is incorrectly + formatted. See the error below + + +
    + )} +
    + ) : ( + + )} + + )} +
    +
    + )} +
    + )} + + {({ open }) => ( +
    + +
    + + How to run your workflow +
    +
    + + {open ? "Close" : "Open"} + + +
    +
    + +
    + + Trigger your workflow from the source + + + Recommended + +
    +
      +
    1. {howToText(eventRule)}
    2. +
    3. Return here to view the new workflow run.
    4. +
    + + Trigger your workflow from a test + + + + Test your workflow + +
    +
    + )} +
    +
    )} + {apiConnectionCount > 0 && ( + + )} - {total > 0 ? ( + {total > 0 && ( <> -
    +
    Last {pageSize} runs View all @@ -254,29 +442,6 @@ export default function Page() { /> - ) : ( - <> - Workflow runs - - Test your workflow - - {/* -
    - - This workflow hasn't been run yet -
    -
    - - If you want to quickly test the workflow, you can use the test - feature. - - Test your workflow -
    -
    */} - )} ); @@ -353,3 +518,23 @@ function ConnectToDevelopmentInstructions({ ); } + +type WorkflowEventRule = NonNullable< + ReturnType +>["rules"][number]; + +function howToText(eventRule: WorkflowEventRule) { + if (!eventRule.trigger) { + return "This workflow hasn't been connected."; + } + switch (eventRule.trigger.type) { + case "WEBHOOK": + return "Run this workflow by triggering the webhook."; + case "SCHEDULE": + return "This workflow will run on the schedule you've defined."; + case "CUSTOM_EVENT": + return "This workflow will run when you send a custom event."; + default: + return "This workflow hasn't been connected."; + } +} diff --git a/apps/webapp/app/routes/__app/orgs/$organizationSlug/workflows/$workflowSlug/integrations.tsx b/apps/webapp/app/routes/__app/orgs/$organizationSlug/workflows/$workflowSlug/integrations.tsx index 4498c9c7522..4318887723c 100644 --- a/apps/webapp/app/routes/__app/orgs/$organizationSlug/workflows/$workflowSlug/integrations.tsx +++ b/apps/webapp/app/routes/__app/orgs/$organizationSlug/workflows/$workflowSlug/integrations.tsx @@ -38,7 +38,13 @@ export default function Page() { )} {connectionSlots.source || connectionSlots.services.length > 0 ? ( - + ) : ( No API Integrations for this workflow )} diff --git a/examples/fetch-playground/src/index.ts b/examples/fetch-playground/src/index.ts index 7fe765244f6..85f1b89a4dd 100644 --- a/examples/fetch-playground/src/index.ts +++ b/examples/fetch-playground/src/index.ts @@ -131,7 +131,7 @@ export const bookingPayloadSchema = z.object({ new Trigger({ id: "caldotcom-to-slack-2", name: "Cal.com To Slack", - apiKey: "trigger_dev_zC25mKNn6c0q", + apiKey: "trigger_development_lwlXEjyhSNF4", endpoint: "ws://localhost:8889/ws", logLevel: "debug", on: webhookEvent({ diff --git a/examples/generic-webhook/package.json b/examples/generic-webhook/package.json new file mode 100644 index 00000000000..5c2cabc0449 --- /dev/null +++ b/examples/generic-webhook/package.json @@ -0,0 +1,19 @@ +{ + "private": true, + "name": "@examples/generic-webhook", + "version": "0.0.1", + "description": "A generic webhook playground", + "dependencies": { + "@trigger.dev/slack": "workspace:*", + "@trigger.dev/sdk": "workspace:*", + "zod": "^3.20.2" + }, + "devDependencies": { + "@trigger.dev/tsconfig": "workspace:*", + "@types/node": "16", + "tsx": "^3.12.0" + }, + "scripts": { + "dev": "tsx src/index.ts" + } +} diff --git a/examples/generic-webhook/src/index.ts b/examples/generic-webhook/src/index.ts new file mode 100644 index 00000000000..7d33c66bbaf --- /dev/null +++ b/examples/generic-webhook/src/index.ts @@ -0,0 +1,106 @@ +import * as slack from "@trigger.dev/slack"; +import { Trigger, webhookEvent } from "@trigger.dev/sdk"; +import { z } from "zod"; + +export const bookingPayloadSchema = z.object({ + triggerEvent: z.string(), + createdAt: z.coerce.date(), + payload: z.object({ + type: z.string(), + title: z.string(), + description: z.string(), + additionalNotes: z.string(), + customInputs: z.object({}), + startTime: z.coerce.date(), + endTime: z.coerce.date(), + organizer: z.object({ + id: z.number(), + name: z.string(), + email: z.string(), + timeZone: z.string(), + language: z.object({ locale: z.string() }), + }), + attendees: z.array( + z.object({ + email: z.string(), + name: z.string(), + timeZone: z.string(), + language: z.object({ locale: z.string() }), + }) + ), + location: z.string(), + destinationCalendar: z.object({ + id: z.number(), + integration: z.string(), + externalId: z.string(), + userId: z.number(), + eventTypeId: z.null(), + credentialId: z.number(), + }), + hideCalendarNotes: z.boolean(), + requiresConfirmation: z.null(), + eventTypeId: z.number(), + seatsShowAttendees: z.boolean(), + uid: z.string(), + conferenceData: z.object({ + createRequest: z.object({ requestId: z.string() }), + }), + videoCallData: z.object({ + type: z.string(), + id: z.string(), + password: z.string(), + url: z.string(), + }), + appsStatus: z.array( + z.object({ + appName: z.string(), + type: z.string(), + success: z.number(), + failures: z.number(), + errors: z.array(z.any()).optional(), + warnings: z.array(z.any()).optional(), + }) + ), + eventTitle: z.string(), + eventDescription: z.null(), + price: z.number(), + currency: z.string(), + length: z.number(), + bookingId: z.number(), + metadata: z.object({ videoCallUrl: z.string() }), + status: z.string(), + }), +}); + +new Trigger({ + id: "caldotcom-to-slack-2", + name: "Cal.com To Slack", + apiKey: "trigger_development_lwlXEjyhSNF4", + endpoint: "ws://localhost:8889/ws", + logLevel: "debug", + on: webhookEvent({ + service: "cal.com", + eventName: "BOOKING_CREATED", + filter: { + triggerEvent: ["BOOKING_CREATED"], + }, + schema: bookingPayloadSchema, + verifyPayload: { + enabled: true, + header: "X-Cal-Signature-256", + }, + }), + run: async (event, ctx) => { + await ctx.logger.info("Received a cal.com booking", { + event, + wallTime: new Date(), + }); + + await slack.postMessage(`Cal.com booking yo`, { + channelName: "customers", + text: `New Booking: ${ + event.payload.title + } at ${event.payload.startTime.toLocaleDateString()}`, + }); + }, +}).listen(); diff --git a/examples/generic-webhook/tsconfig.json b/examples/generic-webhook/tsconfig.json new file mode 100644 index 00000000000..00ad22f1a85 --- /dev/null +++ b/examples/generic-webhook/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "@trigger.dev/tsconfig/examples.json", + "include": ["src/**/*.ts"], + "exclude": ["node_modules", "**/*.test.*"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24153585a2d..ce0db98bd47 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ importers: tailwindcss: 3.1.8_postcss@8.4.21 tsx: 3.12.2 turbo: 1.7.0 - vite: 4.1.3 + vite: 4.1.4 vite-tsconfig-paths: 4.0.5 vitest: 0.28.5 @@ -92,12 +92,12 @@ importers: '@types/json-pointer': 1.0.31 '@types/morgan': 1.9.4 '@types/node': 18.14.0 - '@typescript-eslint/eslint-plugin': 5.52.0_bzepuo66bcyj4mepwnxofjvdli + '@typescript-eslint/eslint-plugin': 5.53.0_bzepuo66bcyj4mepwnxofjvdli concurrently: 7.6.0 dotenv: 16.0.3 eslint: 8.34.0 eslint-config-prettier: 8.6.0_eslint@8.34.0 - eslint-config-standard-with-typescript: 34.0.0_s4wyy3hkcfdlicuewz4avpo42q + eslint-config-standard-with-typescript: 34.0.0_e4cqfx33t3lusso5bte4gguj3u eslint-plugin-import: 2.27.5_zycheyzypw6s5ouujsf5akzhsy eslint-plugin-n: 15.6.1_eslint@8.34.0 eslint-plugin-promise: 6.1.1_eslint@8.34.0 @@ -110,7 +110,7 @@ importers: tsup: 6.6.3_typescript@4.9.5 tsx: 3.12.3 typescript: 4.9.5 - vite: 4.1.3_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.0 vite-tsconfig-paths: 4.0.5_typescript@4.9.5 vitest: 0.28.5 @@ -552,6 +552,23 @@ importers: '@types/node': 16.18.11 tsx: 3.12.2 + examples/generic-webhook: + specifiers: + '@trigger.dev/sdk': workspace:* + '@trigger.dev/slack': workspace:* + '@trigger.dev/tsconfig': workspace:* + '@types/node': '16' + tsx: ^3.12.0 + zod: ^3.20.2 + dependencies: + '@trigger.dev/sdk': link:../../packages/trigger-sdk + '@trigger.dev/slack': link:../../integrations/slack + zod: 3.20.2 + devDependencies: + '@trigger.dev/tsconfig': link:../../config-packages/tsconfig + '@types/node': 16.18.11 + tsx: 3.12.2 + examples/github-webhook: specifiers: '@trigger.dev/github': workspace:* @@ -1053,6 +1070,7 @@ importers: specifiers: '@aws-sdk/client-secrets-manager': ^3.238.0 '@aws-sdk/credential-providers': ^3.238.0 + '@trigger.dev/integration-sdk': workspace:* '@trigger.dev/tsconfig': workspace:* '@types/node': '16' '@types/node-fetch': '2.6' @@ -1067,6 +1085,7 @@ importers: devDependencies: '@aws-sdk/client-secrets-manager': 3.245.0 '@aws-sdk/credential-providers': 3.245.0 + '@trigger.dev/integration-sdk': link:../integration-sdk '@trigger.dev/tsconfig': link:../../config-packages/tsconfig '@types/node': 16.18.11 '@types/node-fetch': 2.6.2 @@ -3989,8 +4008,8 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm/0.17.9: - resolution: {integrity: sha512-efHnZVJldh2e18fK40RYzYTTRDzZ0QgL9V/73PSsAH43BauvjVwkqSHPhbcn77H0EQOUM2JPuO/XCg7jcKt94A==} + /@esbuild/android-arm/0.17.10: + resolution: {integrity: sha512-7YEBfZ5lSem9Tqpsz+tjbdsEshlO9j/REJrfv4DXgKTt1+/MHqGwbtlyxQuaSlMeUZLxUKBaX8wdzlTfHkmnLw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -4024,8 +4043,8 @@ packages: requiresBuild: true optional: true - /@esbuild/android-arm64/0.17.9: - resolution: {integrity: sha512-bqds/6lXsCA7JhHGKIM/R80sy3BAIBR0HWyeas0bW57QVHT3Rz5sf4oUVS4ZsmN+J+8IgNnaIT2PXZ0pnRcLKg==} + /@esbuild/android-arm64/0.17.10: + resolution: {integrity: sha512-ht1P9CmvrPF5yKDtyC+z43RczVs4rrHpRqrmIuoSvSdn44Fs1n6DGlpZKdK6rM83pFLbVaSUwle8IN+TPmkv7g==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -4059,8 +4078,8 @@ packages: requiresBuild: true optional: true - /@esbuild/android-x64/0.17.9: - resolution: {integrity: sha512-pP+MLR/k8BAYZuOqEkjAaQd9/pzbNS52pNFiXgdiCHb/16u6o7s0rPF8vPlVg+1s8ii+M6HrymL4534xYwCQCA==} + /@esbuild/android-x64/0.17.10: + resolution: {integrity: sha512-CYzrm+hTiY5QICji64aJ/xKdN70IK8XZ6iiyq0tZkd3tfnwwSWTYH1t3m6zyaaBxkuj40kxgMyj1km/NqdjQZA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -4094,8 +4113,8 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-arm64/0.17.9: - resolution: {integrity: sha512-Gdbnu/RCIGHE/zqLHZwujTXnHz0lBQxK9+llrbxm5tO46CMhqiOhUuA5Zt6q2imULNoPJtxmhspHSAQtcx2pkw==} + /@esbuild/darwin-arm64/0.17.10: + resolution: {integrity: sha512-3HaGIowI+nMZlopqyW6+jxYr01KvNaLB5znXfbyyjuo4lE0VZfvFGcguIJapQeQMS4cX/NEispwOekJt3gr5Dg==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -4129,8 +4148,8 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-x64/0.17.9: - resolution: {integrity: sha512-GEZsUsDjJnCTVWuaq1cJ1Y3oV9GmNj/h4j6jA29VYSip7S7nSSiAo4dQFBJg734QKZZFos8fHc4abJpoN2ebGw==} + /@esbuild/darwin-x64/0.17.10: + resolution: {integrity: sha512-J4MJzGchuCRG5n+B4EHpAMoJmBeAE1L3wGYDIN5oWNqX0tEr7VKOzw0ymSwpoeSpdCa030lagGUfnfhS7OvzrQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -4164,8 +4183,8 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-arm64/0.17.9: - resolution: {integrity: sha512-l3v6bZdpZIG4RpNKObqNqJhDvqQO5JqQlU2S+KyMCbf0xQhYCbTuhu5kKY8hndM1oKhmqq6VfPWhOSf6P3XT/g==} + /@esbuild/freebsd-arm64/0.17.10: + resolution: {integrity: sha512-ZkX40Z7qCbugeK4U5/gbzna/UQkM9d9LNV+Fro8r7HA7sRof5Rwxc46SsqeMvB5ZaR0b1/ITQ/8Y1NmV2F0fXQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -4199,8 +4218,8 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-x64/0.17.9: - resolution: {integrity: sha512-o/qhS0gbIdS0AjgiT0mbdiRIyNVRD31N81c1H7NNM4p6jVkSvScqo0v9eYJ+30mPhJsL26BwSNiuFJzD/SCyuw==} + /@esbuild/freebsd-x64/0.17.10: + resolution: {integrity: sha512-0m0YX1IWSLG9hWh7tZa3kdAugFbZFFx9XrvfpaCMMvrswSTvUZypp0NFKriUurHpBA3xsHVE9Qb/0u2Bbi/otg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -4234,8 +4253,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm/0.17.9: - resolution: {integrity: sha512-AhSVW1uIbcXssQ1D+Mn0txGgcxU32ikvIxuqkmjLC7dUpcX0JuwkPgdqTOicuBjG06GV4WvXSHcKCBUjN+oBxA==} + /@esbuild/linux-arm/0.17.10: + resolution: {integrity: sha512-whRdrrl0X+9D6o5f0sTZtDM9s86Xt4wk1bf7ltx6iQqrIIOH+sre1yjpcCdrVXntQPCNw/G+XqsD4HuxeS+2QA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -4269,8 +4288,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm64/0.17.9: - resolution: {integrity: sha512-o3bvDJn9txfMxrCVJATbL3NeksMT9MGqSN7vTeG9g+387rDzfUiWpF5CN/L0MoI3QTicTydEDOx0PVX8/q+nCA==} + /@esbuild/linux-arm64/0.17.10: + resolution: {integrity: sha512-g1EZJR1/c+MmCgVwpdZdKi4QAJ8DCLP5uTgLWSAVd9wlqk9GMscaNMEViG3aE1wS+cNMzXXgdWiW/VX4J+5nTA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -4304,8 +4323,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ia32/0.17.9: - resolution: {integrity: sha512-fh3Eb+jMHDJUd08vEYL8swRT7zJo4lhrcG8NYuosHVeT49XQ0Bn9xLMtgtYXjCw5aB11aphAUwnzawvDqJCqTQ==} + /@esbuild/linux-ia32/0.17.10: + resolution: {integrity: sha512-1vKYCjfv/bEwxngHERp7huYfJ4jJzldfxyfaF7hc3216xiDA62xbXJfRlradiMhGZbdNLj2WA1YwYFzs9IWNPw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -4347,8 +4366,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64/0.17.9: - resolution: {integrity: sha512-+DvqOzQLkXonfQTHo4PTlbiTCfz0Rx6oYn3fQrUlPX2PffGOth4HjuP4jHeFbw0YFfOErhjM6n481nB4VTmmFQ==} + /@esbuild/linux-loong64/0.17.10: + resolution: {integrity: sha512-mvwAr75q3Fgc/qz3K6sya3gBmJIYZCgcJ0s7XshpoqIAIBszzfXsqhpRrRdVFAyV1G9VUjj7VopL2HnAS8aHFA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -4382,8 +4401,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-mips64el/0.17.9: - resolution: {integrity: sha512-9O0HhtxRzx9OOqavv7kIONncJXxhzrbDFmOD+cJ/3UUsy8dn52J6X2xCeUOxbmEOXYP2K+uha7b1AXG/URhF5Q==} + /@esbuild/linux-mips64el/0.17.10: + resolution: {integrity: sha512-XilKPgM2u1zR1YuvCsFQWl9Fc35BqSqktooumOY2zj7CSn5czJn279j9TE1JEqSqz88izJo7yE4x3LSf7oxHzg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -4417,8 +4436,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ppc64/0.17.9: - resolution: {integrity: sha512-tOwSTDZ0X5rcYK3OyfJVf4fFlvYLv3HGCOJxdE9gZVeRkXXd6O9CJ/A4Li1Tt9JQs9kJcFWCXxCwhY70h+t9iw==} + /@esbuild/linux-ppc64/0.17.10: + resolution: {integrity: sha512-kM4Rmh9l670SwjlGkIe7pYWezk8uxKHX4Lnn5jBZYBNlWpKMBCVfpAgAJqp5doLobhzF3l64VZVrmGeZ8+uKmQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -4452,8 +4471,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-riscv64/0.17.9: - resolution: {integrity: sha512-mmirCaZItLSPw7loFPHvdDXO0A2I+cYOQ96eerbWEjqi9V4u+vvYSoUR3Or7HLe1JUZS+T0YWN+jPUASc1hqzg==} + /@esbuild/linux-riscv64/0.17.10: + resolution: {integrity: sha512-r1m9ZMNJBtOvYYGQVXKy+WvWd0BPvSxMsVq8Hp4GzdMBQvfZRvRr5TtX/1RdN6Va8JMVQGpxqde3O+e8+khNJQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -4487,8 +4506,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-s390x/0.17.9: - resolution: {integrity: sha512-zuL5TDhxstsvxYVZ1McsnfNrO6vlpZmxiNShJmYuYPt8COBJ/4iRkwHZ5Rbf1OkEVazB3/WASNtopv1/Gq19IQ==} + /@esbuild/linux-s390x/0.17.10: + resolution: {integrity: sha512-LsY7QvOLPw9WRJ+fU5pNB3qrSfA00u32ND5JVDrn/xG5hIQo3kvTxSlWFRP0NJ0+n6HmhPGG0Q4jtQsb6PFoyg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -4522,8 +4541,8 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-x64/0.17.9: - resolution: {integrity: sha512-jVa5NKqwBmq57aNDZOSnNuRTV5GrI93HdjTlyQyRrOs7OSEQq2r9NyaGd6KmzuxLz19XTanFt4WeGoLnjFT1Ug==} + /@esbuild/linux-x64/0.17.10: + resolution: {integrity: sha512-zJUfJLebCYzBdIz/Z9vqwFjIA7iSlLCFvVi7glMgnu2MK7XYigwsonXshy9wP9S7szF+nmwrelNaP3WGanstEg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -4557,8 +4576,8 @@ packages: requiresBuild: true optional: true - /@esbuild/netbsd-x64/0.17.9: - resolution: {integrity: sha512-BRoQyPJ7aiQ7USFCtGmmrYTbRDa9muZAwoYchfqspd+ef8n2kKcXGQ0K2OqcLEqNFOwhLpAY4y4YAl22FbP+BA==} + /@esbuild/netbsd-x64/0.17.10: + resolution: {integrity: sha512-lOMkailn4Ok9Vbp/q7uJfgicpDTbZFlXlnKT2DqC8uBijmm5oGtXAJy2ZZVo5hX7IOVXikV9LpCMj2U8cTguWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -4592,8 +4611,8 @@ packages: requiresBuild: true optional: true - /@esbuild/openbsd-x64/0.17.9: - resolution: {integrity: sha512-gDCVw9M2k8tyA9GokQEeh+L2gl0EZeGIIj5WB5H97Mb0ADq5Ea8vWyQs2iY1Q/tebcuP8cUoOZWxkCsmlyl1NA==} + /@esbuild/openbsd-x64/0.17.10: + resolution: {integrity: sha512-/VE0Kx6y7eekqZ+ZLU4AjMlB80ov9tEz4H067Y0STwnGOYL8CsNg4J+cCmBznk1tMpxMoUOf0AbWlb1d2Pkbig==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -4627,8 +4646,8 @@ packages: requiresBuild: true optional: true - /@esbuild/sunos-x64/0.17.9: - resolution: {integrity: sha512-f89/xt0Hzp7POTDJYSJvotyFXatxXBGXJyFFTQGJW+NTYhFHaMcrrb41OB3L8sfzYi3PSlM3pZnwlEk1QiBX2g==} + /@esbuild/sunos-x64/0.17.10: + resolution: {integrity: sha512-ERNO0838OUm8HfUjjsEs71cLjLMu/xt6bhOlxcJ0/1MG3hNqCmbWaS+w/8nFLa0DDjbwZQuGKVtCUJliLmbVgg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -4662,8 +4681,8 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-arm64/0.17.9: - resolution: {integrity: sha512-jrU/SBHXc3NPS5mPgYeL8pgIrBTwdrnaoLtygkQtuPzz0oBjsTyxV46tZoOctv4Q1Jq06+4zsJWkTzVaoik8FQ==} + /@esbuild/win32-arm64/0.17.10: + resolution: {integrity: sha512-fXv+L+Bw2AeK+XJHwDAQ9m3NRlNemG6Z6ijLwJAAVdu4cyoFbBWbEtyZzDeL+rpG2lWI51cXeMt70HA8g2MqIg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -4697,8 +4716,8 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-ia32/0.17.9: - resolution: {integrity: sha512-/oVEu7DurNFM0E6qA18R8xkbYU6xilaTnqG65rqm4XJo8ONuqTzLnj/93bQps7RJIxPI+yKPl0Zx2KifvWUa5A==} + /@esbuild/win32-ia32/0.17.10: + resolution: {integrity: sha512-3s+HADrOdCdGOi5lnh5DMQEzgbsFsd4w57L/eLKKjMnN0CN4AIEP0DCP3F3N14xnxh3ruNc32A0Na9zYe1Z/AQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -4732,8 +4751,8 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64/0.17.9: - resolution: {integrity: sha512-PLKuXKwlPljFrzzsUO6hHNWcYeE4a8FOX/6AJ7U7PajgKqtBGw2mGYxsfJHGb+UdfgdOapIOsYPgzMTG+SGDrg==} + /@esbuild/win32-x64/0.17.10: + resolution: {integrity: sha512-oP+zFUjYNaMNmjTwlFtWep85hvwUu19cZklB3QsBOcZSs6y7hmH4LNCJ7075bsqzYaNvZFXJlAVaQ2ApITDXtw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -5614,13 +5633,13 @@ packages: '@babel/eslint-parser': 7.19.1_ucmnolur3r335ullwiyt3zl3pi '@babel/preset-react': 7.18.6_@babel+core@7.20.12 '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.52.0_3jon24igvnqaqexgwtxk6nkpse + '@typescript-eslint/eslint-plugin': 5.53.0_3jon24igvnqaqexgwtxk6nkpse '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe eslint: 8.31.0 eslint-import-resolver-node: 0.3.6 eslint-import-resolver-typescript: 3.5.3_vz4tyq5r7fh66imfi352lmrvhq eslint-plugin-import: 2.27.5_qdjeohovcytra7xto5vgmxssaq - eslint-plugin-jest: 26.9.0_7vc6y3iaavsvrzkd2bhm77qoga + eslint-plugin-jest: 26.9.0_y6565ziejixavcuubgd3r7fqr4 eslint-plugin-jest-dom: 4.0.3_eslint@8.31.0 eslint-plugin-jsx-a11y: 6.7.1_eslint@8.31.0 eslint-plugin-node: 11.1.0_eslint@8.31.0 @@ -6684,8 +6703,8 @@ packages: dev: true optional: true - /@typescript-eslint/eslint-plugin/5.52.0_3jon24igvnqaqexgwtxk6nkpse: - resolution: {integrity: sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==} + /@typescript-eslint/eslint-plugin/5.53.0_3jon24igvnqaqexgwtxk6nkpse: + resolution: {integrity: sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -6696,9 +6715,9 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe - '@typescript-eslint/scope-manager': 5.52.0 - '@typescript-eslint/type-utils': 5.52.0_iukboom6ndih5an6iafl45j2fe - '@typescript-eslint/utils': 5.52.0_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/scope-manager': 5.53.0 + '@typescript-eslint/type-utils': 5.53.0_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/utils': 5.53.0_iukboom6ndih5an6iafl45j2fe debug: 4.3.4 eslint: 8.31.0 grapheme-splitter: 1.0.4 @@ -6712,8 +6731,8 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.52.0_bzepuo66bcyj4mepwnxofjvdli: - resolution: {integrity: sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==} + /@typescript-eslint/eslint-plugin/5.53.0_bzepuo66bcyj4mepwnxofjvdli: + resolution: {integrity: sha512-alFpFWNucPLdUOySmXCJpzr6HKC3bu7XooShWM+3w/EL6J2HIoB2PFxpLnq4JauWVk6DiVeNKzQlFEaE+X9sGw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -6724,9 +6743,9 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 5.48.1_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/scope-manager': 5.52.0 - '@typescript-eslint/type-utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm - '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/scope-manager': 5.53.0 + '@typescript-eslint/type-utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 grapheme-splitter: 1.0.4 @@ -6788,16 +6807,16 @@ packages: '@typescript-eslint/visitor-keys': 5.48.1 dev: true - /@typescript-eslint/scope-manager/5.52.0: - resolution: {integrity: sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==} + /@typescript-eslint/scope-manager/5.53.0: + resolution: {integrity: sha512-Opy3dqNsp/9kBBeCPhkCNR7fmdSQqA+47r21hr9a14Bx0xnkElEQmhoHga+VoaoQ6uDHjDKmQPIYcUcKJifS7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.52.0 - '@typescript-eslint/visitor-keys': 5.52.0 + '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/visitor-keys': 5.53.0 dev: true - /@typescript-eslint/type-utils/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==} + /@typescript-eslint/type-utils/5.53.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -6806,8 +6825,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.53.0_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 eslint: 8.34.0 tsutils: 3.21.0_typescript@4.9.5 @@ -6816,8 +6835,8 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils/5.52.0_iukboom6ndih5an6iafl45j2fe: - resolution: {integrity: sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==} + /@typescript-eslint/type-utils/5.53.0_iukboom6ndih5an6iafl45j2fe: + resolution: {integrity: sha512-HO2hh0fmtqNLzTAme/KnND5uFNwbsdYhCZghK2SoxGp3Ifn2emv+hi0PBUjzzSh0dstUIFqOj3bp0AwQlK4OWw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -6826,8 +6845,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.4 - '@typescript-eslint/utils': 5.52.0_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.4 + '@typescript-eslint/utils': 5.53.0_iukboom6ndih5an6iafl45j2fe debug: 4.3.4 eslint: 8.31.0 tsutils: 3.21.0_typescript@4.9.4 @@ -6841,8 +6860,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types/5.52.0: - resolution: {integrity: sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==} + /@typescript-eslint/types/5.53.0: + resolution: {integrity: sha512-5kcDL9ZUIP756K6+QOAfPkigJmCPHcLN7Zjdz76lQWWDdzfOhZDTj1irs6gPBKiXx5/6O3L0+AvupAut3z7D2A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -6888,8 +6907,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.52.0_typescript@4.9.4: - resolution: {integrity: sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==} + /@typescript-eslint/typescript-estree/5.53.0_typescript@4.9.4: + resolution: {integrity: sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -6897,8 +6916,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.52.0 - '@typescript-eslint/visitor-keys': 5.52.0 + '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/visitor-keys': 5.53.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -6909,8 +6928,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.52.0_typescript@4.9.5: - resolution: {integrity: sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==} + /@typescript-eslint/typescript-estree/5.53.0_typescript@4.9.5: + resolution: {integrity: sha512-eKmipH7QyScpHSkhbptBBYh9v8FxtngLquq292YTEQ1pxVs39yFBlLC1xeIZcPPz1RWGqb7YgERJRGkjw8ZV7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -6918,8 +6937,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.52.0 - '@typescript-eslint/visitor-keys': 5.52.0 + '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/visitor-keys': 5.53.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -6930,17 +6949,17 @@ packages: - supports-color dev: true - /@typescript-eslint/utils/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: - resolution: {integrity: sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==} + /@typescript-eslint/utils/5.53.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==} 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.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.52.0 - '@typescript-eslint/types': 5.52.0 - '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 + '@typescript-eslint/scope-manager': 5.53.0 + '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.5 eslint: 8.34.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.34.0 @@ -6950,17 +6969,17 @@ packages: - typescript dev: true - /@typescript-eslint/utils/5.52.0_iukboom6ndih5an6iafl45j2fe: - resolution: {integrity: sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==} + /@typescript-eslint/utils/5.53.0_iukboom6ndih5an6iafl45j2fe: + resolution: {integrity: sha512-VUOOtPv27UNWLxFwQK/8+7kvxVC+hPHNsJjzlJyotlaHjLSIgOCKj9I0DBUjwOOA64qjBwx5afAPjksqOxMO0g==} 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.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.52.0 - '@typescript-eslint/types': 5.52.0 - '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.4 + '@typescript-eslint/scope-manager': 5.53.0 + '@typescript-eslint/types': 5.53.0 + '@typescript-eslint/typescript-estree': 5.53.0_typescript@4.9.4 eslint: 8.31.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@8.31.0 @@ -6978,11 +6997,11 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.52.0: - resolution: {integrity: sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==} + /@typescript-eslint/visitor-keys/5.53.0: + resolution: {integrity: sha512-JqNLnX3leaHFZEN0gCh81sIvgrp/2GOACZNgO4+Tkf64u51kTpAyWFOY8XHx8XuXr3N2C9zgPPHtcpMg6z1g0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/types': 5.53.0 eslint-visitor-keys: 3.3.0 dev: true @@ -7884,13 +7903,13 @@ packages: load-tsconfig: 0.2.3 dev: true - /bundle-require/4.0.1_esbuild@0.17.9: + /bundle-require/4.0.1_esbuild@0.17.10: resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' dependencies: - esbuild: 0.17.9 + esbuild: 0.17.10 load-tsconfig: 0.2.3 dev: true @@ -9629,34 +9648,34 @@ packages: '@esbuild/win32-ia32': 0.16.4 '@esbuild/win32-x64': 0.16.4 - /esbuild/0.17.9: - resolution: {integrity: sha512-m3b2MR76QkwKPw/KQBlBJVaIncfQhhXsDMCFPoyqEOIziV+O7BAKqOYT1NbHsnFUX0/98CLWxUfM5stzh4yq4Q==} + /esbuild/0.17.10: + resolution: {integrity: sha512-n7V3v29IuZy5qgxx25TKJrEm0FHghAlS6QweUcyIgh/U0zYmQcvogWROitrTyZId1mHSkuhhuyEXtI9OXioq7A==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.9 - '@esbuild/android-arm64': 0.17.9 - '@esbuild/android-x64': 0.17.9 - '@esbuild/darwin-arm64': 0.17.9 - '@esbuild/darwin-x64': 0.17.9 - '@esbuild/freebsd-arm64': 0.17.9 - '@esbuild/freebsd-x64': 0.17.9 - '@esbuild/linux-arm': 0.17.9 - '@esbuild/linux-arm64': 0.17.9 - '@esbuild/linux-ia32': 0.17.9 - '@esbuild/linux-loong64': 0.17.9 - '@esbuild/linux-mips64el': 0.17.9 - '@esbuild/linux-ppc64': 0.17.9 - '@esbuild/linux-riscv64': 0.17.9 - '@esbuild/linux-s390x': 0.17.9 - '@esbuild/linux-x64': 0.17.9 - '@esbuild/netbsd-x64': 0.17.9 - '@esbuild/openbsd-x64': 0.17.9 - '@esbuild/sunos-x64': 0.17.9 - '@esbuild/win32-arm64': 0.17.9 - '@esbuild/win32-ia32': 0.17.9 - '@esbuild/win32-x64': 0.17.9 + '@esbuild/android-arm': 0.17.10 + '@esbuild/android-arm64': 0.17.10 + '@esbuild/android-x64': 0.17.10 + '@esbuild/darwin-arm64': 0.17.10 + '@esbuild/darwin-x64': 0.17.10 + '@esbuild/freebsd-arm64': 0.17.10 + '@esbuild/freebsd-x64': 0.17.10 + '@esbuild/linux-arm': 0.17.10 + '@esbuild/linux-arm64': 0.17.10 + '@esbuild/linux-ia32': 0.17.10 + '@esbuild/linux-loong64': 0.17.10 + '@esbuild/linux-mips64el': 0.17.10 + '@esbuild/linux-ppc64': 0.17.10 + '@esbuild/linux-riscv64': 0.17.10 + '@esbuild/linux-s390x': 0.17.10 + '@esbuild/linux-x64': 0.17.10 + '@esbuild/netbsd-x64': 0.17.10 + '@esbuild/openbsd-x64': 0.17.10 + '@esbuild/sunos-x64': 0.17.10 + '@esbuild/win32-arm64': 0.17.10 + '@esbuild/win32-ia32': 0.17.10 + '@esbuild/win32-x64': 0.17.10 dev: true /escalade/3.1.1: @@ -9711,7 +9730,7 @@ packages: eslint: 8.34.0 dev: true - /eslint-config-standard-with-typescript/34.0.0_s4wyy3hkcfdlicuewz4avpo42q: + /eslint-config-standard-with-typescript/34.0.0_e4cqfx33t3lusso5bte4gguj3u: resolution: {integrity: sha512-zhCsI4/A0rJ1ma8sf3RLXYc0gc7yPmdTWRVXMh9dtqeUx3yBQyALH0wosHhk1uQ9QyItynLdNOtcHKNw8G7lQw==} peerDependencies: '@typescript-eslint/eslint-plugin': ^5.0.0 @@ -9721,7 +9740,7 @@ packages: eslint-plugin-promise: ^6.0.0 typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 5.52.0_bzepuo66bcyj4mepwnxofjvdli + '@typescript-eslint/eslint-plugin': 5.53.0_bzepuo66bcyj4mepwnxofjvdli '@typescript-eslint/parser': 5.48.1_7kw3g6rralp5ps6mg3uyzz6azm eslint: 8.34.0 eslint-config-standard: 17.0.0_rwq7hzy2vtlwiajbw6pmw3rkzy @@ -9962,7 +9981,7 @@ packages: requireindex: 1.2.0 dev: true - /eslint-plugin-jest/26.9.0_7vc6y3iaavsvrzkd2bhm77qoga: + /eslint-plugin-jest/26.9.0_y6565ziejixavcuubgd3r7fqr4: resolution: {integrity: sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -9975,8 +9994,8 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.52.0_3jon24igvnqaqexgwtxk6nkpse - '@typescript-eslint/utils': 5.52.0_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/eslint-plugin': 5.53.0_3jon24igvnqaqexgwtxk6nkpse + '@typescript-eslint/utils': 5.53.0_iukboom6ndih5an6iafl45j2fe eslint: 8.31.0 transitivePeerDependencies: - supports-color @@ -10111,7 +10130,7 @@ packages: peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.52.0_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/utils': 5.53.0_iukboom6ndih5an6iafl45j2fe eslint: 8.31.0 transitivePeerDependencies: - supports-color @@ -16894,11 +16913,11 @@ packages: typescript: optional: true dependencies: - bundle-require: 4.0.1_esbuild@0.17.9 + bundle-require: 4.0.1_esbuild@0.17.10 cac: 6.7.14 chokidar: 3.5.3 debug: 4.3.4 - esbuild: 0.17.9 + esbuild: 0.17.10 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 @@ -17516,7 +17535,7 @@ packages: picocolors: 1.0.0 source-map: 0.6.1 source-map-support: 0.5.21 - vite: 4.1.3_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.0 transitivePeerDependencies: - '@types/node' - less @@ -17631,8 +17650,8 @@ packages: fsevents: 2.3.2 dev: true - /vite/4.1.3: - resolution: {integrity: sha512-0Zqo4/Fr/swSOBmbl+HAAhOjrqNwju+yTtoe4hQX9UsARdcuc9njyOdr6xU0DDnV7YP0RT6mgTTOiRtZgxfCxA==} + /vite/4.1.4: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -17664,8 +17683,8 @@ packages: fsevents: 2.3.2 dev: true - /vite/4.1.3_@types+node@18.14.0: - resolution: {integrity: sha512-0Zqo4/Fr/swSOBmbl+HAAhOjrqNwju+yTtoe4hQX9UsARdcuc9njyOdr6xU0DDnV7YP0RT6mgTTOiRtZgxfCxA==} + /vite/4.1.4_@types+node@18.14.0: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -17784,7 +17803,7 @@ packages: tinybench: 2.3.1 tinypool: 0.3.1 tinyspy: 1.0.2 - vite: 4.1.3_@types+node@18.14.0 + vite: 4.1.4_@types+node@18.14.0 vite-node: 0.28.5_@types+node@18.14.0 why-is-node-running: 2.2.2 transitivePeerDependencies: