diff --git a/.env.example b/.env.example
index 369418ea13..fd2f0b1203 100644
--- a/.env.example
+++ b/.env.example
@@ -98,5 +98,8 @@ UNIFORM_CLIENT_AYLESBURY_VALE=👻
UNIFORM_CLIENT_CHILTERN=👻
UNIFORM_CLIENT_WYCOMBE=👻
+## Forthcoming Idox Nexus integration
+IDOX_NEXUS_CLIENT=👻
+
## End-to-end test team (borrows Lambeth's details)
GOV_UK_PAY_SECRET_E2E=👻
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 2758fd20d0..f8baa88533 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -24,7 +24,7 @@ updates:
- "theopensystemslab/planx"
ignore:
- dependency-name: "*"
- update-types: ["version-update:semver-patch"]
+ update-types: ["version-update:semver-patch", "version-update:semver-minor"]
# Hasura
- package-ecosystem: "npm"
@@ -38,7 +38,7 @@ updates:
- "theopensystemslab/planx"
ignore:
- dependency-name: "*"
- update-types: ["version-update:semver-patch"]
+ update-types: ["version-update:semver-patch", "version-update:semver-minor"]
- package-ecosystem: "docker"
directory: "/hasura.planx.uk"
@@ -76,7 +76,7 @@ updates:
- "theopensystemslab/planx"
ignore:
- dependency-name: "*"
- update-types: ["version-update:semver-patch"]
+ update-types: ["version-update:semver-patch", "version-update:semver-minor"]
# ShareDB
- package-ecosystem: "npm"
@@ -90,7 +90,7 @@ updates:
- "theopensystemslab/planx"
ignore:
- dependency-name: "*"
- update-types: ["version-update:semver-patch"]
+ update-types: ["version-update:semver-patch", "version-update:semver-minor"]
- package-ecosystem: "docker"
directory: "/sharedb.planx.uk"
@@ -115,7 +115,7 @@ updates:
- "theopensystemslab/planx"
ignore:
- dependency-name: "*"
- update-types: ["version-update:semver-patch"]
+ update-types: ["version-update:semver-patch", "version-update:semver-minor"]
- package-ecosystem: "docker"
directory: "/api.planx.uk"
@@ -142,7 +142,7 @@ updates:
- "theopensystemslab/planx"
ignore:
- dependency-name: "*"
- update-types: ["version-update:semver-patch"]
+ update-types: ["version-update:semver-patch", "version-update:semver-minor"]
# Infrastructure
# - package-ecosystem: "npm"
diff --git a/.github/workflows/pizza-teardown-manual.yml b/.github/workflows/pizza-teardown-manual.yml
index 524538c82b..841c3b4ede 100644
--- a/.github/workflows/pizza-teardown-manual.yml
+++ b/.github/workflows/pizza-teardown-manual.yml
@@ -4,7 +4,7 @@ on:
inputs:
pull_request_id:
required: true
- type: integer
+ type: number
description: Pull Request number which should have its pizza destroyed
env:
@@ -20,4 +20,8 @@ jobs:
action: destroy
api_key: ${{ secrets.VULTR_API_KEY }}
domain: ${{ env.DOMAIN }}
- pullrequest_id: ${{ github.event.inputs.pull_request_id }}
+ os_type: alpine
+ plan: vc2-1c-1gb
+ pull_request_id: ${{ github.event.inputs.pull_request_id }}
+ region: lhr
+ tag: manual-teardown
diff --git a/.github/workflows/pizza-teardown.yml b/.github/workflows/pizza-teardown.yml
index 24e3de0de2..5eec564860 100644
--- a/.github/workflows/pizza-teardown.yml
+++ b/.github/workflows/pizza-teardown.yml
@@ -17,7 +17,7 @@ jobs:
action: destroy
api_key: ${{ secrets.VULTR_API_KEY }}
domain: ${{ env.DOMAIN }}
- os_type: ubuntu
+ os_type: alpine
plan: vc2-1c-1gb
pull_request_id: ${{ env.PULLREQUEST_ID }}
region: lhr
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 8e89d32df7..1511916bc4 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -307,7 +307,7 @@ jobs:
action: create
api_key: ${{ secrets.VULTR_API_KEY }}
domain: ${{ env.DOMAIN }}
- os_type: ubuntu
+ os_type: alpine
plan: vc2-1c-1gb
pull_request_id: ${{ env.PULLREQUEST_ID }}
region: lhr
@@ -324,13 +324,19 @@ jobs:
password: ${{ steps.create.outputs.default_password }}
command_timeout: 20m
script: |
- apt-get update -y
-
+ apk update
+ apk add docker
+ addgroup root docker
+ rc-update add docker default
+ service docker start
+ apk add docker-cli-compose
+
+ apk add git
git clone "${{ secrets.AUTHENTICATED_REPO_URL }}"
cd planx-new
git fetch origin "pull/${{ env.PULLREQUEST_ID }}/head" && git checkout FETCH_HEAD
- apt-get install awscli -y
+ apk add aws-cli
export AWS_ACCESS_KEY_ID=${{ secrets.PIZZA_AWS_ACCESS_KEY_ID }}
export AWS_SECRET_ACCESS_KEY=${{ secrets.PIZZA_AWS_SECRET_ACCESS_KEY }}
export AWS_REGION=eu-west-2
@@ -352,15 +358,21 @@ jobs:
username: root
password: ${{ secrets.SSH_PASSWORD }}
command_timeout: 10m
+ # TODO: some of below script might be superfluous for server update (rather than create)
script: |
- apt-get update -y
+ apk update
+ apk add docker
+ addgroup root docker
+ rc-update add docker default
+ service docker start
+ apk add docker-cli-compose
git clone "${{ secrets.AUTHENTICATED_REPO_URL }}"
cd planx-new
git add . && git stash
git fetch origin "pull/${{ env.PULLREQUEST_ID }}/head" && git checkout FETCH_HEAD
- apt-get install awscli -y
+ apk add aws-cli
export AWS_ACCESS_KEY_ID=${{ secrets.PIZZA_AWS_ACCESS_KEY_ID }}
export AWS_SECRET_ACCESS_KEY=${{ secrets.PIZZA_AWS_SECRET_ACCESS_KEY }}
export AWS_REGION=eu-west-2
diff --git a/.gitignore b/.gitignore
index 133d7d8670..d2d8497fb8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,6 +24,7 @@ api.planx.uk/tmp/
# Ignore certificate files
**/*.chain
**/*.cert
+**/*.crt
**/*.key
**/*.pfx
**/*.pkcs12
diff --git a/api.planx.uk/helpers.ts b/api.planx.uk/helpers.ts
index 6bbcf5b71e..3433f5a9cd 100644
--- a/api.planx.uk/helpers.ts
+++ b/api.planx.uk/helpers.ts
@@ -6,6 +6,7 @@ import { $public, getClient } from "./client";
export interface FlowData {
slug: string;
+ name: string;
data: Flow["data"];
team_id: number;
team: { slug: string };
@@ -28,6 +29,7 @@ const getFlowData = async (id: string): Promise => {
flow: flows_by_pk(id: $id) {
slug
data
+ name
team_id
team {
slug
@@ -62,6 +64,7 @@ interface InsertFlow {
const insertFlow = async (
teamId: number,
slug: string,
+ name: string,
flowData: Flow["data"],
creatorId?: number,
copiedFrom?: Flow["id"],
@@ -75,6 +78,7 @@ const insertFlow = async (
mutation InsertFlow(
$team_id: Int!
$slug: String!
+ $name: String!
$data: jsonb = {}
$creator_id: Int
$copied_from: uuid
@@ -83,6 +87,7 @@ const insertFlow = async (
object: {
team_id: $team_id
slug: $slug
+ name: $name
data: $data
version: 1
creator_id: $creator_id
@@ -96,6 +101,7 @@ const insertFlow = async (
{
team_id: teamId,
slug: slug,
+ name: name,
data: flowData,
creator_id: creatorId,
copied_from: copiedFrom,
diff --git a/api.planx.uk/lib/hasura/metadata/index.ts b/api.planx.uk/lib/hasura/metadata/index.ts
index 41b2fc8d19..b6e5fb4aaa 100644
--- a/api.planx.uk/lib/hasura/metadata/index.ts
+++ b/api.planx.uk/lib/hasura/metadata/index.ts
@@ -12,6 +12,7 @@ interface ScheduledEvent {
export interface CombinedResponse {
bops?: ScheduledEventResponse;
uniform?: ScheduledEventResponse;
+ idox?: ScheduledEventResponse;
email?: ScheduledEventResponse;
s3?: ScheduledEventResponse;
}
diff --git a/api.planx.uk/modules/admin/session/digitalPlanningData.ts b/api.planx.uk/modules/admin/session/digitalPlanningData.ts
index f974839b28..1089e1aef4 100644
--- a/api.planx.uk/modules/admin/session/digitalPlanningData.ts
+++ b/api.planx.uk/modules/admin/session/digitalPlanningData.ts
@@ -40,9 +40,7 @@ export const getDigitalPlanningApplicationPayload = async (
return res.send(data);
} catch (error) {
return next({
- message:
- "Failed to make Digital Planning Application payload: " +
- (error as Error).message,
+ message: `Failed to make Digital Planning Application payload: ${error}. Stack: ${(error as Error).stack}`,
});
}
};
diff --git a/api.planx.uk/modules/admin/session/summary.ts b/api.planx.uk/modules/admin/session/summary.ts
index 9139719bc5..d74b93038d 100644
--- a/api.planx.uk/modules/admin/session/summary.ts
+++ b/api.planx.uk/modules/admin/session/summary.ts
@@ -2,17 +2,12 @@ import {
GovUKPayment,
PaymentRequest,
Session,
+ Team,
} from "@opensystemslab/planx-core/types";
import { NextFunction, Request, Response } from "express";
import { gql } from "graphql-request";
-import {
- Breadcrumb,
- Flow,
- LowCalSession,
- Passport,
- Team,
-} from "../../../types";
+import { Breadcrumb, Flow, LowCalSession, Passport } from "../../../types";
import { $api } from "../../../client";
/**
diff --git a/api.planx.uk/modules/flows/copyFlow/service.ts b/api.planx.uk/modules/flows/copyFlow/service.ts
index 6cf7ef8fbf..68e31f46e8 100644
--- a/api.planx.uk/modules/flows/copyFlow/service.ts
+++ b/api.planx.uk/modules/flows/copyFlow/service.ts
@@ -15,6 +15,7 @@ const copyFlow = async (
// Check if copied flow data should be inserted into `flows` table, or just returned for reference
if (insert) {
const newSlug = flow.slug + "-copy";
+ const newName = flow.name + " (copy)";
const creatorId = userContext.getStore()?.user?.sub;
if (!creatorId) throw Error("User details missing from request");
@@ -22,6 +23,7 @@ const copyFlow = async (
await insertFlow(
flow.team_id,
newSlug,
+ newName,
uniqueFlowData,
parseInt(creatorId),
flowId,
diff --git a/api.planx.uk/modules/flows/docs.yaml b/api.planx.uk/modules/flows/docs.yaml
index 389ebf4075..d02b1290db 100644
--- a/api.planx.uk/modules/flows/docs.yaml
+++ b/api.planx.uk/modules/flows/docs.yaml
@@ -56,6 +56,25 @@ components:
type: array
items:
type: string
+ ValidationCheck:
+ type: object
+ properties:
+ title:
+ type: string
+ example: File types
+ required: true
+ status:
+ type: string
+ enum:
+ - Pass
+ - Fail
+ - Warn
+ - Not applicable
+ example: Pass
+ message:
+ type: string
+ example: Your flow has valid file types
+ required: true
responses:
CopyFlow:
content:
@@ -124,19 +143,20 @@ components:
properties:
message:
type: string
- required: false
- description:
- type: string
- required: false
+ required: true
alteredNodes:
oneOf:
- type: array
items:
$ref: "#/components/schemas/Node"
- type: "null"
- updatedFlow:
- $ref: "#/components/schemas/FlowData"
+ validationChecks:
required: false
+ oneOf:
+ - type: array
+ items:
+ $ref: "#/components/schemas/ValidationCheck"
+ - type: "null"
FlattenData:
content:
application/json:
diff --git a/api.planx.uk/modules/flows/moveFlow/service.ts b/api.planx.uk/modules/flows/moveFlow/service.ts
index e77a811422..6c05c62c40 100644
--- a/api.planx.uk/modules/flows/moveFlow/service.ts
+++ b/api.planx.uk/modules/flows/moveFlow/service.ts
@@ -1,6 +1,7 @@
import { gql } from "graphql-request";
-import { Flow, Team } from "../../../types";
+import { Flow } from "../../../types";
import { $public, getClient } from "../../../client";
+import { Team } from "@opensystemslab/planx-core/types";
export const moveFlow = async (flowId: string, teamSlug: string) => {
const team = await $public.team.getBySlug(teamSlug);
diff --git a/api.planx.uk/modules/flows/validate/controller.ts b/api.planx.uk/modules/flows/validate/controller.ts
index 3e32ca98b8..a974a7229f 100644
--- a/api.planx.uk/modules/flows/validate/controller.ts
+++ b/api.planx.uk/modules/flows/validate/controller.ts
@@ -1,7 +1,7 @@
import { Node } from "@opensystemslab/planx-core/types";
import { ValidatedRequestHandler } from "../../../shared/middleware/validate";
import { z } from "zod";
-import { validateAndDiffFlow } from "./service";
+import { validateAndDiffFlow } from "./service/index";
import { ServerError } from "../../../errors";
interface ValidateAndDiffResponse {
diff --git a/api.planx.uk/modules/flows/validate/helpers.ts b/api.planx.uk/modules/flows/validate/helpers.ts
new file mode 100644
index 0000000000..1f50262e81
--- /dev/null
+++ b/api.planx.uk/modules/flows/validate/helpers.ts
@@ -0,0 +1,51 @@
+import {
+ ComponentType,
+ FlowGraph,
+ Node,
+} from "@opensystemslab/planx-core/types";
+import { Entry } from "type-fest";
+
+export const isComponentType = (
+ entry: Entry,
+ type: ComponentType,
+): entry is [string, Node] => {
+ const [nodeId, node] = entry;
+ if (nodeId === "_root") return false;
+ return Boolean(node?.type === type);
+};
+
+export const hasComponentType = (
+ flowGraph: FlowGraph,
+ type: ComponentType,
+ fn?: string,
+): boolean => {
+ const nodeIds = Object.entries(flowGraph).filter(
+ (entry): entry is [string, Node] => isComponentType(entry, type),
+ );
+ if (fn) {
+ nodeIds
+ ?.filter(([_nodeId, nodeData]) => nodeData?.data?.fn === fn)
+ ?.map(([nodeId, _nodeData]) => nodeId);
+ } else {
+ nodeIds?.map(([nodeId, _nodeData]) => nodeId);
+ }
+ return Boolean(nodeIds?.length);
+};
+
+export const numberOfComponentType = (
+ flowGraph: FlowGraph,
+ type: ComponentType,
+ fn?: string,
+): number => {
+ const nodeIds = Object.entries(flowGraph).filter(
+ (entry): entry is [string, Node] => isComponentType(entry, type),
+ );
+ if (fn) {
+ nodeIds
+ ?.filter(([_nodeId, nodeData]) => nodeData?.data?.fn === fn)
+ ?.map(([nodeId, _nodeData]) => nodeId);
+ } else {
+ nodeIds?.map(([nodeId, _nodeData]) => nodeId);
+ }
+ return nodeIds?.length;
+};
diff --git a/api.planx.uk/modules/flows/validate/service.ts b/api.planx.uk/modules/flows/validate/service.ts
deleted file mode 100644
index 132725e59e..0000000000
--- a/api.planx.uk/modules/flows/validate/service.ts
+++ /dev/null
@@ -1,232 +0,0 @@
-import * as jsondiffpatch from "jsondiffpatch";
-import { dataMerged, getMostRecentPublishedFlow } from "../../../helpers";
-import intersection from "lodash/intersection";
-import {
- ComponentType,
- FlowGraph,
- Node,
-} from "@opensystemslab/planx-core/types";
-import type { Entry } from "type-fest";
-
-const validateAndDiffFlow = async (flowId: string) => {
- const flattenedFlow = await dataMerged(flowId);
-
- const {
- isValid: sectionsAreValid,
- message: sectionsValidationMessage,
- description: sectionsValidationDescription,
- } = validateSections(flattenedFlow);
- if (!sectionsAreValid) {
- return {
- alteredNodes: null,
- message: sectionsValidationMessage,
- description: sectionsValidationDescription,
- };
- }
-
- const {
- isValid: payIsValid,
- message: payValidationMessage,
- description: payValidationDescription,
- } = validateInviteToPay(flattenedFlow);
- if (!payIsValid) {
- return {
- alteredNodes: null,
- message: payValidationMessage,
- description: payValidationDescription,
- };
- }
-
- const mostRecent = await getMostRecentPublishedFlow(flowId);
- const delta = jsondiffpatch.diff(mostRecent, flattenedFlow);
-
- if (!delta)
- return {
- alteredNodes: null,
- message: "No new changes to publish",
- };
-
- const alteredNodes = Object.keys(delta).map((key) => ({
- id: key,
- ...flattenedFlow[key],
- }));
-
- return {
- alteredNodes,
- message: "Changes valid",
- };
-};
-
-type ValidationResponse = {
- isValid: boolean;
- message: string;
- description?: string;
-};
-
-const validateSections = (flowGraph: FlowGraph): ValidationResponse => {
- if (getSectionNodeIds(flowGraph)?.length > 0) {
- if (!sectionIsInFirstPosition(flowGraph)) {
- return {
- isValid: false,
- message: "Cannot publish an invalid flow",
- description: "When using Sections, your flow must start with a Section",
- };
- }
-
- if (!allSectionsOnRoot(flowGraph)) {
- return {
- isValid: false,
- message: "Cannot publish an invalid flow",
- description:
- "Found Sections in one or more External Portals, but Sections are only allowed in main flow",
- };
- }
- }
-
- return {
- isValid: true,
- message: "This flow has valid Sections or is not using Sections",
- };
-};
-
-const getSectionNodeIds = (flowGraph: FlowGraph): string[] => {
- const sectionNodes = Object.entries(flowGraph).filter((entry) =>
- isComponentType(entry, ComponentType.Section),
- );
- return sectionNodes.map(([nodeId, _nodeData]) => nodeId);
-};
-
-const sectionIsInFirstPosition = (flowGraph: FlowGraph): boolean => {
- const firstNodeId = flowGraph["_root"].edges[0];
- return flowGraph[firstNodeId].type === ComponentType.Section;
-};
-
-const allSectionsOnRoot = (flowData: FlowGraph): boolean => {
- const sectionTypeNodeIds = getSectionNodeIds(flowData);
- const intersectingNodeIds = intersection(
- flowData["_root"].edges,
- sectionTypeNodeIds,
- );
- return intersectingNodeIds.length === sectionTypeNodeIds.length;
-};
-
-const validateInviteToPay = (flowGraph: FlowGraph): ValidationResponse => {
- const invalidResponseTemplate = {
- isValid: false,
- message: "Cannot publish an invalid flow",
- };
-
- if (inviteToPayEnabled(flowGraph)) {
- if (numberOfComponentType(flowGraph, ComponentType.Pay) > 1) {
- return {
- ...invalidResponseTemplate,
- description:
- "When using Invite to Pay, your flow must have exactly ONE Pay",
- };
- }
-
- if (!hasComponentType(flowGraph, ComponentType.Send)) {
- return {
- ...invalidResponseTemplate,
- description: "When using Invite to Pay, your flow must have a Send",
- };
- }
-
- if (numberOfComponentType(flowGraph, ComponentType.Send) > 1) {
- return {
- ...invalidResponseTemplate,
- description:
- "When using Invite to Pay, your flow must have exactly ONE Send. It can select many destinations",
- };
- }
-
- if (!hasComponentType(flowGraph, ComponentType.FindProperty)) {
- return {
- ...invalidResponseTemplate,
- description:
- "When using Invite to Pay, your flow must have a FindProperty",
- };
- }
-
- if (
- !hasComponentType(
- flowGraph,
- ComponentType.Checklist,
- "proposal.projectType",
- )
- ) {
- return {
- ...invalidResponseTemplate,
- description:
- "When using Invite to Pay, your flow must have a Checklist that sets the passport variable `proposal.projectType`",
- };
- }
- }
-
- return {
- isValid: true,
- message:
- "This flow is valid for Invite to Pay or is not using Invite to Pay",
- };
-};
-
-const inviteToPayEnabled = (flowGraph: FlowGraph): boolean => {
- const payNodes = Object.entries(flowGraph).filter(
- (entry): entry is [string, Node] =>
- isComponentType(entry, ComponentType.Pay),
- );
- const payNodeStatuses = payNodes.map(
- ([_nodeId, node]) => node?.data?.allowInviteToPay,
- );
- return (
- payNodeStatuses.length > 0 &&
- payNodeStatuses.every((status) => status === true)
- );
-};
-
-const isComponentType = (
- entry: Entry,
- type: ComponentType,
-): entry is [string, Node] => {
- const [nodeId, node] = entry;
- if (nodeId === "_root") return false;
- return Boolean(node?.type === type);
-};
-
-const hasComponentType = (
- flowGraph: FlowGraph,
- type: ComponentType,
- fn?: string,
-): boolean => {
- const nodeIds = Object.entries(flowGraph).filter(
- (entry): entry is [string, Node] => isComponentType(entry, type),
- );
- if (fn) {
- nodeIds
- ?.filter(([_nodeId, nodeData]) => nodeData?.data?.fn === fn)
- ?.map(([nodeId, _nodeData]) => nodeId);
- } else {
- nodeIds?.map(([nodeId, _nodeData]) => nodeId);
- }
- return Boolean(nodeIds?.length);
-};
-
-const numberOfComponentType = (
- flowGraph: FlowGraph,
- type: ComponentType,
- fn?: string,
-): number => {
- const nodeIds = Object.entries(flowGraph).filter(
- (entry): entry is [string, Node] => isComponentType(entry, type),
- );
- if (fn) {
- nodeIds
- ?.filter(([_nodeId, nodeData]) => nodeData?.data?.fn === fn)
- ?.map(([nodeId, _nodeData]) => nodeId);
- } else {
- nodeIds?.map(([nodeId, _nodeData]) => nodeId);
- }
- return nodeIds?.length;
-};
-
-export { validateAndDiffFlow };
diff --git a/api.planx.uk/modules/flows/validate/service/fileTypes.ts b/api.planx.uk/modules/flows/validate/service/fileTypes.ts
new file mode 100644
index 0000000000..cee8cfc32f
--- /dev/null
+++ b/api.planx.uk/modules/flows/validate/service/fileTypes.ts
@@ -0,0 +1,76 @@
+import { getValidSchemaValues } from "@opensystemslab/planx-core";
+import {
+ ComponentType,
+ FlowGraph,
+ Node,
+} from "@opensystemslab/planx-core/types";
+import countBy from "lodash/countBy";
+
+import { isComponentType } from "../helpers";
+import { FlowValidationResponse } from "./index";
+
+const validateFileTypes = (flowGraph: FlowGraph): FlowValidationResponse => {
+ // Get all passport variables set by FileUpload and/or FileUploadAndLabel
+ const allFileFns = [
+ ...getFileUploadNodeFns(flowGraph),
+ ...getFileUploadAndLabelNodeFns(flowGraph),
+ ];
+ if (allFileFns.length < 1) {
+ return {
+ title: "File types",
+ status: "Not applicable",
+ message: "Your flow is not using FileUpload or UploadAndLabel",
+ };
+ }
+
+ // Get all file types supported by current release of ODP Schema & compare
+ const validFileTypes = getValidSchemaValues("FileType");
+ const invalidFileFns: string[] = [];
+ allFileFns.forEach((fn) => {
+ if (!validFileTypes?.includes(fn)) {
+ invalidFileFns.push(fn);
+ }
+ });
+ if (invalidFileFns.length > 0) {
+ // Get unique fns with count of occurances
+ const countInvalidFileFns = countBy(invalidFileFns);
+ const summarisedInvalidFileFns: string[] = [];
+ Object.entries(countInvalidFileFns).map(([k, v]: [string, number]) => {
+ summarisedInvalidFileFns.push(`${k} (${v})`);
+ });
+ return {
+ title: "File types",
+ status: "Warn",
+ message: `Your FileUpload or UploadAndLabel are setting data fields that are not supported by the current release of the ODP Schema: ${summarisedInvalidFileFns.join(", ")}`,
+ };
+ }
+
+ return {
+ title: "File types",
+ status: "Pass",
+ message:
+ "Files collected via FileUpload or UploadAndLabel are all supported by the ODP Schema",
+ };
+};
+
+const getFileUploadNodeFns = (flowGraph: FlowGraph): string[] => {
+ const fileUploadNodes = Object.entries(flowGraph).filter((entry) =>
+ isComponentType(entry, ComponentType.FileUpload),
+ );
+ return fileUploadNodes.map(([_nodeId, node]) => node.data?.fn as string);
+};
+
+const getFileUploadAndLabelNodeFns = (flowGraph: FlowGraph): string[] => {
+ // Exclude Upload & Label nodes used in "info-only" mode with a hidden dropzone
+ const uploadAndLabelNodes = Object.entries(flowGraph).filter(
+ (entry) =>
+ isComponentType(entry, ComponentType.FileUploadAndLabel) &&
+ entry[1].data?.hideDropZone !== true,
+ );
+ const uploadAndLabelFileTypes = uploadAndLabelNodes
+ .map(([_nodeId, node]: [string, Node]) => node.data?.fileTypes)
+ .flat();
+ return uploadAndLabelFileTypes?.map((file: any) => file?.fn as string);
+};
+
+export { validateFileTypes };
diff --git a/api.planx.uk/modules/flows/validate/service/index.ts b/api.planx.uk/modules/flows/validate/service/index.ts
new file mode 100644
index 0000000000..1702b3603a
--- /dev/null
+++ b/api.planx.uk/modules/flows/validate/service/index.ts
@@ -0,0 +1,74 @@
+import { ComponentType, Edges, Node } from "@opensystemslab/planx-core/types";
+import * as jsondiffpatch from "jsondiffpatch";
+
+import { dataMerged, getMostRecentPublishedFlow } from "../../../../helpers";
+import { validateFileTypes } from "./fileTypes";
+import { validateInviteToPay } from "./inviteToPay";
+import { validateSections } from "./sections";
+import { validateProjectTypes } from "./projectTypes";
+
+type AlteredNode = {
+ id: string;
+ type?: ComponentType;
+ edges?: Edges;
+ data?: Node["data"];
+};
+
+export type FlowValidationResponse = {
+ title: string;
+ status: "Pass" | "Fail" | "Warn" | "Not applicable";
+ message: string;
+};
+
+interface FlowValidateAndDiffResponse {
+ alteredNodes: AlteredNode[] | null;
+ message: string;
+ validationChecks?: FlowValidationResponse[];
+}
+
+const validateAndDiffFlow = async (
+ flowId: string,
+): Promise => {
+ const flattenedFlow = await dataMerged(flowId);
+ const mostRecent = await getMostRecentPublishedFlow(flowId);
+
+ const delta = jsondiffpatch.diff(mostRecent, flattenedFlow);
+ if (!delta)
+ return {
+ alteredNodes: null,
+ message: "No new changes to publish",
+ };
+
+ // Only get alteredNodes and do validationChecks if there have been changes
+ const alteredNodes = Object.keys(delta).map((key) => ({
+ id: key,
+ ...flattenedFlow[key],
+ }));
+
+ const validationChecks = [];
+ const sections = validateSections(flattenedFlow);
+ const inviteToPay = validateInviteToPay(flattenedFlow);
+ const fileTypes = validateFileTypes(flattenedFlow);
+ const projectTypes = validateProjectTypes(flattenedFlow);
+ validationChecks.push(sections, inviteToPay, fileTypes, projectTypes);
+
+ // Arrange list of validation checks in order of status: Fail, Warn, Pass, Not applicable
+ const failingChecks = validationChecks.filter((v) => v.status == "Fail");
+ const warningChecks = validationChecks.filter((v) => v.status === "Warn");
+ const passingChecks = validationChecks.filter((v) => v.status === "Pass");
+ const notApplicableChecks = validationChecks.filter(
+ (v) => v.status === "Not applicable",
+ );
+ const sortedValidationChecks = failingChecks
+ .concat(warningChecks)
+ .concat(passingChecks)
+ .concat(notApplicableChecks);
+
+ return {
+ alteredNodes,
+ message: "Changes queued to publish",
+ validationChecks: sortedValidationChecks,
+ };
+};
+
+export { validateAndDiffFlow };
diff --git a/api.planx.uk/modules/flows/validate/service/inviteToPay.ts b/api.planx.uk/modules/flows/validate/service/inviteToPay.ts
new file mode 100644
index 0000000000..61a57fe020
--- /dev/null
+++ b/api.planx.uk/modules/flows/validate/service/inviteToPay.ts
@@ -0,0 +1,88 @@
+import { ComponentType, FlowGraph } from "@opensystemslab/planx-core/types";
+
+import {
+ hasComponentType,
+ isComponentType,
+ numberOfComponentType,
+} from "../helpers";
+import { FlowValidationResponse } from "./index";
+
+const validateInviteToPay = (flowGraph: FlowGraph): FlowValidationResponse => {
+ if (inviteToPayEnabled(flowGraph)) {
+ if (numberOfComponentType(flowGraph, ComponentType.Pay) > 1) {
+ return {
+ title: "Invite to Pay",
+ status: "Fail",
+ message:
+ "When using Invite to Pay, your flow must have exactly ONE Pay",
+ };
+ }
+
+ if (!hasComponentType(flowGraph, ComponentType.Send)) {
+ return {
+ title: "Invite to Pay",
+ status: "Fail",
+ message: "When using Invite to Pay, your flow must have a Send",
+ };
+ }
+
+ if (numberOfComponentType(flowGraph, ComponentType.Send) > 1) {
+ return {
+ title: "Invite to Pay",
+ status: "Fail",
+ message:
+ "When using Invite to Pay, your flow must have exactly ONE Send. It can select many destinations",
+ };
+ }
+
+ if (!hasComponentType(flowGraph, ComponentType.FindProperty)) {
+ return {
+ title: "Invite to Pay",
+ status: "Fail",
+ message: "When using Invite to Pay, your flow must have a FindProperty",
+ };
+ }
+
+ if (
+ !hasComponentType(
+ flowGraph,
+ ComponentType.Checklist,
+ "proposal.projectType",
+ )
+ ) {
+ return {
+ title: "Invite to Pay",
+ status: "Fail",
+ message:
+ "When using Invite to Pay, your flow must have a Checklist that sets `proposal.projectType`",
+ };
+ }
+
+ return {
+ title: "Invite to Pay",
+ status: "Pass",
+ message: "Your flow has valid Invite to Pay",
+ };
+ }
+
+ return {
+ title: "Invite to Pay",
+ status: "Not applicable",
+ message: "Your flow is not using Invite to Pay",
+ };
+};
+
+const inviteToPayEnabled = (flowGraph: FlowGraph): boolean => {
+ const payNodes = Object.entries(flowGraph).filter((entry) =>
+ isComponentType(entry, ComponentType.Pay),
+ );
+ const payNodeStatuses = payNodes.map(
+ ([_nodeId, node]) => node?.data?.allowInviteToPay,
+ );
+ return (
+ payNodeStatuses.length > 0 &&
+ payNodeStatuses.every((status) => status === true)
+ );
+};
+
+export { validateInviteToPay };
diff --git a/api.planx.uk/modules/flows/validate/service/projectTypes.ts b/api.planx.uk/modules/flows/validate/service/projectTypes.ts
new file mode 100644
index 0000000000..2c65d71fb6
--- /dev/null
+++ b/api.planx.uk/modules/flows/validate/service/projectTypes.ts
@@ -0,0 +1,69 @@
+import { getValidSchemaValues } from "@opensystemslab/planx-core";
+import { ComponentType, FlowGraph } from "@opensystemslab/planx-core/types";
+import countBy from "lodash/countBy";
+
+import { isComponentType } from "../helpers";
+import { FlowValidationResponse } from "./index";
+
+const validateProjectTypes = (flowGraph: FlowGraph): FlowValidationResponse => {
+ // Get all passport values set by Answers of Checklists that set fn "proposal.projectType"
+ const projectTypeVals = getProjectTypeVals(flowGraph);
+ if (projectTypeVals.length < 1) {
+ return {
+ title: "Project types",
+ status: "Not applicable",
+ message:
+ 'Your flow is not using Checklists which set "proposal.projectType"',
+ };
+ }
+
+ // Get all project types supported by current release of ODP Schema & compare
+ const validProjectTypes = getValidSchemaValues("ProjectType");
+ const invalidProjectVals: string[] = [];
+ projectTypeVals.forEach((val) => {
+ if (!validProjectTypes?.includes(val)) {
+ invalidProjectVals.push(val);
+ }
+ });
+ if (invalidProjectVals.length > 0) {
+ // Get unique fns with count of occurances
+ const countInvalidProjectVals = countBy(invalidProjectVals);
+ const summarisedInvalidProjectVals: string[] = [];
+ Object.entries(countInvalidProjectVals).map(([k, v]: [string, number]) => {
+ summarisedInvalidProjectVals.push(`${k} (${v})`);
+ });
+ return {
+ title: "Project types",
+ status: "Warn",
+ message: `Your Checklists setting "proposal.projectType" include options that are not supported by the current release of the ODP Schema: ${summarisedInvalidProjectVals.join(", ")}`,
+ };
+ }
+
+ return {
+ title: "Project types",
+ status: "Pass",
+ message:
+ "Project types set via Checklists are all supported by the ODP Schema",
+ };
+};
+
+const getProjectTypeVals = (flowGraph: FlowGraph): string[] => {
+ const projectTypeChecklistNodes = Object.entries(flowGraph).filter(
+ (entry) =>
+ isComponentType(entry, ComponentType.Checklist) &&
+ entry[1].data?.fn === "proposal.projectType",
+ );
+
+ const answerVals: string[] = [];
+ projectTypeChecklistNodes.map(([_nodeId, node]) =>
+ node.edges?.map((edgeId) => {
+ if (typeof flowGraph[edgeId]?.data?.val === "string") {
+ answerVals.push(flowGraph[edgeId]?.data?.val);
+ }
+ }),
+ );
+
+ return answerVals;
+};
+
+export { validateProjectTypes };
diff --git a/api.planx.uk/modules/flows/validate/service/sections.ts b/api.planx.uk/modules/flows/validate/service/sections.ts
new file mode 100644
index 0000000000..a955ae11ae
--- /dev/null
+++ b/api.planx.uk/modules/flows/validate/service/sections.ts
@@ -0,0 +1,61 @@
+import { ComponentType, FlowGraph } from "@opensystemslab/planx-core/types";
+import intersection from "lodash/intersection";
+
+import { isComponentType } from "../helpers";
+import { FlowValidationResponse } from "./index";
+
+const validateSections = (flowGraph: FlowGraph): FlowValidationResponse => {
+ if (getSectionNodeIds(flowGraph)?.length > 0) {
+ if (!sectionIsInFirstPosition(flowGraph)) {
+ return {
+ title: "Sections",
+ status: "Fail",
+ message: "When using Sections, your flow must start with a Section",
+ };
+ }
+
+ if (!allSectionsOnRoot(flowGraph)) {
+ return {
+ title: "Sections",
+ status: "Fail",
+ message:
+ "Found Sections in one or more External Portals, but Sections are only allowed in main flow",
+ };
+ }
+
+ return {
+ title: "Sections",
+ status: "Pass",
+ message: "Your flow has valid Sections",
+ };
+ }
+
+ return {
+ title: "Sections",
+ status: "Not applicable",
+ message: "Your flow is not using Sections",
+ };
+};
+
+const getSectionNodeIds = (flowGraph: FlowGraph): string[] => {
+ const sectionNodes = Object.entries(flowGraph).filter((entry) =>
+ isComponentType(entry, ComponentType.Section),
+ );
+ return sectionNodes.map(([nodeId, _nodeData]) => nodeId);
+};
+
+const sectionIsInFirstPosition = (flowGraph: FlowGraph): boolean => {
+ const firstNodeId = flowGraph["_root"].edges[0];
+ return flowGraph[firstNodeId].type === ComponentType.Section;
+};
+
+const allSectionsOnRoot = (flowData: FlowGraph): boolean => {
+ const sectionTypeNodeIds = getSectionNodeIds(flowData);
+ const intersectingNodeIds = intersection(
+ flowData["_root"].edges,
+ sectionTypeNodeIds,
+ );
+ return intersectingNodeIds.length === sectionTypeNodeIds.length;
+};
+
+export { validateSections };
diff --git a/api.planx.uk/modules/flows/validate/validate.test.ts b/api.planx.uk/modules/flows/validate/validate.test.ts
index e3be178f10..1c2dfd09e4 100644
--- a/api.planx.uk/modules/flows/validate/validate.test.ts
+++ b/api.planx.uk/modules/flows/validate/validate.test.ts
@@ -107,12 +107,31 @@ describe("sections validation on diff", () => {
.set(auth)
.expect(200)
.then((res) => {
- expect(res.body).toEqual({
- alteredNodes: null,
- message: "Cannot publish an invalid flow",
- description:
- "Found Sections in one or more External Portals, but Sections are only allowed in main flow",
- });
+ expect(res.body.message).toEqual("Changes queued to publish");
+ expect(res.body.validationChecks).toEqual([
+ {
+ title: "Sections",
+ status: "Fail",
+ message:
+ "Found Sections in one or more External Portals, but Sections are only allowed in main flow",
+ },
+ {
+ title: "Invite to Pay",
+ status: "Not applicable",
+ message: "Your flow is not using Invite to Pay",
+ },
+ {
+ title: "File types",
+ status: "Not applicable",
+ message: "Your flow is not using FileUpload or UploadAndLabel",
+ },
+ {
+ title: "Project types",
+ status: "Not applicable",
+ message:
+ 'Your flow is not using Checklists which set "proposal.projectType"',
+ },
+ ]);
});
});
@@ -148,12 +167,30 @@ describe("sections validation on diff", () => {
.set(auth)
.expect(200)
.then((res) => {
- expect(res.body).toEqual({
- alteredNodes: null,
- message: "Cannot publish an invalid flow",
- description:
- "When using Sections, your flow must start with a Section",
- });
+ expect(res.body.message).toEqual("Changes queued to publish");
+ expect(res.body.validationChecks).toEqual([
+ {
+ title: "Sections",
+ status: "Fail",
+ message: "When using Sections, your flow must start with a Section",
+ },
+ {
+ title: "Invite to Pay",
+ status: "Not applicable",
+ message: "Your flow is not using Invite to Pay",
+ },
+ {
+ title: "File types",
+ status: "Not applicable",
+ message: "Your flow is not using FileUpload or UploadAndLabel",
+ },
+ {
+ title: "Project types",
+ status: "Not applicable",
+ message:
+ 'Your flow is not using Checklists which set "proposal.projectType"',
+ },
+ ]);
});
});
});
@@ -180,10 +217,30 @@ describe("invite to pay validation on diff", () => {
.set(auth)
.expect(200)
.then((res) => {
- expect(res.body.message).toEqual("Cannot publish an invalid flow");
- expect(res.body.description).toEqual(
- "When using Invite to Pay, your flow must have a Send",
- );
+ expect(res.body.message).toEqual("Changes queued to publish");
+ expect(res.body.validationChecks).toEqual([
+ {
+ title: "Invite to Pay",
+ status: "Fail",
+ message: "When using Invite to Pay, your flow must have a Send",
+ },
+ {
+ title: "Project types",
+ status: "Pass",
+ message:
+ "Project types set via Checklists are all supported by the ODP Schema",
+ },
+ {
+ title: "Sections",
+ status: "Not applicable",
+ message: "Your flow is not using Sections",
+ },
+ {
+ title: "File types",
+ status: "Not applicable",
+ message: "Your flow is not using FileUpload or UploadAndLabel",
+ },
+ ]);
});
});
@@ -219,10 +276,31 @@ describe("invite to pay validation on diff", () => {
.set(auth)
.expect(200)
.then((res) => {
- expect(res.body.message).toEqual("Cannot publish an invalid flow");
- expect(res.body.description).toEqual(
- "When using Invite to Pay, your flow must have exactly ONE Send. It can select many destinations",
- );
+ expect(res.body.message).toEqual("Changes queued to publish");
+ expect(res.body.validationChecks).toEqual([
+ {
+ title: "Invite to Pay",
+ status: "Fail",
+ message:
+ "When using Invite to Pay, your flow must have exactly ONE Send. It can select many destinations",
+ },
+ {
+ title: "Project types",
+ status: "Pass",
+ message:
+ "Project types set via Checklists are all supported by the ODP Schema",
+ },
+ {
+ title: "Sections",
+ status: "Not applicable",
+ message: "Your flow is not using Sections",
+ },
+ {
+ title: "File types",
+ status: "Not applicable",
+ message: "Your flow is not using FileUpload or UploadAndLabel",
+ },
+ ]);
});
});
@@ -254,10 +332,31 @@ describe("invite to pay validation on diff", () => {
.set(auth)
.expect(200)
.then((res) => {
- expect(res.body.message).toEqual("Cannot publish an invalid flow");
- expect(res.body.description).toEqual(
- "When using Invite to Pay, your flow must have a FindProperty",
- );
+ expect(res.body.message).toEqual("Changes queued to publish");
+ expect(res.body.validationChecks).toEqual([
+ {
+ title: "Invite to Pay",
+ status: "Fail",
+ message:
+ "When using Invite to Pay, your flow must have a FindProperty",
+ },
+ {
+ title: "Project types",
+ status: "Pass",
+ message:
+ "Project types set via Checklists are all supported by the ODP Schema",
+ },
+ {
+ title: "Sections",
+ status: "Not applicable",
+ message: "Your flow is not using Sections",
+ },
+ {
+ title: "File types",
+ status: "Not applicable",
+ message: "Your flow is not using FileUpload or UploadAndLabel",
+ },
+ ]);
});
});
@@ -291,10 +390,31 @@ describe("invite to pay validation on diff", () => {
.set(auth)
.expect(200)
.then((res) => {
- expect(res.body.message).toEqual("Cannot publish an invalid flow");
- expect(res.body.description).toEqual(
- "When using Invite to Pay, your flow must have exactly ONE Pay",
- );
+ expect(res.body.message).toEqual("Changes queued to publish");
+ expect(res.body.validationChecks).toEqual([
+ {
+ title: "Invite to Pay",
+ status: "Fail",
+ message:
+ "When using Invite to Pay, your flow must have exactly ONE Pay",
+ },
+ {
+ title: "Project types",
+ status: "Pass",
+ message:
+ "Project types set via Checklists are all supported by the ODP Schema",
+ },
+ {
+ title: "Sections",
+ status: "Not applicable",
+ message: "Your flow is not using Sections",
+ },
+ {
+ title: "File types",
+ status: "Not applicable",
+ message: "Your flow is not using FileUpload or UploadAndLabel",
+ },
+ ]);
});
});
@@ -330,10 +450,196 @@ describe("invite to pay validation on diff", () => {
.set(auth)
.expect(200)
.then((res) => {
- expect(res.body.message).toEqual("Cannot publish an invalid flow");
- expect(res.body.description).toEqual(
- "When using Invite to Pay, your flow must have a Checklist that sets the passport variable `proposal.projectType`",
- );
+ expect(res.body.message).toEqual("Changes queued to publish");
+ expect(res.body.validationChecks).toEqual([
+ {
+ title: "Invite to Pay",
+ status: "Fail",
+ message:
+ "When using Invite to Pay, your flow must have a Checklist that sets `proposal.projectType`",
+ },
+ {
+ title: "Sections",
+ status: "Not applicable",
+ message: "Your flow is not using Sections",
+ },
+ {
+ title: "File types",
+ status: "Not applicable",
+ message: "Your flow is not using FileUpload or UploadAndLabel",
+ },
+ {
+ title: "Project types",
+ status: "Not applicable",
+ message:
+ 'Your flow is not using Checklists which set "proposal.projectType"',
+ },
+ ]);
+ });
+ });
+});
+
+describe("ODP Schema file type validation on diff", () => {
+ it("warns if any file data fields aren't supported by the ODP Schema", async () => {
+ const alteredFlow = {
+ ...mockFlowData,
+ fileUpload: {
+ type: 140,
+ data: {
+ color: "#EFEFEF",
+ fn: "roofPlan.existing",
+ title: "Roof plans",
+ },
+ },
+ fileUploadAndLabel: {
+ type: 145,
+ data: {
+ title: "Upload and label",
+ fileTypes: [
+ {
+ name: "Site plans",
+ fn: "sitePlanTypo",
+ rule: {
+ condition: "AlwaysRequired",
+ },
+ },
+ {
+ name: "Heritage statement",
+ fn: "heritageStatement",
+ rule: {
+ condition: "AlwaysRequired",
+ },
+ },
+ ],
+ hideDropZone: false,
+ },
+ },
+ };
+
+ queryMock.mockQuery({
+ name: "GetFlowData",
+ matchOnVariables: false,
+ data: {
+ flow: {
+ data: alteredFlow,
+ slug: "altered-flow-name",
+ team_id: 1,
+ team: {
+ slug: "testing",
+ },
+ publishedFlows: [{ data: alteredFlow }],
+ },
+ },
+ });
+
+ await supertest(app)
+ .post("/flows/1/diff")
+ .set(auth)
+ .expect(200)
+ .then((res) => {
+ expect(res.body.message).toEqual("Changes queued to publish");
+ expect(res.body.validationChecks).toEqual([
+ {
+ title: "File types",
+ status: "Warn",
+ message:
+ "Your FileUpload or UploadAndLabel are setting data fields that are not supported by the current release of the ODP Schema: sitePlanTypo (1)",
+ },
+ {
+ title: "Sections",
+ status: "Pass",
+ message: "Your flow has valid Sections",
+ },
+ {
+ title: "Invite to Pay",
+ status: "Not applicable",
+ message: "Your flow is not using Invite to Pay",
+ },
+ {
+ title: "Project types",
+ status: "Not applicable",
+ message:
+ 'Your flow is not using Checklists which set "proposal.projectType"',
+ },
+ ]);
+ });
+ });
+
+ it("skips validation checks for UploadAndLabel components used in info-only mode with hidden dropzone", async () => {
+ const alteredFlow = {
+ ...mockFlowData,
+ fileUpload: {
+ type: 140,
+ data: {
+ color: "#EFEFEF",
+ fn: "roofPlan.existing",
+ title: "Roof plans",
+ },
+ },
+ fileUploadAndLabelInfoOnly: {
+ type: 145,
+ data: {
+ title: "Prepare these documents",
+ fileTypes: [
+ {
+ name: "Design and access statement",
+ fn: "designAndAccessTypo",
+ rule: {
+ condition: "AlwaysRequired",
+ },
+ },
+ ],
+ hideDropZone: true,
+ },
+ },
+ };
+
+ queryMock.mockQuery({
+ name: "GetFlowData",
+ matchOnVariables: false,
+ data: {
+ flow: {
+ data: alteredFlow,
+ slug: "altered-flow-name",
+ team_id: 1,
+ team: {
+ slug: "testing",
+ },
+ publishedFlows: [{ data: alteredFlow }],
+ },
+ },
+ });
+
+ await supertest(app)
+ .post("/flows/1/diff")
+ .set(auth)
+ .expect(200)
+ .then((res) => {
+ expect(res.body.message).toEqual("Changes queued to publish");
+ expect(res.body.validationChecks).toEqual([
+ {
+ title: "Sections",
+ status: "Pass",
+ message: "Your flow has valid Sections",
+ },
+ {
+ title: "File types",
+ status: "Pass",
+ message:
+ "Files collected via FileUpload or UploadAndLabel are all supported by the ODP Schema",
+ },
+ {
+ title: "Invite to Pay",
+ status: "Not applicable",
+ message: "Your flow is not using Invite to Pay",
+ },
+ {
+ title: "Project types",
+ status: "Not applicable",
+ message:
+ 'Your flow is not using Checklists which set "proposal.projectType"',
+ },
+ ]);
});
});
});
diff --git a/api.planx.uk/modules/gis/service/digitalLand.ts b/api.planx.uk/modules/gis/service/digitalLand.ts
index 6f8d968cef..9298eefd31 100644
--- a/api.planx.uk/modules/gis/service/digitalLand.ts
+++ b/api.planx.uk/modules/gis/service/digitalLand.ts
@@ -5,7 +5,7 @@ import type {
} from "@opensystemslab/planx-core/types";
import { gql } from "graphql-request";
import fetch from "isomorphic-fetch";
-import { addDesignatedVariable } from "./helpers";
+import { addDesignatedVariable, omitGeometry } from "./helpers";
import { baseSchema } from "./local_authorities/metadata/base";
import { $api } from "../../../client";
@@ -119,14 +119,14 @@ async function go(
);
// because there can be many digital land datasets per planx variable, check if this key is already in our result
if (key && Object.keys(formattedResult).includes(key)) {
- formattedResult[key]["data"]?.push(entity);
+ formattedResult[key]["data"]?.push(omitGeometry(entity));
} else {
if (key) {
formattedResult[key] = {
fn: key,
value: true,
text: baseSchema[key].pos,
- data: [entity],
+ data: [omitGeometry(entity)],
category: baseSchema[key].category,
};
}
diff --git a/api.planx.uk/modules/pay/service/inviteToPay/createPaymentSendEvents.test.ts b/api.planx.uk/modules/pay/service/inviteToPay/createPaymentSendEvents.test.ts
index 40569d86e6..2415f96bf6 100644
--- a/api.planx.uk/modules/pay/service/inviteToPay/createPaymentSendEvents.test.ts
+++ b/api.planx.uk/modules/pay/service/inviteToPay/createPaymentSendEvents.test.ts
@@ -34,6 +34,7 @@ describe("Create payment send events webhook", () => {
flow: {
id: "flow-123",
slug: "apply-for-something",
+ name: "Apply for Something",
},
},
},
diff --git a/api.planx.uk/modules/pay/service/inviteToPay/createPaymentSendEvents.ts b/api.planx.uk/modules/pay/service/inviteToPay/createPaymentSendEvents.ts
index d9020df1c9..2c67cd6027 100644
--- a/api.planx.uk/modules/pay/service/inviteToPay/createPaymentSendEvents.ts
+++ b/api.planx.uk/modules/pay/service/inviteToPay/createPaymentSendEvents.ts
@@ -1,4 +1,4 @@
-import { ComponentType } from "@opensystemslab/planx-core/types";
+import { ComponentType, Team } from "@opensystemslab/planx-core/types";
import { NextFunction, Request, Response } from "express";
import { gql } from "graphql-request";
import {
@@ -7,7 +7,7 @@ import {
} from "../../../../lib/hasura/metadata";
import { $api, $public } from "../../../../client";
import { getMostRecentPublishedFlow } from "../../../../helpers";
-import { Flow, Node, Team } from "../../../../types";
+import { Flow, Node } from "../../../../types";
enum Destination {
BOPS = "bops",
diff --git a/api.planx.uk/modules/pay/service/inviteToPay/sendConfirmationEmail.test.ts b/api.planx.uk/modules/pay/service/inviteToPay/sendConfirmationEmail.test.ts
index b564744cfb..6150f6b4a2 100644
--- a/api.planx.uk/modules/pay/service/inviteToPay/sendConfirmationEmail.test.ts
+++ b/api.planx.uk/modules/pay/service/inviteToPay/sendConfirmationEmail.test.ts
@@ -31,6 +31,7 @@ describe("sendAgentAndPayeeConfirmationEmail", () => {
email: agentEmail,
flow: {
slug: "some-flow",
+ name: "Some Flow",
team: {
notifyPersonalisation: {
emailReplyToId: "123",
@@ -57,36 +58,18 @@ describe("sendAgentAndPayeeConfirmationEmail", () => {
],
},
});
- queryMock.mockQuery({
- name: "LookupHumanReadableProjectType",
- variables: {
- rawList: [
- "alter.internal",
- "alter.openings.add.doors.rear",
- "alter.facades.paint",
- ],
- },
- data: {
- projectTypes: [
- { description: "internal alterations" },
- { description: "addition of doorways to the rear of the building" },
- { description: "painting of facades" },
- ],
- },
- });
const expectedConfig = {
personalisation: {
applicantName: "xyz",
payeeName: "payeeName",
address: "123 PLACE",
- projectType:
- "Internal alterations, addition of doorways to the rear of the building, and painting of facades",
+ projectType: "Paint the facade and changes to internal walls or layout",
emailReplyToId: "123",
helpEmail: "help@email.com",
helpOpeningHours: "9-5",
helpPhone: "123",
- serviceName: "Some flow",
+ serviceName: "Some Flow",
},
};
await sendAgentAndPayeeConfirmationEmail("mockSessionId");
diff --git a/api.planx.uk/modules/pay/service/inviteToPay/sendConfirmationEmail.ts b/api.planx.uk/modules/pay/service/inviteToPay/sendConfirmationEmail.ts
index fb69bad444..be197253be 100644
--- a/api.planx.uk/modules/pay/service/inviteToPay/sendConfirmationEmail.ts
+++ b/api.planx.uk/modules/pay/service/inviteToPay/sendConfirmationEmail.ts
@@ -1,14 +1,14 @@
-import { $public, $api } from "../../../../client";
-import { sendEmail } from "../../../../lib/notify";
+import { formatRawProjectTypes } from "@opensystemslab/planx-core";
import { gql } from "graphql-request";
-import { convertSlugToName } from "../../../saveAndReturn/service/utils";
+import { $api } from "../../../../client";
+import { sendEmail } from "../../../../lib/notify";
import type { AgentAndPayeeSubmissionNotifyConfig } from "../../../../types";
export async function sendAgentAndPayeeConfirmationEmail(sessionId: string) {
const { personalisation, applicantEmail, payeeEmail, projectTypes } =
await getDataForPayeeAndAgentEmails(sessionId);
const projectType = projectTypes.length
- ? await $public.formatRawProjectTypes(projectTypes)
+ ? formatRawProjectTypes(projectTypes)
: "Project type not submitted";
const config: AgentAndPayeeSubmissionNotifyConfig = {
personalisation: {
@@ -47,7 +47,12 @@ async function getDataForPayeeAndAgentEmails(
flow {
slug
team {
- notifyPersonalisation: notify_personalisation
+ notifyPersonalisation: team_settings {
+ helpEmail: help_email
+ helpPhone: help_phone
+ emailReplyToId: email_reply_to_id
+ helpOpeningHours: help_opening_hours
+ }
}
}
paymentRequests: payment_requests(
@@ -68,6 +73,7 @@ async function getDataForPayeeAndAgentEmails(
email: string;
flow: {
slug: string;
+ name: string;
team: {
notifyPersonalisation: {
emailReplyToId: string;
@@ -89,7 +95,7 @@ async function getDataForPayeeAndAgentEmails(
const data = response.lowcal_sessions[0];
const { emailReplyToId, helpEmail, helpOpeningHours, helpPhone } =
data.flow.team.notifyPersonalisation;
- const serviceName = convertSlugToName(data.flow.slug);
+ const serviceName = data.flow.name;
const applicantEmail = data.email;
const { payeeEmail, payeeName, address, projectTypes, applicantName } =
data.paymentRequests[0];
diff --git a/api.planx.uk/modules/pay/service/inviteToPay/sendPaymentEmail.test.ts b/api.planx.uk/modules/pay/service/inviteToPay/sendPaymentEmail.test.ts
index d836ff4c21..191dc6c522 100644
--- a/api.planx.uk/modules/pay/service/inviteToPay/sendPaymentEmail.test.ts
+++ b/api.planx.uk/modules/pay/service/inviteToPay/sendPaymentEmail.test.ts
@@ -6,11 +6,6 @@ import {
validatePaymentRequestNotFoundQueryMock,
validatePaymentRequestQueryMock,
} from "../../../../tests/mocks/inviteToPayMocks";
-import { CoreDomainClient } from "@opensystemslab/planx-core";
-
-jest
- .spyOn(CoreDomainClient.prototype, "formatRawProjectTypes")
- .mockResolvedValue("New office premises");
const TEST_PAYMENT_REQUEST_ID = "09655c28-3f34-4619-9385-cd57312acc44";
diff --git a/api.planx.uk/modules/pay/service/inviteToPay/sendPaymentEmail.ts b/api.planx.uk/modules/pay/service/inviteToPay/sendPaymentEmail.ts
index 7f0899a204..acb92aa972 100644
--- a/api.planx.uk/modules/pay/service/inviteToPay/sendPaymentEmail.ts
+++ b/api.planx.uk/modules/pay/service/inviteToPay/sendPaymentEmail.ts
@@ -1,23 +1,22 @@
+import { formatRawProjectTypes } from "@opensystemslab/planx-core";
+import type { PaymentRequest, Team } from "@opensystemslab/planx-core/types";
import { gql } from "graphql-request";
-import {
- calculateExpiryDate,
- convertSlugToName,
- getServiceLink,
-} from "../../../saveAndReturn/service/utils";
import {
Template,
getClientForTemplate,
sendEmail,
} from "../../../../lib/notify";
import { InviteToPayNotifyConfig } from "../../../../types";
-import { Team } from "../../../../types";
-import type { PaymentRequest } from "@opensystemslab/planx-core/types";
-import { $public } from "../../../../client";
+import {
+ calculateExpiryDate,
+ getServiceLink,
+} from "../../../saveAndReturn/service/utils";
interface SessionDetails {
email: string;
flow: {
slug: string;
+ name: string;
team: Team;
};
}
@@ -38,7 +37,7 @@ const sendSinglePaymentEmail = async ({
paymentRequestId,
template,
);
- const config = await getInviteToPayNotifyConfig(session, paymentRequest);
+ const config = getInviteToPayNotifyConfig(session, paymentRequest);
const recipient = template.includes("-agent")
? session.email
: paymentRequest.payeeEmail;
@@ -69,12 +68,22 @@ const validatePaymentRequest = async (
email
flow {
slug
+ name
team {
id
name
slug
domain
- notifyPersonalisation: notify_personalisation
+ settings: team_settings {
+ boundaryUrl: boundary_url
+ boundaryBBox: boundary_bbox
+ homepage
+ helpEmail: help_email
+ helpPhone: help_phone
+ helpOpeningHours: help_opening_hours
+ emailReplyToId: email_reply_to_id
+ boundaryBBox: boundary_bbox
+ }
}
}
}
@@ -104,31 +113,41 @@ const validatePaymentRequest = async (
}
};
-const getInviteToPayNotifyConfig = async (
+const getInviteToPayNotifyConfig = (
session: SessionDetails,
paymentRequest: PaymentRequest,
-): Promise => ({
- personalisation: {
- ...session.flow.team.notifyPersonalisation,
- sessionId: paymentRequest.sessionId,
- paymentRequestId: paymentRequest.id,
- payeeEmail: paymentRequest.payeeEmail,
- payeeName: paymentRequest.payeeName,
- agentName: paymentRequest.applicantName,
- address: (
- paymentRequest.sessionPreviewData?._address as Record<"title", string>
- ).title,
- fee: getFee(paymentRequest),
- projectType:
- (await $public.formatRawProjectTypes(
- paymentRequest.sessionPreviewData?.["proposal.projectType"] as string[],
- )) || "Project type not submitted",
- serviceName: convertSlugToName(session.flow.slug),
- serviceLink: getServiceLink(session.flow.team, session.flow.slug),
- expiryDate: calculateExpiryDate(paymentRequest.createdAt),
- paymentLink: getPaymentLink(session, paymentRequest),
- },
-});
+): InviteToPayNotifyConfig => {
+ const flow = session.flow;
+ const { settings } = session.flow.team;
+
+ return {
+ personalisation: {
+ helpEmail: settings.helpEmail,
+ helpPhone: settings.helpPhone,
+ emailReplyToId: settings.emailReplyToId,
+ helpOpeningHours: settings.helpOpeningHours,
+ sessionId: paymentRequest.sessionId,
+ paymentRequestId: paymentRequest.id,
+ payeeEmail: paymentRequest.payeeEmail,
+ payeeName: paymentRequest.payeeName,
+ agentName: paymentRequest.applicantName,
+ address: (
+ paymentRequest.sessionPreviewData?._address as Record<"title", string>
+ ).title,
+ fee: getFee(paymentRequest),
+ projectType:
+ formatRawProjectTypes(
+ paymentRequest.sessionPreviewData?.[
+ "proposal.projectType"
+ ] as string[],
+ ) || "Project type not submitted",
+ serviceName: session.flow.name,
+ serviceLink: getServiceLink(flow.team, flow.slug),
+ expiryDate: calculateExpiryDate(paymentRequest.createdAt),
+ paymentLink: getPaymentLink(session, paymentRequest),
+ },
+ };
+};
const getFee = (paymentRequest: PaymentRequest) => {
const toPounds = (pence: number) => pence / 100;
diff --git a/api.planx.uk/modules/saveAndReturn/service/resumeApplication.test.ts b/api.planx.uk/modules/saveAndReturn/service/resumeApplication.test.ts
index 4adf570b9e..c1464a59c1 100644
--- a/api.planx.uk/modules/saveAndReturn/service/resumeApplication.test.ts
+++ b/api.planx.uk/modules/saveAndReturn/service/resumeApplication.test.ts
@@ -1,4 +1,4 @@
-import { LowCalSession, Team } from "../../../types";
+import { LowCalSession } from "../../../types";
import supertest from "supertest";
import app from "../../../server";
import { queryMock } from "../../../tests/graphqlQueryMock";
@@ -8,29 +8,11 @@ import {
} from "../../../tests/mocks/saveAndReturnMocks";
import { buildContentFromSessions } from "./resumeApplication";
import { PartialDeep } from "type-fest";
+import { Team } from "@opensystemslab/planx-core/types";
const ENDPOINT = "/resume-application";
const TEST_EMAIL = "simulate-delivered@notifications.service.gov.uk";
-const mockFormatRawProjectTypes = jest
- .fn()
- .mockResolvedValue(["New office premises"]);
-
-jest.mock("@opensystemslab/planx-core", () => {
- const actualCoreDomainClient = jest.requireActual(
- "@opensystemslab/planx-core",
- ).CoreDomainClient;
-
- return {
- CoreDomainClient: class extends actualCoreDomainClient {
- constructor() {
- super();
- this.formatRawProjectTypes = () => mockFormatRawProjectTypes();
- }
- },
- };
-});
-
describe("buildContentFromSessions function", () => {
it("should return correctly formatted content for a single session", async () => {
const sessions: PartialDeep[] = [
@@ -49,13 +31,14 @@ describe("buildContentFromSessions function", () => {
created_at: "2026-05-01T01:02:03.865452+00:00",
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
},
},
];
- const result = `Service: Apply for a lawful development certificate
+ const result = `Service: Apply for a Lawful Development Certificate
Address: 1 High Street
- Project type: New office premises
+ Project type: New offices
Expiry Date: 29 May 2026
Link: example.com/team/apply-for-a-lawful-development-certificate/published?sessionId=123`;
expect(
@@ -83,6 +66,7 @@ describe("buildContentFromSessions function", () => {
created_at: "2026-05-01T01:02:03.865452+00:00",
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
},
},
{
@@ -100,6 +84,7 @@ describe("buildContentFromSessions function", () => {
created_at: "2026-05-01T01:02:03.865452+00:00",
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
},
},
{
@@ -117,20 +102,21 @@ describe("buildContentFromSessions function", () => {
created_at: "2026-05-01T01:02:03.865452+00:00",
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
},
},
];
- const result = `Service: Apply for a lawful development certificate
+ const result = `Service: Apply for a Lawful Development Certificate
Address: 1 High Street
- Project type: New office premises
+ Project type: New offices
Expiry Date: 29 May 2026
- Link: example.com/team/apply-for-a-lawful-development-certificate/published?sessionId=123\n\nService: Apply for a lawful development certificate
+ Link: example.com/team/apply-for-a-lawful-development-certificate/published?sessionId=123\n\nService: Apply for a Lawful Development Certificate
Address: 2 High Street
- Project type: New office premises
+ Project type: New offices
Expiry Date: 29 May 2026
- Link: example.com/team/apply-for-a-lawful-development-certificate/published?sessionId=456\n\nService: Apply for a lawful development certificate
+ Link: example.com/team/apply-for-a-lawful-development-certificate/published?sessionId=456\n\nService: Apply for a Lawful Development Certificate
Address: 3 High Street
- Project type: New office premises
+ Project type: New offices
Expiry Date: 29 May 2026
Link: example.com/team/apply-for-a-lawful-development-certificate/published?sessionId=789`;
expect(
@@ -158,6 +144,7 @@ describe("buildContentFromSessions function", () => {
created_at: "2026-05-01T01:02:03.865452+00:00",
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
},
},
{
@@ -175,12 +162,13 @@ describe("buildContentFromSessions function", () => {
created_at: "2022-05-01T01:02:03.865452+00:00",
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
},
},
];
- const result = `Service: Apply for a lawful development certificate
+ const result = `Service: Apply for a Lawful Development Certificate
Address: 1 High Street
- Project type: New office premises
+ Project type: New offices
Expiry Date: 29 May 2026
Link: example.com/team/apply-for-a-lawful-development-certificate/published?sessionId=123`;
expect(
@@ -206,13 +194,14 @@ describe("buildContentFromSessions function", () => {
created_at: "2026-05-01T01:02:03.865452+00:00",
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
},
},
];
- const result = `Service: Apply for a lawful development certificate
+ const result = `Service: Apply for a Lawful Development Certificate
Address: Address not submitted
- Project type: New office premises
+ Project type: New offices
Expiry Date: 29 May 2026
Link: example.com/team/apply-for-a-lawful-development-certificate/published?sessionId=123`;
expect(
@@ -224,7 +213,6 @@ describe("buildContentFromSessions function", () => {
});
it("should handle an empty project type field", async () => {
- mockFormatRawProjectTypes.mockResolvedValueOnce("");
const sessions: PartialDeep[] = [
{
data: {
@@ -240,11 +228,12 @@ describe("buildContentFromSessions function", () => {
created_at: "2026-05-01T01:02:03.865452+00:00",
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
},
},
];
- const result = `Service: Apply for a lawful development certificate
+ const result = `Service: Apply for a Lawful Development Certificate
Address: 1 High Street
Project type: Project type not submitted
Expiry Date: 29 May 2026
diff --git a/api.planx.uk/modules/saveAndReturn/service/resumeApplication.ts b/api.planx.uk/modules/saveAndReturn/service/resumeApplication.ts
index 696db69174..3c33c34e09 100644
--- a/api.planx.uk/modules/saveAndReturn/service/resumeApplication.ts
+++ b/api.planx.uk/modules/saveAndReturn/service/resumeApplication.ts
@@ -1,15 +1,12 @@
-import type { SiteAddress } from "@opensystemslab/planx-core/types";
+import { formatRawProjectTypes } from "@opensystemslab/planx-core";
+import type { SiteAddress, Team } from "@opensystemslab/planx-core/types";
import { differenceInDays } from "date-fns";
import { gql } from "graphql-request";
-import { $api, $public } from "../../../client";
+
+import { $api } from "../../../client";
import { sendEmail } from "../../../lib/notify";
-import { LowCalSession, Team } from "../../../types";
-import {
- DAYS_UNTIL_EXPIRY,
- calculateExpiryDate,
- convertSlugToName,
- getResumeLink,
-} from "./utils";
+import { LowCalSession } from "../../../types";
+import { DAYS_UNTIL_EXPIRY, calculateExpiryDate, getResumeLink } from "./utils";
/**
* Send a "Resume" email to an applicant which list all open applications for a given council (team)
@@ -22,7 +19,7 @@ const resumeApplication = async (teamSlug: string, email: string) => {
const config = {
personalisation: await getPersonalisation(sessions, team),
reference: null,
- emailReplyToId: team.notifyPersonalisation.emailReplyToId,
+ emailReplyToId: team.settings.emailReplyToId,
};
const response = await sendEmail("resume", email, config);
return response;
@@ -69,7 +66,16 @@ const validateRequest = async (
teams(where: { slug: { _eq: $teamSlug } }) {
slug
name
- notifyPersonalisation: notify_personalisation
+ settings: team_settings {
+ boundaryUrl: boundary_url
+ boundaryBBox: boundary_bbox
+ homepage
+ helpEmail: help_email
+ helpPhone: help_phone
+ helpOpeningHours: help_opening_hours
+ emailReplyToId: email_reply_to_id
+ boundaryBBox: boundary_bbox
+ }
domain
}
}
@@ -98,7 +104,10 @@ const getPersonalisation = async (sessions: LowCalSession[], team: Team) => {
return {
teamName: team.name,
content: await buildContentFromSessions(sessions, team),
- ...team.notifyPersonalisation,
+ helpEmail: team.settings.helpEmail,
+ helpPhone: team.settings.helpPhone,
+ helpOpeningHours: team.settings.helpOpeningHours,
+ emailReplyToId: team.settings.emailReplyToId,
};
};
@@ -110,14 +119,15 @@ const buildContentFromSessions = async (
sessions: LowCalSession[],
team: Team,
): Promise => {
- const contentBuilder = async (session: LowCalSession) => {
- const service = convertSlugToName(session.flow.slug);
+ const contentBuilder = (session: LowCalSession) => {
const address: SiteAddress | undefined =
session.data?.passport?.data?._address;
const addressLine = address?.single_line_address || address?.title;
- const projectType = await $public.formatRawProjectTypes(
- session.data?.passport?.data?.["proposal.projectType"],
- );
+ const projectType = session.data?.passport?.data?.["proposal.projectType"]
+ ? formatRawProjectTypes(
+ session.data?.passport?.data?.["proposal.projectType"],
+ )
+ : "Project type not submitted";
const resumeLink = getResumeLink(session, team, session.flow.slug);
const expiryDate = calculateExpiryDate(session.created_at);
@@ -126,7 +136,7 @@ const buildContentFromSessions = async (
const sessionAge = differenceInDays(today, new Date(session.created_at));
if (sessionAge < DAYS_UNTIL_EXPIRY)
- return `Service: ${service}
+ return `Service: ${session.flow.name}
Address: ${addressLine || "Address not submitted"}
Project type: ${projectType || "Project type not submitted"}
Expiry Date: ${expiryDate}
diff --git a/api.planx.uk/modules/saveAndReturn/service/utils.test.ts b/api.planx.uk/modules/saveAndReturn/service/utils.test.ts
index 4e8b7b21a4..6cf33d0649 100644
--- a/api.planx.uk/modules/saveAndReturn/service/utils.test.ts
+++ b/api.planx.uk/modules/saveAndReturn/service/utils.test.ts
@@ -1,25 +1,12 @@
+import { Team } from "@opensystemslab/planx-core/types";
import { queryMock } from "../../../tests/graphqlQueryMock";
-import { LowCalSession, LowCalSessionData, Team } from "../../../types";
+import { LowCalSession, LowCalSessionData } from "../../../types";
import {
- convertSlugToName,
getResumeLink,
getSessionDetails,
setupEmailEventTriggers,
} from "./utils";
-describe("convertSlugToName util function", () => {
- it("should return the correct value", () => {
- const testData = [
- ["open-systems-lab", "Open systems lab"],
- ["lambeth", "Lambeth"],
- ];
-
- testData.forEach(([slug, name]) => {
- expect(convertSlugToName(slug)).toEqual(name);
- });
- });
-});
-
describe("getResumeLink util function", () => {
it("should return the correct value for a custom domain", () => {
const session = {
diff --git a/api.planx.uk/modules/saveAndReturn/service/utils.ts b/api.planx.uk/modules/saveAndReturn/service/utils.ts
index 17da363f69..492cacf10e 100644
--- a/api.planx.uk/modules/saveAndReturn/service/utils.ts
+++ b/api.planx.uk/modules/saveAndReturn/service/utils.ts
@@ -1,20 +1,15 @@
-import { SiteAddress } from "@opensystemslab/planx-core/types";
-import { format, addDays } from "date-fns";
+import { formatRawProjectTypes } from "@opensystemslab/planx-core";
+import { SiteAddress, Team } from "@opensystemslab/planx-core/types";
+import { addDays, format } from "date-fns";
import { gql } from "graphql-request";
-import { LowCalSession, Team } from "../../../types";
+
+import { $api } from "../../../client";
import { Template, getClientForTemplate, sendEmail } from "../../../lib/notify";
-import { $api, $public } from "../../../client";
+import { LowCalSession } from "../../../types";
const DAYS_UNTIL_EXPIRY = 28;
const REMINDER_DAYS_FROM_EXPIRY = [7, 1];
-/**
- * Converts a flow's slug to a pretty name
- * XXX: This relies on pretty names not having dashes in them, which may not always be true (e.g. Na h-Eileanan Siar, Stoke-on-Trent)
- */
-const convertSlugToName = (slug: string): string =>
- slug[0].toUpperCase() + slug.substring(1).replaceAll("-", " ");
-
/**
* Build the magic link which will be sent to users via email to continue their application
*/
@@ -61,15 +56,12 @@ const sendSingleApplicationEmail = async ({
sessionId: string;
}) => {
try {
- const { flowSlug, team, session } = await validateSingleSessionRequest(
- email,
- sessionId,
- template,
- );
+ const { flowSlug, flowName, team, session } =
+ await validateSingleSessionRequest(email, sessionId, template);
const config = {
- personalisation: getPersonalisation(session, flowSlug, team),
+ personalisation: getPersonalisation(session, flowSlug, flowName, team),
reference: null,
- emailReplyToId: team.notifyPersonalisation.emailReplyToId,
+ emailReplyToId: team.settings.emailReplyToId,
};
const firstSave = !session.hasUserSaved;
if (firstSave && !session.submittedAt)
@@ -103,10 +95,20 @@ const validateSingleSessionRequest = async (
has_user_saved
flow {
slug
+ name
team {
name
slug
- notifyPersonalisation: notify_personalisation
+ settings: team_settings {
+ boundaryUrl: boundary_url
+ boundaryBBox: boundary_bbox
+ homepage
+ helpEmail: help_email
+ helpPhone: help_phone
+ helpOpeningHours: help_opening_hours
+ emailReplyToId: email_reply_to_id
+ boundaryBBox: boundary_bbox
+ }
domain
}
}
@@ -127,8 +129,9 @@ const validateSingleSessionRequest = async (
return {
flowSlug: session.flow.slug,
+ flowName: session.flow.name,
team: session.flow.team,
- session: await getSessionDetails(session),
+ session: getSessionDetails(session),
};
} catch (error) {
throw Error(`Unable to validate request. ${(error as Error).message}`);
@@ -147,14 +150,11 @@ interface SessionDetails {
/**
* Parse session details into an object which will be read by email template
*/
-export const getSessionDetails = async (
- session: LowCalSession,
-): Promise => {
+export const getSessionDetails = (session: LowCalSession): SessionDetails => {
const passportProtectTypes =
session.data.passport?.data?.["proposal.projectType"];
const projectTypes =
- passportProtectTypes &&
- (await $public.formatRawProjectTypes(passportProtectTypes));
+ passportProtectTypes && formatRawProjectTypes(passportProtectTypes);
const address: SiteAddress | undefined =
session.data?.passport?.data?._address;
const addressLine = address?.single_line_address || address?.title;
@@ -175,15 +175,19 @@ export const getSessionDetails = async (
const getPersonalisation = (
session: SessionDetails,
flowSlug: string,
+ flowName: string,
team: Team,
) => {
return {
resumeLink: getResumeLink(session, team, flowSlug),
serviceLink: getServiceLink(team, flowSlug),
- serviceName: convertSlugToName(flowSlug),
+ serviceName: flowName,
teamName: team.name,
sessionId: session.id,
- ...team.notifyPersonalisation,
+ helpEmail: team.settings.helpEmail,
+ helpPhone: team.settings.helpPhone,
+ helpOpeningHours: team.settings.helpOpeningHours,
+ emailReplyToId: team.settings.emailReplyToId,
...session,
};
};
@@ -275,13 +279,12 @@ export const setupEmailEventTriggers = async (sessionId: string) => {
};
export {
- getSaveAndReturnPublicHeaders,
- convertSlugToName,
- getResumeLink,
- sendSingleApplicationEmail,
- markSessionAsSubmitted,
DAYS_UNTIL_EXPIRY,
REMINDER_DAYS_FROM_EXPIRY,
calculateExpiryDate,
+ getResumeLink,
+ getSaveAndReturnPublicHeaders,
+ markSessionAsSubmitted,
+ sendSingleApplicationEmail,
softDeleteSession,
};
diff --git a/api.planx.uk/modules/send/createSendEvents/controller.ts b/api.planx.uk/modules/send/createSendEvents/controller.ts
index f0ea313c39..9cfd7c892f 100644
--- a/api.planx.uk/modules/send/createSendEvents/controller.ts
+++ b/api.planx.uk/modules/send/createSendEvents/controller.ts
@@ -10,7 +10,7 @@ const createSendEvents: CreateSendEventsController = async (
res,
next,
) => {
- const { email, uniform, bops, s3 } = res.locals.parsedReq.body;
+ const { email, uniform, bops, s3, idox } = res.locals.parsedReq.body;
const { sessionId } = res.locals.parsedReq.params;
try {
@@ -47,6 +47,16 @@ const createSendEvents: CreateSendEventsController = async (
combinedResponse["uniform"] = uniformEvent;
}
+ if (idox) {
+ const idoxEvent = await createScheduledEvent({
+ webhook: `{{HASURA_PLANX_API_URL}}/idox/${idox.localAuthority}`,
+ schedule_at: new Date(now.getTime() + 60 * 1000),
+ payload: idox.body,
+ comment: `idox_nexus_submission_${sessionId}`,
+ });
+ combinedResponse["idox"] = idoxEvent;
+ }
+
if (s3) {
const s3Event = await createScheduledEvent({
webhook: `{{HASURA_PLANX_API_URL}}/upload-submission/${s3.localAuthority}`,
diff --git a/api.planx.uk/modules/send/createSendEvents/types.ts b/api.planx.uk/modules/send/createSendEvents/types.ts
index 98b51bdf13..e5151dadb8 100644
--- a/api.planx.uk/modules/send/createSendEvents/types.ts
+++ b/api.planx.uk/modules/send/createSendEvents/types.ts
@@ -15,6 +15,7 @@ export const combinedEventsPayloadSchema = z.object({
bops: eventSchema.optional(),
uniform: eventSchema.optional(),
s3: eventSchema.optional(),
+ idox: eventSchema.optional(),
}),
params: z.object({
sessionId: z.string().uuid(),
diff --git a/api.planx.uk/modules/send/email/index.test.ts b/api.planx.uk/modules/send/email/index.test.ts
index a50aefe3c0..c0b2cae2f1 100644
--- a/api.planx.uk/modules/send/email/index.test.ts
+++ b/api.planx.uk/modules/send/email/index.test.ts
@@ -49,8 +49,8 @@ describe(`sending an application by email to a planning office`, () => {
data: {
teams: [
{
- sendToEmail: "planners@southwark.gov.uk",
- notifyPersonalisation: { emailReplyToId: "abc123" },
+ sendToEmail: "planning.office.example@council.gov.uk",
+ settings: { emailReplyToId: "abc123" },
},
],
},
@@ -72,7 +72,7 @@ describe(`sending an application by email to a planning office`, () => {
data: {
session: {
email: "simulate-delivered@notifications.service.gov.uk",
- flow: { slug: "test-flow" },
+ flow: { slug: "test-flow", name: "Test Flow" },
},
},
variables: { id: "123" },
@@ -96,7 +96,7 @@ describe(`sending an application by email to a planning office`, () => {
variables: {
sessionId: "123",
teamSlug: "southwark",
- recipient: "planning.office.example@southwark.gov.uk",
+ recipient: "planning.office.example@council.gov.uk",
request: {
personalisation: {
serviceName: "Apply for something",
@@ -119,7 +119,7 @@ describe(`sending an application by email to a planning office`, () => {
.then((res) => {
expect(res.body).toEqual({
message: `Successfully sent to email`,
- inbox: "planners@southwark.gov.uk",
+ inbox: "planning.office.example@council.gov.uk",
govuk_notify_template: "Submit",
});
});
@@ -153,7 +153,7 @@ describe(`sending an application by email to a planning office`, () => {
teams: [
{
sendToEmail: null,
- notifyPersonalisation: { emailReplyToId: "abc123" },
+ settings: { emailReplyToId: "abc123" },
},
],
},
@@ -200,7 +200,7 @@ describe(`downloading application data received by email`, () => {
name: "GetTeamEmailSettings",
matchOnVariables: false,
data: {
- teams: [{ sendToEmail: "planners@southwark.gov.uk" }],
+ teams: [{ sendToEmail: "planning.office.example@council.gov.uk" }],
},
variables: { slug: "southwark" },
});
@@ -229,7 +229,7 @@ describe(`downloading application data received by email`, () => {
it("errors if email query param does not match the stored database value for this team", async () => {
await supertest(app)
.get(
- "/download-application-files/123?email=wrong@southwark.gov.uk&localAuthority=southwark",
+ "/download-application-files/123?email=wrong@council.gov.uk&localAuthority=southwark",
)
.expect(403)
.then((res) => {
@@ -251,7 +251,7 @@ describe(`downloading application data received by email`, () => {
await supertest(app)
.get(
- "/download-application-files/456?email=planners@southwark.gov.uk&localAuthority=southwark",
+ "/download-application-files/456?email=planning.office.example@council.gov.uk&localAuthority=southwark",
)
.expect(400)
.then((res) => {
@@ -264,7 +264,7 @@ describe(`downloading application data received by email`, () => {
it("calls addTemplateFilesToZip()", async () => {
await supertest(app)
.get(
- "/download-application-files/123?email=planners@southwark.gov.uk&localAuthority=southwark",
+ "/download-application-files/123?email=planning.office.example@council.gov.uk&localAuthority=southwark",
)
.expect(200)
.then((_res) => {
diff --git a/api.planx.uk/modules/send/email/index.ts b/api.planx.uk/modules/send/email/index.ts
index 3794eee09f..13f1066bd4 100644
--- a/api.planx.uk/modules/send/email/index.ts
+++ b/api.planx.uk/modules/send/email/index.ts
@@ -40,7 +40,7 @@ export async function sendToEmail(
// Get the applicant email and flow slug associated with the session
const { email, flow } = await getSessionEmailDetailsById(payload.sessionId);
- const flowName = capitalize(flow?.slug?.replaceAll("-", " "));
+ const flowName = flow.name;
// Prepare email template
const config: EmailSubmissionNotifyConfig = {
diff --git a/api.planx.uk/modules/send/email/service.ts b/api.planx.uk/modules/send/email/service.ts
index 70c4cf3131..7cb7e0e606 100644
--- a/api.planx.uk/modules/send/email/service.ts
+++ b/api.planx.uk/modules/send/email/service.ts
@@ -17,7 +17,12 @@ export async function getTeamEmailSettings(localAuthority: string) {
query GetTeamEmailSettings($slug: String) {
teams(where: { slug: { _eq: $slug } }) {
sendToEmail: submission_email
- notifyPersonalisation: notify_personalisation
+ notifyPersonalisation: team_settings {
+ helpEmail: help_email
+ helpPhone: help_phone
+ emailReplyToId: email_reply_to_id
+ helpOpeningHours: help_opening_hours
+ }
}
}
`,
@@ -55,6 +60,7 @@ interface GetSessionEmailDetailsById {
email: string;
flow: {
slug: string;
+ name: string;
};
} | null;
}
@@ -67,6 +73,7 @@ export async function getSessionEmailDetailsById(sessionId: string) {
email
flow {
slug
+ name
}
}
}
diff --git a/api.planx.uk/modules/send/idox/nexus.test.ts b/api.planx.uk/modules/send/idox/nexus.test.ts
new file mode 100644
index 0000000000..e8e2bf793e
--- /dev/null
+++ b/api.planx.uk/modules/send/idox/nexus.test.ts
@@ -0,0 +1,24 @@
+import supertest from "supertest";
+import app from "../../../server";
+
+describe(`sending an application to Idox Nexus`, () => {
+ it("fails without authorization header", async () => {
+ await supertest(app)
+ .post("/idox/southwark")
+ .send({ payload: { sessionId: "123" } })
+ .expect(401);
+ });
+
+ it("errors if the payload body does not include a sessionId", async () => {
+ await supertest(app)
+ .post("/idox/southwark")
+ .set({ Authorization: process.env.HASURA_PLANX_API_KEY! })
+ .send({ payload: { somethingElse: "123" } })
+ .expect(400)
+ .then((res) => {
+ expect(res.body).toEqual({
+ error: "Missing application data to send to Idox Nexus",
+ });
+ });
+ });
+});
diff --git a/api.planx.uk/modules/send/idox/nexus.ts b/api.planx.uk/modules/send/idox/nexus.ts
new file mode 100644
index 0000000000..4adb6ad97f
--- /dev/null
+++ b/api.planx.uk/modules/send/idox/nexus.ts
@@ -0,0 +1,408 @@
+import axios, { AxiosRequestConfig, isAxiosError } from "axios";
+import { NextFunction, Request, Response } from "express";
+import FormData from "form-data";
+import fs from "fs";
+import { gql } from "graphql-request";
+import jwt from "jsonwebtoken";
+import { Buffer } from "node:buffer";
+import { $api } from "../../../client";
+import { markSessionAsSubmitted } from "../../saveAndReturn/service/utils";
+import { buildSubmissionExportZip } from "../utils/exportZip";
+
+interface UniformClient {
+ clientId: string;
+ clientSecret: string;
+}
+
+interface UniformSubmissionResponse {
+ submissionStatus?: string;
+ canDownload?: boolean;
+ submissionId?: string;
+}
+
+interface RawUniformAuthResponse {
+ access_token: string;
+}
+
+interface UniformAuthResponse {
+ token: string;
+ organisation: string;
+ organisationId: string;
+}
+
+interface UniformApplication {
+ id: string;
+ idox_submission_id: string;
+ submission_reference: string;
+ destination: string;
+ response: UniformSubmissionResponse;
+ created_at: string;
+}
+
+interface SendToUniformPayload {
+ sessionId: string;
+}
+
+export async function sendToIdoxNexus(
+ req: Request,
+ res: Response,
+ next: NextFunction,
+) {
+ /**
+ * Submits application data to Uniform
+ *
+ * first, create a zip folder containing an XML (Idox's schema), CSV (our format), and any user-uploaded files
+ * then, make requests to Uniform's "Submission API" to authenticate, create a submission, and attach the zip to the submission
+ * finally, insert a record into uniform_applications for future auditing
+ */
+ req.setTimeout(120 * 1000); // Temporary bump to address submission timeouts
+
+ // `/uniform/:localAuthority` is only called via Hasura's scheduled event webhook now, so body is wrapped in a "payload" key
+ const payload: SendToUniformPayload = req.body.payload;
+ if (!payload?.sessionId) {
+ return next({
+ status: 400,
+ message: "Missing application data to send to Idox Nexus",
+ });
+ }
+
+ // localAuthority is only parsed for audit record, not client-specific
+ const localAuthority = req.params.localAuthority;
+ const uniformClient = getUniformClient();
+
+ // confirm that this session has not already been successfully submitted before proceeding
+ const submittedApp = await checkUniformAuditTable(payload?.sessionId);
+ const isAlreadySubmitted =
+ submittedApp?.submissionStatus === "PENDING" && submittedApp?.canDownload;
+ if (isAlreadySubmitted) {
+ return res.status(200).send({
+ sessionId: payload?.sessionId,
+ idoxSubmissionId: submittedApp?.submissionId,
+ message: `Skipping send, already successfully submitted`,
+ });
+ }
+
+ try {
+ // Request 1/4 - Authenticate
+ const { token, organisation, organisationId } =
+ await authenticate(uniformClient);
+
+ // 2/4 - Create a submission
+ const idoxSubmissionId = await createSubmission(
+ token,
+ organisation,
+ organisationId,
+ payload.sessionId,
+ );
+
+ // 3/4 - Create & attach the zip
+ const zip = await buildSubmissionExportZip({
+ sessionId: payload.sessionId,
+ onlyDigitalPlanningJSON: true,
+ });
+
+ const attachmentAdded = await attachArchive(
+ token,
+ idoxSubmissionId,
+ zip.filename,
+ );
+
+ // clean-up zip file
+ zip.remove();
+
+ // 4/4 - Get submission details and create audit record
+ const submissionDetails = await retrieveSubmission(token, idoxSubmissionId);
+
+ const applicationAuditRecord = await createUniformApplicationAuditRecord({
+ idoxSubmissionId,
+ submissionDetails,
+ payload,
+ localAuthority,
+ });
+
+ // Mark session as submitted so that reminder and expiry emails are not triggered
+ markSessionAsSubmitted(payload?.sessionId);
+
+ return res.status(200).send({
+ message: `Successfully created an Idox Nexus submission`,
+ zipAttached: attachmentAdded,
+ application: applicationAuditRecord,
+ });
+ } catch (error) {
+ const errorMessage = isAxiosError(error)
+ ? JSON.stringify(error.response?.data)
+ : (error as Error).message;
+ return next({
+ error,
+ message: `Failed to send to Idox Nexus (${payload.sessionId}): ${errorMessage}`,
+ });
+ }
+}
+
+/**
+ * Query the Uniform audit table to see if we already have an application for this session
+ */
+async function checkUniformAuditTable(
+ sessionId: string,
+): Promise {
+ const application: Record<"uniform_applications", UniformApplication[]> =
+ await $api.client.request(
+ gql`
+ query FindApplication($submission_reference: String = "") {
+ uniform_applications(
+ where: { submission_reference: { _eq: $submission_reference } }
+ order_by: { created_at: desc }
+ ) {
+ response
+ }
+ }
+ `,
+ {
+ submission_reference: sessionId,
+ },
+ );
+
+ return application?.uniform_applications[0]?.response;
+}
+
+/**
+ * Logs in to the Idox Submission API using a username/password
+ * and returns an access token
+ */
+async function authenticate({
+ clientId,
+ clientSecret,
+}: UniformClient): Promise {
+ const authString = Buffer.from(`${clientId}:${clientSecret}`).toString(
+ "base64",
+ );
+
+ const authConfig: AxiosRequestConfig = {
+ method: "POST",
+ url: process.env.UNIFORM_TOKEN_URL!,
+ headers: {
+ Authorization: `Basic ${authString}`,
+ "Content-type": "application/x-www-form-urlencoded",
+ },
+ data: new URLSearchParams({
+ client_id: clientId,
+ client_secret: clientSecret,
+ grant_type: "client_credentials",
+ }),
+ };
+
+ const response = await axios.request(authConfig);
+
+ if (!response.data.access_token) {
+ throw Error("Failed to authenticate to Uniform - no access token returned");
+ }
+
+ // Decode access_token to get "organisation-name" & "organisation-id"
+ const decodedAccessToken = jwt.decode(response.data.access_token) as any;
+ const organisation = decodedAccessToken?.["organisation-name"];
+ const organisationId = decodedAccessToken?.["organisation-id"];
+
+ if (!organisation || !organisationId) {
+ throw Error(
+ "Failed to authenticate to Uniform - failed to decode organisation details from access_token",
+ );
+ }
+
+ const uniformAuthResponse: UniformAuthResponse = {
+ token: response.data.access_token,
+ organisation: organisation,
+ organisationId: organisationId,
+ };
+
+ return uniformAuthResponse;
+}
+
+/**
+ * Creates a submission (submissionReference is unique value provided by RIPA & must match XML )
+ * and returns a submissionId parsed from the resource link
+ */
+async function createSubmission(
+ token: string,
+ organisation: string,
+ organisationId: string,
+ sessionId = "TEST",
+): Promise {
+ const createSubmissionEndpoint = `${process.env
+ .UNIFORM_SUBMISSION_URL!}/secure/submission`;
+
+ const isStaging = ["mock-server", "staging"].some((hostname) =>
+ createSubmissionEndpoint.includes(hostname),
+ );
+
+ const createSubmissionConfig: AxiosRequestConfig = {
+ url: createSubmissionEndpoint,
+ method: "POST",
+ headers: {
+ Authorization: `Bearer ${token}`,
+ "Content-type": "application/json",
+ },
+ data: JSON.stringify({
+ entity: "dc",
+ module: "dc",
+ organisation: organisation,
+ organisationId: organisationId,
+ submissionReference: sessionId,
+ description: isStaging
+ ? "Staging submission from PlanX"
+ : "Production submission from PlanX",
+ submissionProcessorType: "API",
+ }),
+ };
+
+ const response = await axios.request(createSubmissionConfig);
+ // successful submission returns 201 Created without body
+ if (response.status !== 201)
+ throw Error("Failed to authenticate to Idox Nexus");
+
+ // parse & return the submissionId
+ const resourceLink = response.headers.location;
+ const submissionId = resourceLink.split("/").pop();
+ if (!submissionId)
+ throw Error("Authenticated to Idox Nexus, but failed to create submission");
+
+ return submissionId;
+}
+
+/**
+ * Uploads and attaches a zip folder to an existing submission
+ */
+async function attachArchive(
+ token: string,
+ submissionId: string,
+ zipPath: string,
+): Promise {
+ if (!fs.existsSync(zipPath)) {
+ console.log(
+ `Zip does not exist, cannot attach to idox_submission_id ${submissionId}`,
+ );
+ return false;
+ }
+
+ const attachArchiveEndpoint = `${process.env
+ .UNIFORM_SUBMISSION_URL!}/secure/submission/${submissionId}/archive`;
+
+ const formData = new FormData();
+ formData.append("file", fs.createReadStream(zipPath));
+
+ const attachArchiveConfig: AxiosRequestConfig = {
+ url: attachArchiveEndpoint,
+ method: "POST",
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ data: formData,
+ // Restrict to 1GB
+ maxBodyLength: 1e9,
+ maxContentLength: 1e9,
+ };
+
+ const response = await axios.request(attachArchiveConfig);
+ // successful upload returns 204 No Content without body
+ const isSuccess = response.status === 204;
+
+ // Temp additional logging to debug failures
+ console.log("*** Uniform attachArchive response ***");
+ console.log({ status: response.status });
+ console.log(JSON.stringify(response.data, null, 2));
+ console.log("******");
+
+ return isSuccess;
+}
+
+/**
+ * Gets details about an existing submission to store for auditing purposes
+ * since neither createSubmission nor attachArchive requests return a meaningful response body
+ */
+async function retrieveSubmission(
+ token: string,
+ submissionId: string,
+): Promise {
+ const getSubmissionEndpoint = `${process.env
+ .UNIFORM_SUBMISSION_URL!}/secure/submission/${submissionId}`;
+
+ const getSubmissionConfig: AxiosRequestConfig = {
+ url: getSubmissionEndpoint,
+ method: "GET",
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ };
+
+ const response = await axios.request(getSubmissionConfig);
+ return response.data;
+}
+
+/**
+ * Get id and secret of Idox Nexus client
+ */
+const getUniformClient = (): UniformClient => {
+ const client = process.env["IDOX_NEXUS_CLIENT"];
+
+ if (!client) throw Error(`Unable to find Idox Nexus client`);
+
+ const [clientId, clientSecret] = client.split(":");
+ return { clientId, clientSecret };
+};
+
+const createUniformApplicationAuditRecord = async ({
+ idoxSubmissionId,
+ payload,
+ localAuthority,
+ submissionDetails,
+}: {
+ idoxSubmissionId: string;
+ payload: SendToUniformPayload;
+ localAuthority: string;
+ submissionDetails: UniformSubmissionResponse;
+}): Promise => {
+ const xml = await $api.export.oneAppPayload(payload?.sessionId);
+
+ const application: Record<
+ "insert_uniform_applications_one",
+ UniformApplication
+ > = await $api.client.request(
+ gql`
+ mutation CreateUniformApplication(
+ $idox_submission_id: String = ""
+ $submission_reference: String = ""
+ $destination: String = ""
+ $response: jsonb = ""
+ $payload: jsonb = ""
+ $xml: xml = ""
+ ) {
+ insert_uniform_applications_one(
+ object: {
+ idox_submission_id: $idox_submission_id
+ submission_reference: $submission_reference
+ destination: $destination
+ response: $response
+ payload: $payload
+ xml: $xml
+ }
+ ) {
+ id
+ idox_submission_id
+ submission_reference
+ destination
+ response
+ created_at
+ }
+ }
+ `,
+ {
+ idox_submission_id: idoxSubmissionId,
+ submission_reference: payload?.sessionId,
+ destination: localAuthority,
+ response: submissionDetails,
+ payload,
+ xml,
+ },
+ );
+
+ return application.insert_uniform_applications_one;
+};
diff --git a/api.planx.uk/modules/send/routes.ts b/api.planx.uk/modules/send/routes.ts
index 37e2eb31da..5447f7ad3d 100644
--- a/api.planx.uk/modules/send/routes.ts
+++ b/api.planx.uk/modules/send/routes.ts
@@ -8,6 +8,7 @@ import { validate } from "../../shared/middleware/validate";
import { combinedEventsPayloadSchema } from "./createSendEvents/types";
import { downloadApplicationFiles } from "./downloadApplicationFiles";
import { sendToS3 } from "./s3";
+import { sendToIdoxNexus } from "./idox/nexus";
const router = Router();
@@ -18,6 +19,7 @@ router.post(
);
router.post("/bops/:localAuthority", useHasuraAuth, sendToBOPS);
router.post("/uniform/:localAuthority", useHasuraAuth, sendToUniform);
+router.post("/idox/:localAuthority", useHasuraAuth, sendToIdoxNexus);
router.post("/email-submission/:localAuthority", useHasuraAuth, sendToEmail);
router.get("/download-application-files/:sessionId", downloadApplicationFiles);
router.post("/upload-submission/:localAuthority", useHasuraAuth, sendToS3);
diff --git a/api.planx.uk/modules/send/s3/index.test.ts b/api.planx.uk/modules/send/s3/index.test.ts
index 9db576188e..352c8c07ef 100644
--- a/api.planx.uk/modules/send/s3/index.test.ts
+++ b/api.planx.uk/modules/send/s3/index.test.ts
@@ -53,6 +53,14 @@ describe(`uploading an application to S3`, () => {
slug: "unsupported-team",
},
});
+
+ queryMock.mockQuery({
+ name: "CreateS3Application",
+ matchOnVariables: false,
+ data: {
+ insertS3Application: { id: 1 },
+ },
+ });
});
it("requires auth", async () => {
diff --git a/api.planx.uk/modules/send/s3/index.ts b/api.planx.uk/modules/send/s3/index.ts
index f301729334..39aed61780 100644
--- a/api.planx.uk/modules/send/s3/index.ts
+++ b/api.planx.uk/modules/send/s3/index.ts
@@ -1,16 +1,19 @@
+import axios from "axios";
import type { NextFunction, Request, Response } from "express";
+import { gql } from "graphql-request";
import { $api } from "../../../client";
+import { Passport } from "../../../types";
import { uploadPrivateFile } from "../../file/service/uploadFile";
import { markSessionAsSubmitted } from "../../saveAndReturn/service/utils";
-import axios from "axios";
import { isApplicationTypeSupported } from "../utils/helpers";
-import { Passport } from "../../../types";
-export async function sendToS3(
- req: Request,
- res: Response,
- next: NextFunction,
-) {
+interface CreateS3Application {
+ insertS3Application: {
+ id: string;
+ };
+}
+
+const sendToS3 = async (req: Request, res: Response, next: NextFunction) => {
// `/upload-submission/:localAuthority` is only called via Hasura's scheduled event webhook, so body is wrapped in a "payload" key
const { payload } = req.body;
const localAuthority = req.params.localAuthority;
@@ -58,8 +61,7 @@ export async function sendToS3(
);
// Send a notification with the file URL to the Power Automate webook
- let webhookResponseStatus: number | undefined;
- await axios({
+ const webhookRequest = {
method: "POST",
url: powerAutomateWebhookURL,
adapter: "http",
@@ -73,10 +75,49 @@ export async function sendToS3(
file: fileUrl,
payload: doValidation ? "Validated ODP Schema" : "Discretionary",
},
- })
- .then((res) => {
- // TODO Create & update audit table entry here
+ };
+ let webhookResponseStatus: number | undefined;
+ await axios(webhookRequest)
+ .then(async (res) => {
webhookResponseStatus = res.status;
+
+ // Mark session as submitted so that reminder and expiry emails are not triggered
+ markSessionAsSubmitted(sessionId);
+
+ // Create an audit entry
+ const applicationId = await $api.client.request(
+ gql`
+ mutation CreateS3Application(
+ $session_id: String!
+ $team_slug: String!
+ $webhook_request: jsonb!
+ $webhook_response: jsonb = {}
+ ) {
+ insertS3Application: insert_s3_applications_one(
+ object: {
+ session_id: $session_id
+ team_slug: $team_slug
+ webhook_request: $webhook_request
+ webhook_response: $webhook_response
+ }
+ ) {
+ id
+ }
+ }
+ `,
+ {
+ session_id: sessionId,
+ team_slug: localAuthority,
+ webhook_request: webhookRequest,
+ webhook_response: res,
+ },
+ );
+
+ return {
+ application: {
+ ...applicationId.insertS3Application,
+ },
+ };
})
.catch((error) => {
throw new Error(
@@ -84,9 +125,6 @@ export async function sendToS3(
);
});
- // Mark session as submitted so that reminder and expiry emails are not triggered
- markSessionAsSubmitted(sessionId);
-
return res.status(200).send({
message: `Successfully uploaded submission to S3: ${fileUrl}`,
payload: doValidation ? "Validated ODP Schema" : "Discretionary",
@@ -100,4 +138,6 @@ export async function sendToS3(
}`,
});
}
-}
+};
+
+export { sendToS3 };
diff --git a/api.planx.uk/modules/send/utils/exportZip.ts b/api.planx.uk/modules/send/utils/exportZip.ts
index 2d15f79c2f..98843e53f2 100644
--- a/api.planx.uk/modules/send/utils/exportZip.ts
+++ b/api.planx.uk/modules/send/utils/exportZip.ts
@@ -22,10 +22,12 @@ export async function buildSubmissionExportZip({
sessionId,
includeOneAppXML = false,
includeDigitalPlanningJSON = false,
+ onlyDigitalPlanningJSON = false,
}: {
sessionId: string;
includeOneAppXML?: boolean;
includeDigitalPlanningJSON?: boolean;
+ onlyDigitalPlanningJSON?: boolean;
}): Promise {
// fetch session data
const sessionData = await $api.session.find(sessionId);
@@ -41,7 +43,7 @@ export async function buildSubmissionExportZip({
const zip = new ExportZip(sessionId, flowSlug);
// add OneApp XML to the zip
- if (includeOneAppXML) {
+ if (includeOneAppXML && !onlyDigitalPlanningJSON) {
try {
const xml = await $api.export.oneAppPayload(sessionId);
const xmlStream = str(xml.trim());
@@ -57,7 +59,7 @@ export async function buildSubmissionExportZip({
}
// add ODP Schema JSON to the zip, skipping validation if an unsupported application type
- if (includeDigitalPlanningJSON) {
+ if (includeDigitalPlanningJSON || onlyDigitalPlanningJSON) {
try {
const doValidation = isApplicationTypeSupported(passport);
const schema = doValidation
@@ -75,115 +77,117 @@ export async function buildSubmissionExportZip({
}
}
- // add remote files on S3 to the zip
- const files = new Passport(passport).files;
- if (files.length) {
- for (const file of files) {
- // Ensure unique filename by combining original filename and S3 folder name, which is a nanoid
- // Uniform requires all uploaded files to be present in the zip, even if they are duplicates
- // Must match unique filename in editor.planx.uk/src/@planx/components/Send/uniform/xml.ts
- const uniqueFilename = decodeURIComponent(
- file.url.split("/").slice(-2).join("-"),
- );
- await zip.addRemoteFile({ url: file.url, name: uniqueFilename });
+ if (!onlyDigitalPlanningJSON) {
+ // add remote user-uploaded files on S3 to the zip
+ const files = new Passport(passport).files;
+ if (files.length) {
+ for (const file of files) {
+ // Ensure unique filename by combining original filename and S3 folder name, which is a nanoid
+ // Uniform requires all uploaded files to be present in the zip, even if they are duplicates
+ // Must match unique filename in editor.planx.uk/src/@planx/components/Send/uniform/xml.ts
+ const uniqueFilename = decodeURIComponent(
+ file.url.split("/").slice(-2).join("-"),
+ );
+ await zip.addRemoteFile({ url: file.url, name: uniqueFilename });
+ }
}
- }
- // generate csv data
- const responses = await $api.export.csvData(sessionId);
- const redactedResponses = await $api.export.csvDataRedacted(sessionId);
-
- // write csv to the zip
- try {
- const csvStream = stringify(responses, {
- columns: ["question", "responses", "metadata"],
- header: true,
- });
- await zip.addStream({
- name: "application.csv",
- stream: csvStream,
- });
- } catch (error) {
- throw new Error(
- `Failed to generate CSV for ${sessionId} zip. Error - ${error}`,
- );
- }
+ // generate csv data
+ const responses = await $api.export.csvData(sessionId);
+ const redactedResponses = await $api.export.csvDataRedacted(sessionId);
- // add template files to zip
- const templateNames =
- await $api.getDocumentTemplateNamesForSession(sessionId);
- for (const templateName of templateNames || []) {
+ // write csv to the zip
try {
- const isTemplateSupported = hasRequiredDataForTemplate({
- passport,
- templateName,
+ const csvStream = stringify(responses, {
+ columns: ["question", "responses", "metadata"],
+ header: true,
+ });
+ await zip.addStream({
+ name: "application.csv",
+ stream: csvStream,
});
- if (isTemplateSupported) {
- const templateStream = generateDocxTemplateStream({
+ } catch (error) {
+ throw new Error(
+ `Failed to generate CSV for ${sessionId} zip. Error - ${error}`,
+ );
+ }
+
+ // add template files to zip
+ const templateNames =
+ await $api.getDocumentTemplateNamesForSession(sessionId);
+ for (const templateName of templateNames || []) {
+ try {
+ const isTemplateSupported = hasRequiredDataForTemplate({
passport,
templateName,
});
- await zip.addStream({
- name: `${templateName}.doc`,
- stream: templateStream,
- });
+ if (isTemplateSupported) {
+ const templateStream = generateDocxTemplateStream({
+ passport,
+ templateName,
+ });
+ await zip.addStream({
+ name: `${templateName}.doc`,
+ stream: templateStream,
+ });
+ }
+ } catch (error) {
+ console.log(
+ `Template "${templateName}" could not be generated so has been skipped. Error - ${error}`,
+ );
+ continue;
}
- } catch (error) {
- console.log(
- `Template "${templateName}" could not be generated so has been skipped. Error - ${error}`,
- );
- continue;
}
- }
- const boundingBox = passport.data["property.boundary.site.buffered"];
- const userAction = passport.data?.["drawBoundary.action"];
- // generate and add an HTML overview document for the submission to zip
- const overviewHTML = generateApplicationHTML({
- planXExportData: responses as PlanXExportData[],
- boundingBox,
- userAction,
- });
- await zip.addFile({
- name: "Overview.htm",
- buffer: Buffer.from(overviewHTML),
- });
-
- // generate and add an HTML overview document for the submission to zip
- const redactedOverviewHTML = generateApplicationHTML({
- planXExportData: redactedResponses as PlanXExportData[],
- boundingBox,
- userAction,
- });
- await zip.addFile({
- name: "RedactedOverview.htm",
- buffer: Buffer.from(redactedOverviewHTML),
- });
-
- // add an optional GeoJSON file to zip
- const geojson: GeoJSON.Feature | undefined =
- passport?.data?.["property.boundary.site"];
- if (geojson) {
- if (userAction) {
- geojson["properties"] ??= {};
- geojson["properties"]["planx_user_action"] = userAction;
- }
- const geoBuff = Buffer.from(JSON.stringify(geojson, null, 2));
- zip.addFile({
- name: "LocationPlanGeoJSON.geojson",
- buffer: geoBuff,
+ const boundingBox = passport.data["property.boundary.site.buffered"];
+ const userAction = passport.data?.["drawBoundary.action"];
+ // generate and add an HTML overview document for the submission to zip
+ const overviewHTML = generateApplicationHTML({
+ planXExportData: responses as PlanXExportData[],
+ boundingBox,
+ userAction,
+ });
+ await zip.addFile({
+ name: "Overview.htm",
+ buffer: Buffer.from(overviewHTML),
});
- // generate and add an HTML boundary document for the submission to zip
- const boundaryHTML = generateMapHTML({
- geojson,
+ // generate and add an HTML overview document for the submission to zip
+ const redactedOverviewHTML = generateApplicationHTML({
+ planXExportData: redactedResponses as PlanXExportData[],
boundingBox,
userAction,
});
await zip.addFile({
- name: "LocationPlan.htm",
- buffer: Buffer.from(boundaryHTML),
+ name: "RedactedOverview.htm",
+ buffer: Buffer.from(redactedOverviewHTML),
});
+
+ // add an optional GeoJSON file to zip
+ const geojson: GeoJSON.Feature | undefined =
+ passport?.data?.["property.boundary.site"];
+ if (geojson) {
+ if (userAction) {
+ geojson["properties"] ??= {};
+ geojson["properties"]["planx_user_action"] = userAction;
+ }
+ const geoBuff = Buffer.from(JSON.stringify(geojson, null, 2));
+ zip.addFile({
+ name: "LocationPlanGeoJSON.geojson",
+ buffer: geoBuff,
+ });
+
+ // generate and add an HTML boundary document for the submission to zip
+ const boundaryHTML = generateMapHTML({
+ geojson,
+ boundingBox,
+ userAction,
+ });
+ await zip.addFile({
+ name: "LocationPlan.htm",
+ buffer: Buffer.from(boundaryHTML),
+ });
+ }
}
// write the zip
diff --git a/api.planx.uk/modules/sendEmail/index.test.ts b/api.planx.uk/modules/sendEmail/index.test.ts
index 8ae931321a..153f1632de 100644
--- a/api.planx.uk/modules/sendEmail/index.test.ts
+++ b/api.planx.uk/modules/sendEmail/index.test.ts
@@ -9,16 +9,11 @@ import {
mockValidateSingleSessionRequest,
mockValidateSingleSessionRequestMissingSession,
} from "../../tests/mocks/saveAndReturnMocks";
-import { CoreDomainClient } from "@opensystemslab/planx-core";
// https://docs.notifications.service.gov.uk/node.html#email-addresses
const TEST_EMAIL = "simulate-delivered@notifications.service.gov.uk";
const SAVE_ENDPOINT = "/send-email/save";
-jest
- .spyOn(CoreDomainClient.prototype, "formatRawProjectTypes")
- .mockResolvedValue("New office premises");
-
describe("Send Email endpoint", () => {
beforeEach(() => {
queryMock.reset();
diff --git a/api.planx.uk/package.json b/api.planx.uk/package.json
index 77b288f99e..037e410828 100644
--- a/api.planx.uk/package.json
+++ b/api.planx.uk/package.json
@@ -2,9 +2,10 @@
"name": "api.planx.uk",
"license": "MPL-2.0",
"private": true,
+ "packageManager": "pnpm@8.6.6",
"dependencies": {
"@airbrake/node": "^2.1.8",
- "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#550634a",
+ "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#6c2cc59",
"@types/isomorphic-fetch": "^0.0.36",
"adm-zip": "^0.5.10",
"aws-sdk": "^2.1467.0",
@@ -23,21 +24,21 @@
"express-pino-logger": "^7.0.0",
"express-rate-limit": "^7.1.5",
"form-data": "^4.0.0",
- "graphql": "^16.8.1",
+ "graphql": "^16.9.0",
"graphql-request": "^4.3.0",
"he": "^1.2.0",
"helmet": "^7.1.0",
"http-proxy-middleware": "^2.0.6",
"husky": "^8.0.3",
"isomorphic-fetch": "^3.0.0",
- "jsdom": "^23.0.1",
+ "jsdom": "^24.1.0",
"jsondiffpatch": "^0.5.0",
"jsonwebtoken": "^9.0.2",
"lodash": "^4.17.21",
"mime": "^3.0.0",
"multer": "^1.4.5-lts.1",
"nanoid": "^3.3.7",
- "notifications-node-client": "^8.1.0",
+ "notifications-node-client": "^8.2.0",
"passport": "^0.5.3",
"passport-google-oauth20": "^2.0.0",
"pino-noir": "^2.2.1",
@@ -91,11 +92,11 @@
"@types/supertest": "^6.0.2",
"@types/swagger-jsdoc": "^6.0.4",
"@types/swagger-ui-express": "^4.1.6",
- "@types/uuid": "^9.0.7",
+ "@types/uuid": "^10.0.0",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"dotenv": "^16.4.5",
- "esbuild": "^0.21.4",
+ "esbuild": "^0.22.0",
"esbuild-jest": "^0.5.0",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
@@ -111,8 +112,8 @@
"supertest": "^7.0.0",
"ts-jest": "^29.1.1",
"ts-node-dev": "^2.0.0",
- "typescript": "^5.4.3",
- "uuid": "^9.0.1"
+ "typescript": "^5.5.2",
+ "uuid": "^10.0.0"
},
"pnpm": {
"peerDependencyRules": {
@@ -125,7 +126,9 @@
]
},
"overrides": {
- "follow-redirects@<=1.15.5": ">=1.15.6"
+ "follow-redirects@<=1.15.5": ">=1.15.6",
+ "braces@<3.0.3": ">=3.0.3",
+ "ws@>=8.0.0 <8.17.1": ">=8.17.1"
}
}
}
diff --git a/api.planx.uk/pnpm-lock.yaml b/api.planx.uk/pnpm-lock.yaml
index fdcf4ba37e..e40f8c91b2 100644
--- a/api.planx.uk/pnpm-lock.yaml
+++ b/api.planx.uk/pnpm-lock.yaml
@@ -6,14 +6,16 @@ settings:
overrides:
follow-redirects@<=1.15.5: '>=1.15.6'
+ braces@<3.0.3: '>=3.0.3'
+ ws@>=8.0.0 <8.17.1: '>=8.17.1'
dependencies:
'@airbrake/node':
specifier: ^2.1.8
version: 2.1.8
'@opensystemslab/planx-core':
- specifier: git+https://github.com/theopensystemslab/planx-core#550634a
- version: github.com/theopensystemslab/planx-core/550634a
+ specifier: git+https://github.com/theopensystemslab/planx-core#6c2cc59
+ version: github.com/theopensystemslab/planx-core/6c2cc59
'@types/isomorphic-fetch':
specifier: ^0.0.36
version: 0.0.36
@@ -69,11 +71,11 @@ dependencies:
specifier: ^4.0.0
version: 4.0.0
graphql:
- specifier: ^16.8.1
- version: 16.8.1
+ specifier: ^16.9.0
+ version: 16.9.0
graphql-request:
specifier: ^4.3.0
- version: 4.3.0(graphql@16.8.1)
+ version: 4.3.0(graphql@16.9.0)
he:
specifier: ^1.2.0
version: 1.2.0
@@ -90,8 +92,8 @@ dependencies:
specifier: ^3.0.0
version: 3.0.0
jsdom:
- specifier: ^23.0.1
- version: 23.0.1
+ specifier: ^24.1.0
+ version: 24.1.0
jsondiffpatch:
specifier: ^0.5.0
version: 0.5.0
@@ -111,8 +113,8 @@ dependencies:
specifier: ^3.3.7
version: 3.3.7
notifications-node-client:
- specifier: ^8.1.0
- version: 8.1.0
+ specifier: ^8.2.0
+ version: 8.2.0
passport:
specifier: ^0.5.3
version: 0.5.3
@@ -212,23 +214,23 @@ devDependencies:
specifier: ^4.1.6
version: 4.1.6
'@types/uuid':
- specifier: ^9.0.7
- version: 9.0.7
+ specifier: ^10.0.0
+ version: 10.0.0
'@typescript-eslint/eslint-plugin':
specifier: ^5.62.0
- version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.3)
+ version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.5.2)
'@typescript-eslint/parser':
specifier: ^5.62.0
- version: 5.62.0(eslint@8.57.0)(typescript@5.4.3)
+ version: 5.62.0(eslint@8.57.0)(typescript@5.5.2)
dotenv:
specifier: ^16.4.5
version: 16.4.5
esbuild:
- specifier: ^0.21.4
- version: 0.21.4
+ specifier: ^0.22.0
+ version: 0.22.0
esbuild-jest:
specifier: ^0.5.0
- version: 0.5.0(esbuild@0.21.4)
+ version: 0.5.0(esbuild@0.22.0)
eslint:
specifier: ^8.57.0
version: 8.57.0
@@ -237,7 +239,7 @@ devDependencies:
version: 9.1.0(eslint@8.57.0)
eslint-plugin-jest:
specifier: ^27.9.0
- version: 27.9.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.3)
+ version: 27.9.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.5.2)
graphql-query-test-mock:
specifier: ^0.12.1
version: 0.12.1(nock@13.5.4)
@@ -267,16 +269,16 @@ devDependencies:
version: 7.0.0
ts-jest:
specifier: ^29.1.1
- version: 29.1.1(@babel/core@7.24.0)(esbuild@0.21.4)(jest@29.7.0)(typescript@5.4.3)
+ version: 29.1.1(@babel/core@7.24.0)(esbuild@0.22.0)(jest@29.7.0)(typescript@5.5.2)
ts-node-dev:
specifier: ^2.0.0
- version: 2.0.0(@types/node@18.19.13)(typescript@5.4.3)
+ version: 2.0.0(@types/node@18.19.13)(typescript@5.5.2)
typescript:
- specifier: ^5.4.3
- version: 5.4.3
+ specifier: ^5.5.2
+ version: 5.5.2
uuid:
- specifier: ^9.0.1
- version: 9.0.1
+ specifier: ^10.0.0
+ version: 10.0.0
packages:
@@ -313,8 +315,8 @@ packages:
'@jridgewell/trace-mapping': 0.3.25
dev: true
- /@apidevtools/json-schema-ref-parser@11.6.2:
- resolution: {integrity: sha512-ENUdLLT04aDbbHCRwfKf8gR67AhV0CdFrOAtk+FcakBAgaq6ds3HLK9X0BCyiFUz8pK9uP+k6YZyJaGG7Mt7vQ==}
+ /@apidevtools/json-schema-ref-parser@11.6.4:
+ resolution: {integrity: sha512-9K6xOqeevacvweLGik6LnZCb1fBtCOSIWQs8d096XGeqoLKC33UVMGz9+77Gw44KvbH4pKcQPWo4ZpxkXYj05w==}
engines: {node: '>= 16'}
dependencies:
'@jsdevtools/ono': 7.1.3
@@ -354,15 +356,15 @@ packages:
z-schema: 5.0.5
dev: false
- /@babel/code-frame@7.24.2:
- resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
+ /@babel/code-frame@7.24.7:
+ resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/highlight': 7.24.5
+ '@babel/highlight': 7.24.7
picocolors: 1.0.1
- /@babel/compat-data@7.24.4:
- resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==}
+ /@babel/compat-data@7.24.7:
+ resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==}
engines: {node: '>=6.9.0'}
dev: true
@@ -371,17 +373,17 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.24.2
- '@babel/generator': 7.24.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0)
- '@babel/helpers': 7.24.5
- '@babel/parser': 7.24.5
- '@babel/template': 7.24.0
- '@babel/traverse': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.0)
+ '@babel/helpers': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/template': 7.24.7
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
convert-source-map: 2.0.0
- debug: 4.3.4
+ debug: 4.3.5
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -389,184 +391,194 @@ packages:
- supports-color
dev: true
- /@babel/generator@7.24.5:
- resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==}
+ /@babel/generator@7.24.7:
+ resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
jsesc: 2.5.2
- dev: true
- /@babel/helper-annotate-as-pure@7.22.5:
- resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
+ /@babel/helper-annotate-as-pure@7.24.7:
+ resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
dev: true
- /@babel/helper-compilation-targets@7.23.6:
- resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
+ /@babel/helper-compilation-targets@7.24.7:
+ resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/compat-data': 7.24.4
- '@babel/helper-validator-option': 7.23.5
- browserslist: 4.23.0
+ '@babel/compat-data': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ browserslist: 4.23.1
lru-cache: 5.1.1
semver: 6.3.1
dev: true
- /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.0):
- resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==}
+ /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.0):
+ resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-member-expression-to-functions': 7.24.5
- '@babel/helper-optimise-call-expression': 7.22.5
- '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.0)
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
- '@babel/helper-split-export-declaration': 7.24.5
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-member-expression-to-functions': 7.24.7
+ '@babel/helper-optimise-call-expression': 7.24.7
+ '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.0)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/helper-environment-visitor@7.22.20:
- resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
+ /@babel/helper-environment-visitor@7.24.7:
+ resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==}
engines: {node: '>=6.9.0'}
- dev: true
+ dependencies:
+ '@babel/types': 7.24.7
- /@babel/helper-function-name@7.23.0:
- resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+ /@babel/helper-function-name@7.24.7:
+ resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/template': 7.24.0
- '@babel/types': 7.24.5
- dev: true
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
- /@babel/helper-hoist-variables@7.22.5:
- resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+ /@babel/helper-hoist-variables@7.24.7:
+ resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
- dev: true
+ '@babel/types': 7.24.7
- /@babel/helper-member-expression-to-functions@7.24.5:
- resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==}
+ /@babel/helper-member-expression-to-functions@7.24.7:
+ resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/helper-module-imports@7.24.3:
- resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==}
+ /@babel/helper-module-imports@7.24.7:
+ resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.0):
- resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==}
+ /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.0):
+ resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-module-imports': 7.24.3
- '@babel/helper-simple-access': 7.24.5
- '@babel/helper-split-export-declaration': 7.24.5
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-simple-access': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/helper-optimise-call-expression@7.22.5:
- resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
+ /@babel/helper-optimise-call-expression@7.24.7:
+ resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
dev: true
- /@babel/helper-plugin-utils@7.24.5:
- resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==}
+ /@babel/helper-plugin-utils@7.24.7:
+ resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==}
engines: {node: '>=6.9.0'}
dev: true
- /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.0):
- resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==}
+ /@babel/helper-replace-supers@7.24.7(@babel/core@7.24.0):
+ resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-member-expression-to-functions': 7.24.5
- '@babel/helper-optimise-call-expression': 7.22.5
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-member-expression-to-functions': 7.24.7
+ '@babel/helper-optimise-call-expression': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/helper-simple-access@7.24.5:
- resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==}
+ /@babel/helper-simple-access@7.24.7:
+ resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/helper-skip-transparent-expression-wrappers@7.22.5:
- resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==}
+ /@babel/helper-skip-transparent-expression-wrappers@7.24.7:
+ resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/helper-split-export-declaration@7.24.5:
- resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==}
+ /@babel/helper-split-export-declaration@7.24.7:
+ resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
- dev: true
+ '@babel/types': 7.24.7
- /@babel/helper-string-parser@7.24.1:
- resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
+ /@babel/helper-string-parser@7.24.7:
+ resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==}
engines: {node: '>=6.9.0'}
- /@babel/helper-validator-identifier@7.24.5:
- resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
+ /@babel/helper-validator-identifier@7.24.7:
+ resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
- /@babel/helper-validator-option@7.23.5:
- resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
+ /@babel/helper-validator-option@7.24.7:
+ resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==}
engines: {node: '>=6.9.0'}
dev: true
- /@babel/helpers@7.24.5:
- resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==}
+ /@babel/helpers@7.24.7:
+ resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/template': 7.24.0
- '@babel/traverse': 7.24.5
- '@babel/types': 7.24.5
- transitivePeerDependencies:
- - supports-color
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
dev: true
- /@babel/highlight@7.24.5:
- resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
+ /@babel/highlight@7.24.7:
+ resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.0.1
- /@babel/parser@7.24.5:
- resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==}
+ /@babel/parser@7.24.7:
+ resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==}
engines: {node: '>=6.0.0'}
- hasBin: true
dependencies:
- '@babel/types': 7.24.5
- dev: true
+ '@babel/types': 7.24.7
/@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0):
resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
@@ -574,7 +586,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.0):
@@ -583,7 +595,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0):
@@ -592,7 +604,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0):
@@ -601,7 +613,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0):
@@ -610,17 +622,17 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
- /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.0):
- resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==}
+ /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.0):
+ resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0):
@@ -629,7 +641,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0):
@@ -638,7 +650,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0):
@@ -647,7 +659,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0):
@@ -656,7 +668,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0):
@@ -665,7 +677,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0):
@@ -674,7 +686,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
/@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0):
@@ -684,42 +696,46 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
- /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.0):
- resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==}
+ /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.0):
+ resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
- /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.0):
- resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==}
+ /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.0):
+ resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.0)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-simple-access': 7.24.5
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.0)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-simple-access': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.0):
- resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==}
+ /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.0):
+ resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.0)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.0)
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.0)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.0)
+ transitivePeerDependencies:
+ - supports-color
dev: true
/@babel/preset-typescript@7.24.1(@babel/core@7.24.0):
@@ -729,53 +745,53 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.0)
- '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.0)
- '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.0)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.0)
+ '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.0)
+ '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.0)
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/runtime@7.24.5:
- resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
+ /@babel/runtime@7.24.7:
+ resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.1
dev: false
- /@babel/template@7.24.0:
- resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
+ /@babel/template@7.24.7:
+ resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/code-frame': 7.24.2
- '@babel/parser': 7.24.5
- '@babel/types': 7.24.5
- dev: true
+ '@babel/code-frame': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
- /@babel/traverse@7.24.5:
- resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==}
+ /@babel/traverse@7.24.7:
+ resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/code-frame': 7.24.2
- '@babel/generator': 7.24.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-hoist-variables': 7.22.5
- '@babel/helper-split-export-declaration': 7.24.5
- '@babel/parser': 7.24.5
- '@babel/types': 7.24.5
- debug: 4.3.4
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-hoist-variables': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
+ debug: 4.3.5
globals: 11.12.0
transitivePeerDependencies:
- supports-color
- dev: true
- /@babel/types@7.24.5:
- resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
+ /@babel/types@7.24.7:
+ resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-string-parser': 7.24.1
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/helper-string-parser': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
/@bcoe/v8-coverage@0.2.3:
@@ -785,7 +801,6 @@ packages:
/@cnakazawa/watch@1.0.4:
resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==}
engines: {node: '>=0.1.95'}
- hasBin: true
dependencies:
exec-sh: 0.3.6
minimist: 1.2.8
@@ -801,8 +816,8 @@ packages:
/@emotion/babel-plugin@11.11.0:
resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
dependencies:
- '@babel/helper-module-imports': 7.24.3
- '@babel/runtime': 7.24.5
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/runtime': 7.24.7
'@emotion/hash': 0.9.1
'@emotion/memoize': 0.8.1
'@emotion/serialize': 1.1.4
@@ -812,6 +827,8 @@ packages:
find-root: 1.1.0
source-map: 0.5.7
stylis: 4.2.0
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/cache@11.11.0:
@@ -849,7 +866,7 @@ packages:
react:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/cache': 11.11.0
'@emotion/serialize': 1.1.4
@@ -858,6 +875,8 @@ packages:
'@emotion/weak-memoize': 0.3.1
hoist-non-react-statics: 3.3.2
react: 18.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/serialize@1.1.4:
@@ -886,7 +905,7 @@ packages:
react:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/is-prop-valid': 1.2.2
'@emotion/react': 11.11.4(react@18.3.1)
@@ -894,6 +913,8 @@ packages:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
'@emotion/utils': 1.2.1
react: 18.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/unitless@0.8.1:
@@ -919,207 +940,216 @@ packages:
resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==}
dev: false
- /@esbuild/aix-ppc64@0.21.4:
- resolution: {integrity: sha512-Zrm+B33R4LWPLjDEVnEqt2+SLTATlru1q/xYKVn8oVTbiRBGmK2VIMoIYGJDGyftnGaC788IuzGFAlb7IQ0Y8A==}
- engines: {node: '>=12'}
+ /@esbuild/aix-ppc64@0.22.0:
+ resolution: {integrity: sha512-uvQR2crZ/zgzSHDvdygHyNI+ze9zwS8mqz0YtGXotSqvEE0UkYE9s+FZKQNTt1VtT719mfP3vHrUdCpxBNQZhQ==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
requiresBuild: true
dev: true
optional: true
- /@esbuild/android-arm64@0.21.4:
- resolution: {integrity: sha512-fYFnz+ObClJ3dNiITySBUx+oNalYUT18/AryMxfovLkYWbutXsct3Wz2ZWAcGGppp+RVVX5FiXeLYGi97umisA==}
- engines: {node: '>=12'}
+ /@esbuild/android-arm64@0.22.0:
+ resolution: {integrity: sha512-UKhPb3o2gAB/bfXcl58ZXTn1q2oVu1rEu/bKrCtmm+Nj5MKUbrOwR5WAixE2v+lk0amWuwPvhnPpBRLIGiq7ig==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
- /@esbuild/android-arm@0.21.4:
- resolution: {integrity: sha512-E7H/yTd8kGQfY4z9t3nRPk/hrhaCajfA3YSQSBrst8B+3uTcgsi8N+ZWYCaeIDsiVs6m65JPCaQN/DxBRclF3A==}
- engines: {node: '>=12'}
+ /@esbuild/android-arm@0.22.0:
+ resolution: {integrity: sha512-PBnyP+r8vJE4ifxsWys9l+Mc2UY/yYZOpX82eoyGISXXb3dRr0M21v+s4fgRKWMFPMSf/iyowqPW/u7ScSUkjQ==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
- /@esbuild/android-x64@0.21.4:
- resolution: {integrity: sha512-mDqmlge3hFbEPbCWxp4fM6hqq7aZfLEHZAKGP9viq9wMUBVQx202aDIfc3l+d2cKhUJM741VrCXEzRFhPDKH3Q==}
- engines: {node: '>=12'}
+ /@esbuild/android-x64@0.22.0:
+ resolution: {integrity: sha512-IjTYtvIrjhR41Ijy2dDPgYjQHWG/x/A4KXYbs1fiU3efpRdoxMChK3oEZV6GPzVEzJqxFgcuBaiX1kwEvWUxSw==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [android]
requiresBuild: true
dev: true
optional: true
- /@esbuild/darwin-arm64@0.21.4:
- resolution: {integrity: sha512-72eaIrDZDSiWqpmCzVaBD58c8ea8cw/U0fq/PPOTqE3c53D0xVMRt2ooIABZ6/wj99Y+h4ksT/+I+srCDLU9TA==}
- engines: {node: '>=12'}
+ /@esbuild/darwin-arm64@0.22.0:
+ resolution: {integrity: sha512-mqt+Go4y9wRvEz81bhKd9RpHsQR1LwU8Xm6jZRUV/xpM7cIQFbFH6wBCLPTNsdELBvfoHeumud7X78jQQJv2TA==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@esbuild/darwin-x64@0.21.4:
- resolution: {integrity: sha512-uBsuwRMehGmw1JC7Vecu/upOjTsMhgahmDkWhGLWxIgUn2x/Y4tIwUZngsmVb6XyPSTXJYS4YiASKPcm9Zitag==}
- engines: {node: '>=12'}
+ /@esbuild/darwin-x64@0.22.0:
+ resolution: {integrity: sha512-vTaTQ9OgYc3VTaWtOE5pSuDT6H3d/qSRFRfSBbnxFfzAvYoB3pqKXA0LEbi/oT8GUOEAutspfRMqPj2ezdFaMw==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
- /@esbuild/freebsd-arm64@0.21.4:
- resolution: {integrity: sha512-8JfuSC6YMSAEIZIWNL3GtdUT5NhUA/CMUCpZdDRolUXNAXEE/Vbpe6qlGLpfThtY5NwXq8Hi4nJy4YfPh+TwAg==}
- engines: {node: '>=12'}
+ /@esbuild/freebsd-arm64@0.22.0:
+ resolution: {integrity: sha512-0e1ZgoobJzaGnR4reD7I9rYZ7ttqdh1KPvJWnquUoDJhL0rYwdneeLailBzd2/4g/U5p4e5TIHEWa68NF2hFpQ==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
- /@esbuild/freebsd-x64@0.21.4:
- resolution: {integrity: sha512-8d9y9eQhxv4ef7JmXny7591P/PYsDFc4+STaxC1GBv0tMyCdyWfXu2jBuqRsyhY8uL2HU8uPyscgE2KxCY9imQ==}
- engines: {node: '>=12'}
+ /@esbuild/freebsd-x64@0.22.0:
+ resolution: {integrity: sha512-BFgyYwlCwRWyPQJtkzqq2p6pJbiiWgp0P9PNf7a5FQ1itKY4czPuOMAlFVItirSmEpRPCeImuwePNScZS0pL5Q==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
- /@esbuild/linux-arm64@0.21.4:
- resolution: {integrity: sha512-/GLD2orjNU50v9PcxNpYZi+y8dJ7e7/LhQukN3S4jNDXCKkyyiyAz9zDw3siZ7Eh1tRcnCHAo/WcqKMzmi4eMQ==}
- engines: {node: '>=12'}
+ /@esbuild/linux-arm64@0.22.0:
+ resolution: {integrity: sha512-V/K2rctCUgC0PCXpN7AqT4hoazXKgIYugFGu/myk2+pfe6jTW2guz/TBwq4cZ7ESqusR/IzkcQaBkcjquuBWsw==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@esbuild/linux-arm@0.21.4:
- resolution: {integrity: sha512-2rqFFefpYmpMs+FWjkzSgXg5vViocqpq5a1PSRgT0AvSgxoXmGF17qfGAzKedg6wAwyM7UltrKVo9kxaJLMF/g==}
- engines: {node: '>=12'}
+ /@esbuild/linux-arm@0.22.0:
+ resolution: {integrity: sha512-KEMWiA9aGuPUD4BH5yjlhElLgaRXe+Eri6gKBoDazoPBTo1BXc/e6IW5FcJO9DoL19FBeCxgONyh95hLDNepIg==}
+ engines: {node: '>=18'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@esbuild/linux-ia32@0.21.4:
- resolution: {integrity: sha512-pNftBl7m/tFG3t2m/tSjuYeWIffzwAZT9m08+9DPLizxVOsUl8DdFzn9HvJrTQwe3wvJnwTdl92AonY36w/25g==}
- engines: {node: '>=12'}
+ /@esbuild/linux-ia32@0.22.0:
+ resolution: {integrity: sha512-r2ZZqkOMOrpUhzNwxI7uLAHIDwkfeqmTnrv1cjpL/rjllPWszgqmprd/om9oviKXUBpMqHbXmppvjAYgISb26Q==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@esbuild/linux-loong64@0.21.4:
- resolution: {integrity: sha512-cSD2gzCK5LuVX+hszzXQzlWya6c7hilO71L9h4KHwqI4qeqZ57bAtkgcC2YioXjsbfAv4lPn3qe3b00Zt+jIfQ==}
- engines: {node: '>=12'}
+ /@esbuild/linux-loong64@0.22.0:
+ resolution: {integrity: sha512-qaowLrV/YOMAL2RfKQ4C/VaDzAuLDuylM2sd/LH+4OFirMl6CuDpRlCq4u49ZBaVV8pkI/Y+hTdiibvQRhojCA==}
+ engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@esbuild/linux-mips64el@0.21.4:
- resolution: {integrity: sha512-qtzAd3BJh7UdbiXCrg6npWLYU0YpufsV9XlufKhMhYMJGJCdfX/G6+PNd0+v877X1JG5VmjBLUiFB0o8EUSicA==}
- engines: {node: '>=12'}
+ /@esbuild/linux-mips64el@0.22.0:
+ resolution: {integrity: sha512-hgrezzjQTRxjkQ5k08J6rtZN5PNnkWx/Rz6Kmj9gnsdCAX1I4Dn4ZPqvFRkXo55Q3pnVQJBwbdtrTO7tMGtyVA==}
+ engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@esbuild/linux-ppc64@0.21.4:
- resolution: {integrity: sha512-yB8AYzOTaL0D5+2a4xEy7OVvbcypvDR05MsB/VVPVA7nL4hc5w5Dyd/ddnayStDgJE59fAgNEOdLhBxjfx5+dg==}
- engines: {node: '>=12'}
+ /@esbuild/linux-ppc64@0.22.0:
+ resolution: {integrity: sha512-ewxg6FLLUio883XgSjfULEmDl3VPv/TYNnRprVAS3QeGFLdCYdx1tIudBcd7n9jIdk82v1Ajov4jx87qW7h9+g==}
+ engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@esbuild/linux-riscv64@0.21.4:
- resolution: {integrity: sha512-Y5AgOuVzPjQdgU59ramLoqSSiXddu7F3F+LI5hYy/d1UHN7K5oLzYBDZe23QmQJ9PIVUXwOdKJ/jZahPdxzm9w==}
- engines: {node: '>=12'}
+ /@esbuild/linux-riscv64@0.22.0:
+ resolution: {integrity: sha512-Az5XbgSJC2lE8XK8pdcutsf9RgdafWdTpUK/+6uaDdfkviw/B4JCwAfh1qVeRWwOohwdsl4ywZrWBNWxwrPLFg==}
+ engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@esbuild/linux-s390x@0.21.4:
- resolution: {integrity: sha512-Iqc/l/FFwtt8FoTK9riYv9zQNms7B8u+vAI/rxKuN10HgQIXaPzKZc479lZ0x6+vKVQbu55GdpYpeNWzjOhgbA==}
- engines: {node: '>=12'}
+ /@esbuild/linux-s390x@0.22.0:
+ resolution: {integrity: sha512-8j4a2ChT9+V34NNNY9c/gMldutaJFmfMacTPq4KfNKwv2fitBCLYjee7c+Vxaha2nUhPK7cXcZpJtJ3+Y7ZdVQ==}
+ engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@esbuild/linux-x64@0.21.4:
- resolution: {integrity: sha512-Td9jv782UMAFsuLZINfUpoF5mZIbAj+jv1YVtE58rFtfvoKRiKSkRGQfHTgKamLVT/fO7203bHa3wU122V/Bdg==}
- engines: {node: '>=12'}
+ /@esbuild/linux-x64@0.22.0:
+ resolution: {integrity: sha512-JUQyOnpbAkkRFOk/AhsEemz5TfWN4FJZxVObUlnlNCbe7QBl61ZNfM4cwBXayQA6laMJMUcqLHaYQHAB6YQ95Q==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
- /@esbuild/netbsd-x64@0.21.4:
- resolution: {integrity: sha512-Awn38oSXxsPMQxaV0Ipb7W/gxZtk5Tx3+W+rAPdZkyEhQ6968r9NvtkjhnhbEgWXYbgV+JEONJ6PcdBS+nlcpA==}
- engines: {node: '>=12'}
+ /@esbuild/netbsd-x64@0.22.0:
+ resolution: {integrity: sha512-11PoCoHXo4HFNbLsXuMB6bpMPWGDiw7xETji6COdJss4SQZLvcgNoeSqWtATRm10Jj1uEHiaIk4N0PiN6x4Fcg==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: true
optional: true
- /@esbuild/openbsd-x64@0.21.4:
- resolution: {integrity: sha512-IsUmQeCY0aU374R82fxIPu6vkOybWIMc3hVGZ3ChRwL9hA1TwY+tS0lgFWV5+F1+1ssuvvXt3HFqe8roCip8Hg==}
- engines: {node: '>=12'}
+ /@esbuild/openbsd-arm64@0.22.0:
+ resolution: {integrity: sha512-Ezlhu/YyITmXwKSB+Zu/QqD7cxrjrpiw85cc0Rbd3AWr2wsgp+dWbWOE8MqHaLW9NKMZvuL0DhbJbvzR7F6Zvg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64@0.22.0:
+ resolution: {integrity: sha512-ufjdW5tFJGUjlH9j/5cCE9lrwRffyZh+T4vYvoDKoYsC6IXbwaFeV/ENxeNXcxotF0P8CDzoICXVSbJaGBhkrw==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: true
optional: true
- /@esbuild/sunos-x64@0.21.4:
- resolution: {integrity: sha512-hsKhgZ4teLUaDA6FG/QIu2q0rI6I36tZVfM4DBZv3BG0mkMIdEnMbhc4xwLvLJSS22uWmaVkFkqWgIS0gPIm+A==}
- engines: {node: '>=12'}
+ /@esbuild/sunos-x64@0.22.0:
+ resolution: {integrity: sha512-zY6ly/AoSmKnmNTowDJsK5ehra153/5ZhqxNLfq9NRsTTltetr+yHHcQ4RW7QDqw4JC8A1uC1YmeSfK9NRcK1w==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: true
optional: true
- /@esbuild/win32-arm64@0.21.4:
- resolution: {integrity: sha512-UUfMgMoXPoA/bvGUNfUBFLCh0gt9dxZYIx9W4rfJr7+hKe5jxxHmfOK8YSH4qsHLLN4Ck8JZ+v7Q5fIm1huErg==}
- engines: {node: '>=12'}
+ /@esbuild/win32-arm64@0.22.0:
+ resolution: {integrity: sha512-Kml5F7tv/1Maam0pbbCrvkk9vj046dPej30kFzlhXnhuCtYYBP6FGy/cLbc5yUT1lkZznGLf2OvuvmLjscO5rw==}
+ engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@esbuild/win32-ia32@0.21.4:
- resolution: {integrity: sha512-yIxbspZb5kGCAHWm8dexALQ9en1IYDfErzjSEq1KzXFniHv019VT3mNtTK7t8qdy4TwT6QYHI9sEZabONHg+aw==}
- engines: {node: '>=12'}
+ /@esbuild/win32-ia32@0.22.0:
+ resolution: {integrity: sha512-IOgwn+mYTM3RrcydP4Og5IpXh+ftN8oF+HELTXSmbWBlujuci4Qa3DTeO+LEErceisI7KUSfEIiX+WOUlpELkw==}
+ engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
- /@esbuild/win32-x64@0.21.4:
- resolution: {integrity: sha512-sywLRD3UK/qRJt0oBwdpYLBibk7KiRfbswmWRDabuncQYSlf8aLEEUor/oP6KRz8KEG+HoiVLBhPRD5JWjS8Sg==}
- engines: {node: '>=12'}
+ /@esbuild/win32-x64@0.22.0:
+ resolution: {integrity: sha512-4bDHJrk2WHBXJPhy1y80X7/5b5iZTZP3LGcKIlAP1J+KqZ4zQAPMLEzftGyjjfcKbA4JDlPt/+2R/F1ZTeRgrw==}
+ engines: {node: '>=18'}
cpu: [x64]
os: [win32]
requiresBuild: true
@@ -1135,8 +1165,8 @@ packages:
eslint: 8.57.0
eslint-visitor-keys: 3.4.3
- /@eslint-community/regexpp@4.10.0:
- resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
+ /@eslint-community/regexpp@4.11.0:
+ resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
/@eslint/eslintrc@2.1.4:
@@ -1144,7 +1174,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
- debug: 4.3.4
+ debug: 4.3.5
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.1
@@ -1159,21 +1189,21 @@ packages:
resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- /@floating-ui/core@1.6.2:
- resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==}
+ /@floating-ui/core@1.6.4:
+ resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==}
dependencies:
- '@floating-ui/utils': 0.2.2
+ '@floating-ui/utils': 0.2.4
dev: false
- /@floating-ui/dom@1.6.5:
- resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==}
+ /@floating-ui/dom@1.6.7:
+ resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==}
dependencies:
- '@floating-ui/core': 1.6.2
- '@floating-ui/utils': 0.2.2
+ '@floating-ui/core': 1.6.4
+ '@floating-ui/utils': 0.2.4
dev: false
- /@floating-ui/react-dom@2.1.0(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==}
+ /@floating-ui/react-dom@2.1.1(react-dom@18.3.1)(react@18.3.1):
+ resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
@@ -1183,21 +1213,42 @@ packages:
react-dom:
optional: true
dependencies:
- '@floating-ui/dom': 1.6.5
+ '@floating-ui/dom': 1.6.7
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
dev: false
- /@floating-ui/utils@0.2.2:
- resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==}
+ /@floating-ui/utils@0.2.4:
+ resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==}
dev: false
- /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1):
+ /@formatjs/ecma402-abstract@2.0.0:
+ resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==}
+ dependencies:
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.3
+ dev: false
+
+ /@formatjs/intl-listformat@7.5.7:
+ resolution: {integrity: sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==}
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.3
+ dev: false
+
+ /@formatjs/intl-localematcher@0.5.4:
+ resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==}
+ dependencies:
+ tslib: 2.6.3
+ dev: false
+
+ /@graphql-typed-document-node/core@3.2.0(graphql@16.9.0):
resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
peerDependencies:
graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
dependencies:
- graphql: 16.8.1
+ graphql: 16.9.0
dev: false
/@humanwhocodes/config-array@0.11.14:
@@ -1205,7 +1256,7 @@ packages:
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.4
+ debug: 4.3.5
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -1372,7 +1423,7 @@ packages:
glob: 7.2.3
graceful-fs: 4.2.11
istanbul-lib-coverage: 3.2.2
- istanbul-lib-instrument: 6.0.2
+ istanbul-lib-instrument: 6.0.3
istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 4.0.1
istanbul-reports: 3.1.7
@@ -1382,7 +1433,7 @@ packages:
slash: 3.0.0
string-length: 4.0.2
strip-ansi: 6.0.1
- v8-to-istanbul: 9.2.0
+ v8-to-istanbul: 9.3.0
transitivePeerDependencies:
- supports-color
dev: true
@@ -1499,28 +1550,23 @@ packages:
'@jridgewell/set-array': 1.2.1
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.25
- dev: true
/@jridgewell/resolve-uri@3.1.2:
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
- dev: true
/@jridgewell/set-array@1.2.1:
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
engines: {node: '>=6.0.0'}
- dev: true
/@jridgewell/sourcemap-codec@1.4.15:
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
- dev: true
/@jridgewell/trace-mapping@0.3.25:
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.4.15
- dev: true
/@jridgewell/trace-mapping@0.3.9:
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
@@ -1548,10 +1594,10 @@ packages:
react-dom:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1)(react@18.3.1)
+ '@babel/runtime': 7.24.7
+ '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1)(react@18.3.1)
'@mui/types': 7.2.14
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@mui/utils': 5.15.20(react@18.3.1)
'@popperjs/core': 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
@@ -1559,12 +1605,12 @@ packages:
react-dom: 18.3.1(react@18.3.1)
dev: false
- /@mui/core-downloads-tracker@5.15.18:
- resolution: {integrity: sha512-/9pVk+Al8qxAjwFUADv4BRZgMpZM4m5E+2Q/20qhVPuIJWqKp4Ie4tGExac6zu93rgPTYVQGgu+1vjiT0E+cEw==}
+ /@mui/core-downloads-tracker@5.15.21:
+ resolution: {integrity: sha512-dp9lXBaJZzJYeJfQY3Ow4Rb49QaCEdkl2KKYscdQHQm6bMJ+l4XPY3Cd9PCeeJTsHPIDJ60lzXbeRgs6sx/rpw==}
dev: false
- /@mui/material@5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-n+/dsiqux74fFfcRUJjok+ieNQ7+BEk6/OwX9cLcLvriZrZb+/7Y8+Fd2HlUUbn5N0CDurgAHm0VH1DqyJ9HAw==}
+ /@mui/material@5.15.21(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1):
+ resolution: {integrity: sha512-nTyCcgduKwHqiuQ/B03EQUa+utSMzn2sQp0QAibsnYe4tvc3zkMbO0amKpl48vhABIY3IvT6w9615BFIgMt0YA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -1584,14 +1630,14 @@ packages:
react-dom:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
'@mui/base': 5.0.0-beta.40(react-dom@18.3.1)(react@18.3.1)
- '@mui/core-downloads-tracker': 5.15.18
- '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
+ '@mui/core-downloads-tracker': 5.15.21
+ '@mui/system': 5.15.20(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
'@mui/types': 7.2.14
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@mui/utils': 5.15.20(react@18.3.1)
'@types/react-transition-group': 4.4.10
clsx: 2.1.1
csstype: 3.1.3
@@ -1602,8 +1648,8 @@ packages:
react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1)
dev: false
- /@mui/private-theming@5.15.14(react@18.3.1):
- resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==}
+ /@mui/private-theming@5.15.20(react@18.3.1):
+ resolution: {integrity: sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -1614,8 +1660,8 @@ packages:
react:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@babel/runtime': 7.24.7
+ '@mui/utils': 5.15.20(react@18.3.1)
prop-types: 15.8.1
react: 18.3.1
dev: false
@@ -1635,7 +1681,7 @@ packages:
react:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/cache': 11.11.0
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
@@ -1644,8 +1690,8 @@ packages:
react: 18.3.1
dev: false
- /@mui/system@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1):
- resolution: {integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==}
+ /@mui/system@5.15.20(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1):
+ resolution: {integrity: sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -1662,13 +1708,13 @@ packages:
react:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
- '@mui/private-theming': 5.15.14(react@18.3.1)
+ '@mui/private-theming': 5.15.20(react@18.3.1)
'@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
'@mui/types': 7.2.14
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@mui/utils': 5.15.20(react@18.3.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -1684,8 +1730,8 @@ packages:
optional: true
dev: false
- /@mui/utils@5.15.14(react@18.3.1):
- resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==}
+ /@mui/utils@5.15.20(react@18.3.1):
+ resolution: {integrity: sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -1696,7 +1742,7 @@ packages:
react:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/prop-types': 15.7.12
prop-types: 15.8.1
react: 18.3.1
@@ -1772,8 +1818,8 @@ packages:
/@types/babel__core@7.20.5:
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
dependencies:
- '@babel/parser': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
@@ -1782,20 +1828,20 @@ packages:
/@types/babel__generator@7.6.8:
resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
dev: true
/@types/babel__template@7.4.4:
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
dependencies:
- '@babel/parser': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
dev: true
/@types/babel__traverse@7.20.6:
resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
dev: true
/@types/body-parser@1.19.5:
@@ -1849,8 +1895,8 @@ packages:
'@types/pino-http': 5.8.4
dev: true
- /@types/express-serve-static-core@4.19.1:
- resolution: {integrity: sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==}
+ /@types/express-serve-static-core@4.19.5:
+ resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==}
dependencies:
'@types/node': 18.19.13
'@types/qs': 6.9.15
@@ -1861,14 +1907,10 @@ packages:
resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
dependencies:
'@types/body-parser': 1.19.5
- '@types/express-serve-static-core': 4.19.1
+ '@types/express-serve-static-core': 4.19.5
'@types/qs': 6.9.15
'@types/serve-static': 1.15.7
- /@types/geojson@7946.0.14:
- resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==}
- dev: false
-
/@types/graceful-fs@4.1.9:
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
dependencies:
@@ -1960,14 +2002,14 @@ packages:
dependencies:
undici-types: 5.26.5
- /@types/node@20.12.12:
- resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
+ /@types/node@20.14.9:
+ resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
dependencies:
undici-types: 5.26.5
dev: false
- /@types/oauth@0.9.4:
- resolution: {integrity: sha512-qk9orhti499fq5XxKCCEbd0OzdPZuancneyse3KtR+vgMiHRbh+mn8M4G6t64ob/Fg+GZGpa565MF/2dKWY32A==}
+ /@types/oauth@0.9.5:
+ resolution: {integrity: sha512-+oQ3C2Zx6ambINOcdIARF5Z3Tu3x//HipE889/fqo3sgpQZbe9c6ExdQFtN6qlhpR7p83lTZfPJt0tCAW29dog==}
dependencies:
'@types/node': 18.19.13
dev: true
@@ -1981,14 +2023,14 @@ packages:
dependencies:
'@types/express': 4.17.21
'@types/passport': 1.0.16
- '@types/passport-oauth2': 1.4.16
+ '@types/passport-oauth2': 1.4.17
dev: true
- /@types/passport-oauth2@1.4.16:
- resolution: {integrity: sha512-Sdr0rpAdkiidUOtyaapGgvXyMjqYlMTFHRy7gtJtzr0/ysEIa72N3j2FSHIRc14h29g1+dzDl8IW2WT2Mu29vQ==}
+ /@types/passport-oauth2@1.4.17:
+ resolution: {integrity: sha512-ODiAHvso6JcWJ6ZkHHroVp05EHGhqQN533PtFNBkg8Fy5mERDqsr030AX81M0D69ZcaMvhF92SRckEk2B0HYYg==}
dependencies:
'@types/express': 4.17.21
- '@types/oauth': 0.9.4
+ '@types/oauth': 0.9.5
'@types/passport': 1.0.16
dev: true
@@ -2006,14 +2048,12 @@ packages:
/@types/pino-pretty@5.0.0:
resolution: {integrity: sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA==}
- deprecated: This is a stub types definition. pino-pretty provides its own type definitions, so you do not need this installed.
dependencies:
- pino-pretty: 11.1.0
+ pino-pretty: 11.2.1
dev: true
/@types/pino-std-serializers@4.0.0:
resolution: {integrity: sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg==}
- deprecated: This is a stub types definition. pino-std-serializers provides its own type definitions, so you do not need this installed.
dependencies:
pino-std-serializers: 7.0.0
dev: true
@@ -2125,8 +2165,8 @@ packages:
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
dev: true
- /@types/uuid@9.0.7:
- resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==}
+ /@types/uuid@10.0.0:
+ resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==}
dev: true
/@types/yargs-parser@21.0.3:
@@ -2145,7 +2185,7 @@ packages:
'@types/yargs-parser': 21.0.3
dev: true
- /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.5.2):
resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -2156,24 +2196,24 @@ packages:
typescript:
optional: true
dependencies:
- '@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
+ '@eslint-community/regexpp': 4.11.0
+ '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.2)
'@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
- debug: 4.3.4
+ '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2)
+ debug: 4.3.5
eslint: 8.57.0
graphemer: 1.4.0
ignore: 5.3.1
natural-compare-lite: 1.4.0
semver: 7.6.2
- tsutils: 3.21.0(typescript@5.4.3)
- typescript: 5.4.3
+ tsutils: 3.21.0(typescript@5.5.2)
+ typescript: 5.5.2
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.2):
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -2185,10 +2225,10 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3)
- debug: 4.3.4
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2)
+ debug: 4.3.5
eslint: 8.57.0
- typescript: 5.4.3
+ typescript: 5.5.2
transitivePeerDependencies:
- supports-color
dev: true
@@ -2201,7 +2241,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.62.0
dev: true
- /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.5.2):
resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -2211,12 +2251,12 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
- debug: 4.3.4
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2)
+ debug: 4.3.5
eslint: 8.57.0
- tsutils: 3.21.0(typescript@5.4.3)
- typescript: 5.4.3
+ tsutils: 3.21.0(typescript@5.5.2)
+ typescript: 5.5.2
transitivePeerDependencies:
- supports-color
dev: true
@@ -2226,7 +2266,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
- /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.3):
+ /@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.2):
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -2237,17 +2277,17 @@ packages:
dependencies:
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
- debug: 4.3.4
+ debug: 4.3.5
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.2
- tsutils: 3.21.0(typescript@5.4.3)
- typescript: 5.4.3
+ tsutils: 3.21.0(typescript@5.5.2)
+ typescript: 5.5.2
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.2):
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -2258,7 +2298,7 @@ packages:
'@types/semver': 7.5.8
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.2)
eslint: 8.57.0
eslint-scope: 5.1.1
semver: 7.6.2
@@ -2293,22 +2333,23 @@ packages:
negotiator: 0.6.3
dev: false
- /acorn-jsx@5.3.2(acorn@8.11.3):
+ /acorn-jsx@5.3.2(acorn@8.12.0):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.11.3
+ acorn: 8.12.0
- /acorn-walk@8.3.2:
- resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
+ /acorn-walk@8.3.3:
+ resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==}
engines: {node: '>=0.4.0'}
+ dependencies:
+ acorn: 8.12.0
dev: true
- /acorn@8.11.3:
- resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
+ /acorn@8.12.0:
+ resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==}
engines: {node: '>=0.4.0'}
- hasBin: true
/adm-zip@0.5.10:
resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==}
@@ -2319,12 +2360,12 @@ packages:
resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
engines: {node: '>= 14'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
dev: false
- /ajv-formats@2.1.1(ajv@8.13.0):
+ /ajv-formats@2.1.1(ajv@8.16.0):
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
peerDependencies:
ajv: ^8.0.0
@@ -2332,7 +2373,7 @@ packages:
ajv:
optional: true
dependencies:
- ajv: 8.13.0
+ ajv: 8.16.0
dev: false
/ajv@6.12.6:
@@ -2343,8 +2384,8 @@ packages:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
- /ajv@8.13.0:
- resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==}
+ /ajv@8.16.0:
+ resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==}
dependencies:
fast-deep-equal: 3.1.3
json-schema-traverse: 1.0.0
@@ -2400,10 +2441,6 @@ packages:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
- /any-promise@1.3.0:
- resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
- dev: false
-
/anymatch@2.0.0:
resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==}
dependencies:
@@ -2443,11 +2480,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /arr-flatten@1.1.0:
- resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/arr-union@3.1.0:
resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
engines: {node: '>=0.10.0'}
@@ -2482,7 +2514,6 @@ packages:
/atob@2.1.2:
resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
engines: {node: '>= 4.5.0'}
- hasBin: true
dev: true
/atomic-sleep@1.0.0:
@@ -2563,7 +2594,7 @@ packages:
resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
engines: {node: '>=8'}
dependencies:
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@istanbuljs/load-nyc-config': 1.1.0
'@istanbuljs/schema': 0.1.3
istanbul-lib-instrument: 5.2.1
@@ -2576,8 +2607,8 @@ packages:
resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==}
engines: {node: '>= 10.14.2'}
dependencies:
- '@babel/template': 7.24.0
- '@babel/types': 7.24.5
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.20.6
dev: true
@@ -2586,8 +2617,8 @@ packages:
resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@babel/template': 7.24.0
- '@babel/types': 7.24.5
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.20.6
dev: true
@@ -2596,7 +2627,7 @@ packages:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
cosmiconfig: 7.1.0
resolve: 1.22.8
dev: false
@@ -2711,39 +2742,20 @@ packages:
dependencies:
balanced-match: 1.0.2
- /braces@2.3.2:
- resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-flatten: 1.1.0
- array-unique: 0.3.2
- extend-shallow: 2.0.1
- fill-range: 4.0.0
- isobject: 3.0.1
- repeat-element: 1.1.4
- snapdragon: 0.8.2
- snapdragon-node: 2.1.1
- split-string: 3.1.0
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
dependencies:
fill-range: 7.1.1
- /browserslist@4.23.0:
- resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
+ /browserslist@4.23.1:
+ resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
dependencies:
- caniuse-lite: 1.0.30001621
- electron-to-chromium: 1.4.782
+ caniuse-lite: 1.0.30001639
+ electron-to-chromium: 1.4.815
node-releases: 2.0.14
- update-browserslist-db: 1.0.16(browserslist@4.23.0)
+ update-browserslist-db: 1.0.16(browserslist@4.23.1)
dev: true
/bs-logger@0.2.6:
@@ -2836,8 +2848,8 @@ packages:
engines: {node: '>=10'}
dev: true
- /caniuse-lite@1.0.30001621:
- resolution: {integrity: sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==}
+ /caniuse-lite@1.0.30001639:
+ resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==}
dev: true
/capture-exit@2.0.0:
@@ -2949,8 +2961,8 @@ packages:
d: 1.0.2
es5-ext: 0.10.64
es6-iterator: 2.0.3
- memoizee: 0.4.16
- timers-ext: 0.1.7
+ memoizee: 0.4.17
+ timers-ext: 0.1.8
dev: false
/cli-cursor@4.0.0:
@@ -3140,7 +3152,6 @@ packages:
/copyfiles@2.4.1:
resolution: {integrity: sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==}
- hasBin: true
dependencies:
glob: 7.2.3
minimatch: 3.1.2
@@ -3177,7 +3188,6 @@ packages:
/create-jest@29.7.0(@types/node@18.19.13):
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- hasBin: true
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
@@ -3239,9 +3249,9 @@ packages:
engines: {node: '>= 6'}
dev: false
- /cssstyle@3.0.0:
- resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==}
- engines: {node: '>=14'}
+ /cssstyle@4.0.1:
+ resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==}
+ engines: {node: '>=18'}
dependencies:
rrweb-cssom: 0.6.0
dev: false
@@ -3259,7 +3269,7 @@ packages:
engines: {node: '>=0.12'}
dependencies:
es5-ext: 0.10.64
- type: 2.7.2
+ type: 2.7.3
dev: false
/data-uri-to-buffer@4.0.1:
@@ -3322,6 +3332,18 @@ packages:
optional: true
dependencies:
ms: 2.1.2
+ dev: true
+
+ /debug@4.3.5:
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
/decimal.js@10.4.3:
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
@@ -3462,7 +3484,7 @@ packages:
resolution: {integrity: sha512-4SbcbedPXTciySXiSnNNLuJXpvxFe5nqivbiEHXyL8P/w0wx2uW7YXNjnYgjW0e2e6vy+L/tMISU/oAiXCl57Q==}
engines: {node: '>=10'}
dependencies:
- '@types/node': 20.12.12
+ '@types/node': 20.14.9
jszip: 3.10.1
nanoid: 5.0.7
xml: 1.0.1
@@ -3472,7 +3494,7 @@ packages:
/dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
csstype: 3.1.3
dev: false
@@ -3540,8 +3562,8 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
- /electron-to-chromium@1.4.782:
- resolution: {integrity: sha512-JUfU61e8tr+i5Y1FKXcKs+Xe+rJ+CEqm4cgv1kMihPE2EvYHmYyVr3Im/+1+Z5B29Be2EEGCZCwAc6Tazdl1Yg==}
+ /electron-to-chromium@1.4.815:
+ resolution: {integrity: sha512-OvpTT2ItpOXJL7IGcYakRjHCt8L5GrrN/wHCQsRB4PQa1X9fe+X9oen245mIId7s14xvArCGSTIq644yPUKKLg==}
dev: true
/emittery@0.13.1:
@@ -3626,48 +3648,49 @@ packages:
es6-symbol: 3.1.4
dev: false
- /esbuild-jest@0.5.0(esbuild@0.21.4):
+ /esbuild-jest@0.5.0(esbuild@0.22.0):
resolution: {integrity: sha512-AMZZCdEpXfNVOIDvURlqYyHwC8qC1/BFjgsrOiSL1eyiIArVtHL8YAC83Shhn16cYYoAWEW17yZn0W/RJKJKHQ==}
peerDependencies:
esbuild: '>=0.8.50'
dependencies:
'@babel/core': 7.24.0
- '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.0)
+ '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.0)
babel-jest: 26.6.3(@babel/core@7.24.0)
- esbuild: 0.21.4
+ esbuild: 0.22.0
transitivePeerDependencies:
- supports-color
dev: true
- /esbuild@0.21.4:
- resolution: {integrity: sha512-sFMcNNrj+Q0ZDolrp5pDhH0nRPN9hLIM3fRPwgbLYJeSHHgnXSnbV3xYgSVuOeLWH9c73VwmEverVzupIv5xuA==}
- engines: {node: '>=12'}
+ /esbuild@0.22.0:
+ resolution: {integrity: sha512-zNYA6bFZsVnsU481FnGAQjLDW0Pl/8BGG7EvAp15RzUvGC+ME7hf1q7LvIfStEQBz/iEHuBJCYcOwPmNCf1Tlw==}
+ engines: {node: '>=18'}
hasBin: true
requiresBuild: true
optionalDependencies:
- '@esbuild/aix-ppc64': 0.21.4
- '@esbuild/android-arm': 0.21.4
- '@esbuild/android-arm64': 0.21.4
- '@esbuild/android-x64': 0.21.4
- '@esbuild/darwin-arm64': 0.21.4
- '@esbuild/darwin-x64': 0.21.4
- '@esbuild/freebsd-arm64': 0.21.4
- '@esbuild/freebsd-x64': 0.21.4
- '@esbuild/linux-arm': 0.21.4
- '@esbuild/linux-arm64': 0.21.4
- '@esbuild/linux-ia32': 0.21.4
- '@esbuild/linux-loong64': 0.21.4
- '@esbuild/linux-mips64el': 0.21.4
- '@esbuild/linux-ppc64': 0.21.4
- '@esbuild/linux-riscv64': 0.21.4
- '@esbuild/linux-s390x': 0.21.4
- '@esbuild/linux-x64': 0.21.4
- '@esbuild/netbsd-x64': 0.21.4
- '@esbuild/openbsd-x64': 0.21.4
- '@esbuild/sunos-x64': 0.21.4
- '@esbuild/win32-arm64': 0.21.4
- '@esbuild/win32-ia32': 0.21.4
- '@esbuild/win32-x64': 0.21.4
+ '@esbuild/aix-ppc64': 0.22.0
+ '@esbuild/android-arm': 0.22.0
+ '@esbuild/android-arm64': 0.22.0
+ '@esbuild/android-x64': 0.22.0
+ '@esbuild/darwin-arm64': 0.22.0
+ '@esbuild/darwin-x64': 0.22.0
+ '@esbuild/freebsd-arm64': 0.22.0
+ '@esbuild/freebsd-x64': 0.22.0
+ '@esbuild/linux-arm': 0.22.0
+ '@esbuild/linux-arm64': 0.22.0
+ '@esbuild/linux-ia32': 0.22.0
+ '@esbuild/linux-loong64': 0.22.0
+ '@esbuild/linux-mips64el': 0.22.0
+ '@esbuild/linux-ppc64': 0.22.0
+ '@esbuild/linux-riscv64': 0.22.0
+ '@esbuild/linux-s390x': 0.22.0
+ '@esbuild/linux-x64': 0.22.0
+ '@esbuild/netbsd-x64': 0.22.0
+ '@esbuild/openbsd-arm64': 0.22.0
+ '@esbuild/openbsd-x64': 0.22.0
+ '@esbuild/sunos-x64': 0.22.0
+ '@esbuild/win32-arm64': 0.22.0
+ '@esbuild/win32-ia32': 0.22.0
+ '@esbuild/win32-x64': 0.22.0
dev: true
/escalade@3.1.2:
@@ -3700,7 +3723,7 @@ packages:
eslint: 8.57.0
dev: true
- /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.3):
+ /eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.5.2):
resolution: {integrity: sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
@@ -3713,8 +3736,8 @@ packages:
jest:
optional: true
dependencies:
- '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.3)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.5.2)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2)
eslint: 8.57.0
jest: 29.7.0(@types/node@18.19.13)
transitivePeerDependencies:
@@ -3744,10 +3767,9 @@ packages:
/eslint@8.57.0:
resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@eslint-community/regexpp': 4.10.0
+ '@eslint-community/regexpp': 4.11.0
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.57.0
'@humanwhocodes/config-array': 0.11.14
@@ -3757,7 +3779,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.3.5
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -3794,21 +3816,20 @@ packages:
d: 1.0.2
es5-ext: 0.10.64
event-emitter: 0.3.5
- type: 2.7.2
+ type: 2.7.3
dev: false
/espree@9.6.1:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
- acorn: 8.11.3
- acorn-jsx: 5.3.2(acorn@8.11.3)
+ acorn: 8.12.0
+ acorn-jsx: 5.3.2(acorn@8.12.0)
eslint-visitor-keys: 3.4.3
/esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
- hasBin: true
dev: true
/esquery@1.5.0:
@@ -3968,7 +3989,6 @@ packages:
/express-pino-logger@7.0.0:
resolution: {integrity: sha512-g8T6nhqq9L9AuwppymXa1rm6+A7xVUfkcEodXA+d2ILsM1uyoqSn83kpXE61v6JR2eFL8n878VyFDir1w2PuPw==}
- deprecated: use pino-http instead
dependencies:
pino-http: 6.6.0
dev: false
@@ -4028,7 +4048,7 @@ packages:
/ext@1.7.0:
resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
dependencies:
- type: 2.7.2
+ type: 2.7.3
dev: false
/extend-shallow@2.0.1:
@@ -4144,16 +4164,6 @@ packages:
debounce: 1.2.1
dev: true
- /fill-range@4.0.0:
- resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 2.0.1
- is-number: 3.0.0
- repeat-string: 1.6.1
- to-regex-range: 2.1.1
- dev: true
-
/fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
@@ -4226,8 +4236,8 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /foreground-child@3.1.1:
- resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ /foreground-child@3.2.1:
+ resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
engines: {node: '>=14'}
dependencies:
cross-spawn: 7.0.3
@@ -4368,15 +4378,15 @@ packages:
dependencies:
is-glob: 4.0.3
- /glob@10.4.1:
- resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==}
+ /glob@10.4.2:
+ resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==}
engines: {node: '>=16 || 14 >=14.18'}
- hasBin: true
dependencies:
- foreground-child: 3.1.1
- jackspeak: 3.1.2
- minimatch: 9.0.4
+ foreground-child: 3.2.1
+ jackspeak: 3.4.0
+ minimatch: 9.0.5
minipass: 7.1.2
+ package-json-from-dist: 1.0.0
path-scurry: 1.11.1
/glob@7.1.6:
@@ -4392,7 +4402,6 @@ packages:
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -4404,7 +4413,6 @@ packages:
/globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
- dev: true
/globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
@@ -4448,7 +4456,7 @@ packages:
object-hash: 1.3.1
dev: true
- /graphql-request@4.3.0(graphql@16.8.1):
+ /graphql-request@4.3.0(graphql@16.9.0):
resolution: {integrity: sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==}
peerDependencies:
graphql: 14 - 16
@@ -4456,19 +4464,19 @@ packages:
cross-fetch: 3.1.8
extract-files: 9.0.0
form-data: 3.0.1
- graphql: 16.8.1
+ graphql: 16.9.0
transitivePeerDependencies:
- encoding
dev: false
- /graphql-request@6.1.0(graphql@16.8.1):
+ /graphql-request@6.1.0(graphql@16.9.0):
resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==}
peerDependencies:
graphql: 14 - 16
dependencies:
- '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1)
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0)
cross-fetch: 3.1.8
- graphql: 16.8.1
+ graphql: 16.9.0
transitivePeerDependencies:
- encoding
dev: false
@@ -4480,8 +4488,8 @@ packages:
iterall: 1.3.0
dev: true
- /graphql@16.8.1:
- resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==}
+ /graphql@16.9.0:
+ resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==}
engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
dev: false
@@ -4555,7 +4563,6 @@ packages:
/he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
- hasBin: true
dev: false
/helmet@7.1.0:
@@ -4614,7 +4621,7 @@ packages:
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.1
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
dev: false
@@ -4649,12 +4656,12 @@ packages:
- debug
dev: false
- /https-proxy-agent@7.0.4:
- resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==}
+ /https-proxy-agent@7.0.5:
+ resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
engines: {node: '>= 14'}
dependencies:
agent-base: 7.1.1
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
dev: false
@@ -4672,7 +4679,6 @@ packages:
/husky@8.0.3:
resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==}
engines: {node: '>=14'}
- hasBin: true
dev: false
/iconv-lite@0.4.24:
@@ -4715,7 +4721,6 @@ packages:
/import-local@3.1.0:
resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
engines: {node: '>=8'}
- hasBin: true
dependencies:
pkg-dir: 4.2.0
resolve-cwd: 3.0.0
@@ -4727,7 +4732,6 @@ packages:
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
dependencies:
once: 1.4.0
wrappy: 1.0.2
@@ -4775,13 +4779,13 @@ packages:
/is-ci@2.0.0:
resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
- hasBin: true
dependencies:
ci-info: 2.0.0
dev: true
- /is-core-module@2.13.1:
- resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+ /is-core-module@2.14.0:
+ resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==}
+ engines: {node: '>= 0.4'}
dependencies:
hasown: 2.0.2
@@ -4818,7 +4822,6 @@ packages:
/is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
- hasBin: true
dev: true
/is-extendable@0.1.1:
@@ -4986,7 +4989,7 @@ packages:
engines: {node: '>=8'}
dependencies:
'@babel/core': 7.24.0
- '@babel/parser': 7.24.5
+ '@babel/parser': 7.24.7
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 6.3.1
@@ -4994,12 +4997,12 @@ packages:
- supports-color
dev: true
- /istanbul-lib-instrument@6.0.2:
- resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==}
+ /istanbul-lib-instrument@6.0.3:
+ resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
engines: {node: '>=10'}
dependencies:
'@babel/core': 7.24.0
- '@babel/parser': 7.24.5
+ '@babel/parser': 7.24.7
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 7.6.2
@@ -5020,7 +5023,7 @@ packages:
resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
engines: {node: '>=10'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
istanbul-lib-coverage: 3.2.2
source-map: 0.6.1
transitivePeerDependencies:
@@ -5039,8 +5042,8 @@ packages:
resolution: {integrity: sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==}
dev: true
- /jackspeak@3.1.2:
- resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==}
+ /jackspeak@3.4.0:
+ resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==}
engines: {node: '>=14'}
dependencies:
'@isaacs/cliui': 8.0.2
@@ -5275,7 +5278,7 @@ packages:
resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
'@jest/types': 29.6.3
'@types/stack-utils': 2.0.3
chalk: 4.1.2
@@ -5414,10 +5417,10 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@babel/core': 7.24.0
- '@babel/generator': 7.24.5
- '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.0)
- '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.0)
- '@babel/types': 7.24.5
+ '@babel/generator': 7.24.7
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.0)
+ '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.0)
+ '@babel/types': 7.24.7
'@jest/expect-utils': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
@@ -5550,12 +5553,11 @@ packages:
/js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
dependencies:
argparse: 2.0.1
- /jsdom@23.0.1:
- resolution: {integrity: sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==}
+ /jsdom@24.1.0:
+ resolution: {integrity: sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==}
engines: {node: '>=18'}
peerDependencies:
canvas: ^2.11.2
@@ -5563,17 +5565,17 @@ packages:
canvas:
optional: true
dependencies:
- cssstyle: 3.0.0
+ cssstyle: 4.0.1
data-urls: 5.0.0
decimal.js: 10.4.3
form-data: 4.0.0
html-encoding-sniffer: 4.0.0
http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.4
+ https-proxy-agent: 7.0.5
is-potential-custom-element-name: 1.0.1
nwsapi: 2.2.10
parse5: 7.1.2
- rrweb-cssom: 0.6.0
+ rrweb-cssom: 0.7.1
saxes: 6.0.0
symbol-tree: 3.2.4
tough-cookie: 4.1.4
@@ -5582,7 +5584,7 @@ packages:
whatwg-encoding: 3.1.1
whatwg-mimetype: 4.0.0
whatwg-url: 14.0.0
- ws: 8.17.0
+ ws: 8.17.1
xml-name-validator: 5.0.0
transitivePeerDependencies:
- bufferutil
@@ -5593,8 +5595,6 @@ packages:
/jsesc@2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
- hasBin: true
- dev: true
/json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -5602,24 +5602,23 @@ packages:
/json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
- /json-schema-to-typescript@14.0.4:
- resolution: {integrity: sha512-covPOp3hrbD+oEcMvDxP5Rh6xNZj7lOTZkXAeQoDyu1PuEl1A6oRZ3Sy05HN11vXXmdJ6gLh5P3Qz0mgMPTzzw==}
+ /json-schema-to-typescript@14.1.0:
+ resolution: {integrity: sha512-VIeAFQkn88gFh26MSHWG4uX7TjK/arTw0NVLMZn6vX1WrSF+P6xu5MyEdovu+9PJ0uiS5gm0wzwQvYW9eSq1uw==}
engines: {node: '>=16.0.0'}
hasBin: true
dependencies:
- '@apidevtools/json-schema-ref-parser': 11.6.2
+ '@apidevtools/json-schema-ref-parser': 11.6.4
'@types/json-schema': 7.0.15
'@types/lodash': 4.17.0
cli-color: 2.0.4
- glob: 10.4.1
+ glob: 10.4.2
is-glob: 4.0.3
js-yaml: 4.1.0
lodash: 4.17.21
minimist: 1.2.8
mkdirp: 3.0.1
- mz: 2.7.0
node-fetch: 3.3.2
- prettier: 3.2.5
+ prettier: 3.3.2
dev: false
/json-schema-traverse@0.4.1:
@@ -5643,13 +5642,11 @@ packages:
/json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
- hasBin: true
dev: true
/jsondiffpatch@0.5.0:
resolution: {integrity: sha512-Quz3MvAwHxVYNXsOByL7xI5EB2WYOeFswqaHIA3qOK3isRWTxiplBEocmmru6XmxDB2L7jDNYtYA4FyimoAFEw==}
engines: {node: '>=8.17.0'}
- hasBin: true
dependencies:
chalk: 3.0.0
diff-match-patch: 1.0.5
@@ -5761,7 +5758,6 @@ packages:
/lint-staged@15.0.2:
resolution: {integrity: sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==}
engines: {node: '>=18.12.0'}
- hasBin: true
dependencies:
chalk: 5.3.0
commander: 11.1.0
@@ -5785,7 +5781,7 @@ packages:
colorette: 2.0.20
eventemitter3: 5.0.1
log-update: 5.0.1
- rfdc: 1.3.1
+ rfdc: 1.4.1
wrap-ansi: 8.1.0
dev: true
@@ -5871,8 +5867,8 @@ packages:
js-tokens: 4.0.0
dev: false
- /lru-cache@10.2.2:
- resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
+ /lru-cache@10.3.0:
+ resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==}
engines: {node: 14 || >=16.14}
/lru-cache@5.1.1:
@@ -5916,8 +5912,8 @@ packages:
object-visit: 1.0.1
dev: true
- /marked@12.0.2:
- resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==}
+ /marked@13.0.1:
+ resolution: {integrity: sha512-7kBohS6GrZKvCsNXZyVVXSW7/hGBHe49ng99YPkDCckSUrrG7MSFLCexsRxptzOmyW2eT5dySh4Md1V6my52fA==}
engines: {node: '>= 18'}
hasBin: true
dev: false
@@ -5927,9 +5923,9 @@ packages:
engines: {node: '>= 0.6'}
dev: false
- /memoizee@0.4.16:
- resolution: {integrity: sha512-eOxQqGfogqdcQ2jeyLgsTp91bFOdbjaiJ1P0ZeDt1HHT1+ektm2u+raWDytppt8SMZ1fP2sIWlTbZukHhMKhiQ==}
- engines: {node: '>=.0.12'}
+ /memoizee@0.4.17:
+ resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==}
+ engines: {node: '>=0.12'}
dependencies:
d: 1.0.2
es5-ext: 0.10.64
@@ -5938,7 +5934,7 @@ packages:
is-promise: 2.2.2
lru-queue: 0.1.0
next-tick: 1.1.0
- timers-ext: 0.1.7
+ timers-ext: 0.1.8
dev: false
/merge-descriptors@1.0.1:
@@ -5964,7 +5960,7 @@ packages:
dependencies:
arr-diff: 4.0.0
array-unique: 0.3.2
- braces: 2.3.2
+ braces: 3.0.3
define-property: 2.0.2
extend-shallow: 3.0.2
extglob: 2.0.4
@@ -6007,19 +6003,16 @@ packages:
/mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
- hasBin: true
dev: false
/mime@2.6.0:
resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
engines: {node: '>=4.0.0'}
- hasBin: true
dev: true
/mime@3.0.0:
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
engines: {node: '>=10.0.0'}
- hasBin: true
dev: false
/mimic-fn@2.1.0:
@@ -6037,8 +6030,8 @@ packages:
dependencies:
brace-expansion: 1.1.11
- /minimatch@9.0.4:
- resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
+ /minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.1
@@ -6060,7 +6053,6 @@ packages:
/mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
- hasBin: true
dependencies:
minimist: 1.2.8
dev: false
@@ -6068,7 +6060,6 @@ packages:
/mkdirp@1.0.4:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
- hasBin: true
/mkdirp@3.0.1:
resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
@@ -6099,18 +6090,9 @@ packages:
xtend: 4.0.2
dev: false
- /mz@2.7.0:
- resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
- dependencies:
- any-promise: 1.3.0
- object-assign: 4.1.1
- thenify-all: 1.6.0
- dev: false
-
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
dev: false
/nanoid@5.0.7:
@@ -6162,7 +6144,7 @@ packages:
resolution: {integrity: sha512-yAyTfdeNJGGBFxWdzSKCBYxs5FxLbCg5X5Q4ets974hcQzG1+qCxvIyOo4j2Ry6MUlhWVMX4OoYDefAIIwupjw==}
engines: {node: '>= 10.13'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
json-stringify-safe: 5.0.1
propagate: 2.0.1
transitivePeerDependencies:
@@ -6172,7 +6154,6 @@ packages:
/node-dev@8.0.0:
resolution: {integrity: sha512-GXc0KxmBXfQxMPdymOui40yvC5W/RXFwmuUDT65wvTAO/o9wAsddYC8q4EHKxq3Qqt+uLS/g7XKdgVcsjyk9lw==}
engines: {node: '>=14'}
- hasBin: true
dependencies:
dateformat: 3.0.3
dynamic-dedupe: 0.3.0
@@ -6248,8 +6229,8 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /notifications-node-client@8.1.0:
- resolution: {integrity: sha512-2NJqPEcvlFRxuPMMWqoVXVUDz9EWl8dQVAhnLfRdv61PaHMqIRiQTdwn2qge8sC3kAsLnJoTl0qxhwDUarkYsQ==}
+ /notifications-node-client@8.2.0:
+ resolution: {integrity: sha512-XGmW2f2CroEwIUrPaTyShpF8pLlu79rBnwWns1uPGs27LbZdzNPJF1BzPl3cG3Tsu3nVlaWeXJJYAE+ALryalA==}
engines: {node: '>=14.17.3', npm: '>=6.14.13'}
dependencies:
axios: 1.6.8
@@ -6312,8 +6293,9 @@ packages:
engines: {node: '>= 0.10.0'}
dev: true
- /object-inspect@1.13.1:
- resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+ /object-inspect@1.13.2:
+ resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+ engines: {node: '>= 0.4'}
/object-is@1.1.6:
resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
@@ -6433,6 +6415,9 @@ packages:
engines: {node: '>=6'}
dev: true
+ /package-json-from-dist@1.0.0:
+ resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
+
/pako@1.0.11:
resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
dev: false
@@ -6447,7 +6432,7 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@@ -6534,7 +6519,7 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
dependencies:
- lru-cache: 10.2.2
+ lru-cache: 10.3.0
minipass: 7.1.2
/path-to-regexp@0.1.7:
@@ -6559,7 +6544,6 @@ packages:
/pidtree@0.6.0:
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
engines: {node: '>=0.10'}
- hasBin: true
dev: true
/pino-abstract-transport@0.5.0:
@@ -6589,9 +6573,8 @@ packages:
resolution: {integrity: sha512-qGIG4fYMqokNb5Ho21YNH9uB4NELYTb9oADiuzoL2+n1gs6QyoUKaTN+7eqT4VDC6syvcyark3YP9o2UmCk32A==}
dev: false
- /pino-pretty@11.1.0:
- resolution: {integrity: sha512-PjBzFL7IMSl1YkS9cSVWC+4gONmW0Fi+fvUzy74zK6RJHk4RkfW+e22NydRrGEtBRa5n6/oPNLPqjUeQrzqcLQ==}
- hasBin: true
+ /pino-pretty@11.2.1:
+ resolution: {integrity: sha512-O05NuD9tkRasFRWVaF/uHLOvoRDFD7tb5VMertr78rbsYFjYp48Vg3477EshVAF5eZaEw+OpDl/tu+B0R5o+7g==}
dependencies:
colorette: 2.0.20
dateformat: 4.6.3
@@ -6623,7 +6606,6 @@ packages:
/pino@7.11.0:
resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==}
- hasBin: true
dependencies:
atomic-sleep: 1.0.0
fast-redact: 3.5.0
@@ -6667,11 +6649,10 @@ packages:
/prettier@3.2.4:
resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==}
engines: {node: '>=14'}
- hasBin: true
dev: true
- /prettier@3.2.5:
- resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
+ /prettier@3.3.2:
+ resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==}
engines: {node: '>=14'}
hasBin: true
dev: false
@@ -6786,7 +6767,6 @@ packages:
/querystring@0.2.0:
resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==}
engines: {node: '>=0.4.x'}
- deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
dev: false
/querystringify@2.2.0:
@@ -6846,7 +6826,7 @@ packages:
react-dom:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -6940,16 +6920,6 @@ packages:
resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
dev: true
- /repeat-element@1.1.4:
- resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /repeat-string@1.6.1:
- resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
- engines: {node: '>=0.10'}
- dev: true
-
/require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -6981,7 +6951,6 @@ packages:
/resolve-url@0.2.1:
resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
- deprecated: https://github.com/lydell/resolve-url#deprecated
dev: true
/resolve.exports@2.0.2:
@@ -6991,9 +6960,8 @@ packages:
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
- hasBin: true
dependencies:
- is-core-module: 2.13.1
+ is-core-module: 2.14.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -7014,36 +6982,36 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- /rfdc@1.3.1:
- resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==}
+ /rfdc@1.4.1:
+ resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
dev: true
/rimraf@2.7.1:
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
- hasBin: true
dependencies:
glob: 7.2.3
dev: true
/rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- deprecated: Rimraf versions prior to v4 are no longer supported
- hasBin: true
dependencies:
glob: 7.2.3
/rimraf@5.0.5:
resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==}
engines: {node: '>=14'}
- hasBin: true
dependencies:
- glob: 10.4.1
+ glob: 10.4.2
dev: true
/rrweb-cssom@0.6.0:
resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
dev: false
+ /rrweb-cssom@0.7.1:
+ resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==}
+ dev: false
+
/rsvp@4.8.5:
resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==}
engines: {node: 6.* || >= 7.*}
@@ -7079,8 +7047,6 @@ packages:
/sane@4.1.0:
resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==}
engines: {node: 6.* || 8.* || >= 10.*}
- deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
- hasBin: true
dependencies:
'@cnakazawa/watch': 1.0.4
anymatch: 2.0.0
@@ -7099,8 +7065,8 @@ packages:
resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==}
dev: false
- /sax@1.3.0:
- resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
+ /sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
dev: false
/saxes@6.0.0:
@@ -7122,18 +7088,15 @@ packages:
/semver@5.7.2:
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
- hasBin: true
dev: true
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
dev: true
/semver@7.6.2:
resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
- hasBin: true
/send@0.18.0:
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
@@ -7240,7 +7203,7 @@ packages:
call-bind: 1.0.7
es-errors: 1.3.0
get-intrinsic: 1.2.4
- object-inspect: 1.13.1
+ object-inspect: 1.13.2
/signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -7272,22 +7235,6 @@ packages:
is-fullwidth-code-point: 4.0.0
dev: true
- /snapdragon-node@2.1.1:
- resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- define-property: 1.0.0
- isobject: 3.0.1
- snapdragon-util: 3.0.1
- dev: true
-
- /snapdragon-util@3.0.1:
- resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- kind-of: 3.2.2
- dev: true
-
/snapdragon@0.8.2:
resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
engines: {node: '>=0.10.0'}
@@ -7317,7 +7264,6 @@ packages:
/source-map-resolve@0.5.3:
resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
- deprecated: See https://github.com/lydell/source-map-resolve#deprecated
dependencies:
atob: 2.1.2
decode-uri-component: 0.2.2
@@ -7342,7 +7288,6 @@ packages:
/source-map-url@0.4.1:
resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
- deprecated: See https://github.com/lydell/source-map-url#deprecated
dev: true
/source-map@0.5.7:
@@ -7512,7 +7457,7 @@ packages:
dependencies:
component-emitter: 1.3.1
cookiejar: 2.1.4
- debug: 4.3.4
+ debug: 4.3.5
fast-safe-stringify: 2.1.1
form-data: 4.0.0
formidable: 3.5.1
@@ -7559,7 +7504,6 @@ packages:
/swagger-jsdoc@6.2.8(openapi-types@12.1.3):
resolution: {integrity: sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==}
engines: {node: '>=12.0.0'}
- hasBin: true
dependencies:
commander: 6.2.0
doctrine: 3.0.0
@@ -7580,8 +7524,8 @@ packages:
- openapi-types
dev: false
- /swagger-ui-dist@5.17.12:
- resolution: {integrity: sha512-gHzs6CYQjgm0rpnFJGsjvWLua6znq+nipi89RDcu0a8R8JPXuVQrybVRBoOFmZ8mVTo9uPJDWgEYqnJRl4dHCQ==}
+ /swagger-ui-dist@5.17.14:
+ resolution: {integrity: sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw==}
dev: false
/swagger-ui-express@5.0.0(express@4.19.2):
@@ -7591,7 +7535,7 @@ packages:
express: '>=4.0.0 || >=5.0.0-beta'
dependencies:
express: 4.19.2
- swagger-ui-dist: 5.17.12
+ swagger-ui-dist: 5.17.14
dev: false
/symbol-tree@3.2.4:
@@ -7616,19 +7560,6 @@ packages:
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
- /thenify-all@1.6.0:
- resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
- engines: {node: '>=0.8'}
- dependencies:
- thenify: 3.3.1
- dev: false
-
- /thenify@3.3.1:
- resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
- dependencies:
- any-promise: 1.3.0
- dev: false
-
/thread-stream@0.15.2:
resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==}
dependencies:
@@ -7642,8 +7573,9 @@ packages:
xtend: 4.0.2
dev: false
- /timers-ext@0.1.7:
- resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==}
+ /timers-ext@0.1.8:
+ resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==}
+ engines: {node: '>=0.12'}
dependencies:
es5-ext: 0.10.64
next-tick: 1.1.0
@@ -7664,14 +7596,6 @@ packages:
kind-of: 3.2.2
dev: true
- /to-regex-range@2.1.1:
- resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-number: 3.0.0
- repeat-string: 1.6.1
- dev: true
-
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -7716,10 +7640,9 @@ packages:
/tree-kill@1.2.2:
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
- hasBin: true
dev: true
- /ts-jest@29.1.1(@babel/core@7.24.0)(esbuild@0.21.4)(jest@29.7.0)(typescript@5.4.3):
+ /ts-jest@29.1.1(@babel/core@7.24.0)(esbuild@0.22.0)(jest@29.7.0)(typescript@5.5.2):
resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
@@ -7742,7 +7665,7 @@ packages:
dependencies:
'@babel/core': 7.24.0
bs-logger: 0.2.6
- esbuild: 0.21.4
+ esbuild: 0.22.0
fast-json-stable-stringify: 2.1.0
jest: 29.7.0(@types/node@18.19.13)
jest-util: 29.7.0
@@ -7750,11 +7673,11 @@ packages:
lodash.memoize: 4.1.2
make-error: 1.3.6
semver: 7.6.2
- typescript: 5.4.3
+ typescript: 5.5.2
yargs-parser: 21.1.1
dev: true
- /ts-node-dev@2.0.0(@types/node@18.19.13)(typescript@5.4.3):
+ /ts-node-dev@2.0.0(@types/node@18.19.13)(typescript@5.5.2):
resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==}
engines: {node: '>=0.8.0'}
hasBin: true
@@ -7773,16 +7696,16 @@ packages:
rimraf: 2.7.1
source-map-support: 0.5.21
tree-kill: 1.2.2
- ts-node: 10.9.2(@types/node@18.19.13)(typescript@5.4.3)
+ ts-node: 10.9.2(@types/node@18.19.13)(typescript@5.5.2)
tsconfig: 7.0.0
- typescript: 5.4.3
+ typescript: 5.5.2
transitivePeerDependencies:
- '@swc/core'
- '@swc/wasm'
- '@types/node'
dev: true
- /ts-node@10.9.2(@types/node@18.19.13)(typescript@5.4.3):
+ /ts-node@10.9.2(@types/node@18.19.13)(typescript@5.5.2):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
@@ -7802,13 +7725,13 @@ packages:
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 18.19.13
- acorn: 8.11.3
- acorn-walk: 8.3.2
+ acorn: 8.12.0
+ acorn-walk: 8.3.3
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
- typescript: 5.4.3
+ typescript: 5.5.2
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
dev: true
@@ -7826,19 +7749,23 @@ packages:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: true
+ /tslib@2.6.3:
+ resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
+ dev: false
+
/tsscmp@1.0.6:
resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
engines: {node: '>=0.6.x'}
dev: false
- /tsutils@3.21.0(typescript@5.4.3):
+ /tsutils@3.21.0(typescript@5.5.2):
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
- typescript: 5.4.3
+ typescript: 5.5.2
dev: true
/type-check@0.4.0:
@@ -7871,8 +7798,8 @@ packages:
engines: {node: '>=16'}
dev: false
- /type-fest@4.18.2:
- resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==}
+ /type-fest@4.21.0:
+ resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==}
engines: {node: '>=16'}
dev: false
@@ -7884,8 +7811,8 @@ packages:
mime-types: 2.1.35
dev: false
- /type@2.7.2:
- resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
+ /type@2.7.3:
+ resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==}
dev: false
/typedarray-to-buffer@3.1.5:
@@ -7898,8 +7825,8 @@ packages:
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
dev: false
- /typescript@5.4.3:
- resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==}
+ /typescript@5.5.2:
+ resolution: {integrity: sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==}
engines: {node: '>=14.17'}
hasBin: true
dev: true
@@ -7944,13 +7871,13 @@ packages:
engines: {node: '>=8'}
dev: false
- /update-browserslist-db@1.0.16(browserslist@4.23.0):
+ /update-browserslist-db@1.0.16(browserslist@4.23.1):
resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.1
escalade: 3.1.2
picocolors: 1.0.1
dev: true
@@ -7962,7 +7889,6 @@ packages:
/urix@0.1.0:
resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
- deprecated: Please see https://github.com/lydell/urix#deprecated
dev: true
/url-parse@1.5.10:
@@ -8003,6 +7929,10 @@ packages:
engines: {node: '>= 0.4.0'}
dev: false
+ /uuid@10.0.0:
+ resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
+ hasBin: true
+
/uuid@8.0.0:
resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==}
hasBin: true
@@ -8013,16 +7943,12 @@ packages:
hasBin: true
dev: true
- /uuid@9.0.1:
- resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
- hasBin: true
-
/v8-compile-cache-lib@3.0.1:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
dev: true
- /v8-to-istanbul@9.2.0:
- resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==}
+ /v8-to-istanbul@9.3.0:
+ resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
engines: {node: '>=10.12.0'}
dependencies:
'@jridgewell/trace-mapping': 0.3.25
@@ -8111,7 +8037,6 @@ packages:
/which@1.3.1:
resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
- hasBin: true
dependencies:
isexe: 2.0.0
dev: true
@@ -8119,7 +8044,6 @@ packages:
/which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
- hasBin: true
dependencies:
isexe: 2.0.0
@@ -8163,8 +8087,8 @@ packages:
signal-exit: 3.0.7
dev: true
- /ws@8.17.0:
- resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==}
+ /ws@8.17.1:
+ resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
@@ -8180,7 +8104,7 @@ packages:
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
hasBin: true
dependencies:
- sax: 1.3.0
+ sax: 1.4.1
dev: false
/xml-name-validator@5.0.0:
@@ -8284,7 +8208,6 @@ packages:
/z-schema@5.0.5:
resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==}
engines: {node: '>=8.0.0'}
- hasBin: true
dependencies:
lodash.get: 4.4.2
lodash.isequal: 4.5.0
@@ -8301,33 +8224,34 @@ packages:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
dev: false
- github.com/theopensystemslab/planx-core/550634a:
- resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/550634a}
+ github.com/theopensystemslab/planx-core/6c2cc59:
+ resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/6c2cc59}
name: '@opensystemslab/planx-core'
version: 1.0.0
+ prepare: true
requiresBuild: true
dependencies:
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
- '@mui/material': 5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)
- '@types/geojson': 7946.0.14
- ajv: 8.13.0
- ajv-formats: 2.1.1(ajv@8.13.0)
+ '@formatjs/intl-listformat': 7.5.7
+ '@mui/material': 5.15.21(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)
+ ajv: 8.16.0
+ ajv-formats: 2.1.1(ajv@8.16.0)
cheerio: 1.0.0-rc.12
copyfiles: 2.4.1
docx: 8.5.0
eslint: 8.57.0
fast-xml-parser: 4.4.0
- graphql: 16.8.1
- graphql-request: 6.1.0(graphql@16.8.1)
- json-schema-to-typescript: 14.0.4
+ graphql: 16.9.0
+ graphql-request: 6.1.0(graphql@16.9.0)
+ json-schema-to-typescript: 14.1.0
lodash: 4.17.21
- marked: 12.0.2
- prettier: 3.2.5
+ marked: 13.0.1
+ prettier: 3.3.2
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- type-fest: 4.18.2
- uuid: 9.0.1
+ type-fest: 4.21.0
+ uuid: 10.0.0
zod: 3.23.8
transitivePeerDependencies:
- '@types/react'
diff --git a/api.planx.uk/tests/mocks/inviteToPayData.ts b/api.planx.uk/tests/mocks/inviteToPayData.ts
index 3393578236..6f0ad73dcf 100644
--- a/api.planx.uk/tests/mocks/inviteToPayData.ts
+++ b/api.planx.uk/tests/mocks/inviteToPayData.ts
@@ -50,6 +50,7 @@ export const validSession: Session = {
flow: {
id: "741a2372-b0b4-4f30-98a8-7c98c6464954",
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
},
};
@@ -77,11 +78,12 @@ export const validPaymentRequest = {
email: "the-agent@opensystemslab.io",
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
team: {
name: "Buckinghamshire",
slug: "buckinghamshire",
domain: "planningservices.buckinghamshire.gov.uk",
- notifyPersonalisation: {
+ settings: {
helpEmail: "help@council.gov.uk",
helpPhone: "123",
helpOpeningHours: "9a-5p",
@@ -184,7 +186,7 @@ export const flowWithInviteToPay: Flow["data"] = {
ChecklistOptionTwo: {
data: {
text: "Build new",
- val: "build",
+ val: "new",
},
type: 200,
},
diff --git a/api.planx.uk/tests/mocks/inviteToPayMocks.ts b/api.planx.uk/tests/mocks/inviteToPayMocks.ts
index ada75b529c..c8d073a825 100644
--- a/api.planx.uk/tests/mocks/inviteToPayMocks.ts
+++ b/api.planx.uk/tests/mocks/inviteToPayMocks.ts
@@ -19,6 +19,7 @@ export const validSessionQueryMock = {
flow: {
id: validSession.flow.id,
slug: validSession.flow.slug,
+ name: validSession.flow.name,
},
},
},
@@ -37,6 +38,7 @@ export const detailedValidSessionQueryMock = {
flow: {
id: validSession.flow.id,
slug: validSession.flow.slug,
+ name: validSession.flow.name,
},
},
},
diff --git a/api.planx.uk/tests/mocks/saveAndReturnMocks.ts b/api.planx.uk/tests/mocks/saveAndReturnMocks.ts
index d1361d3760..0fcdc37285 100644
--- a/api.planx.uk/tests/mocks/saveAndReturnMocks.ts
+++ b/api.planx.uk/tests/mocks/saveAndReturnMocks.ts
@@ -1,21 +1,23 @@
import { v4 as uuidV4 } from "uuid";
import type { LowCalSession, Flow } from "../../types";
+import { Team } from "@opensystemslab/planx-core/types";
export const mockTeam = {
id: 1,
slug: "test-team",
name: "Test Team",
- notifyPersonalisation: {
+ settings: {
helpEmail: "example@council.gov.uk",
helpPhone: "(01234) 567890",
helpOpeningHours: "Monday - Friday, 9am - 5pm",
emailReplyToId: "727d48fa-cb8a-42f9-b8b2-55032f3bb451",
},
-};
+} as Team;
export const mockFlow: Flow = {
id: "dcfd4f07-76da-4b67-9822-2aca92b27551",
slug: "slug",
+ name: "Flow Name",
team_id: mockTeam.id,
data: {
_root: {
@@ -63,6 +65,7 @@ export const mockLowcalSession: LowCalSession = {
},
flow: {
slug: "apply-for-a-lawful-development-certificate",
+ name: "Apply for a Lawful Development Certificate",
team: mockTeam,
},
flow_id: mockFlow.id,
diff --git a/api.planx.uk/types.ts b/api.planx.uk/types.ts
index a5d5c2e5da..60c8272418 100644
--- a/api.planx.uk/types.ts
+++ b/api.planx.uk/types.ts
@@ -1,5 +1,5 @@
import { PaymentRequest } from "@opensystemslab/planx-core/dist/types";
-import { GovUKPayment } from "@opensystemslab/planx-core/types";
+import { GovUKPayment, Team } from "@opensystemslab/planx-core/types";
/**
* @deprecated Migrating to Node from planx-core
@@ -17,6 +17,7 @@ export interface Node {
export interface Flow {
id: string;
slug: string;
+ name: string;
data: {
[key: string]: Node;
};
@@ -48,20 +49,6 @@ export interface UserData {
export type Breadcrumb = Record;
-export interface Team {
- id: number;
- slug: string;
- name: string;
- domain?: string;
- boundaryBBox?: object;
- notifyPersonalisation: {
- helpEmail: string;
- helpPhone: string;
- helpOpeningHours: string;
- emailReplyToId: string;
- };
-}
-
export interface Passport {
data: Record;
}
@@ -85,6 +72,7 @@ export interface LowCalSession {
has_user_saved: boolean;
flow: {
slug: string;
+ name: string;
team: Team;
};
lockedAt?: string;
diff --git a/doc/how-to/how-to-add-a-list-component-schema.md b/doc/how-to/how-to-add-a-list-component-schema.md
new file mode 100644
index 0000000000..fc1b712f72
--- /dev/null
+++ b/doc/how-to/how-to-add-a-list-component-schema.md
@@ -0,0 +1,75 @@
+# How to add schemas to the List component
+
+## Context
+The List component allows us to ask many questions on the same page, and for the user to add many responses or items to each prompt - replacing the complex & dense tables for topics like residential units found in paper application forms.
+
+In order to support Minor Planning Permission service development quickly, we decided that the first iterations of the List component would read from controlled schemas maintained in code, rather than allow for fully customisable, generic schemas to be written in the Editor.
+
+The ideal maintainers of these schemas are still the services team though, rather than developers. This doc details the process for adding new schemas or editing existing ones.
+
+## Process
+1. **GitHub** - Navigate to `editor.planx.uk/src/@planx/components/List/schemas`. Open an existing file, or add a `.ts` file directly to this folder or a subfolder within it. Folder organisation is flexible.
+
+2. **GitHub** - In the `.ts` file, ensure the schema has this basic structure:
+```ts
+import { Schema } from "@planx/components/List/model";
+
+export const YourSchemasName: Schema = {
+ type: "Title (singular if no max, plural if max = 1)",
+ fields: [
+ // List of questions to ask, see possible field types below
+ ],
+ min: 1,
+ max: 10, // optional
+} as const;
+```
+
+The fields of the schema can be one of 3 types: `question`, `text` or `number`. Questions will display as radio buttons when there are two options, and as select dropdowns when there are more than 2 options.
+
+This is the possible shape of each varity of field:
+```ts
+{
+ type: "question",
+ required: true, // optional
+ data: {
+ title: "Are you planting a tree?",
+ fn: "passportKey", // note that dot-separation is not supported yet
+ options: [
+ // id is internal ref, text is displayed to user, and val (optional) is recorded in passport if provided
+ { id: "yes", data: { text: "Yes", val: "true" } },
+ { id: "no", data: { text: "No", val: "false" } },
+ ],
+ },
+},
+{
+ type: "text",
+ required: true,
+ data: {
+ title: "What type of tree are you planting?",
+ fn: "passportKey",
+ type: "short", // must be one of: "short", "long", "extralong", "phone", "email"
+ },
+},
+{
+ type: "number",
+ required: true,
+ data: {
+ title: "How tall is the tree you are planting?",
+ fn: "passportKey",
+ units: "m", // optional
+ allowNegatives: false // optional
+ },
+},
+```
+
+3. **GitHub** - When your schema is finalised, you'll want to make it selectable from within the Editor modal. Add it to the `SCHEMAS` list in `editor.planx.uk/src/@planx/components/List/Editor.tsx` to do so.
+
+4. **Editor** - "Update" or delete/recreate your List component to reference the new schema
+
+## Good-to-knows & special cases
+
+- When a schema sets `max: 1`, we'll hide the "+ Add another" button and index number from the title of the card. This allows the List component to essentially function like a single "Page" of questions, rather than many responses to the same prompt
+
+- When your schema includes a field that sets `fn: identicalUnits`, we'll automatically sum the total number of _units_ and add it to the passport as `{listFn}.total.units`
+
+- When your schema includes a field that sets `fn: identicalUnits` _and_ `fn: development`, we'll automatically sum all units _by their development type_. These passport variables will look like `{listFn}.total.units.{developmentType}`. Planx's Calculate component/MathJS cannot handle list iteration and grouping, so this exposes necessary complex sums that can then be further processed in the flow using Calculate later
diff --git a/e2e/package.json b/e2e/package.json
index c5888413e4..5bdc4466f5 100644
--- a/e2e/package.json
+++ b/e2e/package.json
@@ -20,6 +20,7 @@
"prettier -w ./tests"
]
},
+ "packageManager": "pnpm@8.6.6",
"devDependencies": {
"@types/node": "18.16.1",
"@typescript-eslint/eslint-plugin": "^5.62.0",
@@ -27,7 +28,7 @@
"eslint": "^8.57.0",
"husky": "^8.0.3",
"lint-staged": "^15.2.0",
- "prettier": "^3.2.4",
- "typescript": "^5.4.3"
+ "prettier": "^3.3.2",
+ "typescript": "^5.5.3"
}
}
diff --git a/e2e/pnpm-lock.yaml b/e2e/pnpm-lock.yaml
index ade62712c7..59aea1f411 100644
--- a/e2e/pnpm-lock.yaml
+++ b/e2e/pnpm-lock.yaml
@@ -10,10 +10,10 @@ devDependencies:
version: 18.16.1
'@typescript-eslint/eslint-plugin':
specifier: ^5.62.0
- version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.3)
+ version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.5.3)
'@typescript-eslint/parser':
specifier: ^5.62.0
- version: 5.62.0(eslint@8.57.0)(typescript@5.4.3)
+ version: 5.62.0(eslint@8.57.0)(typescript@5.5.3)
eslint:
specifier: ^8.57.0
version: 8.57.0
@@ -24,11 +24,11 @@ devDependencies:
specifier: ^15.2.0
version: 15.2.0
prettier:
- specifier: ^3.2.4
- version: 3.2.4
+ specifier: ^3.3.2
+ version: 3.3.2
typescript:
- specifier: ^5.4.3
- version: 5.4.3
+ specifier: ^5.5.3
+ version: 5.5.3
packages:
@@ -122,7 +122,7 @@ packages:
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
dev: true
- /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.5.3):
resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -134,23 +134,23 @@ packages:
optional: true
dependencies:
'@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
'@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
debug: 4.3.4
eslint: 8.57.0
graphemer: 1.4.0
ignore: 5.3.1
natural-compare-lite: 1.4.0
semver: 7.6.0
- tsutils: 3.21.0(typescript@5.4.3)
- typescript: 5.4.3
+ tsutils: 3.21.0(typescript@5.5.3)
+ typescript: 5.5.3
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.3):
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -162,10 +162,10 @@ packages:
dependencies:
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3)
debug: 4.3.4
eslint: 8.57.0
- typescript: 5.4.3
+ typescript: 5.5.3
transitivePeerDependencies:
- supports-color
dev: true
@@ -178,7 +178,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.62.0
dev: true
- /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.5.3):
resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -188,12 +188,12 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.3)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.3)
debug: 4.3.4
eslint: 8.57.0
- tsutils: 3.21.0(typescript@5.4.3)
- typescript: 5.4.3
+ tsutils: 3.21.0(typescript@5.5.3)
+ typescript: 5.5.3
transitivePeerDependencies:
- supports-color
dev: true
@@ -203,7 +203,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
- /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.3):
+ /@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.3):
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -218,13 +218,13 @@ packages:
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.0
- tsutils: 3.21.0(typescript@5.4.3)
- typescript: 5.4.3
+ tsutils: 3.21.0(typescript@5.5.3)
+ typescript: 5.5.3
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.3):
+ /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.3):
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -235,7 +235,7 @@ packages:
'@types/semver': 7.5.8
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3)
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.3)
eslint: 8.57.0
eslint-scope: 5.1.1
semver: 7.6.0
@@ -326,11 +326,11 @@ packages:
concat-map: 0.0.1
dev: true
- /braces@3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ /braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
dependencies:
- fill-range: 7.0.1
+ fill-range: 7.1.1
dev: true
/callsites@3.1.0:
@@ -599,8 +599,8 @@ packages:
flat-cache: 3.2.0
dev: true
- /fill-range@7.0.1:
- resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ /fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
@@ -888,7 +888,7 @@ packages:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
dependencies:
- braces: 3.0.2
+ braces: 3.0.3
picomatch: 2.3.1
dev: true
@@ -1021,8 +1021,8 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
- /prettier@3.2.4:
- resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==}
+ /prettier@3.3.2:
+ resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==}
engines: {node: '>=14'}
hasBin: true
dev: true
@@ -1181,14 +1181,14 @@ packages:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: true
- /tsutils@3.21.0(typescript@5.4.3):
+ /tsutils@3.21.0(typescript@5.5.3):
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'}
peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies:
tslib: 1.14.1
- typescript: 5.4.3
+ typescript: 5.5.3
dev: true
/type-check@0.4.0:
@@ -1203,8 +1203,8 @@ packages:
engines: {node: '>=10'}
dev: true
- /typescript@5.4.3:
- resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==}
+ /typescript@5.5.3:
+ resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==}
engines: {node: '>=14.17'}
hasBin: true
dev: true
diff --git a/e2e/tests/api-driven/package.json b/e2e/tests/api-driven/package.json
index 5421a8e761..949cf29c56 100644
--- a/e2e/tests/api-driven/package.json
+++ b/e2e/tests/api-driven/package.json
@@ -4,9 +4,10 @@
"test": "cucumber-js --tags 'not @regression'",
"test:regression": "cucumber-js"
},
+ "packageManager": "pnpm@8.6.6",
"dependencies": {
"@cucumber/cucumber": "^9.3.0",
- "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5710d52",
+ "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#6c2cc59",
"axios": "^1.6.8",
"dotenv": "^16.3.1",
"dotenv-expand": "^10.0.0",
diff --git a/e2e/tests/api-driven/pnpm-lock.yaml b/e2e/tests/api-driven/pnpm-lock.yaml
index 3005fa893d..9db04d5c9a 100644
--- a/e2e/tests/api-driven/pnpm-lock.yaml
+++ b/e2e/tests/api-driven/pnpm-lock.yaml
@@ -9,8 +9,8 @@ dependencies:
specifier: ^9.3.0
version: 9.3.0
'@opensystemslab/planx-core':
- specifier: git+https://github.com/theopensystemslab/planx-core#5710d52
- version: github.com/theopensystemslab/planx-core/5710d52
+ specifier: git+https://github.com/theopensystemslab/planx-core#6c2cc59
+ version: github.com/theopensystemslab/planx-core/6c2cc59
axios:
specifier: ^1.6.8
version: 1.6.8
@@ -49,8 +49,8 @@ devDependencies:
packages:
- /@apidevtools/json-schema-ref-parser@11.6.2:
- resolution: {integrity: sha512-ENUdLLT04aDbbHCRwfKf8gR67AhV0CdFrOAtk+FcakBAgaq6ds3HLK9X0BCyiFUz8pK9uP+k6YZyJaGG7Mt7vQ==}
+ /@apidevtools/json-schema-ref-parser@11.6.4:
+ resolution: {integrity: sha512-9K6xOqeevacvweLGik6LnZCb1fBtCOSIWQs8d096XGeqoLKC33UVMGz9+77Gw44KvbH4pKcQPWo4ZpxkXYj05w==}
engines: {node: '>= 16'}
dependencies:
'@jsdevtools/ono': 7.1.3
@@ -58,54 +58,131 @@ packages:
js-yaml: 4.1.0
dev: false
- /@babel/code-frame@7.24.2:
- resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
+ /@babel/code-frame@7.24.7:
+ resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/highlight': 7.24.5
+ '@babel/highlight': 7.24.7
picocolors: 1.0.1
dev: false
- /@babel/helper-module-imports@7.24.3:
- resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==}
+ /@babel/generator@7.24.7:
+ resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 2.5.2
dev: false
- /@babel/helper-string-parser@7.24.1:
- resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
+ /@babel/helper-environment-visitor@7.24.7:
+ resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/helper-function-name@7.24.7:
+ resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/helper-hoist-variables@7.24.7:
+ resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/helper-module-imports@7.24.7:
+ resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
dev: false
- /@babel/helper-validator-identifier@7.24.5:
- resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
+ /@babel/helper-split-export-declaration@7.24.7:
+ resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.7
dev: false
- /@babel/highlight@7.24.5:
- resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
+ /@babel/helper-string-parser@7.24.7:
+ resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==}
+ engines: {node: '>=6.9.0'}
+ dev: false
+
+ /@babel/helper-validator-identifier@7.24.7:
+ resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
+ engines: {node: '>=6.9.0'}
+ dev: false
+
+ /@babel/highlight@7.24.7:
+ resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.0.1
dev: false
- /@babel/runtime@7.24.5:
- resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
+ /@babel/parser@7.24.7:
+ resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/runtime@7.24.7:
+ resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.1
dev: false
- /@babel/types@7.24.5:
- resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
+ /@babel/template@7.24.7:
+ resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-string-parser': 7.24.1
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/code-frame': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/traverse@7.24.7:
+ resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-hoist-variables': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
+ debug: 4.3.5(supports-color@8.1.1)
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/types@7.24.7:
+ resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
dev: false
@@ -136,7 +213,6 @@ packages:
/@cucumber/cucumber@9.3.0:
resolution: {integrity: sha512-8QvcQVJzRra3pZpV0dITPcFuT2yYH0C1fEgzDlqe6+Zpz9k3z+ov9xUWEYgKp0VMx65JxNKAYYYWmG6cWOiYQQ==}
engines: {node: 14 || 16 || >=18}
- hasBin: true
dependencies:
'@cucumber/ci-environment': 9.2.0
'@cucumber/cucumber-expressions': 16.1.2
@@ -152,7 +228,7 @@ packages:
chalk: 4.1.2
cli-table3: 0.6.3
commander: 10.0.1
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@8.1.1)
error-stack-parser: 2.1.4
figures: 3.2.0
glob: 7.2.3
@@ -176,7 +252,7 @@ packages:
util-arity: 1.1.0
verror: 1.10.1
xmlbuilder: 15.1.1
- yaml: 2.4.2
+ yaml: 2.4.5
yup: 0.32.11
dev: false
@@ -197,7 +273,6 @@ packages:
/@cucumber/gherkin-utils@8.0.2:
resolution: {integrity: sha512-aQlziN3r3cTwprEDbLEcFoMRQajb9DTOu2OZZp5xkuNz6bjSTowSY90lHUD2pWT7jhEEckZRIREnk7MAwC2d1A==}
- hasBin: true
dependencies:
'@cucumber/gherkin': 25.0.2
'@cucumber/messages': 19.1.4
@@ -259,8 +334,8 @@ packages:
/@emotion/babel-plugin@11.11.0:
resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
dependencies:
- '@babel/helper-module-imports': 7.24.3
- '@babel/runtime': 7.24.5
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/runtime': 7.24.7
'@emotion/hash': 0.9.1
'@emotion/memoize': 0.8.1
'@emotion/serialize': 1.1.4
@@ -270,6 +345,8 @@ packages:
find-root: 1.1.0
source-map: 0.5.7
stylis: 4.2.0
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/cache@11.11.0:
@@ -305,7 +382,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/cache': 11.11.0
'@emotion/serialize': 1.1.4
@@ -314,6 +391,8 @@ packages:
'@emotion/weak-memoize': 0.3.1
hoist-non-react-statics: 3.3.2
react: 18.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/serialize@1.1.4:
@@ -340,7 +419,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/is-prop-valid': 1.2.2
'@emotion/react': 11.11.4(react@18.3.1)
@@ -348,6 +427,8 @@ packages:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
'@emotion/utils': 1.2.1
react: 18.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/unitless@0.8.1:
@@ -380,8 +461,8 @@ packages:
eslint-visitor-keys: 3.4.3
dev: false
- /@eslint-community/regexpp@4.10.0:
- resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
+ /@eslint-community/regexpp@4.11.0:
+ resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: false
@@ -390,7 +471,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@8.1.1)
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.1
@@ -407,48 +488,70 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: false
- /@floating-ui/core@1.6.2:
- resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==}
+ /@floating-ui/core@1.6.4:
+ resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==}
dependencies:
- '@floating-ui/utils': 0.2.2
+ '@floating-ui/utils': 0.2.4
dev: false
- /@floating-ui/dom@1.6.5:
- resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==}
+ /@floating-ui/dom@1.6.7:
+ resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==}
dependencies:
- '@floating-ui/core': 1.6.2
- '@floating-ui/utils': 0.2.2
+ '@floating-ui/core': 1.6.4
+ '@floating-ui/utils': 0.2.4
dev: false
- /@floating-ui/react-dom@2.1.0(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==}
+ /@floating-ui/react-dom@2.1.1(react-dom@18.3.1)(react@18.3.1):
+ resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
- '@floating-ui/dom': 1.6.5
+ '@floating-ui/dom': 1.6.7
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
dev: false
- /@floating-ui/utils@0.2.2:
- resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==}
+ /@floating-ui/utils@0.2.4:
+ resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==}
dev: false
- /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1):
+ /@formatjs/ecma402-abstract@2.0.0:
+ resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==}
+ dependencies:
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.3
+ dev: false
+
+ /@formatjs/intl-listformat@7.5.7:
+ resolution: {integrity: sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==}
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.3
+ dev: false
+
+ /@formatjs/intl-localematcher@0.5.4:
+ resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==}
+ dependencies:
+ tslib: 2.6.3
+ dev: false
+
+ /@graphql-typed-document-node/core@3.2.0(graphql@16.9.0):
resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
peerDependencies:
graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
dependencies:
- graphql: 16.8.1
+ graphql: 16.9.0
dev: false
/@humanwhocodes/config-array@0.11.14:
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
dependencies:
'@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@8.1.1)
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -461,6 +564,7 @@ packages:
/@humanwhocodes/object-schema@2.0.3:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ deprecated: Use @eslint/object-schema instead
dev: false
/@isaacs/cliui@8.0.2:
@@ -475,14 +579,33 @@ packages:
wrap-ansi-cjs: /wrap-ansi@7.0.0
dev: false
+ /@jridgewell/gen-mapping@0.3.5:
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.25
+ dev: false
+
/@jridgewell/resolve-uri@3.1.2:
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
- dev: true
+
+ /@jridgewell/set-array@1.2.1:
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+ dev: false
/@jridgewell/sourcemap-codec@1.4.15:
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
- dev: true
+
+ /@jridgewell/trace-mapping@0.3.25:
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: false
/@jridgewell/trace-mapping@0.3.9:
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
@@ -506,10 +629,10 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1)(react@18.3.1)
+ '@babel/runtime': 7.24.7
+ '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1)(react@18.3.1)
'@mui/types': 7.2.14
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@mui/utils': 5.15.20(react@18.3.1)
'@popperjs/core': 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
@@ -517,12 +640,12 @@ packages:
react-dom: 18.3.1(react@18.3.1)
dev: false
- /@mui/core-downloads-tracker@5.15.18:
- resolution: {integrity: sha512-/9pVk+Al8qxAjwFUADv4BRZgMpZM4m5E+2Q/20qhVPuIJWqKp4Ie4tGExac6zu93rgPTYVQGgu+1vjiT0E+cEw==}
+ /@mui/core-downloads-tracker@5.15.21:
+ resolution: {integrity: sha512-dp9lXBaJZzJYeJfQY3Ow4Rb49QaCEdkl2KKYscdQHQm6bMJ+l4XPY3Cd9PCeeJTsHPIDJ60lzXbeRgs6sx/rpw==}
dev: false
- /@mui/material@5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-n+/dsiqux74fFfcRUJjok+ieNQ7+BEk6/OwX9cLcLvriZrZb+/7Y8+Fd2HlUUbn5N0CDurgAHm0VH1DqyJ9HAw==}
+ /@mui/material@5.15.21(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1):
+ resolution: {integrity: sha512-nTyCcgduKwHqiuQ/B03EQUa+utSMzn2sQp0QAibsnYe4tvc3zkMbO0amKpl48vhABIY3IvT6w9615BFIgMt0YA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -538,14 +661,14 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
'@mui/base': 5.0.0-beta.40(react-dom@18.3.1)(react@18.3.1)
- '@mui/core-downloads-tracker': 5.15.18
- '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
+ '@mui/core-downloads-tracker': 5.15.21
+ '@mui/system': 5.15.20(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
'@mui/types': 7.2.14
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@mui/utils': 5.15.20(react@18.3.1)
'@types/react-transition-group': 4.4.10
clsx: 2.1.1
csstype: 3.1.3
@@ -556,8 +679,8 @@ packages:
react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1)
dev: false
- /@mui/private-theming@5.15.14(react@18.3.1):
- resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==}
+ /@mui/private-theming@5.15.20(react@18.3.1):
+ resolution: {integrity: sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -566,8 +689,8 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@babel/runtime': 7.24.7
+ '@mui/utils': 5.15.20(react@18.3.1)
prop-types: 15.8.1
react: 18.3.1
dev: false
@@ -585,7 +708,7 @@ packages:
'@emotion/styled':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/cache': 11.11.0
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
@@ -594,8 +717,8 @@ packages:
react: 18.3.1
dev: false
- /@mui/system@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1):
- resolution: {integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==}
+ /@mui/system@5.15.20(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1):
+ resolution: {integrity: sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -610,13 +733,13 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
- '@mui/private-theming': 5.15.14(react@18.3.1)
+ '@mui/private-theming': 5.15.20(react@18.3.1)
'@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
'@mui/types': 7.2.14
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@mui/utils': 5.15.20(react@18.3.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -632,8 +755,8 @@ packages:
optional: true
dev: false
- /@mui/utils@5.15.14(react@18.3.1):
- resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==}
+ /@mui/utils@5.15.20(react@18.3.1):
+ resolution: {integrity: sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -642,7 +765,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/prop-types': 15.7.12
prop-types: 15.8.1
react: 18.3.1
@@ -702,10 +825,6 @@ packages:
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
dev: true
- /@types/geojson@7946.0.14:
- resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==}
- dev: false
-
/@types/json-schema@7.0.15:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: false
@@ -713,18 +832,18 @@ packages:
/@types/lodash.zipobject@4.1.7:
resolution: {integrity: sha512-bsFXX/ac3fFgW3l/yxwRx7NvTXryi4bMaNcsbSK2MJnTPn0nHvs7NdwfHtvOkNKxSQ0dXgnNwI5oEGLoMA1mug==}
dependencies:
- '@types/lodash': 4.17.4
+ '@types/lodash': 4.17.6
dev: true
- /@types/lodash@4.17.4:
- resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==}
+ /@types/lodash@4.17.6:
+ resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==}
/@types/node@18.16.1:
resolution: {integrity: sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==}
dev: true
- /@types/node@20.12.12:
- resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
+ /@types/node@20.14.9:
+ resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
dependencies:
undici-types: 5.26.5
dev: false
@@ -762,25 +881,26 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: false
- /acorn-jsx@5.3.2(acorn@8.11.3):
+ /acorn-jsx@5.3.2(acorn@8.12.0):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.11.3
+ acorn: 8.12.0
dev: false
- /acorn-walk@8.3.2:
- resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
+ /acorn-walk@8.3.3:
+ resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==}
engines: {node: '>=0.4.0'}
+ dependencies:
+ acorn: 8.12.0
dev: true
- /acorn@8.11.3:
- resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
+ /acorn@8.12.0:
+ resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==}
engines: {node: '>=0.4.0'}
- hasBin: true
- /ajv-formats@2.1.1(ajv@8.13.0):
+ /ajv-formats@2.1.1(ajv@8.16.0):
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
peerDependencies:
ajv: ^8.0.0
@@ -788,7 +908,7 @@ packages:
ajv:
optional: true
dependencies:
- ajv: 8.13.0
+ ajv: 8.16.0
dev: false
/ajv@6.12.6:
@@ -800,8 +920,8 @@ packages:
uri-js: 4.4.1
dev: false
- /ajv@8.13.0:
- resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==}
+ /ajv@8.16.0:
+ resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==}
dependencies:
fast-deep-equal: 3.1.3
json-schema-traverse: 1.0.0
@@ -886,7 +1006,7 @@ packages:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
cosmiconfig: 7.1.0
resolve: 1.22.8
dev: false
@@ -929,7 +1049,7 @@ packages:
resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
dependencies:
no-case: 3.0.4
- tslib: 2.6.2
+ tslib: 2.6.3
upper-case-first: 2.0.2
dev: false
@@ -985,8 +1105,8 @@ packages:
d: 1.0.2
es5-ext: 0.10.64
es6-iterator: 2.0.3
- memoizee: 0.4.16
- timers-ext: 0.1.7
+ memoizee: 0.4.17
+ timers-ext: 0.1.8
dev: false
/cli-table3@0.6.3:
@@ -1139,7 +1259,7 @@ packages:
engines: {node: '>=0.12'}
dependencies:
es5-ext: 0.10.64
- type: 2.7.2
+ type: 2.7.3
dev: false
/data-uri-to-buffer@4.0.1:
@@ -1147,8 +1267,8 @@ packages:
engines: {node: '>= 12'}
dev: false
- /debug@4.3.4(supports-color@8.1.1):
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ /debug@4.3.5(supports-color@8.1.1):
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -1184,7 +1304,7 @@ packages:
resolution: {integrity: sha512-4SbcbedPXTciySXiSnNNLuJXpvxFe5nqivbiEHXyL8P/w0wx2uW7YXNjnYgjW0e2e6vy+L/tMISU/oAiXCl57Q==}
engines: {node: '>=10'}
dependencies:
- '@types/node': 20.12.12
+ '@types/node': 20.14.9
jszip: 3.10.1
nanoid: 5.0.7
xml: 1.0.1
@@ -1194,7 +1314,7 @@ packages:
/dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
csstype: 3.1.3
dev: false
@@ -1340,7 +1460,7 @@ packages:
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@eslint-community/regexpp': 4.10.0
+ '@eslint-community/regexpp': 4.11.0
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.57.0
'@humanwhocodes/config-array': 0.11.14
@@ -1350,7 +1470,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@8.1.1)
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -1388,15 +1508,15 @@ packages:
d: 1.0.2
es5-ext: 0.10.64
event-emitter: 0.3.5
- type: 2.7.2
+ type: 2.7.3
dev: false
/espree@9.6.1:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
- acorn: 8.11.3
- acorn-jsx: 5.3.2(acorn@8.11.3)
+ acorn: 8.12.0
+ acorn-jsx: 5.3.2(acorn@8.12.0)
eslint-visitor-keys: 3.4.3
dev: false
@@ -1434,7 +1554,7 @@ packages:
/ext@1.7.0:
resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
dependencies:
- type: 2.7.2
+ type: 2.7.3
dev: false
/extsprintf@1.4.1:
@@ -1524,8 +1644,8 @@ packages:
optional: true
dev: false
- /foreground-child@3.1.1:
- resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ /foreground-child@3.2.1:
+ resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
engines: {node: '>=14'}
dependencies:
cross-spawn: 7.0.3
@@ -1568,15 +1688,16 @@ packages:
is-glob: 4.0.3
dev: false
- /glob@10.4.1:
- resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==}
+ /glob@10.4.2:
+ resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==}
engines: {node: '>=16 || 14 >=14.18'}
hasBin: true
dependencies:
- foreground-child: 3.1.1
- jackspeak: 3.1.2
- minimatch: 9.0.4
+ foreground-child: 3.2.1
+ jackspeak: 3.4.0
+ minimatch: 9.0.5
minipass: 7.1.2
+ package-json-from-dist: 1.0.0
path-scurry: 1.11.1
dev: false
@@ -1598,6 +1719,11 @@ packages:
ini: 2.0.0
dev: false
+ /globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+ dev: false
+
/globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
@@ -1609,14 +1735,14 @@ packages:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: false
- /graphql-request@6.1.0(graphql@16.8.1):
+ /graphql-request@6.1.0(graphql@16.9.0):
resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==}
peerDependencies:
graphql: 14 - 16
dependencies:
- '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1)
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0)
cross-fetch: 3.1.8
- graphql: 16.8.1
+ graphql: 16.9.0
transitivePeerDependencies:
- encoding
dev: false
@@ -1628,7 +1754,7 @@ packages:
graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
dependencies:
graphql: 16.8.1
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/graphql@16.8.1:
@@ -1636,6 +1762,11 @@ packages:
engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
dev: false
+ /graphql@16.9.0:
+ resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==}
+ engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
+ dev: false
+
/has-ansi@4.0.1:
resolution: {integrity: sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A==}
engines: {node: '>=8'}
@@ -1704,7 +1835,6 @@ packages:
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
dependencies:
once: 1.4.0
wrappy: 1.0.2
@@ -1723,8 +1853,9 @@ packages:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
dev: false
- /is-core-module@2.13.1:
- resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+ /is-core-module@2.14.0:
+ resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==}
+ engines: {node: '>= 0.4'}
dependencies:
hasown: 2.0.2
dev: false
@@ -1780,8 +1911,8 @@ packages:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: false
- /jackspeak@3.1.2:
- resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==}
+ /jackspeak@3.4.0:
+ resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==}
engines: {node: '>=14'}
dependencies:
'@isaacs/cliui': 8.0.2
@@ -1800,6 +1931,12 @@ packages:
argparse: 2.0.1
dev: false
+ /jsesc@2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: false
+
/json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
dev: false
@@ -1808,24 +1945,23 @@ packages:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
dev: false
- /json-schema-to-typescript@14.0.4:
- resolution: {integrity: sha512-covPOp3hrbD+oEcMvDxP5Rh6xNZj7lOTZkXAeQoDyu1PuEl1A6oRZ3Sy05HN11vXXmdJ6gLh5P3Qz0mgMPTzzw==}
+ /json-schema-to-typescript@14.1.0:
+ resolution: {integrity: sha512-VIeAFQkn88gFh26MSHWG4uX7TjK/arTw0NVLMZn6vX1WrSF+P6xu5MyEdovu+9PJ0uiS5gm0wzwQvYW9eSq1uw==}
engines: {node: '>=16.0.0'}
hasBin: true
dependencies:
- '@apidevtools/json-schema-ref-parser': 11.6.2
+ '@apidevtools/json-schema-ref-parser': 11.6.4
'@types/json-schema': 7.0.15
- '@types/lodash': 4.17.4
+ '@types/lodash': 4.17.6
cli-color: 2.0.4
- glob: 10.4.1
+ glob: 10.4.2
is-glob: 4.0.3
js-yaml: 4.1.0
lodash: 4.17.21
minimist: 1.2.8
mkdirp: 3.0.1
- mz: 2.7.0
node-fetch: 3.3.2
- prettier: 3.2.5
+ prettier: 3.3.2
dev: false
/json-schema-traverse@0.4.1:
@@ -1975,11 +2111,11 @@ packages:
/lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
- /lru-cache@10.2.2:
- resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
+ /lru-cache@10.3.0:
+ resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==}
engines: {node: 14 || >=16.14}
dev: false
@@ -2005,15 +2141,15 @@ packages:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
dev: true
- /marked@12.0.2:
- resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==}
+ /marked@13.0.1:
+ resolution: {integrity: sha512-7kBohS6GrZKvCsNXZyVVXSW7/hGBHe49ng99YPkDCckSUrrG7MSFLCexsRxptzOmyW2eT5dySh4Md1V6my52fA==}
engines: {node: '>= 18'}
hasBin: true
dev: false
- /memoizee@0.4.16:
- resolution: {integrity: sha512-eOxQqGfogqdcQ2jeyLgsTp91bFOdbjaiJ1P0ZeDt1HHT1+ektm2u+raWDytppt8SMZ1fP2sIWlTbZukHhMKhiQ==}
- engines: {node: '>=.0.12'}
+ /memoizee@0.4.17:
+ resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==}
+ engines: {node: '>=0.12'}
dependencies:
d: 1.0.2
es5-ext: 0.10.64
@@ -2022,7 +2158,7 @@ packages:
is-promise: 2.2.2
lru-queue: 0.1.0
next-tick: 1.1.0
- timers-ext: 0.1.7
+ timers-ext: 0.1.8
dev: false
/mime-db@1.52.0:
@@ -2043,8 +2179,8 @@ packages:
brace-expansion: 1.1.11
dev: false
- /minimatch@9.0.4:
- resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
+ /minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.1
@@ -2068,7 +2204,6 @@ packages:
/mkdirp@2.1.6:
resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==}
engines: {node: '>=10'}
- hasBin: true
dev: false
/mkdirp@3.0.1:
@@ -2115,14 +2250,14 @@ packages:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
dependencies:
lower-case: 2.0.2
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/nock@13.3.1:
resolution: {integrity: sha512-vHnopocZuI93p2ccivFyGuUfzjq2fxNyNurp7816mlT5V5HF4SzXu8lvLrVzBbNqzs+ODooZ6OksuSUNM7Njkw==}
engines: {node: '>= 10.13'}
dependencies:
- debug: 4.3.4(supports-color@8.1.1)
+ debug: 4.3.5(supports-color@8.1.1)
json-stringify-safe: 5.0.1
lodash: 4.17.21
propagate: 2.0.1
@@ -2206,6 +2341,10 @@ packages:
p-limit: 3.1.0
dev: false
+ /package-json-from-dist@1.0.0:
+ resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
+ dev: false
+
/pad-right@0.2.2:
resolution: {integrity: sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==}
engines: {node: '>=0.10.0'}
@@ -2228,7 +2367,7 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@@ -2270,7 +2409,7 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
dependencies:
- lru-cache: 10.2.2
+ lru-cache: 10.3.0
minipass: 7.1.2
dev: false
@@ -2288,8 +2427,8 @@ packages:
engines: {node: '>= 0.8.0'}
dev: false
- /prettier@3.2.5:
- resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
+ /prettier@3.3.2:
+ resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==}
engines: {node: '>=14'}
hasBin: true
dev: false
@@ -2357,7 +2496,7 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -2409,7 +2548,6 @@ packages:
/regexp-tree@0.1.27:
resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
- hasBin: true
dev: false
/repeat-string@1.6.1:
@@ -2448,7 +2586,7 @@ packages:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
dependencies:
- is-core-module: 2.13.1
+ is-core-module: 2.14.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: false
@@ -2460,6 +2598,7 @@ packages:
/rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
dependencies:
glob: 7.2.3
@@ -2479,8 +2618,8 @@ packages:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false
- /sax@1.3.0:
- resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
+ /sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
dev: false
/scheduler@0.23.2:
@@ -2496,7 +2635,6 @@ packages:
/semver@7.5.3:
resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==}
engines: {node: '>=10'}
- hasBin: true
dependencies:
lru-cache: 6.0.0
dev: false
@@ -2504,7 +2642,6 @@ packages:
/semver@7.6.2:
resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
- hasBin: true
dev: false
/setimmediate@1.0.5:
@@ -2659,8 +2796,9 @@ packages:
xtend: 4.0.2
dev: false
- /timers-ext@0.1.7:
- resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==}
+ /timers-ext@0.1.8:
+ resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==}
+ engines: {node: '>=0.12'}
dependencies:
es5-ext: 0.10.64
next-tick: 1.1.0
@@ -2704,8 +2842,8 @@ packages:
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 18.16.1
- acorn: 8.11.3
- acorn-walk: 8.3.2
+ acorn: 8.12.0
+ acorn-walk: 8.3.3
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
@@ -2715,8 +2853,8 @@ packages:
yn: 3.1.1
dev: true
- /tslib@2.6.2:
- resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+ /tslib@2.6.3:
+ resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
dev: false
/type-check@0.4.0:
@@ -2731,19 +2869,18 @@ packages:
engines: {node: '>=10'}
dev: false
- /type-fest@4.18.2:
- resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==}
+ /type-fest@4.21.0:
+ resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==}
engines: {node: '>=16'}
dev: false
- /type@2.7.2:
- resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
+ /type@2.7.3:
+ resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==}
dev: false
/typescript@5.4.3:
resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==}
engines: {node: '>=14.17'}
- hasBin: true
dev: true
/undici-types@5.26.5:
@@ -2758,7 +2895,7 @@ packages:
/upper-case-first@2.0.2:
resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/uri-js@4.4.1:
@@ -2775,14 +2912,13 @@ packages:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: false
- /uuid@9.0.0:
- resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
+ /uuid@10.0.0:
+ resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
hasBin: true
dev: false
- /uuid@9.0.1:
- resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
- hasBin: true
+ /uuid@9.0.0:
+ resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
dev: false
/v8-compile-cache-lib@3.0.1:
@@ -2853,7 +2989,7 @@ packages:
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
hasBin: true
dependencies:
- sax: 1.3.0
+ sax: 1.4.1
dev: false
/xml@1.0.1:
@@ -2884,10 +3020,9 @@ packages:
engines: {node: '>= 6'}
dev: false
- /yaml@2.4.2:
- resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==}
+ /yaml@2.4.5:
+ resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==}
engines: {node: '>= 14'}
- hasBin: true
dev: false
/yargs-parser@20.2.9:
@@ -2922,8 +3057,8 @@ packages:
resolution: {integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==}
engines: {node: '>=10'}
dependencies:
- '@babel/runtime': 7.24.5
- '@types/lodash': 4.17.4
+ '@babel/runtime': 7.24.7
+ '@types/lodash': 4.17.6
lodash: 4.17.21
lodash-es: 4.17.21
nanoclone: 0.2.1
@@ -2935,8 +3070,8 @@ packages:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
dev: false
- github.com/theopensystemslab/planx-core/5710d52:
- resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5710d52}
+ github.com/theopensystemslab/planx-core/6c2cc59:
+ resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/6c2cc59}
name: '@opensystemslab/planx-core'
version: 1.0.0
prepare: true
@@ -2944,25 +3079,25 @@ packages:
dependencies:
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
- '@mui/material': 5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)
- '@types/geojson': 7946.0.14
- ajv: 8.13.0
- ajv-formats: 2.1.1(ajv@8.13.0)
+ '@formatjs/intl-listformat': 7.5.7
+ '@mui/material': 5.15.21(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)
+ ajv: 8.16.0
+ ajv-formats: 2.1.1(ajv@8.16.0)
cheerio: 1.0.0-rc.12
copyfiles: 2.4.1
docx: 8.5.0
eslint: 8.57.0
fast-xml-parser: 4.4.0
- graphql: 16.8.1
- graphql-request: 6.1.0(graphql@16.8.1)
- json-schema-to-typescript: 14.0.4
+ graphql: 16.9.0
+ graphql-request: 6.1.0(graphql@16.9.0)
+ json-schema-to-typescript: 14.1.0
lodash: 4.17.21
- marked: 12.0.2
- prettier: 3.2.5
+ marked: 13.0.1
+ prettier: 3.3.2
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- type-fest: 4.18.2
- uuid: 9.0.1
+ type-fest: 4.21.0
+ uuid: 10.0.0
zod: 3.23.8
transitivePeerDependencies:
- '@types/react'
diff --git a/e2e/tests/api-driven/src/flowStatusHistory/steps.ts b/e2e/tests/api-driven/src/flowStatusHistory/steps.ts
index af93d5a3f0..798c4e9b87 100644
--- a/e2e/tests/api-driven/src/flowStatusHistory/steps.ts
+++ b/e2e/tests/api-driven/src/flowStatusHistory/steps.ts
@@ -19,7 +19,11 @@ Before("@flow-status-history", async function () {
});
Given("a flow exists", async function () {
- const flowId = await createFlow({ teamId: this.teamId, slug: "test-flow" });
+ const flowId = await createFlow({
+ teamId: this.teamId,
+ slug: "test-flow",
+ name: "Test Flow",
+ });
assert.ok(flowId, "flowId is not defined");
diff --git a/e2e/tests/api-driven/src/globalHelpers.ts b/e2e/tests/api-driven/src/globalHelpers.ts
index e479549efe..88a0cafcb9 100644
--- a/e2e/tests/api-driven/src/globalHelpers.ts
+++ b/e2e/tests/api-driven/src/globalHelpers.ts
@@ -9,8 +9,9 @@ export function createTeam(
name: "E2E Test Team",
slug: "E2E",
submissionEmail: TEST_EMAIL,
- homepage: "planx.uk",
- referenceCode: "ABCD",
+ settings: {
+ homepage: "http://www.planx.uk",
+ },
...args,
}),
);
diff --git a/e2e/tests/api-driven/src/invite-to-pay/helpers.ts b/e2e/tests/api-driven/src/invite-to-pay/helpers.ts
index 302be5dd57..d8d2db0acf 100644
--- a/e2e/tests/api-driven/src/invite-to-pay/helpers.ts
+++ b/e2e/tests/api-driven/src/invite-to-pay/helpers.ts
@@ -45,6 +45,7 @@ export async function buildITPFlow({
const flowId: string = await $admin.flow.create({
teamId,
slug: `test-invite-to-pay-flow-with-send-to-${destination.toLowerCase()}`,
+ name: `Test invite to pay flow with send to ${destination}`,
status: "online",
data: flowGraph,
});
@@ -185,7 +186,7 @@ const setupMockBopsSubmissionUrl = async (teamId: number) => {
export const setup = async () => {
await setUpMocks();
- const teamId = await createTeam();
+ const teamId = await createTeam({ settings: { referenceCode: "ABC" } });
const userId = await createUser();
await setupMockBopsSubmissionUrl(teamId);
diff --git a/e2e/tests/api-driven/src/permissions/helpers.ts b/e2e/tests/api-driven/src/permissions/helpers.ts
index c191c0cfd9..521523c540 100644
--- a/e2e/tests/api-driven/src/permissions/helpers.ts
+++ b/e2e/tests/api-driven/src/permissions/helpers.ts
@@ -35,6 +35,7 @@ export const setup = async () => {
const team1FlowId = await createFlow({
teamId: teamId1,
slug: "team-1-flow",
+ name: "Team 1 Flow",
});
const user2Id = await createUser({
@@ -44,6 +45,7 @@ export const setup = async () => {
const team2FlowId = await createFlow({
teamId: teamId2,
slug: "team-2-flow",
+ name: "Team 2 Flow",
});
const world = {
diff --git a/e2e/tests/api-driven/src/permissions/queries/flows.ts b/e2e/tests/api-driven/src/permissions/queries/flows.ts
index 9db7a43379..fe41185c1f 100644
--- a/e2e/tests/api-driven/src/permissions/queries/flows.ts
+++ b/e2e/tests/api-driven/src/permissions/queries/flows.ts
@@ -3,7 +3,11 @@ import { gql } from "graphql-tag";
export const INSERT_FLOW_QUERY = gql`
mutation InsertFlowE2E($team1Id: Int) {
result: insert_flows(
- objects: { slug: "e2e-test-flow", team_id: $team1Id }
+ objects: {
+ slug: "e2e-test-flow"
+ team_id: $team1Id
+ name: "E2E Test Flow"
+ }
) {
returning {
id
@@ -16,7 +20,7 @@ export const UPDATE_FLOW_QUERY = gql`
mutation UpdateFlowE2E($team1FlowId: uuid!) {
result: update_flows_by_pk(
pk_columns: { id: $team1FlowId }
- _set: { slug: "new-slug" }
+ _set: { slug: "new-slug", name: "new Name" }
) {
id
}
diff --git a/e2e/tests/api-driven/src/permissions/teamAdmin.feature b/e2e/tests/api-driven/src/permissions/teamAdmin.feature
index bf4abe1e93..ff6b11e28f 100644
--- a/e2e/tests/api-driven/src/permissions/teamAdmin.feature
+++ b/e2e/tests/api-driven/src/permissions/teamAdmin.feature
@@ -54,5 +54,4 @@ Feature: Testing Permissions for teamEditor Role
Examples:
| TABLE | ACTION |
- | users | select |
| team_members | select |
\ No newline at end of file
diff --git a/e2e/tests/ui-driven/package.json b/e2e/tests/ui-driven/package.json
index 7957fa2819..a8d617b2e7 100644
--- a/e2e/tests/ui-driven/package.json
+++ b/e2e/tests/ui-driven/package.json
@@ -8,17 +8,18 @@
"postinstall": "./install-dependencies.sh"
},
"dependencies": {
- "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#5710d52",
+ "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#6c2cc59",
"axios": "^1.6.8",
"dotenv": "^16.3.1",
"eslint": "^8.56.0",
- "graphql": "^16.8.1",
+ "graphql": "^16.9.0",
"graphql-request": "^6.1.0",
"isomorphic-fetch": "^3.0.0",
"jsonwebtoken": "^9.0.2",
"serve": "^14.2.1",
"uuid": "^9.0.1"
},
+ "packageManager": "pnpm@8.6.6",
"devDependencies": {
"@playwright/test": "^1.40.1",
"@types/node": "18.16.1",
diff --git a/e2e/tests/ui-driven/pnpm-lock.yaml b/e2e/tests/ui-driven/pnpm-lock.yaml
index 551c17f74f..0b37ef581f 100644
--- a/e2e/tests/ui-driven/pnpm-lock.yaml
+++ b/e2e/tests/ui-driven/pnpm-lock.yaml
@@ -6,8 +6,8 @@ settings:
dependencies:
'@opensystemslab/planx-core':
- specifier: git+https://github.com/theopensystemslab/planx-core#5710d52
- version: github.com/theopensystemslab/planx-core/5710d52
+ specifier: git+https://github.com/theopensystemslab/planx-core#6c2cc59
+ version: github.com/theopensystemslab/planx-core/6c2cc59
axios:
specifier: ^1.6.8
version: 1.6.8
@@ -18,11 +18,11 @@ dependencies:
specifier: ^8.56.0
version: 8.56.0
graphql:
- specifier: ^16.8.1
- version: 16.8.1
+ specifier: ^16.9.0
+ version: 16.9.0
graphql-request:
specifier: ^6.1.0
- version: 6.1.0(graphql@16.8.1)
+ version: 6.1.0(graphql@16.9.0)
isomorphic-fetch:
specifier: ^3.0.0
version: 3.0.0
@@ -49,8 +49,8 @@ devDependencies:
packages:
- /@apidevtools/json-schema-ref-parser@11.6.2:
- resolution: {integrity: sha512-ENUdLLT04aDbbHCRwfKf8gR67AhV0CdFrOAtk+FcakBAgaq6ds3HLK9X0BCyiFUz8pK9uP+k6YZyJaGG7Mt7vQ==}
+ /@apidevtools/json-schema-ref-parser@11.6.4:
+ resolution: {integrity: sha512-9K6xOqeevacvweLGik6LnZCb1fBtCOSIWQs8d096XGeqoLKC33UVMGz9+77Gw44KvbH4pKcQPWo4ZpxkXYj05w==}
engines: {node: '>= 16'}
dependencies:
'@jsdevtools/ono': 7.1.3
@@ -58,62 +58,139 @@ packages:
js-yaml: 4.1.0
dev: false
- /@babel/code-frame@7.24.2:
- resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
+ /@babel/code-frame@7.24.7:
+ resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/highlight': 7.24.5
+ '@babel/highlight': 7.24.7
picocolors: 1.0.1
dev: false
- /@babel/helper-module-imports@7.24.3:
- resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==}
+ /@babel/generator@7.24.7:
+ resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 2.5.2
dev: false
- /@babel/helper-string-parser@7.24.1:
- resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
+ /@babel/helper-environment-visitor@7.24.7:
+ resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/helper-function-name@7.24.7:
+ resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/helper-hoist-variables@7.24.7:
+ resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/helper-module-imports@7.24.7:
+ resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/helper-split-export-declaration@7.24.7:
+ resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/helper-string-parser@7.24.7:
+ resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==}
engines: {node: '>=6.9.0'}
dev: false
- /@babel/helper-validator-identifier@7.24.5:
- resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
+ /@babel/helper-validator-identifier@7.24.7:
+ resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
dev: false
- /@babel/highlight@7.24.5:
- resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
+ /@babel/highlight@7.24.7:
+ resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.0.1
dev: false
- /@babel/runtime@7.24.5:
- resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
+ /@babel/parser@7.24.7:
+ resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/runtime@7.24.7:
+ resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.1
dev: false
- /@babel/types@7.24.5:
- resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
+ /@babel/template@7.24.7:
+ resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
+ dev: false
+
+ /@babel/traverse@7.24.7:
+ resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-hoist-variables': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
+ debug: 4.3.5
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@babel/types@7.24.7:
+ resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-string-parser': 7.24.1
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/helper-string-parser': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
dev: false
/@emotion/babel-plugin@11.11.0:
resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
dependencies:
- '@babel/helper-module-imports': 7.24.3
- '@babel/runtime': 7.24.5
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/runtime': 7.24.7
'@emotion/hash': 0.9.1
'@emotion/memoize': 0.8.1
'@emotion/serialize': 1.1.4
@@ -123,6 +200,8 @@ packages:
find-root: 1.1.0
source-map: 0.5.7
stylis: 4.2.0
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/cache@11.11.0:
@@ -158,7 +237,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/cache': 11.11.0
'@emotion/serialize': 1.1.4
@@ -167,6 +246,8 @@ packages:
'@emotion/weak-memoize': 0.3.1
hoist-non-react-statics: 3.3.2
react: 18.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/serialize@1.1.4:
@@ -193,7 +274,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/is-prop-valid': 1.2.2
'@emotion/react': 11.11.4(react@18.3.1)
@@ -201,6 +282,8 @@ packages:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1)
'@emotion/utils': 1.2.1
react: 18.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/unitless@0.8.1:
@@ -242,8 +325,8 @@ packages:
eslint-visitor-keys: 3.4.3
dev: false
- /@eslint-community/regexpp@4.10.0:
- resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
+ /@eslint-community/regexpp@4.11.0:
+ resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
/@eslint/eslintrc@2.1.4:
@@ -251,7 +334,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
- debug: 4.3.4
+ debug: 4.3.5
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.1
@@ -271,40 +354,61 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: false
- /@floating-ui/core@1.6.2:
- resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==}
+ /@floating-ui/core@1.6.4:
+ resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==}
dependencies:
- '@floating-ui/utils': 0.2.2
+ '@floating-ui/utils': 0.2.4
dev: false
- /@floating-ui/dom@1.6.5:
- resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==}
+ /@floating-ui/dom@1.6.7:
+ resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==}
dependencies:
- '@floating-ui/core': 1.6.2
- '@floating-ui/utils': 0.2.2
+ '@floating-ui/core': 1.6.4
+ '@floating-ui/utils': 0.2.4
dev: false
- /@floating-ui/react-dom@2.1.0(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==}
+ /@floating-ui/react-dom@2.1.1(react-dom@18.3.1)(react@18.3.1):
+ resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
- '@floating-ui/dom': 1.6.5
+ '@floating-ui/dom': 1.6.7
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
dev: false
- /@floating-ui/utils@0.2.2:
- resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==}
+ /@floating-ui/utils@0.2.4:
+ resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==}
+ dev: false
+
+ /@formatjs/ecma402-abstract@2.0.0:
+ resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==}
+ dependencies:
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.3
+ dev: false
+
+ /@formatjs/intl-listformat@7.5.7:
+ resolution: {integrity: sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==}
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.3
+ dev: false
+
+ /@formatjs/intl-localematcher@0.5.4:
+ resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==}
+ dependencies:
+ tslib: 2.6.3
dev: false
- /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1):
+ /@graphql-typed-document-node/core@3.2.0(graphql@16.9.0):
resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
peerDependencies:
graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
dependencies:
- graphql: 16.8.1
+ graphql: 16.9.0
dev: false
/@humanwhocodes/config-array@0.11.14:
@@ -312,7 +416,7 @@ packages:
engines: {node: '>=10.10.0'}
dependencies:
'@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.4
+ debug: 4.3.5
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -336,6 +440,36 @@ packages:
wrap-ansi-cjs: /wrap-ansi@7.0.0
dev: false
+ /@jridgewell/gen-mapping@0.3.5:
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.25
+ dev: false
+
+ /@jridgewell/resolve-uri@3.1.2:
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+ dev: false
+
+ /@jridgewell/set-array@1.2.1:
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+ dev: false
+
+ /@jridgewell/sourcemap-codec@1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: false
+
+ /@jridgewell/trace-mapping@0.3.25:
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: false
+
/@jsdevtools/ono@7.1.3:
resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==}
dev: false
@@ -351,10 +485,10 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1)(react@18.3.1)
+ '@babel/runtime': 7.24.7
+ '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1)(react@18.3.1)
'@mui/types': 7.2.14
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@mui/utils': 5.15.20(react@18.3.1)
'@popperjs/core': 2.11.8
clsx: 2.1.1
prop-types: 15.8.1
@@ -362,12 +496,12 @@ packages:
react-dom: 18.3.1(react@18.3.1)
dev: false
- /@mui/core-downloads-tracker@5.15.18:
- resolution: {integrity: sha512-/9pVk+Al8qxAjwFUADv4BRZgMpZM4m5E+2Q/20qhVPuIJWqKp4Ie4tGExac6zu93rgPTYVQGgu+1vjiT0E+cEw==}
+ /@mui/core-downloads-tracker@5.15.21:
+ resolution: {integrity: sha512-dp9lXBaJZzJYeJfQY3Ow4Rb49QaCEdkl2KKYscdQHQm6bMJ+l4XPY3Cd9PCeeJTsHPIDJ60lzXbeRgs6sx/rpw==}
dev: false
- /@mui/material@5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-n+/dsiqux74fFfcRUJjok+ieNQ7+BEk6/OwX9cLcLvriZrZb+/7Y8+Fd2HlUUbn5N0CDurgAHm0VH1DqyJ9HAw==}
+ /@mui/material@5.15.21(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1):
+ resolution: {integrity: sha512-nTyCcgduKwHqiuQ/B03EQUa+utSMzn2sQp0QAibsnYe4tvc3zkMbO0amKpl48vhABIY3IvT6w9615BFIgMt0YA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -383,14 +517,14 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
'@mui/base': 5.0.0-beta.40(react-dom@18.3.1)(react@18.3.1)
- '@mui/core-downloads-tracker': 5.15.18
- '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
+ '@mui/core-downloads-tracker': 5.15.21
+ '@mui/system': 5.15.20(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
'@mui/types': 7.2.14
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@mui/utils': 5.15.20(react@18.3.1)
'@types/react-transition-group': 4.4.10
clsx: 2.1.1
csstype: 3.1.3
@@ -401,8 +535,8 @@ packages:
react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1)
dev: false
- /@mui/private-theming@5.15.14(react@18.3.1):
- resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==}
+ /@mui/private-theming@5.15.20(react@18.3.1):
+ resolution: {integrity: sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -411,8 +545,8 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@babel/runtime': 7.24.7
+ '@mui/utils': 5.15.20(react@18.3.1)
prop-types: 15.8.1
react: 18.3.1
dev: false
@@ -430,7 +564,7 @@ packages:
'@emotion/styled':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/cache': 11.11.0
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
@@ -439,8 +573,8 @@ packages:
react: 18.3.1
dev: false
- /@mui/system@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1):
- resolution: {integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==}
+ /@mui/system@5.15.20(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1):
+ resolution: {integrity: sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -455,13 +589,13 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
- '@mui/private-theming': 5.15.14(react@18.3.1)
+ '@mui/private-theming': 5.15.20(react@18.3.1)
'@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
'@mui/types': 7.2.14
- '@mui/utils': 5.15.14(react@18.3.1)
+ '@mui/utils': 5.15.20(react@18.3.1)
clsx: 2.1.1
csstype: 3.1.3
prop-types: 15.8.1
@@ -477,8 +611,8 @@ packages:
optional: true
dev: false
- /@mui/utils@5.15.14(react@18.3.1):
- resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==}
+ /@mui/utils@5.15.20(react@18.3.1):
+ resolution: {integrity: sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -487,7 +621,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/prop-types': 15.7.12
prop-types: 15.8.1
react: 18.3.1
@@ -522,7 +656,6 @@ packages:
/@playwright/test@1.40.1:
resolution: {integrity: sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw==}
engines: {node: '>=16'}
- hasBin: true
dependencies:
playwright: 1.40.1
dev: true
@@ -531,24 +664,20 @@ packages:
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
dev: false
- /@types/geojson@7946.0.14:
- resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==}
- dev: false
-
/@types/json-schema@7.0.15:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: false
- /@types/lodash@4.17.4:
- resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==}
+ /@types/lodash@4.17.6:
+ resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==}
dev: false
/@types/node@18.16.1:
resolution: {integrity: sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==}
dev: true
- /@types/node@20.12.12:
- resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
+ /@types/node@20.14.9:
+ resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
dependencies:
undici-types: 5.26.5
dev: false
@@ -589,19 +718,18 @@ packages:
negotiator: 0.6.3
dev: false
- /acorn-jsx@5.3.2(acorn@8.11.3):
+ /acorn-jsx@5.3.2(acorn@8.12.0):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.11.3
+ acorn: 8.12.0
- /acorn@8.11.3:
- resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
+ /acorn@8.12.0:
+ resolution: {integrity: sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==}
engines: {node: '>=0.4.0'}
- hasBin: true
- /ajv-formats@2.1.1(ajv@8.13.0):
+ /ajv-formats@2.1.1(ajv@8.16.0):
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
peerDependencies:
ajv: ^8.0.0
@@ -609,7 +737,7 @@ packages:
ajv:
optional: true
dependencies:
- ajv: 8.13.0
+ ajv: 8.16.0
dev: false
/ajv@6.12.6:
@@ -629,8 +757,8 @@ packages:
uri-js: 4.4.1
dev: false
- /ajv@8.13.0:
- resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==}
+ /ajv@8.16.0:
+ resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==}
dependencies:
fast-deep-equal: 3.1.3
json-schema-traverse: 1.0.0
@@ -671,10 +799,6 @@ packages:
engines: {node: '>=12'}
dev: false
- /any-promise@1.3.0:
- resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
- dev: false
-
/arch@2.2.0:
resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==}
dev: false
@@ -704,7 +828,7 @@ packages:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
cosmiconfig: 7.1.0
resolve: 1.22.8
dev: false
@@ -824,8 +948,8 @@ packages:
d: 1.0.2
es5-ext: 0.10.64
es6-iterator: 2.0.3
- memoizee: 0.4.16
- timers-ext: 0.1.7
+ memoizee: 0.4.17
+ timers-ext: 0.1.8
dev: false
/clipboardy@3.0.0:
@@ -978,7 +1102,7 @@ packages:
engines: {node: '>=0.12'}
dependencies:
es5-ext: 0.10.64
- type: 2.7.2
+ type: 2.7.3
dev: false
/data-uri-to-buffer@4.0.1:
@@ -997,8 +1121,8 @@ packages:
ms: 2.0.0
dev: false
- /debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ /debug@4.3.5:
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -1031,7 +1155,7 @@ packages:
resolution: {integrity: sha512-4SbcbedPXTciySXiSnNNLuJXpvxFe5nqivbiEHXyL8P/w0wx2uW7YXNjnYgjW0e2e6vy+L/tMISU/oAiXCl57Q==}
engines: {node: '>=10'}
dependencies:
- '@types/node': 20.12.12
+ '@types/node': 20.14.9
jszip: 3.10.1
nanoid: 5.0.7
xml: 1.0.1
@@ -1041,7 +1165,7 @@ packages:
/dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
csstype: 3.1.3
dev: false
@@ -1183,10 +1307,9 @@ packages:
/eslint@8.56.0:
resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
- '@eslint-community/regexpp': 4.10.0
+ '@eslint-community/regexpp': 4.11.0
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.56.0
'@humanwhocodes/config-array': 0.11.14
@@ -1196,7 +1319,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.3.5
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -1232,7 +1355,7 @@ packages:
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@eslint-community/regexpp': 4.10.0
+ '@eslint-community/regexpp': 4.11.0
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.57.0
'@humanwhocodes/config-array': 0.11.14
@@ -1242,7 +1365,7 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.3.5
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
@@ -1280,15 +1403,15 @@ packages:
d: 1.0.2
es5-ext: 0.10.64
event-emitter: 0.3.5
- type: 2.7.2
+ type: 2.7.3
dev: false
/espree@9.6.1:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
- acorn: 8.11.3
- acorn-jsx: 5.3.2(acorn@8.11.3)
+ acorn: 8.12.0
+ acorn-jsx: 5.3.2(acorn@8.12.0)
eslint-visitor-keys: 3.4.3
/esquery@1.5.0:
@@ -1336,7 +1459,7 @@ packages:
/ext@1.7.0:
resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
dependencies:
- type: 2.7.2
+ type: 2.7.3
dev: false
/fast-deep-equal@3.1.3:
@@ -1412,8 +1535,8 @@ packages:
optional: true
dev: false
- /foreground-child@3.1.1:
- resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ /foreground-child@3.2.1:
+ resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
engines: {node: '>=14'}
dependencies:
cross-spawn: 7.0.3
@@ -1467,20 +1590,22 @@ packages:
dependencies:
is-glob: 4.0.3
- /glob@10.4.1:
- resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==}
+ /glob@10.4.2:
+ resolution: {integrity: sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==}
engines: {node: '>=16 || 14 >=14.18'}
hasBin: true
dependencies:
- foreground-child: 3.1.1
- jackspeak: 3.1.2
- minimatch: 9.0.4
+ foreground-child: 3.2.1
+ jackspeak: 3.4.0
+ minimatch: 9.0.5
minipass: 7.1.2
+ package-json-from-dist: 1.0.0
path-scurry: 1.11.1
dev: false
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -1489,6 +1614,11 @@ packages:
once: 1.4.0
path-is-absolute: 1.0.1
+ /globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+ dev: false
+
/globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
@@ -1498,20 +1628,20 @@ packages:
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
- /graphql-request@6.1.0(graphql@16.8.1):
+ /graphql-request@6.1.0(graphql@16.9.0):
resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==}
peerDependencies:
graphql: 14 - 16
dependencies:
- '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1)
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0)
cross-fetch: 3.1.8
- graphql: 16.8.1
+ graphql: 16.9.0
transitivePeerDependencies:
- encoding
dev: false
- /graphql@16.8.1:
- resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==}
+ /graphql@16.9.0:
+ resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==}
engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
dev: false
@@ -1588,8 +1718,9 @@ packages:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
dev: false
- /is-core-module@2.13.1:
- resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+ /is-core-module@2.14.0:
+ resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==}
+ engines: {node: '>= 0.4'}
dependencies:
hasown: 2.0.2
dev: false
@@ -1597,7 +1728,6 @@ packages:
/is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
- hasBin: true
dev: false
/is-extglob@2.1.1:
@@ -1660,8 +1790,8 @@ packages:
- encoding
dev: false
- /jackspeak@3.1.2:
- resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==}
+ /jackspeak@3.4.0:
+ resolution: {integrity: sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==}
engines: {node: '>=14'}
dependencies:
'@isaacs/cliui': 8.0.2
@@ -1675,10 +1805,15 @@ packages:
/js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
dependencies:
argparse: 2.0.1
+ /jsesc@2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: false
+
/json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -1686,24 +1821,23 @@ packages:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
dev: false
- /json-schema-to-typescript@14.0.4:
- resolution: {integrity: sha512-covPOp3hrbD+oEcMvDxP5Rh6xNZj7lOTZkXAeQoDyu1PuEl1A6oRZ3Sy05HN11vXXmdJ6gLh5P3Qz0mgMPTzzw==}
+ /json-schema-to-typescript@14.1.0:
+ resolution: {integrity: sha512-VIeAFQkn88gFh26MSHWG4uX7TjK/arTw0NVLMZn6vX1WrSF+P6xu5MyEdovu+9PJ0uiS5gm0wzwQvYW9eSq1uw==}
engines: {node: '>=16.0.0'}
hasBin: true
dependencies:
- '@apidevtools/json-schema-ref-parser': 11.6.2
+ '@apidevtools/json-schema-ref-parser': 11.6.4
'@types/json-schema': 7.0.15
- '@types/lodash': 4.17.4
+ '@types/lodash': 4.17.6
cli-color: 2.0.4
- glob: 10.4.1
+ glob: 10.4.2
is-glob: 4.0.3
js-yaml: 4.1.0
lodash: 4.17.21
minimist: 1.2.8
mkdirp: 3.0.1
- mz: 2.7.0
node-fetch: 3.3.2
- prettier: 3.2.5
+ prettier: 3.3.2
dev: false
/json-schema-traverse@0.4.1:
@@ -1826,8 +1960,8 @@ packages:
js-tokens: 4.0.0
dev: false
- /lru-cache@10.2.2:
- resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
+ /lru-cache@10.3.0:
+ resolution: {integrity: sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==}
engines: {node: 14 || >=16.14}
dev: false
@@ -1837,15 +1971,15 @@ packages:
es5-ext: 0.10.64
dev: false
- /marked@12.0.2:
- resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==}
+ /marked@13.0.1:
+ resolution: {integrity: sha512-7kBohS6GrZKvCsNXZyVVXSW7/hGBHe49ng99YPkDCckSUrrG7MSFLCexsRxptzOmyW2eT5dySh4Md1V6my52fA==}
engines: {node: '>= 18'}
hasBin: true
dev: false
- /memoizee@0.4.16:
- resolution: {integrity: sha512-eOxQqGfogqdcQ2jeyLgsTp91bFOdbjaiJ1P0ZeDt1HHT1+ektm2u+raWDytppt8SMZ1fP2sIWlTbZukHhMKhiQ==}
- engines: {node: '>=.0.12'}
+ /memoizee@0.4.17:
+ resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==}
+ engines: {node: '>=0.12'}
dependencies:
d: 1.0.2
es5-ext: 0.10.64
@@ -1854,7 +1988,7 @@ packages:
is-promise: 2.2.2
lru-queue: 0.1.0
next-tick: 1.1.0
- timers-ext: 0.1.7
+ timers-ext: 0.1.8
dev: false
/merge-stream@2.0.0:
@@ -1895,8 +2029,8 @@ packages:
dependencies:
brace-expansion: 1.1.11
- /minimatch@9.0.4:
- resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
+ /minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.1
@@ -1934,14 +2068,6 @@ packages:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: false
- /mz@2.7.0:
- resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
- dependencies:
- any-promise: 1.3.0
- object-assign: 4.1.1
- thenify-all: 1.6.0
- dev: false
-
/nanoid@5.0.7:
resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==}
engines: {node: ^18 || >=20}
@@ -2051,6 +2177,10 @@ packages:
dependencies:
p-limit: 3.1.0
+ /package-json-from-dist@1.0.0:
+ resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
+ dev: false
+
/pako@1.0.11:
resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
dev: false
@@ -2065,7 +2195,7 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@@ -2108,7 +2238,7 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
dependencies:
- lru-cache: 10.2.2
+ lru-cache: 10.3.0
minipass: 7.1.2
dev: false
@@ -2128,13 +2258,11 @@ packages:
/playwright-core@1.40.1:
resolution: {integrity: sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==}
engines: {node: '>=16'}
- hasBin: true
dev: true
/playwright@1.40.1:
resolution: {integrity: sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==}
engines: {node: '>=16'}
- hasBin: true
dependencies:
playwright-core: 1.40.1
optionalDependencies:
@@ -2145,8 +2273,8 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- /prettier@3.2.5:
- resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
+ /prettier@3.3.2:
+ resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==}
engines: {node: '>=14'}
hasBin: true
dev: false
@@ -2185,7 +2313,6 @@ packages:
/rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
- hasBin: true
dependencies:
deep-extend: 0.6.0
ini: 1.3.8
@@ -2217,7 +2344,7 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -2289,7 +2416,7 @@ packages:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
dependencies:
- is-core-module: 2.13.1
+ is-core-module: 2.14.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: false
@@ -2300,7 +2427,6 @@ packages:
/rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- hasBin: true
dependencies:
glob: 7.2.3
@@ -2317,8 +2443,8 @@ packages:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false
- /sax@1.3.0:
- resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
+ /sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
dev: false
/scheduler@0.23.2:
@@ -2330,7 +2456,6 @@ packages:
/semver@7.6.2:
resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
- hasBin: true
dev: false
/serve-handler@6.1.5:
@@ -2349,7 +2474,6 @@ packages:
/serve@14.2.1:
resolution: {integrity: sha512-48er5fzHh7GCShLnNyPBRPEjs2I6QBozeGr02gaacROiyS/8ARADlj595j39iZXAqBbJHH/ivJJyPRWY9sQWZA==}
engines: {node: '>= 14'}
- hasBin: true
dependencies:
'@zeit/schemas': 2.29.0
ajv: 8.11.0
@@ -2478,19 +2602,6 @@ packages:
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
- /thenify-all@1.6.0:
- resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
- engines: {node: '>=0.8'}
- dependencies:
- thenify: 3.3.1
- dev: false
-
- /thenify@3.3.1:
- resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
- dependencies:
- any-promise: 1.3.0
- dev: false
-
/through2@2.0.5:
resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
dependencies:
@@ -2498,8 +2609,9 @@ packages:
xtend: 4.0.2
dev: false
- /timers-ext@0.1.7:
- resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==}
+ /timers-ext@0.1.8:
+ resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==}
+ engines: {node: '>=0.12'}
dependencies:
es5-ext: 0.10.64
next-tick: 1.1.0
@@ -2514,6 +2626,10 @@ packages:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: false
+ /tslib@2.6.3:
+ resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
+ dev: false
+
/type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -2529,13 +2645,13 @@ packages:
engines: {node: '>=12.20'}
dev: false
- /type-fest@4.18.2:
- resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==}
+ /type-fest@4.21.0:
+ resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==}
engines: {node: '>=16'}
dev: false
- /type@2.7.2:
- resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
+ /type@2.7.3:
+ resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==}
dev: false
/undici-types@5.26.5:
@@ -2563,9 +2679,13 @@ packages:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: false
+ /uuid@10.0.0:
+ resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
+ hasBin: true
+ dev: false
+
/uuid@9.0.1:
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
- hasBin: true
dev: false
/vary@1.1.2:
@@ -2596,7 +2716,6 @@ packages:
/which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
- hasBin: true
dependencies:
isexe: 2.0.0
@@ -2636,7 +2755,7 @@ packages:
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
hasBin: true
dependencies:
- sax: 1.3.0
+ sax: 1.4.1
dev: false
/xml@1.0.1:
@@ -2684,8 +2803,8 @@ packages:
resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
dev: false
- github.com/theopensystemslab/planx-core/5710d52:
- resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/5710d52}
+ github.com/theopensystemslab/planx-core/6c2cc59:
+ resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/6c2cc59}
name: '@opensystemslab/planx-core'
version: 1.0.0
prepare: true
@@ -2693,25 +2812,25 @@ packages:
dependencies:
'@emotion/react': 11.11.4(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(react@18.3.1)
- '@mui/material': 5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)
- '@types/geojson': 7946.0.14
- ajv: 8.13.0
- ajv-formats: 2.1.1(ajv@8.13.0)
+ '@formatjs/intl-listformat': 7.5.7
+ '@mui/material': 5.15.21(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react-dom@18.3.1)(react@18.3.1)
+ ajv: 8.16.0
+ ajv-formats: 2.1.1(ajv@8.16.0)
cheerio: 1.0.0-rc.12
copyfiles: 2.4.1
docx: 8.5.0
eslint: 8.57.0
fast-xml-parser: 4.4.0
- graphql: 16.8.1
- graphql-request: 6.1.0(graphql@16.8.1)
- json-schema-to-typescript: 14.0.4
+ graphql: 16.9.0
+ graphql-request: 6.1.0(graphql@16.9.0)
+ json-schema-to-typescript: 14.1.0
lodash: 4.17.21
- marked: 12.0.2
- prettier: 3.2.5
+ marked: 13.0.1
+ prettier: 3.3.2
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- type-fest: 4.18.2
- uuid: 9.0.1
+ type-fest: 4.21.0
+ uuid: 10.0.0
zod: 3.23.8
transitivePeerDependencies:
- '@types/react'
diff --git a/e2e/tests/ui-driven/src/context.ts b/e2e/tests/ui-driven/src/context.ts
index b9369b6e02..7f08ccf25f 100644
--- a/e2e/tests/ui-driven/src/context.ts
+++ b/e2e/tests/ui-driven/src/context.ts
@@ -4,6 +4,8 @@ import { sign } from "jsonwebtoken";
import { CoreDomainClient } from "@opensystemslab/planx-core";
import { GraphQLClient, gql } from "graphql-request";
+type NewTeam = Parameters[0];
+
export interface Context {
user: {
id?: number;
@@ -12,19 +14,12 @@ export interface Context {
email: string;
isPlatformAdmin: boolean;
};
- team: {
- id?: number;
- name: string;
- slug: string;
- logo: string;
- primaryColour: string;
- homepage: string;
- submissionEmail: string;
- };
+ team: { id?: number } & NewTeam;
flow?: {
id?: string;
publishedId?: number;
slug: string;
+ name: string;
data?: object;
};
sessionIds?: string[];
@@ -40,9 +35,13 @@ export const contextDefaults: Context = {
team: {
name: "E2E Test Team",
slug: "E2E",
- logo: "https://raw.githubusercontent.com/theopensystemslab/planx-team-logos/main/planx-testing.svg",
- primaryColour: "#444444",
- homepage: "planx.uk",
+ theme: {
+ logo: "https://raw.githubusercontent.com/theopensystemslab/planx-team-logos/main/planx-testing.svg",
+ primaryColour: "#444444",
+ },
+ settings: {
+ homepage: "planx.uk",
+ },
submissionEmail: "simulate-delivered@notifications.service.gov.uk",
},
};
@@ -59,19 +58,22 @@ export async function setUpTestContext(
context.team.id = await $admin.team.create({
slug: context.team.slug,
name: context.team.name,
- homepage: context.team.homepage,
submissionEmail: context.team.submissionEmail,
- referenceCode: "ABCD",
+ settings: {
+ homepage: context.team.settings?.homepage,
+ },
});
}
if (
context.flow?.slug &&
context.flow?.data &&
+ context.flow?.name &&
context.team?.id &&
context.user?.id
) {
context.flow.id = await $admin.flow.create({
slug: context.flow.slug,
+ name: context.flow.name,
teamId: context.team.id,
data: context.flow!.data!,
status: "online",
diff --git a/e2e/tests/ui-driven/src/create-flow/create-flow.spec.ts b/e2e/tests/ui-driven/src/create-flow/create-flow.spec.ts
index 7d86cb19a9..d30b6f269d 100644
--- a/e2e/tests/ui-driven/src/create-flow/create-flow.spec.ts
+++ b/e2e/tests/ui-driven/src/create-flow/create-flow.spec.ts
@@ -47,7 +47,7 @@ test.describe("Navigation", () => {
Promise.all([await page.goto("/"), await initialRequest]);
- const team = page.locator("h2", { hasText: context.team.name });
+ const team = page.locator("h3", { hasText: context.team.name });
let isRepeatedRequestMade = false;
page.on(
@@ -74,7 +74,7 @@ test.describe("Navigation", () => {
});
await page.goto("/");
- const team = page.locator("h2", { hasText: context.team.name });
+ const team = page.locator("h3", { hasText: context.team.name });
await team.click();
const teamSlugInHeader = page.getByRole("link", {
@@ -207,9 +207,7 @@ test.describe("Navigation", () => {
await page.goto(`/${context.team.slug}/${serviceProps.slug}`);
// Open flow settings
- // TODO: Access via sidebar when EDITOR_NAVIGATION flag is removed
- page.getByLabel("Toggle Menu").click();
- page.getByText("Flow Settings").click();
+ page.locator('[aria-label="Service settings"]').click();
// Toggle flow online
page.getByLabel("Offline").click();
@@ -219,7 +217,7 @@ test.describe("Navigation", () => {
).toBeVisible();
// Exit back to main Editor page
- page.getByRole("link", { name: "Close" }).click();
+ page.locator('[aria-label="Editor"]').click();
const previewLink = page.getByRole("link", {
name: "Open published service",
diff --git a/e2e/tests/ui-driven/src/create-flow/helpers.ts b/e2e/tests/ui-driven/src/create-flow/helpers.ts
index edaea7b683..842cf6e430 100644
--- a/e2e/tests/ui-driven/src/create-flow/helpers.ts
+++ b/e2e/tests/ui-driven/src/create-flow/helpers.ts
@@ -29,6 +29,6 @@ export async function getTeamPage({
teamName: string;
}): Promise {
const page = await getAdminPage({ browser, userId });
- await page.locator("h2", { hasText: teamName }).click();
+ await page.locator("h3", { hasText: teamName }).click();
return page;
}
diff --git a/e2e/tests/ui-driven/src/invite-to-pay/agent.spec.ts b/e2e/tests/ui-driven/src/invite-to-pay/agent.spec.ts
index a31a1cfb53..7442170cf2 100644
--- a/e2e/tests/ui-driven/src/invite-to-pay/agent.spec.ts
+++ b/e2e/tests/ui-driven/src/invite-to-pay/agent.spec.ts
@@ -21,6 +21,7 @@ let context: Context = {
...contextDefaults,
flow: {
slug: "invite-to-pay-test",
+ name: "Invite to pay test",
data: inviteToPayFlow,
},
sessionIds: [], // used to collect and clean up sessions
diff --git a/e2e/tests/ui-driven/src/invite-to-pay/mocks.ts b/e2e/tests/ui-driven/src/invite-to-pay/mocks.ts
index bf68efb3a3..f9f64e1956 100644
--- a/e2e/tests/ui-driven/src/invite-to-pay/mocks.ts
+++ b/e2e/tests/ui-driven/src/invite-to-pay/mocks.ts
@@ -14,7 +14,7 @@ export const mockPaymentRequest: Partial = {
_address: {
title: "123, Test Street, Testville",
},
- "proposal.projectType": ["alter.decks", "alter.internal.walls"],
+ "proposal.projectType": ["alter.decks", "alter.internal"],
},
paymentAmount: 12345,
applicantName: "Mr Agent (Agency Ltd)",
@@ -44,7 +44,7 @@ export const mockSessionData: Omit = {
},
"property.type": ["residential.dwelling.house.semiDetached"],
"property.region": ["South East"],
- "proposal.projectType": ["alter.decks", "alter.internal.walls"],
+ "proposal.projectType": ["alter.decks", "alter.internal"],
"applicant.agent.email": "testAgent@opensystemslab.com",
"application.fee.payable": 123.45,
"_contact.applicant.agent": {
diff --git a/e2e/tests/ui-driven/src/invite-to-pay/nominee.spec.ts b/e2e/tests/ui-driven/src/invite-to-pay/nominee.spec.ts
index d200fc05bb..1d2276a048 100644
--- a/e2e/tests/ui-driven/src/invite-to-pay/nominee.spec.ts
+++ b/e2e/tests/ui-driven/src/invite-to-pay/nominee.spec.ts
@@ -18,6 +18,7 @@ let context: Context = {
...contextDefaults,
flow: {
slug: "invite-to-pay-test",
+ name: "Invite to pay test",
data: inviteToPayFlow,
},
sessionIds: [], // used to collect and clean up sessions
@@ -55,7 +56,7 @@ test.describe("Nominee journey @regression", async () => {
await expect(page.getByText("123, Test Street, Testville")).toBeVisible();
const formattedProjectType =
- "Alteration of internal walls and addition or alteration of a deck";
+ "Add a verandah or deck and changes to internal walls or layout";
await expect(page.getByText(formattedProjectType)).toBeVisible();
const payButton = page.getByRole("button", {
diff --git a/e2e/tests/ui-driven/src/login.spec.ts b/e2e/tests/ui-driven/src/login.spec.ts
index ea7df20615..62481fc98c 100644
--- a/e2e/tests/ui-driven/src/login.spec.ts
+++ b/e2e/tests/ui-driven/src/login.spec.ts
@@ -37,7 +37,7 @@ test.describe("Login", () => {
return response.url().includes("/graphql");
});
- const team = page.locator("h2", { hasText: context.team.name });
+ const team = page.locator("h3", { hasText: context.team.name });
await expect(team).toBeVisible();
});
@@ -50,7 +50,7 @@ test.describe("Login", () => {
});
await page.goto("/");
- const teamLink = page.locator("h2").filter({ hasText: context.team.name });
+ const teamLink = page.locator("h3").filter({ hasText: context.team.name });
await teamLink.waitFor(); // wait for this to be visible
// drop graphql requests
@@ -67,7 +67,7 @@ test.describe("Login", () => {
route.continue();
});
await expect(
- page.locator("h1").filter({ hasText: "My services" }),
+ page.locator("h1").filter({ hasText: "Services" }),
).toBeVisible();
await expect(page.getByText(toastText)).toBeHidden();
});
diff --git a/e2e/tests/ui-driven/src/mocks/flows/invite-to-pay-flow.ts b/e2e/tests/ui-driven/src/mocks/flows/invite-to-pay-flow.ts
index 86579512ed..2618ad7f7a 100644
--- a/e2e/tests/ui-driven/src/mocks/flows/invite-to-pay-flow.ts
+++ b/e2e/tests/ui-driven/src/mocks/flows/invite-to-pay-flow.ts
@@ -30,7 +30,7 @@ const flow: FlowGraph = {
},
IfcqOHdMyi: {
data: {
- val: "alter.internal.walls",
+ val: "alter.internal",
text: "Alter internal walls",
},
type: ComponentType.Answer,
diff --git a/e2e/tests/ui-driven/src/pay.spec.ts b/e2e/tests/ui-driven/src/pay.spec.ts
index c5974ae55d..c630746073 100644
--- a/e2e/tests/ui-driven/src/pay.spec.ts
+++ b/e2e/tests/ui-driven/src/pay.spec.ts
@@ -23,6 +23,7 @@ let context: Context = {
...contextDefaults,
flow: {
slug: "pay-test",
+ name: "Pay test",
data: payFlow,
},
sessionIds: [], // used to collect and clean up sessions
diff --git a/e2e/tests/ui-driven/src/save-and-return.spec.ts b/e2e/tests/ui-driven/src/save-and-return.spec.ts
index 0188ef8624..162615bad5 100644
--- a/e2e/tests/ui-driven/src/save-and-return.spec.ts
+++ b/e2e/tests/ui-driven/src/save-and-return.spec.ts
@@ -24,6 +24,7 @@ test.describe("Save and return", () => {
...contextDefaults,
flow: {
slug: "e2e-save-and-return-test-flow",
+ name: "E2E Save and Return test flow",
data: simpleSendFlow,
},
};
diff --git a/e2e/tests/ui-driven/src/sections.spec.ts b/e2e/tests/ui-driven/src/sections.spec.ts
index c9189eb6eb..2a44985e8a 100644
--- a/e2e/tests/ui-driven/src/sections.spec.ts
+++ b/e2e/tests/ui-driven/src/sections.spec.ts
@@ -38,6 +38,7 @@ test.describe("Section statuses", () => {
...contextDefaults,
flow: {
slug: "sections-test-flow",
+ name: "Sections test flow",
data: flow,
},
};
diff --git a/editor.planx.uk/package.json b/editor.planx.uk/package.json
index 7ea99be389..359c449e10 100644
--- a/editor.planx.uk/package.json
+++ b/editor.planx.uk/package.json
@@ -12,8 +12,8 @@
"@mui/lab": "5.0.0-alpha.170",
"@mui/material": "^5.15.2",
"@mui/utils": "^5.15.2",
- "@opensystemslab/map": "^0.8.2",
- "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#550634a",
+ "@opensystemslab/map": "^0.8.3",
+ "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#6c2cc59",
"@tiptap/core": "^2.4.0",
"@tiptap/extension-bold": "^2.0.3",
"@tiptap/extension-bubble-menu": "^2.1.13",
@@ -35,11 +35,13 @@
"@tiptap/pm": "^2.0.3",
"@tiptap/react": "^2.4.0",
"@tiptap/suggestion": "^2.0.3",
- "@turf/area": "^6.5.0",
- "@turf/buffer": "^6.5.0",
- "@turf/helpers": "^6.5.0",
+ "@turf/area": "^7.0.0",
+ "@turf/bbox": "^7.0.0",
+ "@turf/bbox-polygon": "^7.0.0",
+ "@turf/buffer": "^7.0.0",
+ "@turf/helpers": "^7.0.0",
"array-move": "^4.0.0",
- "axios": "^1.6.8",
+ "axios": "^1.7.2",
"bowser": "^2.11.0",
"camelcase-keys": "^9.0.0",
"classnames": "^2.3.2",
@@ -75,7 +77,7 @@
"react-navi-helmet-async": "^0.15.0",
"react-scripts": "^5.0.1",
"react-toastify": "^9.1.3",
- "react-use": "^17.4.2",
+ "react-use": "^17.5.0",
"reconnecting-websocket": "^4.4.0",
"rxjs": "^7.8.1",
"scroll-into-view-if-needed": "^3.1.0",
@@ -87,7 +89,7 @@
"wkt": "^0.1.1",
"yup": "^0.32.11",
"zod": "^3.22.4",
- "zustand": "^4.3.8"
+ "zustand": "^4.5.4"
},
"devDependencies": {
"@babel/core": "^7.22.5",
@@ -115,6 +117,7 @@
"@testing-library/user-event": "^14.4.3",
"@types/dompurify": "^3.0.5",
"@types/draft-js": "^0.11.12",
+ "@types/geojson": "^7946.0.14",
"@types/jest": "^27.5.2",
"@types/jest-axe": "^3.5.9",
"@types/lodash": "^4.14.202",
@@ -138,7 +141,7 @@
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-react-hooks": "^4.6.0",
- "eslint-plugin-simple-import-sort": "^10.0.0",
+ "eslint-plugin-simple-import-sort": "^12.1.0",
"eslint-plugin-testing-library": "^5.11.1",
"husky": "^8.0.3",
"identity-obj-proxy": "^3.0.0",
@@ -151,13 +154,14 @@
"react-refresh": "^0.14.0",
"sass": "^1.71.1",
"sass-loader": "^13.3.2",
- "storybook": "^8.1.5",
+ "storybook": "^8.1.10",
"storybook-addon-material-ui": "^0.9.0-alpha.24",
"stream-browserify": "^3.0.0",
"tsconfig-paths-webpack-plugin": "^4.0.1",
"typescript": "^5.4.3",
"webpack": "^5.91.0"
},
+ "packageManager": "pnpm@8.6.6",
"scripts": {
"start": "craco start",
"build": "CI=false && craco build",
@@ -219,7 +223,9 @@
"overrides": {
"nth-check@<2.0.1": ">=2.0.1",
"postcss@<8.4.31": ">=8.4.31",
- "follow-redirects@<1.15.4": ">=1.15.4"
+ "follow-redirects@<1.15.4": ">=1.15.4",
+ "braces@<3.0.3": ">=3.0.3",
+ "fast-loops@<1.1.4": ">=1.1.4"
}
}
-}
\ No newline at end of file
+}
diff --git a/editor.planx.uk/pnpm-lock.yaml b/editor.planx.uk/pnpm-lock.yaml
index 0900ce846b..d9c7e1ada3 100644
--- a/editor.planx.uk/pnpm-lock.yaml
+++ b/editor.planx.uk/pnpm-lock.yaml
@@ -8,6 +8,8 @@ overrides:
nth-check@<2.0.1: '>=2.0.1'
postcss@<8.4.31: '>=8.4.31'
follow-redirects@<1.15.4: '>=1.15.4'
+ braces@<3.0.3: '>=3.0.3'
+ fast-loops@<1.1.4: '>=1.1.4'
dependencies:
'@airbrake/browser':
@@ -38,11 +40,11 @@ dependencies:
specifier: ^5.15.2
version: 5.15.2(@types/react@18.2.45)(react@18.2.0)
'@opensystemslab/map':
- specifier: ^0.8.2
- version: 0.8.2
+ specifier: ^0.8.3
+ version: 0.8.3
'@opensystemslab/planx-core':
- specifier: git+https://github.com/theopensystemslab/planx-core#550634a
- version: github.com/theopensystemslab/planx-core/550634a(@types/react@18.2.45)
+ specifier: git+https://github.com/theopensystemslab/planx-core#6c2cc59
+ version: github.com/theopensystemslab/planx-core/6c2cc59(@types/react@18.2.45)
'@tiptap/core':
specifier: ^2.4.0
version: 2.4.0(@tiptap/pm@2.0.3)
@@ -107,20 +109,26 @@ dependencies:
specifier: ^2.0.3
version: 2.0.3(@tiptap/core@2.4.0)(@tiptap/pm@2.0.3)
'@turf/area':
- specifier: ^6.5.0
- version: 6.5.0
+ specifier: ^7.0.0
+ version: 7.0.0
+ '@turf/bbox':
+ specifier: ^7.0.0
+ version: 7.0.0
+ '@turf/bbox-polygon':
+ specifier: ^7.0.0
+ version: 7.0.0
'@turf/buffer':
- specifier: ^6.5.0
- version: 6.5.0
+ specifier: ^7.0.0
+ version: 7.0.0
'@turf/helpers':
- specifier: ^6.5.0
- version: 6.5.0
+ specifier: ^7.0.0
+ version: 7.0.0
array-move:
specifier: ^4.0.0
version: 4.0.0
axios:
- specifier: ^1.6.8
- version: 1.6.8
+ specifier: ^1.7.2
+ version: 1.7.2
bowser:
specifier: ^2.11.0
version: 2.11.0
@@ -222,13 +230,13 @@ dependencies:
version: 0.15.0(navi@0.15.0)(react-dom@18.2.0)(react-navi@0.15.0)(react@18.2.0)
react-scripts:
specifier: ^5.0.1
- version: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.5.7)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
+ version: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.6.13)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
react-toastify:
specifier: ^9.1.3
version: 9.1.3(react-dom@18.2.0)(react@18.2.0)
react-use:
- specifier: ^17.4.2
- version: 17.4.2(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^17.5.0
+ version: 17.5.0(react-dom@18.2.0)(react@18.2.0)
reconnecting-websocket:
specifier: ^4.4.0
version: 4.4.0
@@ -263,8 +271,8 @@ dependencies:
specifier: ^3.22.4
version: 3.22.4
zustand:
- specifier: ^4.3.8
- version: 4.3.8(immer@9.0.21)(react@18.2.0)
+ specifier: ^4.5.4
+ version: 4.5.4(@types/react@18.2.45)(immer@9.0.21)(react@18.2.0)
devDependencies:
'@babel/core':
@@ -290,7 +298,7 @@ devDependencies:
version: 7.23.3(@babel/core@7.22.5)
'@craco/craco':
specifier: ^7.1.0
- version: 7.1.0(@swc/core@1.5.7)(@types/node@17.0.45)(postcss@8.4.32)(react-scripts@5.0.1)(typescript@5.4.3)
+ version: 7.1.0(@swc/core@1.6.13)(@types/node@17.0.45)(postcss@8.4.32)(react-scripts@5.0.1)(typescript@5.4.3)
'@react-theming/storybook-addon':
specifier: ^1.1.10
version: 1.1.10(@storybook/addons@7.6.7)(@storybook/react@7.6.7)(@storybook/theming@7.6.7)(react-dom@18.2.0)(react@18.2.0)
@@ -320,7 +328,7 @@ devDependencies:
version: 7.6.7(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)
'@storybook/react-webpack5':
specifier: ^7.6.7
- version: 7.6.7(@babel/core@7.22.5)(@swc/core@1.5.7)(esbuild@0.21.3)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)
+ version: 7.6.7(@babel/core@7.22.5)(@swc/core@1.6.13)(esbuild@0.21.3)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)
'@storybook/testing-library':
specifier: ^0.2.2
version: 0.2.2
@@ -335,13 +343,16 @@ devDependencies:
version: 14.2.1(react-dom@18.2.0)(react@18.2.0)
'@testing-library/user-event':
specifier: ^14.4.3
- version: 14.4.3(@testing-library/dom@10.1.0)
+ version: 14.4.3(@testing-library/dom@10.3.1)
'@types/dompurify':
specifier: ^3.0.5
version: 3.0.5
'@types/draft-js':
specifier: ^0.11.12
version: 0.11.12
+ '@types/geojson':
+ specifier: ^7946.0.14
+ version: 7946.0.14
'@types/jest':
specifier: ^27.5.2
version: 27.5.2
@@ -412,8 +423,8 @@ devDependencies:
specifier: ^4.6.0
version: 4.6.0(eslint@8.44.0)
eslint-plugin-simple-import-sort:
- specifier: ^10.0.0
- version: 10.0.0(eslint@8.44.0)
+ specifier: ^12.1.0
+ version: 12.1.0(eslint@8.44.0)
eslint-plugin-testing-library:
specifier: ^5.11.1
version: 5.11.1(eslint@8.44.0)(typescript@5.4.3)
@@ -451,8 +462,8 @@ devDependencies:
specifier: ^13.3.2
version: 13.3.2(sass@1.71.1)(webpack@5.91.0)
storybook:
- specifier: ^8.1.5
- version: 8.1.5(@babel/preset-env@7.22.6)(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^8.1.10
+ version: 8.1.10(@babel/preset-env@7.22.6)(react-dom@18.2.0)(react@18.2.0)
storybook-addon-material-ui:
specifier: ^0.9.0-alpha.24
version: 0.9.0-alpha.24(@material-ui/core@4.12.4)(@storybook/addons@7.6.7)(@storybook/react@7.6.7)(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)
@@ -467,12 +478,12 @@ devDependencies:
version: 5.4.3
webpack:
specifier: ^5.91.0
- version: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ version: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
packages:
- /@adobe/css-tools@4.3.3:
- resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==}
+ /@adobe/css-tools@4.4.0:
+ resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==}
dev: true
/@airbrake/browser@2.1.8:
@@ -499,19 +510,19 @@ packages:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
- /@apideck/better-ajv-errors@0.3.6(ajv@8.13.0):
+ /@apideck/better-ajv-errors@0.3.6(ajv@8.16.0):
resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==}
engines: {node: '>=10'}
peerDependencies:
ajv: '>=8'
dependencies:
- ajv: 8.13.0
+ ajv: 8.16.0
json-schema: 0.4.0
jsonpointer: 5.0.1
leven: 3.1.0
- /@apidevtools/json-schema-ref-parser@11.6.2:
- resolution: {integrity: sha512-ENUdLLT04aDbbHCRwfKf8gR67AhV0CdFrOAtk+FcakBAgaq6ds3HLK9X0BCyiFUz8pK9uP+k6YZyJaGG7Mt7vQ==}
+ /@apidevtools/json-schema-ref-parser@11.6.4:
+ resolution: {integrity: sha512-9K6xOqeevacvweLGik6LnZCb1fBtCOSIWQs8d096XGeqoLKC33UVMGz9+77Gw44KvbH4pKcQPWo4ZpxkXYj05w==}
engines: {node: '>= 16'}
dependencies:
'@jsdevtools/ono': 7.1.3
@@ -551,7 +562,7 @@ packages:
subscriptions-transport-ws: 0.11.0(graphql@16.8.1)
symbol-observable: 4.0.0
ts-invariant: 0.10.3
- tslib: 2.6.2
+ tslib: 2.6.3
zen-observable-ts: 1.2.5
dev: false
@@ -562,15 +573,15 @@ packages:
default-browser-id: 3.0.0
dev: true
- /@babel/code-frame@7.24.2:
- resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
+ /@babel/code-frame@7.24.7:
+ resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/highlight': 7.24.5
+ '@babel/highlight': 7.24.7
picocolors: 1.0.1
- /@babel/compat-data@7.24.4:
- resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==}
+ /@babel/compat-data@7.24.7:
+ resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==}
engines: {node: '>=6.9.0'}
/@babel/core@7.22.5:
@@ -578,146 +589,154 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.24.2
- '@babel/generator': 7.24.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.22.5)
- '@babel/helpers': 7.24.5
- '@babel/parser': 7.24.5
- '@babel/template': 7.24.0
- '@babel/traverse': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.22.5)
+ '@babel/helpers': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/template': 7.24.7
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
convert-source-map: 1.9.0
- debug: 4.3.4
+ debug: 4.3.5
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- /@babel/core@7.24.5:
- resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==}
+ /@babel/core@7.24.7:
+ resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==}
engines: {node: '>=6.9.0'}
dependencies:
'@ampproject/remapping': 2.3.0
- '@babel/code-frame': 7.24.2
- '@babel/generator': 7.24.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5)
- '@babel/helpers': 7.24.5
- '@babel/parser': 7.24.5
- '@babel/template': 7.24.0
- '@babel/traverse': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7)
+ '@babel/helpers': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/template': 7.24.7
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
convert-source-map: 2.0.0
- debug: 4.3.4
+ debug: 4.3.5
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
+ dev: true
- /@babel/eslint-parser@7.24.5(@babel/core@7.24.5)(eslint@8.44.0):
- resolution: {integrity: sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ==}
+ /@babel/eslint-parser@7.24.7(@babel/core@7.22.5)(eslint@8.44.0):
+ resolution: {integrity: sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA==}
engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
peerDependencies:
'@babel/core': ^7.11.0
eslint: ^7.5.0 || ^8.0.0 || ^9.0.0
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.22.5
'@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
eslint: 8.44.0
eslint-visitor-keys: 2.1.0
semver: 6.3.1
- /@babel/generator@7.24.5:
- resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==}
+ /@babel/generator@7.24.7:
+ resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
jsesc: 2.5.2
- /@babel/helper-annotate-as-pure@7.22.5:
- resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
+ /@babel/helper-annotate-as-pure@7.24.7:
+ resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
- /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15:
- resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==}
+ /@babel/helper-builder-binary-assignment-operator-visitor@7.24.7:
+ resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helper-compilation-targets@7.23.6:
- resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
+ /@babel/helper-compilation-targets@7.24.7:
+ resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/compat-data': 7.24.4
- '@babel/helper-validator-option': 7.23.5
- browserslist: 4.23.0
+ '@babel/compat-data': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ browserslist: 4.23.2
lru-cache: 5.1.1
semver: 6.3.1
- /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==}
+ /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-member-expression-to-functions': 7.24.5
- '@babel/helper-optimise-call-expression': 7.22.5
- '@babel/helper-replace-supers': 7.24.1(@babel/core@7.22.5)
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
- '@babel/helper-split-export-declaration': 7.24.5
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-member-expression-to-functions': 7.24.7
+ '@babel/helper-optimise-call-expression': 7.24.7
+ '@babel/helper-replace-supers': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
semver: 6.3.1
- dev: true
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==}
+ /@babel/helper-create-class-features-plugin@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-member-expression-to-functions': 7.24.5
- '@babel/helper-optimise-call-expression': 7.22.5
- '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5)
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
- '@babel/helper-split-export-declaration': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-member-expression-to-functions': 7.24.7
+ '@babel/helper-optimise-call-expression': 7.24.7
+ '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.22.5):
- resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==}
+ /@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-annotate-as-pure': 7.22.5
+ '@babel/helper-annotate-as-pure': 7.24.7
regexpu-core: 5.3.2
semver: 6.3.1
- dev: true
- /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5):
- resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==}
+ /@babel/helper-create-regexp-features-plugin@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-annotate-as-pure': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-annotate-as-pure': 7.24.7
regexpu-core: 5.3.2
semver: 6.3.1
+ dev: true
/@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.22.5):
resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==}
@@ -725,14 +744,13 @@ packages:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-plugin-utils': 7.24.5
- debug: 4.3.4
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ debug: 4.3.5
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
- dev: true
/@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.22.5):
resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==}
@@ -740,14 +758,13 @@ packages:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-plugin-utils': 7.24.5
- debug: 4.3.4
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ debug: 4.3.5
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
- dev: true
/@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.22.5):
resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==}
@@ -755,287 +772,324 @@ packages:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-plugin-utils': 7.24.5
- debug: 4.3.4
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ debug: 4.3.5
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
- dev: true
- /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5):
+ /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.7):
resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-plugin-utils': 7.24.5
- debug: 4.3.4
+ '@babel/core': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ debug: 4.3.5
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
+ dev: true
- /@babel/helper-environment-visitor@7.22.20:
- resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
+ /@babel/helper-environment-visitor@7.24.7:
+ resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.7
- /@babel/helper-function-name@7.23.0:
- resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+ /@babel/helper-function-name@7.24.7:
+ resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/template': 7.24.0
- '@babel/types': 7.24.5
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
- /@babel/helper-hoist-variables@7.22.5:
- resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+ /@babel/helper-hoist-variables@7.24.7:
+ resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
- /@babel/helper-member-expression-to-functions@7.24.5:
- resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==}
+ /@babel/helper-member-expression-to-functions@7.24.7:
+ resolution: {integrity: sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helper-module-imports@7.24.3:
- resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==}
+ /@babel/helper-module-imports@7.24.7:
+ resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helper-module-transforms@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==}
+ /@babel/helper-module-transforms@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-module-imports': 7.24.3
- '@babel/helper-simple-access': 7.24.5
- '@babel/helper-split-export-declaration': 7.24.5
- '@babel/helper-validator-identifier': 7.24.5
-
- /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==}
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-simple-access': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+
+ /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-module-imports': 7.24.3
- '@babel/helper-simple-access': 7.24.5
- '@babel/helper-split-export-declaration': 7.24.5
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-simple-access': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/helper-optimise-call-expression@7.22.5:
- resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
+ /@babel/helper-optimise-call-expression@7.24.7:
+ resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
- /@babel/helper-plugin-utils@7.24.5:
- resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==}
+ /@babel/helper-plugin-utils@7.24.7:
+ resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==}
engines: {node: '>=6.9.0'}
- /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.22.5):
- resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==}
+ /@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-wrap-function': 7.24.5
- dev: true
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-wrap-function': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5):
- resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==}
+ /@babel/helper-remap-async-to-generator@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-wrap-function': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-wrap-function': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/helper-replace-supers@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==}
+ /@babel/helper-replace-supers@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-member-expression-to-functions': 7.24.5
- '@babel/helper-optimise-call-expression': 7.22.5
- dev: true
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-member-expression-to-functions': 7.24.7
+ '@babel/helper-optimise-call-expression': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==}
+ /@babel/helper-replace-supers@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-member-expression-to-functions': 7.24.5
- '@babel/helper-optimise-call-expression': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-member-expression-to-functions': 7.24.7
+ '@babel/helper-optimise-call-expression': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/helper-simple-access@7.24.5:
- resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==}
+ /@babel/helper-simple-access@7.24.7:
+ resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helper-skip-transparent-expression-wrappers@7.22.5:
- resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==}
+ /@babel/helper-skip-transparent-expression-wrappers@7.24.7:
+ resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helper-split-export-declaration@7.24.5:
- resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==}
+ /@babel/helper-split-export-declaration@7.24.7:
+ resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
- /@babel/helper-string-parser@7.24.1:
- resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
+ /@babel/helper-string-parser@7.24.7:
+ resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==}
engines: {node: '>=6.9.0'}
- /@babel/helper-validator-identifier@7.24.5:
- resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
+ /@babel/helper-validator-identifier@7.24.7:
+ resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
- /@babel/helper-validator-option@7.23.5:
- resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
+ /@babel/helper-validator-option@7.24.7:
+ resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==}
engines: {node: '>=6.9.0'}
- /@babel/helper-wrap-function@7.24.5:
- resolution: {integrity: sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==}
+ /@babel/helper-wrap-function@7.24.7:
+ resolution: {integrity: sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-function-name': 7.23.0
- '@babel/template': 7.24.0
- '@babel/types': 7.24.5
+ '@babel/helper-function-name': 7.24.7
+ '@babel/template': 7.24.7
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/helpers@7.24.5:
- resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==}
+ /@babel/helpers@7.24.7:
+ resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/template': 7.24.0
- '@babel/traverse': 7.24.5
- '@babel/types': 7.24.5
- transitivePeerDependencies:
- - supports-color
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
- /@babel/highlight@7.24.5:
- resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
+ /@babel/highlight@7.24.7:
+ resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.0.1
- /@babel/parser@7.24.5:
- resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==}
+ /@babel/parser@7.24.7:
+ resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==}
engines: {node: '>=6.0.0'}
hasBin: true
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
- /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==}
+ /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==}
+ /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==}
+ /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==}
+ /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.13.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
- '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.22.5)
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==}
+ /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.13.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
- '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==}
+ /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.5):
+ /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.5):
resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==}
engines: {node: '>=6.9.0'}
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==}
+ /@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.24.5)
+ '@babel/core': 7.22.5
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
/@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.22.5):
resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==}
@@ -1045,54 +1099,58 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5)
dev: true
- /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.5):
+ /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.5):
resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==}
engines: {node: '>=6.9.0'}
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5)
+ '@babel/core': 7.22.5
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5)
- /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.5):
+ /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.5):
resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==}
engines: {node: '>=6.9.0'}
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5)
+ '@babel/core': 7.22.5
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5)
- /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.5):
+ /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.5):
resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==}
engines: {node: '>=6.9.0'}
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5)
+ '@babel/core': 7.22.5
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.24.5):
+ /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.22.5):
resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==}
engines: {node: '>=6.9.0'}
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
/@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5):
resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
@@ -1101,28 +1159,30 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- dev: true
- /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5):
+ /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7):
resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.24.7
+ dev: true
- /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.24.5):
+ /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.22.5):
resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==}
engines: {node: '>=6.9.0'}
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5)
+ '@babel/core': 7.22.5
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
/@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.5):
resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==}
@@ -1132,9 +1192,8 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
/@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5):
resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
@@ -1142,15 +1201,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5):
+ /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7):
resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5):
resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
@@ -1158,15 +1218,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
-
- /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.5):
- resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
/@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5):
resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
@@ -1174,15 +1226,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5):
+ /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7):
resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5):
resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
@@ -1191,26 +1244,26 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5):
+ /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.7):
resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==}
+ /@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/helper-plugin-utils': 7.24.7
/@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.5):
resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
@@ -1218,16 +1271,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5):
+ /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5):
resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==}
@@ -1235,16 +1288,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5):
+ /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-flow@7.23.3(@babel/core@7.22.5):
resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==}
@@ -1253,64 +1306,64 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==}
+ /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==}
+ /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==}
+ /@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==}
+ /@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==}
+ /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==}
+ /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5):
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
@@ -1318,15 +1371,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5):
+ /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7):
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5):
resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
@@ -1334,33 +1388,35 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5):
+ /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==}
+ /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==}
+ /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5):
resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
@@ -1368,15 +1424,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5):
+ /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7):
resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5):
resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
@@ -1384,15 +1441,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5):
+ /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5):
resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
@@ -1400,15 +1458,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5):
+ /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7):
resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5):
resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
@@ -1416,15 +1475,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5):
+ /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5):
resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
@@ -1432,15 +1492,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5):
+ /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5):
resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
@@ -1448,15 +1509,16 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5):
+ /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.5):
resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
@@ -1465,17 +1527,17 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5):
+ /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7):
resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5):
resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
@@ -1484,35 +1546,36 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5):
+ /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7):
resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==}
+ /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==}
+ /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.5):
resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
@@ -1521,882 +1584,924 @@ packages:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5):
+ /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.7):
resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==}
+ /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==}
+ /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.22.5):
- resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==}
+ /@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.22.5)
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.22.5)
'@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5)
- dev: true
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5):
- resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==}
+ /@babel/plugin-transform-async-generator-functions@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5)
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==}
+ /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-module-imports': 7.24.3
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.22.5)
- dev: true
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==}
+ /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-module-imports': 7.24.3
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-remap-async-to-generator': 7.24.7(@babel/core@7.24.7)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==}
+ /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==}
+ /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==}
+ /@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==}
+ /@babel/plugin-transform-block-scoping@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==}
+ /@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==}
+ /@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.22.5):
- resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==}
+ /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.12.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5)
- dev: true
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5):
- resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==}
+ /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.12.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-classes@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==}
+ /@babel/plugin-transform-classes@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-replace-supers': 7.24.1(@babel/core@7.22.5)
- '@babel/helper-split-export-declaration': 7.24.5
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-replace-supers': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-split-export-declaration': 7.24.7
globals: 11.12.0
- dev: true
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==}
+ /@babel/plugin-transform-classes@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5)
- '@babel/helper-split-export-declaration': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-split-export-declaration': 7.24.7
globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==}
+ /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/template': 7.24.0
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/template': 7.24.7
- /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==}
+ /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/template': 7.24.0
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/template': 7.24.7
+ dev: true
- /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==}
+ /@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==}
+ /@babel/plugin-transform-destructuring@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==}
+ /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==}
+ /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==}
+ /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==}
+ /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==}
+ /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5)
- dev: true
- /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==}
+ /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7)
+ dev: true
- /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==}
+ /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==}
+ /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==}
+ /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5)
- dev: true
- /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==}
+ /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7)
+ dev: true
- /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==}
+ /@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.22.5)
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.22.5)
- /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==}
+ /@babel/plugin-transform-flow-strip-types@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-cjRKJ7FobOH2eakx7Ja+KpJRj8+y+/SiB3ooYm/n2UJfxu0oEaOoxOinitkJcPqv9KxS0kxTGPUaR7L2XcXDXA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.7)
+ dev: true
- /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==}
+ /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==}
+ /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==}
+ /@babel/plugin-transform-function-name@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==}
+ /@babel/plugin-transform-function-name@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==}
+ /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5)
- dev: true
- /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==}
+ /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7)
+ dev: true
- /@babel/plugin-transform-literals@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==}
+ /@babel/plugin-transform-literals@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==}
+ /@babel/plugin-transform-literals@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==}
+ /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5)
- dev: true
- /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==}
+ /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7)
+ dev: true
- /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==}
+ /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==}
+ /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==}
+ /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==}
+ /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==}
+ /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-simple-access': 7.24.5
- dev: true
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-simple-access': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==}
+ /@babel/plugin-transform-modules-commonjs@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-simple-access': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-simple-access': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==}
+ /@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-hoist-variables': 7.22.5
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-identifier': 7.24.5
- dev: true
+ '@babel/helper-hoist-variables': 7.24.7
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==}
+ /@babel/plugin-transform-modules-systemjs@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-hoist-variables': 7.22.5
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-hoist-variables': 7.24.7
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==}
+ /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==}
+ /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==}
+ /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==}
+ /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==}
+ /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==}
+ /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==}
+ /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5)
- dev: true
- /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==}
+ /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7)
+ dev: true
- /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==}
+ /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5)
- dev: true
- /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==}
+ /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7)
+ dev: true
- /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==}
+ /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5)
- '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.22.5)
- dev: true
+ '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.22.5)
- /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==}
+ /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7)
+ dev: true
- /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==}
+ /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-replace-supers': 7.24.1(@babel/core@7.22.5)
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-replace-supers': 7.24.7(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==}
+ /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==}
+ /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5)
- dev: true
- /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==}
+ /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7)
+ dev: true
- /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==}
+ /@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5)
- dev: true
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==}
+ /@babel/plugin-transform-optional-chaining@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==}
+ /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==}
+ /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==}
+ /@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==}
+ /@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==}
+ /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5)
- dev: true
-
- /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5)
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==}
+ /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7)
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==}
+ /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
-
- /@babel/plugin-transform-react-constant-elements@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==}
+ /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: true
- /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==}
+ /@babel/plugin-transform-react-constant-elements@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-7LidzZfUXyfZ8/buRW6qIIHBY8wAZ1OrY9c/wTr8YhZ6vMPo+Uc/CVFLYY1spZrEQlD4w5u8wjqk5NQ3OVqQKA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==}
+ /@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.22.5)
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==}
+ /@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5)
+ '@babel/core': 7.22.5
+ '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
/@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.22.5):
resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==}
@@ -2405,305 +2510,306 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-module-imports': 7.24.3
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.22.5)
- '@babel/types': 7.24.5
-
- /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5):
- resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-module-imports': 7.24.3
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5)
- '@babel/types': 7.24.5
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.22.5)
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==}
+ /@babel/plugin-transform-react-jsx@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.22.5)
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==}
+ /@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==}
+ /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
regenerator-transform: 0.15.2
- dev: true
- /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==}
+ /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
regenerator-transform: 0.15.2
+ dev: true
- /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==}
+ /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==}
+ /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5):
- resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==}
+ /@babel/plugin-transform-runtime@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-module-imports': 7.24.3
- '@babel/helper-plugin-utils': 7.24.5
- babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5)
- babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5)
- babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5)
+ '@babel/core': 7.22.5
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.22.5)
+ babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.22.5)
+ babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.22.5)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==}
+ /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==}
+ /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-spread@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==}
+ /@babel/plugin-transform-spread@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==}
+ /@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-skip-transparent-expression-wrappers': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==}
+ /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==}
+ /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==}
+ /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==}
+ /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==}
+ /@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==}
+ /@babel/plugin-transform-typeof-symbol@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.22.5):
- resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==}
+ /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.22.5)
- dev: true
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
- /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==}
+ /@babel/plugin-transform-typescript@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-iLD3UNkgx2n/HrjBesVbYX6j0yqn/sJktvbtKKgcaLIQ4bTTQ8obAypc1VpyHPD2y4Phh9zHOaAt8e/L14wCpw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-annotate-as-pure': 7.24.7
+ '@babel/helper-create-class-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==}
+ /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==}
+ /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==}
+ /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==}
+ /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==}
+ /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==}
+ /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
- /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==}
+ /@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.5)
- '@babel/helper-plugin-utils': 7.24.5
- dev: true
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
- /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==}
+ /@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5)
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-create-regexp-features-plugin': 7.24.7(@babel/core@7.24.7)
+ '@babel/helper-plugin-utils': 7.24.7
+ dev: true
/@babel/preset-env@7.22.6(@babel/core@7.22.5):
resolution: {integrity: sha512-IHr0AXHGk8oh8HYSs45Mxuv6iySUBwDTIzJSnXN7PURqHdxJVQlCoXmKJgyvSS9bcNf9NVRVE35z+LkCvGmi6w==}
@@ -2711,21 +2817,21 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/compat-data': 7.24.4
+ '@babel/compat-data': 7.24.7
'@babel/core': 7.22.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.22.5)
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.22.5)
'@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.5)
'@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5)
'@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5)
'@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.5)
'@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.5)
'@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5)
- '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.22.5)
+ '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.22.5)
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5)
'@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5)
'@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5)
@@ -2737,56 +2843,56 @@ packages:
'@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.5)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5)
'@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.5)
- '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.22.5)
- '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.22.5)
- '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.22.5)
- '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.22.5)
- '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.22.5)
- '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.5)
- '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.22.5)
- '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.22.5)
- '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.22.5)
- '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.22.5)
- '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.22.5)
- '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.22.5)
+ '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-typeof-symbol': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.22.5)
'@babel/preset-modules': 0.1.6(@babel/core@7.22.5)
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
'@nicolo-ribaudo/semver-v6': 6.3.3
babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.22.5)
babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.22.5)
@@ -2794,121 +2900,121 @@ packages:
core-js-compat: 3.37.1
transitivePeerDependencies:
- supports-color
- dev: true
- /@babel/preset-env@7.24.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==}
+ /@babel/preset-env@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/compat-data': 7.24.4
- '@babel/core': 7.24.5
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5)
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5)
- '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5)
- '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5)
- '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5)
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5)
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5)
- '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5)
- '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5)
- '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5)
- '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5)
- '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5)
- '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5)
- '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5)
- babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5)
- babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5)
- babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5)
+ '@babel/compat-data': 7.24.7
+ '@babel/core': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.7)
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7)
+ '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.7)
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.7)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7)
+ '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.7)
+ '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-async-generator-functions': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-block-scoping': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-classes': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-destructuring': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-function-name': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-literals': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-modules-systemjs': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-typeof-symbol': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.7)
+ '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.7)
+ babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.7)
+ babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.7)
+ babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.7)
core-js-compat: 3.37.1
semver: 6.3.1
transitivePeerDependencies:
- supports-color
+ dev: true
- /@babel/preset-flow@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==}
+ /@babel/preset-flow@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.22.5)
dev: true
- /@babel/preset-flow@7.24.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==}
+ /@babel/preset-flow@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.24.7)
dev: true
/@babel/preset-modules@0.1.6(@babel/core@7.22.5):
@@ -2917,22 +3023,22 @@ packages:
'@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.5)
- '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.22.5)
- '@babel/types': 7.24.5
+ '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.22.5)
+ '@babel/types': 7.24.7
esutils: 2.0.3
- dev: true
- /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5):
+ /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.7):
resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==}
peerDependencies:
'@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/types': 7.24.7
esutils: 2.0.3
+ dev: true
/@babel/preset-react@7.22.5(@babel/core@7.22.5):
resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==}
@@ -2941,41 +3047,30 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.22.5)
'@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.22.5)
- '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.5)
- '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.22.5)
- dev: true
-
- /@babel/preset-react@7.22.5(@babel/core@7.24.5):
- resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5)
- '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.5)
- '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.5)
+ '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
- /@babel/preset-react@7.24.1(@babel/core@7.22.5):
- resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==}
+ /@babel/preset-react@7.24.7(@babel/core@7.22.5):
+ resolution: {integrity: sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.22.5)
- '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.5)
- '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.22.5)
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-react-jsx': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
dev: true
/@babel/preset-typescript@7.23.3(@babel/core@7.22.5):
@@ -2985,33 +3080,37 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.22.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.22.5)
- '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.22.5)
- dev: true
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
- /@babel/preset-typescript@7.23.3(@babel/core@7.24.5):
+ /@babel/preset-typescript@7.23.3(@babel/core@7.24.7):
resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-plugin-utils': 7.24.5
- '@babel/helper-validator-option': 7.23.5
- '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-typescript': 7.24.7(@babel/core@7.24.7)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- /@babel/register@7.23.7(@babel/core@7.24.5):
- resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==}
+ /@babel/register@7.24.6(@babel/core@7.24.7):
+ resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.24.7
clone-deep: 4.0.1
find-cache-dir: 2.1.0
make-dir: 2.1.0
@@ -3022,43 +3121,43 @@ packages:
/@babel/regjsgen@0.8.0:
resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==}
- /@babel/runtime@7.24.5:
- resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
+ /@babel/runtime@7.24.7:
+ resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.1
- /@babel/template@7.24.0:
- resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
+ /@babel/template@7.24.7:
+ resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/code-frame': 7.24.2
- '@babel/parser': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/code-frame': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
- /@babel/traverse@7.24.5:
- resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==}
+ /@babel/traverse@7.24.7:
+ resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/code-frame': 7.24.2
- '@babel/generator': 7.24.5
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-hoist-variables': 7.22.5
- '@babel/helper-split-export-declaration': 7.24.5
- '@babel/parser': 7.24.5
- '@babel/types': 7.24.5
- debug: 4.3.4
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-hoist-variables': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
+ debug: 4.3.5
globals: 11.12.0
transitivePeerDependencies:
- supports-color
- /@babel/types@7.24.5:
- resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
+ /@babel/types@7.24.7:
+ resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-string-parser': 7.24.1
- '@babel/helper-validator-identifier': 7.24.5
+ '@babel/helper-string-parser': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
/@base2/pretty-print-object@1.0.1:
@@ -3321,7 +3420,7 @@ packages:
dev: true
optional: true
- /@craco/craco@7.1.0(@swc/core@1.5.7)(@types/node@17.0.45)(postcss@8.4.32)(react-scripts@5.0.1)(typescript@5.4.3):
+ /@craco/craco@7.1.0(@swc/core@1.6.13)(@types/node@17.0.45)(postcss@8.4.32)(react-scripts@5.0.1)(typescript@5.4.3):
resolution: {integrity: sha512-oRAcPIKYrfPXp9rSzlsDNeOaVtDiKhoyqSXUoqiK24jCkHr4T8m/a2f74yXIzCbIheoUWDOIfWZyRgFgT+cpqA==}
engines: {node: '>=6'}
hasBin: true
@@ -3330,10 +3429,10 @@ packages:
dependencies:
autoprefixer: 10.4.16(postcss@8.4.32)
cosmiconfig: 7.1.0
- cosmiconfig-typescript-loader: 1.0.9(@swc/core@1.5.7)(@types/node@17.0.45)(cosmiconfig@7.1.0)(typescript@5.4.3)
+ cosmiconfig-typescript-loader: 1.0.9(@swc/core@1.6.13)(@types/node@17.0.45)(cosmiconfig@7.1.0)(typescript@5.4.3)
cross-spawn: 7.0.3
lodash: 4.17.21
- react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.5.7)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
+ react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.6.13)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
semver: 7.6.2
webpack-merge: 5.10.0
transitivePeerDependencies:
@@ -3358,7 +3457,7 @@ packages:
resolution: {integrity: sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
'@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.0)
postcss: 8.4.32
@@ -3368,7 +3467,7 @@ packages:
resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
'@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.32)
postcss: 8.4.32
@@ -3378,7 +3477,7 @@ packages:
resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -3387,7 +3486,7 @@ packages:
resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -3396,7 +3495,7 @@ packages:
resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
'@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.32)
postcss: 8.4.32
@@ -3406,7 +3505,7 @@ packages:
resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
'@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.0)
postcss: 8.4.32
@@ -3416,7 +3515,7 @@ packages:
resolution: {integrity: sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -3425,7 +3524,7 @@ packages:
resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -3434,7 +3533,7 @@ packages:
resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
'@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.32)
postcss: 8.4.32
@@ -3444,7 +3543,7 @@ packages:
resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.3
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -3453,7 +3552,7 @@ packages:
resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -3462,7 +3561,7 @@ packages:
resolution: {integrity: sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -3471,7 +3570,7 @@ packages:
resolution: {integrity: sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==}
engines: {node: ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -3480,7 +3579,7 @@ packages:
resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
@@ -3505,8 +3604,8 @@ packages:
/@emotion/babel-plugin@11.11.0:
resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
dependencies:
- '@babel/helper-module-imports': 7.24.3
- '@babel/runtime': 7.24.5
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/runtime': 7.24.7
'@emotion/hash': 0.9.1
'@emotion/memoize': 0.8.1
'@emotion/serialize': 1.1.4
@@ -3516,6 +3615,8 @@ packages:
find-root: 1.1.0
source-map: 0.5.7
stylis: 4.2.0
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/cache@10.0.29:
@@ -3542,13 +3643,15 @@ packages:
peerDependencies:
react: '>=16.3.0'
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/cache': 10.0.29
'@emotion/css': 10.0.27
'@emotion/serialize': 0.11.16
'@emotion/sheet': 0.9.4
'@emotion/utils': 0.11.3
react: 18.2.0
+ transitivePeerDependencies:
+ - supports-color
dev: true
/@emotion/css@10.0.27:
@@ -3557,6 +3660,8 @@ packages:
'@emotion/serialize': 0.11.16
'@emotion/utils': 0.11.3
babel-plugin-emotion: 10.2.2
+ transitivePeerDependencies:
+ - supports-color
dev: true
/@emotion/hash@0.8.0:
@@ -3596,7 +3701,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/cache': 11.11.0
'@emotion/serialize': 1.1.4
@@ -3606,6 +3711,8 @@ packages:
'@types/react': 18.2.45
hoist-non-react-statics: 3.3.2
react: 18.2.0
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/react@11.11.4(@types/react@18.2.45)(react@18.3.1):
@@ -3617,7 +3724,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/cache': 11.11.0
'@emotion/serialize': 1.1.4
@@ -3627,6 +3734,8 @@ packages:
'@types/react': 18.2.45
hoist-non-react-statics: 3.3.2
react: 18.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/serialize@0.11.16:
@@ -3663,7 +3772,7 @@ packages:
'@emotion/core': ^10.0.28
react: '>=16.3.0'
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/core': 10.3.1(react@18.2.0)
'@emotion/is-prop-valid': 0.8.8
'@emotion/serialize': 0.11.16
@@ -3681,6 +3790,8 @@ packages:
'@emotion/styled-base': 10.3.0(@emotion/core@10.3.1)(react@18.2.0)
babel-plugin-emotion: 10.2.2
react: 18.2.0
+ transitivePeerDependencies:
+ - supports-color
dev: true
/@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0):
@@ -3693,7 +3804,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/is-prop-valid': 1.2.2
'@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0)
@@ -3702,6 +3813,8 @@ packages:
'@emotion/utils': 1.2.1
'@types/react': 18.2.45
react: 18.2.0
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/styled@11.11.5(@emotion/react@11.11.4)(@types/react@18.2.45)(react@18.3.1):
@@ -3714,7 +3827,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/babel-plugin': 11.11.0
'@emotion/is-prop-valid': 1.2.2
'@emotion/react': 11.11.4(@types/react@18.2.45)(react@18.3.1)
@@ -3723,6 +3836,8 @@ packages:
'@emotion/utils': 1.2.1
'@types/react': 18.2.45
react: 18.3.1
+ transitivePeerDependencies:
+ - supports-color
dev: false
/@emotion/stylis@0.8.5:
@@ -4376,8 +4491,8 @@ packages:
eslint-visitor-keys: 3.4.3
dev: false
- /@eslint-community/regexpp@4.10.0:
- resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
+ /@eslint-community/regexpp@4.11.0:
+ resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
/@eslint/eslintrc@2.1.4:
@@ -4385,7 +4500,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
- debug: 4.3.4
+ debug: 4.3.5
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.1
@@ -4409,40 +4524,40 @@ packages:
resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==}
dev: true
- /@floating-ui/core@1.6.2:
- resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==}
+ /@floating-ui/core@1.6.4:
+ resolution: {integrity: sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==}
dependencies:
- '@floating-ui/utils': 0.2.2
+ '@floating-ui/utils': 0.2.4
- /@floating-ui/dom@1.6.5:
- resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==}
+ /@floating-ui/dom@1.6.7:
+ resolution: {integrity: sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==}
dependencies:
- '@floating-ui/core': 1.6.2
- '@floating-ui/utils': 0.2.2
+ '@floating-ui/core': 1.6.4
+ '@floating-ui/utils': 0.2.4
- /@floating-ui/react-dom@2.1.0(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==}
+ /@floating-ui/react-dom@2.1.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
- '@floating-ui/dom': 1.6.5
+ '@floating-ui/dom': 1.6.7
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- /@floating-ui/react-dom@2.1.0(react-dom@18.3.1)(react@18.3.1):
- resolution: {integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==}
+ /@floating-ui/react-dom@2.1.1(react-dom@18.3.1)(react@18.3.1):
+ resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
- '@floating-ui/dom': 1.6.5
+ '@floating-ui/dom': 1.6.7
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
dev: false
- /@floating-ui/utils@0.2.2:
- resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==}
+ /@floating-ui/utils@0.2.4:
+ resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==}
/@focus-reactive/react-yaml@1.1.2(react@18.2.0):
resolution: {integrity: sha512-X9/rmfuDHR+beDym2206RsD5m/5EfH26vVuGVbLXy7+BunPcVBRqwe2WbvCyoHloMUX7Ccp2xrLwmmPrvZ9hrA==}
@@ -4463,6 +4578,27 @@ packages:
react: 18.2.0
dev: true
+ /@formatjs/ecma402-abstract@2.0.0:
+ resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==}
+ dependencies:
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.3
+ dev: false
+
+ /@formatjs/intl-listformat@7.5.7:
+ resolution: {integrity: sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==}
+ dependencies:
+ '@formatjs/ecma402-abstract': 2.0.0
+ '@formatjs/intl-localematcher': 0.5.4
+ tslib: 2.6.3
+ dev: false
+
+ /@formatjs/intl-localematcher@0.5.4:
+ resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==}
+ dependencies:
+ tslib: 2.6.3
+ dev: false
+
/@graphql-typed-document-node/core@3.2.0(graphql@16.8.1):
resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
peerDependencies:
@@ -4471,12 +4607,21 @@ packages:
graphql: 16.8.1
dev: false
+ /@graphql-typed-document-node/core@3.2.0(graphql@16.9.0):
+ resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
+ peerDependencies:
+ graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ graphql: 16.9.0
+ dev: false
+
/@humanwhocodes/config-array@0.11.14:
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
dependencies:
'@humanwhocodes/object-schema': 2.0.3
- debug: 4.3.4
+ debug: 4.3.5
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -4487,6 +4632,7 @@ packages:
/@humanwhocodes/object-schema@2.0.3:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ deprecated: Use @eslint/object-schema instead
/@icons/material@0.2.4(react@18.2.0):
resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==}
@@ -4705,7 +4851,7 @@ packages:
resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==}
engines: {node: '>= 10.14.2'}
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.22.5
'@jest/types': 26.6.2
babel-plugin-istanbul: 6.1.1
chalk: 4.1.2
@@ -4728,7 +4874,7 @@ packages:
resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.22.5
'@jest/types': 27.5.1
babel-plugin-istanbul: 6.1.1
chalk: 4.1.2
@@ -4750,7 +4896,7 @@ packages:
resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.22.5
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.25
babel-plugin-istanbul: 6.1.1
@@ -4818,7 +4964,7 @@ packages:
engines: {node: '>=6.0.0'}
dependencies:
'@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/trace-mapping': 0.3.25
/@jridgewell/resolve-uri@3.1.2:
@@ -4835,20 +4981,20 @@ packages:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
- /@jridgewell/sourcemap-codec@1.4.15:
- resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ /@jridgewell/sourcemap-codec@1.5.0:
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
/@jridgewell/trace-mapping@0.3.25:
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.0
/@jridgewell/trace-mapping@0.3.9:
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.0
dev: true
/@jsdevtools/ono@7.1.3:
@@ -4927,7 +5073,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@material-ui/styles': 4.11.5(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@material-ui/system': 4.12.2(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@material-ui/types': 5.1.0(@types/react@18.2.45)
@@ -4956,7 +5102,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/hash': 0.8.0
'@material-ui/types': 5.1.0(@types/react@18.2.45)
'@material-ui/utils': 4.11.3(react-dom@18.2.0)(react@18.2.0)
@@ -4988,7 +5134,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@material-ui/utils': 4.11.3(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.45
csstype: 2.6.21
@@ -5015,7 +5161,7 @@ packages:
react: ^16.8.0 || ^17.0.0
react-dom: ^16.8.0 || ^17.0.0
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
prop-types: 15.8.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@@ -5043,8 +5189,8 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@floating-ui/react-dom': 2.1.0(react-dom@18.2.0)(react@18.2.0)
+ '@babel/runtime': 7.24.7
+ '@floating-ui/react-dom': 2.1.1(react-dom@18.2.0)(react@18.2.0)
'@mui/types': 7.2.14(@types/react@18.2.45)
'@mui/utils': 5.15.2(@types/react@18.2.45)(react@18.2.0)
'@popperjs/core': 2.11.8
@@ -5066,8 +5212,8 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@floating-ui/react-dom': 2.1.0(react-dom@18.3.1)(react@18.3.1)
+ '@babel/runtime': 7.24.7
+ '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1)(react@18.3.1)
'@mui/types': 7.2.14(@types/react@18.2.45)
'@mui/utils': 5.15.2(@types/react@18.2.45)(react@18.3.1)
'@popperjs/core': 2.11.8
@@ -5089,10 +5235,10 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@floating-ui/react-dom': 2.1.0(react-dom@18.2.0)(react@18.2.0)
+ '@babel/runtime': 7.24.7
+ '@floating-ui/react-dom': 2.1.1(react-dom@18.2.0)(react@18.2.0)
'@mui/types': 7.2.14(@types/react@18.2.45)
- '@mui/utils': 5.15.14(@types/react@18.2.45)(react@18.2.0)
+ '@mui/utils': 5.16.0(@types/react@18.2.45)(react@18.2.0)
'@popperjs/core': 2.11.8
'@types/react': 18.2.45
clsx: 2.1.1
@@ -5101,8 +5247,8 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@mui/core-downloads-tracker@5.15.18:
- resolution: {integrity: sha512-/9pVk+Al8qxAjwFUADv4BRZgMpZM4m5E+2Q/20qhVPuIJWqKp4Ie4tGExac6zu93rgPTYVQGgu+1vjiT0E+cEw==}
+ /@mui/core-downloads-tracker@5.16.0:
+ resolution: {integrity: sha512-8SLffXYPRVpcZx5QzxNE8fytTqzp+IuU3deZbQWg/vSaTlDpR5YVrQ4qQtXTi5cRdhOufV5INylmwlKK+//nPw==}
dev: false
/@mui/icons-material@5.15.2(@mui/material@5.15.2)(@types/react@18.2.45)(react@18.2.0):
@@ -5116,7 +5262,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@mui/material': 5.15.2(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.45
react: 18.2.0
@@ -5140,14 +5286,14 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0)
'@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0)
'@mui/base': 5.0.0-beta.40(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@mui/material': 5.15.2(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@mui/system': 5.15.15(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0)
+ '@mui/system': 5.16.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0)
'@mui/types': 7.2.14(@types/react@18.2.45)
- '@mui/utils': 5.15.14(@types/react@18.2.45)(react@18.2.0)
+ '@mui/utils': 5.16.0(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
clsx: 2.1.1
prop-types: 15.8.1
@@ -5172,12 +5318,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0)
'@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0)
'@mui/base': 5.0.0-beta.29(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@mui/core-downloads-tracker': 5.15.18
- '@mui/system': 5.15.15(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0)
+ '@mui/core-downloads-tracker': 5.16.0
+ '@mui/system': 5.16.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0)
'@mui/types': 7.2.14(@types/react@18.2.45)
'@mui/utils': 5.15.2(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
@@ -5208,12 +5354,12 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.4(@types/react@18.2.45)(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.45)(react@18.3.1)
'@mui/base': 5.0.0-beta.29(@types/react@18.2.45)(react-dom@18.3.1)(react@18.3.1)
- '@mui/core-downloads-tracker': 5.15.18
- '@mui/system': 5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.45)(react@18.3.1)
+ '@mui/core-downloads-tracker': 5.16.0
+ '@mui/system': 5.16.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.45)(react@18.3.1)
'@mui/types': 7.2.14(@types/react@18.2.45)
'@mui/utils': 5.15.2(@types/react@18.2.45)(react@18.3.1)
'@types/react': 18.2.45
@@ -5227,8 +5373,8 @@ packages:
react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1)
dev: false
- /@mui/private-theming@5.15.14(@types/react@18.2.45)(react@18.2.0):
- resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==}
+ /@mui/private-theming@5.16.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-sYpubkO1MZOnxNyVOClrPNOTs0MfuRVVnAvCeMaOaXt6GimgQbnUcshYv2pSr6PFj+Mqzdff/FYOBceK8u5QgA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -5237,15 +5383,15 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@mui/utils': 5.15.14(@types/react@18.2.45)(react@18.2.0)
+ '@babel/runtime': 7.24.7
+ '@mui/utils': 5.16.0(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
prop-types: 15.8.1
react: 18.2.0
dev: false
- /@mui/private-theming@5.15.14(@types/react@18.2.45)(react@18.3.1):
- resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==}
+ /@mui/private-theming@5.16.0(@types/react@18.2.45)(react@18.3.1):
+ resolution: {integrity: sha512-sYpubkO1MZOnxNyVOClrPNOTs0MfuRVVnAvCeMaOaXt6GimgQbnUcshYv2pSr6PFj+Mqzdff/FYOBceK8u5QgA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -5254,8 +5400,8 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@mui/utils': 5.15.14(@types/react@18.2.45)(react@18.3.1)
+ '@babel/runtime': 7.24.7
+ '@mui/utils': 5.16.0(@types/react@18.2.45)(react@18.3.1)
'@types/react': 18.2.45
prop-types: 15.8.1
react: 18.3.1
@@ -5274,7 +5420,7 @@ packages:
'@emotion/styled':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/cache': 11.11.0
'@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0)
'@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0)
@@ -5296,7 +5442,7 @@ packages:
'@emotion/styled':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/cache': 11.11.0
'@emotion/react': 11.11.4(@types/react@18.2.45)(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.45)(react@18.3.1)
@@ -5305,8 +5451,8 @@ packages:
react: 18.3.1
dev: false
- /@mui/system@5.15.15(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0):
- resolution: {integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==}
+ /@mui/system@5.16.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-9YbkC2m3+pNumAvubYv+ijLtog6puJ0fJ6rYfzfLCM47pWrw3m+30nXNM8zMgDaKL6vpfWJcCXm+LPaWBpy7sw==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -5321,13 +5467,13 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0)
'@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0)
- '@mui/private-theming': 5.15.14(@types/react@18.2.45)(react@18.2.0)
+ '@mui/private-theming': 5.16.0(@types/react@18.2.45)(react@18.2.0)
'@mui/styled-engine': 5.15.14(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0)
'@mui/types': 7.2.14(@types/react@18.2.45)
- '@mui/utils': 5.15.14(@types/react@18.2.45)(react@18.2.0)
+ '@mui/utils': 5.16.0(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
clsx: 2.1.1
csstype: 3.1.3
@@ -5335,8 +5481,8 @@ packages:
react: 18.2.0
dev: false
- /@mui/system@5.15.15(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.45)(react@18.3.1):
- resolution: {integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==}
+ /@mui/system@5.16.0(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.45)(react@18.3.1):
+ resolution: {integrity: sha512-9YbkC2m3+pNumAvubYv+ijLtog6puJ0fJ6rYfzfLCM47pWrw3m+30nXNM8zMgDaKL6vpfWJcCXm+LPaWBpy7sw==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -5351,13 +5497,13 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@emotion/react': 11.11.4(@types/react@18.2.45)(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.45)(react@18.3.1)
- '@mui/private-theming': 5.15.14(@types/react@18.2.45)(react@18.3.1)
+ '@mui/private-theming': 5.16.0(@types/react@18.2.45)(react@18.3.1)
'@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.3.1)
'@mui/types': 7.2.14(@types/react@18.2.45)
- '@mui/utils': 5.15.14(@types/react@18.2.45)(react@18.3.1)
+ '@mui/utils': 5.16.0(@types/react@18.2.45)(react@18.3.1)
'@types/react': 18.2.45
clsx: 2.1.1
csstype: 3.1.3
@@ -5376,8 +5522,8 @@ packages:
'@types/react': 18.2.45
dev: false
- /@mui/utils@5.15.14(@types/react@18.2.45)(react@18.2.0):
- resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==}
+ /@mui/utils@5.15.2(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-6dGM9/guFKBlFRHA7/mbM+E7wE7CYDy9Ny4JLtD3J+NTyhi8nd8YxlzgAgTaTVqY0BpdQ2zdfB/q6+p2EdGM0w==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -5386,7 +5532,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/prop-types': 15.7.12
'@types/react': 18.2.45
prop-types: 15.8.1
@@ -5394,8 +5540,8 @@ packages:
react-is: 18.3.1
dev: false
- /@mui/utils@5.15.14(@types/react@18.2.45)(react@18.3.1):
- resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==}
+ /@mui/utils@5.15.2(@types/react@18.2.45)(react@18.3.1):
+ resolution: {integrity: sha512-6dGM9/guFKBlFRHA7/mbM+E7wE7CYDy9Ny4JLtD3J+NTyhi8nd8YxlzgAgTaTVqY0BpdQ2zdfB/q6+p2EdGM0w==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -5404,7 +5550,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/prop-types': 15.7.12
'@types/react': 18.2.45
prop-types: 15.8.1
@@ -5412,8 +5558,8 @@ packages:
react-is: 18.3.1
dev: false
- /@mui/utils@5.15.2(@types/react@18.2.45)(react@18.2.0):
- resolution: {integrity: sha512-6dGM9/guFKBlFRHA7/mbM+E7wE7CYDy9Ny4JLtD3J+NTyhi8nd8YxlzgAgTaTVqY0BpdQ2zdfB/q6+p2EdGM0w==}
+ /@mui/utils@5.16.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-kLLi5J1xY+mwtUlMb8Ubdxf4qFAA1+U7WPBvjM/qQ4CIwLCohNb0sHo1oYPufjSIH/Z9+dhVxD7dJlfGjd1AVA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -5422,7 +5568,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/prop-types': 15.7.12
'@types/react': 18.2.45
prop-types: 15.8.1
@@ -5430,8 +5576,8 @@ packages:
react-is: 18.3.1
dev: false
- /@mui/utils@5.15.2(@types/react@18.2.45)(react@18.3.1):
- resolution: {integrity: sha512-6dGM9/guFKBlFRHA7/mbM+E7wE7CYDy9Ny4JLtD3J+NTyhi8nd8YxlzgAgTaTVqY0BpdQ2zdfB/q6+p2EdGM0w==}
+ /@mui/utils@5.16.0(@types/react@18.2.45)(react@18.3.1):
+ resolution: {integrity: sha512-kLLi5J1xY+mwtUlMb8Ubdxf4qFAA1+U7WPBvjM/qQ4CIwLCohNb0sHo1oYPufjSIH/Z9+dhVxD7dJlfGjd1AVA==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/react': ^17.0.0 || ^18.0.0
@@ -5440,7 +5586,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/prop-types': 15.7.12
'@types/react': 18.2.45
prop-types: 15.8.1
@@ -5464,7 +5610,6 @@ packages:
/@nicolo-ribaudo/semver-v6@6.3.3:
resolution: {integrity: sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==}
hasBin: true
- dev: true
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -5488,18 +5633,18 @@ packages:
resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
dev: true
- /@opensystemslab/map@0.8.2:
- resolution: {integrity: sha512-bNWGX4AlJCTVvMymubrEmkBcZIdB5nXLw4ALJlEtZvAnsSJVYlhjG6OiN4GXqRuZTBDpI/l4gu/6giaidEjdwQ==}
+ /@opensystemslab/map@0.8.3:
+ resolution: {integrity: sha512-4WS4Cow27wmffp7KLtSB/m9HtXz0UDCXJXhq9kz152ofSretWgAl7+WFbqC+CeoVx+CV7ETmbFdjoJ3yZQzJ0Q==}
dependencies:
'@turf/union': 6.5.0
accessible-autocomplete: 2.0.4
file-saver: 2.0.5
govuk-frontend: 5.4.0
jspdf: 2.5.1
- lit: 3.1.3
- ol: 9.2.3
- ol-ext: 4.0.18(ol@9.2.3)
- ol-mapbox-style: 12.3.2(ol@9.2.3)
+ lit: 3.1.4
+ ol: 9.2.4
+ ol-ext: 4.0.19(ol@9.2.4)
+ ol-mapbox-style: 12.3.4(ol@9.2.4)
postcode: 5.1.0
proj4: 2.11.0
rambda: 8.6.0
@@ -5515,8 +5660,8 @@ packages:
requiresBuild: true
optional: true
- /@pmmmwh/react-refresh-webpack-plugin@0.5.13(react-refresh@0.11.0)(webpack-dev-server@4.15.2)(webpack@5.91.0):
- resolution: {integrity: sha512-odZVYXly+JwzYri9rKqqUAk0cY6zLpv4dxoKinhoJNShV36Gpxf+CyDIILJ4tYsJ1ZxIWs233Y39iVnynvDA/g==}
+ /@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.11.0)(webpack-dev-server@4.15.2)(webpack@5.91.0):
+ resolution: {integrity: sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==}
engines: {node: '>= 10.13'}
peerDependencies:
'@types/webpack': 4.x || 5.x
@@ -5541,19 +5686,19 @@ packages:
webpack-plugin-serve:
optional: true
dependencies:
- ansi-html-community: 0.0.8
+ ansi-html: 0.0.9
core-js-pure: 3.37.1
error-stack-parser: 2.1.4
html-entities: 2.5.2
loader-utils: 2.0.4
react-refresh: 0.11.0
- schema-utils: 3.3.0
+ schema-utils: 4.2.0
source-map: 0.7.4
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
webpack-dev-server: 4.15.2(webpack@5.91.0)
- /@pmmmwh/react-refresh-webpack-plugin@0.5.13(react-refresh@0.14.0)(webpack@5.91.0):
- resolution: {integrity: sha512-odZVYXly+JwzYri9rKqqUAk0cY6zLpv4dxoKinhoJNShV36Gpxf+CyDIILJ4tYsJ1ZxIWs233Y39iVnynvDA/g==}
+ /@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.0)(webpack@5.91.0):
+ resolution: {integrity: sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==}
engines: {node: '>= 10.13'}
peerDependencies:
'@types/webpack': 4.x || 5.x
@@ -5578,15 +5723,15 @@ packages:
webpack-plugin-serve:
optional: true
dependencies:
- ansi-html-community: 0.0.8
+ ansi-html: 0.0.9
core-js-pure: 3.37.1
error-stack-parser: 2.1.4
html-entities: 2.5.2
loader-utils: 2.0.4
react-refresh: 0.14.0
- schema-utils: 3.3.0
+ schema-utils: 4.2.0
source-map: 0.7.4
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
dev: true
/@popperjs/core@2.11.8:
@@ -5596,13 +5741,17 @@ packages:
/@radix-ui/number@1.0.1:
resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dev: true
/@radix-ui/primitive@1.0.1:
resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
+ dev: true
+
+ /@radix-ui/primitive@1.1.0:
+ resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==}
dev: true
/@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
@@ -5618,7 +5767,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.45
'@types/react-dom': 18.2.18
@@ -5639,7 +5788,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
@@ -5650,6 +5799,29 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: true
+ /@radix-ui/react-collection@1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-context': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.18
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: true
+
/@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.45)(react@18.2.0):
resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==}
peerDependencies:
@@ -5659,7 +5831,20 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: true
+
+ /@radix-ui/react-compose-refs@1.1.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
'@types/react': 18.2.45
react: 18.2.0
dev: true
@@ -5673,7 +5858,20 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: true
+
+ /@radix-ui/react-context@1.1.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
'@types/react': 18.2.45
react: 18.2.0
dev: true
@@ -5687,7 +5885,20 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: true
+
+ /@radix-ui/react-direction@1.1.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
'@types/react': 18.2.45
react: 18.2.0
dev: true
@@ -5705,7 +5916,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
@@ -5726,7 +5937,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/react': 18.2.45
react: 18.2.0
dev: true
@@ -5744,7 +5955,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
@@ -5763,12 +5974,26 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
react: 18.2.0
dev: true
+ /@radix-ui/react-id@1.1.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: true
+
/@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==}
peerDependencies:
@@ -5782,8 +6007,8 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@floating-ui/react-dom': 2.1.0(react-dom@18.2.0)(react@18.2.0)
+ '@babel/runtime': 7.24.7
+ '@floating-ui/react-dom': 2.1.1(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
'@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
@@ -5812,7 +6037,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.45
'@types/react-dom': 18.2.18
@@ -5833,7 +6058,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
'@types/react-dom': 18.2.18
@@ -5841,29 +6066,48 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: true
- /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==}
+ /@radix-ui/react-primitive@2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-slot': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.18
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: true
+
+ /@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@radix-ui/primitive': 1.1.0
+ '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-context': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-direction': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-id': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
'@types/react-dom': 18.2.18
react: 18.2.0
@@ -5883,7 +6127,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/number': 1.0.1
'@radix-ui/primitive': 1.0.1
'@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
@@ -5911,21 +6155,20 @@ packages:
react-remove-scroll: 2.5.5(@types/react@18.2.45)(react@18.2.0)
dev: true
- /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==}
+ /@radix-ui/react-separator@1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.45
'@types/react-dom': 18.2.18
react: 18.2.0
@@ -5936,88 +6179,99 @@ packages:
resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==}
peerDependencies:
'@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.7
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: true
+
+ /@radix-ui/react-slot@1.1.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
react: 18.2.0
dev: true
- /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==}
+ /@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/primitive': 1.1.0
+ '@radix-ui/react-context': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-direction': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
'@types/react-dom': 18.2.18
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
- /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==}
+ /@radix-ui/react-toggle@1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/primitive': 1.1.0
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
'@types/react-dom': 18.2.18
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
- /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==}
+ /@radix-ui/react-toolbar@1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-ZUKknxhMTL/4hPh+4DuaTot9aO7UD6Kupj4gqXCsBTayX1pD1L+0C2/2VZKXb4tIifQklZ3pf2hG9T+ns+FclQ==}
peerDependencies:
'@types/react': '*'
'@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
optional: true
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
- '@radix-ui/primitive': 1.0.1
- '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/primitive': 1.1.0
+ '@radix-ui/react-context': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-direction': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-separator': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.45
'@types/react-dom': 18.2.18
react: 18.2.0
@@ -6033,7 +6287,20 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: true
+
+ /@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
'@types/react': 18.2.45
react: 18.2.0
dev: true
@@ -6047,12 +6314,26 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
react: 18.2.0
dev: true
+ /@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: true
+
/@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.45)(react@18.2.0):
resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
peerDependencies:
@@ -6062,7 +6343,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
react: 18.2.0
@@ -6077,7 +6358,20 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: true
+
+ /@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
'@types/react': 18.2.45
react: 18.2.0
dev: true
@@ -6091,7 +6385,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/react': 18.2.45
react: 18.2.0
dev: true
@@ -6105,7 +6399,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/rect': 1.0.1
'@types/react': 18.2.45
react: 18.2.0
@@ -6120,7 +6414,7 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0)
'@types/react': 18.2.45
react: 18.2.0
@@ -6139,7 +6433,7 @@ packages:
'@types/react-dom':
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.2.45
'@types/react-dom': 18.2.18
@@ -6150,7 +6444,7 @@ packages:
/@radix-ui/rect@1.0.1:
resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dev: true
/@reach/component-component@0.1.3(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0):
@@ -6253,7 +6547,7 @@ packages:
resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==}
dev: false
- /@rollup/plugin-babel@5.3.1(@babel/core@7.24.5)(rollup@2.79.1):
+ /@rollup/plugin-babel@5.3.1(@babel/core@7.22.5)(rollup@2.79.1):
resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
engines: {node: '>= 10.0.0'}
peerDependencies:
@@ -6264,10 +6558,12 @@ packages:
'@types/babel__core':
optional: true
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-module-imports': 7.24.3
+ '@babel/core': 7.22.5
+ '@babel/helper-module-imports': 7.24.7
'@rollup/pluginutils': 3.1.0(rollup@2.79.1)
rollup: 2.79.1
+ transitivePeerDependencies:
+ - supports-color
/@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1):
resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==}
@@ -6465,7 +6761,7 @@ packages:
react:
optional: true
dependencies:
- '@storybook/csf': 0.1.7
+ '@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
react: 18.2.0
ts-dedent: 2.2.0
@@ -6516,14 +6812,14 @@ packages:
'@storybook/client-logger': 7.6.7
'@storybook/components': 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@storybook/core-events': 7.6.7
- '@storybook/csf': 0.1.7
+ '@storybook/csf': 0.1.11
'@storybook/docs-tools': 7.6.7
'@storybook/global': 5.0.0
'@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0)
'@storybook/preview-api': 7.6.7
'@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0)
'@storybook/types': 7.6.7
- '@types/lodash': 4.14.202
+ '@types/lodash': 4.17.6
color-convert: 2.0.1
dequal: 2.0.3
lodash: 4.17.21
@@ -6544,13 +6840,13 @@ packages:
- supports-color
dev: true
- /@storybook/builder-manager@8.1.5(prettier@3.2.5):
- resolution: {integrity: sha512-wDiHLV+UPaUN+765WwXkocVRB2QnJ61CjLHbpWaLiJvryFJt+JQ6nAvgSalCRnZxI046ztbS9T6okhpFI011IA==}
+ /@storybook/builder-manager@8.1.10(prettier@3.3.2):
+ resolution: {integrity: sha512-dhg54zpaglR9XKNAiwMqm5/IONMCEG/hO/iTfNHJI1rAGeWhvM71cmhF+VlKUcjpTlIfHe7J19+TL+sWQJNgtg==}
dependencies:
'@fal-works/esbuild-plugin-global-externals': 2.1.2
- '@storybook/core-common': 8.1.5(prettier@3.2.5)
- '@storybook/manager': 8.1.5
- '@storybook/node-logger': 8.1.5
+ '@storybook/core-common': 8.1.10(prettier@3.3.2)
+ '@storybook/manager': 8.1.10
+ '@storybook/node-logger': 8.1.10
'@types/ejs': 3.1.5
'@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.20.2)
browser-assert: 1.2.1
@@ -6575,7 +6871,7 @@ packages:
typescript:
optional: true
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.24.7
'@storybook/channels': 7.6.7
'@storybook/client-logger': 7.6.7
'@storybook/core-common': 7.6.7
@@ -6584,15 +6880,15 @@ packages:
'@storybook/node-logger': 7.6.7
'@storybook/preview': 7.6.7
'@storybook/preview-api': 7.6.7
- '@swc/core': 1.5.7
- '@types/node': 18.19.33
+ '@swc/core': 1.6.13
+ '@types/node': 18.19.39
'@types/semver': 7.5.8
- babel-loader: 9.1.3(@babel/core@7.24.5)(webpack@5.91.0)
+ babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.91.0)
browser-assert: 1.2.1
case-sensitive-paths-webpack-plugin: 2.4.0
constants-browserify: 1.0.0
css-loader: 6.10.0(webpack@5.91.0)
- es-module-lexer: 1.5.3
+ es-module-lexer: 1.5.4
express: 4.19.2
fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.4.3)(webpack@5.91.0)
fs-extra: 11.2.0
@@ -6602,14 +6898,14 @@ packages:
process: 0.11.10
semver: 7.6.2
style-loader: 3.3.4(webpack@5.91.0)
- swc-loader: 0.2.6(@swc/core@1.5.7)(webpack@5.91.0)
- terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(esbuild@0.21.3)(webpack@5.91.0)
+ swc-loader: 0.2.6(@swc/core@1.6.13)(webpack@5.91.0)
+ terser-webpack-plugin: 5.3.10(@swc/core@1.6.13)(esbuild@0.21.3)(webpack@5.91.0)
ts-dedent: 2.2.0
typescript: 5.4.3
url: 0.11.3
util: 0.12.5
util-deprecate: 1.0.2
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
webpack-dev-middleware: 6.1.3(webpack@5.91.0)
webpack-hot-middleware: 2.26.1
webpack-virtual-modules: 0.5.0
@@ -6629,36 +6925,36 @@ packages:
'@storybook/client-logger': 7.6.7
'@storybook/core-events': 7.6.7
'@storybook/global': 5.0.0
- qs: 6.12.1
+ qs: 6.12.3
telejson: 7.2.0
tiny-invariant: 1.3.3
dev: true
- /@storybook/channels@8.1.5:
- resolution: {integrity: sha512-R+puP4tWYzQUbpIp8sX6U5oI+ZUevVOaFxXGaAN3PRXjIRC38oKTVWzj/G6GdziVFzN6rDn+JsYPmiRMYo1sYg==}
+ /@storybook/channels@8.1.10:
+ resolution: {integrity: sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==}
dependencies:
- '@storybook/client-logger': 8.1.5
- '@storybook/core-events': 8.1.5
+ '@storybook/client-logger': 8.1.10
+ '@storybook/core-events': 8.1.10
'@storybook/global': 5.0.0
telejson: 7.2.0
tiny-invariant: 1.3.3
dev: true
- /@storybook/cli@8.1.5(@babel/preset-env@7.22.6)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-VEYluZEMleNEnD5wTD90KTh03pwjvQwEEmzHAJQJdLbWTAcgBxZ3Gb45nbUPauSqBL+HdJx0QXF8Ielk+iBttw==}
+ /@storybook/cli@8.1.10(@babel/preset-env@7.22.6)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-7Fm2Qgk33sHayZ0QABqwe1Jto4yyVRVW6kTrSeP5IuLh+mn244RgxBvWtGCyL1EcWDFI7PYUFa0HxgTCq7C+OA==}
hasBin: true
dependencies:
- '@babel/core': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/types': 7.24.7
'@ndelangen/get-tarball': 3.0.9
- '@storybook/codemod': 8.1.5
- '@storybook/core-common': 8.1.5(prettier@3.2.5)
- '@storybook/core-events': 8.1.5
- '@storybook/core-server': 8.1.5(prettier@3.2.5)(react-dom@18.2.0)(react@18.2.0)
- '@storybook/csf-tools': 8.1.5
- '@storybook/node-logger': 8.1.5
- '@storybook/telemetry': 8.1.5(prettier@3.2.5)
- '@storybook/types': 8.1.5
+ '@storybook/codemod': 8.1.10
+ '@storybook/core-common': 8.1.10(prettier@3.3.2)
+ '@storybook/core-events': 8.1.10
+ '@storybook/core-server': 8.1.10(prettier@3.3.2)(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/csf-tools': 8.1.10
+ '@storybook/node-logger': 8.1.10
+ '@storybook/telemetry': 8.1.10(prettier@3.3.2)
+ '@storybook/types': 8.1.10
'@types/semver': 7.5.8
'@yarnpkg/fslib': 2.10.3
'@yarnpkg/libzip': 2.3.0
@@ -6672,11 +6968,11 @@ packages:
fs-extra: 11.2.0
get-npm-tarball-url: 2.1.0
giget: 1.2.3
- globby: 14.0.1
+ globby: 14.0.2
jscodeshift: 0.15.2(@babel/preset-env@7.22.6)
leven: 3.1.0
ora: 5.4.1
- prettier: 3.2.5
+ prettier: 3.3.2
prompts: 2.4.2
read-pkg-up: 7.0.1
semver: 7.6.2
@@ -6707,29 +7003,29 @@ packages:
'@storybook/global': 5.0.0
dev: true
- /@storybook/client-logger@8.1.5:
- resolution: {integrity: sha512-zd+aENXnOHsxBATppELmhw/UywLzCxQjz/8i/xkUjeTRB4Ggp0hJlOUdJUEdIJz631ydyytfvM70ktBj9gMl1w==}
+ /@storybook/client-logger@8.1.10:
+ resolution: {integrity: sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==}
dependencies:
'@storybook/global': 5.0.0
dev: true
- /@storybook/codemod@8.1.5:
- resolution: {integrity: sha512-eGoYozT2XPfsIFrzm4cJo9tRTX0yuK1y4uTYmKvnomezHu5kiY8qo2fUzQa5DHxiAzRDTpGlQTzb0PsxHOxYoA==}
+ /@storybook/codemod@8.1.10:
+ resolution: {integrity: sha512-HZ/vrseP/sHfbO2RZpImP5eeqOakJ0X31BIiD4uxDBIKGltMXhlPKHTI93O2YGR+vbB33otoTVRjE+ZpPmC6SA==}
dependencies:
- '@babel/core': 7.24.5
- '@babel/preset-env': 7.24.5(@babel/core@7.24.5)
- '@babel/types': 7.24.5
- '@storybook/csf': 0.1.7
- '@storybook/csf-tools': 8.1.5
- '@storybook/node-logger': 8.1.5
- '@storybook/types': 8.1.5
+ '@babel/core': 7.24.7
+ '@babel/preset-env': 7.24.7(@babel/core@7.24.7)
+ '@babel/types': 7.24.7
+ '@storybook/csf': 0.1.11
+ '@storybook/csf-tools': 8.1.10
+ '@storybook/node-logger': 8.1.10
+ '@storybook/types': 8.1.10
'@types/cross-spawn': 6.0.6
cross-spawn: 7.0.3
- globby: 14.0.1
- jscodeshift: 0.15.2(@babel/preset-env@7.24.5)
+ globby: 14.0.2
+ jscodeshift: 0.15.2(@babel/preset-env@7.24.7)
lodash: 4.17.21
- prettier: 3.2.5
- recast: 0.23.7
+ prettier: 3.3.2
+ recast: 0.23.9
tiny-invariant: 1.3.3
transitivePeerDependencies:
- supports-color
@@ -6742,9 +7038,9 @@ packages:
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
dependencies:
'@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-toolbar': 1.1.0(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@storybook/client-logger': 7.6.7
- '@storybook/csf': 0.1.7
+ '@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
'@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0)
'@storybook/types': 7.6.7
@@ -6772,7 +7068,7 @@ packages:
'@storybook/node-logger': 7.6.7
'@storybook/types': 7.6.7
'@types/find-cache-dir': 3.2.1
- '@types/node': 18.19.33
+ '@types/node': 18.19.39
'@types/node-fetch': 2.6.11
'@types/pretty-hrtime': 1.0.3
chalk: 4.1.2
@@ -6782,7 +7078,7 @@ packages:
find-cache-dir: 3.3.2
find-up: 5.0.0
fs-extra: 11.2.0
- glob: 10.4.1
+ glob: 10.4.5
handlebars: 4.7.8
lazy-universal-dotenv: 4.0.0
node-fetch: 2.7.0
@@ -6796,18 +7092,18 @@ packages:
- supports-color
dev: true
- /@storybook/core-common@8.1.5(prettier@3.2.5):
- resolution: {integrity: sha512-1QDOT6KPZ9KV7Gs1yyqzvSwGBmNSUB33gckUldSBF4aqP+tZ7W5JIQ6/YTtp3V02sEokZGdL9Ud4LczQxTgy3A==}
+ /@storybook/core-common@8.1.10(prettier@3.3.2):
+ resolution: {integrity: sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==}
peerDependencies:
prettier: ^2 || ^3
peerDependenciesMeta:
prettier:
optional: true
dependencies:
- '@storybook/core-events': 8.1.5
- '@storybook/csf-tools': 8.1.5
- '@storybook/node-logger': 8.1.5
- '@storybook/types': 8.1.5
+ '@storybook/core-events': 8.1.10
+ '@storybook/csf-tools': 8.1.10
+ '@storybook/node-logger': 8.1.10
+ '@storybook/types': 8.1.10
'@yarnpkg/fslib': 2.10.3
'@yarnpkg/libzip': 2.3.0
chalk: 4.1.2
@@ -6819,14 +7115,14 @@ packages:
find-cache-dir: 3.3.2
find-up: 5.0.0
fs-extra: 11.2.0
- glob: 10.4.1
+ glob: 10.4.5
handlebars: 4.7.8
lazy-universal-dotenv: 4.0.0
node-fetch: 2.7.0
picomatch: 2.3.1
pkg-dir: 5.0.0
- prettier: 3.2.5
- prettier-fallback: /prettier@3.2.5
+ prettier: 3.3.2
+ prettier-fallback: /prettier@3.3.2
pretty-hrtime: 1.0.3
resolve-from: 5.0.0
semver: 7.6.2
@@ -6851,37 +7147,37 @@ packages:
ts-dedent: 2.2.0
dev: true
- /@storybook/core-events@8.1.5:
- resolution: {integrity: sha512-fgwbrHoLtSX6kfmamTGJqD+KfuEgun8cc4mWKZK094ByaqbSjhnOyeYO1sfVk8qst7QTFlOfhLAUe4cz1z149A==}
+ /@storybook/core-events@8.1.10:
+ resolution: {integrity: sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==}
dependencies:
- '@storybook/csf': 0.1.7
+ '@storybook/csf': 0.1.11
ts-dedent: 2.2.0
dev: true
- /@storybook/core-server@8.1.5(prettier@3.2.5)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-y16W2sg5KIHG6qgbd+a0nBUYHAgiUpPDFF7cdcIpbeOIoqFn+6ECp93MVefukumiSj3sQiJFU/tSm2A8apGltw==}
+ /@storybook/core-server@8.1.10(prettier@3.3.2)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-jNL5/daNyo7Rcu+y/bOmSB1P65pmcaLwvpr31EUEIISaAqvgruaneS3GKHg2TR0wcxEoHaM4abqhW6iwkI/XYQ==}
dependencies:
'@aw-web-design/x-default-browser': 1.4.126
- '@babel/core': 7.24.5
- '@babel/parser': 7.24.5
+ '@babel/core': 7.24.7
+ '@babel/parser': 7.24.7
'@discoveryjs/json-ext': 0.5.7
- '@storybook/builder-manager': 8.1.5(prettier@3.2.5)
- '@storybook/channels': 8.1.5
- '@storybook/core-common': 8.1.5(prettier@3.2.5)
- '@storybook/core-events': 8.1.5
- '@storybook/csf': 0.1.7
- '@storybook/csf-tools': 8.1.5
+ '@storybook/builder-manager': 8.1.10(prettier@3.3.2)
+ '@storybook/channels': 8.1.10
+ '@storybook/core-common': 8.1.10(prettier@3.3.2)
+ '@storybook/core-events': 8.1.10
+ '@storybook/csf': 0.1.11
+ '@storybook/csf-tools': 8.1.10
'@storybook/docs-mdx': 3.1.0-next.0
'@storybook/global': 5.0.0
- '@storybook/manager': 8.1.5
- '@storybook/manager-api': 8.1.5(react-dom@18.2.0)(react@18.2.0)
- '@storybook/node-logger': 8.1.5
- '@storybook/preview-api': 8.1.5
- '@storybook/telemetry': 8.1.5(prettier@3.2.5)
- '@storybook/types': 8.1.5
+ '@storybook/manager': 8.1.10
+ '@storybook/manager-api': 8.1.10(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/node-logger': 8.1.10
+ '@storybook/preview-api': 8.1.10
+ '@storybook/telemetry': 8.1.10(prettier@3.3.2)
+ '@storybook/types': 8.1.10
'@types/detect-port': 1.3.5
'@types/diff': 5.2.1
- '@types/node': 18.19.33
+ '@types/node': 18.19.39
'@types/pretty-hrtime': 1.0.3
'@types/semver': 7.5.8
better-opn: 3.0.2
@@ -6892,8 +7188,7 @@ packages:
diff: 5.2.0
express: 4.19.2
fs-extra: 11.2.0
- globby: 14.0.1
- ip: 2.0.1
+ globby: 14.0.2
lodash: 4.17.21
open: 8.4.2
pretty-hrtime: 1.0.3
@@ -6906,7 +7201,7 @@ packages:
util: 0.12.5
util-deprecate: 1.0.2
watchpack: 2.4.1
- ws: 8.17.0
+ ws: 8.18.0
transitivePeerDependencies:
- bufferutil
- encoding
@@ -6923,7 +7218,7 @@ packages:
'@storybook/core-common': 7.6.7
'@storybook/node-logger': 7.6.7
'@storybook/types': 7.6.7
- '@types/node': 18.19.33
+ '@types/node': 18.19.39
ts-dedent: 2.2.0
transitivePeerDependencies:
- encoding
@@ -6934,7 +7229,7 @@ packages:
resolution: {integrity: sha512-YL7e6H4iVcsDI0UpgpdQX2IiGDrlbgaQMHQgDLWXmZyKxBcy0ONROAX5zoT1ml44EHkL60TMaG4f7SinviJCog==}
dependencies:
'@storybook/csf-tools': 7.6.7
- unplugin: 1.10.1
+ unplugin: 1.11.0
transitivePeerDependencies:
- supports-color
dev: true
@@ -6942,37 +7237,37 @@ packages:
/@storybook/csf-tools@7.6.7:
resolution: {integrity: sha512-hyRbUGa2Uxvz3U09BjcOfMNf/5IYgRum1L6XszqK2O8tK9DGte1r6hArCIAcqiEmFMC40d0kalPzqu6WMNn7sg==}
dependencies:
- '@babel/generator': 7.24.5
- '@babel/parser': 7.24.5
- '@babel/traverse': 7.24.5
- '@babel/types': 7.24.5
- '@storybook/csf': 0.1.7
+ '@babel/generator': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ '@storybook/csf': 0.1.11
'@storybook/types': 7.6.7
fs-extra: 11.2.0
- recast: 0.23.7
+ recast: 0.23.9
ts-dedent: 2.2.0
transitivePeerDependencies:
- supports-color
dev: true
- /@storybook/csf-tools@8.1.5:
- resolution: {integrity: sha512-jOfUo0arlaG4LlsdWaRfZCS0I1FhUnkf06ThzRBrrp8mFAPtOpf9iW16J3fYMS5vAdE/v+Z1RxuTRich4/JGdQ==}
+ /@storybook/csf-tools@8.1.10:
+ resolution: {integrity: sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==}
dependencies:
- '@babel/generator': 7.24.5
- '@babel/parser': 7.24.5
- '@babel/traverse': 7.24.5
- '@babel/types': 7.24.5
- '@storybook/csf': 0.1.7
- '@storybook/types': 8.1.5
+ '@babel/generator': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ '@storybook/csf': 0.1.11
+ '@storybook/types': 8.1.10
fs-extra: 11.2.0
- recast: 0.23.7
+ recast: 0.23.9
ts-dedent: 2.2.0
transitivePeerDependencies:
- supports-color
dev: true
- /@storybook/csf@0.1.7:
- resolution: {integrity: sha512-53JeLZBibjQxi0Ep+/AJTfxlofJlxy1jXcSKENlnKxHjWEYyHQCumMP5yTFjf7vhNnMjEpV3zx6t23ssFiGRyw==}
+ /@storybook/csf@0.1.11:
+ resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==}
dependencies:
type-fest: 2.19.0
dev: true
@@ -7017,7 +7312,7 @@ packages:
'@storybook/channels': 7.6.7
'@storybook/client-logger': 7.6.7
'@storybook/core-events': 7.6.7
- '@storybook/csf': 0.1.7
+ '@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
'@storybook/router': 7.6.7
'@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0)
@@ -7033,18 +7328,18 @@ packages:
- react-dom
dev: true
- /@storybook/manager-api@8.1.5(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-iVP7FOKDf9L7zWCb8C2XeZjWSILS3hHeNwILvd9YSX9dg9du41kJYahsAHxDCR/jp/gv0ZM/V0vuHzi+naVPkQ==}
+ /@storybook/manager-api@8.1.10(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-9aZ+zoNrTo1BJskVmCKE/yqlBXmWaKVZh1W/+/xu3WL9wdm/tBlozRvQwegIZlRVvUOxtjOg28Vd2hySYL58zg==}
dependencies:
- '@storybook/channels': 8.1.5
- '@storybook/client-logger': 8.1.5
- '@storybook/core-events': 8.1.5
- '@storybook/csf': 0.1.7
+ '@storybook/channels': 8.1.10
+ '@storybook/client-logger': 8.1.10
+ '@storybook/core-events': 8.1.10
+ '@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
'@storybook/icons': 1.2.9(react-dom@18.2.0)(react@18.2.0)
- '@storybook/router': 8.1.5
- '@storybook/theming': 8.1.5(react-dom@18.2.0)(react@18.2.0)
- '@storybook/types': 8.1.5
+ '@storybook/router': 8.1.10
+ '@storybook/theming': 8.1.10(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/types': 8.1.10
dequal: 2.0.3
lodash: 4.17.21
memoizerific: 1.11.3
@@ -7056,8 +7351,8 @@ packages:
- react-dom
dev: true
- /@storybook/manager@8.1.5:
- resolution: {integrity: sha512-qMYwD1cXW0hJ3pMmdMlbsqktVBlsjsqwMH5PBzAN4FoWiCQ/yHeAnDXRUgFFaLcORS72h9H/cQuJ+p//RdeURg==}
+ /@storybook/manager@8.1.10:
+ resolution: {integrity: sha512-dQmRBfT4CABIPhv0kL25qKcQk2SiU5mIZ1DuVzckIbZW+iYEOAusyJ/0HExM9leCrymaW3BgZGlHbIXL7EvZtw==}
dev: true
/@storybook/mdx2-csf@1.1.0:
@@ -7068,8 +7363,8 @@ packages:
resolution: {integrity: sha512-XLih8MxylkpZG9+8tgp8sPGc2tldlWF+DpuAkUv6J3Mc81mPyc3cQKQWZ7Hb+m1LpRGqKV4wyOQj1rC+leVMoQ==}
dev: true
- /@storybook/node-logger@8.1.5:
- resolution: {integrity: sha512-9qwPX/uGhdHaVjeVUSwJUSbKX7g9goyhGYdKVuCEyl7vHR9Kp7Zkag2sEHmVdd9ixTea3jk2GZQEbnBDNQNGnw==}
+ /@storybook/node-logger@8.1.10:
+ resolution: {integrity: sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==}
dev: true
/@storybook/postinstall@7.6.7:
@@ -7083,13 +7378,13 @@ packages:
react-scripts: '>=5.0.0'
dependencies:
'@babel/core': 7.22.5
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.13(react-refresh@0.14.0)(webpack@5.91.0)
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.0)(webpack@5.91.0)
'@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.4.3)(webpack@5.91.0)
'@storybook/types': 7.6.7
'@types/babel__core': 7.20.5
'@types/semver': 7.5.8
pnp-webpack-plugin: 1.7.0(typescript@5.4.3)
- react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.5.7)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
+ react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.6.13)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
semver: 7.6.2
transitivePeerDependencies:
- '@types/webpack'
@@ -7104,7 +7399,7 @@ packages:
- webpack-plugin-serve
dev: true
- /@storybook/preset-react-webpack@7.6.7(@babel/core@7.22.5)(@swc/core@1.5.7)(esbuild@0.21.3)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3):
+ /@storybook/preset-react-webpack@7.6.7(@babel/core@7.22.5)(@swc/core@1.6.13)(esbuild@0.21.3)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3):
resolution: {integrity: sha512-olKTivJmbyuiPIa99/4Gx3zxbBplyXgbNso9ZAXHnSf7rBD0irV5oRqk+gFlEFJDHkK9vnpWMenly7vzX8QCXQ==}
engines: {node: '>=16.0.0'}
peerDependencies:
@@ -7119,15 +7414,15 @@ packages:
optional: true
dependencies:
'@babel/core': 7.22.5
- '@babel/preset-flow': 7.24.1(@babel/core@7.22.5)
- '@babel/preset-react': 7.24.1(@babel/core@7.22.5)
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.13(react-refresh@0.14.0)(webpack@5.91.0)
+ '@babel/preset-flow': 7.24.7(@babel/core@7.22.5)
+ '@babel/preset-react': 7.24.7(@babel/core@7.22.5)
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.0)(webpack@5.91.0)
'@storybook/core-webpack': 7.6.7
'@storybook/docs-tools': 7.6.7
'@storybook/node-logger': 7.6.7
'@storybook/react': 7.6.7(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)
'@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.4.3)(webpack@5.91.0)
- '@types/node': 18.19.33
+ '@types/node': 18.19.39
'@types/semver': 7.5.8
babel-plugin-add-react-displayname: 0.0.5
fs-extra: 11.2.0
@@ -7138,7 +7433,7 @@ packages:
react-refresh: 0.14.0
semver: 7.6.2
typescript: 5.4.3
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
transitivePeerDependencies:
- '@swc/core'
- '@types/webpack'
@@ -7160,33 +7455,33 @@ packages:
'@storybook/channels': 7.6.7
'@storybook/client-logger': 7.6.7
'@storybook/core-events': 7.6.7
- '@storybook/csf': 0.1.7
+ '@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
'@storybook/types': 7.6.7
'@types/qs': 6.9.15
dequal: 2.0.3
lodash: 4.17.21
memoizerific: 1.11.3
- qs: 6.12.1
+ qs: 6.12.3
synchronous-promise: 2.0.17
ts-dedent: 2.2.0
util-deprecate: 1.0.2
dev: true
- /@storybook/preview-api@8.1.5:
- resolution: {integrity: sha512-pv0aT5WbnSYR7KWQgy3jLfuBM0ocYG6GTcmZLREW5554oiBPHhzNFv+ZrBI47RzbrbFxq1h5dj4v8lkEcKIrbA==}
+ /@storybook/preview-api@8.1.10:
+ resolution: {integrity: sha512-0Gl8WHDtp/srrA5uBYXl7YbC8kFQA7IxVmwWN7dIS7HAXu63JZ6JfxaFcfy+kCBfZSBD7spFG4J0f5JXRDYbpg==}
dependencies:
- '@storybook/channels': 8.1.5
- '@storybook/client-logger': 8.1.5
- '@storybook/core-events': 8.1.5
- '@storybook/csf': 0.1.7
+ '@storybook/channels': 8.1.10
+ '@storybook/client-logger': 8.1.10
+ '@storybook/core-events': 8.1.10
+ '@storybook/csf': 0.1.11
'@storybook/global': 5.0.0
- '@storybook/types': 8.1.5
+ '@storybook/types': 8.1.10
'@types/qs': 6.9.15
dequal: 2.0.3
lodash: 4.17.21
memoizerific: 1.11.3
- qs: 6.12.1
+ qs: 6.12.3
tiny-invariant: 1.3.3
ts-dedent: 2.2.0
util-deprecate: 1.0.2
@@ -7202,15 +7497,15 @@ packages:
typescript: '>= 4.x'
webpack: '>= 4'
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
endent: 2.1.0
find-cache-dir: 3.3.2
flat-cache: 3.2.0
micromatch: 4.0.7
react-docgen-typescript: 2.2.2(typescript@5.4.3)
- tslib: 2.6.2
+ tslib: 2.6.3
typescript: 5.4.3
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
transitivePeerDependencies:
- supports-color
dev: true
@@ -7225,7 +7520,7 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: true
- /@storybook/react-webpack5@7.6.7(@babel/core@7.22.5)(@swc/core@1.5.7)(esbuild@0.21.3)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3):
+ /@storybook/react-webpack5@7.6.7(@babel/core@7.22.5)(@swc/core@1.6.13)(esbuild@0.21.3)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3):
resolution: {integrity: sha512-/HK+v8vmeApN4WI5RyaDdhPhjFuEQfMQmvZLl+ewpamhJNMRr4nvrdvxOSfBw46zFubKgieuxEcW+VxHwvZ1og==}
engines: {node: '>=16.0.0'}
peerDependencies:
@@ -7241,9 +7536,9 @@ packages:
dependencies:
'@babel/core': 7.22.5
'@storybook/builder-webpack5': 7.6.7(esbuild@0.21.3)(typescript@5.4.3)
- '@storybook/preset-react-webpack': 7.6.7(@babel/core@7.22.5)(@swc/core@1.5.7)(esbuild@0.21.3)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)
+ '@storybook/preset-react-webpack': 7.6.7(@babel/core@7.22.5)(@swc/core@1.6.13)(esbuild@0.21.3)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)
'@storybook/react': 7.6.7(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.3)
- '@types/node': 18.19.33
+ '@types/node': 18.19.39
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
typescript: 5.4.3
@@ -7284,7 +7579,7 @@ packages:
'@storybook/types': 7.6.7
'@types/escodegen': 0.0.6
'@types/estree': 0.0.51
- '@types/node': 18.19.33
+ '@types/node': 18.19.39
acorn: 7.4.1
acorn-jsx: 5.3.2(acorn@7.4.1)
acorn-walk: 7.2.0
@@ -7309,23 +7604,23 @@ packages:
dependencies:
'@storybook/client-logger': 7.6.7
memoizerific: 1.11.3
- qs: 6.12.1
+ qs: 6.12.3
dev: true
- /@storybook/router@8.1.5:
- resolution: {integrity: sha512-DCwvAswlbLhQu6REPV04XNRhtPvsrRqHjMHKzjlfs+qYJWY7Egkofy05qlegqjkMDve33czfnRGBm0C16IydkA==}
+ /@storybook/router@8.1.10:
+ resolution: {integrity: sha512-JDEgZ0vVDx0GLz+dKD+R1xqWwjqsCdA2F+s3/si7upHqkFRWU5ocextZ63oKsRnCoaeUh6OavAU4EdkrKiQtQw==}
dependencies:
- '@storybook/client-logger': 8.1.5
+ '@storybook/client-logger': 8.1.10
memoizerific: 1.11.3
- qs: 6.12.1
+ qs: 6.12.3
dev: true
- /@storybook/telemetry@8.1.5(prettier@3.2.5):
- resolution: {integrity: sha512-QbB1Ox7oBaCvIF2TacFjPLi1XYeHxSPeZUuFXeE+tSMdvvWZzYLnXfj/oISmV6Q+X5VZfyJVMrZ2LfeW9CuFNg==}
+ /@storybook/telemetry@8.1.10(prettier@3.3.2):
+ resolution: {integrity: sha512-pwiMWrq85D0AnaAgYNfB2w2BDgqnetQ+tXwsUAw4fUEFwA4oPU6r0uqekRbNNE6wmSSYjiiFP3JgknBFqjd2hg==}
dependencies:
- '@storybook/client-logger': 8.1.5
- '@storybook/core-common': 8.1.5(prettier@3.2.5)
- '@storybook/csf-tools': 8.1.5
+ '@storybook/client-logger': 8.1.10
+ '@storybook/core-common': 8.1.10(prettier@3.3.2)
+ '@storybook/csf-tools': 8.1.10
chalk: 4.1.2
detect-package-manager: 2.0.1
fetch-retry: 5.0.6
@@ -7373,8 +7668,8 @@ packages:
react-dom: 18.2.0(react@18.2.0)
dev: true
- /@storybook/theming@8.1.5(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-E4z1t49fMbVvd/t2MSL0Ecp5zbqsU/QfWBX/eorJ+m+Xc9skkwwG5qf/FnP9x4RZ9KaX8U8+862t0eafVvf4Tw==}
+ /@storybook/theming@8.1.10(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-W7mth4hwdTqWLneqYCyUnIEiDg4vSokoad8HEodPz6JC9XUPUX3Yi2W4W3xFvqrW4Z5RXfuJ53iG2HN+0AgaQw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
@@ -7385,7 +7680,7 @@ packages:
optional: true
dependencies:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
- '@storybook/client-logger': 8.1.5
+ '@storybook/client-logger': 8.1.10
'@storybook/global': 5.0.0
memoizerific: 1.11.3
react: 18.2.0
@@ -7401,10 +7696,10 @@ packages:
file-system-cache: 2.3.0
dev: true
- /@storybook/types@8.1.5:
- resolution: {integrity: sha512-/PfAZh1xtXN2MvAZZKpiL/nPkC3bZj8BQ7P7z5a/aQarP+y7qdXuoitYQ6oOH3rkaiYywmkWzA/y4iW70KXLKg==}
+ /@storybook/types@8.1.10:
+ resolution: {integrity: sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==}
dependencies:
- '@storybook/channels': 8.1.5
+ '@storybook/channels': 8.1.10
'@types/express': 4.17.21
file-system-cache: 2.3.0
dev: true
@@ -7476,13 +7771,13 @@ packages:
resolution: {integrity: sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==}
engines: {node: '>=10'}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
/@svgr/plugin-jsx@5.5.0:
resolution: {integrity: sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==}
engines: {node: '>=10'}
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.22.5
'@svgr/babel-preset': 5.5.0
'@svgr/hast-util-to-babel-ast': 5.5.0
svg-parser: 2.0.4
@@ -7501,10 +7796,10 @@ packages:
resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==}
engines: {node: '>=10'}
dependencies:
- '@babel/core': 7.24.5
- '@babel/plugin-transform-react-constant-elements': 7.24.1(@babel/core@7.24.5)
- '@babel/preset-env': 7.24.5(@babel/core@7.24.5)
- '@babel/preset-react': 7.22.5(@babel/core@7.24.5)
+ '@babel/core': 7.22.5
+ '@babel/plugin-transform-react-constant-elements': 7.24.7(@babel/core@7.22.5)
+ '@babel/preset-env': 7.22.6(@babel/core@7.22.5)
+ '@babel/preset-react': 7.22.5(@babel/core@7.22.5)
'@svgr/core': 5.5.0
'@svgr/plugin-jsx': 5.5.0
'@svgr/plugin-svgo': 5.5.0
@@ -7512,124 +7807,124 @@ packages:
transitivePeerDependencies:
- supports-color
- /@swc/core-darwin-arm64@1.5.7:
- resolution: {integrity: sha512-bZLVHPTpH3h6yhwVl395k0Mtx8v6CGhq5r4KQdAoPbADU974Mauz1b6ViHAJ74O0IVE5vyy7tD3OpkQxL/vMDQ==}
+ /@swc/core-darwin-arm64@1.6.13:
+ resolution: {integrity: sha512-SOF4buAis72K22BGJ3N8y88mLNfxLNprTuJUpzikyMGrvkuBFNcxYtMhmomO0XHsgLDzOJ+hWzcgjRNzjMsUcQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
optional: true
- /@swc/core-darwin-x64@1.5.7:
- resolution: {integrity: sha512-RpUyu2GsviwTc2qVajPL0l8nf2vKj5wzO3WkLSHAHEJbiUZk83NJrZd1RVbEknIMO7+Uyjh54hEh8R26jSByaw==}
+ /@swc/core-darwin-x64@1.6.13:
+ resolution: {integrity: sha512-AW8akFSC+tmPE6YQQvK9S2A1B8pjnXEINg+gGgw0KRUUXunvu1/OEOeC5L2Co1wAwhD7bhnaefi06Qi9AiwOag==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
requiresBuild: true
optional: true
- /@swc/core-linux-arm-gnueabihf@1.5.7:
- resolution: {integrity: sha512-cTZWTnCXLABOuvWiv6nQQM0hP6ZWEkzdgDvztgHI/+u/MvtzJBN5lBQ2lue/9sSFYLMqzqff5EHKlFtrJCA9dQ==}
+ /@swc/core-linux-arm-gnueabihf@1.6.13:
+ resolution: {integrity: sha512-f4gxxvDXVUm2HLYXRd311mSrmbpQF2MZ4Ja6XCQz1hWAxXdhRl1gpnZ+LH/xIfGSwQChrtLLVrkxdYUCVuIjFg==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-linux-arm64-gnu@1.5.7:
- resolution: {integrity: sha512-hoeTJFBiE/IJP30Be7djWF8Q5KVgkbDtjySmvYLg9P94bHg9TJPSQoC72tXx/oXOgXvElDe/GMybru0UxhKx4g==}
+ /@swc/core-linux-arm64-gnu@1.6.13:
+ resolution: {integrity: sha512-Nf/eoW2CbG8s+9JoLtjl9FByBXyQ5cjdBsA4efO7Zw4p+YSuXDgc8HRPC+E2+ns0praDpKNZtLvDtmF2lL+2Gg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-linux-arm64-musl@1.5.7:
- resolution: {integrity: sha512-+NDhK+IFTiVK1/o7EXdCeF2hEzCiaRSrb9zD7X2Z7inwWlxAntcSuzZW7Y6BRqGQH89KA91qYgwbnjgTQ22PiQ==}
+ /@swc/core-linux-arm64-musl@1.6.13:
+ resolution: {integrity: sha512-2OysYSYtdw79prJYuKIiux/Gj0iaGEbpS2QZWCIY4X9sGoETJ5iMg+lY+YCrIxdkkNYd7OhIbXdYFyGs/w5LDg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-linux-x64-gnu@1.5.7:
- resolution: {integrity: sha512-25GXpJmeFxKB+7pbY7YQLhWWjkYlR+kHz5I3j9WRl3Lp4v4UD67OGXwPe+DIcHqcouA1fhLhsgHJWtsaNOMBNg==}
+ /@swc/core-linux-x64-gnu@1.6.13:
+ resolution: {integrity: sha512-PkR4CZYJNk5hcd2+tMWBpnisnmYsUzazI1O5X7VkIGFcGePTqJ/bWlfUIVVExWxvAI33PQFzLbzmN5scyIUyGQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-linux-x64-musl@1.5.7:
- resolution: {integrity: sha512-0VN9Y5EAPBESmSPPsCJzplZHV26akC0sIgd3Hc/7S/1GkSMoeuVL+V9vt+F/cCuzr4VidzSkqftdP3qEIsXSpg==}
+ /@swc/core-linux-x64-musl@1.6.13:
+ resolution: {integrity: sha512-OdsY7wryTxCKwGQcwW9jwWg3cxaHBkTTHi91+5nm7hFPpmZMz1HivJrWAMwVE7iXFw+M4l6ugB/wCvpYrUAAjA==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
requiresBuild: true
optional: true
- /@swc/core-win32-arm64-msvc@1.5.7:
- resolution: {integrity: sha512-RtoNnstBwy5VloNCvmvYNApkTmuCe4sNcoYWpmY7C1+bPR+6SOo8im1G6/FpNem8AR5fcZCmXHWQ+EUmRWJyuA==}
+ /@swc/core-win32-arm64-msvc@1.6.13:
+ resolution: {integrity: sha512-ap6uNmYjwk9M/+bFEuWRNl3hq4VqgQ/Lk+ID/F5WGqczNr0L7vEf+pOsRAn0F6EV+o/nyb3ePt8rLhE/wjHpPg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
requiresBuild: true
optional: true
- /@swc/core-win32-ia32-msvc@1.5.7:
- resolution: {integrity: sha512-Xm0TfvcmmspvQg1s4+USL3x8D+YPAfX2JHygvxAnCJ0EHun8cm2zvfNBcsTlnwYb0ybFWXXY129aq1wgFC9TpQ==}
+ /@swc/core-win32-ia32-msvc@1.6.13:
+ resolution: {integrity: sha512-IJ8KH4yIUHTnS/U1jwQmtbfQals7zWPG0a9hbEfIr4zI0yKzjd83lmtS09lm2Q24QBWOCFGEEbuZxR4tIlvfzA==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
requiresBuild: true
optional: true
- /@swc/core-win32-x64-msvc@1.5.7:
- resolution: {integrity: sha512-tp43WfJLCsKLQKBmjmY/0vv1slVywR5Q4qKjF5OIY8QijaEW7/8VwPyUyVoJZEnDgv9jKtUTG5PzqtIYPZGnyg==}
+ /@swc/core-win32-x64-msvc@1.6.13:
+ resolution: {integrity: sha512-f6/sx6LMuEnbuxtiSL/EkR0Y6qUHFw1XVrh6rwzKXptTipUdOY+nXpKoh+1UsBm/r7H0/5DtOdrn3q5ZHbFZjQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
requiresBuild: true
optional: true
- /@swc/core@1.5.7:
- resolution: {integrity: sha512-U4qJRBefIJNJDRCCiVtkfa/hpiZ7w0R6kASea+/KLp+vkus3zcLSB8Ub8SvKgTIxjWpwsKcZlPf5nrv4ls46SQ==}
+ /@swc/core@1.6.13:
+ resolution: {integrity: sha512-eailUYex6fkfaQTev4Oa3mwn0/e3mQU4H8y1WPuImYQESOQDtVrowwUGDSc19evpBbHpKtwM+hw8nLlhIsF+Tw==}
engines: {node: '>=10'}
requiresBuild: true
peerDependencies:
- '@swc/helpers': ^0.5.0
+ '@swc/helpers': '*'
peerDependenciesMeta:
'@swc/helpers':
optional: true
dependencies:
'@swc/counter': 0.1.3
- '@swc/types': 0.1.7
+ '@swc/types': 0.1.9
optionalDependencies:
- '@swc/core-darwin-arm64': 1.5.7
- '@swc/core-darwin-x64': 1.5.7
- '@swc/core-linux-arm-gnueabihf': 1.5.7
- '@swc/core-linux-arm64-gnu': 1.5.7
- '@swc/core-linux-arm64-musl': 1.5.7
- '@swc/core-linux-x64-gnu': 1.5.7
- '@swc/core-linux-x64-musl': 1.5.7
- '@swc/core-win32-arm64-msvc': 1.5.7
- '@swc/core-win32-ia32-msvc': 1.5.7
- '@swc/core-win32-x64-msvc': 1.5.7
+ '@swc/core-darwin-arm64': 1.6.13
+ '@swc/core-darwin-x64': 1.6.13
+ '@swc/core-linux-arm-gnueabihf': 1.6.13
+ '@swc/core-linux-arm64-gnu': 1.6.13
+ '@swc/core-linux-arm64-musl': 1.6.13
+ '@swc/core-linux-x64-gnu': 1.6.13
+ '@swc/core-linux-x64-musl': 1.6.13
+ '@swc/core-win32-arm64-msvc': 1.6.13
+ '@swc/core-win32-ia32-msvc': 1.6.13
+ '@swc/core-win32-x64-msvc': 1.6.13
/@swc/counter@0.1.3:
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
- /@swc/types@0.1.7:
- resolution: {integrity: sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ==}
+ /@swc/types@0.1.9:
+ resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==}
dependencies:
'@swc/counter': 0.1.3
- /@testing-library/dom@10.1.0:
- resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==}
+ /@testing-library/dom@10.3.1:
+ resolution: {integrity: sha512-q/WL+vlXMpC0uXDyfsMtc1rmotzLV8Y0gq6q1gfrrDjQeHoeLrqHbxdPvPNAh1i+xuJl7+BezywcXArz7vLqKQ==}
engines: {node: '>=18'}
dependencies:
- '@babel/code-frame': 7.24.2
- '@babel/runtime': 7.24.5
+ '@babel/code-frame': 7.24.7
+ '@babel/runtime': 7.24.7
'@types/aria-query': 5.0.4
aria-query: 5.3.0
chalk: 4.1.2
@@ -7642,8 +7937,8 @@ packages:
resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==}
engines: {node: '>=14'}
dependencies:
- '@babel/code-frame': 7.24.2
- '@babel/runtime': 7.24.5
+ '@babel/code-frame': 7.24.7
+ '@babel/runtime': 7.24.7
'@types/aria-query': 5.0.4
aria-query: 5.1.3
chalk: 4.1.2
@@ -7656,8 +7951,8 @@ packages:
resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==}
engines: {node: '>=8', npm: '>=6', yarn: '>=1'}
dependencies:
- '@adobe/css-tools': 4.3.3
- '@babel/runtime': 7.24.5
+ '@adobe/css-tools': 4.4.0
+ '@babel/runtime': 7.24.7
'@types/testing-library__jest-dom': 5.14.9
aria-query: 5.3.0
chalk: 3.0.0
@@ -7674,20 +7969,20 @@ packages:
react: ^18.0.0
react-dom: ^18.0.0
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@testing-library/dom': 9.3.4
'@types/react-dom': 18.2.18
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: true
- /@testing-library/user-event@14.4.3(@testing-library/dom@10.1.0):
+ /@testing-library/user-event@14.4.3(@testing-library/dom@10.3.1):
resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==}
engines: {node: '>=12', npm: '>=6'}
peerDependencies:
'@testing-library/dom': '>=7.21.4'
dependencies:
- '@testing-library/dom': 10.1.0
+ '@testing-library/dom': 10.3.1
dev: true
/@testing-library/user-event@14.4.3(@testing-library/dom@9.3.4):
@@ -7893,19 +8188,19 @@ packages:
prosemirror-commands: 1.5.2
prosemirror-dropcursor: 1.8.1
prosemirror-gapcursor: 1.3.2
- prosemirror-history: 1.4.0
+ prosemirror-history: 1.4.1
prosemirror-inputrules: 1.4.0
prosemirror-keymap: 1.2.2
prosemirror-markdown: 1.13.0
prosemirror-menu: 1.2.4
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
prosemirror-schema-basic: 1.2.2
- prosemirror-schema-list: 1.3.0
+ prosemirror-schema-list: 1.4.0
prosemirror-state: 1.4.3
prosemirror-tables: 1.3.7
- prosemirror-trailing-node: 2.0.8(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)
+ prosemirror-trailing-node: 2.0.8(prosemirror-model@1.21.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.8)
prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-view: 1.33.8
dev: false
/@tiptap/react@2.4.0(@tiptap/core@2.4.0)(@tiptap/pm@2.0.3)(react-dom@18.2.0)(react@18.2.0):
@@ -7958,67 +8253,92 @@ packages:
resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
dev: true
- /@turf/area@6.5.0:
- resolution: {integrity: sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==}
+ /@turf/area@7.0.0:
+ resolution: {integrity: sha512-Q/P6OGV8dJJs1BiraKFNBjtsMbz7B52mLCtgKh3syzujSREMx52RlsiOBQp8GujFMMiau+Mt25XKbVwtjHVi8Q==}
dependencies:
- '@turf/helpers': 6.5.0
- '@turf/meta': 6.5.0
+ '@turf/helpers': 7.0.0
+ '@turf/meta': 7.0.0
+ tslib: 2.6.3
dev: false
- /@turf/bbox@6.5.0:
- resolution: {integrity: sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==}
+ /@turf/bbox-polygon@7.0.0:
+ resolution: {integrity: sha512-RMBADOr0zOhVhTidKXCAx1TLTzgBvZwQKI6KJ1FgoCPH7GMZZnMXGMvOtdQLdsplS4Zs6+NoVtaK2x0+EXdYJQ==}
dependencies:
- '@turf/helpers': 6.5.0
- '@turf/meta': 6.5.0
+ '@turf/helpers': 7.0.0
+ tslib: 2.6.3
dev: false
- /@turf/buffer@6.5.0:
- resolution: {integrity: sha512-qeX4N6+PPWbKqp1AVkBVWFerGjMYMUyencwfnkCesoznU6qvfugFHNAngNqIBVnJjZ5n8IFyOf+akcxnrt9sNg==}
+ /@turf/bbox@7.0.0:
+ resolution: {integrity: sha512-IyXG5HAsn6IZLdAtQo7aWYccjU5WsV+uzIzhGaXrh/qTVylSYmRiWgLdiekHZVED9nv9r7D/EJUMOT4zyA6POA==}
dependencies:
- '@turf/bbox': 6.5.0
- '@turf/center': 6.5.0
- '@turf/helpers': 6.5.0
- '@turf/meta': 6.5.0
- '@turf/projection': 6.5.0
+ '@turf/helpers': 7.0.0
+ '@turf/meta': 7.0.0
+ tslib: 2.6.3
+ dev: false
+
+ /@turf/buffer@7.0.0:
+ resolution: {integrity: sha512-viw3XjTtYVtkq5DkRDBQjXoi5QeEMhe4JHWXIfHMHs4o5F9B+lZ8+TtXWo18X5aAXknv6ib1z2syoaQdBpb5Xw==}
+ dependencies:
+ '@turf/bbox': 7.0.0
+ '@turf/center': 7.0.0
+ '@turf/helpers': 7.0.0
+ '@turf/jsts': 2.7.1
+ '@turf/meta': 7.0.0
+ '@turf/projection': 7.0.0
d3-geo: 1.7.1
- turf-jsts: 1.2.3
dev: false
- /@turf/center@6.5.0:
- resolution: {integrity: sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==}
+ /@turf/center@7.0.0:
+ resolution: {integrity: sha512-5RZia9uuWxz2oCyd1vsNkBeraBNdwCsIo4UGRQdyswBeLFVbRwIUa7M7+2z2D7B1YIgovuLIRVfk6FeWUQXDtQ==}
dependencies:
- '@turf/bbox': 6.5.0
- '@turf/helpers': 6.5.0
+ '@turf/bbox': 7.0.0
+ '@turf/helpers': 7.0.0
+ tslib: 2.6.3
dev: false
- /@turf/clone@6.5.0:
- resolution: {integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==}
+ /@turf/clone@7.0.0:
+ resolution: {integrity: sha512-bQBx/wbQoGNtZzuHetLt44NMqOCnjSXcvTWm+LJ7YTmwrqZVAjISDhFxgawY/L+G3p+ya5WoxQwZWak80uYg3A==}
dependencies:
- '@turf/helpers': 6.5.0
+ '@turf/helpers': 7.0.0
+ tslib: 2.6.3
dev: false
/@turf/helpers@6.5.0:
resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==}
dev: false
+ /@turf/helpers@7.0.0:
+ resolution: {integrity: sha512-vwZvxRuyjGpGXvhXSbT9mX6FK92dBMLWbMbDJ/MXQUPx17ReVPFc+6N6IcxAzZfkiCnqy7vpuq0c+/TTrQxIiA==}
+ dependencies:
+ deep-equal: 2.2.3
+ tslib: 2.6.3
+ dev: false
+
/@turf/invariant@6.5.0:
resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==}
dependencies:
'@turf/helpers': 6.5.0
dev: false
- /@turf/meta@6.5.0:
- resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==}
+ /@turf/jsts@2.7.1:
+ resolution: {integrity: sha512-+nwOKme/aUprsxnLSfr2LylV6eL6T1Tuln+4Hl92uwZ8FrmjDRCH5Bi1LJNVfWCiYgk8+5K+t2zDphWNTsIFDA==}
dependencies:
- '@turf/helpers': 6.5.0
+ jsts: 2.7.1
dev: false
- /@turf/projection@6.5.0:
- resolution: {integrity: sha512-/Pgh9mDvQWWu8HRxqpM+tKz8OzgauV+DiOcr3FCjD6ubDnrrmMJlsf6fFJmggw93mtVPrZRL6yyi9aYCQBOIvg==}
+ /@turf/meta@7.0.0:
+ resolution: {integrity: sha512-cEXr13uFwhXq5mFBy0IK1U/QepE5qgk3zXpBYsla3lYV7cB83Vh+NNUR+r0/w/QoJqest1TG4H20F9tGYWPi/g==}
dependencies:
- '@turf/clone': 6.5.0
- '@turf/helpers': 6.5.0
- '@turf/meta': 6.5.0
+ '@turf/helpers': 7.0.0
+ dev: false
+
+ /@turf/projection@7.0.0:
+ resolution: {integrity: sha512-EoPbZPZSDv0AJMfYhqnS455CVMYwPU78kHyQHeOnMR1Tc5z+TiImvyq55umhfecgpETzuDsjFkmeQ2phDKTmbA==}
+ dependencies:
+ '@turf/clone': 7.0.0
+ '@turf/helpers': 7.0.0
+ '@turf/meta': 7.0.0
+ tslib: 2.6.3
dev: false
/@turf/union@6.5.0:
@@ -8036,8 +8356,8 @@ packages:
/@types/babel__core@7.20.5:
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
dependencies:
- '@babel/parser': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
@@ -8045,18 +8365,18 @@ packages:
/@types/babel__generator@7.6.8:
resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
/@types/babel__template@7.4.4:
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
dependencies:
- '@babel/parser': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
/@types/babel__traverse@7.20.6:
resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
dependencies:
- '@babel/types': 7.24.5
+ '@babel/types': 7.24.7
/@types/body-parser@1.19.5:
resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
@@ -8076,7 +8396,7 @@ packages:
/@types/connect-history-api-fallback@1.5.4:
resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==}
dependencies:
- '@types/express-serve-static-core': 4.19.1
+ '@types/express-serve-static-core': 4.19.5
'@types/node': 17.0.45
/@types/connect@3.4.38:
@@ -8129,8 +8449,8 @@ packages:
resolution: {integrity: sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==}
dev: true
- /@types/emscripten@1.39.12:
- resolution: {integrity: sha512-AQImDBgudQfMqUBfrjZYilRxoHDzTBp+ejh+g1fY67eSMalwIKtBXofjpyI0JBgNpHGzxeGAR2QDya0wxW9zbA==}
+ /@types/emscripten@1.39.13:
+ resolution: {integrity: sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==}
dev: true
/@types/escodegen@0.0.6:
@@ -8159,8 +8479,8 @@ packages:
/@types/estree@1.0.5:
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
- /@types/express-serve-static-core@4.19.1:
- resolution: {integrity: sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==}
+ /@types/express-serve-static-core@4.19.5:
+ resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==}
dependencies:
'@types/node': 17.0.45
'@types/qs': 6.9.15
@@ -8171,7 +8491,7 @@ packages:
resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
dependencies:
'@types/body-parser': 1.19.5
- '@types/express-serve-static-core': 4.19.1
+ '@types/express-serve-static-core': 4.19.5
'@types/qs': 6.9.15
'@types/serve-static': 1.15.7
@@ -8181,7 +8501,7 @@ packages:
/@types/geojson@7946.0.14:
resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==}
- dev: false
+ dev: true
/@types/graceful-fs@4.1.9:
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
@@ -8256,9 +8576,8 @@ packages:
/@types/lodash@4.14.202:
resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==}
- /@types/lodash@4.17.4:
- resolution: {integrity: sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==}
- dev: false
+ /@types/lodash@4.17.6:
+ resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==}
/@types/mdast@3.0.15:
resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
@@ -8292,14 +8611,14 @@ packages:
/@types/node@17.0.45:
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
- /@types/node@18.19.33:
- resolution: {integrity: sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==}
+ /@types/node@18.19.39:
+ resolution: {integrity: sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ==}
dependencies:
undici-types: 5.26.5
dev: true
- /@types/node@20.12.12:
- resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
+ /@types/node@20.14.10:
+ resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==}
dependencies:
undici-types: 5.26.5
dev: false
@@ -8333,7 +8652,6 @@ packages:
/@types/raf@3.4.3:
resolution: {integrity: sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==}
- requiresBuild: true
dev: false
optional: true
@@ -8510,12 +8828,12 @@ packages:
typescript:
optional: true
dependencies:
- '@eslint-community/regexpp': 4.10.0
+ '@eslint-community/regexpp': 4.11.0
'@typescript-eslint/parser': 5.58.0(eslint@8.44.0)(typescript@5.4.3)
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/type-utils': 5.62.0(eslint@8.44.0)(typescript@5.4.3)
'@typescript-eslint/utils': 5.62.0(eslint@8.44.0)(typescript@5.4.3)
- debug: 4.3.4
+ debug: 4.3.5
eslint: 8.44.0
graphemer: 1.4.0
ignore: 5.3.1
@@ -8551,7 +8869,7 @@ packages:
'@typescript-eslint/scope-manager': 5.58.0
'@typescript-eslint/types': 5.58.0
'@typescript-eslint/typescript-estree': 5.58.0(typescript@5.4.3)
- debug: 4.3.4
+ debug: 4.3.5
eslint: 8.44.0
typescript: 5.4.3
transitivePeerDependencies:
@@ -8583,7 +8901,7 @@ packages:
dependencies:
'@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.3)
'@typescript-eslint/utils': 5.62.0(eslint@8.44.0)(typescript@5.4.3)
- debug: 4.3.4
+ debug: 4.3.5
eslint: 8.44.0
tsutils: 3.21.0(typescript@5.4.3)
typescript: 5.4.3
@@ -8609,7 +8927,7 @@ packages:
dependencies:
'@typescript-eslint/types': 5.58.0
'@typescript-eslint/visitor-keys': 5.58.0
- debug: 4.3.4
+ debug: 4.3.5
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.2
@@ -8629,7 +8947,7 @@ packages:
dependencies:
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/visitor-keys': 5.62.0
- debug: 4.3.4
+ debug: 4.3.5
globby: 11.1.0
is-glob: 4.0.3
semver: 7.6.2
@@ -8798,35 +9116,35 @@ packages:
resolution: {integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==}
engines: {node: '>=8'}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/@wry/context@0.7.4:
resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==}
engines: {node: '>=8'}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/@wry/equality@0.5.7:
resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==}
engines: {node: '>=8'}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/@wry/trie@0.4.3:
resolution: {integrity: sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==}
engines: {node: '>=8'}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/@wry/trie@0.5.0:
resolution: {integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==}
engines: {node: '>=8'}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/@xobotyi/scrollbar-width@1.9.5:
@@ -8846,7 +9164,7 @@ packages:
esbuild: '>=0.10.0'
dependencies:
esbuild: 0.20.2
- tslib: 2.6.2
+ tslib: 2.6.3
dev: true
/@yarnpkg/fslib@2.10.3:
@@ -8861,7 +9179,7 @@ packages:
resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==}
engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'}
dependencies:
- '@types/emscripten': 1.39.12
+ '@types/emscripten': 1.39.13
tslib: 1.14.1
dev: true
@@ -8893,12 +9211,12 @@ packages:
acorn: 7.4.1
acorn-walk: 7.2.0
- /acorn-import-assertions@1.9.0(acorn@8.11.3):
+ /acorn-import-assertions@1.9.0(acorn@8.12.1):
resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
peerDependencies:
acorn: ^8
dependencies:
- acorn: 8.11.3
+ acorn: 8.12.1
/acorn-jsx@5.3.2(acorn@7.4.1):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
@@ -8908,20 +9226,22 @@ packages:
acorn: 7.4.1
dev: true
- /acorn-jsx@5.3.2(acorn@8.11.3):
+ /acorn-jsx@5.3.2(acorn@8.12.1):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.11.3
+ acorn: 8.12.1
/acorn-walk@7.2.0:
resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
engines: {node: '>=0.4.0'}
- /acorn-walk@8.3.2:
- resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
+ /acorn-walk@8.3.3:
+ resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==}
engines: {node: '>=0.4.0'}
+ dependencies:
+ acorn: 8.12.1
dev: true
/acorn@7.4.1:
@@ -8929,8 +9249,8 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
- /acorn@8.11.3:
- resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
+ /acorn@8.12.1:
+ resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -8949,7 +9269,7 @@ packages:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
@@ -8961,7 +9281,7 @@ packages:
indent-string: 4.0.0
dev: true
- /ajv-formats@2.1.1(ajv@8.13.0):
+ /ajv-formats@2.1.1(ajv@8.16.0):
resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
peerDependencies:
ajv: ^8.0.0
@@ -8969,7 +9289,7 @@ packages:
ajv:
optional: true
dependencies:
- ajv: 8.13.0
+ ajv: 8.16.0
/ajv-keywords@3.5.2(ajv@6.12.6):
resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
@@ -8978,12 +9298,12 @@ packages:
dependencies:
ajv: 6.12.6
- /ajv-keywords@5.1.0(ajv@8.13.0):
+ /ajv-keywords@5.1.0(ajv@8.16.0):
resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
peerDependencies:
ajv: ^8.8.2
dependencies:
- ajv: 8.13.0
+ ajv: 8.16.0
fast-deep-equal: 3.1.3
/ajv@6.12.6:
@@ -8994,8 +9314,8 @@ packages:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
- /ajv@8.13.0:
- resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==}
+ /ajv@8.16.0:
+ resolution: {integrity: sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==}
dependencies:
fast-deep-equal: 3.1.3
json-schema-traverse: 1.0.0
@@ -9013,6 +9333,11 @@ packages:
engines: {'0': node >= 0.8.0}
hasBin: true
+ /ansi-html@0.0.9:
+ resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==}
+ engines: {'0': node >= 0.8.0}
+ hasBin: true
+
/ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@@ -9083,7 +9408,7 @@ packages:
resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
engines: {node: '>=10'}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: true
/aria-query@5.1.3:
@@ -9102,11 +9427,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /arr-flatten@1.1.0:
- resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
/arr-union@3.1.0:
resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
engines: {node: '>=0.10.0'}
@@ -9207,8 +9527,9 @@ packages:
es-abstract: 1.23.3
es-shim-unscopables: 1.0.2
- /array.prototype.tosorted@1.1.3:
- resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==}
+ /array.prototype.tosorted@1.1.4:
+ resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
+ engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
@@ -9258,7 +9579,7 @@ packages:
resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==}
engines: {node: '>=4'}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: true
/astral-regex@2.0.0:
@@ -9297,10 +9618,10 @@ packages:
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.1.0
dependencies:
- browserslist: 4.23.0
- caniuse-lite: 1.0.30001621
+ browserslist: 4.23.2
+ caniuse-lite: 1.0.30001641
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.1
@@ -9327,8 +9648,8 @@ packages:
resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==}
engines: {node: '>=4'}
- /axios@1.6.8:
- resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==}
+ /axios@1.7.2:
+ resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==}
dependencies:
follow-redirects: 1.15.6
form-data: 4.0.0
@@ -9337,17 +9658,16 @@ packages:
- debug
dev: false
- /axobject-query@3.2.1:
- resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
- dependencies:
- dequal: 2.0.3
+ /axobject-query@3.2.4:
+ resolution: {integrity: sha512-aPTElBrbifBU1krmZxGZOlBkslORe7Ll7+BDnI50Wy4LgOt69luMgevkDfTq1O/ZgprooPCtWpjCwKSZw/iZ4A==}
+ engines: {node: '>= 0.4'}
- /babel-core@7.0.0-bridge.0(@babel/core@7.24.5):
+ /babel-core@7.0.0-bridge.0(@babel/core@7.24.7):
resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.24.7
dev: true
/babel-jest@26.6.3(@babel/core@7.22.5):
@@ -9387,24 +9707,6 @@ packages:
transitivePeerDependencies:
- supports-color
- /babel-jest@27.5.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- peerDependencies:
- '@babel/core': ^7.8.0
- dependencies:
- '@babel/core': 7.24.5
- '@jest/transform': 27.5.1
- '@jest/types': 27.5.1
- '@types/babel__core': 7.20.5
- babel-plugin-istanbul: 6.1.1
- babel-preset-jest: 27.5.1(@babel/core@7.24.5)
- chalk: 4.1.2
- graceful-fs: 4.2.11
- slash: 3.0.0
- transitivePeerDependencies:
- - supports-color
-
/babel-loader@8.3.0(@babel/core@7.22.5)(webpack@5.91.0):
resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==}
engines: {node: '>= 8.9'}
@@ -9417,19 +9719,19 @@ packages:
loader-utils: 2.0.4
make-dir: 3.1.0
schema-utils: 2.7.1
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
- /babel-loader@9.1.3(@babel/core@7.24.5)(webpack@5.91.0):
+ /babel-loader@9.1.3(@babel/core@7.24.7)(webpack@5.91.0):
resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==}
engines: {node: '>= 14.15.0'}
peerDependencies:
'@babel/core': ^7.12.0
webpack: '>=5'
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.24.7
find-cache-dir: 4.0.0
schema-utils: 4.2.0
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
dev: true
/babel-plugin-add-react-displayname@0.0.5:
@@ -9439,7 +9741,7 @@ packages:
/babel-plugin-emotion@10.2.2:
resolution: {integrity: sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==}
dependencies:
- '@babel/helper-module-imports': 7.24.3
+ '@babel/helper-module-imports': 7.24.7
'@emotion/hash': 0.8.0
'@emotion/memoize': 0.7.4
'@emotion/serialize': 0.11.16
@@ -9449,13 +9751,15 @@ packages:
escape-string-regexp: 1.0.5
find-root: 1.1.0
source-map: 0.5.7
+ transitivePeerDependencies:
+ - supports-color
dev: true
/babel-plugin-istanbul@6.1.1:
resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
engines: {node: '>=8'}
dependencies:
- '@babel/helper-plugin-utils': 7.24.5
+ '@babel/helper-plugin-utils': 7.24.7
'@istanbuljs/load-nyc-config': 1.1.0
'@istanbuljs/schema': 0.1.3
istanbul-lib-instrument: 5.2.1
@@ -9467,8 +9771,8 @@ packages:
resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==}
engines: {node: '>= 10.14.2'}
dependencies:
- '@babel/template': 7.24.0
- '@babel/types': 7.24.5
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.20.6
dev: true
@@ -9477,15 +9781,15 @@ packages:
resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
- '@babel/template': 7.24.0
- '@babel/types': 7.24.5
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.20.6
/babel-plugin-macros@2.8.0:
resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
cosmiconfig: 6.0.0
resolve: 1.22.8
dev: true
@@ -9494,7 +9798,7 @@ packages:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
cosmiconfig: 7.1.0
resolve: 1.22.8
@@ -9510,36 +9814,48 @@ packages:
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
- '@babel/compat-data': 7.24.4
+ '@babel/compat-data': 7.24.7
'@babel/core': 7.22.5
'@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.22.5)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- dev: true
- /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5):
+ /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.7):
resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
- '@babel/compat-data': 7.24.4
- '@babel/core': 7.24.5
- '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5)
+ '@babel/compat-data': 7.24.7
+ '@babel/core': 7.24.7
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
+ dev: true
+
+ /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.22.5):
+ resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ dependencies:
+ '@babel/core': 7.22.5
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.22.5)
+ core-js-compat: 3.37.1
+ transitivePeerDependencies:
+ - supports-color
- /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5):
+ /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.7):
resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7)
core-js-compat: 3.37.1
transitivePeerDependencies:
- supports-color
+ dev: true
/babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.22.5):
resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==}
@@ -9551,7 +9867,6 @@ packages:
core-js-compat: 3.37.1
transitivePeerDependencies:
- supports-color
- dev: true
/babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.22.5):
resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==}
@@ -9562,17 +9877,27 @@ packages:
'@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.22.5)
transitivePeerDependencies:
- supports-color
- dev: true
- /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5):
+ /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.22.5):
+ resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==}
+ peerDependencies:
+ '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ dependencies:
+ '@babel/core': 7.22.5
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.22.5)
+ transitivePeerDependencies:
+ - supports-color
+
+ /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.7):
resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
dependencies:
- '@babel/core': 7.24.5
- '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.7)
transitivePeerDependencies:
- supports-color
+ dev: true
/babel-plugin-syntax-jsx@6.18.0:
resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==}
@@ -9600,25 +9925,6 @@ packages:
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5)
- /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/core': 7.24.5
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5)
- '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5)
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5)
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5)
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5)
- '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5)
-
/babel-preset-jest@26.6.2(@babel/core@7.22.5):
resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==}
engines: {node: '>= 10.14.2'}
@@ -9640,34 +9946,24 @@ packages:
babel-plugin-jest-hoist: 27.5.1
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5)
- /babel-preset-jest@27.5.1(@babel/core@7.24.5):
- resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==}
- engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/core': 7.24.5
- babel-plugin-jest-hoist: 27.5.1
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5)
-
/babel-preset-react-app@10.0.1:
resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==}
dependencies:
- '@babel/core': 7.24.5
- '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5)
- '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5)
- '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.5)
- '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5)
- '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.24.5)
- '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.24.5)
- '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5)
- '@babel/preset-env': 7.24.5(@babel/core@7.24.5)
- '@babel/preset-react': 7.22.5(@babel/core@7.24.5)
- '@babel/preset-typescript': 7.23.3(@babel/core@7.24.5)
- '@babel/runtime': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.5)
+ '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.5)
+ '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.5)
+ '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.5)
+ '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.22.5)
+ '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.22.5)
+ '@babel/plugin-transform-flow-strip-types': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.22.5)
+ '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.22.5)
+ '@babel/preset-env': 7.22.6(@babel/core@7.22.5)
+ '@babel/preset-react': 7.22.5(@babel/core@7.22.5)
+ '@babel/preset-typescript': 7.23.3(@babel/core@7.22.5)
+ '@babel/runtime': 7.24.7
babel-plugin-macros: 3.1.0
babel-plugin-transform-react-remove-prop-types: 0.4.24
transitivePeerDependencies:
@@ -9698,7 +9994,6 @@ packages:
/base64-arraybuffer@1.0.2:
resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==}
engines: {node: '>= 0.6.0'}
- requiresBuild: true
dev: false
optional: true
@@ -9816,24 +10111,6 @@ packages:
dependencies:
balanced-match: 1.0.2
- /braces@2.3.2:
- resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
- engines: {node: '>=0.10.0'}
- dependencies:
- arr-flatten: 1.1.0
- array-unique: 0.3.2
- extend-shallow: 2.0.1
- fill-range: 4.0.0
- isobject: 3.0.1
- repeat-element: 1.1.4
- snapdragon: 0.8.2
- snapdragon-node: 2.1.1
- split-string: 3.1.0
- to-regex: 3.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
/braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
@@ -9853,15 +10130,15 @@ packages:
pako: 0.2.9
dev: true
- /browserslist@4.23.0:
- resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
+ /browserslist@4.23.2:
+ resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001621
- electron-to-chromium: 1.4.782
+ caniuse-lite: 1.0.30001641
+ electron-to-chromium: 1.4.823
node-releases: 2.0.14
- update-browserslist-db: 1.0.16(browserslist@4.23.0)
+ update-browserslist-db: 1.1.0(browserslist@4.23.2)
/bser@2.1.1:
resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
@@ -9929,7 +10206,7 @@ packages:
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
dependencies:
pascal-case: 3.1.2
- tslib: 2.6.2
+ tslib: 2.6.3
/camelcase-css@2.0.1:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
@@ -9942,7 +10219,7 @@ packages:
camelcase: 8.0.0
map-obj: 5.0.0
quick-lru: 6.1.2
- type-fest: 4.18.2
+ type-fest: 4.21.0
dev: false
/camelcase@5.3.1:
@@ -9961,20 +10238,20 @@ packages:
/caniuse-api@3.0.0:
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
dependencies:
- browserslist: 4.23.0
- caniuse-lite: 1.0.30001621
+ browserslist: 4.23.2
+ caniuse-lite: 1.0.30001641
lodash.memoize: 4.1.2
lodash.uniq: 4.5.0
- /caniuse-lite@1.0.30001621:
- resolution: {integrity: sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==}
+ /caniuse-lite@1.0.30001641:
+ resolution: {integrity: sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==}
/canvg@3.0.10:
resolution: {integrity: sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==}
engines: {node: '>=10.0.0'}
requiresBuild: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/raf': 3.4.3
core-js: 3.31.0
raf: 3.4.1
@@ -10086,8 +10363,8 @@ packages:
engines: {node: '>=10'}
dev: true
- /chrome-trace-event@1.0.3:
- resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
+ /chrome-trace-event@1.0.4:
+ resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
engines: {node: '>=6.0'}
/ci-info@2.0.0:
@@ -10139,8 +10416,8 @@ packages:
d: 1.0.2
es5-ext: 0.10.64
es6-iterator: 2.0.3
- memoizee: 0.4.16
- timers-ext: 0.1.7
+ memoizee: 0.4.17
+ timers-ext: 0.1.8
dev: false
/cli-cursor@3.1.0:
@@ -10400,6 +10677,10 @@ packages:
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ /confbox@0.1.7:
+ resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==}
+ dev: true
+
/config-chain@1.1.13:
resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
dependencies:
@@ -10438,6 +10719,7 @@ packages:
/convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ dev: true
/cookie-signature@1.0.6:
resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
@@ -10473,7 +10755,7 @@ packages:
/core-js-compat@3.37.1:
resolution: {integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==}
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
/core-js-pure@3.37.1:
resolution: {integrity: sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==}
@@ -10492,7 +10774,7 @@ packages:
/core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
- /cosmiconfig-typescript-loader@1.0.9(@swc/core@1.5.7)(@types/node@17.0.45)(cosmiconfig@7.1.0)(typescript@5.4.3):
+ /cosmiconfig-typescript-loader@1.0.9(@swc/core@1.6.13)(@types/node@17.0.45)(cosmiconfig@7.1.0)(typescript@5.4.3):
resolution: {integrity: sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==}
engines: {node: '>=12', npm: '>=6'}
peerDependencies:
@@ -10502,7 +10784,7 @@ packages:
dependencies:
'@types/node': 17.0.45
cosmiconfig: 7.1.0
- ts-node: 10.9.2(@swc/core@1.5.7)(@types/node@17.0.45)(typescript@5.4.3)
+ ts-node: 10.9.2(@swc/core@1.6.13)(@types/node@17.0.45)(typescript@5.4.3)
typescript: 5.4.3
transitivePeerDependencies:
- '@swc/core'
@@ -10535,10 +10817,10 @@ packages:
'@craco/craco': ^7.0.0
react-scripts: ^5.0.0
dependencies:
- '@craco/craco': 7.1.0(@swc/core@1.5.7)(@types/node@17.0.45)(postcss@8.4.32)(react-scripts@5.0.1)(typescript@5.4.3)
+ '@craco/craco': 7.1.0(@swc/core@1.6.13)(@types/node@17.0.45)(postcss@8.4.32)(react-scripts@5.0.1)(typescript@5.4.3)
esbuild-jest: 0.5.0(esbuild@0.21.3)
- esbuild-loader: 4.1.0(webpack@5.91.0)
- react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.5.7)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
+ esbuild-loader: 4.2.0(webpack@5.91.0)
+ react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.6.13)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
transitivePeerDependencies:
- esbuild
- supports-color
@@ -10594,7 +10876,7 @@ packages:
engines: {node: ^12 || ^14 || >=16}
hasBin: true
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -10613,7 +10895,7 @@ packages:
resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==}
engines: {node: ^10 || ^12 || >=14}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.0.9
dependencies:
postcss: 8.4.32
@@ -10622,7 +10904,7 @@ packages:
engines: {node: ^12 || ^14 || >=16}
hasBin: true
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -10630,12 +10912,11 @@ packages:
/css-in-js-utils@3.1.0:
resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==}
dependencies:
- hyphenate-style-name: 1.0.5
+ hyphenate-style-name: 1.1.0
dev: false
/css-line-break@2.1.0:
resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==}
- requiresBuild: true
dependencies:
utrie: 1.0.2
dev: false
@@ -10653,15 +10934,15 @@ packages:
webpack:
optional: true
dependencies:
- icss-utils: 5.1.0(postcss@8.4.38)
- postcss: 8.4.38
- postcss-modules-extract-imports: 3.1.0(postcss@8.4.38)
- postcss-modules-local-by-default: 4.0.5(postcss@8.4.38)
- postcss-modules-scope: 3.2.0(postcss@8.4.38)
- postcss-modules-values: 4.0.0(postcss@8.4.38)
+ icss-utils: 5.1.0(postcss@8.4.39)
+ postcss: 8.4.39
+ postcss-modules-extract-imports: 3.1.0(postcss@8.4.39)
+ postcss-modules-local-by-default: 4.0.5(postcss@8.4.39)
+ postcss-modules-scope: 3.2.0(postcss@8.4.39)
+ postcss-modules-values: 4.0.0(postcss@8.4.39)
postcss-value-parser: 4.2.0
semver: 7.6.2
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/css-minimizer-webpack-plugin@3.4.1(esbuild@0.21.3)(webpack@5.91.0):
resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==}
@@ -10689,14 +10970,14 @@ packages:
schema-utils: 4.2.0
serialize-javascript: 6.0.2
source-map: 0.6.1
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/css-prefers-color-scheme@6.0.3(postcss@8.4.32):
resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==}
engines: {node: ^12 || ^14 || >=16}
hasBin: true
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4
dependencies:
postcss: 8.4.32
@@ -10747,7 +11028,7 @@ packages:
/css-vendor@2.0.8:
resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
is-in-browser: 1.1.3
dev: true
@@ -10779,7 +11060,7 @@ packages:
resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
css-declaration-sorter: 6.4.1(postcss@8.4.32)
cssnano-utils: 3.1.0(postcss@8.4.32)
@@ -10816,7 +11097,7 @@ packages:
resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
@@ -10824,7 +11105,7 @@ packages:
resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
cssnano-preset-default: 5.2.14(postcss@8.4.32)
lilconfig: 2.1.0
@@ -10871,7 +11152,7 @@ packages:
engines: {node: '>=0.12'}
dependencies:
es5-ext: 0.10.64
- type: 2.7.2
+ type: 2.7.3
dev: false
/damerau-levenshtein@1.0.8:
@@ -10918,7 +11199,7 @@ packages:
resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
engines: {node: '>=0.11'}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dev: false
/debug@2.6.9:
@@ -10941,8 +11222,8 @@ packages:
dependencies:
ms: 2.1.3
- /debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ /debug@4.3.5:
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -10991,7 +11272,6 @@ packages:
which-boxed-primitive: 1.0.2
which-collection: 1.0.2
which-typed-array: 1.1.15
- dev: true
/deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
@@ -11130,7 +11410,7 @@ packages:
hasBin: true
dependencies:
address: 1.2.2
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
dev: true
@@ -11195,7 +11475,7 @@ packages:
resolution: {integrity: sha512-4SbcbedPXTciySXiSnNNLuJXpvxFe5nqivbiEHXyL8P/w0wx2uW7YXNjnYgjW0e2e6vy+L/tMISU/oAiXCl57Q==}
engines: {node: '>=10'}
dependencies:
- '@types/node': 20.12.12
+ '@types/node': 20.14.10
jszip: 3.10.1
nanoid: 5.0.7
xml: 1.0.1
@@ -11214,7 +11494,7 @@ packages:
/dom-helpers@5.2.1:
resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
csstype: 3.1.3
/dom-serializer@0.2.2:
@@ -11274,8 +11554,8 @@ packages:
domelementtype: 2.3.0
dev: false
- /dompurify@2.5.4:
- resolution: {integrity: sha512-l5NNozANzaLPPe0XaAwvg3uZcHtDBnziX/HjsY1UcDj1MxTK8Dd0Kv096jyPK5HRzs/XM5IMj20dW8Fk+HnbUA==}
+ /dompurify@2.5.6:
+ resolution: {integrity: sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==}
requiresBuild: true
dev: false
optional: true
@@ -11309,7 +11589,7 @@ packages:
resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
dependencies:
no-case: 3.0.4
- tslib: 2.6.2
+ tslib: 2.6.3
/dotenv-expand@10.0.0:
resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==}
@@ -11367,8 +11647,8 @@ packages:
dependencies:
jake: 10.9.1
- /electron-to-chromium@1.4.782:
- resolution: {integrity: sha512-JUfU61e8tr+i5Y1FKXcKs+Xe+rJ+CEqm4cgv1kMihPE2EvYHmYyVr3Im/+1+Z5B29Be2EEGCZCwAc6Tazdl1Yg==}
+ /electron-to-chromium@1.4.823:
+ resolution: {integrity: sha512-4h+oPeAiGQOHFyUJOqpoEcPj/xxlicxBzOErVeYVMMmAiXUXsGpsFd0QXBMaUUbnD8hhSfLf9uw+MlsoIA7j5w==}
/emittery@0.10.2:
resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==}
@@ -11406,8 +11686,8 @@ packages:
objectorarray: 1.0.5
dev: true
- /enhanced-resolve@5.16.1:
- resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==}
+ /enhanced-resolve@5.17.0:
+ resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==}
engines: {node: '>=10.13.0'}
dependencies:
graceful-fs: 4.2.11
@@ -11476,7 +11756,7 @@ packages:
is-string: 1.0.7
is-typed-array: 1.1.13
is-weakref: 1.0.2
- object-inspect: 1.13.1
+ object-inspect: 1.13.2
object-keys: 1.1.1
object.assign: 4.1.5
regexp.prototype.flags: 1.5.2
@@ -11517,7 +11797,6 @@ packages:
is-string: 1.0.7
isarray: 2.0.5
stop-iteration-iterator: 1.0.0
- dev: true
/es-iterator-helpers@1.0.19:
resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==}
@@ -11538,8 +11817,8 @@ packages:
iterator.prototype: 1.1.2
safe-array-concat: 1.1.2
- /es-module-lexer@1.5.3:
- resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==}
+ /es-module-lexer@1.5.4:
+ resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
/es-object-atoms@1.0.0:
resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
@@ -11610,22 +11889,22 @@ packages:
esbuild: '>=0.8.50'
dependencies:
'@babel/core': 7.22.5
- '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.22.5)
+ '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.22.5)
babel-jest: 26.6.3(@babel/core@7.22.5)
esbuild: 0.21.3
transitivePeerDependencies:
- supports-color
dev: true
- /esbuild-loader@4.1.0(webpack@5.91.0):
- resolution: {integrity: sha512-543TtIvqbqouEMlOHg4xKoDQkmdImlwIpyAIgpUtDPvMuklU/c2k+Qt2O3VeDBgAwozxmlEbjOzV+F8CZ0g+Bw==}
+ /esbuild-loader@4.2.0(webpack@5.91.0):
+ resolution: {integrity: sha512-BhwHchuDknxIa69AqOPeZh2fIFqj2AzZKC1E3RBRvXSuyk5drsqMrwsgYZJufX41yrauLYjDM3KBmruoGl1NWQ==}
peerDependencies:
webpack: ^4.40.0 || ^5.0.0
dependencies:
- esbuild: 0.20.2
+ esbuild: 0.21.3
get-tsconfig: 4.7.5
loader-utils: 2.0.4
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
webpack-sources: 1.4.3
dev: true
@@ -11638,7 +11917,7 @@ packages:
peerDependencies:
esbuild: '>=0.12 <1'
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
esbuild: 0.18.20
transitivePeerDependencies:
- supports-color
@@ -11649,7 +11928,7 @@ packages:
peerDependencies:
esbuild: '>=0.12 <1'
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
esbuild: 0.20.2
transitivePeerDependencies:
- supports-color
@@ -11811,8 +12090,8 @@ packages:
typescript:
optional: true
dependencies:
- '@babel/core': 7.24.5
- '@babel/eslint-parser': 7.24.5(@babel/core@7.24.5)(eslint@8.44.0)
+ '@babel/core': 7.22.5
+ '@babel/eslint-parser': 7.24.7(@babel/core@7.22.5)(eslint@8.44.0)
'@rushstack/eslint-patch': 1.10.3
'@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.58.0)(eslint@8.44.0)(typescript@5.4.3)
'@typescript-eslint/parser': 5.58.0(eslint@8.44.0)(typescript@5.4.3)
@@ -11823,7 +12102,7 @@ packages:
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.58.0)(eslint@8.44.0)
eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.44.0)(jest@27.5.1)(typescript@5.4.3)
eslint-plugin-jsx-a11y: 6.7.1(eslint@8.44.0)
- eslint-plugin-react: 7.34.1(eslint@8.44.0)
+ eslint-plugin-react: 7.34.3(eslint@8.44.0)
eslint-plugin-react-hooks: 4.6.0(eslint@8.44.0)
eslint-plugin-testing-library: 5.11.1(eslint@8.44.0)(typescript@5.4.3)
typescript: 5.4.3
@@ -11839,7 +12118,7 @@ packages:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
dependencies:
debug: 3.2.7
- is-core-module: 2.13.1
+ is-core-module: 2.14.0
resolve: 1.22.8
transitivePeerDependencies:
- supports-color
@@ -11907,7 +12186,7 @@ packages:
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.58.0)(eslint-import-resolver-node@0.3.9)(eslint@8.44.0)
hasown: 2.0.2
- is-core-module: 2.13.1
+ is-core-module: 2.14.0
is-glob: 4.0.3
minimatch: 3.1.2
object.fromentries: 2.0.8
@@ -11947,13 +12226,13 @@ packages:
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
aria-query: 5.3.0
array-includes: 3.1.8
array.prototype.flatmap: 1.3.2
ast-types-flow: 0.0.7
axe-core: 4.9.1
- axobject-query: 3.2.1
+ axobject-query: 3.2.4
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
eslint: 8.44.0
@@ -11973,8 +12252,8 @@ packages:
dependencies:
eslint: 8.44.0
- /eslint-plugin-react@7.34.1(eslint@8.44.0):
- resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==}
+ /eslint-plugin-react@7.34.3(eslint@8.44.0):
+ resolution: {integrity: sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==}
engines: {node: '>=4'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
@@ -11983,7 +12262,7 @@ packages:
array.prototype.findlast: 1.2.5
array.prototype.flatmap: 1.3.2
array.prototype.toreversed: 1.1.2
- array.prototype.tosorted: 1.1.3
+ array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
es-iterator-helpers: 1.0.19
eslint: 8.44.0
@@ -11999,8 +12278,8 @@ packages:
semver: 6.3.1
string.prototype.matchall: 4.0.11
- /eslint-plugin-simple-import-sort@10.0.0(eslint@8.44.0):
- resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==}
+ /eslint-plugin-simple-import-sort@12.1.0(eslint@8.44.0):
+ resolution: {integrity: sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==}
peerDependencies:
eslint: '>=5.0.0'
dependencies:
@@ -12054,7 +12333,7 @@ packages:
micromatch: 4.0.7
normalize-path: 3.0.0
schema-utils: 4.2.0
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/eslint@8.44.0:
resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==}
@@ -12062,7 +12341,7 @@ packages:
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0)
- '@eslint-community/regexpp': 4.10.0
+ '@eslint-community/regexpp': 4.11.0
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.44.0
'@humanwhocodes/config-array': 0.11.14
@@ -12071,13 +12350,13 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.3.5
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
- esquery: 1.5.0
+ esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
@@ -12109,7 +12388,7 @@ packages:
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
- '@eslint-community/regexpp': 4.10.0
+ '@eslint-community/regexpp': 4.11.0
'@eslint/eslintrc': 2.1.4
'@eslint/js': 8.57.0
'@humanwhocodes/config-array': 0.11.14
@@ -12119,13 +12398,13 @@ packages:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.3.5
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
- esquery: 1.5.0
+ esquery: 1.6.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
@@ -12157,15 +12436,15 @@ packages:
d: 1.0.2
es5-ext: 0.10.64
event-emitter: 0.3.5
- type: 2.7.2
+ type: 2.7.3
dev: false
/espree@9.6.1:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
- acorn: 8.11.3
- acorn-jsx: 5.3.2(acorn@8.11.3)
+ acorn: 8.12.1
+ acorn-jsx: 5.3.2(acorn@8.12.1)
eslint-visitor-keys: 3.4.3
/esprima@1.2.2:
@@ -12178,8 +12457,8 @@ packages:
engines: {node: '>=4'}
hasBin: true
- /esquery@1.5.0:
- resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
+ /esquery@1.6.0:
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
engines: {node: '>=0.10'}
dependencies:
estraverse: 5.3.0
@@ -12357,7 +12636,7 @@ packages:
/ext@1.7.0:
resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
dependencies:
- type: 2.7.2
+ type: 2.7.3
dev: false
/extend-shallow@2.0.1:
@@ -12421,10 +12700,6 @@ packages:
/fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
- /fast-loops@1.1.3:
- resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==}
- dev: false
-
/fast-shallow-equal@1.0.0:
resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==}
dev: false
@@ -12477,7 +12752,7 @@ packages:
object-assign: 4.1.1
promise: 7.3.1
setimmediate: 1.0.5
- ua-parser-js: 1.0.37
+ ua-parser-js: 1.0.38
transitivePeerDependencies:
- encoding
dev: true
@@ -12512,7 +12787,7 @@ packages:
dependencies:
loader-utils: 2.0.4
schema-utils: 3.3.0
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/file-saver@2.0.5:
resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==}
@@ -12522,7 +12797,7 @@ packages:
resolution: {integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==}
engines: {node: '>= 12'}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/file-system-cache@2.3.0:
@@ -12541,16 +12816,6 @@ packages:
resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==}
engines: {node: '>= 0.4.0'}
- /fill-range@4.0.0:
- resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- extend-shallow: 2.0.1
- is-number: 3.0.0
- repeat-string: 1.6.1
- to-regex-range: 2.1.1
- dev: true
-
/fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
@@ -12643,8 +12908,8 @@ packages:
/flatted@3.3.1:
resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
- /flow-parser@0.236.0:
- resolution: {integrity: sha512-0OEk9Gr+Yj7wjDW2KgaNYUypKau71jAfFyeLQF5iVtxqc6uJHag/MT7pmaEApf4qM7u86DkBcd4ualddYMfbLw==}
+ /flow-parser@0.239.1:
+ resolution: {integrity: sha512-topOrETNxJ6T2gAnQiWqAlzGPj8uI2wtmNOlDIMNB+qyvGJZ6R++STbUOTAYmvPhOMz2gXnXPH0hOvURYmrBow==}
engines: {node: '>=0.4.0'}
dev: true
@@ -12679,8 +12944,8 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /foreground-child@3.1.1:
- resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ /foreground-child@3.2.1:
+ resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
engines: {node: '>=14'}
dependencies:
cross-spawn: 7.0.3
@@ -12700,7 +12965,7 @@ packages:
vue-template-compiler:
optional: true
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
'@types/json-schema': 7.0.15
chalk: 4.1.2
chokidar: 3.6.0
@@ -12715,7 +12980,7 @@ packages:
semver: 7.6.2
tapable: 1.1.3
typescript: 5.4.3
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/fork-ts-checker-webpack-plugin@8.0.0(typescript@5.4.3)(webpack@5.91.0):
resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==}
@@ -12724,7 +12989,7 @@ packages:
typescript: '>3.6.0'
webpack: ^5.11.0
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
chalk: 4.1.2
chokidar: 3.6.0
cosmiconfig: 7.1.0
@@ -12737,7 +13002,7 @@ packages:
semver: 7.6.2
tapable: 2.2.1
typescript: 5.4.3
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
dev: true
/form-data@2.5.1:
@@ -12785,7 +13050,7 @@ packages:
react: 18.2.0
react-fast-compare: 2.0.4
tiny-warning: 1.0.3
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/forwarded@0.2.0:
@@ -12894,7 +13159,7 @@ packages:
parse-headers: 2.0.5
quick-lru: 6.1.2
web-worker: 1.3.0
- xml-utils: 1.8.0
+ xml-utils: 1.10.1
zstddec: 0.1.0
dev: false
@@ -12972,7 +13237,7 @@ packages:
consola: 3.2.3
defu: 6.1.4
node-fetch-native: 1.6.4
- nypm: 0.3.8
+ nypm: 0.3.9
ohash: 1.1.3
pathe: 1.1.2
tar: 6.2.1
@@ -12997,15 +13262,15 @@ packages:
/glob-to-regexp@0.4.1:
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
- /glob@10.4.1:
- resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==}
- engines: {node: '>=16 || 14 >=14.18'}
+ /glob@10.4.5:
+ resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
dependencies:
- foreground-child: 3.1.1
- jackspeak: 3.1.2
- minimatch: 9.0.4
+ foreground-child: 3.2.1
+ jackspeak: 3.4.3
+ minimatch: 9.0.5
minipass: 7.1.2
+ package-json-from-dist: 1.0.0
path-scurry: 1.11.1
/glob@7.2.3:
@@ -13068,8 +13333,8 @@ packages:
merge2: 1.4.1
slash: 3.0.0
- /globby@14.0.1:
- resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==}
+ /globby@14.0.2:
+ resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==}
engines: {node: '>=18'}
dependencies:
'@sindresorhus/merge-streams': 2.3.0
@@ -13096,14 +13361,14 @@ packages:
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
- /graphql-request@6.1.0(graphql@16.8.1):
+ /graphql-request@6.1.0(graphql@16.9.0):
resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==}
peerDependencies:
graphql: 14 - 16
dependencies:
- '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1)
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.9.0)
cross-fetch: 3.1.8
- graphql: 16.8.1
+ graphql: 16.9.0
transitivePeerDependencies:
- encoding
dev: false
@@ -13115,7 +13380,7 @@ packages:
graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
dependencies:
graphql: 16.8.1
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/graphql@16.8.1:
@@ -13123,6 +13388,11 @@ packages:
engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
dev: false
+ /graphql@16.9.0:
+ resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==}
+ engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
+ dev: false
+
/gunzip-maybe@1.4.2:
resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==}
hasBin: true
@@ -13154,7 +13424,7 @@ packages:
source-map: 0.6.1
wordwrap: 1.0.0
optionalDependencies:
- uglify-js: 3.17.4
+ uglify-js: 3.18.0
dev: true
/harmony-reflect@1.6.2:
@@ -13250,7 +13520,7 @@ packages:
/history@4.10.1:
resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
loose-envify: 1.4.0
resolve-pathname: 3.0.0
tiny-invariant: 1.3.3
@@ -13310,7 +13580,7 @@ packages:
he: 1.2.0
param-case: 3.0.4
relateurl: 0.2.7
- terser: 5.31.0
+ terser: 5.31.2
/html-tags@3.3.1:
resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
@@ -13334,7 +13604,7 @@ packages:
lodash: 4.17.21
pretty-error: 4.0.0
tapable: 2.2.1
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/html2canvas@1.4.1:
resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==}
@@ -13405,7 +13675,7 @@ packages:
dependencies:
'@tootallnate/once': 1.1.2
agent-base: 6.0.2
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
@@ -13442,7 +13712,7 @@ packages:
engines: {node: '>= 6'}
dependencies:
agent-base: 6.0.2
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
@@ -13466,8 +13736,8 @@ packages:
hasBin: true
dev: true
- /hyphenate-style-name@1.0.5:
- resolution: {integrity: sha512-fedL7PRwmeVkgyhu9hLeTBaI6wcGk7JGJswdaRsa5aUbkXI1kr1xZwTPBtaYPpwf56878iDek6VbVnuWMebJmw==}
+ /hyphenate-style-name@1.1.0:
+ resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==}
/iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
@@ -13481,13 +13751,13 @@ packages:
dependencies:
safer-buffer: 2.1.2
- /icss-utils@5.1.0(postcss@8.4.38):
+ /icss-utils@5.1.0(postcss@8.4.39):
resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.1.0
dependencies:
- postcss: 8.4.38
+ postcss: 8.4.39
/idb@7.1.1:
resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==}
@@ -13564,11 +13834,10 @@ packages:
resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
dev: false
- /inline-style-prefixer@7.0.0:
- resolution: {integrity: sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ==}
+ /inline-style-prefixer@7.0.1:
+ resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==}
dependencies:
css-in-js-utils: 3.1.0
- fast-loops: 1.1.3
dev: false
/internal-slot@1.0.7:
@@ -13584,10 +13853,6 @@ packages:
dependencies:
loose-envify: 1.4.0
- /ip@2.0.1:
- resolution: {integrity: sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==}
- dev: true
-
/ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
@@ -13614,7 +13879,6 @@ packages:
dependencies:
call-bind: 1.0.7
has-tostringtag: 1.0.2
- dev: true
/is-array-buffer@3.0.4:
resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
@@ -13685,8 +13949,9 @@ packages:
rgba-regex: 1.0.0
dev: true
- /is-core-module@2.13.1:
- resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+ /is-core-module@2.14.0:
+ resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==}
+ engines: {node: '>= 0.4'}
dependencies:
hasown: 2.0.2
@@ -14006,8 +14271,8 @@ packages:
resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
engines: {node: '>=8'}
dependencies:
- '@babel/core': 7.24.5
- '@babel/parser': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/parser': 7.24.7
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 6.3.1
@@ -14026,7 +14291,7 @@ packages:
resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
engines: {node: '>=10'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
istanbul-lib-coverage: 3.2.2
source-map: 0.6.1
transitivePeerDependencies:
@@ -14052,9 +14317,8 @@ packages:
reflect.getprototypeof: 1.0.6
set-function-name: 2.0.2
- /jackspeak@3.1.2:
- resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==}
- engines: {node: '>=14'}
+ /jackspeak@3.4.3:
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
dependencies:
'@isaacs/cliui': 8.0.2
optionalDependencies:
@@ -14156,10 +14420,10 @@ packages:
ts-node:
optional: true
dependencies:
- '@babel/core': 7.24.5
+ '@babel/core': 7.22.5
'@jest/test-sequencer': 27.5.1
'@jest/types': 27.5.1
- babel-jest: 27.5.1(@babel/core@7.24.5)
+ babel-jest: 27.5.1(@babel/core@7.22.5)
chalk: 4.1.2
ci-info: 3.9.0
deepmerge: 4.3.1
@@ -14378,7 +14642,7 @@ packages:
resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
'@jest/types': 27.5.1
'@types/stack-utils': 2.0.3
chalk: 4.1.2
@@ -14392,7 +14656,7 @@ packages:
resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==}
engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
'@jest/types': 28.1.3
'@types/stack-utils': 2.0.3
chalk: 4.1.2
@@ -14542,16 +14806,16 @@ packages:
resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
dependencies:
- '@babel/core': 7.24.5
- '@babel/generator': 7.24.5
- '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5)
- '@babel/traverse': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/generator': 7.24.7
+ '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.22.5)
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
'@jest/transform': 27.5.1
'@jest/types': 27.5.1
'@types/babel__traverse': 7.20.6
'@types/prettier': 2.7.3
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5)
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5)
chalk: 4.1.2
expect: 27.5.1
graceful-fs: 4.2.11
@@ -14718,8 +14982,8 @@ packages:
- ts-node
- utf-8-validate
- /jiti@1.21.0:
- resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
+ /jiti@1.21.6:
+ resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
/js-beautify@1.15.1:
@@ -14729,7 +14993,7 @@ packages:
dependencies:
config-chain: 1.1.13
editorconfig: 1.0.4
- glob: 10.4.1
+ glob: 10.4.5
js-cookie: 3.0.5
nopt: 7.2.1
dev: true
@@ -14767,32 +15031,32 @@ packages:
'@babel/preset-env':
optional: true
dependencies:
- '@babel/core': 7.24.5
- '@babel/parser': 7.24.5
- '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7)
'@babel/preset-env': 7.22.6(@babel/core@7.22.5)
- '@babel/preset-flow': 7.24.1(@babel/core@7.24.5)
- '@babel/preset-typescript': 7.23.3(@babel/core@7.24.5)
- '@babel/register': 7.23.7(@babel/core@7.24.5)
- babel-core: 7.0.0-bridge.0(@babel/core@7.24.5)
+ '@babel/preset-flow': 7.24.7(@babel/core@7.24.7)
+ '@babel/preset-typescript': 7.23.3(@babel/core@7.24.7)
+ '@babel/register': 7.24.6(@babel/core@7.24.7)
+ babel-core: 7.0.0-bridge.0(@babel/core@7.24.7)
chalk: 4.1.2
- flow-parser: 0.236.0
+ flow-parser: 0.239.1
graceful-fs: 4.2.11
micromatch: 4.0.7
neo-async: 2.6.2
node-dir: 0.1.17
- recast: 0.23.7
+ recast: 0.23.9
temp: 0.8.4
write-file-atomic: 2.4.3
transitivePeerDependencies:
- supports-color
dev: true
- /jscodeshift@0.15.2(@babel/preset-env@7.24.5):
+ /jscodeshift@0.15.2(@babel/preset-env@7.24.7):
resolution: {integrity: sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==}
hasBin: true
peerDependencies:
@@ -14801,25 +15065,25 @@ packages:
'@babel/preset-env':
optional: true
dependencies:
- '@babel/core': 7.24.5
- '@babel/parser': 7.24.5
- '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5)
- '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5)
- '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5)
- '@babel/preset-env': 7.24.5(@babel/core@7.24.5)
- '@babel/preset-flow': 7.24.1(@babel/core@7.24.5)
- '@babel/preset-typescript': 7.23.3(@babel/core@7.24.5)
- '@babel/register': 7.23.7(@babel/core@7.24.5)
- babel-core: 7.0.0-bridge.0(@babel/core@7.24.5)
+ '@babel/core': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-modules-commonjs': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-optional-chaining': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.7)
+ '@babel/preset-env': 7.24.7(@babel/core@7.24.7)
+ '@babel/preset-flow': 7.24.7(@babel/core@7.24.7)
+ '@babel/preset-typescript': 7.23.3(@babel/core@7.24.7)
+ '@babel/register': 7.24.6(@babel/core@7.24.7)
+ babel-core: 7.0.0-bridge.0(@babel/core@7.24.7)
chalk: 4.1.2
- flow-parser: 0.236.0
+ flow-parser: 0.239.1
graceful-fs: 4.2.11
micromatch: 4.0.7
neo-async: 2.6.2
node-dir: 0.1.17
- recast: 0.23.7
+ recast: 0.23.9
temp: 0.8.4
write-file-atomic: 2.4.3
transitivePeerDependencies:
@@ -14836,7 +15100,7 @@ packages:
optional: true
dependencies:
abab: 2.0.6
- acorn: 8.11.3
+ acorn: 8.12.1
acorn-globals: 6.0.0
cssom: 0.4.4
cssstyle: 2.3.0
@@ -14860,7 +15124,7 @@ packages:
whatwg-encoding: 1.0.5
whatwg-mimetype: 2.3.0
whatwg-url: 8.7.0
- ws: 7.5.9
+ ws: 7.5.10
xml-name-validator: 3.0.0
transitivePeerDependencies:
- bufferutil
@@ -14882,24 +15146,23 @@ packages:
/json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
- /json-schema-to-typescript@14.0.4:
- resolution: {integrity: sha512-covPOp3hrbD+oEcMvDxP5Rh6xNZj7lOTZkXAeQoDyu1PuEl1A6oRZ3Sy05HN11vXXmdJ6gLh5P3Qz0mgMPTzzw==}
+ /json-schema-to-typescript@14.1.0:
+ resolution: {integrity: sha512-VIeAFQkn88gFh26MSHWG4uX7TjK/arTw0NVLMZn6vX1WrSF+P6xu5MyEdovu+9PJ0uiS5gm0wzwQvYW9eSq1uw==}
engines: {node: '>=16.0.0'}
hasBin: true
dependencies:
- '@apidevtools/json-schema-ref-parser': 11.6.2
+ '@apidevtools/json-schema-ref-parser': 11.6.4
'@types/json-schema': 7.0.15
- '@types/lodash': 4.17.4
+ '@types/lodash': 4.17.6
cli-color: 2.0.4
- glob: 10.4.1
+ glob: 10.4.5
is-glob: 4.0.3
js-yaml: 4.1.0
lodash: 4.17.21
minimist: 1.2.8
mkdirp: 3.0.1
- mz: 2.7.0
node-fetch: 3.3.2
- prettier: 3.2.5
+ prettier: 3.3.2
dev: false
/json-schema-traverse@0.4.1:
@@ -14950,43 +15213,43 @@ packages:
/jspdf@2.5.1:
resolution: {integrity: sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
atob: 2.1.2
btoa: 1.2.1
fflate: 0.4.8
optionalDependencies:
canvg: 3.0.10
core-js: 3.31.0
- dompurify: 2.5.4
+ dompurify: 2.5.6
html2canvas: 1.4.1
dev: false
/jss-plugin-camel-case@10.10.0:
resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==}
dependencies:
- '@babel/runtime': 7.24.5
- hyphenate-style-name: 1.0.5
+ '@babel/runtime': 7.24.7
+ hyphenate-style-name: 1.1.0
jss: 10.10.0
dev: true
/jss-plugin-default-unit@10.10.0:
resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
jss: 10.10.0
dev: true
/jss-plugin-global@10.10.0:
resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
jss: 10.10.0
dev: true
/jss-plugin-nested@10.10.0:
resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
jss: 10.10.0
tiny-warning: 1.0.3
dev: true
@@ -14994,14 +15257,14 @@ packages:
/jss-plugin-props-sort@10.10.0:
resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
jss: 10.10.0
dev: true
/jss-plugin-rule-value-function@10.10.0:
resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
jss: 10.10.0
tiny-warning: 1.0.3
dev: true
@@ -15009,7 +15272,7 @@ packages:
/jss-plugin-vendor-prefixer@10.10.0:
resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
css-vendor: 2.0.8
jss: 10.10.0
dev: true
@@ -15017,12 +15280,17 @@ packages:
/jss@10.10.0:
resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
csstype: 3.1.3
is-in-browser: 1.1.3
tiny-warning: 1.0.3
dev: true
+ /jsts@2.7.1:
+ resolution: {integrity: sha512-x2wSZHEBK20CY+Wy+BPE7MrFQHW6sIsdaGUMEqmGAio+3gFzQaBYPwLRonUfQf9Ak8pBieqj9tUofX1+WtAEIg==}
+ engines: {node: '>= 12'}
+ dev: false
+
/jsx-ast-utils@3.3.5:
resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
engines: {node: '>=4.0'}
@@ -15085,8 +15353,8 @@ packages:
dependencies:
language-subtag-registry: 0.3.23
- /launch-editor@2.6.1:
- resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==}
+ /launch-editor@2.8.0:
+ resolution: {integrity: sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==}
dependencies:
picocolors: 1.0.1
shell-quote: 1.8.1
@@ -15132,8 +15400,8 @@ packages:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
- /lilconfig@3.1.1:
- resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==}
+ /lilconfig@3.1.2:
+ resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
engines: {node: '>=14'}
/lines-and-columns@1.2.4:
@@ -15157,16 +15425,16 @@ packages:
chalk: 5.2.0
cli-truncate: 3.1.0
commander: 10.0.1
- debug: 4.3.4
+ debug: 4.3.5
execa: 7.2.0
lilconfig: 2.1.0
listr2: 5.0.8
micromatch: 4.0.7
normalize-path: 3.0.0
- object-inspect: 1.13.1
+ object-inspect: 1.13.2
pidtree: 0.6.0
string-argv: 0.3.2
- yaml: 2.4.2
+ yaml: 2.4.5
transitivePeerDependencies:
- enquirer
- supports-color
@@ -15185,32 +15453,32 @@ packages:
colorette: 2.0.20
log-update: 4.0.0
p-map: 4.0.0
- rfdc: 1.3.1
+ rfdc: 1.4.1
rxjs: 7.8.1
through: 2.3.8
wrap-ansi: 7.0.0
dev: true
- /lit-element@4.0.5:
- resolution: {integrity: sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==}
+ /lit-element@4.0.6:
+ resolution: {integrity: sha512-U4sdJ3CSQip7sLGZ/uJskO5hGiqtlpxndsLr6mt3IQIjheg93UKYeGQjWMRql1s/cXNOaRrCzC2FQwjIwSUqkg==}
dependencies:
'@lit-labs/ssr-dom-shim': 1.2.0
'@lit/reactive-element': 2.0.4
- lit-html: 3.1.3
+ lit-html: 3.1.4
dev: false
- /lit-html@3.1.3:
- resolution: {integrity: sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==}
+ /lit-html@3.1.4:
+ resolution: {integrity: sha512-yKKO2uVv7zYFHlWMfZmqc+4hkmSbFp8jgjdZY9vvR9jr4J8fH6FUMXhr+ljfELgmjpvlF7Z1SJ5n5/Jeqtc9YA==}
dependencies:
'@types/trusted-types': 2.0.7
dev: false
- /lit@3.1.3:
- resolution: {integrity: sha512-l4slfspEsnCcHVRTvaP7YnkTZEZggNFywLEIhQaGhYDczG+tu/vlgm/KaWIEjIp+ZyV20r2JnZctMb8LeLCG7Q==}
+ /lit@3.1.4:
+ resolution: {integrity: sha512-q6qKnKXHy2g1kjBaNfcoLlgbI3+aSOZ9Q4tiGa9bGYXq5RBXxkVTqTIVmP2VWMp29L4GyvCFm8ZQ2o56eUAMyA==}
dependencies:
'@lit/reactive-element': 2.0.4
- lit-element: 4.0.5
- lit-html: 3.1.3
+ lit-element: 4.0.6
+ lit-html: 3.1.4
dev: false
/loader-runner@4.3.0:
@@ -15225,8 +15493,8 @@ packages:
emojis-list: 3.0.0
json5: 2.2.3
- /loader-utils@3.2.1:
- resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==}
+ /loader-utils@3.3.1:
+ resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==}
engines: {node: '>= 12.13.0'}
/locate-path@3.0.0:
@@ -15311,11 +15579,10 @@ packages:
/lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
- /lru-cache@10.2.2:
- resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
- engines: {node: 14 || >=16.14}
+ /lru-cache@10.4.3:
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
/lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -15341,7 +15608,7 @@ packages:
/magic-string@0.30.10:
resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
dependencies:
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.0
dev: true
/make-dir@2.1.0:
@@ -15419,8 +15686,8 @@ packages:
react: 18.2.0
dev: true
- /marked@12.0.2:
- resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==}
+ /marked@13.0.2:
+ resolution: {integrity: sha512-J6CPjP8pS5sgrRqxVRvkCIkZ6MFdRIjDkwUwgJ9nL2fbmM6qGQeB2C16hi8Cc9BOzj6xXzy0jyi0iPIfnMHYzA==}
engines: {node: '>= 18'}
hasBin: true
dev: false
@@ -15433,7 +15700,7 @@ packages:
engines: {node: '>= 14'}
hasBin: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
complex.js: 2.1.1
decimal.js: 10.4.3
escape-latex: 1.2.0
@@ -15441,7 +15708,7 @@ packages:
javascript-natural-sort: 0.7.1
seedrandom: 3.0.5
tiny-emitter: 2.1.0
- typed-function: 4.1.1
+ typed-function: 4.2.1
dev: false
/mdast-util-definitions@4.0.0:
@@ -15524,9 +15791,9 @@ packages:
resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
dev: false
- /memoizee@0.4.16:
- resolution: {integrity: sha512-eOxQqGfogqdcQ2jeyLgsTp91bFOdbjaiJ1P0ZeDt1HHT1+ektm2u+raWDytppt8SMZ1fP2sIWlTbZukHhMKhiQ==}
- engines: {node: '>=.0.12'}
+ /memoizee@0.4.17:
+ resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==}
+ engines: {node: '>=0.12'}
dependencies:
d: 1.0.2
es5-ext: 0.10.64
@@ -15535,7 +15802,7 @@ packages:
is-promise: 2.2.2
lru-queue: 0.1.0
next-tick: 1.1.0
- timers-ext: 0.1.7
+ timers-ext: 0.1.8
dev: false
/memoizerific@1.11.3:
@@ -15717,7 +15984,7 @@ packages:
resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==}
dependencies:
'@types/debug': 4.1.12
- debug: 4.3.4
+ debug: 4.3.5
decode-named-character-reference: 1.0.2
micromark-core-commonmark: 1.1.0
micromark-factory-space: 1.1.0
@@ -15743,7 +16010,7 @@ packages:
dependencies:
arr-diff: 4.0.0
array-unique: 0.3.2
- braces: 2.3.2
+ braces: 3.0.3
define-property: 2.0.2
extend-shallow: 3.0.2
extglob: 2.0.4
@@ -15808,7 +16075,7 @@ packages:
dependencies:
schema-utils: 4.2.0
tapable: 2.2.1
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/minimalistic-assert@1.0.1:
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
@@ -15831,8 +16098,8 @@ packages:
brace-expansion: 2.0.1
dev: true
- /minimatch@9.0.4:
- resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
+ /minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.1
@@ -15893,6 +16160,15 @@ packages:
hasBin: true
dev: false
+ /mlly@1.7.1:
+ resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==}
+ dependencies:
+ acorn: 8.12.1
+ pathe: 1.1.2
+ pkg-types: 1.1.3
+ ufo: 1.5.3
+ dev: true
+
/mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
@@ -15927,11 +16203,11 @@ packages:
react: '*'
react-dom: '*'
dependencies:
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.0
css-tree: 1.1.3
csstype: 3.1.3
fastest-stable-stringify: 2.0.2
- inline-style-prefixer: 7.0.0
+ inline-style-prefixer: 7.0.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
rtl-css-js: 1.16.1
@@ -16023,7 +16299,7 @@ packages:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
dependencies:
lower-case: 2.0.2
- tslib: 2.6.2
+ tslib: 2.6.3
/node-abort-controller@3.1.1:
resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==}
@@ -16146,8 +16422,8 @@ packages:
/nwsapi@2.2.10:
resolution: {integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==}
- /nypm@0.3.8:
- resolution: {integrity: sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==}
+ /nypm@0.3.9:
+ resolution: {integrity: sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==}
engines: {node: ^14.16.0 || >=16.10.0}
hasBin: true
dependencies:
@@ -16155,6 +16431,7 @@ packages:
consola: 3.2.3
execa: 8.0.1
pathe: 1.1.2
+ pkg-types: 1.1.3
ufo: 1.5.3
dev: true
@@ -16175,8 +16452,9 @@ packages:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
- /object-inspect@1.13.1:
- resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+ /object-inspect@1.13.2:
+ resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+ engines: {node: '>= 0.4'}
/object-is@1.1.6:
resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
@@ -16184,7 +16462,6 @@ packages:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
- dev: true
/object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
@@ -16277,26 +16554,26 @@ packages:
resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==}
dev: true
- /ol-ext@4.0.18(ol@9.2.3):
- resolution: {integrity: sha512-zzeTAoCg9IocaM7LlXiLNnVCgVmfxxLzlDTWvYn3Y2gFxtICHSfRrIQl/8vumgBjftBksVl1Fds8P5uFReTmew==}
+ /ol-ext@4.0.19(ol@9.2.4):
+ resolution: {integrity: sha512-QMhmys/ux7eYKZFtca6CeK+l9YgZb5yL5hHFJLKkiObw/qz6xKu+gy+SSnF/QyvJbfAJDleuFHf2mqkYqC9hZQ==}
peerDependencies:
ol: '>= 5.3.0'
dependencies:
- ol: 9.2.3
+ ol: 9.2.4
dev: false
- /ol-mapbox-style@12.3.2(ol@9.2.3):
- resolution: {integrity: sha512-Qw9I6+WHz9zBsLNm8zWWb707Y/hXrQP1fcwK86pxcX/FklwyDxAhfJAdTkINHncZ331CBEWcqvi2tzoN23dgwg==}
+ /ol-mapbox-style@12.3.4(ol@9.2.4):
+ resolution: {integrity: sha512-TxGJZw4hmvc6n5dHSyAE8ZpgALJ6hVG5Q9yl0j2Q1KmLS9iq4wMpb383TAitWiG86SvJV4oDkWMGkyyMLfVyew==}
peerDependencies:
ol: '*'
dependencies:
'@mapbox/mapbox-gl-style-spec': 13.28.0
mapbox-to-css-font: 2.4.4
- ol: 9.2.3
+ ol: 9.2.4
dev: false
- /ol@9.2.3:
- resolution: {integrity: sha512-zxCgrVUU9DWZZSa7eW2ukU6gp1ugX0K5bF+Gwuh/RKa2sQLdwOrIRjLt4NYAdM7jpHOdW1FaT68E8tosE/DC1g==}
+ /ol@9.2.4:
+ resolution: {integrity: sha512-bsbu4ObaAlbELMIZWnYEvX4Z9jO+OyCBshtODhDKmqYTPEfnKOX3RieCr97tpJkqWTZvyV4tS9UQDvHoCdxS+A==}
dependencies:
color-rgba: 3.0.0
color-space: 2.0.1
@@ -16348,7 +16625,7 @@ packages:
'@wry/caches': 1.0.1
'@wry/context': 0.7.4
'@wry/trie': 0.4.3
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/optionator@0.8.3:
@@ -16417,7 +16694,7 @@ packages:
resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
- yocto-queue: 1.0.0
+ yocto-queue: 1.1.1
dev: true
/p-locate@3.0.0:
@@ -16463,6 +16740,9 @@ packages:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
+ /package-json-from-dist@1.0.0:
+ resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
+
/pako@0.2.9:
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
dev: true
@@ -16479,7 +16759,7 @@ packages:
resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
dependencies:
dot-case: 3.0.4
- tslib: 2.6.2
+ tslib: 2.6.3
/parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
@@ -16495,7 +16775,7 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@@ -16524,7 +16804,7 @@ packages:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
dependencies:
no-case: 3.0.4
- tslib: 2.6.2
+ tslib: 2.6.3
/pascalcase@0.1.1:
resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
@@ -16573,7 +16853,7 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
dependencies:
- lru-cache: 10.2.2
+ lru-cache: 10.4.3
minipass: 7.1.2
/path-to-regexp@0.1.7:
@@ -16664,6 +16944,14 @@ packages:
find-up: 6.3.0
dev: true
+ /pkg-types@1.1.3:
+ resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==}
+ dependencies:
+ confbox: 0.1.7
+ mlly: 1.7.1
+ pathe: 1.1.2
+ dev: true
+
/pkg-up@3.1.0:
resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==}
engines: {node: '>=8'}
@@ -16683,7 +16971,7 @@ packages:
resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==}
engines: {node: '>=10'}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dev: true
/polygon-clipping@0.15.7:
@@ -16715,25 +17003,25 @@ packages:
resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
- /postcss-browser-comments@4.0.0(browserslist@4.23.0)(postcss@8.4.32):
+ /postcss-browser-comments@4.0.0(browserslist@4.23.2)(postcss@8.4.32):
resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==}
engines: {node: '>=8'}
peerDependencies:
browserslist: '>=4'
- postcss: '>=8.4.31'
+ postcss: '>=8'
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
postcss: 8.4.32
/postcss-calc@8.2.4(postcss@8.4.32):
resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.2
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -16743,7 +17031,7 @@ packages:
resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==}
engines: {node: '>=7.6.0'}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4.6
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16752,7 +17040,7 @@ packages:
resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16761,7 +17049,7 @@ packages:
resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16770,7 +17058,7 @@ packages:
resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16779,9 +17067,9 @@ packages:
resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
caniuse-api: 3.0.0
colord: 2.9.3
postcss: 8.4.32
@@ -16791,9 +17079,9 @@ packages:
resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16801,7 +17089,7 @@ packages:
resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.3
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16810,7 +17098,7 @@ packages:
resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16819,7 +17107,7 @@ packages:
resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.3
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -16828,7 +17116,7 @@ packages:
resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -16837,7 +17125,7 @@ packages:
resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
@@ -16845,7 +17133,7 @@ packages:
resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
@@ -16853,7 +17141,7 @@ packages:
resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
@@ -16861,7 +17149,7 @@ packages:
resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
@@ -16869,7 +17157,7 @@ packages:
resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
'@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.32)
postcss: 8.4.32
@@ -16879,7 +17167,7 @@ packages:
resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16887,7 +17175,7 @@ packages:
/postcss-flexbugs-fixes@5.0.2(postcss@8.4.32):
resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.1.4
dependencies:
postcss: 8.4.32
@@ -16895,7 +17183,7 @@ packages:
resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -16904,7 +17192,7 @@ packages:
resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -16912,7 +17200,7 @@ packages:
/postcss-font-variant@5.0.0(postcss@8.4.32):
resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.1.0
dependencies:
postcss: 8.4.32
@@ -16920,7 +17208,7 @@ packages:
resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
@@ -16928,7 +17216,7 @@ packages:
resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16937,7 +17225,7 @@ packages:
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.0.0
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -16947,7 +17235,7 @@ packages:
/postcss-initial@4.0.1(postcss@8.4.32):
resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.0.0
dependencies:
postcss: 8.4.32
@@ -16955,7 +17243,7 @@ packages:
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4.21
dependencies:
camelcase-css: 2.0.1
postcss: 8.4.32
@@ -16964,7 +17252,7 @@ packages:
resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
'@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.32)
postcss: 8.4.32
@@ -16974,7 +17262,7 @@ packages:
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
engines: {node: '>= 14'}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: '>=8.0.9'
ts-node: '>=9.0.0'
peerDependenciesMeta:
postcss:
@@ -16982,28 +17270,28 @@ packages:
ts-node:
optional: true
dependencies:
- lilconfig: 3.1.1
+ lilconfig: 3.1.2
postcss: 8.4.32
- yaml: 2.4.2
+ yaml: 2.4.5
/postcss-loader@6.2.1(postcss@8.4.32)(webpack@5.91.0):
resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==}
engines: {node: '>= 12.13.0'}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^7.0.0 || ^8.0.1
webpack: ^5.0.0
dependencies:
cosmiconfig: 7.1.0
klona: 2.0.6
postcss: 8.4.32
semver: 7.6.2
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/postcss-logical@5.0.4(postcss@8.4.32):
resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.4
dependencies:
postcss: 8.4.32
@@ -17011,7 +17299,7 @@ packages:
resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==}
engines: {node: '>=10.0.0'}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.1.0
dependencies:
postcss: 8.4.32
@@ -17019,7 +17307,7 @@ packages:
resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17029,9 +17317,9 @@ packages:
resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
caniuse-api: 3.0.0
cssnano-utils: 3.1.0(postcss@8.4.32)
postcss: 8.4.32
@@ -17041,7 +17329,7 @@ packages:
resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17050,7 +17338,7 @@ packages:
resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
colord: 2.9.3
cssnano-utils: 3.1.0(postcss@8.4.32)
@@ -17061,9 +17349,9 @@ packages:
resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
cssnano-utils: 3.1.0(postcss@8.4.32)
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17072,53 +17360,53 @@ packages:
resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
- /postcss-modules-extract-imports@3.1.0(postcss@8.4.38):
+ /postcss-modules-extract-imports@3.1.0(postcss@8.4.39):
resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.1.0
dependencies:
- postcss: 8.4.38
+ postcss: 8.4.39
- /postcss-modules-local-by-default@4.0.5(postcss@8.4.38):
+ /postcss-modules-local-by-default@4.0.5(postcss@8.4.39):
resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.1.0
dependencies:
- icss-utils: 5.1.0(postcss@8.4.38)
- postcss: 8.4.38
+ icss-utils: 5.1.0(postcss@8.4.39)
+ postcss: 8.4.39
postcss-selector-parser: 6.1.0
postcss-value-parser: 4.2.0
- /postcss-modules-scope@3.2.0(postcss@8.4.38):
+ /postcss-modules-scope@3.2.0(postcss@8.4.39):
resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.1.0
dependencies:
- postcss: 8.4.38
+ postcss: 8.4.39
postcss-selector-parser: 6.1.0
- /postcss-modules-values@4.0.0(postcss@8.4.38):
+ /postcss-modules-values@4.0.0(postcss@8.4.39):
resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
engines: {node: ^10 || ^12 || >= 14}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.1.0
dependencies:
- icss-utils: 5.1.0(postcss@8.4.38)
- postcss: 8.4.38
+ icss-utils: 5.1.0(postcss@8.4.39)
+ postcss: 8.4.39
/postcss-nested@6.0.1(postcss@8.4.32):
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.14
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -17127,7 +17415,7 @@ packages:
resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
'@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.0)
postcss: 8.4.32
@@ -17137,7 +17425,7 @@ packages:
resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
@@ -17145,7 +17433,7 @@ packages:
resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17154,7 +17442,7 @@ packages:
resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17163,7 +17451,7 @@ packages:
resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17172,7 +17460,7 @@ packages:
resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17181,7 +17469,7 @@ packages:
resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17190,9 +17478,9 @@ packages:
resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17200,7 +17488,7 @@ packages:
resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
normalize-url: 6.1.0
postcss: 8.4.32
@@ -17210,29 +17498,29 @@ packages:
resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
- /postcss-normalize@10.0.1(browserslist@4.23.0)(postcss@8.4.32):
+ /postcss-normalize@10.0.1(browserslist@4.23.2)(postcss@8.4.32):
resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==}
engines: {node: '>= 12'}
peerDependencies:
browserslist: '>= 4'
- postcss: '>=8.4.31'
+ postcss: '>= 8'
dependencies:
'@csstools/normalize.css': 12.1.1
- browserslist: 4.23.0
+ browserslist: 4.23.2
postcss: 8.4.32
- postcss-browser-comments: 4.0.0(browserslist@4.23.0)(postcss@8.4.32)
+ postcss-browser-comments: 4.0.0(browserslist@4.23.2)(postcss@8.4.32)
sanitize.css: 13.0.0
/postcss-opacity-percentage@1.1.3(postcss@8.4.32):
resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
@@ -17240,7 +17528,7 @@ packages:
resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
cssnano-utils: 3.1.0(postcss@8.4.32)
postcss: 8.4.32
@@ -17250,7 +17538,7 @@ packages:
resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17258,7 +17546,7 @@ packages:
/postcss-page-break@3.0.4(postcss@8.4.32):
resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8
dependencies:
postcss: 8.4.32
@@ -17266,7 +17554,7 @@ packages:
resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17275,7 +17563,7 @@ packages:
resolution: {integrity: sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
'@csstools/postcss-cascade-layers': 1.1.1(postcss@8.4.32)
'@csstools/postcss-color-function': 1.1.1(postcss@8.4.32)
@@ -17292,7 +17580,7 @@ packages:
'@csstools/postcss-trigonometric-functions': 1.0.2(postcss@8.4.32)
'@csstools/postcss-unset-value': 1.0.2(postcss@8.4.32)
autoprefixer: 10.4.16(postcss@8.4.32)
- browserslist: 4.23.0
+ browserslist: 4.23.2
css-blank-pseudo: 3.0.3(postcss@8.4.32)
css-has-pseudo: 3.0.4(postcss@8.4.32)
css-prefers-color-scheme: 6.0.3(postcss@8.4.32)
@@ -17332,7 +17620,7 @@ packages:
resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -17341,9 +17629,9 @@ packages:
resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
caniuse-api: 3.0.0
postcss: 8.4.32
@@ -17351,7 +17639,7 @@ packages:
resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17359,7 +17647,7 @@ packages:
/postcss-replace-overflow-wrap@4.0.0(postcss@8.4.32):
resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.0.3
dependencies:
postcss: 8.4.32
@@ -17367,7 +17655,7 @@ packages:
resolution: {integrity: sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==}
engines: {node: ^12 || ^14 || >=16}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -17383,7 +17671,7 @@ packages:
resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-value-parser: 4.2.0
@@ -17393,7 +17681,7 @@ packages:
resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -17409,8 +17697,8 @@ packages:
picocolors: 1.0.1
source-map-js: 1.2.0
- /postcss@8.4.38:
- resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
+ /postcss@8.4.39:
+ resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
@@ -17436,8 +17724,8 @@ packages:
hasBin: true
dev: true
- /prettier@3.2.5:
- resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==}
+ /prettier@3.3.2:
+ resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==}
engines: {node: '>=14'}
hasBin: true
@@ -17549,7 +17837,7 @@ packages:
/prosemirror-commands@1.5.2:
resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==}
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
prosemirror-state: 1.4.3
prosemirror-transform: 1.9.0
dev: false
@@ -17559,24 +17847,24 @@ packages:
dependencies:
prosemirror-state: 1.4.3
prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-view: 1.33.8
dev: false
/prosemirror-gapcursor@1.3.2:
resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==}
dependencies:
prosemirror-keymap: 1.2.2
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
prosemirror-state: 1.4.3
- prosemirror-view: 1.33.6
+ prosemirror-view: 1.33.8
dev: false
- /prosemirror-history@1.4.0:
- resolution: {integrity: sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==}
+ /prosemirror-history@1.4.1:
+ resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==}
dependencies:
prosemirror-state: 1.4.3
prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-view: 1.33.8
rope-sequence: 1.3.4
dev: false
@@ -17598,7 +17886,7 @@ packages:
resolution: {integrity: sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==}
dependencies:
markdown-it: 14.1.0
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
dev: false
/prosemirror-menu@1.2.4:
@@ -17606,12 +17894,12 @@ packages:
dependencies:
crelt: 1.0.6
prosemirror-commands: 1.5.2
- prosemirror-history: 1.4.0
+ prosemirror-history: 1.4.1
prosemirror-state: 1.4.3
dev: false
- /prosemirror-model@1.21.0:
- resolution: {integrity: sha512-zLpS1mVCZLA7VTp82P+BfMiYVPcX1/z0Mf3gsjKZtzMWubwn2pN7CceMV0DycjlgE5JeXPR7UF4hJPbBV98oWA==}
+ /prosemirror-model@1.21.3:
+ resolution: {integrity: sha512-nt2Xs/RNGepD9hrrkzXvtCm1mpGJoQfFSPktGa0BF/aav6XsnmVGZ9sTXNWRLupAz5SCLa3EyKlFeK7zJWROKg==}
dependencies:
orderedmap: 2.1.1
dev: false
@@ -17619,13 +17907,13 @@ packages:
/prosemirror-schema-basic@1.2.2:
resolution: {integrity: sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==}
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
dev: false
- /prosemirror-schema-list@1.3.0:
- resolution: {integrity: sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==}
+ /prosemirror-schema-list@1.4.0:
+ resolution: {integrity: sha512-nZOIq/AkBSzCENxUyLm5ltWE53e2PLk65ghMN8qLQptOmDVixZlPqtMeQdiNw0odL9vNpalEjl3upgRkuJ/Jyw==}
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
prosemirror-state: 1.4.3
prosemirror-transform: 1.9.0
dev: false
@@ -17633,22 +17921,22 @@ packages:
/prosemirror-state@1.4.3:
resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==}
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-view: 1.33.8
dev: false
/prosemirror-tables@1.3.7:
resolution: {integrity: sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==}
dependencies:
prosemirror-keymap: 1.2.2
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
prosemirror-state: 1.4.3
prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-view: 1.33.8
dev: false
- /prosemirror-trailing-node@2.0.8(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6):
+ /prosemirror-trailing-node@2.0.8(prosemirror-model@1.21.3)(prosemirror-state@1.4.3)(prosemirror-view@1.33.8):
resolution: {integrity: sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==}
peerDependencies:
prosemirror-model: ^1.19.0
@@ -17657,21 +17945,21 @@ packages:
dependencies:
'@remirror/core-constants': 2.0.2
escape-string-regexp: 4.0.0
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
prosemirror-state: 1.4.3
- prosemirror-view: 1.33.6
+ prosemirror-view: 1.33.8
dev: false
/prosemirror-transform@1.9.0:
resolution: {integrity: sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==}
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
dev: false
- /prosemirror-view@1.33.6:
- resolution: {integrity: sha512-zRLUNgLIQfd8IfGprsXxWTjdA8xEAFJe8cDNrOptj6Mop9sj+BMeVbJvceyAYCm5G2dOdT2prctH7K9dfnpIMw==}
+ /prosemirror-view@1.33.8:
+ resolution: {integrity: sha512-4PhMr/ufz2cdvFgpUAnZfs+0xij3RsFysreeG9V/utpwX7AJtYCDVyuRxzWoMJIEf4C7wVihuBNMPpFLPCiLQw==}
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.21.3
prosemirror-state: 1.4.3
prosemirror-transform: 1.9.0
dev: false
@@ -17740,6 +18028,10 @@ packages:
/q@1.5.1:
resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
+ deprecated: |-
+ You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.
+
+ (For a CapTP with native promises, see @endo/eventual-send and @endo/captp)
/qs@6.11.0:
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
@@ -17747,8 +18039,8 @@ packages:
dependencies:
side-channel: 1.0.6
- /qs@6.12.1:
- resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==}
+ /qs@6.12.3:
+ resolution: {integrity: sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==}
engines: {node: '>=0.6'}
dependencies:
side-channel: 1.0.6
@@ -17831,7 +18123,7 @@ packages:
peerDependencies:
react-scripts: '>=2.1.3'
dependencies:
- react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.5.7)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
+ react-scripts: 5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.6.13)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3)
semver: 5.7.2
dev: true
@@ -17850,7 +18142,7 @@ packages:
react: ^16.8.5 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.5 || ^17.0.0 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
css-box-model: 1.2.1
memoize-one: 5.2.1
raf-schd: 4.0.3
@@ -17897,9 +18189,9 @@ packages:
typescript:
optional: true
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
address: 1.2.2
- browserslist: 4.23.0
+ browserslist: 4.23.2
chalk: 4.1.2
cross-spawn: 7.0.3
detect-port-alt: 1.1.6
@@ -17912,7 +18204,7 @@ packages:
gzip-size: 6.0.0
immer: 9.0.21
is-root: 2.1.0
- loader-utils: 3.2.1
+ loader-utils: 3.3.1
open: 8.4.2
pkg-up: 3.1.0
prompts: 2.4.2
@@ -17922,7 +18214,7 @@ packages:
strip-ansi: 6.0.1
text-table: 0.2.0
typescript: 5.4.3
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
transitivePeerDependencies:
- eslint
- supports-color
@@ -17971,9 +18263,9 @@ packages:
resolution: {integrity: sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==}
engines: {node: '>=16.14.0'}
dependencies:
- '@babel/core': 7.24.5
- '@babel/traverse': 7.24.5
- '@babel/types': 7.24.5
+ '@babel/core': 7.22.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.20.6
'@types/doctrine': 0.0.9
@@ -18035,7 +18327,7 @@ packages:
peerDependencies:
react: '>=16.13.1'
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
react: 18.2.0
dev: false
@@ -18056,7 +18348,7 @@ packages:
react: ^16.6.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
invariant: 2.2.4
prop-types: 15.8.1
react: 18.2.0
@@ -18168,7 +18460,7 @@ packages:
react-native:
optional: true
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/react-redux': 7.1.33
hoist-non-react-statics: 3.3.2
loose-envify: 1.4.0
@@ -18200,7 +18492,7 @@ packages:
'@types/react': 18.2.45
react: 18.2.0
react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0)
- tslib: 2.6.2
+ tslib: 2.6.3
dev: true
/react-remove-scroll@2.5.5(@types/react@18.2.45)(react@18.2.0):
@@ -18217,12 +18509,12 @@ packages:
react: 18.2.0
react-remove-scroll-bar: 2.3.6(@types/react@18.2.45)(react@18.2.0)
react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0)
- tslib: 2.6.2
+ tslib: 2.6.3
use-callback-ref: 1.3.2(@types/react@18.2.45)(react@18.2.0)
use-sidecar: 1.1.2(@types/react@18.2.45)(react@18.2.0)
dev: true
- /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.5.7)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3):
+ /react-scripts@5.0.1(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@swc/core@1.6.13)(esbuild@0.21.3)(eslint@8.44.0)(react@18.2.0)(sass@1.71.1)(typescript@5.4.3):
resolution: {integrity: sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==}
engines: {node: '>=14.0.0'}
hasBin: true
@@ -18235,14 +18527,14 @@ packages:
optional: true
dependencies:
'@babel/core': 7.22.5
- '@pmmmwh/react-refresh-webpack-plugin': 0.5.13(react-refresh@0.11.0)(webpack-dev-server@4.15.2)(webpack@5.91.0)
+ '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.11.0)(webpack-dev-server@4.15.2)(webpack@5.91.0)
'@svgr/webpack': 5.5.0
babel-jest: 27.5.1(@babel/core@7.22.5)
babel-loader: 8.3.0(@babel/core@7.22.5)(webpack@5.91.0)
babel-plugin-named-asset-import: 0.3.8(@babel/core@7.22.5)
babel-preset-react-app: 10.0.1
bfj: 7.1.0
- browserslist: 4.23.0
+ browserslist: 4.23.2
camelcase: 6.3.0
case-sensitive-paths-webpack-plugin: 2.4.0
css-loader: 6.10.0(webpack@5.91.0)
@@ -18263,7 +18555,7 @@ packages:
postcss: 8.4.32
postcss-flexbugs-fixes: 5.0.2(postcss@8.4.32)
postcss-loader: 6.2.1(postcss@8.4.32)(webpack@5.91.0)
- postcss-normalize: 10.0.1(browserslist@4.23.0)(postcss@8.4.32)
+ postcss-normalize: 10.0.1(browserslist@4.23.2)(postcss@8.4.32)
postcss-preset-env: 7.8.3(postcss@8.4.32)
prompts: 2.4.2
react: 18.2.0
@@ -18276,10 +18568,10 @@ packages:
semver: 7.6.2
source-map-loader: 3.0.2(webpack@5.91.0)
style-loader: 3.3.4(webpack@5.91.0)
- tailwindcss: 3.4.3
- terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(esbuild@0.21.3)(webpack@5.91.0)
+ tailwindcss: 3.4.4
+ terser-webpack-plugin: 5.3.10(@swc/core@1.6.13)(esbuild@0.21.3)(webpack@5.91.0)
typescript: 5.4.3
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
webpack-dev-server: 4.15.2(webpack@5.91.0)
webpack-manifest-plugin: 4.1.1(webpack@5.91.0)
workbox-webpack-plugin: 6.6.0(webpack@5.91.0)
@@ -18333,7 +18625,7 @@ packages:
get-nonce: 1.0.1
invariant: 2.2.4
react: 18.2.0
- tslib: 2.6.2
+ tslib: 2.6.3
dev: true
/react-textarea-autosize@6.1.0(react@18.2.0):
@@ -18362,7 +18654,7 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -18375,7 +18667,7 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
@@ -18383,18 +18675,18 @@ packages:
react-dom: 18.3.1(react@18.3.1)
dev: false
- /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.2):
+ /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.3):
resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==}
peerDependencies:
react: '*'
tslib: '*'
dependencies:
react: 18.2.0
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
- /react-use@17.4.2(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-1jPtmWLD8OJJNYCdYLJEH/HM+bPDfJuyGwCYeJFgPmWY8ttwpgZnW5QnzgM55CYUByUiTjHxsGOnEpLl6yQaoQ==}
+ /react-use@17.5.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-PbfwSPMwp/hoL847rLnm/qkjg3sTRCvn6YhUZiHaUa3FA6/aNoFX79ul5Xt70O1rK+9GxSVqkY0eTwMdsR/bWg==}
peerDependencies:
react: '*'
react-dom: '*'
@@ -18408,13 +18700,13 @@ packages:
nano-css: 5.6.1(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- react-universal-interface: 0.6.2(react@18.2.0)(tslib@2.6.2)
+ react-universal-interface: 0.6.2(react@18.2.0)(tslib@2.6.3)
resize-observer-polyfill: 1.5.1
screenfull: 5.2.0
set-harmonic-interval: 1.0.1
throttle-debounce: 3.0.1
ts-easing: 0.2.0
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
/react@18.2.0:
@@ -18496,15 +18788,15 @@ packages:
dependencies:
picomatch: 2.3.1
- /recast@0.23.7:
- resolution: {integrity: sha512-MpQlLZVpqbbxYcqEjwpRWo88sGvjOYoXptySz710RuddNMHx+wPkoNX6YyLZJlXAh5VZr1qmPrTwcTuFMh0Lag==}
+ /recast@0.23.9:
+ resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==}
engines: {node: '>= 4'}
dependencies:
ast-types: 0.16.1
esprima: 4.0.1
source-map: 0.6.1
tiny-invariant: 1.3.3
- tslib: 2.6.2
+ tslib: 2.6.3
dev: true
/reconnecting-websocket@4.4.0:
@@ -18528,7 +18820,7 @@ packages:
/redux@4.2.1:
resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dev: false
/reflect.getprototypeof@1.0.6:
@@ -18565,7 +18857,7 @@ packages:
/regenerator-transform@0.15.2:
resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
/regex-not@1.0.2:
resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
@@ -18658,16 +18950,6 @@ packages:
lodash: 4.17.21
strip-ansi: 6.0.1
- /repeat-element@1.1.4:
- resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /repeat-string@1.6.1:
- resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
- engines: {node: '>=0.10'}
- dev: true
-
/require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -18742,7 +19024,7 @@ packages:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
dependencies:
- is-core-module: 2.13.1
+ is-core-module: 2.14.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -18750,7 +19032,7 @@ packages:
resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
hasBin: true
dependencies:
- is-core-module: 2.13.1
+ is-core-module: 2.14.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
@@ -18780,8 +19062,8 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- /rfdc@1.3.1:
- resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==}
+ /rfdc@1.4.1:
+ resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
dev: true
/rgb-hex@3.0.0:
@@ -18800,7 +19082,6 @@ packages:
/rgbcolor@1.0.1:
resolution: {integrity: sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==}
engines: {node: '>= 0.8.15'}
- requiresBuild: true
dev: false
optional: true
@@ -18829,11 +19110,11 @@ packages:
peerDependencies:
rollup: ^2.0.0
dependencies:
- '@babel/code-frame': 7.24.2
+ '@babel/code-frame': 7.24.7
jest-worker: 26.6.2
rollup: 2.79.1
serialize-javascript: 4.0.0
- terser: 5.31.0
+ terser: 5.31.2
/rollup@2.79.1:
resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
@@ -18854,7 +19135,7 @@ packages:
/rtl-css-js@1.16.1:
resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
dev: false
/run-parallel@1.2.0:
@@ -18869,7 +19150,7 @@ packages:
/rxjs@7.8.1:
resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
/sade@1.8.1:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
@@ -18954,7 +19235,7 @@ packages:
klona: 2.0.6
neo-async: 2.6.2
sass: 1.71.1
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/sass-loader@13.3.2(sass@1.71.1)(webpack@5.91.0):
resolution: {integrity: sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==}
@@ -18977,7 +19258,7 @@ packages:
dependencies:
neo-async: 2.6.2
sass: 1.71.1
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
dev: true
/sass@1.71.1:
@@ -18992,8 +19273,8 @@ packages:
/sax@1.2.4:
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
- /sax@1.3.0:
- resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}
+ /sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
dev: false
/saxes@5.0.1:
@@ -19036,9 +19317,9 @@ packages:
engines: {node: '>= 12.13.0'}
dependencies:
'@types/json-schema': 7.0.15
- ajv: 8.13.0
- ajv-formats: 2.1.1(ajv@8.13.0)
- ajv-keywords: 5.1.0(ajv@8.13.0)
+ ajv: 8.16.0
+ ajv-formats: 2.1.1(ajv@8.16.0)
+ ajv-keywords: 5.1.0(ajv@8.16.0)
/screenfull@5.2.0:
resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==}
@@ -19231,7 +19512,7 @@ packages:
call-bind: 1.0.7
es-errors: 1.3.0
get-intrinsic: 1.2.4
- object-inspect: 1.13.1
+ object-inspect: 1.13.2
/signal-exit@3.0.7:
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
@@ -19288,22 +19569,6 @@ packages:
is-fullwidth-code-point: 4.0.0
dev: true
- /snapdragon-node@2.1.1:
- resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
- engines: {node: '>=0.10.0'}
- dependencies:
- define-property: 1.0.0
- isobject: 3.0.1
- snapdragon-util: 3.0.1
- dev: true
-
- /snapdragon-util@3.0.1:
- resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
- engines: {node: '>=0.10.0'}
- dependencies:
- kind-of: 3.2.2
- dev: true
-
/snapdragon@0.8.2:
resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
engines: {node: '>=0.10.0'}
@@ -19361,7 +19626,7 @@ packages:
abab: 2.0.6
iconv-lite: 0.6.3
source-map-js: 1.2.0
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/source-map-resolve@0.5.3:
resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
@@ -19445,7 +19710,7 @@ packages:
/spdy-transport@3.0.0:
resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
detect-node: 2.1.0
hpack.js: 2.1.6
obuf: 1.1.2
@@ -19458,7 +19723,7 @@ packages:
resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
engines: {node: '>=6.0.0'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
handle-thing: 2.0.1
http-deceiver: 1.2.7
select-hose: 2.0.0
@@ -19499,7 +19764,6 @@ packages:
/stackblur-canvas@2.7.0:
resolution: {integrity: sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==}
engines: {node: '>=0.1.14'}
- requiresBuild: true
dev: false
optional: true
@@ -19547,7 +19811,6 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
internal-slot: 1.0.7
- dev: true
/store2@2.14.3:
resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==}
@@ -19575,13 +19838,15 @@ packages:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
react-inspector: 2.3.1(react@18.2.0)
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /storybook@8.1.5(@babel/preset-env@7.22.6)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-v4o8AfTvxWpdGa9Pa9x8EAmqbN5yJc+2fW8b6ZaCsDOTh2t5Y3EUHbIzdtvX+1Gb6ALsOs5e2Q9GlCAzjz+WNQ==}
+ /storybook@8.1.10(@babel/preset-env@7.22.6)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-HHlZibyc/QkcQj8aEnYnYwEl+ItNZ/uRbCdkvJzu/vIWYon5jUg30mHFIGZprgLSt27CxOs30Et8yT9z4VhwjA==}
hasBin: true
dependencies:
- '@storybook/cli': 8.1.5(@babel/preset-env@7.22.6)(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/cli': 8.1.10(@babel/preset-env@7.22.6)(react-dom@18.2.0)(react@18.2.0)
transitivePeerDependencies:
- '@babel/preset-env'
- bufferutil
@@ -19770,7 +20035,7 @@ packages:
peerDependencies:
webpack: ^5.0.0
dependencies:
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/style-mod@4.1.2:
resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
@@ -19786,9 +20051,9 @@ packages:
resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
engines: {node: ^10 || ^12 || >=14.0}
peerDependencies:
- postcss: '>=8.4.31'
+ postcss: ^8.2.15
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
postcss: 8.4.32
postcss-selector-parser: 6.1.0
@@ -19811,7 +20076,7 @@ packages:
graphql: 16.8.1
iterall: 1.3.0
symbol-observable: 1.2.0
- ws: 7.5.9
+ ws: 7.5.10
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -19824,7 +20089,7 @@ packages:
dependencies:
'@jridgewell/gen-mapping': 0.3.5
commander: 4.1.1
- glob: 10.4.1
+ glob: 10.4.5
lines-and-columns: 1.2.4
mz: 2.7.0
pirates: 4.0.6
@@ -19865,7 +20130,6 @@ packages:
/svg-pathdata@6.0.3:
resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==}
engines: {node: '>=12.0.0'}
- requiresBuild: true
dev: false
optional: true
@@ -19902,15 +20166,15 @@ packages:
picocolors: 1.0.1
stable: 0.1.8
- /swc-loader@0.2.6(@swc/core@1.5.7)(webpack@5.91.0):
+ /swc-loader@0.2.6(@swc/core@1.6.13)(webpack@5.91.0):
resolution: {integrity: sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==}
peerDependencies:
'@swc/core': ^1.2.147
webpack: '>=2'
dependencies:
- '@swc/core': 1.5.7
+ '@swc/core': 1.6.13
'@swc/counter': 0.1.3
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
dev: true
/swr@2.2.4(react@18.2.0):
@@ -19940,8 +20204,8 @@ packages:
resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==}
dev: true
- /tailwindcss@3.4.3:
- resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==}
+ /tailwindcss@3.4.4:
+ resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
@@ -19953,7 +20217,7 @@ packages:
fast-glob: 3.3.2
glob-parent: 6.0.2
is-glob: 4.0.3
- jiti: 1.21.0
+ jiti: 1.21.6
lilconfig: 2.1.0
micromatch: 4.0.7
normalize-path: 3.0.0
@@ -20064,7 +20328,7 @@ packages:
ansi-escapes: 4.3.2
supports-hyperlinks: 2.3.0
- /terser-webpack-plugin@5.3.10(@swc/core@1.5.7)(esbuild@0.21.3)(webpack@5.91.0):
+ /terser-webpack-plugin@5.3.10(@swc/core@1.6.13)(esbuild@0.21.3)(webpack@5.91.0):
resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@@ -20081,21 +20345,21 @@ packages:
optional: true
dependencies:
'@jridgewell/trace-mapping': 0.3.25
- '@swc/core': 1.5.7
+ '@swc/core': 1.6.13
esbuild: 0.21.3
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.2
- terser: 5.31.0
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ terser: 5.31.2
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
- /terser@5.31.0:
- resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==}
+ /terser@5.31.2:
+ resolution: {integrity: sha512-LGyRZVFm/QElZHy/CPr/O4eNZOZIzsrQ92y4v9UJe/pFJjypje2yI3C2FmPtvUEnhadlSbmG2nXtdcjHOjCfxw==}
engines: {node: '>=10'}
hasBin: true
dependencies:
'@jridgewell/source-map': 0.3.6
- acorn: 8.11.3
+ acorn: 8.12.1
commander: 2.20.3
source-map-support: 0.5.21
@@ -20109,7 +20373,6 @@ packages:
/text-segmentation@1.0.3:
resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==}
- requiresBuild: true
dependencies:
utrie: 1.0.2
dev: false
@@ -20150,8 +20413,9 @@ packages:
/thunky@1.1.0:
resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==}
- /timers-ext@0.1.7:
- resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==}
+ /timers-ext@0.1.8:
+ resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==}
+ engines: {node: '>=0.12'}
dependencies:
es5-ext: 0.10.64
next-tick: 1.1.0
@@ -20190,14 +20454,6 @@ packages:
kind-of: 3.2.2
dev: true
- /to-regex-range@2.1.1:
- resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-number: 3.0.0
- repeat-string: 1.6.1
- dev: true
-
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -20280,10 +20536,10 @@ packages:
resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==}
engines: {node: '>=8'}
dependencies:
- tslib: 2.6.2
+ tslib: 2.6.3
dev: false
- /ts-node@10.9.2(@swc/core@1.5.7)(@types/node@17.0.45)(typescript@5.4.3):
+ /ts-node@10.9.2(@swc/core@1.6.13)(@types/node@17.0.45)(typescript@5.4.3):
resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
hasBin: true
peerDependencies:
@@ -20298,14 +20554,14 @@ packages:
optional: true
dependencies:
'@cspotcode/source-map-support': 0.8.1
- '@swc/core': 1.5.7
+ '@swc/core': 1.6.13
'@tsconfig/node10': 1.0.11
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 17.0.45
- acorn: 8.11.3
- acorn-walk: 8.3.2
+ acorn: 8.12.1
+ acorn-walk: 8.3.3
arg: 4.1.3
create-require: 1.1.1
diff: 4.0.2
@@ -20336,7 +20592,7 @@ packages:
engines: {node: '>=10.13.0'}
dependencies:
chalk: 4.1.2
- enhanced-resolve: 5.16.1
+ enhanced-resolve: 5.17.0
tsconfig-paths: 4.2.0
dev: true
@@ -20360,8 +20616,8 @@ packages:
/tslib@1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
- /tslib@2.6.2:
- resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+ /tslib@2.6.3:
+ resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
/tsutils@3.21.0(typescript@5.4.3):
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
@@ -20372,10 +20628,6 @@ packages:
tslib: 1.14.1
typescript: 5.4.3
- /turf-jsts@1.2.3:
- resolution: {integrity: sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA==}
- dev: false
-
/type-check@0.3.2:
resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==}
engines: {node: '>= 0.8.0'}
@@ -20424,8 +20676,8 @@ packages:
engines: {node: '>=12.20'}
dev: true
- /type-fest@4.18.2:
- resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==}
+ /type-fest@4.21.0:
+ resolution: {integrity: sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==}
engines: {node: '>=16'}
dev: false
@@ -20436,8 +20688,8 @@ packages:
media-typer: 0.3.0
mime-types: 2.1.35
- /type@2.7.2:
- resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
+ /type@2.7.3:
+ resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==}
dev: false
/typed-array-buffer@1.0.2:
@@ -20480,9 +20732,9 @@ packages:
is-typed-array: 1.1.13
possible-typed-array-names: 1.0.0
- /typed-function@4.1.1:
- resolution: {integrity: sha512-Pq1DVubcvibmm8bYcMowjVnnMwPVMeh0DIdA8ad8NZY2sJgapANJmiigSUwlt+EgXxpfIv8MWrQXTIzkfYZLYQ==}
- engines: {node: '>= 14'}
+ /typed-function@4.2.1:
+ resolution: {integrity: sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==}
+ engines: {node: '>= 18'}
dev: false
/typedarray-to-buffer@3.1.5:
@@ -20495,8 +20747,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- /ua-parser-js@1.0.37:
- resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==}
+ /ua-parser-js@1.0.38:
+ resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==}
dev: true
/uc.micro@2.1.0:
@@ -20507,8 +20759,8 @@ packages:
resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==}
dev: true
- /uglify-js@3.17.4:
- resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
+ /uglify-js@3.18.0:
+ resolution: {integrity: sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==}
engines: {node: '>=0.8.0'}
hasBin: true
requiresBuild: true
@@ -20656,14 +20908,14 @@ packages:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
- /unplugin@1.10.1:
- resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==}
+ /unplugin@1.11.0:
+ resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==}
engines: {node: '>=14.0.0'}
dependencies:
- acorn: 8.11.3
+ acorn: 8.12.1
chokidar: 3.6.0
webpack-sources: 3.2.3
- webpack-virtual-modules: 0.6.1
+ webpack-virtual-modules: 0.6.2
dev: true
/unquote@1.1.1:
@@ -20685,13 +20937,13 @@ packages:
resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==}
engines: {node: '>=4'}
- /update-browserslist-db@1.0.16(browserslist@4.23.0):
- resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==}
+ /update-browserslist-db@1.1.0(browserslist@4.23.2):
+ resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.23.0
+ browserslist: 4.23.2
escalade: 3.1.2
picocolors: 1.0.1
@@ -20715,7 +20967,7 @@ packages:
resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==}
dependencies:
punycode: 1.4.1
- qs: 6.12.1
+ qs: 6.12.3
dev: true
/use-callback-ref@1.3.2(@types/react@18.2.45)(react@18.2.0):
@@ -20730,7 +20982,7 @@ packages:
dependencies:
'@types/react': 18.2.45
react: 18.2.0
- tslib: 2.6.2
+ tslib: 2.6.3
dev: true
/use-memo-one@1.1.3(react@18.2.0):
@@ -20765,7 +21017,7 @@ packages:
'@types/react': 18.2.45
detect-node-es: 1.1.0
react: 18.2.0
- tslib: 2.6.2
+ tslib: 2.6.3
dev: true
/use-sync-external-store@1.2.0(react@18.2.0):
@@ -20819,12 +21071,16 @@ packages:
/utrie@1.0.2:
resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==}
- requiresBuild: true
dependencies:
base64-arraybuffer: 1.0.2
dev: false
optional: true
+ /uuid@10.0.0:
+ resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
+ hasBin: true
+ dev: false
+
/uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
@@ -20959,7 +21215,7 @@ packages:
mime-types: 2.1.35
range-parser: 1.2.1
schema-utils: 4.2.0
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
/webpack-dev-middleware@6.1.3(webpack@5.91.0):
resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==}
@@ -20975,7 +21231,7 @@ packages:
mime-types: 2.1.35
range-parser: 1.2.1
schema-utils: 4.2.0
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
dev: true
/webpack-dev-server@4.15.2(webpack@5.91.0):
@@ -21010,7 +21266,7 @@ packages:
html-entities: 2.5.2
http-proxy-middleware: 2.0.6(@types/express@4.17.21)
ipaddr.js: 2.2.0
- launch-editor: 2.6.1
+ launch-editor: 2.8.0
open: 8.4.2
p-retry: 4.6.2
rimraf: 3.0.2
@@ -21019,9 +21275,9 @@ packages:
serve-index: 1.9.1
sockjs: 0.3.24
spdy: 4.0.2
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
webpack-dev-middleware: 5.3.4(webpack@5.91.0)
- ws: 8.17.0
+ ws: 8.18.0
transitivePeerDependencies:
- bufferutil
- debug
@@ -21043,7 +21299,7 @@ packages:
webpack: ^4.44.2 || ^5.47.0
dependencies:
tapable: 2.2.1
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
webpack-sources: 2.3.1
/webpack-merge@5.10.0:
@@ -21076,11 +21332,11 @@ packages:
resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==}
dev: true
- /webpack-virtual-modules@0.6.1:
- resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==}
+ /webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
dev: true
- /webpack@5.91.0(@swc/core@1.5.7)(esbuild@0.21.3):
+ /webpack@5.91.0(@swc/core@1.6.13)(esbuild@0.21.3):
resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==}
engines: {node: '>=10.13.0'}
hasBin: true
@@ -21095,12 +21351,12 @@ packages:
'@webassemblyjs/ast': 1.12.1
'@webassemblyjs/wasm-edit': 1.12.1
'@webassemblyjs/wasm-parser': 1.12.1
- acorn: 8.11.3
- acorn-import-assertions: 1.9.0(acorn@8.11.3)
- browserslist: 4.23.0
- chrome-trace-event: 1.0.3
- enhanced-resolve: 5.16.1
- es-module-lexer: 1.5.3
+ acorn: 8.12.1
+ acorn-import-assertions: 1.9.0(acorn@8.12.1)
+ browserslist: 4.23.2
+ chrome-trace-event: 1.0.4
+ enhanced-resolve: 5.17.0
+ es-module-lexer: 1.5.4
eslint-scope: 5.1.1
events: 3.3.0
glob-to-regexp: 0.4.1
@@ -21111,7 +21367,7 @@ packages:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
- terser-webpack-plugin: 5.3.10(@swc/core@1.5.7)(esbuild@0.21.3)(webpack@5.91.0)
+ terser-webpack-plugin: 5.3.10(@swc/core@1.6.13)(esbuild@0.21.3)(webpack@5.91.0)
watchpack: 2.4.1
webpack-sources: 3.2.3
transitivePeerDependencies:
@@ -21256,15 +21512,15 @@ packages:
resolution: {integrity: sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==}
engines: {node: '>=10.0.0'}
dependencies:
- '@apideck/better-ajv-errors': 0.3.6(ajv@8.13.0)
- '@babel/core': 7.24.5
- '@babel/preset-env': 7.24.5(@babel/core@7.24.5)
- '@babel/runtime': 7.24.5
- '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.5)(rollup@2.79.1)
+ '@apideck/better-ajv-errors': 0.3.6(ajv@8.16.0)
+ '@babel/core': 7.22.5
+ '@babel/preset-env': 7.22.6(@babel/core@7.22.5)
+ '@babel/runtime': 7.24.7
+ '@rollup/plugin-babel': 5.3.1(@babel/core@7.22.5)(rollup@2.79.1)
'@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1)
'@rollup/plugin-replace': 2.4.2(rollup@2.79.1)
'@surma/rollup-plugin-off-main-thread': 2.2.3
- ajv: 8.13.0
+ ajv: 8.16.0
common-tags: 1.8.2
fast-json-stable-stringify: 2.1.0
fs-extra: 9.1.0
@@ -21375,7 +21631,7 @@ packages:
fast-json-stable-stringify: 2.1.0
pretty-bytes: 5.6.0
upath: 1.2.0
- webpack: 5.91.0(@swc/core@1.5.7)(esbuild@0.21.3)
+ webpack: 5.91.0(@swc/core@1.6.13)(esbuild@0.21.3)
webpack-sources: 1.4.3
workbox-build: 6.6.0
transitivePeerDependencies:
@@ -21440,8 +21696,8 @@ packages:
signal-exit: 3.0.7
dev: true
- /ws@7.5.9:
- resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==}
+ /ws@7.5.10:
+ resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==}
engines: {node: '>=8.3.0'}
peerDependencies:
bufferutil: ^4.0.1
@@ -21452,8 +21708,8 @@ packages:
utf-8-validate:
optional: true
- /ws@8.17.0:
- resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==}
+ /ws@8.18.0:
+ resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
@@ -21468,14 +21724,14 @@ packages:
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
hasBin: true
dependencies:
- sax: 1.3.0
+ sax: 1.4.1
dev: false
/xml-name-validator@3.0.0:
resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==}
- /xml-utils@1.8.0:
- resolution: {integrity: sha512-1TY5yLw8DApowZAUsWCniNr8HH6Ebt6O7UQvmIwziGKwUNsQx6e+4NkfOvCfnqmYIcPjCeoI6dh1JenPJ9a1hQ==}
+ /xml-utils@1.10.1:
+ resolution: {integrity: sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==}
dev: false
/xml@1.0.1:
@@ -21504,8 +21760,8 @@ packages:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
- /yaml@2.4.2:
- resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==}
+ /yaml@2.4.5:
+ resolution: {integrity: sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==}
engines: {node: '>= 14'}
hasBin: true
@@ -21534,8 +21790,8 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- /yocto-queue@1.0.0:
- resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
+ /yocto-queue@1.1.1:
+ resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
engines: {node: '>=12.20'}
dev: true
@@ -21543,7 +21799,7 @@ packages:
resolution: {integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==}
engines: {node: '>=10'}
dependencies:
- '@babel/runtime': 7.24.5
+ '@babel/runtime': 7.24.7
'@types/lodash': 4.14.202
lodash: 4.17.21
lodash-es: 4.17.21
@@ -21581,51 +21837,56 @@ packages:
resolution: {integrity: sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==}
dev: false
- /zustand@4.3.8(immer@9.0.21)(react@18.2.0):
- resolution: {integrity: sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==}
+ /zustand@4.5.4(@types/react@18.2.45)(immer@9.0.21)(react@18.2.0):
+ resolution: {integrity: sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==}
engines: {node: '>=12.7.0'}
peerDependencies:
- immer: '>=9.0'
+ '@types/react': '>=16.8'
+ immer: '>=9.0.6'
react: '>=16.8'
peerDependenciesMeta:
+ '@types/react':
+ optional: true
immer:
optional: true
react:
optional: true
dependencies:
+ '@types/react': 18.2.45
immer: 9.0.21
react: 18.2.0
use-sync-external-store: 1.2.0(react@18.2.0)
dev: false
- github.com/theopensystemslab/planx-core/550634a(@types/react@18.2.45):
- resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/550634a}
- id: github.com/theopensystemslab/planx-core/550634a
+ github.com/theopensystemslab/planx-core/6c2cc59(@types/react@18.2.45):
+ resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/6c2cc59}
+ id: github.com/theopensystemslab/planx-core/6c2cc59
name: '@opensystemslab/planx-core'
version: 1.0.0
+ prepare: true
requiresBuild: true
dependencies:
'@emotion/react': 11.11.4(@types/react@18.2.45)(react@18.3.1)
'@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.45)(react@18.3.1)
+ '@formatjs/intl-listformat': 7.5.7
'@mui/material': 5.15.2(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.45)(react-dom@18.3.1)(react@18.3.1)
- '@types/geojson': 7946.0.14
- ajv: 8.13.0
- ajv-formats: 2.1.1(ajv@8.13.0)
+ ajv: 8.16.0
+ ajv-formats: 2.1.1(ajv@8.16.0)
cheerio: 1.0.0-rc.12
copyfiles: 2.4.1
docx: 8.5.0
eslint: 8.57.0
fast-xml-parser: 4.4.0
- graphql: 16.8.1
- graphql-request: 6.1.0(graphql@16.8.1)
- json-schema-to-typescript: 14.0.4
+ graphql: 16.9.0
+ graphql-request: 6.1.0(graphql@16.9.0)
+ json-schema-to-typescript: 14.1.0
lodash: 4.17.21
- marked: 12.0.2
- prettier: 3.2.5
+ marked: 13.0.2
+ prettier: 3.3.2
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- type-fest: 4.18.2
- uuid: 9.0.1
+ type-fest: 4.21.0
+ uuid: 10.0.0
zod: 3.23.8
transitivePeerDependencies:
- '@types/react'
diff --git a/editor.planx.uk/src/@planx/components/Calculate/Editor.tsx b/editor.planx.uk/src/@planx/components/Calculate/Editor.tsx
index 6ae015aaa1..cc8665849d 100644
--- a/editor.planx.uk/src/@planx/components/Calculate/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/Calculate/Editor.tsx
@@ -1,4 +1,6 @@
+import FormControlLabel from "@mui/material/FormControlLabel";
import { styled } from "@mui/material/styles";
+import Switch from "@mui/material/Switch";
import Typography from "@mui/material/Typography";
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import {
@@ -12,7 +14,6 @@ import React from "react";
import InputGroup from "ui/editor/InputGroup";
import ModalSection from "ui/editor/ModalSection";
import ModalSectionContent from "ui/editor/ModalSectionContent";
-import OptionButton from "ui/editor/OptionButton";
import Input from "ui/shared/Input";
import InputRow from "ui/shared/InputRow";
@@ -100,17 +101,22 @@ export default function Component(props: Props) {
onChange={formik.handleChange}
/>
- {
- formik.setFieldValue(
- "formatOutputForAutomations",
- !formik.values.formatOutputForAutomations,
- );
- }}
- >
- Format the output to automate a future Question or Checklist only
-
+
+
+ formik.setFieldValue(
+ "formatOutputForAutomations",
+ !formik.values.formatOutputForAutomations,
+ )
+ }
+ />
+ }
+ label="Format the output to automate a future Question or Checklist only"
+ />
+
diff --git a/editor.planx.uk/src/@planx/components/Calculate/logic.test.ts b/editor.planx.uk/src/@planx/components/Calculate/logic.test.ts
index 6d27065ed8..2dde552b55 100644
--- a/editor.planx.uk/src/@planx/components/Calculate/logic.test.ts
+++ b/editor.planx.uk/src/@planx/components/Calculate/logic.test.ts
@@ -1,7 +1,7 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { Store, vanillaStore } from "pages/FlowEditor/lib/store";
+import { Store, useStore } from "pages/FlowEditor/lib/store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const { upcomingCardIds, resetPreview, record } = getState();
// Helper method
diff --git a/editor.planx.uk/src/@planx/components/Checklist/Editor.tsx b/editor.planx.uk/src/@planx/components/Checklist/Editor.tsx
index 0e4c24a94b..8c9133f0d9 100644
--- a/editor.planx.uk/src/@planx/components/Checklist/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/Checklist/Editor.tsx
@@ -1,7 +1,9 @@
import Delete from "@mui/icons-material/Delete";
import Box from "@mui/material/Box";
import Button from "@mui/material/Button";
+import FormControlLabel from "@mui/material/FormControlLabel";
import IconButton from "@mui/material/IconButton";
+import Switch from "@mui/material/Switch";
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import { useFormik } from "formik";
import adjust from "ramda/src/adjust";
@@ -14,7 +16,6 @@ import InputGroup from "ui/editor/InputGroup";
import ListManager from "ui/editor/ListManager";
import ModalSection from "ui/editor/ModalSection";
import ModalSectionContent from "ui/editor/ModalSectionContent";
-import OptionButton from "ui/editor/OptionButton";
import RichTextInput from "ui/editor/RichTextInput";
import SimpleMenu from "ui/editor/SimpleMenu";
import Input from "ui/shared/Input";
@@ -393,29 +394,41 @@ export const ChecklistComponent: React.FC = (props) => {
onChange={formik.handleChange}
/>
- {
- formik.setValues({
- ...formik.values,
- ...toggleExpandableChecklist({
- options: formik.values.options,
- groupedOptions: formik.values.groupedOptions,
- }),
- });
- }}
- >
- Expandable
-
-
- {
- formik.setFieldValue("allRequired", !formik.values.allRequired);
- }}
- >
- All required
-
+
+
+ formik.setValues({
+ ...formik.values,
+ ...toggleExpandableChecklist({
+ options: formik.values.options,
+ groupedOptions: formik.values.groupedOptions,
+ }),
+ })
+ }
+ />
+ }
+ label="Expandable"
+ />
+
+
+
+ formik.setFieldValue(
+ "allRequired",
+ !formik.values.allRequired,
+ )
+ }
+ />
+ }
+ label="All required"
+ />
+
diff --git a/editor.planx.uk/src/@planx/components/Checklist/Public.test.tsx b/editor.planx.uk/src/@planx/components/Checklist/Public.test.tsx
index cfb9391893..525d8feb7d 100644
--- a/editor.planx.uk/src/@planx/components/Checklist/Public.test.tsx
+++ b/editor.planx.uk/src/@planx/components/Checklist/Public.test.tsx
@@ -173,6 +173,7 @@ describe("Checklist Component - Grouped Layout", () => {
answers: ["S1_Option1", "S3_Option1"],
});
});
+
it("should not have any accessibility violations", async () => {
const { container } = setup(
{
const results = await axe(container);
expect(results).toHaveNoViolations();
});
+
it("should be navigable by keyboard", async () => {
const handleSubmit = jest.fn();
@@ -218,13 +220,11 @@ describe("Checklist Component - Grouped Layout", () => {
expect(screen.getByTestId("S2_Option1")).toHaveFocus();
// Select option using keyboard
await user.keyboard("[Space]");
- expect(screen.getByTestId("S2_Option1")).toBeChecked();
// Tab to Section 2, Option 2
await user.tab();
expect(screen.getByTestId("S2_Option2")).toHaveFocus();
// Select option using keyboard
await user.keyboard("[Space]");
- expect(screen.getByTestId("S2_Option2")).toBeChecked();
// Tab to Section 3, and navigate through to "Continue" without selecting anything
await user.tab();
expect(section3Button).toHaveFocus();
@@ -279,6 +279,7 @@ describe("Checklist Component - Basic & Images Layout", () => {
answers: ["flat_id", "house_id", "spaceship_id"],
});
});
+
it(`recovers checkboxes state when clicking the back button (${ChecklistLayout[type]} layout)`, async () => {
const handleSubmit = jest.fn();
diff --git a/editor.planx.uk/src/@planx/components/Checklist/Public.tsx b/editor.planx.uk/src/@planx/components/Checklist/Public.tsx
index 11e5c86ecf..6383d8abcd 100644
--- a/editor.planx.uk/src/@planx/components/Checklist/Public.tsx
+++ b/editor.planx.uk/src/@planx/components/Checklist/Public.tsx
@@ -1,19 +1,23 @@
import Box from "@mui/material/Box";
import Grid from "@mui/material/Grid";
import { visuallyHidden } from "@mui/utils";
-import type { Checklist, Group } from "@planx/components/Checklist/model";
+import {
+ type Checklist,
+ checklistValidationSchema,
+ getFlatOptions,
+ type Group,
+} from "@planx/components/Checklist/model";
import ImageButton from "@planx/components/shared/Buttons/ImageButton";
import Card from "@planx/components/shared/Preview/Card";
import CardHeader from "@planx/components/shared/Preview/CardHeader";
import { getIn, useFormik } from "formik";
import React, { useState } from "react";
-import InputLegend from "ui/editor/InputLegend";
import { ExpandableList, ExpandableListItem } from "ui/public/ExpandableList";
import FormWrapper from "ui/public/FormWrapper";
import FullWidthWrapper from "ui/public/FullWidthWrapper";
import ChecklistItem from "ui/shared/ChecklistItem";
import ErrorWrapper from "ui/shared/ErrorWrapper";
-import { array, object } from "yup";
+import { object } from "yup";
import { Option } from "../shared";
import type { PublicProps } from "../ui";
@@ -32,36 +36,21 @@ function toggleInArray(value: T, arr: Array): Array {
: [...arr, value];
}
-function getFlatOptions({
- options,
- groupedOptions,
-}: {
- options: Checklist["options"];
- groupedOptions: Checklist["groupedOptions"];
-}) {
- if (options) {
- return options;
- }
- if (groupedOptions) {
- return groupedOptions.flatMap((group) => group.children);
- }
- return [];
-}
+const ChecklistComponent: React.FC = (props) => {
+ const {
+ description = "",
+ groupedOptions,
+ handleSubmit,
+ howMeasured,
+ info,
+ options,
+ policyRef,
+ text,
+ img,
+ previouslySubmittedData,
+ id,
+ } = props;
-const ChecklistComponent: React.FC = ({
- allRequired,
- description = "",
- groupedOptions,
- handleSubmit,
- howMeasured,
- info,
- options,
- policyRef,
- text,
- img,
- previouslySubmittedData,
- id,
-}) => {
const formik = useFormik<{ checked: Array }>({
initialValues: {
checked: previouslySubmittedData?.answers || [],
@@ -72,27 +61,7 @@ const ChecklistComponent: React.FC = ({
validateOnBlur: false,
validateOnChange: false,
validationSchema: object({
- checked: array()
- .required()
- .test({
- name: "atLeastOneChecked",
- message: "Select at least one option",
- test: (checked?: Array) => {
- return Boolean(checked && checked.length > 0);
- },
- })
- .test({
- name: "notAllChecked",
- message: "All options must be checked",
- test: (checked?: Array) => {
- if (!allRequired) {
- return true;
- }
- const flatOptions = getFlatOptions({ options, groupedOptions });
- const allChecked = checked && checked.length === flatOptions.length;
- return Boolean(allChecked);
- },
- }),
+ checked: checklistValidationSchema(props),
}),
});
diff --git a/editor.planx.uk/src/@planx/components/Checklist/model.ts b/editor.planx.uk/src/@planx/components/Checklist/model.ts
index 210fa82cee..7287fe9364 100644
--- a/editor.planx.uk/src/@planx/components/Checklist/model.ts
+++ b/editor.planx.uk/src/@planx/components/Checklist/model.ts
@@ -1,3 +1,5 @@
+import { array } from "yup";
+
import { MoreInformation, Option } from "../shared";
export interface Group {
@@ -23,7 +25,7 @@ interface ChecklistExpandableProps {
export const toggleExpandableChecklist = (
checklist: ChecklistExpandableProps,
): ChecklistExpandableProps => {
- if (checklist.options) {
+ if (checklist.options !== undefined && checklist.options.length > 0) {
return {
...checklist,
groupedOptions: [
@@ -34,13 +36,68 @@ export const toggleExpandableChecklist = (
],
options: undefined,
};
- }
- if (checklist.groupedOptions) {
+ } else if (
+ checklist.groupedOptions !== undefined &&
+ checklist.groupedOptions.length > 0
+ ) {
return {
...checklist,
options: checklist.groupedOptions.flatMap((opt) => opt.children),
groupedOptions: undefined,
};
+ } else {
+ return {
+ ...checklist,
+ options: checklist.options || [],
+ groupedOptions: checklist.groupedOptions || [
+ {
+ title: "Section 1",
+ children: [],
+ },
+ ],
+ };
}
- return checklist;
};
+
+export const getFlatOptions = ({
+ options,
+ groupedOptions,
+}: {
+ options: Checklist["options"];
+ groupedOptions: Checklist["groupedOptions"];
+}) => {
+ if (options) {
+ return options;
+ }
+ if (groupedOptions) {
+ return groupedOptions.flatMap((group) => group.children);
+ }
+ return [];
+};
+
+export const checklistValidationSchema = ({
+ allRequired,
+ options,
+ groupedOptions,
+}: Checklist) =>
+ array()
+ .required()
+ .test({
+ name: "atLeastOneChecked",
+ message: "Select at least one option",
+ test: (checked?: Array) => {
+ return Boolean(checked && checked.length > 0);
+ },
+ })
+ .test({
+ name: "notAllChecked",
+ message: "All options must be checked",
+ test: (checked?: Array) => {
+ if (!allRequired) {
+ return true;
+ }
+ const flatOptions = getFlatOptions({ options, groupedOptions });
+ const allChecked = checked && checked.length === flatOptions.length;
+ return Boolean(allChecked);
+ },
+ });
diff --git a/editor.planx.uk/src/@planx/components/DateInput/model.test.ts b/editor.planx.uk/src/@planx/components/DateInput/model.test.ts
index 03d7b20439..7d73193590 100644
--- a/editor.planx.uk/src/@planx/components/DateInput/model.test.ts
+++ b/editor.planx.uk/src/@planx/components/DateInput/model.test.ts
@@ -47,7 +47,10 @@ describe("dateSchema", () => {
expect(await dateSchema().isValid("2021-23-03")).toBe(false);
});
- const validate = async (date?: string) => await dateSchema().validate(date).catch((err) => err.errors);
+ const validate = async (date?: string) =>
+ await dateSchema()
+ .validate(date)
+ .catch((err) => err.errors);
it("throws an error for an undefined value (empty form)", async () => {
const errors = await validate(undefined);
@@ -58,12 +61,12 @@ describe("dateSchema", () => {
const errors = await validate("ab-cd-efgh");
expect(errors[0]).toMatch(/Date must include a day/);
});
-
+
it("throws an error for a missing day", async () => {
const errors = await validate("2024-12-");
expect(errors[0]).toMatch(/Date must include a day/);
});
-
+
it("throws an error for a missing month", async () => {
const errors = await validate("2024--25");
expect(errors[0]).toMatch(/Date must include a month/);
@@ -112,7 +115,7 @@ describe("dateRangeSchema", () => {
"1980-06-15",
),
).toBe(false);
- })
+ });
});
test("padding on input", () => {
@@ -145,4 +148,4 @@ test("padding on blur", () => {
// Leaves single 0 alone
expect(paddedDate("2021-0-2", "blur")).toBe("2021-0-02");
expect(paddedDate("2021-10-0", "blur")).toBe("2021-10-0");
-});
\ No newline at end of file
+});
diff --git a/editor.planx.uk/src/@planx/components/DateInput/model.ts b/editor.planx.uk/src/@planx/components/DateInput/model.ts
index 4b6ee7b2b5..f661f803e3 100644
--- a/editor.planx.uk/src/@planx/components/DateInput/model.ts
+++ b/editor.planx.uk/src/@planx/components/DateInput/model.ts
@@ -60,47 +60,33 @@ const displayDate = (date: string): string | undefined => {
};
export const parseDate = (date?: string) => {
- const [year, month, day] = date?.split("-").map((val) => parseInt(val) || undefined) || [];
+ const [year, month, day] =
+ date?.split("-").map((val) => parseInt(val) || undefined) || [];
return { year, month, day };
-}
+};
export const dateSchema = () => {
return string()
- .test(
- "missing day",
- "Date must include a day",
- (date?: string) => {
- const { day } = parseDate(date);
- return day !== undefined;
- })
- .test(
- "missing month",
- "Date must include a month",
- (date?: string) => {
- const { month } = parseDate(date);
- return month !== undefined;
- })
- .test(
- "missing year",
- "Date must include a year",
- (date?: string) => {
- const { year } = parseDate(date);
- return year !== undefined;
- })
- .test(
- "invalid day",
- "Day must be valid",
- (date?: string) => {
- const { day } = parseDate(date);
- return Boolean(day && day <= 31)
- })
- .test(
- "invalid month",
- "Month must be valid",
- (date?: string) => {
- const { month } = parseDate(date);
- return Boolean(month && month <= 12);
- })
+ .test("missing day", "Date must include a day", (date?: string) => {
+ const { day } = parseDate(date);
+ return day !== undefined;
+ })
+ .test("missing month", "Date must include a month", (date?: string) => {
+ const { month } = parseDate(date);
+ return month !== undefined;
+ })
+ .test("missing year", "Date must include a year", (date?: string) => {
+ const { year } = parseDate(date);
+ return year !== undefined;
+ })
+ .test("invalid day", "Day must be valid", (date?: string) => {
+ const { day } = parseDate(date);
+ return Boolean(day && day <= 31);
+ })
+ .test("invalid month", "Month must be valid", (date?: string) => {
+ const { month } = parseDate(date);
+ return Boolean(month && month <= 12);
+ })
.test(
"valid",
"Enter a valid date in DD.MM.YYYY format",
@@ -115,24 +101,26 @@ export const dateRangeSchema: (params: {
min?: string;
max?: string;
}) => SchemaOf = (params) =>
- dateSchema()
- .required("Enter a valid date in DD.MM.YYYY format")
- .test({
- name: "too soon",
- message: `Enter a date later than ${params.min && displayDate(params.min)
- }`,
- test: (date: string | undefined) => {
- return Boolean(date && !(params.min && date < params.min));
- },
- })
- .test({
- name: "too late",
- message: `Enter a date earlier than ${params.max && displayDate(params.max)
- }`,
- test: (date: string | undefined) => {
- return Boolean(date && !(params.max && date > params.max));
- },
- });
+ dateSchema()
+ .required("Enter a valid date in DD.MM.YYYY format")
+ .test({
+ name: "too soon",
+ message: `Enter a date later than ${
+ params.min && displayDate(params.min)
+ }`,
+ test: (date: string | undefined) => {
+ return Boolean(date && !(params.min && date < params.min));
+ },
+ })
+ .test({
+ name: "too late",
+ message: `Enter a date earlier than ${
+ params.max && displayDate(params.max)
+ }`,
+ test: (date: string | undefined) => {
+ return Boolean(date && !(params.max && date > params.max));
+ },
+ });
export const parseDateInput = (
data: Record | undefined,
diff --git a/editor.planx.uk/src/@planx/components/DrawBoundary/Editor.tsx b/editor.planx.uk/src/@planx/components/DrawBoundary/Editor.tsx
index b85054d325..38492b893c 100644
--- a/editor.planx.uk/src/@planx/components/DrawBoundary/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/DrawBoundary/Editor.tsx
@@ -1,3 +1,5 @@
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Switch from "@mui/material/Switch";
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import {
EditorProps,
@@ -10,7 +12,6 @@ import React from "react";
import InputGroup from "ui/editor/InputGroup";
import ModalSection from "ui/editor/ModalSection";
import ModalSectionContent from "ui/editor/ModalSectionContent";
-import OptionButton from "ui/editor/OptionButton";
import RichTextInput from "ui/editor/RichTextInput";
import Input from "ui/shared/Input";
import InputRow from "ui/shared/InputRow";
@@ -100,17 +101,22 @@ function DrawBoundaryComponent(props: Props) {
onChange={formik.handleChange}
/>
- {
- formik.setFieldValue(
- "hideFileUpload",
- !formik.values.hideFileUpload,
- );
- }}
- >
- Hide file upload and allow user to continue without data
-
+
+
+ formik.setFieldValue(
+ "hideFileUpload",
+ !formik.values.hideFileUpload,
+ )
+ }
+ />
+ }
+ label="Hide file upload and allow user to continue without data"
+ />
+
;
global.URL.createObjectURL = jest.fn();
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
test("recovers previously submitted files when clicking the back button", async () => {
const handleSubmit = jest.fn();
diff --git a/editor.planx.uk/src/@planx/components/DrawBoundary/Public/index.tsx b/editor.planx.uk/src/@planx/components/DrawBoundary/Public/index.tsx
index e5086f1d17..cfe8dfc3c0 100644
--- a/editor.planx.uk/src/@planx/components/DrawBoundary/Public/index.tsx
+++ b/editor.planx.uk/src/@planx/components/DrawBoundary/Public/index.tsx
@@ -14,7 +14,8 @@ import { PrivateFileUpload } from "@planx/components/shared/PrivateFileUpload/Pr
import { squareMetresToHectares } from "@planx/components/shared/utils";
import type { PublicProps } from "@planx/components/ui";
import buffer from "@turf/buffer";
-import { type Feature, point } from "@turf/helpers";
+import { point } from "@turf/helpers";
+import { Feature } from "geojson";
import { Store, useStore } from "pages/FlowEditor/lib/store";
import React, { useEffect, useRef, useState } from "react";
import { FONT_WEIGHT_SEMI_BOLD } from "theme";
diff --git a/editor.planx.uk/src/@planx/components/FileUpload/Public.tsx b/editor.planx.uk/src/@planx/components/FileUpload/Public.tsx
index e821865e94..fbe600753c 100644
--- a/editor.planx.uk/src/@planx/components/FileUpload/Public.tsx
+++ b/editor.planx.uk/src/@planx/components/FileUpload/Public.tsx
@@ -42,6 +42,17 @@ const slotsSchema = array()
!slots.some((slot) => slot.status === "uploading"),
);
},
+ })
+ .test({
+ name: "errorStatus",
+ message: "Remove files which failed to upload",
+ test: (slots?: Array) => {
+ return Boolean(
+ slots &&
+ slots.length > 0 &&
+ !slots.some((slot) => slot.status === "error"),
+ );
+ },
});
const FileUpload: React.FC = (props) => {
diff --git a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Editor.test.tsx b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Editor.test.tsx
index 1c3b97a4cd..7e75a02126 100644
--- a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Editor.test.tsx
+++ b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Editor.test.tsx
@@ -1,5 +1,5 @@
import { screen } from "@testing-library/react";
-import { vanillaStore } from "pages/FlowEditor/lib/store";
+import { useStore } from "pages/FlowEditor/lib/store";
import React from "react";
import { DndProvider } from "react-dnd";
import { HTML5Backend } from "react-dnd-html5-backend";
@@ -7,7 +7,7 @@ import { setup } from "testUtils";
import FileUploadAndLabelComponent from "./Editor";
-const { getState } = vanillaStore;
+const { getState } = useStore;
describe("FileUploadAndLabel - Editor Modal", () => {
// TODO correctly mock an authenticated Platform Admin user so 'add new' button is enabled in final test
diff --git a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Editor.tsx b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Editor.tsx
index 6f4c3f8a01..6c93ce179d 100644
--- a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Editor.tsx
@@ -1,8 +1,10 @@
import RuleIcon from "@mui/icons-material/Rule";
import Box from "@mui/material/Box";
import Divider from "@mui/material/Divider";
+import FormControlLabel from "@mui/material/FormControlLabel";
import MenuItem from "@mui/material/MenuItem";
import { styled } from "@mui/material/styles";
+import Switch from "@mui/material/Switch";
import Typography from "@mui/material/Typography";
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import {
@@ -21,7 +23,6 @@ import ListManager, {
import ModalSection from "ui/editor/ModalSection";
import ModalSectionContent from "ui/editor/ModalSectionContent";
import { ModalSubtitle } from "ui/editor/ModalSubtitle";
-import OptionButton from "ui/editor/OptionButton";
import RichTextInput from "ui/editor/RichTextInput";
import SelectInput from "ui/editor/SelectInput";
import Input from "ui/shared/Input";
@@ -91,14 +92,22 @@ function FileUploadAndLabelComponent(props: Props) {
onChange={formik.handleChange}
/>
- {
- formik.setFieldValue("hideDropZone", !formik.values.hideDropZone);
- }}
- >
- Hide the drop zone and show files list for information only
-
+
+
+ formik.setFieldValue(
+ "hideDropZone",
+ !formik.values.hideDropZone,
+ )
+ }
+ />
+ }
+ label="Hide the drop zone and show files list for information only"
+ />
+
diff --git a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Public.test.tsx b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Public.test.tsx
index a8a8435fd8..7011823847 100644
--- a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Public.test.tsx
+++ b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Public.test.tsx
@@ -1,7 +1,7 @@
import { act, screen, waitFor, within } from "@testing-library/react";
import { UserEvent } from "@testing-library/user-event/dist/types/setup/setup";
import axios from "axios";
-import { vanillaStore } from "pages/FlowEditor/lib/store";
+import { useStore } from "pages/FlowEditor/lib/store";
import { FullStore } from "pages/FlowEditor/lib/store";
import React from "react";
import { axe, setup } from "testUtils";
@@ -11,7 +11,7 @@ import { mockFileTypes, mockFileTypesUniqueKeys } from "./mocks";
import { PASSPORT_REQUESTED_FILES_KEY } from "./model";
import FileUploadAndLabelComponent from "./Public";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
let initialState: FullStore;
jest.mock("axios");
diff --git a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Public.tsx b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Public.tsx
index 2233382ef2..6efbb1e2e0 100644
--- a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Public.tsx
+++ b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/Public.tsx
@@ -148,6 +148,7 @@ function Component(props: Props) {
break;
}
case "allRequiredFilesUploaded":
+ case "errorStatus":
setFileListError(err?.message);
break;
}
@@ -188,10 +189,6 @@ function Component(props: Props) {
return (
slot.url && slot.status === "success")
- }
>
diff --git a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/schema.ts b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/schema.ts
index 42d242f883..25d82a238b 100644
--- a/editor.planx.uk/src/@planx/components/FileUploadAndLabel/schema.ts
+++ b/editor.planx.uk/src/@planx/components/FileUploadAndLabel/schema.ts
@@ -91,10 +91,21 @@ export const slotsSchema = array()
name: "nonUploading",
message: "Please wait for upload to complete",
test: (slots?: Array) => {
- const isEveryUploadComplete = Boolean(
- slots?.every((slot) => slot.status === "success"),
+ const isAnyUploadInProgress = Boolean(
+ slots?.some((slot) => slot.status === "uploading"),
+ );
+ return !isAnyUploadInProgress;
+ },
+ })
+ .test({
+ name: "errorStatus",
+ message: "Remove files which failed to upload",
+ test: (slots?: Array) => {
+ return Boolean(
+ slots &&
+ slots.length > 0 &&
+ !slots.some((slot) => slot.status === "error"),
);
- return isEveryUploadComplete;
},
});
diff --git a/editor.planx.uk/src/@planx/components/FindProperty/Editor.tsx b/editor.planx.uk/src/@planx/components/FindProperty/Editor.tsx
index f38fe8c7f8..6430de1285 100644
--- a/editor.planx.uk/src/@planx/components/FindProperty/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/FindProperty/Editor.tsx
@@ -1,3 +1,5 @@
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Switch from "@mui/material/Switch";
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import {
EditorProps,
@@ -10,7 +12,6 @@ import React from "react";
import InputGroup from "ui/editor/InputGroup";
import ModalSection from "ui/editor/ModalSection";
import ModalSectionContent from "ui/editor/ModalSectionContent";
-import OptionButton from "ui/editor/OptionButton";
import RichTextInput from "ui/editor/RichTextInput";
import Input from "ui/shared/Input";
import InputRow from "ui/shared/InputRow";
@@ -60,17 +61,20 @@ function FindPropertyComponent(props: Props) {
- {
- formik.setFieldValue(
- "allowNewAddresses",
- !formik.values.allowNewAddresses,
- );
- }}
- >
- Allow users to plot new addresses without a UPRN
-
+
+ formik.setFieldValue(
+ "allowNewAddresses",
+ !formik.values.allowNewAddresses,
+ )
+ }
+ />
+ }
+ label="Allow users to plot new addresses without a UPRN"
+ />
{formik.values.allowNewAddresses ? (
<>
diff --git a/editor.planx.uk/src/@planx/components/FindProperty/Public/Map.tsx b/editor.planx.uk/src/@planx/components/FindProperty/Public/Map.tsx
index 1ad63c2512..554e77e804 100644
--- a/editor.planx.uk/src/@planx/components/FindProperty/Public/Map.tsx
+++ b/editor.planx.uk/src/@planx/components/FindProperty/Public/Map.tsx
@@ -63,7 +63,7 @@ export default function PlotNewAddress(props: PlotNewAddressProps): FCReturn {
const [environment, boundaryBBox] = useStore((state) => [
state.previewEnvironment,
- state.boundaryBBox,
+ state.teamSettings.boundaryBBox,
]);
useEffect(() => {
diff --git a/editor.planx.uk/src/@planx/components/FindProperty/Public/Public.test.tsx b/editor.planx.uk/src/@planx/components/FindProperty/Public/Public.test.tsx
index 7e5dee7686..baac38d734 100644
--- a/editor.planx.uk/src/@planx/components/FindProperty/Public/Public.test.tsx
+++ b/editor.planx.uk/src/@planx/components/FindProperty/Public/Public.test.tsx
@@ -34,8 +34,8 @@ const osAddressProps = {
"property.type": ["residential.HMO.parent"],
"property.localAuthorityDistrict": ["Southwark"],
"property.region": ["London"],
- "property.boundary.title.area": 1234.98,
- "property.boundary.title.area.hectares": 0.123498,
+ "property.boundary.title.area": 1232.22,
+ "property.boundary.title.area.hectares": 0.123222,
"property.boundary.title": {
geometry: {
type: "MultiPolygon",
@@ -83,8 +83,8 @@ const proposedAddressProps = {
},
"property.localAuthorityDistrict": ["Southwark"],
"property.region": ["London"],
- "property.boundary.title.area": 1234.98,
- "property.boundary.title.area.hectares": 0.123498,
+ "property.boundary.title.area": 1232.22,
+ "property.boundary.title.area.hectares": 0.123222,
"property.boundary.title": {
geometry: {
type: "MultiPolygon",
diff --git a/editor.planx.uk/src/@planx/components/FindProperty/Public/index.tsx b/editor.planx.uk/src/@planx/components/FindProperty/Public/index.tsx
index 3f91883a05..d3828330cf 100644
--- a/editor.planx.uk/src/@planx/components/FindProperty/Public/index.tsx
+++ b/editor.planx.uk/src/@planx/components/FindProperty/Public/index.tsx
@@ -8,8 +8,8 @@ import CardHeader from "@planx/components/shared/Preview/CardHeader";
import { squareMetresToHectares } from "@planx/components/shared/utils";
import { PublicProps } from "@planx/components/ui";
import area from "@turf/area";
-import { Feature } from "@turf/helpers";
import DelayedLoadingIndicator from "components/DelayedLoadingIndicator";
+import { Feature } from "geojson";
import { Store } from "pages/FlowEditor/lib/store";
import React, { useEffect, useState } from "react";
import useSWR from "swr";
diff --git a/editor.planx.uk/src/@planx/components/List/Editor.tsx b/editor.planx.uk/src/@planx/components/List/Editor.tsx
index d2975e52ed..bad6870d6f 100644
--- a/editor.planx.uk/src/@planx/components/List/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/List/Editor.tsx
@@ -13,14 +13,53 @@ import InputRowLabel from "ui/shared/InputRowLabel";
import { EditorProps, ICONS, InternalNotes, MoreInformation } from "../ui";
import { List, parseContent } from "./model";
-import { Zoo } from "./schemas/Zoo";
+import { ProposedAdvertisements } from "./schemas/Adverts";
+import { NonResidentialFloorspace } from "./schemas/Floorspace";
+import { BuildingDetailsGLA } from "./schemas/GLA/BuildingDetails";
+import { CommunalSpaceGLA } from "./schemas/GLA/CommunalSpace";
+import { ExistingAndProposedUsesGLA } from "./schemas/GLA/ExistingAndProposedUses";
+import { OpenSpaceGLA } from "./schemas/GLA/OpenSpace";
+import { ProtectedSpaceGLA } from "./schemas/GLA/ProtectedSpace";
+import { MaterialDetails } from "./schemas/Materials";
+import { ResidentialUnitsExisting } from "./schemas/ResidentialUnits/Existing";
+import { ResidentialUnitsGLANew } from "./schemas/ResidentialUnits/GLA/New";
+import { ResidentialUnitsGLARebuilt } from "./schemas/ResidentialUnits/GLA/Rebuilt";
+import { ResidentialUnitsGLARemoved } from "./schemas/ResidentialUnits/GLA/Removed";
+import { ResidentialUnitsGLARetained } from "./schemas/ResidentialUnits/GLA/Retained";
+import { ResidentialUnitsProposed } from "./schemas/ResidentialUnits/Proposed";
type Props = EditorProps;
export const SCHEMAS = [
- { name: "Zoo", schema: Zoo },
- // TODO: Residential units
- // TODO: Residential units (GLA)
+ { name: "Residential units - Existing", schema: ResidentialUnitsExisting },
+ { name: "Residential units - Proposed", schema: ResidentialUnitsProposed },
+ {
+ name: "Residential units (GLA) - New",
+ schema: ResidentialUnitsGLANew,
+ },
+ {
+ name: "Residential units (GLA) - Rebuilt",
+ schema: ResidentialUnitsGLARebuilt,
+ },
+ {
+ name: "Residential units (GLA) - Removed",
+ schema: ResidentialUnitsGLARemoved,
+ },
+ {
+ name: "Residential units (GLA) - Retained",
+ schema: ResidentialUnitsGLARetained,
+ },
+ { name: "Non-residential floorspace", schema: NonResidentialFloorspace },
+ {
+ name: "Existing and proposed uses (GLA)",
+ schema: ExistingAndProposedUsesGLA,
+ },
+ { name: "Material details", schema: MaterialDetails },
+ { name: "Building details (GLA)", schema: BuildingDetailsGLA },
+ { name: "Communal spaces (GLA)", schema: CommunalSpaceGLA },
+ { name: "Protected spaces (GLA)", schema: ProtectedSpaceGLA },
+ { name: "Open spaces (GLA)", schema: OpenSpaceGLA },
+ { name: "Proposed advertisements", schema: ProposedAdvertisements },
];
function ListComponent(props: Props) {
@@ -45,6 +84,7 @@ function ListComponent(props: Props) {
value={formik.values.title}
placeholder="Title"
onChange={formik.handleChange}
+ required
/>
@@ -62,6 +102,7 @@ function ListComponent(props: Props) {
value={formik.values.fn}
placeholder="Data Field"
onChange={formik.handleChange}
+ required
/>
diff --git a/editor.planx.uk/src/@planx/components/List/Public/Context.tsx b/editor.planx.uk/src/@planx/components/List/Public/Context.tsx
index 1f940805fb..8d7f033828 100644
--- a/editor.planx.uk/src/@planx/components/List/Public/Context.tsx
+++ b/editor.planx.uk/src/@planx/components/List/Public/Context.tsx
@@ -1,73 +1,232 @@
-import React, { createContext, ReactNode, useContext, useState } from "react";
+import {
+ getPreviouslySubmittedData,
+ makeData,
+} from "@planx/components/shared/utils";
+import { PublicProps } from "@planx/components/ui";
+import { FormikProps, useFormik } from "formik";
+import React, {
+ createContext,
+ PropsWithChildren,
+ useContext,
+ useState,
+} from "react";
-import { generateNewItem, Schema, UserData } from "../model";
+import {
+ generateInitialValues,
+ generateValidationSchema,
+ List,
+ Schema,
+ UserData,
+ UserResponse,
+} from "../model";
+import {
+ flatten,
+ sumIdenticalUnits,
+ sumIdenticalUnitsByDevelopmentType,
+} from "../utils";
interface ListContextValue {
schema: Schema;
- activeIndex: number | undefined;
- userData: UserData;
+ activeIndex: number;
addNewItem: () => void;
- saveItem: (index: number, updatedItem: UserData[0]) => void;
+ saveItem: () => Promise;
removeItem: (index: number) => void;
editItem: (index: number) => void;
cancelEditItem: () => void;
+ formik: FormikProps;
+ validateAndSubmitForm: () => void;
+ listProps: PublicProps;
+ /**
+ * @deprecated
+ * @description
+ * Hide features if the schema is temporarily mocking a "Page" component
+ * @todo
+ * Refactor and allow a single-item "Page" component to properly manage this
+ */
+ isPageComponent: boolean;
+ errors: {
+ addItem: boolean;
+ unsavedItem: boolean;
+ min: boolean;
+ max: boolean;
+ };
}
-interface ListProviderProps {
- children: ReactNode;
- schema: Schema;
-}
+type ListProviderProps = PropsWithChildren>;
const ListContext = createContext(undefined);
-export const ListProvider: React.FC = ({
- children,
- schema,
-}) => {
- const [activeIndex, setActiveIndex] = useState(0);
- const [userData, setUserData] = useState(
- schema.min === 0 ? [] : [generateNewItem(schema)],
+export const ListProvider: React.FC = (props) => {
+ const { schema, children, handleSubmit } = props;
+
+ const [activeIndex, setActiveIndex] = useState(
+ props.previouslySubmittedData ? -1 : 0,
);
- const addNewItem = () => {
- setUserData([...userData, generateNewItem(schema)]);
- setActiveIndex((prev) => (prev === undefined ? 0 : prev + 1));
+ const [activeItemInitialState, setActiveItemInitialState] = useState<
+ UserResponse | undefined
+ >(undefined);
+
+ const [addItemError, setAddItemError] = useState(false);
+ const [unsavedItemError, setUnsavedItemError] = useState(false);
+ const [minError, setMinError] = useState(false);
+ const [maxError, setMaxError] = useState(false);
+
+ const resetErrors = () => {
+ setMinError(false);
+ setMaxError(false);
+ setUnsavedItemError(false);
};
- const saveItem = (index: number, updatedItem: UserData[0]) => {
- setUserData((prev) =>
- prev.map((item, i) => (i === index ? updatedItem : item)),
- );
+ const addNewItem = async () => {
+ resetErrors();
+
+ // Do not allow a new item to be added if there's still an active item
+ if (activeIndex !== -1) return setAddItemError(true);
+
+ // Do not allow new item to be added if it will exceed max
+ if (schema.max && formik.values.userData.length === schema.max) {
+ return setMaxError(true);
+ }
+
+ // Add new item, and set to active
+ setAddItemError(false);
+ formik.values.userData.push(generateInitialValues(schema));
+ setActiveIndex(formik.values.userData.length - 1);
};
- const editItem = (index: number) => setActiveIndex(index);
+ const saveItem = async () => {
+ resetErrors();
+
+ const errors = await formik.validateForm();
+ const isValid = !errors.userData?.length;
+ if (isValid) {
+ exitEditMode();
+ setAddItemError(false);
+ }
+ };
const removeItem = (index: number) => {
+ resetErrors();
+
+ // If item is before currently active card, retain active card
if (activeIndex && index < activeIndex) {
- // If item is before currently active card, retain active card
- setActiveIndex((prev) => (prev === undefined ? 0 : prev - 1));
- } else if (index === activeIndex || index === 0) {
- // If item is currently in Edit mode, exit Edit mode
- cancelEditItem();
+ setActiveIndex((prev) => (prev === -1 ? 0 : prev - 1));
}
// Remove item from userData
- setUserData((prev) => prev.filter((_, i) => i !== index));
+ formik.setFieldValue(
+ "userData",
+ formik.values.userData.filter((_, i) => i !== index),
+ );
};
- const cancelEditItem = () => setActiveIndex(undefined);
+ const validateAndSubmitForm = () => {
+ // Do not allow submissions with an unsaved item
+ if (activeIndex !== -1) return setUnsavedItemError(true);
+
+ // Manually validate minimum number of items
+ if (formik.values.userData.length < schema.min) {
+ return setMinError(true);
+ }
+
+ formik.handleSubmit();
+ };
+
+ const cancelEditItem = () => {
+ activeItemInitialState
+ ? resetItemToPreviousState()
+ : removeItem(activeIndex);
+
+ setActiveItemInitialState(undefined);
+
+ exitEditMode();
+ };
+
+ const editItem = (index: number) => {
+ setActiveItemInitialState(formik.values.userData[index]);
+ setActiveIndex(index);
+ };
+
+ const getInitialValues = () => {
+ const previousValues = getPreviouslySubmittedData(props);
+ if (previousValues) return previousValues;
+
+ return schema.min ? [generateInitialValues(schema)] : [];
+ };
+
+ const exitEditMode = () => setActiveIndex(-1);
+
+ const resetItemToPreviousState = () =>
+ formik.setFieldValue(`userData[${activeIndex}]`, activeItemInitialState);
+
+ const isPageComponent = schema.max === 1;
+
+ const formik = useFormik({
+ initialValues: {
+ userData: getInitialValues(),
+ },
+ onSubmit: (values) => {
+ // defaultPassportData (array) is used when coming "back"
+ const defaultPassportData = makeData(props, values.userData)?.["data"];
+
+ // flattenedPassportData makes individual list items compatible with Calculate components
+ const flattenedPassportData = flatten(defaultPassportData, { depth: 2 });
+
+ // basic example of general summary stats we can add onSubmit:
+ // 1. count of items/responses
+ // 2. if the schema includes a field that sets fn = "identicalUnits", sum of total units
+ // 3. if the schema includes a field that sets fn = "development" & fn = "identicalUnits", sum of total units by development "val"
+ const totalUnits = sumIdenticalUnits(props.fn, defaultPassportData);
+ const totalUnitsByDevelopmentType = sumIdenticalUnitsByDevelopmentType(
+ props.fn,
+ defaultPassportData,
+ );
+
+ const summaries = {
+ [`${props.fn}.total.listItems`]:
+ defaultPassportData[`${props.fn}`].length,
+ ...(totalUnits > 0 && {
+ [`${props.fn}.total.units`]: totalUnits,
+ }),
+ ...(totalUnits > 0 &&
+ Object.keys(totalUnitsByDevelopmentType).length > 0 &&
+ totalUnitsByDevelopmentType),
+ };
+
+ handleSubmit?.({
+ data: {
+ ...defaultPassportData,
+ ...flattenedPassportData,
+ ...summaries,
+ },
+ });
+ },
+ validateOnBlur: false,
+ validateOnChange: false,
+ validationSchema: generateValidationSchema(schema),
+ });
return (
{children}
diff --git a/editor.planx.uk/src/@planx/components/List/Public/Fields.tsx b/editor.planx.uk/src/@planx/components/List/Public/Fields.tsx
index 59150f431b..961e219c8c 100644
--- a/editor.planx.uk/src/@planx/components/List/Public/Fields.tsx
+++ b/editor.planx.uk/src/@planx/components/List/Public/Fields.tsx
@@ -1,137 +1,227 @@
import Box from "@mui/material/Box";
import FormControl from "@mui/material/FormControl";
import FormLabel from "@mui/material/FormLabel";
+import Grid from "@mui/material/Grid";
import MenuItem from "@mui/material/MenuItem";
import RadioGroup from "@mui/material/RadioGroup";
+import { visuallyHidden } from "@mui/utils";
+import { getIn } from "formik";
+import { get } from "lodash";
import React from "react";
import SelectInput from "ui/editor/SelectInput";
import InputLabel from "ui/public/InputLabel";
+import ChecklistItem from "ui/shared/ChecklistItem";
+import ErrorWrapper from "ui/shared/ErrorWrapper";
import Input from "ui/shared/Input";
import InputRowLabel from "ui/shared/InputRowLabel";
-import { DESCRIPTION_TEXT } from "../../shared/constants";
+import { DESCRIPTION_TEXT, ERROR_MESSAGE } from "../../shared/constants";
import BasicRadio from "../../shared/Radio/BasicRadio";
-import type { NumberField, QuestionField, TextField } from "../model";
+import type {
+ ChecklistField,
+ NumberField,
+ QuestionField,
+ TextField,
+} from "../model";
+import { useListContext } from "./Context";
type Props = T & { id: string };
-export const TextFieldInput: React.FC> = ({
- id,
- data,
- required,
-}) => (
-
- {
- if (type === "email") return "email";
- else if (type === "phone") return "tel";
- return "text";
- })(data.type)}
- multiline={data.type && ["long", "extraLong"].includes(data.type)}
- bordered
- id={id}
- rows={
- data.type && ["long", "extraLong"].includes(data.type) ? 5 : undefined
- }
- name="text"
- required={required}
- inputProps={{
- "aria-describedby": [
- data.description ? DESCRIPTION_TEXT : "",
- // TODO: When handling errors, revisit this
- // formik.errors.text ? `${ERROR_MESSAGE}-${inputFieldId}` : "",
- ]
- .filter(Boolean)
- .join(" "),
- }}
- />
-
-);
+export const TextFieldInput: React.FC> = ({ id, data }) => {
+ const { formik, activeIndex } = useListContext();
-export const NumberFieldInput: React.FC> = ({
- id,
- data,
- required,
-}) => (
-
-
+ return (
+
{
+ if (type === "email") return "email";
+ else if (type === "phone") return "tel";
+ return "text";
+ })(data.type)}
+ multiline={data.type && ["long", "extraLong"].includes(data.type)}
bordered
- name="value"
- type="number"
- // value={formik.values.value}
- // onChange={formik.handleChange}
- // errorMessage={formik.errors.value as string}
+ value={formik.values.userData[activeIndex][data.fn]}
+ onChange={formik.handleChange}
+ errorMessage={get(formik.errors, ["userData", activeIndex, data.fn])}
+ id={id}
+ rows={
+ data.type && ["long", "extraLong"].includes(data.type) ? 5 : undefined
+ }
+ name={`userData[${activeIndex}]['${data.fn}']`}
+ required
inputProps={{
"aria-describedby": [
data.description ? DESCRIPTION_TEXT : "",
- // formik.errors.value ? `${ERROR_MESSAGE}-${props.id}` : "",
+ get(formik.errors, ["userData", activeIndex, data.fn])
+ ? `${ERROR_MESSAGE}-${id}`
+ : "",
]
.filter(Boolean)
.join(" "),
}}
- id={id}
/>
- {data.units && {data.units} }
-
-
-);
+
+ );
+};
-export const RadioFieldInput: React.FC> = ({
+export const NumberFieldInput: React.FC> = ({
id,
data,
-}) => (
-
- ({
- color: theme.palette.text.primary,
- "&.Mui-focused": {
- color: theme.palette.text.primary,
- },
- })}
- >
- {data.title}
-
- {/* */}
-
- {data.options.map(({ id, data }) => (
- {
+ const { formik, activeIndex } = useListContext();
+
+ return (
+
+
+ console.log("change radio")}
/>
- ))}
-
- {/* */}
-
-);
+ {data.units && {data.units} }
+
+
+ );
+};
-export const SelectFieldInput: React.FC> = ({
- id,
- data,
- required,
-}) => (
-
-
- {data.options.map((option) => (
-
- {option.data.text}
-
- ))}
-
-
-);
+export const RadioFieldInput: React.FC> = (props) => {
+ const { formik, activeIndex } = useListContext();
+ const { id, data } = props;
+
+ return (
+
+ ({
+ color: theme.palette.text.primary,
+ "&.Mui-focused": {
+ color: theme.palette.text.primary,
+ },
+ })}
+ >
+ {data.title}
+
+
+
+ {data.options.map(({ id, data }) => (
+
+ ))}
+
+
+
+ );
+};
+
+export const SelectFieldInput: React.FC> = (props) => {
+ const { formik, activeIndex } = useListContext();
+ const { id, data } = props;
+
+ return (
+
+
+
+ {data.options.map((option) => (
+
+ {option.data.text}
+
+ ))}
+
+
+
+ );
+};
+
+export const ChecklistFieldInput: React.FC> = (props) => {
+ const { formik, activeIndex } = useListContext();
+ const {
+ id,
+ data: { options, title, fn },
+ } = props;
+
+ const changeCheckbox =
+ (id: string) =>
+ async (
+ _checked: React.MouseEvent | undefined,
+ ) => {
+ let newCheckedIds;
+
+ if (formik.values.userData[activeIndex][fn].includes(id)) {
+ newCheckedIds = (
+ formik.values.userData[activeIndex][fn] as string[]
+ ).filter((x) => x !== id);
+ } else {
+ newCheckedIds = [...formik.values.userData[activeIndex][fn], id];
+ }
+
+ await formik.setFieldValue(
+ `userData[${activeIndex}]['${fn}']`,
+ newCheckedIds,
+ );
+ };
+
+ return (
+
+
+
+ {title}
+ {options.map((option) => (
+
+ ))}
+
+
+
+ );
+};
diff --git a/editor.planx.uk/src/@planx/components/List/Public/index.test.tsx b/editor.planx.uk/src/@planx/components/List/Public/index.test.tsx
index 16d17c1452..444148bedc 100644
--- a/editor.planx.uk/src/@planx/components/List/Public/index.test.tsx
+++ b/editor.planx.uk/src/@planx/components/List/Public/index.test.tsx
@@ -1,22 +1,23 @@
-import { within } from "@testing-library/react";
+import { screen, within } from "@testing-library/react";
+import { UserEvent } from "@testing-library/user-event/dist/types/setup/setup";
import { cloneDeep, merge } from "lodash";
import React from "react";
import { axe, setup } from "testUtils";
-import ListComponent, { Props } from "../Public";
-import { Zoo } from "../schemas/Zoo";
+import ListComponent from "../Public";
+import {
+ mockUnitsPayload,
+ mockUnitsProps,
+} from "../schemas/mocks/GenericUnits";
+import { mockMaxOneProps } from "../schemas/mocks/MaxOne";
+import { mockZooPayload, mockZooProps } from "../schemas/mocks/Zoo";
-const mockProps: Props = {
- fn: "mock",
- schema: Zoo,
- schemaName: "Zoo",
- title: "Mock Title",
- description: "Mock description",
-};
+jest.setTimeout(20_000);
+Element.prototype.scrollIntoView = jest.fn();
describe("Basic UI", () => {
it("renders correctly", () => {
- const { getByText } = setup( );
+ const { getByText } = setup( );
expect(getByText(/Mock Title/)).toBeInTheDocument();
expect(getByText(/Mock description/)).toBeInTheDocument();
@@ -24,7 +25,7 @@ describe("Basic UI", () => {
it("parses provided schema to render expected form", async () => {
const { getByLabelText, getByText, user, getByRole, queryAllByRole } =
- setup( );
+ setup( );
// Text inputs are generated from schema...
const textInput = getByLabelText(/What's their name?/) as HTMLInputElement;
@@ -90,20 +91,18 @@ describe("Basic UI", () => {
});
it("should not have any accessibility violations", async () => {
- const { container } = setup( );
+ const { container } = setup( );
const results = await axe(container);
expect(results).toHaveNoViolations();
});
});
-describe("Navigating back", () => {
- test.todo("it pre-populates list correctly");
-});
-
describe("Building a list", () => {
it("does not display a default item if the schema has no required minimum", () => {
- const mockWithMinZero = merge(cloneDeep(mockProps), { schema: { min: 0 } });
- const { queryByRole, getByRole } = setup(
+ const mockWithMinZero = merge(cloneDeep(mockZooProps), {
+ schema: { min: 0 },
+ });
+ const { queryByRole, getByTestId } = setup(
,
);
@@ -115,16 +114,14 @@ describe("Building a list", () => {
expect(activeListHeading).toBeNull();
// Button is present allow additional items to be added
- const addItemButton = getByRole("button", {
- name: /Add a new animal type/,
- });
+ const addItemButton = getByTestId("list-add-button");
expect(addItemButton).toBeInTheDocument();
expect(addItemButton).not.toBeDisabled();
});
it("displays a default item if the schema has a required minimum", () => {
const { getByRole, queryByLabelText } = setup(
- ,
+ ,
);
// Card present...
@@ -140,25 +137,34 @@ describe("Building a list", () => {
expect(inputField).not.toBeDisabled();
});
- test("Adding an item", async () => {
- const { getAllByRole, getByRole, user } = setup(
- ,
+ it("hides the index number in the card header and the 'add another' button if the schema has a max of 1", () => {
+ const { getAllByTestId, queryByTestId } = setup(
+ ,
);
- let cards = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
+ const cards = getAllByTestId(/list-card/);
+ expect(cards).toHaveLength(1);
+ expect(cards[0]).toHaveTextContent("Parking spaces");
+
+ const addItemButton = queryByTestId("list-add-button");
+ expect(addItemButton).not.toBeInTheDocument();
+ });
+
+ test("Adding an item", async () => {
+ const { getAllByTestId, getByTestId, user } = setup(
+ ,
);
+
+ let cards = getAllByTestId(/list-card/);
expect(cards).toHaveLength(1);
- const addItemButton = getByRole("button", {
- name: /Add a new animal type/,
- });
+ await fillInResponse(user);
+
+ const addItemButton = getByTestId("list-add-button");
await user.click(addItemButton);
// Item successfully added
- cards = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
+ cards = getAllByTestId(/list-card/);
expect(cards).toHaveLength(2);
// Old item is inactive
@@ -177,40 +183,25 @@ describe("Building a list", () => {
test("Editing an item", async () => {
// Setup three cards
- const { getAllByRole, getByRole, user, findByLabelText } = setup(
- ,
+ const { getAllByTestId, getByTestId, user } = setup(
+ ,
);
- const addItemButton = getByRole("button", {
- name: /Add a new animal type/,
- });
+ await fillInResponse(user);
+
+ const addItemButton = getByTestId("list-add-button");
+
await user.click(addItemButton);
+ await fillInResponse(user);
+
await user.click(addItemButton);
+ await fillInResponse(user);
- let cards = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
+ const cards = getAllByTestId(/list-card/);
expect(cards).toHaveLength(3);
let [firstCard, secondCard, thirdCard] = cards;
- // Final card is currently active
- expect(thirdCard).not.toBeNull();
- expect(
- within(thirdCard!).getByLabelText(/What's their name?/),
- ).toBeInTheDocument();
-
- // Hitting "cancel" takes us out of Edit mode
- const thirdCardCancelButton = within(thirdCard!).getByRole("button", {
- name: /Cancel/,
- });
- await user.click(thirdCardCancelButton);
-
- cards = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
- [firstCard, secondCard, thirdCard] = cards;
-
// No cards currently active
expect(
within(firstCard!).queryByLabelText(/What's their name?/),
@@ -233,10 +224,7 @@ describe("Building a list", () => {
});
await user.click(secondCardEditButton);
- cards = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
- [firstCard, secondCard, thirdCard] = cards;
+ [firstCard, secondCard, thirdCard] = getAllByTestId(/list-card/);
// Second card now editable
expect(
@@ -246,44 +234,39 @@ describe("Building a list", () => {
test("Removing an item when all cards are inactive", async () => {
// Setup three cards
- const { getAllByRole, getByRole, user, getByLabelText, queryAllByRole } =
- setup( );
+ const {
+ getByTestId,
+ getAllByTestId,
+ user,
+ getByLabelText,
+ queryAllByTestId,
+ } = setup( );
+
+ await fillInResponse(user);
+
+ const addItemButton = getByTestId("list-add-button");
- const addItemButton = getByRole("button", {
- name: /Add a new animal type/,
- });
await user.click(addItemButton);
+ await fillInResponse(user);
+
await user.click(addItemButton);
+ await fillInResponse(user);
- let cards = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
+ let cards = getAllByTestId(/list-card/);
expect(cards).toHaveLength(3);
let [firstCard, secondCard, thirdCard] = cards;
- const thirdCardCancelButton = within(thirdCard!).getByRole("button", {
- name: /Cancel/,
- });
- await user.click(thirdCardCancelButton);
-
- [firstCard, secondCard, thirdCard] = getAllByRole("heading", {
- level: 2,
- }).map((el) => el.closest("div"));
-
// Remove third card
const thirdCardRemoveButton = within(thirdCard!).getByRole("button", {
name: /Remove/,
});
+
await user.click(thirdCardRemoveButton);
- cards = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
+ cards = getAllByTestId(/list-card/);
expect(cards).toHaveLength(2);
- [firstCard, secondCard] = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
+ [firstCard, secondCard, thirdCard] = getAllByTestId(/list-card/);
// Previous items remain inactive
expect(
@@ -298,14 +281,10 @@ describe("Building a list", () => {
name: /Remove/,
});
await user.click(secondCardRemoveButton);
- cards = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
+ cards = getAllByTestId(/list-card/);
expect(cards).toHaveLength(1);
- [firstCard] = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
+ [firstCard] = getAllByTestId(/list-card/);
// Previous items remain inactive
expect(
@@ -317,9 +296,7 @@ describe("Building a list", () => {
name: /Remove/,
});
await user.click(firstCardRemoveButton);
- cards = queryAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
+ cards = queryAllByTestId(/list-card/);
expect(cards).toHaveLength(0);
// Add item back
@@ -332,17 +309,17 @@ describe("Building a list", () => {
test("Removing an item when another card is active", async () => {
// Setup two cards
- const { getAllByRole, getByRole, user, getByLabelText, queryAllByRole } =
- setup( );
+ const { getAllByTestId, getByTestId, user } = setup(
+ ,
+ );
+
+ await fillInResponse(user);
+
+ const addItemButton = getByTestId("list-add-button");
- const addItemButton = getByRole("button", {
- name: /Add a new animal type/,
- });
await user.click(addItemButton);
- const [firstCard, secondCard] = getAllByRole("heading", { level: 2 }).map(
- (el) => el.closest("div"),
- );
+ const [firstCard, secondCard] = getAllByTestId(/list-card/);
// Second card is active
expect(
@@ -354,9 +331,7 @@ describe("Building a list", () => {
name: /Remove/,
});
await user.click(firstCardRemoveButton);
- const cards = getAllByRole("heading", { level: 2 }).map((el) =>
- el.closest("div"),
- );
+ const cards = getAllByTestId(/list-card/);
expect(cards).toHaveLength(1);
// First card is active
@@ -364,15 +339,377 @@ describe("Building a list", () => {
within(cards[0]!).getByLabelText(/What's their name?/),
).toBeInTheDocument();
});
+
+ test("Cancelling an invalid (new) item removes it", async () => {
+ const { getAllByTestId, getByText, user, queryAllByTestId } = setup(
+ ,
+ );
+
+ let cards = getAllByTestId(/list-card/);
+ expect(cards).toHaveLength(1);
+
+ const cancelButton = getByText(/Cancel/, { selector: "button" });
+ await user.click(cancelButton);
+
+ cards = queryAllByTestId(/list-card/);
+ expect(cards).toHaveLength(0);
+ });
+
+ test("Cancelling a valid (existing) item resets previous state", async () => {
+ const { getByLabelText, getByText, user, queryByText } = setup(
+ ,
+ );
+
+ await fillInResponse(user);
+
+ expect(getByText("richard.parker@pi.com")).toBeInTheDocument();
+
+ const editButton = getByText(/Edit/, { selector: "button" });
+ await user.click(editButton);
+
+ const emailInput = getByLabelText(/email/);
+ await user.type(emailInput, "my.new.email@test.com");
+
+ const cancelButton = getByText(/Cancel/, { selector: "button" });
+ await user.click(cancelButton);
+
+ expect(queryByText("my.new.email@test.com")).not.toBeInTheDocument();
+ expect(getByText("richard.parker@pi.com")).toBeInTheDocument();
+ });
});
describe("Form validation and error handling", () => {
- test.todo("Text field");
- test.todo("Number field");
- test.todo("Question field - select");
- test.todo("Question field - radio");
+ test("form validation is triggered when saving an item", async () => {
+ const { user, getByRole, getAllByTestId } = setup(
+ ,
+ );
+
+ let errorMessages = getAllByTestId(/error-message-input/);
+
+ // Each field has an ErrorWrapper
+ expect(errorMessages).toHaveLength(mockZooProps.schema.fields.length);
+
+ // All are empty initially
+ errorMessages.forEach((message) => {
+ expect(message).toBeEmptyDOMElement();
+ });
+
+ await user.click(getByRole("button", { name: /Save/ }));
+
+ // Error wrappers persist
+ errorMessages = getAllByTestId(/error-message-input/);
+ expect(errorMessages).toHaveLength(mockZooProps.schema.fields.length);
+
+ // Each field is in an error state
+ errorMessages.forEach((message) => {
+ expect(message).not.toBeEmptyDOMElement();
+ });
+ });
+
+ /**
+ * These tests are not exhaustive tests of validation schemas, these can be tested in their respective model.test.ts files
+ * We are testing that the validation schemas are correctly "wired up" to out List component fields
+ */
+ describe("existing validation schemas are correctly referenced", () => {
+ test("text fields", async () => {
+ const { user, getByRole, getByTestId } = setup(
+ ,
+ );
+
+ const nameInput = screen.getByLabelText(/name/);
+ await user.type(
+ nameInput,
+ "This is a long string of text over one hundred and twenty characters, which should trigger the 'short' text validation warning",
+ );
+ await user.click(getByRole("button", { name: /Save/ }));
+
+ const nameInputErrorMessage = getByTestId(
+ /error-message-input-text-name/,
+ );
+
+ expect(nameInputErrorMessage).toHaveTextContent(
+ /Your answer must be 120 characters or fewer/,
+ );
+ });
+
+ test("number fields", async () => {
+ const { user, getByRole, getByTestId } = setup(
+ ,
+ );
+
+ const ageInput = screen.getByLabelText(/old/);
+ await user.type(ageInput, "-35");
+ await user.click(getByRole("button", { name: /Save/ }));
+
+ const ageInputErrorMessage = getByTestId(
+ /error-message-input-number-age/,
+ );
+
+ expect(ageInputErrorMessage).toHaveTextContent(/Enter a positive number/);
+ });
+
+ test("question fields", async () => {
+ const { user, getByRole, getByTestId } = setup(
+ ,
+ );
+
+ await user.click(getByRole("button", { name: /Save/ }));
+
+ const sizeInputErrorMessage = getByTestId(
+ /error-message-input-question-size/,
+ );
+
+ expect(sizeInputErrorMessage).toHaveTextContent(
+ /Select your answer before continuing/,
+ );
+ });
+
+ test("radio fields", async () => {
+ const { user, getByRole, getByTestId } = setup(
+ ,
+ );
+
+ await user.click(getByRole("button", { name: /Save/ }));
+
+ const cuteInputErrorMessage = getByTestId(
+ /error-message-input-question-cute/,
+ );
+
+ expect(cuteInputErrorMessage).toHaveTextContent(
+ /Select your answer before continuing/,
+ );
+ });
+
+ test("checklist fields", async () => {
+ const { user, getByRole, getByTestId } = setup(
+ ,
+ );
+
+ await user.click(getByRole("button", { name: /Save/ }));
+
+ const foodInputErrorMessage = getByTestId(
+ /error-message-input-checklist-food/,
+ );
+
+ expect(foodInputErrorMessage).toHaveTextContent(
+ /Select at least one option/,
+ );
+ });
+ });
+
+ test("an error displays if the minimum number of items is not met", async () => {
+ const { user, getByRole, getByTestId, getByText } = setup(
+ ,
+ );
+
+ const minNumberOfItems = mockZooProps.schema.min;
+ expect(minNumberOfItems).toEqual(1);
+
+ await user.click(getByRole("button", { name: /Cancel/ }));
+ await user.click(getByTestId("continue-button"));
+
+ const minItemsErrorMessage = getByText(
+ `You must provide at least ${minNumberOfItems} response(s)`,
+ );
+ expect(minItemsErrorMessage).toBeVisible();
+ });
+
+ test("an error displays if the maximum number of items is exceeded", async () => {
+ const { user, getAllByTestId, getByTestId, getByText } = setup(
+ ,
+ );
+ const addItemButton = getByTestId(/list-add-button/);
+
+ const maxNumberOfItems = mockZooProps.schema.max;
+ expect(maxNumberOfItems).toEqual(3);
+
+ // Complete three items
+ await fillInResponse(user);
+ await user.click(addItemButton);
+ await fillInResponse(user);
+ await user.click(addItemButton);
+ await fillInResponse(user);
+
+ const cards = getAllByTestId(/list-card/);
+ expect(cards).toHaveLength(3);
+
+ // Try to add a fourth
+ await user.click(getByTestId(/list-add-button/));
+
+ const maxItemsErrorMessage = getByText(
+ `You can provide at most ${maxNumberOfItems} response(s)`,
+ );
+ expect(maxItemsErrorMessage).toBeVisible();
+ });
+
+ test("an error displays if you add a new item, without saving the active item", async () => {
+ const { user, getByTestId, getByText, getByLabelText } = setup(
+ ,
+ );
+ // Start filling out item
+ const nameInput = getByLabelText(/name/);
+ await user.type(nameInput, "Richard Parker");
+
+ const emailInput = getByLabelText(/email/);
+ await user.type(emailInput, "richard.parker@pi.com");
+
+ // Try to add a new item
+ await user.click(getByTestId(/list-add-button/));
+
+ const activeItemErrorMessage = getByText(
+ /Please save all responses before adding another/,
+ );
+ expect(activeItemErrorMessage).toBeVisible();
+ });
+
+ test("an error displays if you continue, without saving the active item", async () => {
+ const { user, getByTestId, getByText, getByLabelText } = setup(
+ ,
+ );
+ // Start filling out item
+ const nameInput = getByLabelText(/name/);
+ await user.type(nameInput, "Richard Parker");
+
+ const emailInput = getByLabelText(/email/);
+ await user.type(emailInput, "richard.parker@pi.com");
+
+ // Try to continue
+ await user.click(getByTestId(/continue-button/));
+
+ const unsavedItemErrorMessage = getByText(
+ /Please save in order to continue/,
+ );
+ expect(unsavedItemErrorMessage).toBeVisible();
+ });
});
describe("Payload generation", () => {
- it.todo("generates a valid payload on submission");
+ it("generates a valid payload on submission (Zoo)", async () => {
+ const handleSubmit = jest.fn();
+ const { getByTestId, user } = setup(
+ ,
+ );
+ const addItemButton = getByTestId("list-add-button");
+
+ await fillInResponse(user);
+
+ await user.click(addItemButton);
+ await fillInResponse(user);
+
+ await user.click(screen.getByTestId("continue-button"));
+
+ expect(handleSubmit).toHaveBeenCalled();
+ expect(handleSubmit.mock.calls[0][0]).toMatchObject(mockZooPayload);
+ });
+
+ it("generates a valid payload with summary stats on submission (Units)", async () => {
+ const handleSubmit = jest.fn();
+ const { getByTestId, user, getByRole, getAllByRole, getByLabelText } =
+ setup( );
+
+ const addItemButton = getByTestId("list-add-button");
+
+ // Response 1
+ let saveButton = getByRole("button", { name: /Save/ });
+ let developmentSelect = getByRole("combobox");
+ let gardenYesRadio = getAllByRole("radio")[0];
+ let gardenNoRadio = getAllByRole("radio")[1];
+ let unitsNumberInput = getByLabelText(/identical units/);
+
+ await user.click(developmentSelect);
+ await user.click(getByRole("option", { name: /New build/ }));
+ await user.click(gardenYesRadio);
+ await user.type(unitsNumberInput, "1");
+ await user.click(saveButton);
+
+ // Response 2
+ await user.click(addItemButton);
+
+ saveButton = getByRole("button", { name: /Save/ });
+ developmentSelect = getByRole("combobox");
+ gardenYesRadio = getAllByRole("radio")[0];
+ gardenNoRadio = getAllByRole("radio")[1];
+ unitsNumberInput = getByLabelText(/identical units/);
+
+ await user.click(developmentSelect);
+ await user.click(getByRole("option", { name: /New build/ }));
+ await user.click(gardenNoRadio);
+ await user.type(unitsNumberInput, "2");
+ await user.click(saveButton);
+
+ // Response 3
+ await user.click(addItemButton);
+
+ saveButton = getByRole("button", { name: /Save/ });
+ developmentSelect = getByRole("combobox");
+ gardenYesRadio = getAllByRole("radio")[0];
+ gardenNoRadio = getAllByRole("radio")[1];
+ unitsNumberInput = getByLabelText(/identical units/);
+
+ await user.click(developmentSelect);
+ await user.click(getByRole("option", { name: /Change of use to a home/ }));
+ await user.click(gardenNoRadio);
+ await user.type(unitsNumberInput, "2");
+ await user.click(saveButton);
+
+ await user.click(getByTestId("continue-button"));
+
+ expect(handleSubmit).toHaveBeenCalled();
+ const output = handleSubmit.mock.calls[0][0];
+ expect(output).toMatchObject(mockUnitsPayload);
+ });
});
+
+describe("Navigating back", () => {
+ test("it pre-populates list correctly", async () => {
+ const { getAllByText, queryByLabelText, getAllByTestId } = setup(
+ ,
+ );
+
+ const cards = getAllByTestId(/list-card/);
+
+ // Two cards
+ expect(cards).toHaveLength(2);
+
+ // Both inactive
+ expect(queryByLabelText(/What's their name?/)).toBeNull();
+ expect(getAllByText(/What's their name?/)).toHaveLength(2);
+
+ // With the correct previous data
+ expect(getAllByText(/Richard Parker/)).toHaveLength(2);
+ });
+});
+
+/**
+ * Helper function to fill out a list item form
+ */
+const fillInResponse = async (user: UserEvent) => {
+ const nameInput = screen.getByLabelText(/name/);
+ await user.type(nameInput, "Richard Parker");
+
+ const emailInput = screen.getByLabelText(/email/);
+ await user.type(emailInput, "richard.parker@pi.com");
+
+ const ageInput = screen.getByLabelText(/old/);
+ await user.type(ageInput, "10");
+
+ const sizeSelect = screen.getByRole("combobox");
+ await user.click(sizeSelect);
+ await user.click(screen.getByRole("option", { name: /Medium/ }));
+
+ const cuteRadio = screen.getAllByRole("radio")[0];
+ await user.click(cuteRadio);
+
+ const eatCheckboxes = screen.getAllByRole("checkbox");
+ await user.click(eatCheckboxes[0]);
+ await user.click(eatCheckboxes[1]);
+ await user.click(eatCheckboxes[2]);
+
+ const saveButton = screen.getByRole("button", {
+ name: /Save/,
+ });
+ await user.click(saveButton);
+};
diff --git a/editor.planx.uk/src/@planx/components/List/Public/index.tsx b/editor.planx.uk/src/@planx/components/List/Public/index.tsx
index c1af007c9d..52ae77b23e 100644
--- a/editor.planx.uk/src/@planx/components/List/Public/index.tsx
+++ b/editor.planx.uk/src/@planx/components/List/Public/index.tsx
@@ -9,15 +9,18 @@ import TableCell from "@mui/material/TableCell";
import TableRow from "@mui/material/TableRow";
import Typography from "@mui/material/Typography";
import { PublicProps } from "@planx/components/ui";
-import React from "react";
+import React, { useEffect, useRef } from "react";
import { FONT_WEIGHT_SEMI_BOLD } from "theme";
+import ErrorWrapper from "ui/shared/ErrorWrapper";
import InputRow from "ui/shared/InputRow";
import Card from "../../shared/Preview/Card";
import CardHeader from "../../shared/Preview/CardHeader";
import type { Field, List } from "../model";
+import { formatSchemaDisplayValue } from "../utils";
import { ListProvider, useListContext } from "./Context";
import {
+ ChecklistFieldInput,
NumberFieldInput,
RadioFieldInput,
SelectFieldInput,
@@ -44,8 +47,8 @@ const CardButton = styled(Button)(({ theme }) => ({
/**
* Controller to return correct user input for field in schema
*/
-const InputField: React.FC = (props) => {
- const inputFieldId = `input-${props.type}-${props.index}`;
+const InputField: React.FC = (props) => {
+ const inputFieldId = `input-${props.type}-${props.data.fn}`;
switch (props.type) {
case "text":
@@ -57,67 +60,88 @@ const InputField: React.FC = (props) => {
return ;
}
return ;
+ case "checklist":
+ return ;
}
};
const ActiveListCard: React.FC<{
index: number;
-}> = ({ index }) => {
- const { schema, saveItem, cancelEditItem } = useListContext();
+}> = ({ index: i }) => {
+ const { schema, saveItem, cancelEditItem, errors, isPageComponent } =
+ useListContext();
+
+ const ref = useRef(null);
+ useEffect(() => {
+ if (ref.current) {
+ ref.current.scrollIntoView({ behavior: "smooth" });
+ }
+ }, []);
return (
- // TODO: This should be a HTML form
-
-
- {schema.type} {index + 1}
-
- {schema.fields.map((field, i) => (
-
-
-
- ))}
-
- saveItem(index, [])}
- >
- Save
-
- Cancel
-
-
+
+
+
+ {schema.type}
+ {!isPageComponent && ` ${i + 1}`}
+
+ {schema.fields.map((field, i) => (
+
+
+
+ ))}
+
+ await saveItem()}
+ >
+ Save
+
+ {!isPageComponent && Cancel }
+
+
+
);
};
const InactiveListCard: React.FC<{
index: number;
-}> = ({ index }) => {
- const { schema, userData, removeItem, editItem } = useListContext();
+}> = ({ index: i }) => {
+ const { schema, formik, removeItem, editItem, isPageComponent } =
+ useListContext();
return (
-
+
- {schema.type} {index + 1}
+ {schema.type}
+ {!isPageComponent && ` ${i + 1}`}
- {schema.fields.map((field, i) => (
-
+ {schema.fields.map((field, j) => (
+
{field.data.title}
- {userData[index][i]?.val}
+
+ {formatSchemaDisplayValue(
+ formik.values.userData[i][field.data.fn],
+ schema.fields[j],
+ )}
+
))}
- removeItem(index)}>
+ removeItem(i)}>
Remove
- editItem(index)}>
+ editItem(i)}>
{/* TODO: Is primary colour really right here? */}
Edit
@@ -127,11 +151,30 @@ const InactiveListCard: React.FC<{
);
};
-const Root = ({ title, description, info, policyRef, howMeasured }: Props) => {
- const { userData, activeIndex, schema, addNewItem } = useListContext();
+const Root = () => {
+ const {
+ formik,
+ validateAndSubmitForm,
+ activeIndex,
+ schema,
+ addNewItem,
+ errors,
+ listProps,
+ } = useListContext();
+
+ const { title, description, info, policyRef, howMeasured } = listProps;
+
+ const rootError: string =
+ (errors.min && `You must provide at least ${schema.min} response(s)`) ||
+ (errors.max && `You can provide at most ${schema.max} response(s)`) ||
+ "";
+
+ // Hide the "+ Add another" button if the schema has a max length of 1, unless the only item has been cancelled/removed (userData = [])
+ const shouldShowAddAnotherButton =
+ schema.max !== 1 || formik.values.userData.length < 1;
return (
- console.log({ userData })} isValid>
+
{
policyRef={policyRef}
howMeasured={howMeasured}
/>
- {userData.map((_, i) =>
- i === activeIndex ? (
-
- ) : (
-
- ),
- )}
-
- + Add a new {schema.type.toLowerCase()} type
-
+
+ <>
+ {formik.values.userData.map((_, i) =>
+ i === activeIndex ? (
+
+ ) : (
+
+ ),
+ )}
+ {shouldShowAddAnotherButton && (
+
+
+ + Add another {schema.type.toLowerCase()}
+
+
+ )}
+ >
+
);
};
function ListComponent(props: Props) {
- // TODO: Validate min / max
- // TODO: Validate user input against schema fields, track errors
- // TODO: On submit generate a payload
-
return (
-
-
+
+
);
}
diff --git a/editor.planx.uk/src/@planx/components/List/model.ts b/editor.planx.uk/src/@planx/components/List/model.ts
index 415411758b..759aae527b 100644
--- a/editor.planx.uk/src/@planx/components/List/model.ts
+++ b/editor.planx.uk/src/@planx/components/List/model.ts
@@ -1,10 +1,18 @@
-import { NumberInput } from "../NumberInput/model";
+import { cloneDeep } from "lodash";
+import { array, BaseSchema, object, ObjectSchema, string } from "yup";
+
+import { checklistValidationSchema } from "../Checklist/model";
+import { NumberInput, numberInputValidationSchema } from "../NumberInput/model";
import { MoreInformation, Option, parseMoreInformation } from "../shared";
-import { TextInput } from "../TextInput/model";
+import {
+ TextInput,
+ userDataSchema as textInputValidationSchema,
+} from "../TextInput/model";
import { SCHEMAS } from "./Editor";
/**
- * Simplified custom QuestionInput as existing model is too complex for our needs currently
+ * Simplified custom QuestionInput
+ * Existing model is too complex for our needs currently
* If adding more properties here, check if re-using existing model could be an option
*/
interface QuestionInput {
@@ -13,28 +21,45 @@ interface QuestionInput {
options: Option[];
}
-// TODO: Add summary fields for inactive view?
+interface ChecklistInput {
+ title: string;
+ description?: string;
+ options: Option[];
+}
+
+/**
+ * As above, we need a simplified validation schema for QuestionsInputs
+ */
+const questionInputValidationSchema = (data: QuestionInput) =>
+ string()
+ .oneOf(data.options.map((option) => option.data.val || option.data.text))
+ .required("Select your answer before continuing");
+
export type TextField = {
type: "text";
- required?: boolean;
data: TextInput & { fn: string };
};
+
export type NumberField = {
type: "number";
- required?: boolean;
data: NumberInput & { fn: string };
};
+
export type QuestionField = {
type: "question";
- required?: boolean;
data: QuestionInput & { fn: string };
};
+export type ChecklistField = {
+ type: "checklist";
+ required?: true;
+ data: ChecklistInput & { fn: string };
+};
/**
* Represents the input types available in the List component
* Existing models are used to allow to us to re-use existing components, maintaining consistend UX/UI
*/
-export type Field = TextField | NumberField | QuestionField;
+export type Field = TextField | NumberField | QuestionField | ChecklistField;
/**
* Models the form displayed to the user
@@ -46,6 +71,10 @@ export interface Schema {
max?: number;
}
+export type UserResponse = Record;
+
+export type UserData = { userData: UserResponse[] };
+
export interface List extends MoreInformation {
fn: string;
title: string;
@@ -55,28 +84,66 @@ export interface List extends MoreInformation {
}
export const parseContent = (data: Record | undefined): List => ({
- fn: data?.fn || "",
+ fn: data?.fn,
title: data?.title,
description: data?.description,
schemaName: data?.schemaName || SCHEMAS[0].name,
- schema: data?.schema || SCHEMAS[0].schema,
+ schema: cloneDeep(data?.schema) || SCHEMAS[0].schema,
...parseMoreInformation(data),
});
-interface Response {
- type: Field["type"];
- val: string;
- fn: string;
-}
+/**
+ * For each field in schema, return a map of Yup validation schema
+ * Matches both the field type and data
+ */
+const generateValidationSchemaForFields = (
+ fields: Field[],
+): ObjectSchema> => {
+ const fieldSchemas: { [key: string]: BaseSchema } = {};
+
+ fields.forEach(({ data, type }) => {
+ switch (type) {
+ case "text":
+ fieldSchemas[data.fn] = textInputValidationSchema(data);
+ break;
+ case "number":
+ fieldSchemas[data.fn] = numberInputValidationSchema(data);
+ break;
+ case "question":
+ fieldSchemas[data.fn] = questionInputValidationSchema(data);
+ break;
+ case "checklist":
+ fieldSchemas[data.fn] = checklistValidationSchema(data);
+ break;
+ }
+ });
-export type UserData = Response[][];
+ const validationSchema = object().shape(fieldSchemas);
-export const generateNewItem = (schema: Schema): Response[] => {
- const item = schema.fields.map((field) => ({
- type: field.type,
- val: "",
- fn: field.data.fn,
- }));
+ return validationSchema;
+};
+
+/**
+ * Generate a Yup validation schema which matches the incoming generic Schema
+ */
+export const generateValidationSchema = (schema: Schema) => {
+ const fieldvalidationSchema = generateValidationSchemaForFields(
+ schema.fields,
+ );
+
+ const validationSchema = object().shape({
+ userData: array().of(fieldvalidationSchema),
+ });
+
+ return validationSchema;
+};
- return item;
+export const generateInitialValues = (schema: Schema): UserResponse => {
+ const initialValues: UserResponse = {};
+ schema.fields.forEach((field) => {
+ field.type === "checklist"
+ ? (initialValues[field.data.fn] = [])
+ : (initialValues[field.data.fn] = "");
+ });
+ return initialValues;
};
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/Adverts.ts b/editor.planx.uk/src/@planx/components/List/schemas/Adverts.ts
new file mode 100644
index 0000000000..3a2e9461d3
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/Adverts.ts
@@ -0,0 +1,41 @@
+import { Schema } from "@planx/components/List/model";
+
+export const ProposedAdvertisements: Schema = {
+ type: "Proposed advertisements",
+ fields: [
+ {
+ type: "number",
+ data: {
+ title: "How many fascia signs are you applying for?",
+ fn: "fascia",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many projecting or hanging signs are you applying for?",
+ fn: "projecting",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many hoardings are you applying for?",
+ fn: "hoarding",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many other advertisements are you applying for?",
+ fn: "other",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+ max: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/Floorspace.ts b/editor.planx.uk/src/@planx/components/List/schemas/Floorspace.ts
new file mode 100644
index 0000000000..f8476d0e3f
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/Floorspace.ts
@@ -0,0 +1,206 @@
+import { Schema } from "@planx/components/List/model";
+
+export const NonResidentialFloorspace: Schema = {
+ type: "Non-residential floorspace",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "Use class or type",
+ fn: "useClass",
+ options: [
+ { id: "bTwo", data: { text: "B2 - General industry", val: "bTwo" } },
+ {
+ id: "bEight",
+ data: { text: "B8 - Storage and distribution", val: "bEight" },
+ },
+ { id: "cOne", data: { text: "C1 - Hotels", val: "cOne" } },
+ {
+ id: "cTwo",
+ data: { text: "C2 - Residential institutions", val: "cTwo" },
+ },
+ {
+ id: "cTwoA",
+ data: {
+ text: "C2a - Secure residential institutions",
+ val: "cTwoA",
+ },
+ },
+ {
+ id: "eAShops",
+ data: {
+ text: "E(a) - Retail (other than hot food): Shops",
+ val: "eAShops",
+ },
+ },
+ {
+ id: "eANetTradeableArea",
+ data: {
+ text: "E(a) - Retail (other than hot food): Net tradeable area",
+ val: "eANetTradeableArea",
+ },
+ },
+ {
+ id: "eB",
+ data: {
+ text: "E(b) - Sale of food and drink (mostly consumed on the premises)",
+ val: "eB",
+ },
+ },
+ {
+ id: "eCI",
+ data: { text: "E(c)(i) - Financial services", val: "eCI" },
+ },
+ {
+ id: "eCII",
+ data: {
+ text: "E(c)(ii) - Professional services (other than health or medical)",
+ val: "eCII",
+ },
+ },
+ {
+ id: "eCIII",
+ data: { text: "E(c)(iii) - Any other service", val: "eCIII" },
+ },
+ {
+ id: "eD",
+ data: {
+ text: "E(d) - Indoor sports, recreation or fitness",
+ val: "eD",
+ },
+ },
+ {
+ id: "eF",
+ data: { text: "E(f) - Creche or day nursery", val: "eF" },
+ },
+ {
+ id: "eGI",
+ data: {
+ text: "E(g)(i) - Office (to carry out operational or administrative functions)",
+ val: "eGI",
+ },
+ },
+ {
+ id: "eGII",
+ data: {
+ text: "E(g)(ii) - Research and development of products or processes",
+ val: "eGII",
+ },
+ },
+ {
+ id: "eGIII",
+ data: {
+ text: "E(g)(iii) - Any industrial process (can be carried out within a residential area)",
+ val: "eGIII",
+ },
+ },
+ {
+ id: "fOneA",
+ data: {
+ text: "F1(a) - Education",
+ val: "fOneA",
+ },
+ },
+ {
+ id: "fOneB",
+ data: {
+ text: "F1(b) - Display works of art",
+ val: "fOneB",
+ },
+ },
+ {
+ id: "fOneC",
+ data: {
+ text: "F1(c) - Museum",
+ val: "fOneC",
+ },
+ },
+ {
+ id: "fOneD",
+ data: {
+ text: "F1(d) - Public library",
+ val: "fOneD",
+ },
+ },
+ {
+ id: "fOneE",
+ data: {
+ text: "F1(e) - Public hall or exhibition hall",
+ val: "fOneE",
+ },
+ },
+ {
+ id: "fOneF",
+ data: {
+ text: "F1(f) - Public worship or religious instruction",
+ val: "fOneF",
+ },
+ },
+ {
+ id: "fOneG",
+ data: {
+ text: "F1(g) - Law court",
+ val: "fOneG",
+ },
+ },
+ {
+ id: "fTwoA",
+ data: {
+ text: "F2(a) - Shop selling essential goods (not over 280sqm and no other such facility in 1000m radius)",
+ val: "fTwoA",
+ },
+ },
+ {
+ id: "fTwoB",
+ data: {
+ text: "F2(b) - Hall or meeting place for local community (principal use)",
+ val: "fTwoB",
+ },
+ },
+ {
+ id: "fTwoC",
+ data: { text: "F2(c) - Outdoor sport or recreation", val: "fTwoC" },
+ },
+ {
+ id: "fTwoD",
+ data: {
+ text: "F2(d) - Indoor or outdoor swimming pool or skating rink",
+ val: "fTwoD",
+ },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the existing gross internal floor area?",
+ units: "m²",
+ fn: "area.existing",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title:
+ "What is the gross internal floor area to be lost by change of use or demolition?",
+ units: "m²",
+ fn: "area.loss",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title:
+ "What is the total gross internal floor area proposed (including change of use)?",
+ units: "m²",
+ fn: "area.proposed",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/BuildingDetails.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/BuildingDetails.ts
new file mode 100644
index 0000000000..76844adf59
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/BuildingDetails.ts
@@ -0,0 +1,34 @@
+import { Schema } from "@planx/components/List/model";
+import { TextInputType } from "@planx/components/TextInput/model";
+
+export const BuildingDetailsGLA: Schema = {
+ type: "Building detail",
+ fields: [
+ {
+ type: "text",
+ data: {
+ title: "Building reference",
+ fn: "reference",
+ type: TextInputType.Short,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the maximum height of the building?",
+ units: "m",
+ fn: "height",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many storeys does the building have?",
+ fn: "storeys",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/CommunalSpace.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/CommunalSpace.ts
new file mode 100644
index 0000000000..e942a3b989
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/CommunalSpace.ts
@@ -0,0 +1,36 @@
+import { Schema } from "@planx/components/List/model";
+
+export const CommunalSpaceGLA: Schema = {
+ type: "Unit of communal space",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "Is this unit of communal space lost or gained?",
+ fn: "development",
+ options: [
+ { id: "gain", data: { text: "Gained", val: "gain" } },
+ { id: "loss", data: { text: "Lost", val: "loss" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the Gross Internal Floor Area (GIA) of this unit?",
+ units: "m²",
+ fn: "area",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many identical units does the description above apply to?",
+ fn: "identicalUnits",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/ExistingAndProposedUses.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/ExistingAndProposedUses.ts
new file mode 100644
index 0000000000..d7077f7e54
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/ExistingAndProposedUses.ts
@@ -0,0 +1,86 @@
+import { Schema } from "@planx/components/List/model";
+
+export const ExistingAndProposedUsesGLA: Schema = {
+ type: "Existing and proposed uses",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "What is the use class?",
+ fn: "useClass",
+ options: [
+ { id: "bTwo", data: { text: "B2 - General industry", val: "bTwo" } },
+ {
+ id: "bEight",
+ data: { text: "B8 - Storage and distribution", val: "bEight" },
+ },
+ { id: "cOne", data: { text: "C1 - Hotels", val: "cOne" } },
+ {
+ id: "cTwo",
+ data: { text: "C2 - Residential institutions", val: "cTwo" },
+ },
+ {
+ id: "cTwoA",
+ data: {
+ text: "C2a - Secure residential institutions",
+ val: "cTwoA",
+ },
+ },
+ {
+ id: "cThree",
+ data: { text: "C3 - Dwellinghouses", val: "cThree" },
+ },
+ {
+ id: "cFour",
+ data: { text: "C4 - Houses in multiple occupation", val: "cFour" },
+ },
+ {
+ id: "e",
+ data: { text: "E - Commercial, business and service", val: "e" },
+ },
+ {
+ id: "fOne",
+ data: {
+ text: "F1 - Learning and non-residential institutions",
+ val: "fOne",
+ },
+ },
+ {
+ id: "fTwo",
+ data: { text: "F2 - Local community uses", val: "fTwo" },
+ },
+ { id: "SG", data: { text: "Sui generis", val: "SG" } },
+ { id: "unknown", data: { text: "Unknown", val: "unknown" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the existing gross internal floor area?",
+ units: "m²",
+ fn: "area.existing",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the gross internal floor area lost?",
+ units: "m²",
+ fn: "area.loss",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the gross internal floor area gained?",
+ units: "m²",
+ fn: "area.gain",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/OpenSpace.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/OpenSpace.ts
new file mode 100644
index 0000000000..9e167b256a
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/OpenSpace.ts
@@ -0,0 +1,147 @@
+import { Schema } from "@planx/components/List/model";
+import { TextInputType } from "@planx/components/TextInput/model";
+
+export const OpenSpaceGLA: Schema = {
+ type: "Open space details",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "What is the project's impact on this open space?",
+ fn: "development",
+ options: [
+ { id: "loss", data: { text: "Loss", val: "loss" } },
+ { id: "gain", data: { text: "Gain", val: "gain" } },
+ {
+ id: "changeOfUse",
+ data: { text: "Change of use", val: "changeOfUse" },
+ },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the type of this open space?",
+ fn: "type",
+ options: [
+ { id: "park", data: { text: "Parks and gardens", val: "park" } },
+ {
+ id: "natural",
+ data: { text: "Natural and semi-natural", val: "natural" },
+ },
+ {
+ id: "greenCorridor",
+ data: { text: "Green corridors", val: "greenCorridor" },
+ },
+ {
+ id: "sport",
+ data: { text: "Outdoor sports facilities", val: "sport" },
+ },
+ { id: "amenity", data: { text: "Amenity", val: "amenity" } },
+ {
+ id: "children",
+ data: {
+ text: "Provision for children and young people",
+ val: "children",
+ },
+ },
+ {
+ id: "allotment",
+ data: {
+ text: "Allotments, community gardens and city farms",
+ val: "allotment",
+ },
+ },
+ {
+ id: "burial",
+ data: {
+ text: "Cemeteries, churchyards and other burial grounds",
+ val: "burial",
+ },
+ },
+ {
+ id: "fringe",
+ data: { text: "Countryside in urban fringe areas", val: "fringe" },
+ },
+ { id: "civic", data: { text: "Civic spaces", val: "civic" } },
+ {
+ id: "brownfield",
+ data: { text: "Brownfield land", val: "brownfield" },
+ },
+ {
+ id: "nonResidential",
+ data: {
+ text: "Non-residential institution grounds or garden",
+ val: "nonResidential",
+ },
+ },
+ {
+ id: "residential",
+ data: { text: "Residential garden", val: "residential" },
+ },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the designation of this open space?",
+ fn: "designation",
+ options: [
+ { id: "greenBelt", data: { text: "Green Belt", val: "greenBelt" } },
+ {
+ id: "metropolitan",
+ data: { text: "Metropolitan Open Land", val: "metropolitan" },
+ },
+ { id: "local", data: { text: "Local Open Spaces", val: "local" } },
+ { id: "other", data: { text: "Other designation", val: "other" } },
+ { id: "none", data: { text: "Not designated", val: "none" } },
+ ],
+ },
+ },
+ {
+ type: "text",
+ data: {
+ title: "Describe the open space",
+ fn: "description",
+ type: TextInputType.Long,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What is the access to this open space?",
+ fn: "access",
+ options: [
+ { id: "restricted", data: { text: "Restricted", val: "restricted" } },
+ {
+ id: "unrestricted",
+ data: { text: "Unrestricted", val: "unrestricted" },
+ },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the area of this open space?",
+ units: "ha",
+ fn: "area",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Do the changes to this open space involve a land swap?",
+ fn: "swap",
+ options: [
+ { id: "true", data: { text: "Yes", val: "true" } },
+ { id: "false", data: { text: "No", val: "false" } },
+ ],
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/GLA/ProtectedSpace.ts b/editor.planx.uk/src/@planx/components/List/schemas/GLA/ProtectedSpace.ts
new file mode 100644
index 0000000000..8118290c96
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/GLA/ProtectedSpace.ts
@@ -0,0 +1,98 @@
+import { Schema } from "@planx/components/List/model";
+import { TextInputType } from "@planx/components/TextInput/model";
+
+export const ProtectedSpaceGLA: Schema = {
+ type: "Protected space details",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "What is the project's impact on this protected space?",
+ fn: "development",
+ options: [
+ { id: "loss", data: { text: "Loss", val: "loss" } },
+ { id: "gain", data: { text: "Gain", val: "gain" } },
+ {
+ id: "changeOfUse",
+ data: { text: "Change of use", val: "changeOfUse" },
+ },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the designation of this protected space?",
+ fn: "designation",
+ options: [
+ {
+ id: "SSSI",
+ data: { text: "Sites of Special Scientific Interest", val: "SSSI" },
+ },
+ {
+ id: "localReserve",
+ data: { text: "Local Nature Reserve", val: "localReserve" },
+ },
+ {
+ id: "metropolitan",
+ data: {
+ text: "Site of Metropolitan Importance",
+ val: "metropolitan",
+ },
+ },
+ {
+ id: "boroughGradeOne",
+ data: {
+ text: "Site of Borough Grade 1 Importance",
+ val: "boroughGradeOne",
+ },
+ },
+ {
+ id: "boroughGradeTwo",
+ data: {
+ text: "Site of Borough Grade 2 Importance",
+ val: "boroughGradeTwo",
+ },
+ },
+ {
+ id: "local",
+ data: { text: "Site of Local Importance", val: "local" },
+ },
+ { id: "none", data: { text: "Not designated", val: "none" } },
+ ],
+ },
+ },
+ {
+ type: "text",
+ data: {
+ title: "Describe the protected space",
+ fn: "description",
+ type: TextInputType.Long,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What is the access to this open space?",
+ fn: "access",
+ options: [
+ { id: "restricted", data: { text: "Restricted", val: "restricted" } },
+ {
+ id: "unrestricted",
+ data: { text: "Unrestricted", val: "unrestricted" },
+ },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the area of this open space?",
+ units: "ha",
+ fn: "area",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/Materials.ts b/editor.planx.uk/src/@planx/components/List/schemas/Materials.ts
new file mode 100644
index 0000000000..414f693644
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/Materials.ts
@@ -0,0 +1,66 @@
+import { Schema } from "@planx/components/List/model";
+import { TextInputType } from "@planx/components/TextInput/model";
+
+export const MaterialDetails: Schema = {
+ type: "Material",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "Type",
+ fn: "type",
+ options: [
+ { id: "wall", data: { text: "External walls", val: "wall" } },
+ {
+ id: "window",
+ data: { text: "Windows", val: "window" },
+ },
+ { id: "door", data: { text: "Doors", val: "door" } },
+ {
+ id: "roof",
+ data: { text: "Roof", val: "roof" },
+ },
+ {
+ id: "boundary",
+ data: {
+ text: "Fences, walls and gates",
+ val: "boundary",
+ },
+ },
+ {
+ id: "surface",
+ data: {
+ text: "External ground materials for access and parking",
+ val: "surface",
+ },
+ },
+ {
+ id: "lighting",
+ data: { text: "Lighting", val: "lighting" },
+ },
+ {
+ id: "other",
+ data: { text: "Others", val: "other" },
+ },
+ ],
+ },
+ },
+ {
+ type: "text",
+ data: {
+ title: "Existing material description",
+ fn: "existing",
+ type: TextInputType.Short,
+ },
+ },
+ {
+ type: "text",
+ data: {
+ title: "Proposed material description",
+ fn: "proposed",
+ type: TextInputType.Short,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/Existing.ts b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/Existing.ts
new file mode 100644
index 0000000000..f7f7c5ac86
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/Existing.ts
@@ -0,0 +1,72 @@
+import { Schema } from "../../model";
+
+export const ResidentialUnitsExisting: Schema = {
+ type: "Existing residential unit",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "What best describes the tenure of this unit?",
+ fn: "tenure",
+ options: [
+ { id: "MH", data: { text: "Market housing", val: "MH" } },
+ {
+ id: "SAIR",
+ data: { text: "Social, affordable or interim rent", val: "SAIR" },
+ },
+ {
+ id: "AHO",
+ data: { text: "Affordable home ownership", val: "AHO" },
+ },
+ { id: "SH", data: { text: "Starter homes", val: "SH" } },
+ {
+ id: "selfCustomBuild",
+ data: {
+ text: "Self-build and custom build",
+ val: "selfCustomBuild",
+ },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the type of this unit?",
+ fn: "type",
+ options: [
+ { id: "house", data: { text: "House", val: "house" } },
+ {
+ id: "flat",
+ data: { text: "Flat, apartment or maisonette", val: "flat" },
+ },
+ {
+ id: "sheltered",
+ data: { text: "Sheltered housing", val: "sheltered" },
+ },
+ { id: "studio", data: { text: "Studio or bedsit", val: "studio" } },
+ { id: "cluster", data: { text: "Cluster flat", val: "cluster" } },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many bedrooms does this unit have?",
+ fn: "bedrooms",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many identical units does the description above apply to?",
+ fn: "identicalUnits",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/New.ts b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/New.ts
new file mode 100644
index 0000000000..1c1e5d203d
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/New.ts
@@ -0,0 +1,236 @@
+import { Schema } from "@planx/components/List/model";
+
+export const ResidentialUnitsGLANew: Schema = {
+ type: "New residential unit",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "What development does this unit result from?",
+ fn: "development",
+ options: [
+ { id: "newBuild", data: { text: "New build", val: "newBuild" } },
+ {
+ id: "changeOfUseFrom",
+ data: {
+ text: "Change of use of existing single home",
+ val: "changeOfUseFrom",
+ },
+ },
+ {
+ id: "changeOfUseTo",
+ data: { text: "Change of use to a home", val: "changeOfUseTo" },
+ },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the number of habitable rooms of this unit?",
+ fn: "habitable",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the number of bedrooms of this unit?",
+ fn: "bedrooms",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Which best describes the tenure of this unit?",
+ fn: "tenure",
+ options: [
+ { id: "LAR", data: { text: "London Affordable Rent", val: "LAR" } },
+ {
+ id: "AR",
+ data: {
+ text: "Affordable rent (not at LAR benchmark rents)",
+ val: "AR",
+ },
+ },
+ { id: "SR", data: { text: "Social rent", val: "SR" } },
+ { id: "LRR", data: { text: "London Living Rent", val: "LRR" } },
+ {
+ id: "sharedEquity",
+ data: { text: "Shared equity", val: "sharedEquity" },
+ },
+ { id: "LSO", data: { text: "London Shared Ownership", val: "LSO" } },
+ { id: "DMS", data: { text: "Discount market sale", val: "DMS" } },
+ { id: "DMR", data: { text: "Discount market rent", val: "DMR" } },
+ {
+ id: "DMRLLR",
+ data: {
+ text: "Discount market rent (charged at London Living Rents)",
+ val: "DMRLLR",
+ },
+ },
+ {
+ id: "marketForRent",
+ data: { text: "Market for rent", val: "marketForRent" },
+ },
+ { id: "SH", data: { text: "Starter homes", val: "SH" } },
+ {
+ id: "selfCustomBuild",
+ data: {
+ text: "Self-build and custom build",
+ val: "selfCustomBuild",
+ },
+ },
+ {
+ id: "marketForSale",
+ data: { text: "Market for sale", val: "marketForSale" },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "checklist",
+ data: {
+ title: "Is this unit compliant with any of the following?",
+ fn: "compliance",
+ options: [
+ {
+ id: "m42",
+ data: { text: "Part M4(2) of the Building Regulations 2010" },
+ },
+ {
+ id: "m432a",
+ data: { text: "Part M4(3)(2a) of the Building Regulations 2010" },
+ },
+ {
+ id: "m432b",
+ data: { text: "Part M4(3)(2b) of the Building Regulations 2010" },
+ },
+ { id: "none", data: { text: "None of these" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the type of this unit?",
+ fn: "type",
+ options: [
+ { id: "terraced", data: { text: "Terraced home", val: "terraced" } },
+ {
+ id: "semiDetached",
+ data: { text: "Semi detached home", val: "semiDetached" },
+ },
+ { id: "detached", data: { text: "Detached home", val: "detached" } },
+ {
+ id: "flat",
+ data: { text: "Flat/apartment or maisonette", val: "flat" },
+ },
+ { id: "LW", data: { text: "Live/work unit", val: "LW" } },
+ { id: "cluster", data: { text: "Cluster flat", val: "cluster" } },
+ { id: "studio", data: { text: "Studio or bedsit", val: "studio" } },
+ { id: "coLiving", data: { text: "Co living unit", val: "coLiving" } },
+ { id: "hostel", data: { text: "Hostel room", val: "hostel" } },
+ { id: "HMO", data: { text: "HMO", val: "HMO" } },
+ {
+ id: "student",
+ data: { text: "Student accommodation", val: "student" },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the provider of this unit?",
+ fn: "provider",
+ options: [
+ { id: "private", data: { text: "Private", val: "private" } },
+ {
+ id: "privateRented",
+ data: { text: "Private rented sector", val: "privateRented" },
+ },
+ { id: "HA", data: { text: "Housing association", val: "HA" } },
+ { id: "LA", data: { text: "Local authority", val: "LA" } },
+ {
+ id: "publicAuthority",
+ data: { text: "Other public authority", val: "publicAuthority" },
+ },
+ {
+ id: "councilDelivery",
+ data: { text: "Council delivery company", val: "councilDelivery" },
+ },
+ {
+ id: "councilBuildToRent",
+ data: {
+ text: "Council delivered build to rent",
+ val: "councilBuildToRent",
+ },
+ },
+ {
+ id: "affordableHousing",
+ data: {
+ text: "Other affordable housing provider",
+ val: "affordableHousing",
+ },
+ },
+ { id: "selfBuild", data: { text: "Self-build", val: "selfBuild" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Is this unit built on garden land?",
+ fn: "garden",
+ options: [
+ { id: "true", data: { text: "Yes", val: "true" } },
+ { id: "false", data: { text: "No", val: "false" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the Gross Internal Floor Area (GIA) of this unit?",
+ units: "m²",
+ fn: "area",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Will this unit provide sheltered accommodation?",
+ fn: "sheltered",
+ options: [
+ { id: "true", data: { text: "Yes", val: "true" } },
+ { id: "false", data: { text: "No", val: "false" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Is this unit specifically designed for older people?",
+ fn: "olderPersons",
+ options: [
+ { id: "true", data: { text: "Yes", val: "true" } },
+ { id: "false", data: { text: "No", val: "false" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many identical units does the description above apply to?",
+ fn: "identicalUnits",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Rebuilt.ts b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Rebuilt.ts
new file mode 100644
index 0000000000..b108866be2
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Rebuilt.ts
@@ -0,0 +1,236 @@
+import { Schema } from "@planx/components/List/model";
+
+export const ResidentialUnitsGLARebuilt: Schema = {
+ type: "Rebuilt residential unit",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "What development does this unit result from?",
+ fn: "development",
+ options: [
+ { id: "newBuild", data: { text: "New build", val: "newBuild" } },
+ {
+ id: "changeOfUseFrom",
+ data: {
+ text: "Change of use of existing single home",
+ val: "changeOfUseFrom",
+ },
+ },
+ {
+ id: "changeOfUseTo",
+ data: { text: "Change of use to a home", val: "changeOfUseTo" },
+ },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the number of habitable rooms of this unit?",
+ fn: "habitable",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the number of bedrooms of this unit?",
+ fn: "bedrooms",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Which best describes the tenure of this unit?",
+ fn: "tenure",
+ options: [
+ { id: "LAR", data: { text: "London Affordable Rent", val: "LAR" } },
+ {
+ id: "AR",
+ data: {
+ text: "Affordable rent (not at LAR benchmark rents)",
+ val: "AR",
+ },
+ },
+ { id: "SR", data: { text: "Social rent", val: "SR" } },
+ { id: "LRR", data: { text: "London Living Rent", val: "LRR" } },
+ {
+ id: "sharedEquity",
+ data: { text: "Shared equity", val: "sharedEquity" },
+ },
+ { id: "LSO", data: { text: "London Shared Ownership", val: "LSO" } },
+ { id: "DMS", data: { text: "Discount market sale", val: "DMS" } },
+ { id: "DMR", data: { text: "Discount market rent", val: "DMR" } },
+ {
+ id: "DMRLLR",
+ data: {
+ text: "Discount market rent (charged at London Living Rents)",
+ val: "DMRLLR",
+ },
+ },
+ {
+ id: "marketForRent",
+ data: { text: "Market for rent", val: "marketForRent" },
+ },
+ { id: "SH", data: { text: "Starter homes", val: "SH" } },
+ {
+ id: "selfCustomBuild",
+ data: {
+ text: "Self-build and custom build",
+ val: "selfCustomBuild",
+ },
+ },
+ {
+ id: "marketForSale",
+ data: { text: "Market for sale", val: "marketForSale" },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "checklist",
+ data: {
+ title: "Is this unit compliant with any of the following?",
+ fn: "compliance",
+ options: [
+ {
+ id: "m42",
+ data: { text: "Part M4(2) of the Building Regulations 2010" },
+ },
+ {
+ id: "m432a",
+ data: { text: "Part M4(3)(2a) of the Building Regulations 2010" },
+ },
+ {
+ id: "m432b",
+ data: { text: "Part M4(3)(2b) of the Building Regulations 2010" },
+ },
+ { id: "none", data: { text: "None of these" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the type of this unit?",
+ fn: "type",
+ options: [
+ { id: "terraced", data: { text: "Terraced home", val: "terraced" } },
+ {
+ id: "semiDetached",
+ data: { text: "Semi detached home", val: "semiDetached" },
+ },
+ { id: "detached", data: { text: "Detached home", val: "detached" } },
+ {
+ id: "flat",
+ data: { text: "Flat/apartment or maisonette", val: "flat" },
+ },
+ { id: "LW", data: { text: "Live/work unit", val: "LW" } },
+ { id: "cluster", data: { text: "Cluster flat", val: "cluster" } },
+ { id: "studio", data: { text: "Studio or bedsit", val: "studio" } },
+ { id: "coLiving", data: { text: "Co living unit", val: "coLiving" } },
+ { id: "hostel", data: { text: "Hostel room", val: "hostel" } },
+ { id: "HMO", data: { text: "HMO", val: "HMO" } },
+ {
+ id: "student",
+ data: { text: "Student accommodation", val: "student" },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the provider of this unit?",
+ fn: "provider",
+ options: [
+ { id: "private", data: { text: "Private", val: "private" } },
+ {
+ id: "privateRented",
+ data: { text: "Private rented sector", val: "privateRented" },
+ },
+ { id: "HA", data: { text: "Housing association", val: "HA" } },
+ { id: "LA", data: { text: "Local authority", val: "LA" } },
+ {
+ id: "publicAuthority",
+ data: { text: "Other public authority", val: "publicAuthority" },
+ },
+ {
+ id: "councilDelivery",
+ data: { text: "Council delivery company", val: "councilDelivery" },
+ },
+ {
+ id: "councilBuildToRent",
+ data: {
+ text: "Council delivered build to rent",
+ val: "councilBuildToRent",
+ },
+ },
+ {
+ id: "affordableHousing",
+ data: {
+ text: "Other affordable housing provider",
+ val: "affordableHousing",
+ },
+ },
+ { id: "selfBuild", data: { text: "Self-build", val: "selfBuild" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Is this unit built on garden land?",
+ fn: "garden",
+ options: [
+ { id: "true", data: { text: "Yes", val: "true" } },
+ { id: "false", data: { text: "No", val: "false" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the Gross Internal Floor Area (GIA) of this unit?",
+ units: "m²",
+ fn: "area",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Will this unit provide sheltered accommodation?",
+ fn: "sheltered",
+ options: [
+ { id: "true", data: { text: "Yes", val: "true" } },
+ { id: "false", data: { text: "No", val: "false" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Is this unit specifically designed for older people?",
+ fn: "olderPersons",
+ options: [
+ { id: "true", data: { text: "Yes", val: "true" } },
+ { id: "false", data: { text: "No", val: "false" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many identical units does the description above apply to?",
+ fn: "identicalUnits",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Removed.ts b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Removed.ts
new file mode 100644
index 0000000000..b5fde1a983
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Removed.ts
@@ -0,0 +1,204 @@
+import { Schema } from "@planx/components/List/model";
+
+export const ResidentialUnitsGLARemoved: Schema = {
+ type: "Removed residential unit",
+ fields: [
+ {
+ type: "number",
+ data: {
+ title: "What is the number of habitable rooms of this unit?",
+ fn: "habitable",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the number of bedrooms of this unit?",
+ fn: "bedrooms",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Which best describes the tenure of this unit?",
+ fn: "tenure",
+ options: [
+ { id: "LAR", data: { text: "London Affordable Rent", val: "LAR" } },
+ {
+ id: "AR",
+ data: {
+ text: "Affordable rent (not at LAR benchmark rents)",
+ val: "AR",
+ },
+ },
+ { id: "SR", data: { text: "Social rent", val: "SR" } },
+ { id: "LRR", data: { text: "London Living Rent", val: "LRR" } },
+ {
+ id: "sharedEquity",
+ data: { text: "Shared equity", val: "sharedEquity" },
+ },
+ { id: "LSO", data: { text: "London Shared Ownership", val: "LSO" } },
+ { id: "DMS", data: { text: "Discount market sale", val: "DMS" } },
+ { id: "DMR", data: { text: "Discount market rent", val: "DMR" } },
+ {
+ id: "DMRLLR",
+ data: {
+ text: "Discount market rent (charged at London Living Rents)",
+ val: "DMRLLR",
+ },
+ },
+ {
+ id: "marketForRent",
+ data: { text: "Market for rent", val: "marketForRent" },
+ },
+ { id: "SH", data: { text: "Starter homes", val: "SH" } },
+ {
+ id: "selfCustomBuild",
+ data: {
+ text: "Self-build and custom build",
+ val: "selfCustomBuild",
+ },
+ },
+ {
+ id: "marketForSale",
+ data: { text: "Market for sale", val: "marketForSale" },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "checklist",
+ data: {
+ title: "Is this unit compliant with any of the following?",
+ fn: "compliance",
+ options: [
+ {
+ id: "m42",
+ data: { text: "Part M4(2) of the Building Regulations 2010" },
+ },
+ {
+ id: "m432a",
+ data: { text: "Part M4(3)(2a) of the Building Regulations 2010" },
+ },
+ {
+ id: "m432b",
+ data: { text: "Part M4(3)(2b) of the Building Regulations 2010" },
+ },
+ { id: "none", data: { text: "None of these" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the type of this unit?",
+ fn: "type",
+ options: [
+ { id: "terraced", data: { text: "Terraced home", val: "terraced" } },
+ {
+ id: "semiDetached",
+ data: { text: "Semi detached home", val: "semiDetached" },
+ },
+ { id: "detached", data: { text: "Detached home", val: "detached" } },
+ {
+ id: "flat",
+ data: { text: "Flat/apartment or maisonette", val: "flat" },
+ },
+ { id: "LW", data: { text: "Live/work unit", val: "LW" } },
+ { id: "cluster", data: { text: "Cluster flat", val: "cluster" } },
+ { id: "studio", data: { text: "Studio or bedsit", val: "studio" } },
+ { id: "coLiving", data: { text: "Co living unit", val: "coLiving" } },
+ { id: "hostel", data: { text: "Hostel room", val: "hostel" } },
+ { id: "HMO", data: { text: "HMO", val: "HMO" } },
+ {
+ id: "student",
+ data: { text: "Student accommodation", val: "student" },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the provider of this unit?",
+ fn: "provider",
+ options: [
+ { id: "private", data: { text: "Private", val: "private" } },
+ {
+ id: "privateRented",
+ data: { text: "Private rented sector", val: "privateRented" },
+ },
+ { id: "HA", data: { text: "Housing association", val: "HA" } },
+ { id: "LA", data: { text: "Local authority", val: "LA" } },
+ {
+ id: "publicAuthority",
+ data: { text: "Other public authority", val: "publicAuthority" },
+ },
+ {
+ id: "councilDelivery",
+ data: { text: "Council delivery company", val: "councilDelivery" },
+ },
+ {
+ id: "councilBuildToRent",
+ data: {
+ text: "Council delivered build to rent",
+ val: "councilBuildToRent",
+ },
+ },
+ {
+ id: "affordableHousing",
+ data: {
+ text: "Other affordable housing provider",
+ val: "affordableHousing",
+ },
+ },
+ { id: "selfBuild", data: { text: "Self-build", val: "selfBuild" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "What is the Gross Internal Floor Area (GIA) of this unit?",
+ units: "m²",
+ fn: "area",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Will this unit provide sheltered accommodation?",
+ fn: "sheltered",
+ options: [
+ { id: "true", data: { text: "Yes", val: "true" } },
+ { id: "false", data: { text: "No", val: "false" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Is this unit specifically designed for older people?",
+ fn: "olderPersons",
+ options: [
+ { id: "true", data: { text: "Yes", val: "true" } },
+ { id: "false", data: { text: "No", val: "false" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many identical units does the description above apply to?",
+ fn: "identicalUnits",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Retained.ts b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Retained.ts
new file mode 100644
index 0000000000..e45bd3a153
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/GLA/Retained.ts
@@ -0,0 +1,104 @@
+import { Schema } from "@planx/components/List/model";
+
+export const ResidentialUnitsGLARetained: Schema = {
+ type: "Retained residential unit",
+ fields: [
+ {
+ type: "number",
+ data: {
+ title: "What is the number of bedrooms of this unit?",
+ fn: "bedrooms",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "Which best describes the tenure of this unit?",
+ fn: "tenure",
+ options: [
+ { id: "LAR", data: { text: "London Affordable Rent", val: "LAR" } },
+ {
+ id: "AR",
+ data: {
+ text: "Affordable rent (not at LAR benchmark rents)",
+ val: "AR",
+ },
+ },
+ { id: "SR", data: { text: "Social rent", val: "SR" } },
+ { id: "LRR", data: { text: "London Living Rent", val: "LRR" } },
+ {
+ id: "sharedEquity",
+ data: { text: "Shared equity", val: "sharedEquity" },
+ },
+ { id: "LSO", data: { text: "London Shared Ownership", val: "LSO" } },
+ { id: "DMS", data: { text: "Discount market sale", val: "DMS" } },
+ { id: "DMR", data: { text: "Discount market rent", val: "DMR" } },
+ {
+ id: "DMRLLR",
+ data: {
+ text: "Discount market rent (charged at London Living Rents)",
+ val: "DMRLLR",
+ },
+ },
+ {
+ id: "marketForRent",
+ data: { text: "Market for rent", val: "marketForRent" },
+ },
+ { id: "SH", data: { text: "Starter homes", val: "SH" } },
+ {
+ id: "selfCustomBuild",
+ data: {
+ text: "Self-build and custom build",
+ val: "selfCustomBuild",
+ },
+ },
+ {
+ id: "marketForSale",
+ data: { text: "Market for sale", val: "marketForSale" },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the type of this unit?",
+ fn: "type",
+ options: [
+ { id: "terraced", data: { text: "Terraced home", val: "terraced" } },
+ {
+ id: "semiDetached",
+ data: { text: "Semi detached home", val: "semiDetached" },
+ },
+ { id: "detached", data: { text: "Detached home", val: "detached" } },
+ {
+ id: "flat",
+ data: { text: "Flat/apartment or maisonette", val: "flat" },
+ },
+ { id: "LW", data: { text: "Live/work unit", val: "LW" } },
+ { id: "cluster", data: { text: "Cluster flat", val: "cluster" } },
+ { id: "studio", data: { text: "Studio or bedsit", val: "studio" } },
+ { id: "coLiving", data: { text: "Co living unit", val: "coLiving" } },
+ { id: "hostel", data: { text: "Hostel room", val: "hostel" } },
+ { id: "HMO", data: { text: "HMO", val: "HMO" } },
+ {
+ id: "student",
+ data: { text: "Student accommodation", val: "student" },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many identical units does the description above apply to?",
+ fn: "identicalUnits",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/Proposed.ts b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/Proposed.ts
new file mode 100644
index 0000000000..ea99c599b0
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/ResidentialUnits/Proposed.ts
@@ -0,0 +1,93 @@
+import { Schema } from "../../model";
+
+export const ResidentialUnitsProposed: Schema = {
+ type: "Proposed residential unit",
+ fields: [
+ {
+ type: "question",
+ data: {
+ title: "What development does this unit result from?",
+ fn: "development",
+ options: [
+ { id: "newBuild", data: { text: "New build", val: "newBuild" } },
+ {
+ id: "changeOfUseFrom",
+ data: {
+ text: "Change of use of existing single home",
+ val: "changeOfUseFrom",
+ },
+ },
+ {
+ id: "changeOfUseTo",
+ data: { text: "Change of use to a home", val: "changeOfUseTo" },
+ },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the tenure of this unit?",
+ fn: "tenure",
+ options: [
+ { id: "MH", data: { text: "Market housing", val: "MH" } },
+ {
+ id: "SAIR",
+ data: { text: "Social, affordable or interim rent", val: "SAIR" },
+ },
+ {
+ id: "AHO",
+ data: { text: "Affordable home ownership", val: "AHO" },
+ },
+ { id: "SH", data: { text: "Starter homes", val: "SH" } },
+ {
+ id: "selfCustomBuild",
+ data: {
+ text: "Self-build and custom build",
+ val: "selfCustomBuild",
+ },
+ },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "question",
+ data: {
+ title: "What best describes the type of this unit?",
+ fn: "type",
+ options: [
+ { id: "house", data: { text: "House", val: "house" } },
+ {
+ id: "flat",
+ data: { text: "Flat, apartment or maisonette", val: "flat" },
+ },
+ {
+ id: "sheltered",
+ data: { text: "Sheltered housing", val: "sheltered" },
+ },
+ { id: "studio", data: { text: "Studio or bedsit", val: "studio" } },
+ { id: "cluster", data: { text: "Cluster flat", val: "cluster" } },
+ { id: "other", data: { text: "Other", val: "other" } },
+ ],
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many bedrooms will this unit have?",
+ fn: "bedrooms",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many identical units will the description above apply to?",
+ fn: "identicalUnits",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/Zoo.ts b/editor.planx.uk/src/@planx/components/List/schemas/Zoo.ts
deleted file mode 100644
index 655512f182..0000000000
--- a/editor.planx.uk/src/@planx/components/List/schemas/Zoo.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { TextInputType } from "@planx/components/TextInput/model";
-
-import { Schema } from "../model";
-
-/**
- * Temp simple example to build out UI
- * Can be re-used as mock for testing
- */
-export const Zoo: Schema = {
- type: "Animal",
- fields: [
- // Text - short
- {
- type: "text",
- data: {
- title: "What's their name?",
- description: "Please make it cute",
- fn: "name",
- type: TextInputType.Short,
- },
- },
- // Text - email
- {
- type: "text",
- data: {
- title: "What's their email address?",
- fn: "email",
- type: TextInputType.Email,
- },
- },
- // Number
- {
- type: "number",
- data: {
- title: "How old are they?",
- fn: "age",
- units: "years old",
- allowNegatives: false,
- },
- },
- // Question - multiple options
- {
- type: "question",
- data: {
- title: "What size are they?",
- fn: "size",
- options: [
- { id: "small", data: { text: "Small" } },
- { id: "medium", data: { text: "Medium" } },
- { id: "large", data: { text: "Large" } },
- ],
- },
- },
- // Question - only two options
- {
- type: "question",
- data: {
- title: "How cute are they?",
- fn: "cuteness",
- options: [
- { id: "very", data: { text: "Very" } },
- { id: "super", data: { text: "Super" } },
- ],
- },
- },
- ],
- min: 1,
- max: 10,
-} as const;
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/mocks/GenericUnits.ts b/editor.planx.uk/src/@planx/components/List/schemas/mocks/GenericUnits.ts
new file mode 100644
index 0000000000..344851ab8c
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/mocks/GenericUnits.ts
@@ -0,0 +1,95 @@
+import { Schema } from "@planx/components/List/model";
+
+import { Props } from "../../Public";
+
+export const GenericUnitsTest: Schema = {
+ type: "Unit",
+ fields: [
+ // fn = "development" triggers summary stat and options set "val"
+ {
+ type: "question",
+ data: {
+ title: "What development does this unit result from?",
+ fn: "development",
+ options: [
+ { id: "newBuild", data: { text: "New build", val: "newBuild" } },
+ {
+ id: "changeOfUseFrom",
+ data: {
+ text: "Change of use of existing single home",
+ val: "changeOfUseFrom",
+ },
+ },
+ {
+ id: "changeOfUseTo",
+ data: { text: "Change of use to a home", val: "changeOfUseTo" },
+ },
+ ],
+ },
+ },
+ // options set "text" only
+ {
+ type: "question",
+ data: {
+ title: "Is this unit built on garden land?",
+ fn: "garden",
+ options: [
+ { id: "true", data: { text: "Yes" } },
+ { id: "false", data: { text: "No" } },
+ ],
+ },
+ },
+ // fn = "identicalUnits" triggers summary stat
+ {
+ type: "number",
+ data: {
+ title: "How many identical units does the description above apply to?",
+ fn: "identicalUnits",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+} as const;
+
+export const mockUnitsProps: Props = {
+ fn: "proposal.units.residential",
+ schema: GenericUnitsTest,
+ schemaName: "Generic residential units",
+ title: "Describe residential units",
+};
+
+export const mockUnitsPayload = {
+ data: {
+ "proposal.units.residential": [
+ {
+ development: "newBuild",
+ garden: "Yes",
+ identicalUnits: 1,
+ },
+ {
+ development: "newBuild",
+ garden: "No",
+ identicalUnits: 2,
+ },
+ {
+ development: "changeOfUseTo",
+ garden: "No",
+ identicalUnits: 2,
+ },
+ ],
+ "proposal.units.residential.one.development": "newBuild",
+ "proposal.units.residential.one.garden": "Yes",
+ "proposal.units.residential.one.identicalUnits": 1,
+ "proposal.units.residential.two.development": "newBuild",
+ "proposal.units.residential.two.garden": "No",
+ "proposal.units.residential.two.identicalUnits": 2,
+ "proposal.units.residential.three.development": "changeOfUseTo",
+ "proposal.units.residential.three.garden": "No",
+ "proposal.units.residential.three.identicalUnits": 2,
+ "proposal.units.residential.total.listItems": 3,
+ "proposal.units.residential.total.units": 5,
+ "proposal.units.residential.total.units.development.newBuild": 3,
+ "proposal.units.residential.total.units.development.changeOfUseTo": 2,
+ },
+};
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/mocks/MaxOne.ts b/editor.planx.uk/src/@planx/components/List/schemas/mocks/MaxOne.ts
new file mode 100644
index 0000000000..bdbddaef59
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/mocks/MaxOne.ts
@@ -0,0 +1,58 @@
+import { Schema } from "@planx/components/List/model";
+
+import { Props } from "../../Public";
+
+export const MaxOneTest: Schema = {
+ type: "Parking spaces",
+ fields: [
+ {
+ type: "number",
+ data: {
+ title: "How many parking spaces for cars?",
+ fn: "cars",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many parking spaces for bicycles?",
+ fn: "bikes",
+ allowNegatives: false,
+ },
+ },
+ {
+ type: "number",
+ data: {
+ title: "How many parking spaces for caravans?",
+ fn: "caravans",
+ allowNegatives: false,
+ },
+ },
+ ],
+ min: 1,
+ max: 1,
+} as const;
+
+export const mockMaxOneProps: Props = {
+ fn: "proposal.parking",
+ schema: MaxOneTest,
+ schemaName: "Parking spaces",
+ title: "Describe parking spaces",
+};
+
+export const mockMaxOnePayload = {
+ data: {
+ "proposal.parking": [
+ {
+ cars: 2,
+ bicycles: 4,
+ caravans: 0,
+ },
+ ],
+ "proposal.parking.one.cars": 2,
+ "proposal.parking.one.bicycles": 4,
+ "proposal.parking.one.caravans": 0,
+ "proposal.parking.total.listItems": 1,
+ },
+};
diff --git a/editor.planx.uk/src/@planx/components/List/schemas/mocks/Zoo.ts b/editor.planx.uk/src/@planx/components/List/schemas/mocks/Zoo.ts
new file mode 100644
index 0000000000..59394a6f31
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/schemas/mocks/Zoo.ts
@@ -0,0 +1,124 @@
+import { TextInputType } from "@planx/components/TextInput/model";
+
+import { Schema } from "../../model";
+import { Props } from "../../Public";
+
+export const Zoo: Schema = {
+ type: "Animal",
+ fields: [
+ // Text - short
+ {
+ type: "text",
+ data: {
+ title: "What's their name?",
+ description: "Please make it cute",
+ fn: "name",
+ type: TextInputType.Short,
+ },
+ },
+ // Text - email
+ {
+ type: "text",
+ data: {
+ title: "What's their email address?",
+ fn: "email.address",
+ type: TextInputType.Email,
+ },
+ },
+ // Number
+ {
+ type: "number",
+ data: {
+ title: "How old are they?",
+ fn: "age",
+ units: "years old",
+ allowNegatives: false,
+ },
+ },
+ // Question - multiple options
+ {
+ type: "question",
+ data: {
+ title: "What size are they?",
+ fn: "size",
+ options: [
+ { id: "small", data: { text: "Small" } },
+ { id: "medium", data: { text: "Medium" } },
+ { id: "large", data: { text: "Large" } },
+ ],
+ },
+ },
+ // Question - only two options
+ {
+ type: "question",
+ data: {
+ title: "How cute are they?",
+ fn: "cuteness.amount",
+ options: [
+ { id: "very", data: { text: "Very" } },
+ { id: "super", data: { text: "Super" } },
+ ],
+ },
+ },
+ // Checklist
+ {
+ type: "checklist",
+ data: {
+ title: "What do they eat?",
+ fn: "food",
+ options: [
+ { id: "meat", data: { text: "Meat" } },
+ { id: "leaves", data: { text: "Leaves" } },
+ { id: "bamboo", data: { text: "Bamboo" } },
+ { id: "fruit", data: { text: "fruit" } },
+ ],
+ },
+ },
+ ],
+ min: 1,
+ max: 3,
+} as const;
+
+export const mockZooProps: Props = {
+ fn: "mockFn",
+ schema: Zoo,
+ schemaName: "Zoo",
+ title: "Mock Title",
+ description: "Mock description",
+};
+
+export const mockZooPayload = {
+ data: {
+ mockFn: [
+ {
+ age: 10,
+ "cuteness.amount": "Very",
+ "email.address": "richard.parker@pi.com",
+ name: "Richard Parker",
+ size: "Medium",
+ food: ["meat", "leaves", "bamboo"],
+ },
+ {
+ age: 10,
+ "cuteness.amount": "Very",
+ "email.address": "richard.parker@pi.com",
+ name: "Richard Parker",
+ size: "Medium",
+ food: ["meat", "leaves", "bamboo"],
+ },
+ ],
+ "mockFn.one.age": 10,
+ "mockFn.one.cuteness.amount": "Very",
+ "mockFn.one.email.address": "richard.parker@pi.com",
+ "mockFn.one.name": "Richard Parker",
+ "mockFn.one.size": "Medium",
+ "mockFn.one.food": ["meat", "leaves", "bamboo"],
+ "mockFn.two.age": 10,
+ "mockFn.two.cuteness.amount": "Very",
+ "mockFn.two.email.address": "richard.parker@pi.com",
+ "mockFn.two.name": "Richard Parker",
+ "mockFn.two.size": "Medium",
+ "mockFn.two.food": ["meat", "leaves", "bamboo"],
+ "mockFn.total.listItems": 2,
+ },
+};
diff --git a/editor.planx.uk/src/@planx/components/List/utils.test.ts b/editor.planx.uk/src/@planx/components/List/utils.test.ts
new file mode 100644
index 0000000000..72e8996e19
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/utils.test.ts
@@ -0,0 +1,81 @@
+import { UserResponse } from "./model";
+import {
+ flatten,
+ sumIdenticalUnits,
+ sumIdenticalUnitsByDevelopmentType,
+} from "./utils";
+
+describe("passport data shape", () => {
+ it("flattens list items", async () => {
+ const defaultPassportData = {
+ mockFn: [
+ {
+ age: 10,
+ "cuteness.amount": "Very",
+ "email.address": "richard.parker@pi.com",
+ name: "Richard Parker",
+ size: "Medium",
+ food: ["bamboo", "leaves"],
+ },
+ {
+ age: 10,
+ "cuteness.amount": "Very",
+ "email.address": "richard.parker@pi.com",
+ name: "Richard Parker",
+ size: "Medium",
+ food: ["meat", "bamboo", "leaves"],
+ },
+ ],
+ };
+
+ expect(flatten(defaultPassportData, { depth: 2 })).toEqual({
+ "mockFn.one.age": 10,
+ "mockFn.one.cuteness.amount": "Very",
+ "mockFn.one.email.address": "richard.parker@pi.com",
+ "mockFn.one.name": "Richard Parker",
+ "mockFn.one.size": "Medium",
+ "mockFn.one.food": ["bamboo", "leaves"],
+ "mockFn.two.age": 10,
+ "mockFn.two.cuteness.amount": "Very",
+ "mockFn.two.email.address": "richard.parker@pi.com",
+ "mockFn.two.name": "Richard Parker",
+ "mockFn.two.size": "Medium",
+ "mockFn.two.food": ["meat", "bamboo", "leaves"],
+ });
+ });
+
+ it("adds summary stats when applicable fields are set", async () => {
+ const defaultPassportData = {
+ "proposal.units.residential": [
+ {
+ development: "newBuild",
+ garden: "Yes",
+ identicalUnits: 1,
+ },
+ {
+ development: "newBuild",
+ garden: "No",
+ identicalUnits: 2,
+ },
+ {
+ development: "changeOfUseTo",
+ garden: "No",
+ identicalUnits: 2,
+ },
+ ],
+ } as unknown as Record;
+
+ expect(
+ sumIdenticalUnits("proposal.units.residential", defaultPassportData),
+ ).toEqual(5);
+ expect(
+ sumIdenticalUnitsByDevelopmentType(
+ "proposal.units.residential",
+ defaultPassportData,
+ ),
+ ).toEqual({
+ "proposal.units.residential.total.units.development.newBuild": 3,
+ "proposal.units.residential.total.units.development.changeOfUseTo": 2,
+ });
+ });
+});
diff --git a/editor.planx.uk/src/@planx/components/List/utils.tsx b/editor.planx.uk/src/@planx/components/List/utils.tsx
new file mode 100644
index 0000000000..2f1bf744cf
--- /dev/null
+++ b/editor.planx.uk/src/@planx/components/List/utils.tsx
@@ -0,0 +1,205 @@
+import { styled } from "@mui/material/styles";
+import React from "react";
+import { optional } from "zod";
+
+import { Field, UserResponse } from "./model";
+
+const List = styled("ul")(() => ({
+ listStylePosition: "inside",
+ padding: 0,
+ margin: 0,
+}));
+
+/**
+ * In the case of "question" and "checklist" fields, ensure the displayed value reflects option "text", rather than "val" as recorded in passport
+ * @param value - the `val` or `text` of an Option defined in the schema's fields
+ * @param field - the Field object
+ * @returns string | React.JSX.Element - the `text` for the given value `val`, or the original value
+ */
+export function formatSchemaDisplayValue(
+ value: string | string[],
+ field: Field,
+) {
+ switch (field.type) {
+ case "number":
+ return field.data.units ? `${value} ${field.data.units}` : value;
+ case "text":
+ return value;
+ case "checklist": {
+ const matchingOptions = field.data.options.filter((option) =>
+ (value as string[]).includes(option.id),
+ );
+ return (
+
+ {matchingOptions.map((option) => (
+ {option.data.text}
+ ))}
+
+ );
+ }
+ case "question": {
+ const matchingOption = field.data.options.find(
+ (option) => option.data.val === value,
+ );
+ return matchingOption?.data.text;
+ }
+ }
+}
+
+/**
+ * If the schema includes a field that sets fn = "identicalUnits", sum of total units
+ * @param fn - passport key of current List
+ * @param passportData - default passport data format for the List
+ * @returns - sum of all units, or 0 if field not set
+ */
+export function sumIdenticalUnits(
+ fn: string,
+ passportData: Record,
+): number {
+ let sum = 0;
+ passportData[`${fn}`].map((item) => {
+ if (!Array.isArray(item?.identicalUnits)) {
+ sum += parseInt(item?.identicalUnits);
+ }
+ });
+ return sum;
+}
+
+/**
+ * If the schema includes fields that set fn = "development" and fn = "identicalUnits", sum of total units by development option "val"
+ * @param fn - passport key of current List
+ * @param passportData - default passport data format for the List
+ * @returns - sum of all units by development type, or empty object if fields not set
+ */
+export function sumIdenticalUnitsByDevelopmentType(
+ fn: string,
+ passportData: Record,
+): Record {
+ // Sum identical units by development type (@todo read all possible option `val` from Schema in future)
+ const baseSums: Record = {
+ changeOfUse: 0,
+ changeOfUseFrom: 0,
+ changeOfUseTo: 0,
+ conversion: 0,
+ gain: 0,
+ extension: 0,
+ loss: 0,
+ newBuild: 0,
+ notKnown: 0,
+ };
+ passportData[`${fn}`].map((item) => {
+ if (!Array.isArray(item?.identicalUnits)) {
+ baseSums[`${item?.development}`] += parseInt(item?.identicalUnits);
+ }
+ });
+
+ // Format property names for passport, and filter out any entries with default sum = 0
+ const formattedSums: Record = {};
+ Object.entries(baseSums).forEach(([k, v]) => {
+ if (v > 0) {
+ formattedSums[`${fn}.total.units.development.${k}`] = v;
+ }
+ });
+
+ return formattedSums;
+}
+
+interface FlattenOptions {
+ depth?: number;
+ path?: string | null;
+ separator?: string;
+}
+
+/**
+ * Flattens nested object so we can output passport variables like `{listFn}.{itemIndexAsText}.{fieldFn}`
+ * Adapted from https://gist.github.com/penguinboy/762197
+ */
+export function flatten>(
+ object: T,
+ { depth = Infinity, path = null, separator = "." }: FlattenOptions = {},
+): T {
+ return Object.keys(object).reduce((acc: T, key: string): T => {
+ const value = object[key];
+
+ // If the key is a whole number, convert to text before setting newPath
+ // eg because Calculate/MathJS cannot automate passport variables with number segments
+ if (/^-?\d+$/.test(key)) {
+ key = convertNumberToText(parseInt(key) + 1);
+ }
+
+ const newPath = [path, key].filter(Boolean).join(separator);
+
+ const isObject = [
+ typeof value === "object",
+ value !== null,
+ !(Array.isArray(value) && value.length === 0),
+ ].every(Boolean);
+
+ return isObject && depth > 0
+ ? {
+ ...acc,
+ ...flatten(value, { depth: depth - 1, path: newPath, separator }),
+ }
+ : { ...acc, [newPath]: value };
+ }, {} as T);
+}
+
+const ones = [
+ "",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine",
+];
+const tens = [
+ "",
+ "",
+ "twenty",
+ "thirty",
+ "forty",
+ "fifty",
+ "sixty",
+ "seventy",
+ "eighty",
+ "ninety",
+];
+const teens = [
+ "ten",
+ "eleven",
+ "twelve",
+ "thirteen",
+ "fourteen",
+ "fifteen",
+ "sixteen",
+ "seventeen",
+ "eighteen",
+ "nineteen",
+];
+
+function convertTens(num: number): string {
+ if (num < 10) {
+ return ones[num];
+ } else if (num >= 10 && num < 20) {
+ return teens[num - 10];
+ } else {
+ // format as compound string - eg "thirtyfour" instead of "thirty four"
+ return tens[Math.floor(num / 10)] + ones[num % 10];
+ }
+}
+
+/**
+ * Convert a whole number up to 99 to a spelled-out word (eg 34 => 'thirtyfour')
+ * Adapted from https://stackoverflow.com/questions/5529934/javascript-numbers-to-words
+ */
+function convertNumberToText(num: number): string {
+ if (num == 0) {
+ return "zero";
+ } else {
+ return convertTens(num);
+ }
+}
diff --git a/editor.planx.uk/src/@planx/components/Notice/Editor.tsx b/editor.planx.uk/src/@planx/components/Notice/Editor.tsx
index b8a8d3ee2e..233c7e6c4a 100644
--- a/editor.planx.uk/src/@planx/components/Notice/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/Notice/Editor.tsx
@@ -1,3 +1,5 @@
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Switch from "@mui/material/Switch";
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import type { Notice } from "@planx/components/Notice/model";
import { parseNotice } from "@planx/components/Notice/model";
@@ -7,7 +9,6 @@ import React from "react";
import ColorPicker from "ui/editor/ColorPicker";
import ModalSection from "ui/editor/ModalSection";
import ModalSectionContent from "ui/editor/ModalSectionContent";
-import OptionButton from "ui/editor/OptionButton";
import RichTextInput from "ui/editor/RichTextInput";
import Input from "ui/shared/Input";
import InputRow from "ui/shared/InputRow";
@@ -63,17 +64,22 @@ const NoticeEditor: React.FC = (props) => {
});
}}
/>
- {
- props.onChange({
- ...props.value,
- resetButton: !props.value.resetButton,
- });
- }}
- >
- Reset
-
+
+
+ props.onChange({
+ ...props.value,
+ resetButton: !props.value.resetButton,
+ })
+ }
+ />
+ }
+ label="Reset to start of service"
+ />
+
- {
- formik.setFieldValue(
- "allowNegatives",
- !formik.values.allowNegatives,
- );
- }}
- >
- Allow negative numbers to be input
-
+
+ formik.setFieldValue(
+ "allowNegatives",
+ !formik.values.allowNegatives,
+ )
+ }
+ />
+ }
+ label="Allow negative numbers to be input"
+ />
diff --git a/editor.planx.uk/src/@planx/components/NumberInput/Public.test.tsx b/editor.planx.uk/src/@planx/components/NumberInput/Public.test.tsx
index 016150cc80..9756edf100 100644
--- a/editor.planx.uk/src/@planx/components/NumberInput/Public.test.tsx
+++ b/editor.planx.uk/src/@planx/components/NumberInput/Public.test.tsx
@@ -39,12 +39,21 @@ test("requires a positive number to be input by default", async () => {
const handleSubmit = jest.fn();
const { user } = setup(
- ,
+ ,
);
- expect(screen.getByRole("heading")).toHaveTextContent("How many doors are you adding?");
+ expect(screen.getByRole("heading")).toHaveTextContent(
+ "How many doors are you adding?",
+ );
- await user.type(screen.getByLabelText("How many doors are you adding?"), "-1");
+ await user.type(
+ screen.getByLabelText("How many doors are you adding?"),
+ "-1",
+ );
await user.click(screen.getByTestId("continue-button"));
expect(screen.getByText("Enter a positive number")).toBeInTheDocument();
@@ -55,10 +64,17 @@ test("allows negative numbers to be input when toggled on by editor", async () =
const handleSubmit = jest.fn();
const { user } = setup(
- ,
+ ,
);
- expect(screen.getByRole("heading")).toHaveTextContent("What's the temperature?");
+ expect(screen.getByRole("heading")).toHaveTextContent(
+ "What's the temperature?",
+ );
await user.type(screen.getByLabelText("What's the temperature?"), "-10");
await user.click(screen.getByTestId("continue-button"));
diff --git a/editor.planx.uk/src/@planx/components/NumberInput/Public.tsx b/editor.planx.uk/src/@planx/components/NumberInput/Public.tsx
index 25700a4219..a75a65e04d 100644
--- a/editor.planx.uk/src/@planx/components/NumberInput/Public.tsx
+++ b/editor.planx.uk/src/@planx/components/NumberInput/Public.tsx
@@ -8,12 +8,11 @@ import InputLabel from "ui/public/InputLabel";
import Input from "ui/shared/Input";
import InputRow from "ui/shared/InputRow";
import InputRowLabel from "ui/shared/InputRowLabel";
-import { object, string } from "yup";
import { DESCRIPTION_TEXT, ERROR_MESSAGE } from "../shared/constants";
import { getPreviouslySubmittedData, makeData } from "../shared/utils";
import type { NumberInput } from "./model";
-import { parseNumber } from "./model";
+import { parseNumber, validationSchema } from "./model";
export type Props = PublicProps;
@@ -32,29 +31,7 @@ export default function NumberInputComponent(props: Props): FCReturn {
},
validateOnBlur: false,
validateOnChange: false,
- validationSchema: object({
- value: string()
- .required("Enter your answer before continuing")
- .test({
- name: "not a number",
- message: (() => {
- if (!props.allowNegatives) {
- return "Enter a positive number";
- }
-
- return "Enter a number";
- })(),
- test: (value: string | undefined) => {
- if (!value) {
- return false;
- }
- if (!props.allowNegatives && value.startsWith("-")) {
- return false;
- }
- return value === "0" ? true : Boolean(parseNumber(value));
- },
- }),
- }),
+ validationSchema: validationSchema(props),
});
const inputRef = useRef(null);
diff --git a/editor.planx.uk/src/@planx/components/NumberInput/model.ts b/editor.planx.uk/src/@planx/components/NumberInput/model.ts
index 2fab6964b7..c0e78b9614 100644
--- a/editor.planx.uk/src/@planx/components/NumberInput/model.ts
+++ b/editor.planx.uk/src/@planx/components/NumberInput/model.ts
@@ -1,3 +1,5 @@
+import { object, string } from "yup";
+
import { MoreInformation, parseMoreInformation } from "../shared";
export interface NumberInput extends MoreInformation {
@@ -28,3 +30,31 @@ export const parseNumberInput = (
allowNegatives: data?.allowNegatives || false,
...parseMoreInformation(data),
});
+
+export const numberInputValidationSchema = (input: NumberInput) =>
+ string()
+ .required("Enter your answer before continuing")
+ .test({
+ name: "not a number",
+ message: (() => {
+ if (!input.allowNegatives) {
+ return "Enter a positive number";
+ }
+
+ return "Enter a number";
+ })(),
+ test: (value: string | undefined) => {
+ if (!value) {
+ return false;
+ }
+ if (!input.allowNegatives && value.startsWith("-")) {
+ return false;
+ }
+ return value === "0" ? true : Boolean(parseNumber(value));
+ },
+ });
+
+export const validationSchema = (input: NumberInput) =>
+ object({
+ value: numberInputValidationSchema(input),
+ });
diff --git a/editor.planx.uk/src/@planx/components/Pay/Editor.test.tsx b/editor.planx.uk/src/@planx/components/Pay/Editor.test.tsx
index 3357aee964..6f3c1d4086 100644
--- a/editor.planx.uk/src/@planx/components/Pay/Editor.test.tsx
+++ b/editor.planx.uk/src/@planx/components/Pay/Editor.test.tsx
@@ -1,7 +1,7 @@
import { User } from "@opensystemslab/planx-core/types";
import { fireEvent, waitFor } from "@testing-library/react";
import { toggleFeatureFlag } from "lib/featureFlags";
-import { FullStore, vanillaStore } from "pages/FlowEditor/lib/store";
+import { FullStore, useStore } from "pages/FlowEditor/lib/store";
import React from "react";
import { DndProvider } from "react-dnd";
import { HTML5Backend } from "react-dnd-html5-backend";
@@ -35,7 +35,7 @@ describe("Pay component - Editor Modal", () => {
jest.setTimeout(20000);
// Set up mock state with platformAdmin user so all Editor features are enabled
- const { getState, setState } = vanillaStore;
+ const { getState, setState } = useStore;
const mockUser: User = {
id: 123,
email: "b.baggins@shire.com",
diff --git a/editor.planx.uk/src/@planx/components/Pay/Editor.tsx b/editor.planx.uk/src/@planx/components/Pay/Editor.tsx
index 528756c6d2..f85e8e96dc 100644
--- a/editor.planx.uk/src/@planx/components/Pay/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/Pay/Editor.tsx
@@ -1,6 +1,8 @@
import DataObjectIcon from "@mui/icons-material/DataObject";
import Box from "@mui/material/Box";
+import FormControlLabel from "@mui/material/FormControlLabel";
import Link from "@mui/material/Link";
+import Switch from "@mui/material/Switch";
import Typography from "@mui/material/Typography";
import {
ComponentType as TYPES,
@@ -26,7 +28,6 @@ import ListManager, {
} from "ui/editor/ListManager";
import ModalSection from "ui/editor/ModalSection";
import ModalSectionContent from "ui/editor/ModalSectionContent";
-import OptionButton from "ui/editor/OptionButton";
import RichTextInput from "ui/editor/RichTextInput";
import ErrorWrapper from "ui/shared/ErrorWrapper";
import Input from "ui/shared/Input";
@@ -137,7 +138,6 @@ export type Props = EditorProps;
const Component: React.FC = (props: Props) => {
const [flowName] = useStore((store) => [store.flowName]);
-
const initialValues: Pay = {
title: props.node?.data?.title || "Pay for your application",
bannerTitle:
@@ -262,16 +262,18 @@ const Component: React.FC = (props: Props) => {
onChange={handleChange}
/>
+
+ setFieldValue("hidePay", !values.hidePay)}
+ />
+ }
+ label="Hide the pay buttons and show fee for information only"
+ />
+
- {
- setFieldValue("hidePay", !values.hidePay);
- }}
- style={{ width: "100%" }}
- >
- Hide the pay buttons and show fee for information only
-
= (props: Props) => {
- {
- setFieldValue("allowInviteToPay", !values.allowInviteToPay);
- }}
- style={{ width: "100%" }}
- >
- Allow applicants to invite someone else to pay
-
+
+
+ setFieldValue(
+ "allowInviteToPay",
+ !values.allowInviteToPay,
+ )
+ }
+ />
+ }
+ label="Allow applicants to invite someone else to pay"
+ />
+
{values.allowInviteToPay ? (
<>
diff --git a/editor.planx.uk/src/@planx/components/Pay/Public/Confirm.tsx b/editor.planx.uk/src/@planx/components/Pay/Public/Confirm.tsx
index 0fa56f8332..cbacc3b80e 100644
--- a/editor.planx.uk/src/@planx/components/Pay/Public/Confirm.tsx
+++ b/editor.planx.uk/src/@planx/components/Pay/Public/Confirm.tsx
@@ -11,6 +11,7 @@ import React, { useState } from "react";
import { ApplicationPath } from "types";
import Banner from "ui/public/Banner";
import FormWrapper from "ui/public/FormWrapper";
+import ErrorSummary from "ui/shared/ErrorSummary";
import ReactMarkdownOrHtml from "ui/shared/ReactMarkdownOrHtml";
import { formattedPriceWithCurrencySymbol } from "../model";
@@ -52,12 +53,6 @@ const PayText = styled(Box)(({ theme }) => ({
},
}));
-const ErrorSummary = styled(Box)(({ theme }) => ({
- marginTop: theme.spacing(1),
- padding: theme.spacing(3),
- border: `5px solid ${theme.palette.error.main}`,
-}));
-
const PayBody: React.FC = (props) => {
const path = useStore((state) => state.path);
const isSaveReturn = path === ApplicationPath.SaveAndReturn;
@@ -66,30 +61,21 @@ const PayBody: React.FC = (props) => {
if (props.error.startsWith(PAY_API_ERROR_UNSUPPORTED_TEAM)) {
return (
-
-
- {props.error}
-
-
- Click continue to skip payment and proceed with your application
- for testing.
-
-
+
);
} else {
return (
-
-
- {props.error}
-
-
- This error has been logged and our team will see it soon. You can
- safely close this tab and try resuming again soon by returning to
- this URL.
-
-
+
);
}
diff --git a/editor.planx.uk/src/@planx/components/Pay/Public/Pay.test.tsx b/editor.planx.uk/src/@planx/components/Pay/Public/Pay.test.tsx
index 4eca867eac..9baed31d53 100644
--- a/editor.planx.uk/src/@planx/components/Pay/Public/Pay.test.tsx
+++ b/editor.planx.uk/src/@planx/components/Pay/Public/Pay.test.tsx
@@ -1,7 +1,7 @@
import { PaymentStatus } from "@opensystemslab/planx-core/types";
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import { screen } from "@testing-library/react";
-import { FullStore, Store, vanillaStore } from "pages/FlowEditor/lib/store";
+import { FullStore, Store, useStore } from "pages/FlowEditor/lib/store";
import React from "react";
import { act } from "react-dom/test-utils";
import * as ReactNavi from "react-navi";
@@ -11,7 +11,7 @@ import { ApplicationPath, Breadcrumbs } from "types";
import Confirm, { Props } from "./Confirm";
import Pay from "./Pay";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
let initialState: FullStore;
@@ -194,7 +194,7 @@ describe("Confirm component without inviteToPay", () => {
expect(screen.getByRole("heading", { level: 2 })).toHaveTextContent(
"The fee is",
);
- expect(screen.getByRole("heading", { level: 3 })).toHaveTextContent(
+ expect(screen.getByRole("heading", { level: 4 })).toHaveTextContent(
errorMessage,
);
diff --git a/editor.planx.uk/src/@planx/components/PlanningConstraints/List.tsx b/editor.planx.uk/src/@planx/components/PlanningConstraints/List.tsx
index 76ca06b20a..085c03265e 100644
--- a/editor.planx.uk/src/@planx/components/PlanningConstraints/List.tsx
+++ b/editor.planx.uk/src/@planx/components/PlanningConstraints/List.tsx
@@ -88,7 +88,7 @@ export default function ConstraintsList({
{Object.keys(groupedConstraints).map(
(category: string, index: number) => (
- <>
+
))}
- >
+
),
)}
@@ -170,7 +170,7 @@ function ConstraintListItem({ children, ...props }: ConstraintListItemProps) {
expandIcon={ }
sx={{ pr: 1.5, background: `rgba(255, 255, 255, 0.8)` }}
>
-
+
{children}
diff --git a/editor.planx.uk/src/@planx/components/PropertyInformation/Editor.tsx b/editor.planx.uk/src/@planx/components/PropertyInformation/Editor.tsx
index 98c5a24d45..c3faea4bbb 100644
--- a/editor.planx.uk/src/@planx/components/PropertyInformation/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/PropertyInformation/Editor.tsx
@@ -1,3 +1,5 @@
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Switch from "@mui/material/Switch";
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import {
EditorProps,
@@ -9,7 +11,6 @@ import { useFormik } from "formik";
import React from "react";
import ModalSection from "ui/editor/ModalSection";
import ModalSectionContent from "ui/editor/ModalSectionContent";
-import OptionButton from "ui/editor/OptionButton";
import RichTextInput from "ui/editor/RichTextInput";
import Input from "ui/shared/Input";
import InputRow from "ui/shared/InputRow";
@@ -55,17 +56,22 @@ function PropertyInformationComponent(props: Props) {
onChange={formik.handleChange}
/>
- {
- formik.setFieldValue(
- "showPropertyTypeOverride",
- !formik.values.showPropertyTypeOverride,
- );
- }}
- >
- Show users a "change" link to override the property type
-
+
+
+ formik.setFieldValue(
+ "showPropertyTypeOverride",
+ !formik.values.showPropertyTypeOverride,
+ )
+ }
+ />
+ }
+ label="Show users a 'change' link to override the property type"
+ />
+
{
getState().resetPreview();
diff --git a/editor.planx.uk/src/@planx/components/Review/Public/Public.test.tsx b/editor.planx.uk/src/@planx/components/Review/Public/Public.test.tsx
index beb16b0701..afc6b37639 100644
--- a/editor.planx.uk/src/@planx/components/Review/Public/Public.test.tsx
+++ b/editor.planx.uk/src/@planx/components/Review/Public/Public.test.tsx
@@ -1,5 +1,5 @@
import { act, screen, waitFor, within } from "@testing-library/react";
-import { FullStore, vanillaStore } from "pages/FlowEditor/lib/store";
+import { FullStore, useStore } from "pages/FlowEditor/lib/store";
import React from "react";
import { axe, setup } from "testUtils";
@@ -25,7 +25,7 @@ import {
import { mockedBreadcrumbs, mockedFlow, mockedPassport } from "./mocks/simple";
import Review from "./Presentational";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
let initialState: FullStore;
diff --git a/editor.planx.uk/src/@planx/components/Section/Public.tsx b/editor.planx.uk/src/@planx/components/Section/Public.tsx
index 2b7831c3db..eab14c9496 100644
--- a/editor.planx.uk/src/@planx/components/Section/Public.tsx
+++ b/editor.planx.uk/src/@planx/components/Section/Public.tsx
@@ -33,7 +33,7 @@ export default function Component(props: Props) {
state.breadcrumbs,
state.cachedBreadcrumbs,
state.changeAnswer,
- state.currentCard(),
+ state.currentCard,
state.currentSectionIndex,
state.flow,
state.flowName,
diff --git a/editor.planx.uk/src/@planx/components/Send/Editor.tsx b/editor.planx.uk/src/@planx/components/Send/Editor.tsx
index 9e1816982b..c7ca991d52 100644
--- a/editor.planx.uk/src/@planx/components/Send/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/Send/Editor.tsx
@@ -55,13 +55,17 @@ const SendComponent: React.FC = (props) => {
value: Destination.Email,
label: "Email to planning office",
},
+ {
+ value: Destination.S3,
+ label: "Upload to AWS S3 bucket",
+ },
];
- // Show S3 option on staging only
+ // Show Nexus option on staging only
if (process.env.REACT_APP_ENV !== "production") {
options.push({
- value: Destination.S3,
- label: "Upload to AWS S3 bucket",
+ value: Destination.Idox,
+ label: "Idox Nexus (testing only)",
});
}
diff --git a/editor.planx.uk/src/@planx/components/Send/Public.tsx b/editor.planx.uk/src/@planx/components/Send/Public.tsx
index 8b8be0b35f..863f9a3341 100644
--- a/editor.planx.uk/src/@planx/components/Send/Public.tsx
+++ b/editor.planx.uk/src/@planx/components/Send/Public.tsx
@@ -96,6 +96,16 @@ const CreateSendEvents: React.FC = ({
);
}
+ if (
+ destinations.includes(Destination.Idox) &&
+ isReady &&
+ props.handleSubmit
+ ) {
+ props.handleSubmit(
+ makeData(props, request.value.idox?.event_id, "idoxSendEventId"),
+ );
+ }
+
if (
destinations.includes(Destination.Email) &&
isReady &&
diff --git a/editor.planx.uk/src/@planx/components/Send/model.ts b/editor.planx.uk/src/@planx/components/Send/model.ts
index d5f9fd5a16..cd1082b4a5 100644
--- a/editor.planx.uk/src/@planx/components/Send/model.ts
+++ b/editor.planx.uk/src/@planx/components/Send/model.ts
@@ -4,6 +4,7 @@ import { MoreInformation, parseMoreInformation } from "../shared";
export enum Destination {
BOPS = "bops",
Uniform = "uniform",
+ Idox = "idox",
Email = "email",
S3 = "s3",
}
@@ -79,6 +80,13 @@ export function getCombinedEventsPayload({
};
}
+ if (destinations.includes(Destination.Idox)) {
+ combinedEventsPayload[Destination.Idox] = {
+ localAuthority: teamSlug,
+ body: { sessionId },
+ };
+ }
+
if (destinations.includes(Destination.S3)) {
combinedEventsPayload[Destination.S3] = {
localAuthority: teamSlug,
diff --git a/editor.planx.uk/src/@planx/components/SetValue/Editor.tsx b/editor.planx.uk/src/@planx/components/SetValue/Editor.tsx
index 30ffe0264a..b36c1e37f0 100644
--- a/editor.planx.uk/src/@planx/components/SetValue/Editor.tsx
+++ b/editor.planx.uk/src/@planx/components/SetValue/Editor.tsx
@@ -1,5 +1,8 @@
+import FormControl from "@mui/material/FormControl";
+import RadioGroup from "@mui/material/RadioGroup";
import Typography from "@mui/material/Typography";
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
+import BasicRadio from "@planx/components/shared/Radio/BasicRadio";
import { EditorProps, InternalNotes } from "@planx/components/ui";
import { useFormik } from "formik";
import React from "react";
@@ -7,7 +10,6 @@ import ModalSection from "ui/editor/ModalSection";
import ModalSectionContent from "ui/editor/ModalSectionContent";
import Input from "ui/shared/Input";
import InputRow from "ui/shared/InputRow";
-import Radio from "ui/shared/Radio";
import { parseSetValue, SetValue } from "./model";
@@ -84,6 +86,11 @@ function SetValueComponent(props: Props) {
},
});
+ const handleRadioChange = (event: React.SyntheticEvent) => {
+ const target = event.target as HTMLInputElement;
+ formik.setFieldValue("operation", target.value);
+ };
+
return (
+
= ({
>
See our guide for setting button colours
-
+
>
}
input={
@@ -61,6 +61,7 @@ export const ButtonForm: React.FC = ({
color={formik.values.actionColour}
onChange={(color) => formik.setFieldValue("actionColour", color)}
label="Button colour"
+ errorMessage={formik.errors.actionColour}
/>
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/FaviconForm.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/FaviconForm.tsx
index a037686bc3..aeb4ed8571 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/FaviconForm.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/FaviconForm.tsx
@@ -5,12 +5,12 @@ import { useFormik } from "formik";
import { useStore } from "pages/FlowEditor/lib/store";
import React from "react";
import ImgInput from "ui/editor/ImgInput";
-import InputDescription from "ui/editor/InputDescription";
import InputRow from "ui/shared/InputRow";
import InputRowItem from "ui/shared/InputRowItem";
import InputRowLabel from "ui/shared/InputRowLabel";
-import { FormProps, SettingsForm } from ".";
+import { SettingsForm } from "../shared/SettingsForm";
+import { FormProps } from ".";
export const FaviconForm: React.FC = ({
formikConfig,
@@ -36,16 +36,16 @@ export const FaviconForm: React.FC = ({
: formik.setFieldValue("favicon", null);
return (
-
formik={formik}
legend="Favicon"
description={
<>
-
+
Set the favicon to be used in the browser tab. The favicon should be
32x32px and in .ico or .png format.
-
-
+
+
= ({
>
See our guide for favicons
-
+
>
}
input={
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/TextLinkForm.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/TextLinkForm.tsx
index a9891cff38..6f454d6144 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/TextLinkForm.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/TextLinkForm.tsx
@@ -5,11 +5,11 @@ import { useFormik } from "formik";
import { useStore } from "pages/FlowEditor/lib/store";
import React from "react";
import ColorPicker from "ui/editor/ColorPicker";
-import InputDescription from "ui/editor/InputDescription";
import InputRow from "ui/shared/InputRow";
import InputRowItem from "ui/shared/InputRowItem";
-import { DesignPreview, FormProps, SettingsForm } from ".";
+import { SettingsForm } from "../shared/SettingsForm";
+import { DesignPreview, FormProps } from ".";
export const TextLinkForm: React.FC = ({
formikConfig,
@@ -43,16 +43,16 @@ export const TextLinkForm: React.FC = ({
});
return (
-
formik={formik}
legend="Text link colour"
description={
<>
-
+
The text link colour should be a dark colour that contrasts with
white ("#ffffff").
-
-
+
+
= ({
>
See our guide for setting text link colours
-
+
>
}
input={
@@ -70,6 +70,7 @@ export const TextLinkForm: React.FC = ({
color={formik.values.linkColour}
onChange={(color) => formik.setFieldValue("linkColour", color)}
label="Text link colour"
+ errorMessage={formik.errors.linkColour}
/>
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/ThemeAndLogoForm.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/ThemeAndLogoForm.tsx
index b87fe60999..3629d5d0c5 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/ThemeAndLogoForm.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/ThemeAndLogoForm.tsx
@@ -7,12 +7,12 @@ import { useStore } from "pages/FlowEditor/lib/store";
import React from "react";
import ColorPicker from "ui/editor/ColorPicker";
import ImgInput from "ui/editor/ImgInput";
-import InputDescription from "ui/editor/InputDescription";
import InputRow from "ui/shared/InputRow";
import InputRowItem from "ui/shared/InputRowItem";
import InputRowLabel from "ui/shared/InputRowLabel";
-import { DesignPreview, FormProps, SettingsForm } from ".";
+import { SettingsForm } from "../shared/SettingsForm";
+import { DesignPreview, FormProps } from ".";
export const ThemeAndLogoForm: React.FC = ({
formikConfig,
@@ -54,18 +54,18 @@ export const ThemeAndLogoForm: React.FC = ({
: formik.setFieldValue("logo", null);
return (
-
formik={formik}
legend="Theme colour & logo"
description={
<>
-
+
The theme colour and logo, are used in the header of the service.
The theme colour should be a dark colour that contrasts with white
("#ffffff"). The logo should contrast with a dark background colour
(your theme colour) and have a transparent background.
-
-
+
+
= ({
>
See our guide for setting theme colours and logos
-
+
>
}
input={
@@ -86,6 +86,7 @@ export const ThemeAndLogoForm: React.FC = ({
formik.setFieldValue("primaryColour", color)
}
label="Theme colour"
+ errorMessage={formik.errors.primaryColour}
/>
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/index.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/index.tsx
index 4432b3d39c..9215f9b95b 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/index.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/DesignSettings/index.tsx
@@ -1,17 +1,14 @@
import Alert from "@mui/material/Alert";
import Box from "@mui/material/Box";
-import Button from "@mui/material/Button";
+import Container from "@mui/material/Container";
import Snackbar from "@mui/material/Snackbar";
import { styled } from "@mui/material/styles";
import Typography from "@mui/material/Typography";
import { TeamTheme } from "@opensystemslab/planx-core/types";
-import { FormikConfig, FormikProps } from "formik";
+import { FormikConfig } from "formik";
import { useStore } from "pages/FlowEditor/lib/store";
import React, { useEffect, useState } from "react";
-import EditorRow from "ui/editor/EditorRow";
-import InputGroup from "ui/editor/InputGroup";
-import InputLegend from "ui/editor/InputLegend";
-import ErrorWrapper from "ui/shared/ErrorWrapper";
+import SettingsSection from "ui/editor/SettingsSection";
import { ButtonForm } from "./ButtonForm";
import { FaviconForm } from "./FaviconForm";
@@ -22,71 +19,17 @@ export const DesignPreview = styled(Box)(({ theme }) => ({
border: `2px solid ${theme.palette.border.input}`,
padding: theme.spacing(2),
boxShadow: "4px 4px 0px rgba(150, 150, 150, 0.5)",
+ display: "flex",
+ justifyContent: "center",
}));
export const EXAMPLE_COLOUR = "#007078";
-type SettingsFormProps = {
- legend: string;
- description: React.ReactElement;
- input: React.ReactElement;
- formik: FormikProps;
- preview?: React.ReactElement;
-};
-
export interface FormProps {
formikConfig: FormikConfig;
onSuccess: () => void;
}
-export const SettingsForm: React.FC = ({
- formik,
- legend,
- description,
- input,
- preview,
-}) => {
- return (
-
-
-
- {legend}
- {description}
- {input}
-
- {preview && (
-
-
- Preview:
-
- {preview}
-
- )}
-
-
-
- Save
-
- formik.resetForm()}
- type="reset"
- variant="contained"
- disabled={!formik.dirty}
- color="secondary"
- sx={{ ml: 1.5 }}
- >
- Reset changes
-
-
-
-
-
- );
-};
-
const DesignSettings: React.FC = () => {
const [formikConfig, setFormikConfig] = useState<
FormikConfig | undefined
@@ -133,15 +76,15 @@ const DesignSettings: React.FC = () => {
const onSuccess = () => setOpen(true);
return (
-
-
+
+
Design
How your service appears to public users.
-
+
{formikConfig && (
<>
@@ -155,7 +98,7 @@ const DesignSettings: React.FC = () => {
Theme updated successfully
-
+
);
};
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/BoundaryForm.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/BoundaryForm.tsx
new file mode 100644
index 0000000000..767ebd75ec
--- /dev/null
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/BoundaryForm.tsx
@@ -0,0 +1,106 @@
+import { bbox } from "@turf/bbox";
+import { bboxPolygon } from "@turf/bbox-polygon";
+import axios, { isAxiosError } from "axios";
+import { useFormik } from "formik";
+import type { Feature, MultiPolygon, Polygon } from "geojson";
+import { useStore } from "pages/FlowEditor/lib/store";
+import React, { ChangeEvent } from "react";
+import InputLabel from "ui/editor/InputLabel";
+import Input from "ui/shared/Input";
+import * as Yup from "yup";
+
+import { SettingsForm } from "../shared/SettingsForm";
+import { FormProps } from ".";
+
+export type PlanningDataEntity = Feature<
+ Polygon | MultiPolygon,
+ Record
+>;
+
+/**
+ * Convert a complex local authority boundary to a simplified bounding box
+ */
+const convertToBoundingBox = (feature: PlanningDataEntity): Feature =>
+ bboxPolygon(bbox(feature));
+
+export default function BoundaryForm({ formikConfig, onSuccess }: FormProps) {
+ const planningDataURLRegex =
+ /^https:\/\/www\.planning\.data\.gov\.uk\/entity\/\d{1,7}$/;
+
+ const formSchema = Yup.object().shape({
+ boundaryUrl: Yup.string()
+ .matches(
+ planningDataURLRegex,
+ "Enter a boundary URL in the correct format, https://www.planning.data.gov.uk/entity/1234567",
+ )
+ .required("Enter a boundary URL"),
+ });
+
+ const formik = useFormik({
+ ...formikConfig,
+ validationSchema: formSchema,
+ onSubmit: async (values, { resetForm }) => {
+ try {
+ const { data } = await axios.get(
+ `${values.boundaryUrl}.geojson`,
+ );
+
+ const isUpdateSuccess = await useStore.getState().updateTeamSettings({
+ boundaryUrl: values.boundaryUrl,
+ boundaryBBox: convertToBoundingBox(data),
+ });
+ if (isUpdateSuccess) {
+ onSuccess();
+ resetForm({ values });
+ }
+ } catch (error) {
+ if (isAxiosError(error)) {
+ formik.setFieldError(
+ "boundaryUrl",
+ "We are unable to retrieve your boundary, check your boundary URL and try again",
+ );
+ }
+ console.error(error);
+ }
+ },
+ });
+
+ return (
+
+
+ The boundary URL is used to retrieve the outer boundary of your
+ council area. This can then help users define whether they are
+ within your council area.
+
+
+ The boundary should be given as a link from:{" "}
+
+ https://www.planning.data.gov.uk/entity/1234567
+
+
+ >
+ }
+ input={
+
+ ) => {
+ formik.setFieldValue("boundaryUrl", ev.target.value);
+ }}
+ id="boundaryUrl"
+ />
+
+ }
+ />
+ );
+}
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/ContactForm.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/ContactForm.tsx
new file mode 100644
index 0000000000..23527446a7
--- /dev/null
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/ContactForm.tsx
@@ -0,0 +1,107 @@
+import { useFormik } from "formik";
+import { useStore } from "pages/FlowEditor/lib/store";
+import React, { ChangeEvent } from "react";
+import InputLabel from "ui/editor/InputLabel";
+import Input from "ui/shared/Input";
+import * as Yup from "yup";
+
+import { SettingsForm } from "../shared/SettingsForm";
+import { FormProps } from ".";
+
+export default function ContactForm({ formikConfig, onSuccess }: FormProps) {
+ const formSchema = Yup.object().shape({
+ helpEmail: Yup.string()
+ .email(
+ "Enter an email address in the correct format, like example@email.com",
+ )
+ .required("Enter a contact email address"),
+ helpPhone: Yup.string().required("Enter a phone number"),
+ helpOpeningHours: Yup.string().required("Enter your opening hours"),
+ homepage: Yup.string()
+ .url(
+ "Enter a homepage URL in the correct format, like https://www.localauthority.gov.uk/",
+ )
+ .required("Enter a homepage"),
+ });
+
+ const formik = useFormik({
+ ...formikConfig,
+ validationSchema: formSchema,
+ onSubmit: async (values, { resetForm }) => {
+ const isSuccess = await useStore.getState().updateTeamSettings({
+ helpEmail: values.helpEmail,
+ helpOpeningHours: values.helpOpeningHours,
+ helpPhone: values.helpPhone,
+ homepage: values.homepage,
+ });
+ if (isSuccess) {
+ onSuccess();
+ resetForm({ values });
+ }
+ },
+ });
+
+ const onChangeFn = (type: string, event: ChangeEvent) =>
+ formik.setFieldValue(type, event.target.value);
+
+ return (
+
+ Details to help direct different messages, feedback, and enquiries
+ from users.
+ >
+ }
+ input={
+ <>
+
+ {
+ onChangeFn("homepage", event);
+ }}
+ value={formik.values.homepage ?? ""}
+ errorMessage={formik.errors.homepage}
+ id="homepage"
+ />
+
+
+ {
+ onChangeFn("helpEmail", event);
+ }}
+ id="helpEmail"
+ />
+
+
+ {
+ onChangeFn("helpPhone", event);
+ }}
+ id="helpPhone"
+ />
+
+
+ {
+ onChangeFn("helpOpeningHours", event);
+ }}
+ id="helpOpeningHours"
+ />
+
+ >
+ }
+ />
+ );
+}
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/ReferenceCodeForm.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/ReferenceCodeForm.tsx
new file mode 100644
index 0000000000..29d58ce863
--- /dev/null
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/ReferenceCodeForm.tsx
@@ -0,0 +1,80 @@
+import Link from "@mui/material/Link";
+import Typography from "@mui/material/Typography";
+import { useFormik } from "formik";
+import { useStore } from "pages/FlowEditor/lib/store";
+import React, { ChangeEvent } from "react";
+import InputLabel from "ui/editor/InputLabel";
+import Input from "ui/shared/Input";
+import * as Yup from "yup";
+
+import { SettingsForm } from "../shared/SettingsForm";
+import { FormProps } from ".";
+
+export default function ReferenceCodeForm({
+ formikConfig,
+ onSuccess,
+}: FormProps) {
+ const formSchema = Yup.object().shape({
+ referenceCode: Yup.string()
+ .min(3, "Code must be 3 characters long")
+ .max(3, "Code must be 3 characters long")
+ .required("Enter a reference code"),
+ });
+
+ const formik = useFormik({
+ ...formikConfig,
+ validationSchema: formSchema,
+ onSubmit: async (values, { resetForm }) => {
+ const isSuccess = await useStore.getState().updateTeamSettings({
+ referenceCode: values.referenceCode,
+ });
+ if (isSuccess) {
+ onSuccess();
+ resetForm({ values });
+ }
+ },
+ });
+
+ const onChangeFn = (type: string, event: ChangeEvent) =>
+ formik.setFieldValue(type, event.target.value.toUpperCase());
+
+ return (
+
+
+ Your local authority reference code is required for submissions.
+ This is a unique three-letter code per local authority.
+
+
+ The reference code can be found from Planning Data at:{" "}
+
+ https://www.planning.data.gov.uk/entity/?dataset=local-authority
+
+
+ >
+ }
+ input={
+ <>
+
+ {
+ onChangeFn("referenceCode", event);
+ }}
+ value={formik.values.referenceCode ?? ""}
+ errorMessage={formik.errors.referenceCode}
+ id="homepage"
+ />
+
+ >
+ }
+ />
+ );
+}
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/index.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/index.tsx
new file mode 100644
index 0000000000..1352092514
--- /dev/null
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/GeneralSettings/index.tsx
@@ -0,0 +1,91 @@
+import Alert from "@mui/material/Alert";
+import Container from "@mui/material/Container";
+import Snackbar from "@mui/material/Snackbar";
+import Typography from "@mui/material/Typography";
+import { TeamSettings } from "@opensystemslab/planx-core/types";
+import { FormikConfig } from "formik";
+import { useStore } from "pages/FlowEditor/lib/store";
+import React, { useEffect, useState } from "react";
+import SettingsSection from "ui/editor/SettingsSection";
+
+import BoundaryForm from "./BoundaryForm";
+import ContactForm from "./ContactForm";
+import ReferenceCodeForm from "./ReferenceCodeForm";
+
+export interface FormProps {
+ formikConfig: FormikConfig;
+ onSuccess: () => void;
+}
+
+const GeneralSettings: React.FC = () => {
+ const [formikConfig, setFormikConfig] = useState<
+ FormikConfig | undefined
+ >(undefined);
+
+ useEffect(() => {
+ const fetchTeam = async () => {
+ try {
+ const fetchedTeam = await useStore.getState().fetchCurrentTeam();
+ if (!fetchedTeam) throw Error("Unable to find team");
+
+ setFormikConfig({
+ initialValues: fetchedTeam.settings,
+ onSubmit: () => {},
+ validateOnBlur: false,
+ validateOnChange: false,
+ enableReinitialize: true,
+ });
+ } catch (error) {
+ console.error("Error fetching team:", error);
+ }
+ };
+
+ fetchTeam();
+ }, []);
+
+ const [open, setOpen] = useState(false);
+ const [updateMessage, setUpdateMessage] = useState("Setting Updated");
+
+ const handleClose = (
+ _event?: React.SyntheticEvent | Event,
+ reason?: string,
+ ) => {
+ if (reason === "clickaway") {
+ return;
+ }
+
+ setOpen(false);
+ };
+
+ const onSuccess = () => setOpen(true);
+
+ return (
+
+
+
+ Settings
+
+
+ Important links and settings for how your users connect with you.
+
+
+ {formikConfig && (
+ <>
+
+
+
+ >
+ )}
+
+
+ {updateMessage}
+
+
+
+ );
+};
+
+export default GeneralSettings;
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/ServiceFlags.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/ServiceFlags.tsx
index a2a8a59fd9..d8165924c1 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/ServiceFlags.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/ServiceFlags.tsx
@@ -1,13 +1,13 @@
-import Box from "@mui/material/Box";
+import Container from "@mui/material/Container";
import Typography from "@mui/material/Typography";
import React from "react";
-import EditorRow from "ui/editor/EditorRow";
import { FeaturePlaceholder } from "ui/editor/FeaturePlaceholder";
+import SettingsSection from "ui/editor/SettingsSection";
const ServiceFlags: React.FC = () => {
return (
-
-
+
+
Service flags
@@ -15,11 +15,11 @@ const ServiceFlags: React.FC = () => {
Manage the flag sets that this service uses. Flags at the top of a set
override flags below.
-
-
+
+
-
-
+
+
);
};
export default ServiceFlags;
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/ServiceSettings.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/ServiceSettings.tsx
index d56abc8aa1..0e4ef6f895 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/ServiceSettings.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/ServiceSettings.tsx
@@ -1,6 +1,7 @@
import Alert from "@mui/material/Alert";
import Box from "@mui/material/Box";
import Button from "@mui/material/Button";
+import Container from "@mui/material/Container";
import FormControlLabel, {
formControlLabelClasses,
} from "@mui/material/FormControlLabel";
@@ -11,10 +12,11 @@ import { FlowStatus } from "@opensystemslab/planx-core/types";
import { useFormik } from "formik";
import React, { useState } from "react";
import { FONT_WEIGHT_BOLD } from "theme";
-import EditorRow from "ui/editor/EditorRow";
import InputGroup from "ui/editor/InputGroup";
import InputLegend from "ui/editor/InputLegend";
import RichTextInput from "ui/editor/RichTextInput";
+import SettingsDescription from "ui/editor/SettingsDescription";
+import SettingsSection from "ui/editor/SettingsSection";
import Input, { Props as InputProps } from "ui/shared/Input";
import InputRow from "ui/shared/InputRow";
import InputRowItem from "ui/shared/InputRowItem";
@@ -39,14 +41,16 @@ const TextInput: React.FC<{
}) => {
return (
-
+
{title}
-
- {description && {description} }
+
+ {description && (
+ {description}
+ )}
@@ -140,17 +144,17 @@ const ServiceSettings: React.FC = () => {
});
return (
-
+
-
+
Elements
Manage the features that users will be able to see.
-
-
+
+
{
onChange: elementsForm.handleChange,
}}
/>
-
-
+
+
Footer Links
@@ -219,8 +223,8 @@ const ServiceSettings: React.FC = () => {
/>
-
-
+
+
{
>
Update elements
-
+
-
+
Status
Manage the status of your service.
-
-
+
+
{
/>
}
/>
-
- Toggle your service between "offline" and "online".
-
-
- A service must be online to be accessed by the public, and to enable
- analytics gathering.
-
-
- Offline services can still be edited and published as normal.
-
+
+ Toggle your service between "offline" and "online".
+
+ A service must be online to be accessed by the public, and to
+ enable analytics gathering.
+
+ Offline services can still be edited and published as normal.
+
{
Reset changes
-
+
{
Service settings updated successfully
-
+
);
};
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/Submissions/EventsLog.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/Submissions/EventsLog.tsx
index 4943bf092c..4de7b76aac 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/Submissions/EventsLog.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/Submissions/EventsLog.tsx
@@ -18,15 +18,10 @@ import DelayedLoadingIndicator from "components/DelayedLoadingIndicator";
import ErrorFallback from "components/ErrorFallback";
import { format } from "date-fns";
import React, { useState } from "react";
+import ErrorSummary from "ui/shared/ErrorSummary";
import { GetSubmissionsResponse, Submission } from ".";
-const ErrorSummary = styled(Box)(({ theme }) => ({
- marginTop: theme.spacing(1),
- padding: theme.spacing(3),
- border: `5px solid ${theme.palette.error.main}`,
-}));
-
const Response = styled(Box)(() => ({
fontSize: "1em",
margin: 1,
@@ -59,16 +54,12 @@ const EventsLog: React.FC = ({
if (error) return ;
if (submissions.length === 0)
return (
-
-
- {`No payments or submissions found for this service`}
-
-
- {`If you're looking for events before January 1, 2024, please contact a PlanX developer.`}
-
-
+
);
-
return (
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/Submissions/index.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/Submissions/index.tsx
index b7b3b964d3..73d1e4c247 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/Submissions/index.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/Submissions/index.tsx
@@ -1,9 +1,8 @@
import { gql, useQuery } from "@apollo/client";
-import Box from "@mui/material/Box";
import Container from "@mui/material/Container";
import Typography from "@mui/material/Typography";
import React, { useMemo } from "react";
-import EditorRow from "ui/editor/EditorRow";
+import SettingsSection from "ui/editor/SettingsSection";
import { useStore } from "../../../lib/store";
import EventsLog from "./EventsLog";
@@ -74,23 +73,17 @@ const Submissions: React.FC = () => {
return (
-
-
-
- Submissions
-
-
- Feed of payment and submission events for this service
-
-
-
-
-
-
+
+
+ Submissions
+
+
+ Feed of payment and submission events for this service
+
+
+
+
+
);
};
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/TeamSettings.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/TeamSettings.tsx
index 33d51b9777..b54f0a76ee 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/TeamSettings.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/TeamSettings.tsx
@@ -1,36 +1,36 @@
-import Box from "@mui/material/Box";
+import Container from "@mui/material/Container";
import Typography from "@mui/material/Typography";
import React from "react";
-import EditorRow from "ui/editor/EditorRow";
import { FeaturePlaceholder } from "ui/editor/FeaturePlaceholder";
+import SettingsSection from "ui/editor/SettingsSection";
const Team: React.FC = () => {
return (
-
-
+
+
Team
Manage who has permission to edit this service.
-
-
+
+
-
-
-
+
+
+
Sharing
Allow other teams on Plan✕ to find and use your service pattern.
-
-
+
+
-
-
+
+
);
};
export default Team;
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/index.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/index.tsx
deleted file mode 100644
index fe05eeb961..0000000000
--- a/editor.planx.uk/src/pages/FlowEditor/components/Settings/index.tsx
+++ /dev/null
@@ -1,169 +0,0 @@
-import Close from "@mui/icons-material/Close";
-import AppBar from "@mui/material/AppBar";
-import Box from "@mui/material/Box";
-import Container from "@mui/material/Container";
-import Grid from "@mui/material/Grid";
-import IconButton from "@mui/material/IconButton";
-import { styled } from "@mui/material/styles";
-import Tab from "@mui/material/Tab";
-import Tabs from "@mui/material/Tabs";
-import { HEADER_HEIGHT } from "components/Header";
-import React from "react";
-import { Link, useNavigation } from "react-navi";
-
-export interface SettingsTab {
- route: string;
- name: string;
- Component: React.FC;
-}
-
-interface SettingsProps {
- currentTab: string;
- tabs: SettingsTab[];
-}
-
-interface TabPanelProps {
- children?: React.ReactNode;
- index: number;
- value: number;
-}
-
-function TabPanel(props: TabPanelProps) {
- const { children, value, index, ...other } = props;
-
- return (
-
- {value === index && (
-
- {children}
-
- )}
-
- );
-}
-
-function a11yProps(index: number) {
- return {
- id: `nav-tab-${index}`,
- "aria-controls": `nav-tabpanel-${index}`,
- };
-}
-
-interface LinkTabProps {
- label?: string;
- href?: string;
-}
-
-const StyledTab = styled(Tab)(({ theme }) => ({
- position: "relative",
- zIndex: 1,
- textTransform: "none",
- background: theme.palette.background.default,
-})) as typeof Tab;
-
-function LinkTab(props: LinkTabProps) {
- return (
- {
- if (!event.metaKey) {
- event.preventDefault();
- }
- }}
- {...props}
- />
- );
-}
-
-const PREFIX = "Settings";
-
-const classes = {
- tabs: `${PREFIX}-tabs`,
- tabIndicator: `${PREFIX}-tabIndicator`,
-};
-
-const Root = styled(Box)(({ theme }) => ({
- flexGrow: 1,
- backgroundColor: theme.palette.background.default,
- position: "absolute",
- top: HEADER_HEIGHT,
- left: 0,
- right: 0,
- minHeight: `calc(100% - ${HEADER_HEIGHT}px)`,
- // Ensure settings panels sit above editor content with explicit z-index set, will be redundent when we move to side-tabbed settings
- zIndex: theme.zIndex.appBar,
- [`& .${classes.tabs}`]: {
- backgroundColor: theme.palette.border.main,
- },
- [`& .${classes.tabIndicator}`]: {
- height: "100%",
- backgroundColor: "#f2f2f2",
- zIndex: 0,
- },
-}));
-
-const Settings: React.FC = ({ currentTab, tabs }) => {
- const { navigate } = useNavigation();
-
- const handleChange = (event: React.ChangeEvent) => {
- navigate(event.currentTarget.pathname);
- };
-
- const value = tabs.findIndex(({ route }) => route === currentTab);
-
- return (
-
-
-
-
-
- {tabs.map(({ name, route }, index) => (
-
- ))}
-
-
-
-
-
-
-
-
-
- {tabs.map(({ name, Component }, index) => (
-
-
-
- ))}
-
- );
-};
-
-export default Settings;
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Settings/shared/SettingsForm.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Settings/shared/SettingsForm.tsx
new file mode 100644
index 0000000000..10cf9fefee
--- /dev/null
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Settings/shared/SettingsForm.tsx
@@ -0,0 +1,61 @@
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Typography from "@mui/material/Typography";
+import { FormikProps } from "formik";
+import React from "react";
+import InputGroup from "ui/editor/InputGroup";
+import InputLegend from "ui/editor/InputLegend";
+import SettingsDescription from "ui/editor/SettingsDescription";
+import SettingsSection from "ui/editor/SettingsSection";
+import ErrorWrapper from "ui/shared/ErrorWrapper";
+
+type SettingsFormProps = {
+ legend: string;
+ description: React.ReactElement;
+ input: React.ReactElement;
+ formik: FormikProps;
+ preview?: React.ReactElement;
+};
+
+export const SettingsForm = ({
+ formik,
+ legend,
+ description,
+ input,
+ preview,
+}: SettingsFormProps) => {
+ return (
+
+
+
+ {legend}
+ {description}
+ {input}
+
+ {preview && (
+
+
+ Preview:
+
+ {preview}
+
+ )}
+
+
+ Save
+
+ formik.resetForm()}
+ type="reset"
+ variant="contained"
+ disabled={!formik.dirty}
+ color="secondary"
+ sx={{ ml: 1.5 }}
+ >
+ Reset changes
+
+
+
+
+ );
+};
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/EditHistory.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/EditHistory.tsx
index b174681364..c92b60b6b6 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/EditHistory.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/EditHistory.tsx
@@ -18,9 +18,9 @@ import { OT } from "@planx/graph/types";
import DelayedLoadingIndicator from "components/DelayedLoadingIndicator";
import React, { useState } from "react";
import { FONT_WEIGHT_SEMI_BOLD } from "theme";
+import { Operation } from "types";
import { useStore } from "../../lib/store";
-import { Operation } from "types";
import { formatLastEditDate } from "../../utils";
const TooltipWrap = styled(({ className, ...props }: TooltipProps) => (
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/PublishDialog.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/PublishDialog.tsx
new file mode 100644
index 0000000000..f956eaccbb
--- /dev/null
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/PublishDialog.tsx
@@ -0,0 +1,291 @@
+import Close from "@mui/icons-material/Close";
+import Done from "@mui/icons-material/Done";
+import NotInterested from "@mui/icons-material/NotInterested";
+import Warning from "@mui/icons-material/Warning";
+import Box from "@mui/material/Box";
+import Button from "@mui/material/Button";
+import Collapse from "@mui/material/Collapse";
+import Divider from "@mui/material/Divider";
+import Link from "@mui/material/Link";
+import List from "@mui/material/List";
+import ListItem from "@mui/material/ListItem";
+import ListItemIcon from "@mui/material/ListItemIcon";
+import ListItemText from "@mui/material/ListItemText";
+import Typography from "@mui/material/Typography";
+import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
+import { formatLastPublishMessage } from "pages/FlowEditor/utils";
+import React, { useState } from "react";
+import { useAsync } from "react-use";
+import Caret from "ui/icons/Caret";
+
+import { useStore } from "../../lib/store";
+
+export interface AlteredNode {
+ id: string;
+ type: TYPES;
+ data?: any;
+}
+
+const AlteredNodeListItem = (props: { node: AlteredNode }) => {
+ const { node } = props;
+ let text, data;
+
+ if (node.id === "_root") {
+ text = "Changed _root service by adding, deleting or re-ordering nodes";
+ } else if (node.id === "0") {
+ text = `The entire _root service will be published for the first time`;
+ } else if (node.id && Object.keys(node).length === 1) {
+ text = `Deleted node ${node.id}`;
+ } else if (node.type && node.data) {
+ text = `Added/edited ${TYPES[node.type]}`;
+ data = JSON.stringify(node.data, null, 2);
+ } else {
+ text = `Added/edited ${TYPES[node.type]}`;
+ }
+
+ return (
+
+ {text}
+ {data && {data} }
+
+ );
+};
+
+interface Portal {
+ text: string;
+ flowId: string;
+ publishedFlowId: number;
+ summary: string;
+ publishedBy: number;
+ publishedAt: string;
+}
+
+const AlteredNestedFlowListItem = (props: Portal) => {
+ const { text, flowId, publishedFlowId, summary, publishedAt } = props;
+
+ const [nestedFlowLastPublishedTitle, setNestedFlowLastPublishedTitle] =
+ useState();
+ const lastPublisher = useStore((state) => state.lastPublisher);
+
+ const _nestedFlowLastPublishedRequest = useAsync(async () => {
+ const user = await lastPublisher(flowId);
+ setNestedFlowLastPublishedTitle(
+ formatLastPublishMessage(publishedAt, user),
+ );
+ });
+
+ return (
+
+
+ {text}
+
+ ) : (
+ {text}
+ )
+ }
+ secondary={
+ <>
+
+ {nestedFlowLastPublishedTitle}
+
+ {summary && (
+
+ {summary}
+
+ )}
+ >
+ }
+ />
+
+ );
+};
+
+interface AlteredNodesSummary {
+ title: string;
+ portals: Portal[];
+ updated: number;
+ deleted: number;
+}
+
+export const AlteredNodesSummaryContent = (props: {
+ alteredNodes: AlteredNode[];
+ lastPublishedTitle: string;
+}) => {
+ const { alteredNodes, lastPublishedTitle } = props;
+ const [expandNodes, setExpandNodes] = useState(false);
+
+ const changeSummary: AlteredNodesSummary = {
+ title: lastPublishedTitle,
+ portals: [],
+ updated: 0,
+ deleted: 0,
+ };
+
+ alteredNodes.map((node) => {
+ if (node.id === "0") {
+ changeSummary["title"] =
+ "You are publishing the main service for the first time.";
+ } else if (node.id && Object.keys(node).length === 1) {
+ changeSummary["deleted"] += 1;
+ } else if (node.type === TYPES.InternalPortal) {
+ if (node.data?.text?.includes("/")) {
+ changeSummary["portals"].push({ ...node.data, flowId: node.id });
+ }
+ } else if (node.type) {
+ changeSummary["updated"] += 1;
+ }
+
+ return changeSummary;
+ });
+
+ return (
+
+
+ {`Changes`}
+
+ {changeSummary["title"] && (
+ {changeSummary["title"]}
+ )}
+ {(changeSummary["updated"] > 0 || changeSummary["deleted"] > 0) && (
+
+
+
+ {`${changeSummary["updated"]} nodes have been updated or added`}
+
+
+ {`${changeSummary["deleted"]} nodes have been deleted`}
+
+
+
+
+ {`See detailed changelog `}
+ setExpandNodes((expandNodes) => !expandNodes)}
+ size="small"
+ disableRipple
+ >
+
+
+
+
+
+
+ {alteredNodes.map((node) => (
+
+ ))}
+
+
+
+
+
+ )}
+
+ {changeSummary["portals"].length > 0 && (
+ <>
+
+ {`This includes recently published changes in the following nested services:`}
+
+ {changeSummary["portals"].map((portal) => (
+
+ ))}
+
+
+
+ >
+ )}
+
+ );
+};
+
+export interface ValidationCheck {
+ title: string;
+ status: "Pass" | "Fail" | "Warn" | "Not applicable";
+ message: string;
+}
+
+export const ValidationChecks = (props: {
+ validationChecks: ValidationCheck[];
+}) => {
+ const { validationChecks } = props;
+
+ const Icon: Record = {
+ Pass: ,
+ Fail: ,
+ Warn: ,
+ "Not applicable": ,
+ };
+
+ return (
+
+
+ Validation checks
+
+
+ {validationChecks.map((check, i) => (
+
+ theme.spacing(3) }}>
+ {Icon[check.status]}
+
+
+ {check.title}
+
+ }
+ secondary={
+
+ {check.message}
+
+ }
+ />
+
+ ))}
+
+
+
+ );
+};
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search.tsx
new file mode 100644
index 0000000000..679377c8cb
--- /dev/null
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search.tsx
@@ -0,0 +1,134 @@
+import Box from "@mui/material/Box";
+import Container from "@mui/material/Container";
+import Typography from "@mui/material/Typography";
+import { ComponentType } from "@opensystemslab/planx-core/types";
+import { ICONS } from "@planx/components/ui";
+import { debounce } from "lodash";
+import { useStore } from "pages/FlowEditor/lib/store";
+import React, { ChangeEvent, useCallback, useState } from "react";
+import useSWR from "swr";
+import { FONT_WEIGHT_SEMI_BOLD } from "theme";
+import InputLabel from "ui/editor/InputLabel";
+import ChecklistItem from "ui/shared/ChecklistItem";
+import Input from "ui/shared/Input";
+
+const mockData: SearchResult[] = [
+ {
+ nodeId: "abc123",
+ nodeType: ComponentType.Question,
+ nodeTitle: "Is the property in Lambeth?",
+ text: "Lambeth example biodiversity text",
+ path: ["_root", "xyz123", "abc123"],
+ },
+ {
+ nodeId: "abc456",
+ nodeType: ComponentType.Notice,
+ nodeTitle: "It looks like the property is not in Lambeth",
+ text: "Lambeth example biodiversity text",
+ path: ["_root", "xyz123", "abc123"],
+ },
+ {
+ nodeId: "abc789",
+ nodeType: ComponentType.Question,
+ nodeTitle: "What are you applying about?",
+ text: "Lambeth example biodiversity text",
+ path: ["_root", "xyz123", "abc123"],
+ },
+];
+
+export interface SearchResult {
+ nodeId: string;
+ nodeType: ComponentType;
+ nodeTitle?: string;
+ text: string;
+ path: string[];
+}
+
+const SearchResults: React.FC<{ results: SearchResult[] }> = ({ results }) => {
+ return (
+
+ {results.map((result) => (
+
+ ))}
+
+ );
+};
+
+const SearchResultCard: React.FC = ({
+ nodeTitle,
+ text,
+ nodeType,
+}) => {
+ const Icon = ICONS[nodeType];
+
+ return (
+ ({
+ pb: 2,
+ borderBottom: `1px solid ${theme.palette.border.main}`,
+ })}
+ >
+
+ {Icon && }
+
+ Question
+ {nodeTitle && ` - ${nodeTitle}`}
+
+
+ {text}
+
+ );
+};
+
+const Search: React.FC = () => {
+ const [flowId] = useStore((state) => [state.id]);
+ const [query, setQuery] = useState("");
+ const [debouncedQuery, setDebouncedQuery] = useState(query);
+
+ const debounceSearch = useCallback(
+ debounce((input) => setDebouncedQuery(input), 500),
+ [],
+ );
+
+ const handleChange = (e: ChangeEvent) => {
+ const input = e.target.value;
+ setQuery(input);
+ debounceSearch(input);
+ };
+
+ const fetcher = (url: string) => fetch(url).then((r) => r.json());
+ const endpoint = `${process.env.REACT_APP_API_URL}/flows/${flowId}/search`;
+ const { data, error } = useSWR(
+ debouncedQuery ? `${endpoint}?find=${debouncedQuery}` : null,
+ fetcher,
+ );
+
+ return (
+
+
+
+
+ {}}
+ />
+
+ {error && "Something went wrong"}
+ {mockData ? : "Loading..."}
+
+
+ );
+};
+
+export default Search;
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/index.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/index.tsx
index 378f411aa6..ed5ed9ab49 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/index.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/index.tsx
@@ -7,35 +7,37 @@ import SignalCellularAltIcon from "@mui/icons-material/SignalCellularAlt";
import Badge from "@mui/material/Badge";
import Box from "@mui/material/Box";
import Button from "@mui/material/Button";
-import Collapse from "@mui/material/Collapse";
import Container from "@mui/material/Container";
import Dialog from "@mui/material/Dialog";
import DialogActions from "@mui/material/DialogActions";
import DialogContent from "@mui/material/DialogContent";
import DialogTitle from "@mui/material/DialogTitle";
-import Divider from "@mui/material/Divider";
import Link from "@mui/material/Link";
-import List from "@mui/material/List";
-import ListItem from "@mui/material/ListItem";
-import ListItemText from "@mui/material/ListItemText";
import { styled } from "@mui/material/styles";
import Tab, { tabClasses } from "@mui/material/Tab";
import Tabs from "@mui/material/Tabs";
import Tooltip from "@mui/material/Tooltip";
import Typography from "@mui/material/Typography";
-import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import { AxiosError } from "axios";
-import formatDistanceToNow from "date-fns/formatDistanceToNow";
+import { hasFeatureFlag } from "lib/featureFlags";
+import { formatLastPublishMessage } from "pages/FlowEditor/utils";
import React, { useState } from "react";
import { useAsync } from "react-use";
-import Caret from "ui/icons/Caret";
+import Permission from "ui/editor/Permission";
import Input from "ui/shared/Input";
import Questions from "../../../Preview/Questions";
import { useStore } from "../../lib/store";
import EditHistory from "./EditHistory";
+import {
+ AlteredNode,
+ AlteredNodesSummaryContent,
+ ValidationCheck,
+ ValidationChecks,
+} from "./PublishDialog";
+import Search from "./Search";
-type SidebarTabs = "PreviewBrowser" | "History";
+type SidebarTabs = "PreviewBrowser" | "History" | "Search";
const Console = styled(Box)(() => ({
overflow: "auto",
@@ -124,9 +126,6 @@ const StyledTab = styled(Tab)(({ theme }) => ({
},
})) as typeof Tab;
-const formatLastPublish = (date: string, user: string) =>
- `Last published ${formatDistanceToNow(new Date(date))} ago by ${user}`;
-
const DebugConsole = () => {
const [passport, breadcrumbs, flowId, cachedBreadcrumbs] = useStore(
(state) => [
@@ -154,211 +153,6 @@ const DebugConsole = () => {
);
};
-interface AlteredNode {
- id: string;
- type: TYPES;
- data?: any;
-}
-
-const AlteredNodeListItem = (props: { node: AlteredNode }) => {
- const { node } = props;
- let text, data;
-
- if (node.id === "_root") {
- text = "Changed _root service by adding, deleting or re-ordering nodes";
- } else if (node.id === "0") {
- text = `The entire _root service will be published for the first time`;
- } else if (node.id && Object.keys(node).length === 1) {
- text = `Deleted node ${node.id}`;
- } else if (node.type && node.data) {
- text = `Added/edited ${TYPES[node.type]}`;
- data = JSON.stringify(node.data, null, 2);
- } else {
- text = `Added/edited ${TYPES[node.type]}`;
- }
-
- return (
-
- {text}
- {data && {data} }
-
- );
-};
-
-interface Portal {
- text: string;
- flowId: string;
- publishedFlowId: number;
- summary: string;
- publishedBy: number;
- publishedAt: string;
-}
-
-const AlteredNestedFlowListItem = (props: Portal) => {
- const { text, flowId, publishedFlowId, summary, publishedAt } = props;
-
- const [nestedFlowLastPublishedTitle, setNestedFlowLastPublishedTitle] =
- useState();
- const lastPublisher = useStore((state) => state.lastPublisher);
-
- const _nestedFlowLastPublishedRequest = useAsync(async () => {
- const user = await lastPublisher(flowId);
- setNestedFlowLastPublishedTitle(formatLastPublish(publishedAt, user));
- });
-
- return (
-
-
- {text}
-
- ) : (
- {text}
- )
- }
- secondary={
- <>
-
- {nestedFlowLastPublishedTitle}
-
- {summary && (
-
- {summary}
-
- )}
- >
- }
- />
-
- );
-};
-
-interface AlteredNodesSummary {
- title: string;
- portals: Portal[];
- updated: number;
- deleted: number;
-}
-
-const AlteredNodesSummaryContent = (props: {
- alteredNodes: AlteredNode[];
- url: string;
-}) => {
- const { alteredNodes, url } = props;
- const [expandNodes, setExpandNodes] = useState(false);
-
- const changeSummary: AlteredNodesSummary = {
- title: "",
- portals: [],
- updated: 0,
- deleted: 0,
- };
-
- alteredNodes.map((node) => {
- if (node.id === "0") {
- changeSummary["title"] =
- "You are publishing the main service for the first time.";
- } else if (node.id && Object.keys(node).length === 1) {
- changeSummary["deleted"] += 1;
- } else if (node.type === TYPES.InternalPortal) {
- if (node.data?.text?.includes("/")) {
- changeSummary["portals"].push({ ...node.data, flowId: node.id });
- }
- } else if (node.type) {
- changeSummary["updated"] += 1;
- }
-
- return changeSummary;
- });
-
- return (
-
- {changeSummary["title"] && (
-
- {changeSummary["title"]}
-
- )}
- {(changeSummary["updated"] > 0 || changeSummary["deleted"] > 0) && (
-
-
-
- {`${changeSummary["updated"]} nodes have been updated or added`}
-
-
- {`${changeSummary["deleted"]} nodes have been deleted`}
-
-
-
-
- {`See detailed changelog `}
- setExpandNodes((expandNodes) => !expandNodes)}
- size="small"
- disableRipple
- >
-
-
-
-
-
-
- {alteredNodes.map((node) => (
-
- ))}
-
-
-
-
-
- )}
-
- {changeSummary["portals"].length > 0 && (
-
- {`This includes recently published changes in the following nested services:`}
-
- {changeSummary["portals"].map((portal) => (
-
- ))}
-
-
- )}
-
-
-
- {`Preview these content changes in-service before publishing `}
-
- {`here (opens in a new tab).`}
-
-
-
-
- );
-};
-
const Sidebar: React.FC<{
url: string;
}> = React.memo((props) => {
@@ -372,7 +166,6 @@ const Sidebar: React.FC<{
lastPublisher,
validateAndDiffFlow,
isFlowPublished,
- isPlatformAdmin,
] = useStore((state) => [
state.id,
state.flowAnalyticsLink,
@@ -382,13 +175,14 @@ const Sidebar: React.FC<{
state.lastPublisher,
state.validateAndDiffFlow,
state.isFlowPublished,
- state.user?.isPlatformAdmin,
]);
const [key, setKey] = useState(false);
const [lastPublishedTitle, setLastPublishedTitle] = useState(
"This flow is not published yet",
);
- const [validationMessage, setValidationMessage] = useState();
+ const [validationChecks, setValidationChecks] = useState(
+ [],
+ );
const [alteredNodes, setAlteredNodes] = useState();
const [dialogOpen, setDialogOpen] = useState(false);
const [summary, setSummary] = useState();
@@ -398,11 +192,54 @@ const Sidebar: React.FC<{
setActiveTab(newValue);
};
+ const handleCheckForChangesToPublish = async () => {
+ try {
+ setLastPublishedTitle("Checking for changes...");
+ const alteredFlow = await validateAndDiffFlow(flowId);
+ setAlteredNodes(
+ alteredFlow?.data.alteredNodes ? alteredFlow.data.alteredNodes : [],
+ );
+ setLastPublishedTitle(
+ alteredFlow?.data.alteredNodes
+ ? `Found changes to ${alteredFlow.data.alteredNodes.length} nodes`
+ : alteredFlow?.data.message,
+ );
+ setValidationChecks(alteredFlow?.data?.validationChecks);
+ setDialogOpen(true);
+ } catch (error) {
+ setLastPublishedTitle("Error checking for changes to publish");
+
+ if (error instanceof AxiosError) {
+ alert(error.response?.data?.error);
+ } else {
+ alert(
+ `Error checking for changes to publish. Confirm that your graph does not have any corrupted nodes and that all external portals are valid. \n${error}`,
+ );
+ }
+ }
+ };
+
+ const handlePublish = async () => {
+ try {
+ setDialogOpen(false);
+ setLastPublishedTitle("Publishing changes...");
+ const { alteredNodes, message } = await publishFlow(flowId, summary);
+ setLastPublishedTitle(
+ alteredNodes
+ ? `Successfully published changes to ${alteredNodes.length} nodes`
+ : `${message}` || "No new changes to publish",
+ );
+ } catch (error) {
+ setLastPublishedTitle("Error trying to publish");
+ alert(error);
+ }
+ };
+
const _lastPublishedRequest = useAsync(async () => {
const date = await lastPublished(flowId);
const user = await lastPublisher(flowId);
- setLastPublishedTitle(formatLastPublish(date, user));
+ setLastPublishedTitle(formatLastPublishMessage(date, user));
});
const _validateAndDiffRequest = useAsync(async () => {
@@ -461,7 +298,7 @@ const Sidebar: React.FC<{
)}
- {isPlatformAdmin && (
+
- )}
+
{
- try {
- setLastPublishedTitle("Checking for changes...");
- const alteredFlow = await validateAndDiffFlow(flowId);
- setAlteredNodes(
- alteredFlow?.data.alteredNodes
- ? alteredFlow.data.alteredNodes
- : [],
- );
- setLastPublishedTitle(
- alteredFlow?.data.alteredNodes
- ? `Found changes to ${alteredFlow.data.alteredNodes.length} node(s)`
- : alteredFlow?.data.message,
- );
- setValidationMessage(alteredFlow?.data.description);
- setDialogOpen(true);
- } catch (error) {
- setLastPublishedTitle(
- "Error checking for changes to publish",
- );
-
- if (error instanceof AxiosError) {
- alert(error.response?.data?.error);
- } else {
- alert(
- `Error checking for changes to publish. Confirm that your graph does not have any corrupted nodes and that all external portals are valid. \n${error}`,
- );
- }
- }
- }}
+ onClick={handleCheckForChangesToPublish}
>
CHECK FOR CHANGES TO PUBLISH
@@ -563,17 +371,30 @@ const Sidebar: React.FC<{
onClose={() => setDialogOpen(false)}
aria-labelledby="alert-dialog-title"
aria-describedby="alert-dialog-description"
+ maxWidth="md"
>
-
- {lastPublishedTitle}
+
+ {`Check for changes to publish`}
{alteredNodes?.length ? (
<>
+
+
+
+ {`Preview these content changes in-service before publishing `}
+
+ {`here (opens in a new tab).`}
+
+
+
setSummary(e.target.value)}
/>
>
- ) : validationMessage ? (
- validationMessage
) : (
- lastPublishedTitle
+
+ {`No new changes to publish`}
+
)}
-
+
setDialogOpen(false)}>
KEEP EDITING
{
- try {
- setDialogOpen(false);
- setLastPublishedTitle("Publishing changes...");
- const { alteredNodes, message } = await publishFlow(
- flowId,
- summary,
- );
- setLastPublishedTitle(
- alteredNodes
- ? `Successfully published changes to ${alteredNodes.length} node(s)`
- : `${message}` || "No new changes to publish",
- );
- } catch (error) {
- setLastPublishedTitle("Error trying to publish");
- alert(error);
- console.log(error);
- }
- }}
- disabled={!alteredNodes || alteredNodes.length === 0}
+ variant="contained"
+ onClick={handlePublish}
+ disabled={
+ !alteredNodes ||
+ alteredNodes.length === 0 ||
+ validationChecks.filter((v) => v.status === "Fail").length >
+ 0
+ }
>
PUBLISH
@@ -642,6 +451,15 @@ const Sidebar: React.FC<{
value="History"
label="History"
/>
+ {hasFeatureFlag("SEARCH") && (
+
+ )}
{activeTab === "PreviewBrowser" && (
@@ -656,6 +474,11 @@ const Sidebar: React.FC<{
)}
+ {activeTab === "Search" && (
+
+
+
+ )}
{showDebugConsole && }
);
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Team/TeamMembers.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Team/TeamMembers.tsx
index f1fe300a82..c48c680317 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/Team/TeamMembers.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/Team/TeamMembers.tsx
@@ -1,5 +1,4 @@
import Avatar from "@mui/material/Avatar";
-import Box from "@mui/material/Box";
import Chip from "@mui/material/Chip";
import Container from "@mui/material/Container";
import { styled } from "@mui/material/styles";
@@ -13,7 +12,7 @@ import Typography from "@mui/material/Typography";
import { Role, User } from "@opensystemslab/planx-core/types";
import React from "react";
import { FONT_WEIGHT_SEMI_BOLD } from "theme";
-import EditorRow from "ui/editor/EditorRow";
+import SettingsSection from "ui/editor/SettingsSection";
const StyledAvatar = styled(Avatar)(({ theme }) => ({
background: theme.palette.background.dark,
@@ -128,38 +127,36 @@ export const TeamMembers: React.FC = ({ teamMembersByRole }) => {
return (
-
-
+
+
+ Team editors
+
+
+ Editors have access to edit your services.
+
+
+
+
+
+ Admins
+
+
+ Admins have editor access across all teams.
+
+
+
+ {archivedMembers.length > 0 && (
+
- Team editors
+ Archived team editors
- Editors have access to edit your services.
+ Past team members who no longer have access to the Editor, but may
+ be part of the edit history of your services.
-
-
-
-
- Admins
-
-
- Admins have editor access across all teams.
-
-
-
- {archivedMembers.length > 0 && (
-
-
- Archived team editors
-
-
- Past team members who no longer have access to the Editor, but may
- be part of the edit history of your services.
-
-
-
- )}
-
+
+
+ )}
);
};
diff --git a/editor.planx.uk/src/pages/FlowEditor/components/forms/FormModal.tsx b/editor.planx.uk/src/pages/FlowEditor/components/forms/FormModal.tsx
index fb12ce623b..1aae0ee578 100644
--- a/editor.planx.uk/src/pages/FlowEditor/components/forms/FormModal.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/components/forms/FormModal.tsx
@@ -61,9 +61,7 @@ const NodeTypeSelect: React.FC<{
Date Input
Address Input
Contact Input
- {hasFeatureFlag("LIST_COMPONENT") && (
- List
- )}
+ List
Task List
diff --git a/editor.planx.uk/src/pages/FlowEditor/index.tsx b/editor.planx.uk/src/pages/FlowEditor/index.tsx
index 937c5561a4..c712f3c1e2 100644
--- a/editor.planx.uk/src/pages/FlowEditor/index.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/index.tsx
@@ -1,105 +1,24 @@
-import "./components/Settings";
import "./floweditor.scss";
-import { gql, useSubscription } from "@apollo/client";
-import EditNoteIcon from "@mui/icons-material/EditNote";
import Box from "@mui/material/Box";
-import Link from "@mui/material/Link";
import { styled } from "@mui/material/styles";
-import Typography from "@mui/material/Typography";
+import { HEADER_HEIGHT } from "components/Header";
import React, { useRef } from "react";
-import { FONT_WEIGHT_SEMI_BOLD } from "theme";
-import { Operation } from "types";
import { rootFlowPath } from "../../routes/utils";
import Flow from "./components/Flow";
import Sidebar from "./components/Sidebar";
import { useStore } from "./lib/store";
import useScrollControlsAndRememberPosition from "./lib/useScrollControlsAndRememberPosition";
-import { formatLastEditMessage } from "./utils";
const EditorContainer = styled(Box)(() => ({
display: "flex",
alignItems: "stretch",
overflow: "hidden",
flexGrow: 1,
+ maxHeight: `calc(100vh - ${HEADER_HEIGHT}px)`,
}));
-export const LastEdited = () => {
- const [flowId] = useStore((state) => [state.id]);
-
- const { data, loading, error } = useSubscription<{ operations: Operation[] }>(
- gql`
- subscription GetMostRecentOperation($flow_id: uuid = "") {
- operations(
- limit: 1
- where: { flow_id: { _eq: $flow_id } }
- order_by: { created_at: desc }
- ) {
- id
- createdAt: created_at
- actor {
- firstName: first_name
- lastName: last_name
- }
- }
- }
- `,
- {
- variables: {
- flow_id: flowId,
- },
- },
- );
-
- if (error) {
- console.log(error.message);
- return null;
- }
-
- // Handle missing operations (e.g. non-production data)
- if (data && !data.operations[0].actor) return null;
-
- let message: string;
- if (loading || !data) {
- message = "Loading...";
- } else {
- const {
- operations: [operation],
- } = data;
- message = formatLastEditMessage(operation?.createdAt, operation?.actor);
- }
-
- return (
- ({
- backgroundColor: theme.palette.grey[200],
- borderBottom: `1px solid ${theme.palette.border.main}`,
- padding: theme.spacing(0.5, 1),
- paddingLeft: theme.spacing(2),
- display: "flex",
- alignItems: "center",
- [theme.breakpoints.up("md")]: {
- paddingLeft: theme.spacing(2),
- },
- })}
- >
-
- {message}
-
-
- View edit history
-
-
- );
-};
-
const FlowEditor: React.FC = ({ flow, breadcrumbs }) => {
const scrollContainerRef = useRef(null);
useScrollControlsAndRememberPosition(scrollContainerRef);
@@ -115,7 +34,6 @@ const FlowEditor: React.FC = ({ flow, breadcrumbs }) => {
overflowX: "auto",
}}
>
-
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/advancedAutomations.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/advancedAutomations.test.ts
index e0df4e2696..ac20d92923 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/advancedAutomations.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/advancedAutomations.test.ts
@@ -1,8 +1,8 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { Store, vanillaStore } from "../store";
+import { Store, useStore } from "../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const flow: Store.flow = {
_root: {
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/automations.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/automations.test.ts
index 9b2599a997..54fc776b78 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/automations.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/automations.test.ts
@@ -1,9 +1,9 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import shuffle from "lodash/shuffle";
-import { vanillaStore } from "../store";
+import { useStore } from "../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
beforeEach(() => {
getState().resetPreview();
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/clones.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/clones.test.ts
index 3f608eda46..d87413e083 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/clones.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/clones.test.ts
@@ -1,9 +1,9 @@
-import { vanillaStore } from "../store";
-const { getState, setState } = vanillaStore;
+import { useStore } from "../store";
+const { getState, setState } = useStore;
import forwardsFlow from "./mocks/flowWithClones.json";
import reverseFlow from "./mocks/flowWithReverseClones.json";
-const { record, previousCard, currentCard, upcomingCardIds, resetPreview } =
+const { record, previousCard, getCurrentCard, upcomingCardIds, resetPreview } =
getState();
beforeEach(() => {
@@ -54,14 +54,14 @@ describe("Clone order in flow (backwards)", () => {
// Traverse forward to final node
record("question", { answers: ["leftChoice"] });
record("clone", { answers: ["finalNode"] });
- expect(currentCard()?.id).toBe("finalNode");
+ expect(getCurrentCard()?.id).toBe("finalNode");
// Traverse back one-by-one to first node
- let previous = previousCard(currentCard());
+ let previous = previousCard(getCurrentCard());
expect(previous).toBe("clone");
record(previous!);
- previous = previousCard(currentCard());
+ previous = previousCard(getCurrentCard());
expect(previous).toBe("question");
record(previous!);
@@ -79,18 +79,18 @@ describe("Clone order in flow (backwards)", () => {
record("question", { answers: ["rightChoice"] });
record("rightNotice", { answers: ["clone"] });
record("clone", { answers: ["finalNode"] });
- expect(currentCard()?.id).toBe("finalNode");
+ expect(getCurrentCard()?.id).toBe("finalNode");
// Traverse back one-by-one to first node
- let previous = previousCard(currentCard());
+ let previous = previousCard(getCurrentCard());
expect(previous).toBe("clone");
record(previous!);
- previous = previousCard(currentCard());
+ previous = previousCard(getCurrentCard());
expect(previous).toBe("rightNotice");
record(previous!);
- previous = previousCard(currentCard());
+ previous = previousCard(getCurrentCard());
expect(previous).toBe("question");
record(previous!);
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/externalPortals.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/externalPortals.test.ts
index 6646cafadd..d43d63afbd 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/externalPortals.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/externalPortals.test.ts
@@ -1,8 +1,8 @@
-import { FullStore, vanillaStore } from "../store";
+import { FullStore, useStore } from "../store";
import multipleExternalPortals from "./mocks/multipleExternalPortals.json";
import singleExternalPortal from "./mocks/singleExternalPortal.json";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const { upcomingCardIds, record } = getState();
let initialState: FullStore;
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/filters.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/filters.test.ts
index dc1d3451d7..9ce3674e38 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/filters.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/filters.test.ts
@@ -1,11 +1,16 @@
-import { vanillaStore } from "../store";
+import { useStore } from "../store";
import flowWithAutoAnsweredFilterPaths from "./mocks/flowWithAutoAnsweredFilterPaths.json";
import flowWithBranchingFilters from "./mocks/flowWithBranchingFilters.json";
import flowWithRootFilter from "./mocks/flowWithRootFilter.json";
-const { getState, setState } = vanillaStore;
-const { upcomingCardIds, resetPreview, record, currentCard, collectedFlags } =
- getState();
+const { getState, setState } = useStore;
+const {
+ upcomingCardIds,
+ resetPreview,
+ record,
+ getCurrentCard,
+ collectedFlags,
+} = getState();
// https://i.imgur.com/k0kkKox.png
describe("A filter on the root of the graph", () => {
@@ -74,9 +79,9 @@ describe("A filter on a branch", () => {
record("fork", { answers: ["filter2"] });
// XXX: Test fails here
- // The currentCard returns as "immunityFlag2" which we should not land on -
+ // getCurrentCard returns as "immunityFlag2" which we should not land on -
// the flags on the first filter are skipped, we go direct from "immunityPath1" to "fork"
- expect(currentCard()?.id).toBe("immunityPath2");
+ expect(getCurrentCard()?.id).toBe("immunityPath2");
});
});
@@ -97,7 +102,7 @@ describe("Nodes on a filter path should only be auto-answered when the path matc
record("TiIuAVIXsV", { answers: ["hdaeOVIXsV"], auto: false });
// land on the correct result component
- expect(currentCard()?.id).toBe("seN42VIXsV");
+ expect(getCurrentCard()?.id).toBe("seN42VIXsV");
expect(getState().resultData()["Planning permission"]).toHaveProperty(
"flag.value",
"PLANNING_PERMISSION_REQUIRED",
@@ -131,7 +136,7 @@ describe("Nodes on a filter path should only be auto-answered when the path matc
upcomingCardIds();
// land on the correct result component
- expect(currentCard()?.id).toBe("seN42VIXsV");
+ expect(getCurrentCard()?.id).toBe("seN42VIXsV");
expect(getState().resultData()["Planning permission"]).toHaveProperty(
"flag.value",
"PLANNING_PERMISSION_REQUIRED",
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/flags.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/flags.test.ts
index 857ba71305..1c6e8f4e83 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/flags.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/flags.test.ts
@@ -1,8 +1,8 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { vanillaStore } from "../store";
+import { useStore } from "../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
describe("in a flow with no collected flags, the user", () => {
beforeEach(() => {
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/granularity.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/granularity.test.ts
index aaf4e7201f..95aaa41af7 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/granularity.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/granularity.test.ts
@@ -1,8 +1,8 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { Store, vanillaStore } from "../store";
+import { Store, useStore } from "../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const flow: Store.flow = {
_root: {
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/navigation.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/navigation.test.ts
index 21a56af59f..0e92ae9bc6 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/navigation.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/navigation.test.ts
@@ -1,10 +1,10 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { FullStore, vanillaStore } from "../store";
+import { FullStore, useStore } from "../store";
import flowWithoutSections from "./mocks/flowWithClones.json";
import flowWithThreeSections from "./mocks/flowWithThreeSections.json";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const { filterFlowByType, initNavigationStore, record } = getState();
let initialState: FullStore;
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/ordering.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/ordering.test.ts
index 43f1fdb515..d27323334a 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/ordering.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/ordering.test.ts
@@ -1,8 +1,8 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { Store, vanillaStore } from "../store";
+import { Store, useStore } from "../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const flow: Store.flow = {
_root: {
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/canGoBack.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/canGoBack.test.ts
index be23cda4d3..22f0af6d53 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/canGoBack.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/canGoBack.test.ts
@@ -1,8 +1,10 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { Store, vanillaStore } from "../../store";
+import { Store, useStore } from "../../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
+const { canGoBack, getCurrentCard, resetPreview, record, changeAnswer } =
+ getState();
// https://imgur.com/VFV64ax
const flow: Store.flow = {
@@ -58,7 +60,7 @@ const flow: Store.flow = {
};
beforeEach(() => {
- getState().resetPreview();
+ resetPreview();
setState({
flow,
});
@@ -66,90 +68,69 @@ beforeEach(() => {
describe("can go back if", () => {
test("the previous component was manually answered", () => {
- setState({
- breadcrumbs: {
- Question: {
- auto: false,
- answers: ["NoFeeAnswerPath"],
- },
- },
+ record("Question", {
+ auto: false,
+ answers: ["NoFeeAnswerPath"],
});
- expect(getState().canGoBack(getState().currentCard())).toStrictEqual(true);
+
+ expect(canGoBack(getCurrentCard())).toStrictEqual(true);
});
test("the user skipped the payment component", () => {
- setState({
- breadcrumbs: {
- Question: {
- auto: false,
- answers: ["NoFeeAnswerPath"],
- },
- Pay: {
- auto: true,
- },
- },
+ record("Question", {
+ auto: false,
+ answers: ["NoFeeAnswerPath"],
});
- expect(getState().canGoBack(getState().currentCard())).toStrictEqual(true);
+ record("Pay", { auto: true });
+
+ expect(canGoBack(getCurrentCard())).toStrictEqual(true);
});
});
describe("cannot go back if", () => {
test("it's the very first component", () => {
- expect(getState().canGoBack(getState().currentCard())).toStrictEqual(false);
+ expect(canGoBack(getCurrentCard())).toStrictEqual(false);
});
test("the only previous component was auto-answered", () => {
- setState({
- breadcrumbs: {
- Question: {
- auto: true,
- answers: ["NoFeeAnswerPath"],
- },
- },
+ record("Question", {
+ auto: true,
+ answers: ["NoFeeAnswerPath"],
});
- expect(getState().canGoBack(getState().currentCard())).toStrictEqual(false);
+
+ expect(canGoBack(getCurrentCard())).toStrictEqual(false);
});
test("the applicant made a payment", () => {
- setState({
- breadcrumbs: {
- Question: {
- auto: false,
- answers: ["FeeAnswerPath"],
- },
- Calculate: {
- auto: true,
- data: {
- fee: 10,
- },
- },
- Pay: {
- auto: false,
- },
+ record("Question", {
+ auto: false,
+ answers: ["NoFeeAnswerPath"],
+ });
+ record("Calculate", {
+ auto: true,
+ data: {
+ fee: 10,
},
});
- expect(getState().canGoBack(getState().currentCard())).toStrictEqual(false);
+ record("Pay", { auto: false });
+
+ expect(canGoBack(getCurrentCard())).toStrictEqual(false);
});
test("changing a component's answer", () => {
- setState({
- breadcrumbs: {
- Question: {
- auto: false,
- answers: ["FeeAnswerPath"],
- },
- Calculate: {
- auto: true,
- data: {
- fee: 10,
- },
- },
- Pay: {
- auto: false,
- },
+ record("Question", {
+ auto: false,
+ answers: ["FeeAnswerPath"],
+ });
+ record("Calculate", {
+ auto: true,
+ data: {
+ fee: 10,
},
- changedNode: "Confirmation",
});
- expect(getState().canGoBack(getState().currentCard())).toStrictEqual(false);
+ record("Pay", { auto: false });
+ changeAnswer("Confirmation");
+
+ expect(canGoBack(getCurrentCard())).toStrictEqual(false);
});
});
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/changeAnswer.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/changeAnswer.ts
index 03cc472c81..fe9bf87b80 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/changeAnswer.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/changeAnswer.ts
@@ -1,9 +1,9 @@
import cloneDeep from "lodash/cloneDeep";
-import { Store, vanillaStore } from "../../store";
+import { Store, useStore } from "../../store";
import flowWithAutoAnswersMock from "../mocks/flowWithAutoAnswers.json";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const flowWithAutoAnswers = cloneDeep(flowWithAutoAnswersMock) as Store.flow;
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/hasPaid.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/hasPaid.test.ts
index a32b6cce32..b829da536a 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/hasPaid.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/hasPaid.test.ts
@@ -1,8 +1,8 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { vanillaStore } from "../../store";
+import { useStore } from "../../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const { record, hasPaid } = getState();
test("hasPaid is updated if a Pay component has been recorded", () => {
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/overrideAnswer.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/overrideAnswer.test.ts
index e0f53e3992..6aa0936cf4 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/overrideAnswer.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/overrideAnswer.test.ts
@@ -1,8 +1,8 @@
-import { vanillaStore } from "../../store";
+import { useStore } from "../../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
-const { overrideAnswer, currentCard, upcomingCardIds, record } = getState();
+const { overrideAnswer, getCurrentCard, upcomingCardIds, record } = getState();
test("it clears the correct breadcrumb and navigates back to the right node", async () => {
// set up initial state, confirm our passport computes as expected
@@ -38,7 +38,7 @@ test("it clears the correct breadcrumb and navigates back to the right node", as
});
// confirm we've navigated back to the right node, and that PropertyInformation is queued up again in upcoming cards
- expect(currentCard()?.id).toEqual("FirstPropertyTypeQuestionNodeId");
+ expect(getCurrentCard()?.id).toEqual("FirstPropertyTypeQuestionNodeId");
expect(upcomingCardIds()).toContain("PropertyInformationNodeId");
// select a new answer, confirm our passport has updated
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/previousCard.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/previousCard.test.ts
index 5ccedeeb2b..cdb1986792 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/previousCard.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/previousCard.test.ts
@@ -1,8 +1,8 @@
-import { vanillaStore } from "../../store";
+import { useStore } from "../../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
-const { resetPreview, previousCard, currentCard } = getState();
+const { resetPreview, previousCard, getCurrentCard } = getState();
beforeEach(() => {
resetPreview();
@@ -24,7 +24,7 @@ const setup = (args = {}) =>
describe("store.previousCard is", () => {
test("undefined when there are no breadcrumbs", () => {
setup();
- expect(previousCard(currentCard())).toBeUndefined();
+ expect(previousCard(getCurrentCard())).toBeUndefined();
});
test("undefined when cards were automatically answered", () => {
@@ -34,7 +34,7 @@ describe("store.previousCard is", () => {
b: { auto: true },
},
});
- expect(previousCard(currentCard())).toBeUndefined();
+ expect(previousCard(getCurrentCard())).toBeUndefined();
});
test("the most recent human-answered card id", () => {
@@ -45,6 +45,6 @@ describe("store.previousCard is", () => {
},
});
- expect(previousCard(currentCard())).toEqual("a");
+ expect(previousCard(getCurrentCard())).toEqual("a");
});
});
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/record.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/record.test.ts
index e8d825104f..5c39916a80 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/record.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/record.test.ts
@@ -1,8 +1,8 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { vanillaStore } from "../../store";
+import { useStore } from "../../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const { record } = getState();
describe("error handling", () => {
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/removeNodesDependentOnPassport.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/removeNodesDependentOnPassport.test.ts
index 092553572a..bcc4415941 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/removeNodesDependentOnPassport.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/removeNodesDependentOnPassport.test.ts
@@ -1,11 +1,11 @@
import cloneDeep from "lodash/cloneDeep";
-import { Store, vanillaStore } from "../../store";
+import { Store, useStore } from "../../store";
import { removeNodesDependentOnPassport } from "../../store/preview";
import breadcrumbsDependentOnPassportMock from "../mocks/breadcrumbsDependentOnPassport.json";
import flowWithPassportComponentsMock from "../mocks/flowWithPassportComponents.json";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
let breadcrumbsDependentOnPassport = cloneDeep(
breadcrumbsDependentOnPassportMock,
@@ -15,8 +15,14 @@ let flowWithPassportComponents = cloneDeep(
flowWithPassportComponentsMock,
) as Store.flow;
-const { record, resetPreview, previousCard, currentCard, changeAnswer } =
- getState();
+const {
+ record,
+ resetPreview,
+ previousCard,
+ getCurrentCard,
+ changeAnswer,
+ setCurrentCard,
+} = getState();
beforeEach(() => {
resetPreview();
@@ -61,7 +67,7 @@ describe("removeNodesDependentOnPassport", () => {
});
describe("nodesDependentOnPassport with record", () => {
- test("should remove Draw Boundary and Planning contraints from cachedBreadcrumbs", () => {
+ test("should remove Draw Boundary and Planning constraints from cachedBreadcrumbs", () => {
const cachedBreadcrumbs = {
...breadcrumbsDependentOnPassport,
} as Store.cachedBreadcrumbs;
@@ -182,7 +188,7 @@ describe("nodesDependentOnPassport with record", () => {
},
});
- expect(currentCard()?.id).toEqual("drawBoundary");
+ expect(getCurrentCard()?.id).toEqual("drawBoundary");
});
test("should clear _nodesPendingEdit after edition", () => {
@@ -229,8 +235,11 @@ describe("nodesDependentOnPassport with previousCard", () => {
_nodesPendingEdit: [],
});
- expect(currentCard()?.id).toEqual("drawBoundary");
- expect(previousCard(currentCard())).toEqual("text");
+ // Manually call setCurrentCard() as we're not using record() as part of our setup
+ setCurrentCard();
+
+ expect(getCurrentCard()?.id).toEqual("drawBoundary");
+ expect(previousCard(getCurrentCard())).toEqual("text");
});
test("To be last pushed to the breadcrumbs when changing answer", () => {
@@ -247,7 +256,7 @@ describe("nodesDependentOnPassport with previousCard", () => {
_nodesPendingEdit,
});
- expect(previousCard(currentCard())).toEqual("findProperty");
+ expect(previousCard(getCurrentCard())).toEqual("findProperty");
});
});
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/resetPreview.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/resetPreview.test.ts
index c212c43630..add46df266 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/resetPreview.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/resetPreview.test.ts
@@ -1,6 +1,6 @@
-import { vanillaStore } from "../../store";
+import { useStore } from "../../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const { resetPreview } = getState();
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/upcomingCardIds.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/upcomingCardIds.test.ts
index a72b347792..b166ce5463 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/upcomingCardIds.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/preview/upcomingCardIds.test.ts
@@ -1,9 +1,9 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
-import { Store, vanillaStore } from "../../store";
+import { Store, useStore } from "../../store";
-const { getState, setState } = vanillaStore;
-const { upcomingCardIds, resetPreview, record, currentCard } = getState();
+const { getState, setState } = useStore;
+const { upcomingCardIds, resetPreview, record, getCurrentCard } = getState();
const flow: Store.flow = {
_root: {
@@ -75,7 +75,7 @@ test.skip("A node is only auto-answered when it is the first upcomingCardId(), n
record("SetValue", { data: { fruit: ["apple"] }, auto: true });
clickContinue();
- expect(currentCard()?.id).toBe("Content");
+ expect(getCurrentCard()?.id).toBe("Content");
// "AutomatedQuestion" should still be queued up, not already answered based on SetValue
expect(visitedNodes()).not.toContain("AutomatedQuestion");
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/setValue.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/setValue.test.ts
index 09052ced51..7aae5da40a 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/setValue.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/setValue.test.ts
@@ -1,10 +1,10 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import { cloneDeep, merge } from "lodash";
-import { Store, vanillaStore } from "../store";
+import { Store, useStore } from "../store";
-const { getState, setState } = vanillaStore;
-const { resetPreview, record, computePassport, currentCard } = getState();
+const { getState, setState } = useStore;
+const { resetPreview, record, computePassport, getCurrentCard } = getState();
const baseFlow: Store.flow = {
_root: {
@@ -76,7 +76,7 @@ describe("SetValue component", () => {
expect(breadcrumbKeys).toContain("setValue1");
// Middle of flow reached
- expect(currentCard()?.id).toEqual("middleOfService");
+ expect(getCurrentCard()?.id).toEqual("middleOfService");
// Passport correctly populated
expect(computePassport()?.data?.myKey).toHaveLength(1);
@@ -94,7 +94,7 @@ describe("SetValue component", () => {
expect(breadcrumbKeys).toContain("setValue2");
// End of flow reached
- expect(currentCard()?.id).toEqual("endOfService");
+ expect(getCurrentCard()?.id).toEqual("endOfService");
// Passport correctly populated
expect(computePassport()?.data?.myKey).toHaveLength(1);
@@ -133,7 +133,7 @@ describe("SetValue component", () => {
expect(breadcrumbKeys).toContain("setValue1");
// Middle of flow reached
- expect(currentCard()?.id).toEqual("middleOfService");
+ expect(getCurrentCard()?.id).toEqual("middleOfService");
// Passport correctly populated
expect(computePassport()?.data?.myKey).toHaveLength(1);
@@ -155,7 +155,7 @@ describe("SetValue component", () => {
expect(breadcrumbKeys).toContain("setValue2");
// End of flow reached
- expect(currentCard()?.id).toEqual("endOfService");
+ expect(getCurrentCard()?.id).toEqual("endOfService");
// Passport correctly populated
expect(computePassport()?.data?.myKey).toHaveLength(2);
@@ -212,7 +212,7 @@ describe("SetValue component", () => {
expect(breadcrumbKeys).toContain("setValue1");
// Middle of flow reached
- expect(currentCard()?.id).toEqual("middleOfService");
+ expect(getCurrentCard()?.id).toEqual("middleOfService");
// Passport correctly populated - value not present
expect(computePassport()?.data?.myKey).toBeUndefined();
@@ -236,7 +236,7 @@ describe("SetValue component", () => {
record("setValue3", { data: { myKey: ["mySecondValue"] } });
// End of flow reached
- expect(currentCard()?.id).toEqual("endOfService");
+ expect(getCurrentCard()?.id).toEqual("endOfService");
// Passport correctly populated - value no longer set
expect(computePassport()?.data?.myKey).toBeUndefined();
@@ -265,7 +265,7 @@ describe("SetValue component", () => {
record("setValue3", { data: { myKey: ["myUnsetValue"] } });
// End of flow reached
- expect(currentCard()?.id).toEqual("endOfService");
+ expect(getCurrentCard()?.id).toEqual("endOfService");
// Passport correctly populated - passport variable not removed as values do not match
expect(computePassport()?.data?.myKey).toEqual("mySecondValue");
@@ -320,7 +320,7 @@ describe("SetValue component", () => {
expect(breadcrumbKeys).toContain("setValue1");
// Middle of flow reached
- expect(currentCard()?.id).toEqual("middleOfService");
+ expect(getCurrentCard()?.id).toEqual("middleOfService");
// Passport correctly populated - value not present
expect(computePassport()?.data?.myKey).toBeUndefined();
@@ -344,7 +344,7 @@ describe("SetValue component", () => {
record("setValue3", { data: { myKey: ["mySecondValue"] } });
// End of flow reached
- expect(currentCard()?.id).toEqual("endOfService");
+ expect(getCurrentCard()?.id).toEqual("endOfService");
// Passport correctly populated - key:value pair removed
expect(computePassport()?.data).not.toHaveProperty("myKey");
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/unseen.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/unseen.test.ts
index a4575e3558..4ea8774a75 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/unseen.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/unseen.test.ts
@@ -1,6 +1,6 @@
-import { Store, vanillaStore } from "../store";
+import { Store, useStore } from "../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
// https://github.com/theopensystemslab/planx-new/pull/430#issue-625111571
const flow: Store.flow = {
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/useNotValues.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/useNotValues.test.ts
index 54a789d760..cb74d0cebc 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/useNotValues.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/useNotValues.test.ts
@@ -1,4 +1,4 @@
-import { Store, vanillaStore } from "../store";
+import { Store, useStore } from "../store";
// flow preview: https://i.imgur.com/nCov5CE.png
@@ -106,7 +106,7 @@ const flow: Store.flow = {
},
};
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
describe("if I initially pick", () => {
beforeEach(() => {
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/user.test.ts b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/user.test.ts
index 5c0f9e24c7..2f14e589aa 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/user.test.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/__tests__/user.test.ts
@@ -1,8 +1,8 @@
import { User } from "@opensystemslab/planx-core/types";
-import { FullStore, vanillaStore } from "../store";
+import { FullStore, useStore } from "../store";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
const { canUserEditTeam } = getState();
const redUser: User = {
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/analytics/provider.tsx b/editor.planx.uk/src/pages/FlowEditor/lib/analytics/provider.tsx
index 5ba9bbf4ed..b4090bef66 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/analytics/provider.tsx
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/analytics/provider.tsx
@@ -51,7 +51,6 @@ let lastVisibleNodeAnalyticsLogId: number | undefined = undefined;
const analyticsContext = createContext<{
createAnalytics: (type: AnalyticsType) => Promise;
trackEvent: (eventData: EventData) => Promise;
- node: Store.node | null;
track: (
nodeId: string,
direction?: AnalyticsLogDirection,
@@ -60,7 +59,6 @@ const analyticsContext = createContext<{
}>({
createAnalytics: () => Promise.resolve(),
trackEvent: () => Promise.resolve(),
- node: null,
track: () => Promise.resolve(),
});
const { Provider } = analyticsContext;
@@ -90,7 +88,6 @@ export const AnalyticsProvider: React.FC<{ children: React.ReactNode }> = ({
state.id,
state.flow,
]);
- const node = currentCard();
const isAnalyticsEnabled =
new URL(window.location.href).searchParams.get("analytics") !== "false";
const shouldTrackAnalytics =
@@ -138,7 +135,6 @@ export const AnalyticsProvider: React.FC<{ children: React.ReactNode }> = ({
= ({
});
const id = response.data.insert_analytics_one.id;
setAnalyticsId(id);
- const currentNodeId = currentCard()?.id;
+ const currentNodeId = currentCard?.id;
if (currentNodeId) track(currentNodeId, type, id);
}
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/store/editor.ts b/editor.planx.uk/src/pages/FlowEditor/lib/store/editor.ts
index e24638d7b8..16a452b78a 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/store/editor.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/store/editor.ts
@@ -73,7 +73,7 @@ export interface EditorStore extends Store.Store {
connectTo: (id: Store.nodeId) => void;
copyFlow: (flowId: string) => Promise;
copyNode: (id: Store.nodeId) => void;
- createFlow: (teamId: any, newSlug: any) => Promise;
+ createFlow: (teamId: any, newSlug: any, newName: string) => Promise;
deleteFlow: (teamId: number, flowSlug: string) => Promise;
validateAndDiffFlow: (flowId: string) => Promise;
getFlows: (teamId: number) => Promise;
@@ -139,7 +139,12 @@ export const editorStore: StateCreator<
const cloneStateFromShareDb = () => {
const flow = JSON.parse(JSON.stringify(doc.data));
- get().setFlow({ id, flow, flowSlug: get().flowSlug });
+ get().setFlow({
+ id,
+ flow,
+ flowSlug: get().flowSlug,
+ flowName: get().flowName,
+ });
};
// set state from initial load
@@ -186,12 +191,17 @@ export const editorStore: StateCreator<
localStorage.setItem("clipboard", id);
},
- createFlow: async (teamId, newSlug) => {
+ createFlow: async (teamId, newSlug, newName) => {
let response = (await client.mutate({
mutation: gql`
- mutation CreateFlow($data: jsonb, $slug: String, $teamId: Int) {
+ mutation CreateFlow(
+ $data: jsonb
+ $slug: String
+ $teamId: Int
+ $name: String
+ ) {
insert_flows_one(
- object: { slug: $slug, team_id: $teamId, version: 1 }
+ object: { slug: $slug, team_id: $teamId, version: 1, name: $name }
) {
id
data
@@ -199,6 +209,7 @@ export const editorStore: StateCreator<
}
`,
variables: {
+ name: newName,
slug: newSlug,
teamId,
},
@@ -271,18 +282,17 @@ export const editorStore: StateCreator<
client.cache.reset();
const { data } = await client.query({
query: gql`
- query GetFlow($teamId: Int!) {
- flows(
- order_by: { updated_at: desc }
- where: { team: { id: { _eq: $teamId } } }
- ) {
+ query GetFlows($teamId: Int!) {
+ flows(where: { team: { id: { _eq: $teamId } } }) {
id
+ name
slug
- updated_at
- operations(limit: 1, order_by: { id: desc }) {
+ updatedAt: updated_at
+ operations(limit: 1, order_by: { created_at: desc }) {
+ createdAt: created_at
actor {
- first_name
- last_name
+ firstName: first_name
+ lastName: last_name
}
}
}
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/store/index.ts b/editor.planx.uk/src/pages/FlowEditor/lib/store/index.ts
index bc3b32961c..5e90c35e50 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/store/index.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/store/index.ts
@@ -1,7 +1,6 @@
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import { isPreviewOnlyDomain } from "routes/utils";
-import { create, UseBoundStore } from "zustand";
-import { createStore, StoreApi } from "zustand/vanilla";
+import { create, StoreApi, UseBoundStore } from "zustand";
import type { EditorStore, EditorUIStore } from "./editor";
import type { NavigationStore } from "./navigation";
@@ -54,32 +53,25 @@ export type PublicStore = SharedStore &
export type FullStore = PublicStore & EditorStore & EditorUIStore & UserStore;
-interface PlanXStores {
- // Non-React implementation (e.g. for use in tests)
- vanillaStore: StoreApi;
- // React hook
- useStore: UseBoundStore>;
-}
-
/**
* If accessing the public preview, don't load editor store files
* Cast to FullStore for autocomplete and linting
*/
-const createPublicStore = (): StoreApi =>
- createStore((...args) => ({
+const createPublicStore = () =>
+ create()((...args) => ({
...sharedStore(...args),
...previewStore(...args),
...navigationStore(...args),
...settingsStore(...args),
...teamStore(...args),
- })) as StoreApi;
+ })) as UseBoundStore>;
/**
* If accessing the editor then load ALL store files
*/
-const createFullStore = (): StoreApi => {
+const createFullStore = () => {
const { editorStore, editorUIStore } = require("./editor");
- return createStore((...args) => ({
+ return create()((...args) => ({
...sharedStore(...args),
...previewStore(...args),
...navigationStore(...args),
@@ -94,12 +86,7 @@ const createFullStore = (): StoreApi => {
const isPublic =
isPreviewOnlyDomain || window?.location?.href?.includes("/published");
-export const { vanillaStore, useStore }: PlanXStores = (() => {
- const vanillaStore: StoreApi = (() =>
- isPublic ? createPublicStore() : createFullStore())();
-
- return { vanillaStore, useStore: create(vanillaStore) };
-})();
+export const useStore = isPublic ? createPublicStore() : createFullStore();
// having window.api in console is useful for debugging
(window as any)["api"] = useStore;
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/store/preview.ts b/editor.planx.uk/src/pages/FlowEditor/lib/store/preview.ts
index 97f437e533..f17ba45b38 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/store/preview.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/store/preview.ts
@@ -11,6 +11,7 @@ import {
import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
import { FileList } from "@planx/components/FileUploadAndLabel/model";
import { SetValue } from "@planx/components/SetValue/model";
+import { handleSetValue } from "@planx/components/SetValue/utils";
import { sortIdsDepthFirst } from "@planx/graph";
import { logger } from "airbrake";
import { objectWithoutNullishValues } from "lib/objectHelpers";
@@ -29,7 +30,6 @@ import { ApplicationPath } from "./../../../../types";
import type { Store } from ".";
import { NavigationStore } from "./navigation";
import type { SharedStore } from "./shared";
-import { handleSetValue } from "@planx/components/SetValue/utils";
const SUPPORTED_DECISION_TYPES = [TYPES.Checklist, TYPES.Question];
let memoizedPreviousCardId: string | undefined = undefined;
@@ -39,7 +39,9 @@ export interface PreviewStore extends Store.Store {
upToNodeId: Store.nodeId,
visited?: Array,
) => Array;
- currentCard: () => Store.node | null;
+ currentCard: ({ id: Store.nodeId } & Store.node) | null;
+ setCurrentCard: () => void;
+ getCurrentCard: () => ({ id: Store.nodeId } & Store.node) | null;
hasPaid: () => boolean;
previousCard: (
node: Store.node | null,
@@ -136,18 +138,15 @@ export const previewStore: StateCreator<
return res;
},
- currentCard() {
+ setCurrentCard() {
const { upcomingCardIds, flow } = get();
const upcoming = upcomingCardIds();
if (upcoming.length > 0) {
const id = upcoming[0];
- return {
- id,
- ...flow[id],
- };
+ set({ currentCard: { id, ...flow[id] } });
} else {
- return null;
+ set({ currentCard: null });
}
},
@@ -287,6 +286,7 @@ export const previewStore: StateCreator<
_nodesPendingEdit,
changedNode,
updateSectionData,
+ setCurrentCard,
} = get();
if (!flow[id]) throw new Error(`id "${id}" not found`);
@@ -369,6 +369,7 @@ export const previewStore: StateCreator<
});
}
}
+ setCurrentCard();
updateSectionData();
},
@@ -379,6 +380,7 @@ export const previewStore: StateCreator<
resumeSession(session: Session) {
set({ ...session });
+ get().setCurrentCard();
get().updateSectionData();
},
@@ -652,6 +654,10 @@ export const previewStore: StateCreator<
return currentRequestedFiles || emptyFileList;
},
+
+ currentCard: null,
+
+ getCurrentCard: () => get().currentCard,
});
const knownNots = (
@@ -902,4 +908,4 @@ export const removeNodesDependentOnPassport = (
return acc;
}, [] as string[]);
return { removedNodeIds, breadcrumbsWithoutPassportData: newBreadcrumbs };
-};
\ No newline at end of file
+};
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/store/shared.ts b/editor.planx.uk/src/pages/FlowEditor/lib/store/shared.ts
index 3b4381a463..80ea07475e 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/store/shared.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/store/shared.ts
@@ -2,7 +2,6 @@ import { CoreDomainClient } from "@opensystemslab/planx-core";
import { Auth } from "@opensystemslab/planx-core/dist/requests/graphql";
import { FlowStatus } from "@opensystemslab/planx-core/types";
import { ROOT_NODE_KEY } from "@planx/graph";
-import { capitalize } from "lodash";
import { removeSessionIdSearchParam } from "utils";
import type { StateCreator } from "zustand";
@@ -24,18 +23,20 @@ export interface SharedStore extends Store.Store {
id,
flow,
flowSlug,
+ flowName,
flowStatus,
}: {
- id: string;
- flow: Store.flow;
- flowSlug: string;
+ id?: string;
+ flow?: Store.flow;
+ flowSlug?: string;
+ flowName?: string;
flowStatus?: FlowStatus;
}) => void;
wasVisited: (id: Store.nodeId) => boolean;
previewEnvironment: PreviewEnvironment;
setPreviewEnvironment: (previewEnvironment: PreviewEnvironment) => void;
setFlowSlug: (flowSlug: string) => void;
- setFlowNameFromSlug: (flowSlug: string) => void;
+ setFlowName: (flowName: string) => void;
$public: (auth?: Auth) => CoreDomainClient;
$client: CoreDomainClient;
}
@@ -91,9 +92,8 @@ export const sharedStore: StateCreator<
removeSessionIdSearchParam();
},
- setFlow({ id, flow, flowSlug, flowStatus }) {
- this.setFlowNameFromSlug(flowSlug);
- set({ id, flow, flowSlug, flowStatus });
+ setFlow({ id, flow, flowSlug, flowName, flowStatus }) {
+ set({ id, flow, flowSlug, flowName, flowStatus });
get().initNavigationStore();
},
@@ -110,8 +110,7 @@ export const sharedStore: StateCreator<
set({ flowSlug });
},
- setFlowNameFromSlug(flowSlug) {
- const flowName = capitalize(flowSlug.replaceAll?.("-", " "));
+ setFlowName(flowName) {
set({ flowName });
},
diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/store/team.ts b/editor.planx.uk/src/pages/FlowEditor/lib/store/team.ts
index 113069d56c..00a334b171 100644
--- a/editor.planx.uk/src/pages/FlowEditor/lib/store/team.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/lib/store/team.ts
@@ -1,5 +1,4 @@
import {
- NotifyPersonalisation,
Team,
TeamIntegrations,
TeamSettings,
@@ -12,12 +11,10 @@ import type { StateCreator } from "zustand";
import { SharedStore } from "./shared";
export interface TeamStore {
- boundaryBBox?: Team["boundaryBBox"];
- notifyPersonalisation?: NotifyPersonalisation;
teamId: number;
teamIntegrations: TeamIntegrations;
teamName: string;
- teamSettings?: TeamSettings;
+ teamSettings: TeamSettings;
teamSlug: string;
teamTheme: TeamTheme;
@@ -27,6 +24,7 @@ export interface TeamStore {
clearTeamStore: () => void;
fetchCurrentTeam: () => Promise;
updateTeamTheme: (theme: Partial) => Promise;
+ updateTeamSettings: (teamSettings: Partial) => Promise;
}
export const teamStore: StateCreator<
@@ -35,19 +33,15 @@ export const teamStore: StateCreator<
[],
TeamStore
> = (set, get) => ({
- boundaryBBox: undefined,
- notifyPersonalisation: undefined,
teamId: 0,
teamIntegrations: {} as TeamIntegrations,
teamName: "",
- teamSettings: undefined,
+ teamSettings: {} as TeamSettings,
teamSlug: "",
teamTheme: {} as TeamTheme,
setTeam: (team) => {
set({
- boundaryBBox: team.boundaryBBox,
- notifyPersonalisation: team.notifyPersonalisation,
teamId: team.id,
teamIntegrations: team.integrations,
teamName: team.name,
@@ -63,11 +57,9 @@ export const teamStore: StateCreator<
},
getTeam: () => ({
- boundaryBBox: get().boundaryBBox,
id: get().teamId,
integrations: get().teamIntegrations,
name: get().teamName,
- notifyPersonalisation: get().notifyPersonalisation,
settings: get().teamSettings,
slug: get().teamSlug,
theme: get().teamTheme,
@@ -109,8 +101,6 @@ export const teamStore: StateCreator<
clearTeamStore: () =>
set({
- boundaryBBox: undefined,
- notifyPersonalisation: undefined,
teamId: 0,
teamIntegrations: undefined,
teamName: "",
@@ -134,4 +124,13 @@ export const teamStore: StateCreator<
const isSuccess = await $client.team.updateTheme(teamId, theme);
return isSuccess;
},
+
+ updateTeamSettings: async (teamSettings: Partial) => {
+ const { teamId, $client } = get();
+ const isSuccess = await $client.team.updateTeamSettings(
+ teamId,
+ teamSettings,
+ );
+ return isSuccess;
+ },
});
diff --git a/editor.planx.uk/src/pages/FlowEditor/utils.ts b/editor.planx.uk/src/pages/FlowEditor/utils.ts
index b79faf3be0..a9f28b54ee 100644
--- a/editor.planx.uk/src/pages/FlowEditor/utils.ts
+++ b/editor.planx.uk/src/pages/FlowEditor/utils.ts
@@ -9,7 +9,7 @@ export const formatLastEditDate = (date: string): string => {
export const formatLastEditMessage = (
date: string,
- actor?: { firstName: string; lastName: string }
+ actor?: { firstName: string; lastName: string },
): string => {
if (!actor) {
return `Last edited ${formatLastEditDate(date)}`;
@@ -17,4 +17,7 @@ export const formatLastEditMessage = (
const name = `${actor.firstName} ${actor.lastName}`;
return `Last edited ${formatLastEditDate(date)} by ${name}`;
-};
\ No newline at end of file
+};
+
+export const formatLastPublishMessage = (date: string, user: string): string =>
+ `Last published ${formatLastEditDate(date)} by ${user}`;
diff --git a/editor.planx.uk/src/pages/GlobalSettings.tsx b/editor.planx.uk/src/pages/GlobalSettings.tsx
index 2e81623fe3..13c1f60211 100644
--- a/editor.planx.uk/src/pages/GlobalSettings.tsx
+++ b/editor.planx.uk/src/pages/GlobalSettings.tsx
@@ -1,12 +1,19 @@
+import Alert from "@mui/material/Alert";
import Box from "@mui/material/Box";
import Button from "@mui/material/Button";
+import Container from "@mui/material/Container";
+import Snackbar from "@mui/material/Snackbar";
import Typography from "@mui/material/Typography";
import { useFormik } from "formik";
import { useStore } from "pages/FlowEditor/lib/store";
-import React from "react";
+import React, { useState } from "react";
import type { TextContent } from "types";
+import InputGroup from "ui/editor/InputGroup";
+import InputLegend from "ui/editor/InputLegend";
import ListManager from "ui/editor/ListManager";
import RichTextInput from "ui/editor/RichTextInput";
+import SettingsDescription from "ui/editor/SettingsDescription";
+import SettingsSection from "ui/editor/SettingsSection";
import Input from "ui/shared/Input";
import InputRow from "ui/shared/InputRow";
import InputRowItem from "ui/shared/InputRowItem";
@@ -18,6 +25,8 @@ function Component() {
state.updateGlobalSettings,
]);
+ const [isAlertOpen, setIsAlertOpen] = useState(false);
+
const formik = useFormik({
initialValues: {
footerContent:
@@ -40,43 +49,73 @@ function Component() {
);
updateGlobalSettings(formatted);
+ setIsAlertOpen(true);
},
});
+ const handleClose = (
+ _event?: React.SyntheticEvent | Event,
+ reason?: string,
+ ) => {
+ if (reason === "clickaway") {
+ return;
+ }
+
+ setIsAlertOpen(false);
+ };
+
return (
-
-
- Global Settings
-
-
+ <>
+
+
+
- Footer Elements
+ Global Settings
-
- Manage the content that will appear in the footer
-
-
- {
- formik.setFieldValue("footerContent", newOptions);
- }}
- newValue={() =>
- ({
- heading: "",
- content: "",
- show: true,
- }) as TextContent
- }
- Editor={ContentEditor}
- />
-
-
-
- Save
-
-
-
+
+
+
+ Footer Elements
+
+ Manage the content that will appear in the footer.
+
+ The heading will appear as a footer link which will open a
+ content page.
+
+
+
+ {
+ formik.setFieldValue("footerContent", newOptions);
+ }}
+ newValue={() =>
+ ({
+ heading: "",
+ content: "",
+ show: true,
+ }) as TextContent
+ }
+ Editor={ContentEditor}
+ />
+
+
+
+ Save
+
+
+
+
+
+
+ Footer settings updated successfully
+
+
+ >
);
}
@@ -86,39 +125,37 @@ function ContentEditor(props: {
}) {
return (
-
-
-
- {
- props.onChange({
- ...props.value,
- heading: ev.target.value,
- });
- }}
- />
-
-
-
-
- {
- props.onChange({
- ...props.value,
- content: ev.target.value,
- });
- }}
- />
-
-
-
+
+
+ {
+ props.onChange({
+ ...props.value,
+ heading: ev.target.value,
+ });
+ }}
+ />
+
+
+
+
+ {
+ props.onChange({
+ ...props.value,
+ content: ev.target.value,
+ });
+ }}
+ />
+
+
);
}
diff --git a/editor.planx.uk/src/pages/Pay/InviteToPay.tsx b/editor.planx.uk/src/pages/Pay/InviteToPay.tsx
index 9b5ad7973c..ec9d1a52c5 100644
--- a/editor.planx.uk/src/pages/Pay/InviteToPay.tsx
+++ b/editor.planx.uk/src/pages/Pay/InviteToPay.tsx
@@ -26,7 +26,9 @@ const FormInner = styled(Box)(({ theme }) => ({
const InviteToPay: React.FC = ({ createdAt }) => {
const theme = useTheme();
const expiryDate = getExpiryDateForPaymentRequest(createdAt);
- const team = useStore((state) => state.getTeam());
+ const { helpEmail, helpOpeningHours, helpPhone } = useStore(
+ (state) => state.teamSettings,
+ );
return (
<>
@@ -70,18 +72,14 @@ const InviteToPay: React.FC = ({ createdAt }) => {
- Telephone {team.notifyPersonalisation?.helpPhone}
-
-
- {team.notifyPersonalisation?.helpOpeningHours}
+ Telephone {helpPhone}
+ {helpOpeningHours}
Email {" "}
-
- {team.notifyPersonalisation?.helpEmail}
-
+ {helpEmail}
We aim to respond within 2 working days.
diff --git a/editor.planx.uk/src/pages/Pay/MakePayment.tsx b/editor.planx.uk/src/pages/Pay/MakePayment.tsx
index 39afbf201f..da6d7c4d96 100644
--- a/editor.planx.uk/src/pages/Pay/MakePayment.tsx
+++ b/editor.planx.uk/src/pages/Pay/MakePayment.tsx
@@ -2,6 +2,7 @@ import Check from "@mui/icons-material/Check";
import Container from "@mui/material/Container";
import { lighten, useTheme } from "@mui/material/styles";
import Typography from "@mui/material/Typography";
+import { formatRawProjectTypes } from "@opensystemslab/planx-core";
import {
GovUKPayment,
type PaymentRequest,
@@ -170,19 +171,7 @@ export default function MakePayment({
);
const PaymentDetails = () => {
- const $public = useStore((state) => state.$public);
- const [projectType, setProjectType] = useState();
-
- useEffect(() => {
- const fetchProjectType = async () => {
- const projectType = await $public().formatRawProjectTypes(
- rawProjectTypes,
- );
- setProjectType(projectType);
- };
- fetchProjectType();
- }, []);
-
+ const projectType = formatRawProjectTypes(rawProjectTypes);
const data = [
{ term: "Application type", details: flowName },
{
diff --git a/editor.planx.uk/src/pages/PlatformAdminPanel.tsx b/editor.planx.uk/src/pages/PlatformAdminPanel.tsx
index 30fcd5456b..9f925f3ab6 100644
--- a/editor.planx.uk/src/pages/PlatformAdminPanel.tsx
+++ b/editor.planx.uk/src/pages/PlatformAdminPanel.tsx
@@ -4,6 +4,7 @@ import Accordion from "@mui/material/Accordion";
import AccordionDetails from "@mui/material/AccordionDetails";
import AccordionSummary from "@mui/material/AccordionSummary";
import Box from "@mui/material/Box";
+import Container from "@mui/material/Container";
import Grid from "@mui/material/Grid";
import { styled } from "@mui/material/styles";
import Typography from "@mui/material/Typography";
@@ -12,21 +13,27 @@ import { useStore } from "pages/FlowEditor/lib/store";
import React from "react";
import useSWR from "swr";
import { AdminPanelData } from "types";
+import SettingsSection from "ui/editor/SettingsSection";
import Caret from "ui/icons/Caret";
const StyledTeamAccordion = styled(Accordion, {
shouldForwardProp: (prop) => prop !== "primaryColour",
})<{ primaryColour?: string }>(({ theme, primaryColour }) => ({
- borderTop: "none", // TODO figure out how to remove top border (box shadow?) when collapsed
- borderLeft: `10px solid ${primaryColour}`,
backgroundColor: theme.palette.background.paper,
+ outline: `1px solid ${theme.palette.border.light}`,
width: "100%",
position: "relative",
- marginBottom: theme.spacing(2),
- padding: theme.spacing(1),
+ "&::before": {
+ display: "none",
+ },
"&::after": {
+ content: "''",
position: "absolute",
- width: "100%",
+ left: 0,
+ top: 0,
+ width: theme.spacing(1.5),
+ height: "100%",
+ backgroundColor: primaryColour,
},
}));
@@ -34,15 +41,21 @@ function Component() {
const adminPanelData = useStore((state) => state.adminPanelData);
return (
-
- Platform Admin Panel
-
- {`This is an overview of each team's integrations and settings for the `}
- {process.env.REACT_APP_ENV}
- {` environment`}
-
- {adminPanelData?.map((team) => )}
-
+
+
+
+ Platform Admin Panel
+
+
+ {`This is an overview of each team's integrations and settings for the `}
+ {process.env.REACT_APP_ENV}
+ {` environment.`}
+
+
+
+ {adminPanelData?.map((team) => )}
+
+
);
}
@@ -58,7 +71,7 @@ const TeamData: React.FC = ({ data }) => {
const a4Endpoint = `${process.env.REACT_APP_API_URL}/gis/${data.slug}/article4-schema`;
const fetcher = (url: string) => fetch(url).then((r) => r.json());
const { data: a4Check, isValidating } = useSWR(
- () => data.slug ? a4Endpoint : null,
+ () => (data.slug ? a4Endpoint : null),
fetcher,
);
@@ -68,19 +81,22 @@ const TeamData: React.FC = ({ data }) => {
id={`${data.name}-header`}
aria-controls={`${data.name}-panel`}
expandIcon={ }
- sx={{ pr: 1.5 }}
+ sx={{ p: 1.5, pl: 3 }}
>
- {data.name}
+
+ {data.name}
+
-
+
<>
{"Slug"}
@@ -109,7 +125,7 @@ const TeamData: React.FC = ({ data }) => {
>
-
+
<>
{"Planning constraints"}
@@ -123,7 +139,13 @@ const TeamData: React.FC = ({ data }) => {
>
<>
{"Article 4s (API)"}
- {!isValidating && a4Check?.status ? : }
+
+ {!isValidating && a4Check?.status ? (
+
+ ) : (
+
+ )}
+
>
<>
{"Reference code"}
@@ -137,7 +159,7 @@ const TeamData: React.FC = ({ data }) => {
>
-
+
<>
{"GOV.UK Notify"}
diff --git a/editor.planx.uk/src/pages/Preview/Node.tsx b/editor.planx.uk/src/pages/Preview/Node.tsx
index eb6ace5e29..827b2633b5 100644
--- a/editor.planx.uk/src/pages/Preview/Node.tsx
+++ b/editor.planx.uk/src/pages/Preview/Node.tsx
@@ -170,7 +170,7 @@ const Node: React.FC = (props: Props) => {
return ;
case TYPES.List:
- return hasFeatureFlag("LIST_COMPONENT") ?
: null;
+ return
;
case TYPES.NextSteps:
return ;
diff --git a/editor.planx.uk/src/pages/Preview/Questions.tsx b/editor.planx.uk/src/pages/Preview/Questions.tsx
index 194a5f7edf..ac1f400730 100644
--- a/editor.planx.uk/src/pages/Preview/Questions.tsx
+++ b/editor.planx.uk/src/pages/Preview/Questions.tsx
@@ -63,6 +63,8 @@ const Questions = ({ previewEnvironment }: QuestionsProps) => {
canGoBack,
setPreviewEnvironment,
getType,
+ node,
+ setCurrentCard,
] = useStore((state) => [
state.previousCard,
state.record,
@@ -75,9 +77,11 @@ const Questions = ({ previewEnvironment }: QuestionsProps) => {
state.canGoBack,
state.setPreviewEnvironment,
state.getType,
+ state.currentCard,
+ state.setCurrentCard,
]);
const isStandalone = previewEnvironment === "standalone";
- const { createAnalytics, node, trackEvent } = useAnalyticsTracking();
+ const { createAnalytics, trackEvent } = useAnalyticsTracking();
const [gotFlow, setGotFlow] = useState(false);
const isUsingLocalStorage =
useStore((state) => state.path) === ApplicationPath.SingleSession;
@@ -89,6 +93,8 @@ const Questions = ({ previewEnvironment }: QuestionsProps) => {
// Initial setup
useEffect(() => {
+ setCurrentCard();
+
if (!isStandalone) return;
if (isUsingLocalStorage) {
diff --git a/editor.planx.uk/src/pages/Preview/ReconciliationPage.tsx b/editor.planx.uk/src/pages/Preview/ReconciliationPage.tsx
index 75d13added..2e52f43042 100644
--- a/editor.planx.uk/src/pages/Preview/ReconciliationPage.tsx
+++ b/editor.planx.uk/src/pages/Preview/ReconciliationPage.tsx
@@ -38,7 +38,7 @@ const ReconciliationPage: React.FC = ({
state.flow,
state.hasSections,
state.sectionNodes,
- state.currentCard(),
+ state.currentCard,
state.changeAnswer,
state.record,
state.computePassport(),
diff --git a/editor.planx.uk/src/pages/Preview/SaveAndReturn.test.tsx b/editor.planx.uk/src/pages/Preview/SaveAndReturn.test.tsx
index 87a154a4c6..d69ea4433e 100644
--- a/editor.planx.uk/src/pages/Preview/SaveAndReturn.test.tsx
+++ b/editor.planx.uk/src/pages/Preview/SaveAndReturn.test.tsx
@@ -1,12 +1,12 @@
import Button from "@mui/material/Button";
import { act, screen, waitFor } from "@testing-library/react";
-import { FullStore, vanillaStore } from "pages/FlowEditor/lib/store";
+import { FullStore, useStore } from "pages/FlowEditor/lib/store";
import React from "react";
import { axe, setup } from "testUtils";
import SaveAndReturn, { ConfirmEmail } from "./SaveAndReturn";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
let initialState: FullStore;
diff --git a/editor.planx.uk/src/pages/Team.tsx b/editor.planx.uk/src/pages/Team.tsx
index 7bd90a1776..d3851ed023 100644
--- a/editor.planx.uk/src/pages/Team.tsx
+++ b/editor.planx.uk/src/pages/Team.tsx
@@ -1,10 +1,11 @@
import { gql } from "@apollo/client";
-import Add from "@mui/icons-material/Add";
+import AddCircleOutlineIcon from "@mui/icons-material/AddCircleOutline";
import Edit from "@mui/icons-material/Edit";
import Visibility from "@mui/icons-material/Visibility";
import Box from "@mui/material/Box";
import Button from "@mui/material/Button";
import ButtonBase from "@mui/material/ButtonBase";
+import Container from "@mui/material/Container";
import Dialog from "@mui/material/Dialog";
import DialogActions from "@mui/material/DialogActions";
import DialogContent from "@mui/material/DialogContent";
@@ -12,33 +13,16 @@ import DialogContentText from "@mui/material/DialogContentText";
import DialogTitle from "@mui/material/DialogTitle";
import { styled } from "@mui/material/styles";
import Typography from "@mui/material/Typography";
-import formatDistanceToNow from "date-fns/formatDistanceToNow";
import React, { useCallback, useEffect, useState } from "react";
import { Link, useNavigation } from "react-navi";
import { FONT_WEIGHT_SEMI_BOLD } from "theme";
+import { borderedFocusStyle } from "theme";
import { slugify } from "utils";
import { client } from "../lib/graphql";
import SimpleMenu from "../ui/editor/SimpleMenu";
import { useStore } from "./FlowEditor/lib/store";
-
-const Root = styled(Box)(({ theme }) => ({
- backgroundColor: theme.palette.background.dark,
- color: "#fff",
- width: "100%",
- flex: 1,
- justifyContent: "flex-start",
- alignItems: "center",
-}));
-
-const Dashboard = styled(Box)(({ theme }) => ({
- backgroundColor: theme.palette.background.dark,
- color: "#fff",
- width: "100%",
- maxWidth: 600,
- margin: "auto",
- padding: theme.spacing(8, 0, 4, 0),
-}));
+import { formatLastEditMessage } from "./FlowEditor/utils";
const DashboardList = styled("ul")(({ theme }) => ({
padding: theme.spacing(0, 0, 3),
@@ -49,7 +33,13 @@ const DashboardList = styled("ul")(({ theme }) => ({
const DashboardListItem = styled("li")(({ theme }) => ({
listStyle: "none",
position: "relative",
- padding: theme.spacing(2.5, 2),
+ color: theme.palette.common.white,
+ margin: theme.spacing(1, 0),
+ background: theme.palette.text.primary,
+ display: "flex",
+ justifyContent: "space-between",
+ alignItems: "stretch",
+ borderRadius: "2px",
}));
const DashboardLink = styled(Link)(({ theme }) => ({
@@ -58,34 +48,25 @@ const DashboardLink = styled(Link)(({ theme }) => ({
textDecoration: "none",
color: "currentColor",
fontWeight: FONT_WEIGHT_SEMI_BOLD,
- marginBottom: theme.spacing(1.5),
- marginTop: 0,
+ padding: theme.spacing(2),
+ margin: 0,
+ width: "100%",
+ "&:focus-within": {
+ ...borderedFocusStyle,
+ },
}));
const StyledSimpleMenu = styled(SimpleMenu)(({ theme }) => ({
- position: "absolute",
- top: theme.spacing(2),
- right: theme.spacing(1),
+ display: "flex",
+ borderLeft: `1px solid ${theme.palette.border.main}`,
}));
-const LinkSubText = styled(Box)(() => ({
- color: "#aaa",
- "& a": {
- color: "#fff",
- },
+const LinkSubText = styled(Box)(({ theme }) => ({
+ color: theme.palette.grey[400],
+ fontWeight: "normal",
+ paddingTop: "0.5em",
}));
-const flowInfoHelper = (time: any, operations: any[] = []) => {
- let str = `Edited ${formatDistanceToNow(new Date(time))} ago`;
- // there will always be an user attached to every sharedb
- // operation soon, so the if statement won't be necessary
- if (operations[0]?.actor) {
- const { first_name, last_name } = operations[0].actor;
- str += ` by ${first_name} ${last_name}`;
- }
- return str;
-};
-
const Confirm = ({
title,
content,
@@ -123,13 +104,12 @@ const Confirm = ({
);
const AddButtonRoot = styled(ButtonBase)(({ theme }) => ({
- width: "100%",
- padding: theme.spacing(4),
fontSize: 20,
- backgroundColor: "rgba(255,255,255,0.25)",
- display: "block",
+ display: "flex",
+ alignItems: "center",
textAlign: "left",
- marginTop: theme.spacing(2),
+ color: theme.palette.primary.main,
+ fontWeight: FONT_WEIGHT_SEMI_BOLD,
}));
function AddButton({
@@ -141,7 +121,7 @@ function AddButton({
}): FCReturn {
return (
- {children}
+ {children}
);
}
@@ -201,34 +181,39 @@ const FlowItem: React.FC = ({
/>
)}
-
-
- {flow.slug}
-
+
+
+ {flow.name}
+
- {flowInfoHelper(flow.updated_at, flow.operations)}
+ {formatLastEditMessage(
+ flow.operations[0].createdAt,
+ flow.operations[0]?.actor,
+ )}
-
+
{useStore.getState().canUserEditTeam(teamSlug) && (
{
- const newSlug = prompt("New name", flow.slug);
- if (newSlug && slugify(newSlug) !== flow.slug) {
+ const newName = prompt("New name", flow.name);
+ if (newName && newName !== flow.name) {
+ const newSlug = slugify(newName);
await client.mutate({
mutation: gql`
mutation UpdateFlowSlug(
$teamId: Int
$slug: String
$newSlug: String
+ $newName: String
) {
update_flows(
where: {
team: { id: { _eq: $teamId } }
slug: { _eq: $slug }
}
- _set: { slug: $newSlug }
+ _set: { slug: $newSlug, name: $newName }
) {
affected_rows
}
@@ -237,7 +222,8 @@ const FlowItem: React.FC = ({
variables: {
teamId: teamId,
slug: flow.slug,
- newSlug: slugify(newSlug),
+ newSlug: newSlug,
+ newName: newName,
},
});
@@ -286,31 +272,46 @@ const Team: React.FC = () => {
const { id: teamId, slug } = useStore((state) => state.getTeam());
const [flows, setFlows] = useState(null);
const navigation = useNavigation();
+
const fetchFlows = useCallback(() => {
useStore
.getState()
.getFlows(teamId)
.then((res: { flows: any[] }) => {
- setFlows(res.flows);
+ // Copy the array and sort by most recently edited desc using last associated operation.createdAt, not flow.updatedAt
+ const sortedFlows = res.flows.toSorted((a, b) =>
+ b.operations[0]["createdAt"].localeCompare(
+ a.operations[0]["createdAt"],
+ ),
+ );
+ setFlows(sortedFlows);
});
}, [teamId, setFlows]);
+
useEffect(() => {
fetchFlows();
}, [fetchFlows]);
+
return (
-
-
+
+
-
- My services
+
+ Services
{useStore.getState().canUserEditTeam(slug) ? (
@@ -326,7 +327,7 @@ const Team: React.FC = () => {
const newFlowSlug = slugify(newFlowName);
useStore
.getState()
- .createFlow(teamId, newFlowSlug)
+ .createFlow(teamId, newFlowSlug, newFlowName)
.then((newId: string) => {
navigation.navigate(`/${slug}/${newId}`);
});
@@ -336,23 +337,23 @@ const Team: React.FC = () => {
Add a new service
)}
- {flows && (
-
- {flows.map((flow: any) => (
- {
- fetchFlows();
- }}
- />
- ))}
-
- )}
-
-
+
+ {flows && (
+
+ {flows.map((flow: any) => (
+ {
+ fetchFlows();
+ }}
+ />
+ ))}
+
+ )}
+
);
};
diff --git a/editor.planx.uk/src/pages/Teams.tsx b/editor.planx.uk/src/pages/Teams.tsx
index ea11e0d1b1..38649d671b 100644
--- a/editor.planx.uk/src/pages/Teams.tsx
+++ b/editor.planx.uk/src/pages/Teams.tsx
@@ -1,73 +1,98 @@
-import Edit from "@mui/icons-material/Edit";
-import Visibility from "@mui/icons-material/Visibility";
import Box from "@mui/material/Box";
import Card from "@mui/material/Card";
+import Container from "@mui/material/Container";
import { styled } from "@mui/material/styles";
import Typography from "@mui/material/Typography";
import { Team } from "@opensystemslab/planx-core/types";
import React from "react";
import { Link } from "react-navi";
+import { borderedFocusStyle } from "theme";
import { useStore } from "./FlowEditor/lib/store";
+interface TeamTheme {
+ slug: string;
+ primaryColour: string;
+}
+
interface Props {
teams: Array;
+ teamTheme: Array;
}
-const Root = styled(Box)(({ theme }) => ({
- backgroundColor: theme.palette.background.dark,
- color: "#fff",
- width: "100%",
- flex: 1,
+const StyledLink = styled(Link)(() => ({
+ textDecoration: "none",
+ "&:focus-within > div": {
+ ...borderedFocusStyle,
+ },
+}));
+
+const TeamCard = styled(Card)(({ theme }) => ({
+ display: "flex",
justifyContent: "flex-start",
alignItems: "center",
+ marginBottom: theme.spacing(2),
+ color: theme.palette.text.primary,
+ outline: `1px solid ${theme.palette.border.light}`,
+ outlineOffset: "-1px",
+ borderRadius: "1px",
}));
-const Dashboard = styled(Box)(({ theme }) => ({
- backgroundColor: theme.palette.background.dark,
- color: "#fff",
- width: "100%",
- maxWidth: 600,
- margin: "auto",
- padding: theme.spacing(8, 0, 4, 0),
+const TeamColourBand = styled(Box)(({ theme }) => ({
+ display: "flex",
+ alignSelf: "stretch",
+ width: theme.spacing(1.5),
+ zIndex: 1,
}));
-const StyledLink = styled(Link)(() => ({
- textDecoration: "none",
-}));
+const Teams: React.FC = ({ teams, teamTheme }) => {
+ const canUserEditTeam = useStore.getState().canUserEditTeam;
-const Teams: React.FC = ({ teams }) => {
+ const editableTeams: Team[] = [];
+ const viewOnlyTeams: Team[] = [];
+
+ teams.forEach((team) =>
+ canUserEditTeam(team.slug)
+ ? editableTeams.push(team)
+ : viewOnlyTeams.push(team),
+ );
+
+ const renderTeams = (teamsToRender: Array) =>
+ teamsToRender.map((team) => {
+ return (
+
+
+
+
+ {team.name}
+
+
+
+ );
+ });
return (
-
-
-
-
- Select a team
+
+
+ Select a team
+
+ {editableTeams.length > 0 && (
+ <>
+
+ My teams
+
+ {renderTeams(editableTeams)}
+ >
+ )}
+
+ {viewOnlyTeams.length > 0 && (
+ <>
+
+ Other teams (view only)
-
- {teams.map(({ name, slug }) => (
-
-
-
- {name}
-
- {useStore.getState().canUserEditTeam(slug) ? (
-
- ) : (
-
- )}
-
-
- ))}
-
-
+ {renderTeams(viewOnlyTeams)}
+ >
+ )}
+
);
};
diff --git a/editor.planx.uk/src/pages/layout/AuthenticatedLayout.tsx b/editor.planx.uk/src/pages/layout/AuthenticatedLayout.tsx
index 028fb10a4c..ae94fef872 100644
--- a/editor.planx.uk/src/pages/layout/AuthenticatedLayout.tsx
+++ b/editor.planx.uk/src/pages/layout/AuthenticatedLayout.tsx
@@ -1,13 +1,44 @@
+import Box from "@mui/material/Box";
+import { containerClasses } from "@mui/material/Container";
+import { styled } from "@mui/material/styles";
+import EditorNavMenu from "components/EditorNavMenu";
+import { HEADER_HEIGHT } from "components/Header";
import React, { PropsWithChildren } from "react";
import { DndProvider } from "react-dnd";
import { HTML5Backend } from "react-dnd-html5-backend";
import Header from "../../components/Header";
+const DashboardWrap = styled(Box)(({ theme }) => ({
+ backgroundColor: theme.palette.background.default,
+ width: "100%",
+ display: "flex",
+ flexGrow: 1,
+}));
+
+const DashboardContainer = styled(Box)(({ theme }) => ({
+ backgroundColor: theme.palette.background.default,
+ color: theme.palette.text.primary,
+ display: "flex",
+ flexDirection: "row",
+ width: "100%",
+ minHeight: `calc(100vh - ${HEADER_HEIGHT}px)`,
+ overflow: "hidden",
+ [`& > .${containerClasses.root}`]: {
+ paddingTop: theme.spacing(5),
+ paddingBottom: theme.spacing(5),
+ },
+}));
+
const Layout: React.FC = ({ children }) => (
<>
- {children}
+
+
+
+ {children}
+
+
>
);
diff --git a/editor.planx.uk/src/pages/layout/FlowEditorLayout.tsx b/editor.planx.uk/src/pages/layout/FlowEditorLayout.tsx
index 1c95b66633..bb66ae8e20 100644
--- a/editor.planx.uk/src/pages/layout/FlowEditorLayout.tsx
+++ b/editor.planx.uk/src/pages/layout/FlowEditorLayout.tsx
@@ -1,23 +1,9 @@
-import Box from "@mui/material/Box";
-import { styled } from "@mui/material/styles";
import ErrorFallback from "components/ErrorFallback";
-import { hasFeatureFlag } from "lib/featureFlags";
-import EditorMenu from "pages/FlowEditor/components/EditorMenu";
import React, { PropsWithChildren } from "react";
import { ErrorBoundary } from "react-error-boundary";
-const Root = styled(Box)(() => ({
- display: "flex",
- alignItems: "stretch",
- overflow: "hidden",
- flexGrow: 1,
-}));
-
const FlowEditorLayout: React.FC = ({ children }) => (
-
- {hasFeatureFlag("EDITOR_NAVIGATION") && }
- {children}
-
+ {children}
);
export default FlowEditorLayout;
diff --git a/editor.planx.uk/src/pages/layout/PublicLayout.tsx b/editor.planx.uk/src/pages/layout/PublicLayout.tsx
index bb854c417e..e3c63cd5fb 100644
--- a/editor.planx.uk/src/pages/layout/PublicLayout.tsx
+++ b/editor.planx.uk/src/pages/layout/PublicLayout.tsx
@@ -52,10 +52,10 @@ const PublicFooter: React.FC = () => {
const globalFooterItems = globalSettings?.footerContent
? Object.entries(globalSettings?.footerContent).map(([slug, item]) => ({
- title: item.heading,
- content: item.content,
- href: makeHref(slug),
- }))
+ title: item.heading,
+ content: item.content,
+ href: makeHref(slug),
+ }))
: [];
const footerItems = [...flowSettingsContent, ...globalFooterItems].filter(
diff --git a/editor.planx.uk/src/routes/authenticated.tsx b/editor.planx.uk/src/routes/authenticated.tsx
index 659b907d79..b6a4745a52 100644
--- a/editor.planx.uk/src/routes/authenticated.tsx
+++ b/editor.planx.uk/src/routes/authenticated.tsx
@@ -30,6 +30,10 @@ const editorRoutes = compose(
id
name
slug
+ theme {
+ primaryColour: primary_colour
+ logo
+ }
}
}
`,
@@ -39,7 +43,7 @@ const editorRoutes = compose(
return {
title: makeTitle("Teams"),
- view: ,
+ view: ,
};
}),
diff --git a/editor.planx.uk/src/routes/feedback.tsx b/editor.planx.uk/src/routes/feedback.tsx
index 078223a994..c744505f73 100644
--- a/editor.planx.uk/src/routes/feedback.tsx
+++ b/editor.planx.uk/src/routes/feedback.tsx
@@ -20,6 +20,7 @@ export interface Feedback {
userComment: string | null;
userContext: string | null;
createdAt: string;
+ address: string | null;
}
const feedbackRoutes = compose(
@@ -56,6 +57,7 @@ const feedbackRoutes = compose(
userComment: user_comment
userContext: user_context
createdAt: created_at
+ address
}
}
`,
diff --git a/editor.planx.uk/src/routes/flow.tsx b/editor.planx.uk/src/routes/flow.tsx
index f921ac065b..1bb284969a 100644
--- a/editor.planx.uk/src/routes/flow.tsx
+++ b/editor.planx.uk/src/routes/flow.tsx
@@ -1,6 +1,8 @@
import { gql } from "@apollo/client";
-import Box from "@mui/material/Box";
-import { ComponentType as TYPES } from "@opensystemslab/planx-core/types";
+import {
+ ComponentType as TYPES,
+ FlowStatus,
+} from "@opensystemslab/planx-core/types";
import natsort from "natsort";
import {
compose,
@@ -8,6 +10,7 @@ import {
map,
Matcher,
mount,
+ NaviRequest,
redirect,
route,
withData,
@@ -27,8 +30,7 @@ import components from "../pages/FlowEditor/components/forms";
import FormModal from "../pages/FlowEditor/components/forms/FormModal";
import { SLUGS } from "../pages/FlowEditor/data/types";
import { useStore } from "../pages/FlowEditor/lib/store";
-import type { Flow } from "../types";
-import { getFlowSettings } from "./flowSettings";
+import type { Flow, FlowSettings } from "../types";
import { makeTitle } from "./utils";
import { flowEditorView } from "./views/flowEditor";
@@ -177,11 +179,43 @@ const nodeRoutes = mount({
"/:parent/nodes/:id/edit": editNode,
});
-const SettingsContainer = () => (
-
-
-
-);
+const SettingsContainer = () => ;
+
+interface GetFlowSettings {
+ flows: {
+ id: string;
+ settings: FlowSettings;
+ status: FlowStatus;
+ }[];
+}
+
+export const getFlowSettings = async (req: NaviRequest) => {
+ const {
+ data: {
+ flows: [{ settings, status }],
+ },
+ } = await client.query({
+ query: gql`
+ query GetFlow($slug: String!, $team_slug: String!) {
+ flows(
+ limit: 1
+ where: { slug: { _eq: $slug }, team: { slug: { _eq: $team_slug } } }
+ ) {
+ id
+ settings
+ status
+ }
+ }
+ `,
+ variables: {
+ slug: req.params.flow,
+ team_slug: req.params.team,
+ },
+ });
+
+ useStore.getState().setFlowSettings(settings);
+ useStore.getState().setFlowStatus(status);
+};
const routes = compose(
withData((req) => ({
@@ -218,13 +252,11 @@ const routes = compose(
nodeRoutes,
),
- "/settings": lazy(() => import("./flowSettings")),
-
"/service": compose(
withView(SettingsContainer),
route(async (req) => ({
- getData: getFlowSettings,
+ getData: await getFlowSettings(req),
title: makeTitle(
[req.params.team, req.params.flow, "service"].join("/"),
),
@@ -236,7 +268,7 @@ const routes = compose(
withView(SettingsContainer),
route(async (req) => ({
- getData: getFlowSettings,
+ getData: await getFlowSettings(req),
title: makeTitle(
[req.params.team, req.params.flow, "service-flags"].join("/"),
),
diff --git a/editor.planx.uk/src/routes/flowSettings.tsx b/editor.planx.uk/src/routes/flowSettings.tsx
deleted file mode 100644
index b06ce1406e..0000000000
--- a/editor.planx.uk/src/routes/flowSettings.tsx
+++ /dev/null
@@ -1,109 +0,0 @@
-import { FlowStatus } from "@opensystemslab/planx-core/types";
-import gql from "graphql-tag";
-import {
- compose,
- map,
- mount,
- NaviRequest,
- NotFoundError,
- redirect,
- route,
- withData,
-} from "navi";
-import DataManagerSettings from "pages/FlowEditor/components/Settings/DataManagerSettings";
-import ServiceFlags from "pages/FlowEditor/components/Settings/ServiceFlags";
-import ServiceSettings from "pages/FlowEditor/components/Settings/ServiceSettings";
-import Submissions from "pages/FlowEditor/components/Settings/Submissions";
-import { useStore } from "pages/FlowEditor/lib/store";
-import React from "react";
-
-import { client } from "../lib/graphql";
-import Settings, { SettingsTab } from "../pages/FlowEditor/components/Settings";
-import type { FlowSettings } from "../types";
-import { makeTitle } from "./utils";
-
-interface GetFlowSettings {
- flows: {
- id: string;
- settings: FlowSettings;
- status: FlowStatus;
- }[];
-}
-
-export const getFlowSettings = async (req: NaviRequest) => {
- const {
- data: {
- flows: [{ settings, status }],
- },
- } = await client.query({
- query: gql`
- query GetFlow($slug: String!, $team_slug: String!) {
- flows(
- limit: 1
- where: { slug: { _eq: $slug }, team: { slug: { _eq: $team_slug } } }
- ) {
- id
- settings
- status
- }
- }
- `,
- variables: {
- slug: req.params.flow,
- team_slug: req.params.team,
- },
- });
-
- useStore.getState().setFlowSettings(settings);
- useStore.getState().setFlowStatus(status);
-};
-
-const tabs: SettingsTab[] = [
- {
- name: "Service",
- route: "service",
- Component: ServiceSettings,
- },
- {
- name: "Service Flags",
- route: "flags",
- Component: ServiceFlags,
- },
- {
- name: "Data",
- route: "data-manager",
- Component: DataManagerSettings,
- },
- {
- name: "Submissions",
- route: "submissions",
- Component: Submissions,
- },
-];
-
-const flowSettingsRoutes = compose(
- withData((req) => ({
- mountpath: req.mountpath,
- })),
-
- mount({
- "/": redirect("./service"),
- "/:tab": map(async (req) => {
- const isAuthorised = useStore.getState().canUserEditTeam(req.params.team);
- if (!isAuthorised)
- throw new NotFoundError(
- `User does not have access to ${req.originalUrl}`,
- );
-
- return route({
- getData: getFlowSettings,
- title: makeTitle(
- [req.params.team, req.params.flow, "Flow Settings"].join("/"),
- ),
- view: ,
- });
- }),
- }),
-);
-
-export default flowSettingsRoutes;
diff --git a/editor.planx.uk/src/routes/index.tsx b/editor.planx.uk/src/routes/index.tsx
index 1f15826a56..8d04f89613 100644
--- a/editor.planx.uk/src/routes/index.tsx
+++ b/editor.planx.uk/src/routes/index.tsx
@@ -71,6 +71,12 @@ export default isPreviewOnlyDomain
})
: mount({
"/:team/:flow/published": lazy(() => import("./published")), // loads current published flow if exists, or throws Not Found if unpublished
+ "canterbury/find-out-if-you-need-planning-permission/preview": map(
+ async (req) =>
+ redirect(
+ `/canterbury/find-out-if-you-need-planning-permission/published${req?.search}`,
+ ),
+ ), // temporary redirect while Canterbury works with internal IT to update advertised service links
"/:team/:flow/preview": lazy(() => import("./preview")), // loads current draft flow and latest published external portals, or throws Not Found if any external portal is unpublished
"/:team/:flow/draft": lazy(() => import("./draft")), // loads current draft flow and draft external portals
"/:team/:flow/pay": mountPayRoutes(),
diff --git a/editor.planx.uk/src/routes/team.tsx b/editor.planx.uk/src/routes/team.tsx
index 60e68060f2..ad89c46704 100644
--- a/editor.planx.uk/src/routes/team.tsx
+++ b/editor.planx.uk/src/routes/team.tsx
@@ -1,5 +1,7 @@
import gql from "graphql-tag";
import { compose, lazy, mount, route, withData, withView } from "navi";
+import DesignSettings from "pages/FlowEditor/components/Settings/DesignSettings";
+import GeneralSettings from "pages/FlowEditor/components/Settings/GeneralSettings";
import React from "react";
import { client } from "../lib/graphql";
@@ -26,8 +28,6 @@ const routes = compose(
view: ,
})),
- "/settings": lazy(() => import("./teamSettings")),
-
"/:flow": lazy(async (req) => {
const [slug] = req.params.flow.split(",");
@@ -50,6 +50,7 @@ const routes = compose(
}
) {
id
+ name
}
}
`,
@@ -65,6 +66,7 @@ const routes = compose(
});
}
+ useStore.getState().setFlowName(flow.name);
useStore.getState().setFlowSlug(slug);
await useStore.getState().connectTo(flow.id);
}
@@ -73,6 +75,22 @@ const routes = compose(
}),
"/members": lazy(() => import("./teamMembers")),
+ "/design": compose(
+ route(async (req) => ({
+ title: makeTitle(
+ [req.params.team, req.params.flow, "design"].join("/"),
+ ),
+ view: DesignSettings,
+ })),
+ ),
+ "/general-settings": compose(
+ route(async (req) => ({
+ title: makeTitle(
+ [req.params.team, req.params.flow, "settings"].join("/"),
+ ),
+ view: GeneralSettings,
+ })),
+ ),
}),
);
diff --git a/editor.planx.uk/src/routes/teamSettings.tsx b/editor.planx.uk/src/routes/teamSettings.tsx
deleted file mode 100644
index a21bd4e25a..0000000000
--- a/editor.planx.uk/src/routes/teamSettings.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import {
- compose,
- map,
- mount,
- NotFoundError,
- redirect,
- route,
- withData,
-} from "navi";
-import DesignSettings from "pages/FlowEditor/components/Settings/DesignSettings";
-import TeamSettings from "pages/FlowEditor/components/Settings/TeamSettings";
-import { useStore } from "pages/FlowEditor/lib/store";
-import React from "react";
-
-import Settings from "../pages/FlowEditor/components/Settings";
-import { makeTitle } from "./utils";
-
-const teamSettingsRoutes = compose(
- withData((req) => ({
- mountpath: req.mountpath,
- })),
-
- mount({
- "/": redirect("./team"),
- "/:tab": map(async (req) => {
- const isAuthorised = useStore.getState().canUserEditTeam(req.params.team);
- if (!isAuthorised)
- throw new NotFoundError(
- `User does not have access to ${req.originalUrl}`,
- );
-
- return route(async (req) => ({
- title: makeTitle([req.params.team, "Team Settings"].join("/")),
- view: (
-
- ),
- }));
- }),
- }),
-);
-
-export default teamSettingsRoutes;
diff --git a/editor.planx.uk/src/routes/utils.test.tsx b/editor.planx.uk/src/routes/utils.test.tsx
index 6e47cd424f..0d398a6318 100644
--- a/editor.planx.uk/src/routes/utils.test.tsx
+++ b/editor.planx.uk/src/routes/utils.test.tsx
@@ -1,11 +1,11 @@
import { waitFor } from "@testing-library/react";
import { NaviRequest } from "navi";
-import { FullStore, vanillaStore } from "pages/FlowEditor/lib/store";
+import { FullStore, useStore } from "pages/FlowEditor/lib/store";
import { ApplicationPath } from "types";
import { isSaveReturnFlow, setPath } from "./utils";
-const { getState, setState } = vanillaStore;
+const { getState, setState } = useStore;
let initialState: FullStore;
const mockFlow = {
diff --git a/editor.planx.uk/src/routes/utils.ts b/editor.planx.uk/src/routes/utils.ts
index e293bee05c..a61b6463a1 100644
--- a/editor.planx.uk/src/routes/utils.ts
+++ b/editor.planx.uk/src/routes/utils.ts
@@ -49,6 +49,7 @@ export const setPath = (flowData: Store.flow, req: NaviRequest) => {
// So I've hard-coded these domain names until a better solution comes along.
//
const PREVIEW_ONLY_DOMAINS = [
+ "planningservices.epsom-ewell.gov.uk",
"planningservices.barnet.gov.uk",
"planningservices.buckinghamshire.gov.uk",
"planningservices.camden.gov.uk",
diff --git a/editor.planx.uk/src/routes/views/draft.tsx b/editor.planx.uk/src/routes/views/draft.tsx
index d5b85c679c..1ce79410a4 100644
--- a/editor.planx.uk/src/routes/views/draft.tsx
+++ b/editor.planx.uk/src/routes/views/draft.tsx
@@ -32,8 +32,7 @@ export const draftView = async (req: NaviRequest) => {
const flowData = await fetchDraftFlattenedFlowData(flow.id);
const state = useStore.getState();
- state.setFlow({ id: flow.id, flow: flowData, flowSlug });
- state.setFlowNameFromSlug(flowSlug);
+ state.setFlow({ id: flow.id, flow: flowData, flowSlug, flowName: flow.name });
state.setGlobalSettings(data.globalSettings[0]);
state.setFlowSettings(flow.settings);
state.setTeam(flow.team);
@@ -70,16 +69,23 @@ const fetchSettingsForDraftView = async (
favicon
}
name
- settings
+ settings: team_settings {
+ boundaryUrl: boundary_url
+ boundaryBBox: boundary_bbox
+ homepage
+ helpEmail: help_email
+ helpPhone: help_phone
+ helpOpeningHours: help_opening_hours
+ emailReplyToId: email_reply_to_id
+ boundaryBBox: boundary_bbox
+ }
integrations {
hasPlanningData: has_planning_data
}
slug
- notifyPersonalisation: notify_personalisation
- boundaryBBox: boundary_bbox
}
- settings
slug
+ name
}
globalSettings: global_settings {
footerContent: footer_content
diff --git a/editor.planx.uk/src/routes/views/flowEditor.tsx b/editor.planx.uk/src/routes/views/flowEditor.tsx
index 8eb95f9677..e2a47bb846 100644
--- a/editor.planx.uk/src/routes/views/flowEditor.tsx
+++ b/editor.planx.uk/src/routes/views/flowEditor.tsx
@@ -6,17 +6,14 @@ import { View } from "react-navi";
import { client } from "../../lib/graphql";
import { useStore } from "../../pages/FlowEditor/lib/store";
-import type { FlowSettings } from "../../types";
interface FlowMetadata {
- flowSettings: FlowSettings;
flowAnalyticsLink: string;
isFlowPublished: boolean;
}
interface GetFlowMetadata {
flows: {
- flowSettings: FlowSettings;
flowAnalyticsLink: string;
publishedFlowsAggregate: {
aggregate: {
@@ -34,13 +31,12 @@ const getFlowMetadata = async (
data: { flows },
} = await client.query({
query: gql`
- query GetFlow($slug: String!, $team_slug: String!) {
+ query GetFlowMetadata($slug: String!, $team_slug: String!) {
flows(
limit: 1
where: { slug: { _eq: $slug }, team: { slug: { _eq: $team_slug } } }
) {
id
- flowSettings: settings
flowAnalyticsLink: analytics_link
publishedFlowsAggregate: published_flows_aggregate {
aggregate {
@@ -60,7 +56,6 @@ const getFlowMetadata = async (
if (!flows) throw new NotFoundError(`Flow ${flowSlug} not found for ${team}`);
const metadata = {
- flowSettings: flow.flowSettings,
flowAnalyticsLink: flow.flowAnalyticsLink,
isFlowPublished: flow.publishedFlowsAggregate?.aggregate.count > 0,
};
@@ -72,9 +67,11 @@ const getFlowMetadata = async (
*/
export const flowEditorView = async (req: NaviRequest) => {
const [flow] = req.params.flow.split(",");
- const { flowSettings, flowAnalyticsLink, isFlowPublished } =
- await getFlowMetadata(flow, req.params.team);
- useStore.setState({ flowSettings, flowAnalyticsLink, isFlowPublished });
+ const { flowAnalyticsLink, isFlowPublished } = await getFlowMetadata(
+ flow,
+ req.params.team,
+ );
+ useStore.setState({ flowAnalyticsLink, isFlowPublished });
return (
diff --git a/editor.planx.uk/src/routes/views/preview.tsx b/editor.planx.uk/src/routes/views/preview.tsx
index 0cedf9545a..49346eb542 100644
--- a/editor.planx.uk/src/routes/views/preview.tsx
+++ b/editor.planx.uk/src/routes/views/preview.tsx
@@ -28,8 +28,12 @@ export const previewView = async (req: NaviRequest) => {
const flowData = await fetchFlattenedFlowData(flow.id);
const state = useStore.getState();
- state.setFlow({ id: flow.id, flow: flowData, flowSlug });
- state.setFlowNameFromSlug(flowSlug);
+ state.setFlow({
+ id: flow.id,
+ flow: flowData,
+ flowSlug,
+ flowName: flow.name,
+ });
state.setGlobalSettings(data.globalSettings[0]);
state.setFlowSettings(flow.settings);
state.setTeam(flow.team);
diff --git a/editor.planx.uk/src/routes/views/published.tsx b/editor.planx.uk/src/routes/views/published.tsx
index 5f2b26e470..914bd79369 100644
--- a/editor.planx.uk/src/routes/views/published.tsx
+++ b/editor.planx.uk/src/routes/views/published.tsx
@@ -49,6 +49,7 @@ export const publishedView = async (req: NaviRequest) => {
flow: publishedFlow,
flowSlug,
flowStatus: flow.status,
+ flowName: flow.name,
});
state.setGlobalSettings(data.globalSettings[0]);
state.setFlowSettings(flow.settings);
@@ -84,6 +85,7 @@ export const fetchSettingsForPublishedView = async (
}
) {
id
+ name
team {
theme {
primaryColour: primary_colour
@@ -93,15 +95,21 @@ export const fetchSettingsForPublishedView = async (
favicon
}
name
- settings
+ settings: team_settings {
+ boundaryUrl: boundary_url
+ boundaryBBox: boundary_bbox
+ homepage
+ helpEmail: help_email
+ helpPhone: help_phone
+ helpOpeningHours: help_opening_hours
+ emailReplyToId: email_reply_to_id
+ boundaryBBox: boundary_bbox
+ }
integrations {
hasPlanningData: has_planning_data
}
slug
- notifyPersonalisation: notify_personalisation
- boundaryBBox: boundary_bbox
}
- settings
status
publishedFlows: published_flows(
limit: 1
diff --git a/editor.planx.uk/src/routes/views/standalone.tsx b/editor.planx.uk/src/routes/views/standalone.tsx
index 75d17bdcdb..465f25a9d3 100644
--- a/editor.planx.uk/src/routes/views/standalone.tsx
+++ b/editor.planx.uk/src/routes/views/standalone.tsx
@@ -11,7 +11,7 @@ import { Flow, GlobalSettings } from "types";
import { getTeamFromDomain } from "../utils";
interface StandaloneViewData {
- flows: Pick[];
+ flows: Pick[];
globalSettings: GlobalSettings[];
}
@@ -24,14 +24,12 @@ const standaloneView = async (req: NaviRequest) => {
const teamSlug =
req.params.team || (await getTeamFromDomain(window.location.hostname));
const data = await fetchDataForStandaloneView(flowSlug, teamSlug);
-
const {
- flows: [{ team, settings: flowSettings }],
+ flows: [{ name, team, settings: flowSettings }],
globalSettings,
} = data;
-
const state = useStore.getState();
- state.setFlowNameFromSlug(flowSlug);
+ state.setFlowName(data.flows[0].name);
state.setGlobalSettings(globalSettings[0]);
state.setFlowSettings(flowSettings);
state.setTeam(team);
@@ -61,6 +59,7 @@ const fetchDataForStandaloneView = async (
}
) {
id
+ name
team {
theme {
primaryColour: primary_colour
@@ -70,15 +69,21 @@ const fetchDataForStandaloneView = async (
favicon
}
name
- settings
+ settings: team_settings {
+ boundaryUrl: boundary_url
+ boundaryBBox: boundary_bbox
+ homepage
+ helpEmail: help_email
+ helpPhone: help_phone
+ helpOpeningHours: help_opening_hours
+ emailReplyToId: email_reply_to_id
+ boundaryBBox: boundary_bbox
+ }
integrations {
hasPlanningData: has_planning_data
}
slug
- notifyPersonalisation: notify_personalisation
- boundaryBBox: boundary_bbox
}
- settings
}
globalSettings: global_settings {
diff --git a/editor.planx.uk/src/theme.ts b/editor.planx.uk/src/theme.ts
index 69dbb6c177..53dcfd39f7 100644
--- a/editor.planx.uk/src/theme.ts
+++ b/editor.planx.uk/src/theme.ts
@@ -430,6 +430,67 @@ const getThemeOptions = ({
},
],
},
+ MuiSwitch: {
+ styleOverrides: {
+ root: {
+ width: "76px",
+ height: "44px",
+ padding: "8px",
+ left: "-8px",
+ marginRight: "-4px",
+ "& .MuiSwitch-switchBase": {
+ padding: "11px",
+ borderRadius: "50%",
+ color: "rgb(255, 106, 0)",
+ "&.Mui-checked": {
+ transform: "translateX(32px)",
+ },
+ },
+ "& .MuiSwitch-thumb": {
+ background: palette.common.white,
+ width: "22px",
+ height: "22px",
+ },
+ "& .MuiSwitch-track": {
+ background: palette.background.dark,
+ borderRadius: "20px",
+ position: "relative",
+ opacity: "1 !important",
+ "&::before, &::after": {
+ display: "inline-block",
+ position: "absolute",
+ top: "50%",
+ width: "50%",
+ transform: "translateY(-50%)",
+ color: palette.common.white,
+ textAlign: "center",
+ fontSize: "0.75rem",
+ fontWeight: FONT_WEIGHT_SEMI_BOLD,
+ },
+ "&::before": {
+ content: "'ON'",
+ left: "4px",
+ opacity: 0,
+ },
+ "&::after": {
+ content: "'OFF'",
+ right: "4px",
+ },
+ },
+ "& .MuiSwitch-switchBase.Mui-checked": {
+ "& + .MuiSwitch-track": {
+ background: palette.success.dark,
+ },
+ "& + .MuiSwitch-track::before": {
+ opacity: 1,
+ },
+ "& + .MuiSwitch-track::after": {
+ opacity: 0,
+ },
+ },
+ },
+ },
+ },
MuiRadio: {
defaultProps: {
disableRipple: true,
@@ -457,7 +518,7 @@ const getThemeOptions = ({
color: palette.text.primary,
border: "2px solid currentcolor",
borderRadius: "50%",
- background: "rgba(0,0,0,0)",
+ backgroundColor: "#FFF",
},
"&::after": {
// Styles for radio icon dot
@@ -486,6 +547,28 @@ const getThemeOptions = ({
},
},
},
+ variants: [
+ {
+ props: { variant: "compact" },
+ style: {
+ "& label": { paddingBottom: "200px" },
+ "&.MuiRadio-root": {
+ width: "40px",
+ height: "40px",
+ margin: "0 0 0 0.25em",
+ },
+ "&.MuiRadio-root::before": {
+ top: "8px",
+ left: "8px",
+ width: "24px",
+ height: "24px",
+ },
+ "&.MuiRadio-root::after": {
+ borderWidth: "6px",
+ },
+ },
+ },
+ ],
},
},
};
diff --git a/editor.planx.uk/src/themeOverrides.d.ts b/editor.planx.uk/src/themeOverrides.d.ts
index a23b94e5a1..37b3bbbea0 100644
--- a/editor.planx.uk/src/themeOverrides.d.ts
+++ b/editor.planx.uk/src/themeOverrides.d.ts
@@ -2,6 +2,8 @@ import "@mui/material/Chip";
// eslint-disable-next-line no-restricted-imports
import "@mui/material/styles/createPalette";
+import { RadioProps } from "@mui/material/Radio";
+
declare module "@mui/material/Chip" {
interface ChipPropsVariantOverrides {
uploadedFileTag: true;
@@ -77,3 +79,15 @@ declare module "@mui/material/Button" {
prompt: true;
}
}
+
+// Append our custom variants to MUI Radio
+declare module "@mui/material/Radio" {
+ interface RadioPropsVariantOverrides {
+ compact: true;
+ }
+}
+declare module "@mui/material" {
+ interface RadioProps {
+ variant?: keyof RadioPropsVariantOverrides;
+ }
+}
diff --git a/editor.planx.uk/src/types.ts b/editor.planx.uk/src/types.ts
index ccb534ba1e..9a129e442e 100644
--- a/editor.planx.uk/src/types.ts
+++ b/editor.planx.uk/src/types.ts
@@ -17,6 +17,7 @@ export type FormikHookReturn = ReturnType;
export interface Flow {
id: string;
slug: string;
+ name: string;
team: Team;
settings?: FlowSettings;
status?: FlowStatus;
diff --git a/editor.planx.uk/src/ui/editor/ColorPicker.tsx b/editor.planx.uk/src/ui/editor/ColorPicker.tsx
index d855547bc1..3f56a4e996 100644
--- a/editor.planx.uk/src/ui/editor/ColorPicker.tsx
+++ b/editor.planx.uk/src/ui/editor/ColorPicker.tsx
@@ -2,13 +2,16 @@ import Box, { BoxProps } from "@mui/material/Box";
import ButtonBase, { ButtonBaseProps } from "@mui/material/ButtonBase";
import { styled } from "@mui/material/styles";
import Typography from "@mui/material/Typography";
+import { ErrorMessage } from "formik";
import React, { useState } from "react";
import { ChromePicker, ColorChangeHandler } from "react-color";
+import ErrorWrapper from "ui/shared/ErrorWrapper";
export interface Props {
label?: string;
inline?: boolean;
color?: string;
+ errorMessage?: string;
onChange?: (newColor: string) => void;
}
@@ -93,28 +96,33 @@ export default function ColorPicker(props: Props): FCReturn {
};
return (
-
-
- {props.label || "Background colour"}:{" "}
-
-
-
- {props.color}
-
- {show ? (
-
-
-
-
- ) : null}
-
+
+
+
+ {props.label || "Background colour"}:{" "}
+
+
+
+ {props.color}
+
+ {show ? (
+
+
+
+
+ ) : null}
+
+
);
}
diff --git a/editor.planx.uk/src/ui/editor/ImgInput.tsx b/editor.planx.uk/src/ui/editor/ImgInput.tsx
index 6134c3b829..90d3216d9c 100644
--- a/editor.planx.uk/src/ui/editor/ImgInput.tsx
+++ b/editor.planx.uk/src/ui/editor/ImgInput.tsx
@@ -27,6 +27,14 @@ const StyledIconButton = styled(IconButton)(({ theme }) => ({
marginLeft: theme.spacing(0.5),
}));
+const ImageWrapper = styled(Box)(() => ({
+ width: 50,
+ height: 50,
+ display: "flex",
+ justifyContent: "center",
+ alignItems: "center",
+}));
+
/** Uploads an image and returns corresponding URL */
export default function ImgInput({
img,
@@ -86,13 +94,15 @@ export default function ImgInput({
Remove
-
+
+
+
) : (
diff --git a/editor.planx.uk/src/ui/editor/InputLabel.tsx b/editor.planx.uk/src/ui/editor/InputLabel.tsx
new file mode 100644
index 0000000000..a1d57d8948
--- /dev/null
+++ b/editor.planx.uk/src/ui/editor/InputLabel.tsx
@@ -0,0 +1,31 @@
+import { styled } from "@mui/material/styles";
+import Typography from "@mui/material/Typography";
+import { visuallyHidden } from "@mui/utils";
+import React, { PropsWithChildren } from "react";
+
+const Root = styled("label")(() => ({
+ display: "block",
+ width: "100%",
+}));
+
+export default function InputLabel(
+ props: PropsWithChildren<{
+ label: string;
+ hidden?: boolean;
+ htmlFor?: string;
+ id?: string;
+ }>,
+) {
+ return (
+
+
+ {props.label}
+
+ {props.children}
+
+ );
+}
diff --git a/editor.planx.uk/src/ui/editor/InputLegend.tsx b/editor.planx.uk/src/ui/editor/InputLegend.tsx
index 2f9c7094a2..764a27f0f3 100644
--- a/editor.planx.uk/src/ui/editor/InputLegend.tsx
+++ b/editor.planx.uk/src/ui/editor/InputLegend.tsx
@@ -5,6 +5,7 @@ import React, { ReactNode } from "react";
const Legend = styled(Typography)(() => ({
display: "block",
width: "100%",
+ padding: 0,
})) as typeof Typography;
export default function InputLegend({ children }: { children: ReactNode }) {
diff --git a/editor.planx.uk/src/ui/editor/OptionButton.stories.tsx b/editor.planx.uk/src/ui/editor/OptionButton.stories.tsx
deleted file mode 100644
index b11fb3cd43..0000000000
--- a/editor.planx.uk/src/ui/editor/OptionButton.stories.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import { Meta, StoryObj } from "@storybook/react";
-import OptionButton from "ui/editor/OptionButton";
-
-const meta = {
- title: "Design System/Atoms/Form Elements/OptionButton",
- component: OptionButton,
-} satisfies Meta;
-
-type Story = StoryObj;
-
-export default meta;
-
-export const Basic = {
- args: {
- selected: false,
- backgroundColor: "#F9F8F8",
- },
-} satisfies Story;
diff --git a/editor.planx.uk/src/ui/editor/OptionButton.tsx b/editor.planx.uk/src/ui/editor/OptionButton.tsx
deleted file mode 100644
index adb45a07e3..0000000000
--- a/editor.planx.uk/src/ui/editor/OptionButton.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import ButtonBase, { ButtonBaseProps } from "@mui/material/ButtonBase";
-import { styled } from "@mui/material/styles";
-import React from "react";
-
-interface Props extends ButtonBaseProps {
- selected?: boolean;
- backgroundColor?: string;
-}
-
-const Root = styled(ButtonBase, {
- shouldForwardProp: (prop) =>
- !["selected", "backgroundColor"].includes(prop.toString()),
-})(({ theme, selected, backgroundColor }) => ({
- height: 50,
- padding: theme.spacing(0, 3, 0, 5),
- marginBottom: theme.spacing(0.5),
- fontSize: 15,
- position: "relative",
- fontFamily: "inherit",
- display: "block",
- width: "auto",
- minWidth: 200,
- textAlign: "left",
- border: `1px solid ${theme.palette.border.light}`,
- backgroundColor: theme.palette.common.white,
- "&::before": {
- content: "''",
- position: "absolute",
- height: 12,
- width: 12,
- left: 18,
- top: 18,
- borderRadius: "50%",
- backgroundColor: theme.palette.grey[400],
- ...(selected && {
- color: "#fff",
- backgroundColor: backgroundColor || theme.palette.success.main,
- }),
- },
- ...(!selected && {
- "&:hover": {
- backgroundColor: "rgba(0,0,0,0.1)",
- },
- }),
- ...(selected && {
- backgroundColor: theme.palette.grey[200],
- }),
-}));
-
-export default function OptionButton(props: Props): FCReturn {
- return {props.children} ;
-}
diff --git a/editor.planx.uk/src/ui/editor/Permission.tsx b/editor.planx.uk/src/ui/editor/Permission.tsx
new file mode 100644
index 0000000000..cb4bb2f844
--- /dev/null
+++ b/editor.planx.uk/src/ui/editor/Permission.tsx
@@ -0,0 +1,26 @@
+import { useStore } from "pages/FlowEditor/lib/store";
+import React, { PropsWithChildren } from "react";
+
+type PermissionComponent = React.FC & {
+ IsPlatformAdmin: React.FC;
+} & { IsNotPlatformAdmin: React.FC };
+
+const Permission: PermissionComponent = ({ children }) => {
+ return children;
+};
+
+const IsPlatformAdmin: React.FC = ({ children }) => {
+ const isPlatformAdmin = useStore((state) => state.user?.isPlatformAdmin);
+ return isPlatformAdmin ? children : null;
+};
+
+const IsNotPlatformAdmin: React.FC = ({ children }) => {
+ const isPlatformAdmin = useStore((state) => state.user?.isPlatformAdmin);
+ return !isPlatformAdmin ? children : null;
+};
+
+// Attach permission specific components as static properties
+Permission.IsPlatformAdmin = IsPlatformAdmin;
+Permission.IsNotPlatformAdmin = IsNotPlatformAdmin;
+
+export default Permission;
diff --git a/editor.planx.uk/src/ui/editor/RichTextInput.tsx b/editor.planx.uk/src/ui/editor/RichTextInput.tsx
index b5587c845b..c455cad5c4 100644
--- a/editor.planx.uk/src/ui/editor/RichTextInput.tsx
+++ b/editor.planx.uk/src/ui/editor/RichTextInput.tsx
@@ -281,11 +281,12 @@ const initialUrlValue = "https://";
// Makes sure that if the user pastes a full URL into the input, the pre-populated `https://` is removed
// e.g. https://https://something.com -> https://something.com
+// Also trim whitespace from links which flag sanitation errors
const trimUrlValue = (url: string) => {
if (url.startsWith(`${initialUrlValue}${initialUrlValue}`)) {
return url.slice(initialUrlValue.length);
}
- return url;
+ return url.trim();
};
const getContentHierarchyError = (doc: JSONContent): string | null => {
diff --git a/editor.planx.uk/src/ui/editor/InputDescription.tsx b/editor.planx.uk/src/ui/editor/SettingsDescription.tsx
similarity index 52%
rename from editor.planx.uk/src/ui/editor/InputDescription.tsx
rename to editor.planx.uk/src/ui/editor/SettingsDescription.tsx
index d6f4d1cbe1..2d1f541375 100644
--- a/editor.planx.uk/src/ui/editor/InputDescription.tsx
+++ b/editor.planx.uk/src/ui/editor/SettingsDescription.tsx
@@ -6,12 +6,25 @@ const Description = styled(Typography)(({ theme }) => ({
width: "100%",
textAlign: "left",
color: theme.palette.text.secondary,
+ paddingBottom: theme.spacing(1),
+ paddingTop: theme.spacing(0.5),
+ "& p, & a": {
+ fontSize: "inherit",
+ margin: 0,
+ },
+ "& p + p": {
+ marginTop: "1em",
+ },
})) as typeof Typography;
-export default function InputDescription({
+export default function SettingsDescription({
children,
}: {
children: ReactNode;
}) {
- return {children} ;
+ return (
+
+ {children}
+
+ );
}
diff --git a/editor.planx.uk/src/ui/editor/EditorRow.tsx b/editor.planx.uk/src/ui/editor/SettingsSection.tsx
similarity index 87%
rename from editor.planx.uk/src/ui/editor/EditorRow.tsx
rename to editor.planx.uk/src/ui/editor/SettingsSection.tsx
index f489337596..30db4412d4 100644
--- a/editor.planx.uk/src/ui/editor/EditorRow.tsx
+++ b/editor.planx.uk/src/ui/editor/SettingsSection.tsx
@@ -12,9 +12,10 @@ const Root = styled(Box, {
})(({ background, theme }) => ({
display: "block",
width: "100%",
- padding: theme.spacing(2.5, 0),
+ marginTop: theme.spacing(2),
+ paddingBottom: theme.spacing(1),
"&:first-of-type": {
- paddingTop: 0,
+ marginTop: 0,
},
"& > * + *, & > form > * + *": {
...contentFlowSpacing(theme),
@@ -27,7 +28,7 @@ const Root = styled(Box, {
}),
}));
-export default function EditorRow({
+export default function SettingsSection({
children,
background,
}: {
diff --git a/editor.planx.uk/src/ui/public/ExternalPlanningSiteDialog.stories.tsx b/editor.planx.uk/src/ui/public/ExternalPlanningSiteDialog.stories.tsx
index 723c0f81b9..25df956831 100644
--- a/editor.planx.uk/src/ui/public/ExternalPlanningSiteDialog.stories.tsx
+++ b/editor.planx.uk/src/ui/public/ExternalPlanningSiteDialog.stories.tsx
@@ -16,11 +16,5 @@ export default meta;
export const Basic = {
args: {
purpose: DialogPurpose.MissingProjectType,
- teamSettings: {
- externalPlanningSite: {
- name: "Council website",
- url: "test.gov.uk",
- },
- },
},
} satisfies Story;
diff --git a/editor.planx.uk/src/ui/public/ExternalPlanningSiteDialog.tsx b/editor.planx.uk/src/ui/public/ExternalPlanningSiteDialog.tsx
index 27a9d5c256..5b042c81f9 100644
--- a/editor.planx.uk/src/ui/public/ExternalPlanningSiteDialog.tsx
+++ b/editor.planx.uk/src/ui/public/ExternalPlanningSiteDialog.tsx
@@ -32,11 +32,11 @@ const getTitleAndContent = (
content: (
<>
At present, only the listed project types are supported.
- {settings?.supportEmail && (
+ {settings?.helpEmail && (
Please feel free to{" "}
@@ -53,7 +53,6 @@ const getTitleAndContent = (
interface Props {
purpose: DialogPurpose;
- teamSettings?: TeamSettings;
}
export default function ExternalPlanningSiteDialog({
@@ -77,7 +76,7 @@ export default function ExternalPlanningSiteDialog({
You can apply for a Lawful Development Certificate without an
address and postcode through{" "}
- {teamSettings?.externalPlanningSite?.name} .
+ {teamSettings?.externalPlanningSiteName} .
@@ -88,12 +87,9 @@ export default function ExternalPlanningSiteDialog({
>
Return to application
-
+
- Go to {teamSettings?.externalPlanningSite?.name}
+ Go to {teamSettings?.externalPlanningSiteName}
(opens in a new tab)
diff --git a/editor.planx.uk/src/ui/shared/Checkbox.tsx b/editor.planx.uk/src/ui/shared/Checkbox.tsx
index 297c1115d9..90e816b41b 100644
--- a/editor.planx.uk/src/ui/shared/Checkbox.tsx
+++ b/editor.planx.uk/src/ui/shared/Checkbox.tsx
@@ -1,9 +1,11 @@
-import Box from "@mui/material/Box";
+import Box, { BoxProps } from "@mui/material/Box";
import { styled } from "@mui/material/styles";
import React from "react";
import { borderedFocusStyle } from "theme";
-const Root = styled(Box)(({ theme }) => ({
+const Root = styled(Box, {
+ shouldForwardProp: (prop) => !["disabled"].includes(prop.toString()),
+})(({ theme, disabled }) => ({
display: "inline-flex",
flexShrink: 0,
position: "relative",
@@ -11,8 +13,12 @@ const Root = styled(Box)(({ theme }) => ({
height: 40,
borderColor: theme.palette.text.primary,
border: "2px solid",
- background: "transparent",
+ backgroundColor: theme.palette.common.white,
"&:focus-within": borderedFocusStyle,
+ ...(disabled && {
+ border: `2px solid ${theme.palette.grey[400]}`,
+ backgroundColor: theme.palette.grey[400],
+ }),
}));
const Input = styled("input")(() => ({
@@ -24,11 +30,13 @@ const Input = styled("input")(() => ({
interface IconProps extends React.HTMLAttributes {
checked: boolean;
+ disabled?: boolean;
}
const Icon = styled("span", {
- shouldForwardProp: (prop) => prop !== "checked",
-})(({ theme, checked }) => ({
+ shouldForwardProp: (prop) =>
+ !["checked", "disabled"].includes(prop.toString()),
+})(({ theme, checked, disabled }) => ({
display: checked ? "block" : "none",
content: "''",
position: "absolute",
@@ -41,27 +49,40 @@ const Icon = styled("span", {
top: "42%",
transform: "translate(-50%, -50%) rotate(45deg)",
cursor: "pointer",
+ ...(disabled && {
+ borderBottom: `5px solid white`,
+ borderRight: `5px solid white`,
+ }),
}));
export interface Props {
id?: string;
checked: boolean;
onChange?: (event?: React.MouseEvent) => void;
- inputProps?: React.InputHTMLAttributes
+ inputProps?: React.InputHTMLAttributes;
}
-export default function Checkbox({ id, checked, onChange, inputProps }: Props): FCReturn {
+export default function Checkbox({
+ id,
+ checked,
+ onChange,
+ inputProps,
+}: Props): FCReturn {
+ const handleChange = (e: React.MouseEvent) => {
+ e.preventDefault();
+ onChange && onChange();
+ };
+
return (
- onChange && onChange()}>
+
onChange && onChange()}
{...inputProps}
/>
-
+
);
}
diff --git a/editor.planx.uk/src/ui/shared/ChecklistItem.tsx b/editor.planx.uk/src/ui/shared/ChecklistItem.tsx
index 85f1c90674..b1cc24e8a3 100644
--- a/editor.planx.uk/src/ui/shared/ChecklistItem.tsx
+++ b/editor.planx.uk/src/ui/shared/ChecklistItem.tsx
@@ -26,6 +26,7 @@ interface Props {
label: string;
checked: boolean;
onChange: (event?: React.MouseEvent) => void;
+ inputProps?: React.InputHTMLAttributes;
}
export default function ChecklistItem({
@@ -33,10 +34,16 @@ export default function ChecklistItem({
onChange,
checked,
id,
+ inputProps,
}: Props): FCReturn {
return (
-
+
{label}
diff --git a/editor.planx.uk/src/ui/shared/ErrorSummary.stories.tsx b/editor.planx.uk/src/ui/shared/ErrorSummary.stories.tsx
new file mode 100644
index 0000000000..d6c05924a3
--- /dev/null
+++ b/editor.planx.uk/src/ui/shared/ErrorSummary.stories.tsx
@@ -0,0 +1,36 @@
+import { Meta, StoryObj } from "@storybook/react";
+
+import ErrorSummary from "../shared/ErrorSummary";
+
+const meta = {
+ title: "Design System/Molecules/ErrorSummary",
+ component: ErrorSummary,
+} satisfies Meta;
+
+type Story = StoryObj;
+
+export default meta;
+
+export const Error = {
+ args: {
+ heading: "Application error",
+ message: "Summary of error message.",
+ format: "error",
+ },
+} satisfies Story;
+
+export const Warning = {
+ args: {
+ heading: "Application warning",
+ message: "Summary of warning message.",
+ format: "warning",
+ },
+} satisfies Story;
+
+export const Info = {
+ args: {
+ heading: "Application info",
+ message: "Summary of information message.",
+ format: "info",
+ },
+} satisfies Story;
diff --git a/editor.planx.uk/src/ui/shared/ErrorSummary.tsx b/editor.planx.uk/src/ui/shared/ErrorSummary.tsx
new file mode 100644
index 0000000000..15613cb84f
--- /dev/null
+++ b/editor.planx.uk/src/ui/shared/ErrorSummary.tsx
@@ -0,0 +1,36 @@
+import Box from "@mui/material/Box";
+import { styled } from "@mui/material/styles";
+import Typography from "@mui/material/Typography";
+import React from "react";
+
+interface Props {
+ heading?: string;
+ message?: string;
+ format?: "error" | "warning" | "info";
+}
+
+const Root = styled(Box, {
+ shouldForwardProp: (prop) => prop !== "format",
+})(({ theme, format }) => ({
+ padding: theme.spacing(3),
+ border: `5px solid ${theme.palette.error.main}`,
+ ...(format === "warning" && {
+ borderColor: theme.palette.warning.main,
+ }),
+ ...(format === "info" && {
+ borderColor: theme.palette.border.light,
+ }),
+}));
+
+function ErrorSummary(props: Props) {
+ return (
+
+
+ {props.heading}
+
+ {props.message}
+
+ );
+}
+
+export default ErrorSummary;
diff --git a/editor.planx.uk/src/ui/shared/Radio.stories.tsx b/editor.planx.uk/src/ui/shared/Radio.stories.tsx
deleted file mode 100644
index 72b3c18d07..0000000000
--- a/editor.planx.uk/src/ui/shared/Radio.stories.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import { Meta, StoryObj } from "@storybook/react";
-import Radio from "ui/shared/Radio";
-
-const meta = {
- title: "Design System/Atoms/Form Elements/Radio",
- component: Radio,
-} satisfies Meta;
-
-type Story = StoryObj;
-
-export default meta;
-
-export const Basic = {
- args: {
- value: "option-a",
- options: [
- {
- label: "Option A",
- value: "option-a",
- },
- {
- label: "Option B",
- value: "option-b",
- },
- ],
- },
-} satisfies Story;
diff --git a/editor.planx.uk/src/ui/shared/Radio.tsx b/editor.planx.uk/src/ui/shared/Radio.tsx
deleted file mode 100644
index 5514739ef4..0000000000
--- a/editor.planx.uk/src/ui/shared/Radio.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import Box from "@mui/material/Box";
-import React from "react";
-
-import OptionButton from "../editor/OptionButton";
-
-interface RadioProps {
- value?: T;
- options: Array<{ label: string; value: T }>;
- onChange: (newValue: T) => void;
-}
-
-export default function Radio(props: RadioProps) {
- return (
-
- {props.options.map((option, index) => (
- {
- props.onChange(option.value);
- }}
- >
- {option.label}
-
- ))}
-
- );
-}
diff --git a/hasura.planx.uk/metadata/tables.yaml b/hasura.planx.uk/metadata/tables.yaml
index cd5f0e6376..0242083d56 100644
--- a/hasura.planx.uk/metadata/tables.yaml
+++ b/hasura.planx.uk/metadata/tables.yaml
@@ -1283,16 +1283,6 @@
- session_id
- created_at
filter: {}
-- table:
- name: project_types
- schema: public
- select_permissions:
- - role: public
- permission:
- columns:
- - description
- - value
- filter: {}
- table:
name: published_flows
schema: public
@@ -1414,6 +1404,46 @@
- role: api
permission:
filter: {}
+- table:
+ name: s3_applications
+ schema: public
+ insert_permissions:
+ - role: api
+ permission:
+ check: {}
+ columns:
+ - id
+ - webhook_request
+ - webhook_response
+ - session_id
+ - team_slug
+ - created_at
+ comment: ""
+ select_permissions:
+ - role: api
+ permission:
+ columns:
+ - id
+ - webhook_request
+ - webhook_response
+ - session_id
+ - team_slug
+ - created_at
+ filter: {}
+ comment: ""
+ update_permissions:
+ - role: api
+ permission:
+ columns:
+ - id
+ - webhook_request
+ - webhook_response
+ - session_id
+ - team_slug
+ - created_at
+ filter: {}
+ check: null
+ comment: ""
- table:
name: sessions
schema: public
@@ -1517,6 +1547,7 @@
- number_times_resumed
- sent_to_bops
- sent_to_email
+ - sent_to_s3_power_automate
- sent_to_uniform
- user_clicked_save
- user_invited_to_pay
@@ -1525,7 +1556,16 @@
- email_applications
- payment_requests
- payment_status
+ - s3_applications
- uniform_applications
+ - allow_list_answers
+ - application_declaration_connection
+ - draw_boundary_action
+ - find_property_action
+ - property_constraints_planning
+ - property_type
+ - proposal_project_type
+ - user_role
- service_slug
- session_id
- team_slug
@@ -1539,6 +1579,7 @@
- number_times_resumed
- sent_to_bops
- sent_to_email
+ - sent_to_s3_power_automate
- sent_to_uniform
- user_clicked_save
- user_invited_to_pay
@@ -1547,7 +1588,16 @@
- email_applications
- payment_requests
- payment_status
+ - s3_applications
- uniform_applications
+ - allow_list_answers
+ - application_declaration_connection
+ - draw_boundary_action
+ - find_property_action
+ - property_constraints_planning
+ - property_type
+ - proposal_project_type
+ - user_role
- service_slug
- session_id
- team_slug
@@ -1649,6 +1699,122 @@
- role: platformAdmin
permission:
filter: {}
+- table:
+ name: team_settings
+ schema: public
+ object_relationships:
+ - name: team
+ using:
+ foreign_key_constraint_on: team_id
+ select_permissions:
+ - role: api
+ permission:
+ columns:
+ - id
+ - team_id
+ - boundary_bbox
+ - boundary_url
+ - email_reply_to_id
+ - external_planning_site_name
+ - external_planning_site_url
+ - help_email
+ - help_opening_hours
+ - help_phone
+ - homepage
+ - reference_code
+ filter: {}
+ comment: ""
+ - role: platformAdmin
+ permission:
+ columns:
+ - id
+ - team_id
+ - boundary_bbox
+ - boundary_url
+ - email_reply_to_id
+ - external_planning_site_name
+ - external_planning_site_url
+ - help_email
+ - help_opening_hours
+ - help_phone
+ - homepage
+ - reference_code
+ filter: {}
+ comment: ""
+ - role: public
+ permission:
+ columns:
+ - boundary_bbox
+ - boundary_url
+ - email_reply_to_id
+ - external_planning_site_name
+ - external_planning_site_url
+ - help_email
+ - help_opening_hours
+ - help_phone
+ - homepage
+ - id
+ - reference_code
+ - team_id
+ filter: {}
+ comment: ""
+ - role: teamEditor
+ permission:
+ columns:
+ - id
+ - team_id
+ - boundary_bbox
+ - boundary_url
+ - email_reply_to_id
+ - external_planning_site_name
+ - external_planning_site_url
+ - help_email
+ - help_opening_hours
+ - help_phone
+ - homepage
+ - reference_code
+ filter: {}
+ comment: ""
+ update_permissions:
+ - role: platformAdmin
+ permission:
+ columns:
+ - boundary_bbox
+ - boundary_url
+ - email_reply_to_id
+ - external_planning_site_name
+ - external_planning_site_url
+ - help_email
+ - help_opening_hours
+ - help_phone
+ - homepage
+ - reference_code
+ filter: {}
+ check: null
+ comment: ""
+ - role: teamEditor
+ permission:
+ columns:
+ - boundary_bbox
+ - boundary_url
+ - email_reply_to_id
+ - external_planning_site_name
+ - external_planning_site_url
+ - help_email
+ - help_opening_hours
+ - help_phone
+ - homepage
+ - reference_code
+ filter:
+ team:
+ members:
+ _and:
+ - user_id:
+ _eq: x-hasura-user-id
+ - role:
+ _eq: teamEditor
+ check: null
+ comment: ""
- table:
name: team_themes
schema: public
@@ -1746,6 +1912,13 @@
table:
name: team_integrations
schema: public
+ - name: team_settings
+ using:
+ foreign_key_constraint_on:
+ column: team_id
+ table:
+ name: team_settings
+ schema: public
- name: theme
using:
foreign_key_constraint_on:
@@ -2034,9 +2207,7 @@
- is_platform_admin
- last_name
- updated_at
- filter:
- id:
- _eq: x-hasura-user-id
+ filter: {}
update_permissions:
- role: platformAdmin
permission:
diff --git a/hasura.planx.uk/migrations/1718705200477_alter_table_public_flows_alter_column_name/down.sql b/hasura.planx.uk/migrations/1718705200477_alter_table_public_flows_alter_column_name/down.sql
new file mode 100644
index 0000000000..cd25037e38
--- /dev/null
+++ b/hasura.planx.uk/migrations/1718705200477_alter_table_public_flows_alter_column_name/down.sql
@@ -0,0 +1 @@
+alter table "public"."flows" alter column "name" drop not null;
diff --git a/hasura.planx.uk/migrations/1718705200477_alter_table_public_flows_alter_column_name/up.sql b/hasura.planx.uk/migrations/1718705200477_alter_table_public_flows_alter_column_name/up.sql
new file mode 100644
index 0000000000..c9fc8c5e59
--- /dev/null
+++ b/hasura.planx.uk/migrations/1718705200477_alter_table_public_flows_alter_column_name/up.sql
@@ -0,0 +1 @@
+alter table "public"."flows" alter column "name" set not null;
diff --git a/hasura.planx.uk/migrations/1718719894002_create_table_public_team_settings/down.sql b/hasura.planx.uk/migrations/1718719894002_create_table_public_team_settings/down.sql
new file mode 100644
index 0000000000..29fc26cbc2
--- /dev/null
+++ b/hasura.planx.uk/migrations/1718719894002_create_table_public_team_settings/down.sql
@@ -0,0 +1 @@
+DROP TABLE "public"."team_settings";
diff --git a/hasura.planx.uk/migrations/1718719894002_create_table_public_team_settings/up.sql b/hasura.planx.uk/migrations/1718719894002_create_table_public_team_settings/up.sql
new file mode 100644
index 0000000000..50faf5931a
--- /dev/null
+++ b/hasura.planx.uk/migrations/1718719894002_create_table_public_team_settings/up.sql
@@ -0,0 +1,26 @@
+CREATE TABLE "public"."team_settings" ("id" serial NOT NULL,
+"team_id" integer NOT NULL,
+"reference_code" text,
+"homepage" text,
+"help_email" text NOT NULL DEFAULT 'example@council.gov.uk',
+"help_phone" text NOT NULL DEFAULT '(01234) 567890',
+"help_opening_hours" text NOT NULL DEFAULT 'Monday - Friday, 9am - 5pm',
+"email_reply_to_id" text NOT NULL DEFAULT '727d48fa-cb8a-42f9-b8b2-55032f3bb451',
+"has_planning_data" boolean NOT NULL DEFAULT False,
+"external_planning_site_url" text DEFAULT 'https://www.planningportal.co.uk/',
+"external_planning_site_name" text DEFAULT 'Planning Portal',
+"boundary_url" text,
+"boundary_json" jsonb NOT NULL DEFAULT '{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[1.9134116, 49.528423], [1.9134116, 61.331151], [1.9134116, 61.331151], [-10.76418, 61.331151], [-10.76418, 49.528423]]]}, "properties": {}}'::jsonb,
+PRIMARY KEY ("id") ,
+FOREIGN KEY ("team_id") REFERENCES "public"."teams"("id") ON UPDATE cascade ON DELETE cascade,
+UNIQUE ("id"), UNIQUE ("team_id"), UNIQUE ("reference_code"));
+COMMENT ON TABLE "public"."team_settings" IS E'Global settings for boundary and contact details';
+
+comment on column "public"."team_settings"."reference_code" is E'Team name in three letter short form';
+comment on column "public"."team_settings"."team_id" is E'Linked ID to Teams table';
+comment on column "public"."team_settings"."help_phone" is E'For use in gov notify emails';
+comment on column "public"."team_settings"."help_email" is E'For use in gov notify emails';
+comment on column "public"."team_settings"."help_opening_hours" is E'For use in gov notify emails';
+comment on column "public"."team_settings"."email_reply_to_id" is E'Generate by gov notify and relates to the "reply to" address in notifications';
+comment on column "public"."team_settings"."boundary_url" is E'User entered boundary linked to https://www.planning.data.gov.uk/';
+comment on column "public"."team_settings"."boundary_json" is E'Long form boundary geojson - used to compute boundary_bbox';
diff --git a/hasura.planx.uk/migrations/1718728257637_populate_team_settings_table/down.sql b/hasura.planx.uk/migrations/1718728257637_populate_team_settings_table/down.sql
new file mode 100644
index 0000000000..62c33be674
--- /dev/null
+++ b/hasura.planx.uk/migrations/1718728257637_populate_team_settings_table/down.sql
@@ -0,0 +1 @@
+TRUNCATE TABLE "public"."team_settings";
\ No newline at end of file
diff --git a/hasura.planx.uk/migrations/1718728257637_populate_team_settings_table/up.sql b/hasura.planx.uk/migrations/1718728257637_populate_team_settings_table/up.sql
new file mode 100644
index 0000000000..fb867822dd
--- /dev/null
+++ b/hasura.planx.uk/migrations/1718728257637_populate_team_settings_table/up.sql
@@ -0,0 +1,15 @@
+INSERT INTO team_settings (team_id, reference_code, homepage, help_email, help_phone,help_opening_hours ,email_reply_to_id,has_planning_data , external_planning_site_url,external_planning_site_name,boundary_url,boundary_json)
+SELECT
+id as team_id,
+reference_code,
+settings ->> 'homepage' as homepage,
+COALESCE(notify_personalisation ->> 'helpEmail', 'example@council.co.uk') as help_email,
+COALESCE(notify_personalisation ->> 'helpPhone', '(01234) 567890') as help_phone,
+COALESCE(notify_personalisation ->> 'helpOpeningHours', 'Monday - Friday, 9am - 5pm') as help_opening_hours,
+COALESCE(notify_personalisation ->> 'emailReplyToId', '727d48fa-cb8a-42f9-b8b2-55032f3bb451') as email_reply_to_id,
+CAST(COALESCE(settings ->> 'hasPlanningData', 'false' ) as boolean) as has_planning_data,
+COALESCE(settings #>> '{externalPlanningSite,url}', 'https://www.planningportal.co.uk/' ) as external_planning_site_url,
+COALESCE(settings #>> '{externalPlanningSite,name}', 'Planning Portal') as external_planning_site_name,
+settings ->> 'boundary' as boundary_url,
+boundary as boundary_json
+FROM teams;
diff --git a/hasura.planx.uk/migrations/1719307850258_alter_table_public_team_settings_drop_column_has_planning_data/down.sql b/hasura.planx.uk/migrations/1719307850258_alter_table_public_team_settings_drop_column_has_planning_data/down.sql
new file mode 100644
index 0000000000..0fc61106ff
--- /dev/null
+++ b/hasura.planx.uk/migrations/1719307850258_alter_table_public_team_settings_drop_column_has_planning_data/down.sql
@@ -0,0 +1,4 @@
+alter table "public"."team_settings" add column "has_planning_data" bool;
+comment on column "public"."team_settings"."has_planning_data" is E'Global settings for boundary and contact details';
+alter table "public"."team_settings" alter column "has_planning_data" set default false;
+alter table "public"."team_settings" alter column "has_planning_data" drop not null;
diff --git a/hasura.planx.uk/migrations/1719307850258_alter_table_public_team_settings_drop_column_has_planning_data/up.sql b/hasura.planx.uk/migrations/1719307850258_alter_table_public_team_settings_drop_column_has_planning_data/up.sql
new file mode 100644
index 0000000000..e24d901a31
--- /dev/null
+++ b/hasura.planx.uk/migrations/1719307850258_alter_table_public_team_settings_drop_column_has_planning_data/up.sql
@@ -0,0 +1 @@
+alter table "public"."team_settings" drop column "has_planning_data" cascade;
diff --git a/hasura.planx.uk/migrations/1720175441656_alter_table_public_team_settings_alter_column_boundary_json/down.sql b/hasura.planx.uk/migrations/1720175441656_alter_table_public_team_settings_alter_column_boundary_json/down.sql
new file mode 100644
index 0000000000..91c81c2392
--- /dev/null
+++ b/hasura.planx.uk/migrations/1720175441656_alter_table_public_team_settings_alter_column_boundary_json/down.sql
@@ -0,0 +1 @@
+alter table "public"."team_settings" rename column "boundary_bbox" to "boundary_json";
diff --git a/hasura.planx.uk/migrations/1720175441656_alter_table_public_team_settings_alter_column_boundary_json/up.sql b/hasura.planx.uk/migrations/1720175441656_alter_table_public_team_settings_alter_column_boundary_json/up.sql
new file mode 100644
index 0000000000..6379f408d1
--- /dev/null
+++ b/hasura.planx.uk/migrations/1720175441656_alter_table_public_team_settings_alter_column_boundary_json/up.sql
@@ -0,0 +1 @@
+alter table "public"."team_settings" rename column "boundary_json" to "boundary_bbox";
diff --git a/hasura.planx.uk/migrations/1720511391883_run_sql_migration/down.sql b/hasura.planx.uk/migrations/1720511391883_run_sql_migration/down.sql
new file mode 100644
index 0000000000..f8befa0df9
--- /dev/null
+++ b/hasura.planx.uk/migrations/1720511391883_run_sql_migration/down.sql
@@ -0,0 +1,28 @@
+-- Previous version of teams_summary view from 1713084872473_create_view_teams_summary/up.sql
+
+CREATE OR REPLACE VIEW "public"."teams_summary" AS SELECT
+ t.id,
+ t.name,
+ t.slug,
+ t.reference_code,
+ t.settings->>'homepage' as homepage,
+ t.domain as subdomain,
+ ti.has_planning_data as planning_data_enabled,
+ '@todo' as article_4s_enabled,
+ t.notify_personalisation as govnotify_personalisation,
+ CASE
+ WHEN coalesce(ti.production_govpay_secret, ti.staging_govpay_secret) is not null
+ THEN true
+ ELSE false
+ END as govpay_enabled,
+ t.submission_email as send_to_email_address,
+ coalesce(ti.production_bops_submission_url, ti.staging_bops_submission_url) as bops_submission_url,
+ tt.logo,
+ tt.favicon,
+ tt.primary_colour,
+ tt.link_colour,
+ tt.action_colour
+FROM teams t
+ JOIN team_integrations ti on ti.team_id = t.id
+ JOIN team_themes tt on tt.team_id = t.id
+ORDER BY t.name ASC;
diff --git a/hasura.planx.uk/migrations/1720511391883_run_sql_migration/up.sql b/hasura.planx.uk/migrations/1720511391883_run_sql_migration/up.sql
new file mode 100644
index 0000000000..32ffa2afde
--- /dev/null
+++ b/hasura.planx.uk/migrations/1720511391883_run_sql_migration/up.sql
@@ -0,0 +1,32 @@
+CREATE OR REPLACE VIEW "public"."teams_summary" AS SELECT
+ t.id,
+ t.name,
+ t.slug,
+ t.reference_code,
+ t.settings->>'homepage' as homepage,
+ t.domain as subdomain,
+ ti.has_planning_data as planning_data_enabled,
+ '@todo' as article_4s_enabled,
+ jsonb_build_object(
+ 'helpEmail', ts.help_email,
+ 'helpPhone', ts.help_phone,
+ 'emailReplyToId', ts.email_reply_to_id,
+ 'helpOpeningHours', ts.help_opening_hours
+ ) as govnotify_personalisation,
+ CASE
+ WHEN coalesce(ti.production_govpay_secret, ti.staging_govpay_secret) is not null
+ THEN true
+ ELSE false
+ END as govpay_enabled,
+ t.submission_email as send_to_email_address,
+ coalesce(ti.production_bops_submission_url, ti.staging_bops_submission_url) as bops_submission_url,
+ tt.logo,
+ tt.favicon,
+ tt.primary_colour,
+ tt.link_colour,
+ tt.action_colour
+FROM teams t
+ JOIN team_integrations ti on ti.team_id = t.id
+ JOIN team_themes tt on tt.team_id = t.id
+ JOIN team_settings ts on ts.team_id = t.id
+ORDER BY t.name ASC;
diff --git a/hasura.planx.uk/migrations/1720597665798_create_table_s3_applications/down.sql b/hasura.planx.uk/migrations/1720597665798_create_table_s3_applications/down.sql
new file mode 100644
index 0000000000..d2db0a6dcf
--- /dev/null
+++ b/hasura.planx.uk/migrations/1720597665798_create_table_s3_applications/down.sql
@@ -0,0 +1 @@
+DROP TABLE "public.s3_applications" CASCADE;
diff --git a/hasura.planx.uk/migrations/1720597665798_create_table_s3_applications/up.sql b/hasura.planx.uk/migrations/1720597665798_create_table_s3_applications/up.sql
new file mode 100644
index 0000000000..b5995aeb1c
--- /dev/null
+++ b/hasura.planx.uk/migrations/1720597665798_create_table_s3_applications/up.sql
@@ -0,0 +1,11 @@
+CREATE TABLE "public"."s3_applications" (
+ "id" serial NOT NULL,
+ "session_id" text NOT NULL,
+ "team_slug" text NOT NULL,
+ "webhook_request" JSONB NOT NULL,
+ "webhook_response" JSONB NOT NULL,
+ "created_at" timestamptz NOT NULL DEFAULT now(),
+ PRIMARY KEY ("id")
+);
+
+COMMENT ON TABLE "public"."s3_applications" IS 'Stores a receipt of applications submitted using the Upload to AWS S3 method with notifications via Power Automate webhook';
diff --git a/hasura.planx.uk/migrations/1720635370662_add_s3_applications_to_submissions_summary_view/down.sql b/hasura.planx.uk/migrations/1720635370662_add_s3_applications_to_submissions_summary_view/down.sql
new file mode 100644
index 0000000000..462fb42a34
--- /dev/null
+++ b/hasura.planx.uk/migrations/1720635370662_add_s3_applications_to_submissions_summary_view/down.sql
@@ -0,0 +1,79 @@
+CREATE OR REPLACE VIEW "public"."submission_services_summary" AS
+ WITH resumes_per_session AS (
+ SELECT reconciliation_requests.session_id,
+ count(reconciliation_requests.id) AS number_times_resumed
+ FROM reconciliation_requests
+ GROUP BY reconciliation_requests.session_id
+ ), bops_agg AS (
+ SELECT bops_applications.session_id,
+ json_agg(json_build_object('id', bops_applications.bops_id, 'submittedAt', bops_applications.created_at, 'destinationUrl', bops_applications.destination_url) ORDER BY bops_applications.created_at DESC) AS bops_applications
+ FROM bops_applications
+ GROUP BY bops_applications.session_id
+ ), email_agg AS (
+ SELECT email_applications.session_id,
+ json_agg(json_build_object('id', email_applications.id, 'recipient', email_applications.recipient, 'submittedAt', email_applications.created_at) ORDER BY email_applications.created_at DESC) AS email_applications
+ FROM email_applications
+ GROUP BY email_applications.session_id
+ ), uniform_agg AS (
+ SELECT uniform_applications.submission_reference,
+ json_agg(json_build_object('id', uniform_applications.idox_submission_id, 'submittedAt', uniform_applications.created_at) ORDER BY uniform_applications.created_at DESC) AS uniform_applications
+ FROM uniform_applications
+ GROUP BY uniform_applications.submission_reference
+ ), payment_requests_agg AS (
+ SELECT payment_requests.session_id,
+ json_agg(json_build_object('id', payment_requests.id, 'createdAt', payment_requests.created_at, 'paidAt', payment_requests.paid_at, 'govpayPaymentId', payment_requests.govpay_payment_id) ORDER BY payment_requests.created_at DESC) AS payment_requests
+ FROM payment_requests
+ GROUP BY payment_requests.session_id
+ ), payment_status_agg AS (
+ SELECT payment_status.session_id,
+ json_agg(json_build_object('govpayPaymentId', payment_status.payment_id, 'createdAt', payment_status.created_at, 'status', payment_status.status) ORDER BY payment_status.created_at DESC) AS payment_status
+ FROM payment_status
+ GROUP BY payment_status.session_id
+ )
+ SELECT (ls.id)::text AS session_id,
+ t.slug AS team_slug,
+ f.slug AS service_slug,
+ ls.created_at,
+ ls.submitted_at,
+ ((ls.submitted_at)::date - (ls.created_at)::date) AS session_length_days,
+ ls.has_user_saved AS user_clicked_save,
+ rps.number_times_resumed,
+ ls.allow_list_answers,
+ (ls.allow_list_answers -> 'proposal.projectType'::text) AS proposal_project_type,
+ (ls.allow_list_answers -> 'application.declaration.connection'::text) AS application_declaration_connection,
+ (ls.allow_list_answers -> 'property.type'::text) AS property_type,
+ (ls.allow_list_answers -> 'drawBoundary.action'::text) AS draw_boundary_action,
+ (ls.allow_list_answers -> 'user.role'::text) AS user_role,
+ (ls.allow_list_answers -> 'property.constraints.planning'::text) AS property_constraints_planning,
+ CASE
+ WHEN (((pr.payment_requests)::jsonb IS NOT NULL) AND (jsonb_array_length((pr.payment_requests)::jsonb) > 0)) THEN true
+ ELSE false
+ END AS user_invited_to_pay,
+ pr.payment_requests,
+ ps.payment_status,
+ CASE
+ WHEN (((ba.bops_applications)::jsonb IS NOT NULL) AND (jsonb_array_length((ba.bops_applications)::jsonb) > 0)) THEN true
+ ELSE false
+ END AS sent_to_bops,
+ ba.bops_applications,
+ CASE
+ WHEN (((ua.uniform_applications)::jsonb IS NOT NULL) AND (jsonb_array_length((ua.uniform_applications)::jsonb) > 0)) THEN true
+ ELSE false
+ END AS sent_to_uniform,
+ ua.uniform_applications,
+ CASE
+ WHEN (((ea.email_applications)::jsonb IS NOT NULL) AND (jsonb_array_length((ea.email_applications)::jsonb) > 0)) THEN true
+ ELSE false
+ END AS sent_to_email,
+ ea.email_applications,
+ (ls.allow_list_answers -> 'findProperty.action'::text) AS find_property_action
+ FROM ((((((((lowcal_sessions ls
+ LEFT JOIN flows f ON ((f.id = ls.flow_id)))
+ LEFT JOIN teams t ON ((t.id = f.team_id)))
+ LEFT JOIN resumes_per_session rps ON ((rps.session_id = (ls.id)::text)))
+ LEFT JOIN payment_requests_agg pr ON ((pr.session_id = ls.id)))
+ LEFT JOIN payment_status_agg ps ON ((ps.session_id = ls.id)))
+ LEFT JOIN bops_agg ba ON ((ba.session_id = (ls.id)::text)))
+ LEFT JOIN uniform_agg ua ON ((ua.submission_reference = (ls.id)::text)))
+ LEFT JOIN email_agg ea ON ((ea.session_id = ls.id)))
+ WHERE ((f.slug IS NOT NULL) AND (t.slug IS NOT NULL));
diff --git a/hasura.planx.uk/migrations/1720635370662_add_s3_applications_to_submissions_summary_view/up.sql b/hasura.planx.uk/migrations/1720635370662_add_s3_applications_to_submissions_summary_view/up.sql
new file mode 100644
index 0000000000..734c07fea5
--- /dev/null
+++ b/hasura.planx.uk/migrations/1720635370662_add_s3_applications_to_submissions_summary_view/up.sql
@@ -0,0 +1,90 @@
+CREATE OR REPLACE VIEW "public"."submission_services_summary" AS
+ WITH resumes_per_session AS (
+ SELECT reconciliation_requests.session_id,
+ count(reconciliation_requests.id) AS number_times_resumed
+ FROM reconciliation_requests
+ GROUP BY reconciliation_requests.session_id
+ ), bops_agg AS (
+ SELECT bops_applications.session_id,
+ json_agg(json_build_object('id', bops_applications.bops_id, 'submittedAt', bops_applications.created_at, 'destinationUrl', bops_applications.destination_url) ORDER BY bops_applications.created_at DESC) AS bops_applications
+ FROM bops_applications
+ GROUP BY bops_applications.session_id
+ ), email_agg AS (
+ SELECT email_applications.session_id,
+ json_agg(json_build_object('id', email_applications.id, 'recipient', email_applications.recipient, 'submittedAt', email_applications.created_at) ORDER BY email_applications.created_at DESC) AS email_applications
+ FROM email_applications
+ GROUP BY email_applications.session_id
+ ), uniform_agg AS (
+ SELECT uniform_applications.submission_reference,
+ json_agg(json_build_object('id', uniform_applications.idox_submission_id, 'submittedAt', uniform_applications.created_at) ORDER BY uniform_applications.created_at DESC) AS uniform_applications
+ FROM uniform_applications
+ GROUP BY uniform_applications.submission_reference
+ ), payment_requests_agg AS (
+ SELECT payment_requests.session_id,
+ json_agg(json_build_object('id', payment_requests.id, 'createdAt', payment_requests.created_at, 'paidAt', payment_requests.paid_at, 'govpayPaymentId', payment_requests.govpay_payment_id) ORDER BY payment_requests.created_at DESC) AS payment_requests
+ FROM payment_requests
+ GROUP BY payment_requests.session_id
+ ), payment_status_agg AS (
+ SELECT payment_status.session_id,
+ json_agg(json_build_object('govpayPaymentId', payment_status.payment_id, 'createdAt', payment_status.created_at, 'status', payment_status.status) ORDER BY payment_status.created_at DESC) AS payment_status
+ FROM payment_status
+ GROUP BY payment_status.session_id
+ ), s3_agg AS (
+ SELECT s3_applications.session_id,
+ json_agg(json_build_object('id', s3_applications.id, 'submittedAt', s3_applications.created_at) ORDER BY s3_applications.created_at DESC) AS s3_applications
+ FROM s3_applications
+ GROUP BY s3_applications.session_id
+ )
+ SELECT (ls.id)::text AS session_id,
+ t.slug AS team_slug,
+ f.slug AS service_slug,
+ ls.created_at,
+ ls.submitted_at,
+ ((ls.submitted_at)::date - (ls.created_at)::date) AS session_length_days,
+ ls.has_user_saved AS user_clicked_save,
+ rps.number_times_resumed,
+ ls.allow_list_answers,
+ (ls.allow_list_answers -> 'proposal.projectType'::text) AS proposal_project_type,
+ (ls.allow_list_answers -> 'application.declaration.connection'::text) AS application_declaration_connection,
+ (ls.allow_list_answers -> 'property.type'::text) AS property_type,
+ (ls.allow_list_answers -> 'drawBoundary.action'::text) AS draw_boundary_action,
+ (ls.allow_list_answers -> 'user.role'::text) AS user_role,
+ (ls.allow_list_answers -> 'property.constraints.planning'::text) AS property_constraints_planning,
+ CASE
+ WHEN (((pr.payment_requests)::jsonb IS NOT NULL) AND (jsonb_array_length((pr.payment_requests)::jsonb) > 0)) THEN true
+ ELSE false
+ END AS user_invited_to_pay,
+ pr.payment_requests,
+ ps.payment_status,
+ CASE
+ WHEN (((ba.bops_applications)::jsonb IS NOT NULL) AND (jsonb_array_length((ba.bops_applications)::jsonb) > 0)) THEN true
+ ELSE false
+ END AS sent_to_bops,
+ ba.bops_applications,
+ CASE
+ WHEN (((ua.uniform_applications)::jsonb IS NOT NULL) AND (jsonb_array_length((ua.uniform_applications)::jsonb) > 0)) THEN true
+ ELSE false
+ END AS sent_to_uniform,
+ ua.uniform_applications,
+ CASE
+ WHEN (((ea.email_applications)::jsonb IS NOT NULL) AND (jsonb_array_length((ea.email_applications)::jsonb) > 0)) THEN true
+ ELSE false
+ END AS sent_to_email,
+ ea.email_applications,
+ (ls.allow_list_answers -> 'findProperty.action'::text) AS find_property_action,
+ CASE
+ WHEN (((sa.s3_applications)::jsonb IS NOT NULL) AND (jsonb_array_length((sa.s3_applications)::jsonb) > 0)) THEN true
+ ELSE false
+ END AS sent_to_s3_power_automate,
+ sa.s3_applications
+ FROM ((((((((lowcal_sessions ls
+ LEFT JOIN flows f ON ((f.id = ls.flow_id)))
+ LEFT JOIN teams t ON ((t.id = f.team_id)))
+ LEFT JOIN resumes_per_session rps ON ((rps.session_id = (ls.id)::text)))
+ LEFT JOIN payment_requests_agg pr ON ((pr.session_id = ls.id)))
+ LEFT JOIN payment_status_agg ps ON ((ps.session_id = ls.id)))
+ LEFT JOIN bops_agg ba ON ((ba.session_id = (ls.id)::text)))
+ LEFT JOIN uniform_agg ua ON ((ua.submission_reference = (ls.id)::text)))
+ LEFT JOIN email_agg ea ON ((ea.session_id = ls.id))
+ LEFT JOIN s3_agg sa ON ((sa.session_id = (ls.id)::text)))
+ WHERE ((f.slug IS NOT NULL) AND (t.slug IS NOT NULL));
diff --git a/hasura.planx.uk/migrations/1721047343459_update_blpu_codes_values/down.sql b/hasura.planx.uk/migrations/1721047343459_update_blpu_codes_values/down.sql
new file mode 100644
index 0000000000..5c21bef20b
--- /dev/null
+++ b/hasura.planx.uk/migrations/1721047343459_update_blpu_codes_values/down.sql
@@ -0,0 +1,468 @@
+TRUNCATE table "public"."blpu_codes";
+INSERT INTO "public"."blpu_codes" (code, description, value) VALUES
+ ('C','Commercial','commercial'),
+ ('CA','Agricultural','commercial.agriculture'),
+ ('CA01','Farm / Non-Residential Associated Building','commercial.agriculture.farm'),
+ ('CA02','Fishery','commercial.fish'),
+ ('CA02FF','Fish Farming','commercial.fish.farm'),
+ ('CA02FH','Fish Hatchery','commercial.fish.hatchery'),
+ ('CA02FP','Fish Processing','commercial.fish.processing'),
+ ('CA02OY','Oyster / Mussel Bed','commercial.fish.oysters'),
+ ('CA03','Horticulture','commercial.horticulture'),
+ ('CA03SH','Smallholding','commercial.horticulture.smallholding'),
+ ('CA03VY','Vineyard','commercial.horticulture.vineyard'),
+ ('CA03WB','Watercress Bed','commercial.horticulture.watercress'),
+ ('CA04','Slaughter House / Abattoir','commercial.abattoir'),
+ ('CB','Ancillary Building','commercial.ancilliary'),
+ ('CC','Community Services','commercial.community'),
+ ('CC02','Law Court','commercial.community.court'),
+ ('CC03','Prison','commercial.community.prison'),
+ ('CC03HD','HM Detention Centre','commercial.community.prison.detention'),
+ ('CC03PR','HM Prison Service','commercial.community.prison.service'),
+ ('CC03SC','Secure Residential Accommodation','commercial.community.prison.secureResidential'),
+ ('CC04','Public / Village Hall / Other Community Facility','commercial.community.hall'),
+ ('CC04YR','Youth Recreational / Social Club','commercial.community.hall.club'),
+ ('CC05','Public Convenience','commercial.community.wc'),
+ ('CC06','Cemetery / Crematorium / Graveyard. In Current Use.','commercial.community.cemetary'),
+ ('CC06CB','Columbarium','commercial.community.cemetary.columbarium'),
+ ('CC06CN','Crematorium','commercial.community.cemetary.crematorium'),
+ ('CC06CR','Chapel Of Rest','commercial.community.cemetary.chapelOfRest'),
+ ('CC06CY','Cemetery','commercial.community.cemetary.cemetary'),
+ ('CC06MC','Military Cemetery','commercial.community.cemetary.military'),
+ ('CC06MY','Mortuary','commercial.community.cemetary.mortuary'),
+ ('CC07','Church Hall / Religious Meeting Place / Hall','commercial.community.religious'),
+ ('CC08','Community Service Centre / Office','commercial.community.services'),
+ ('CC09','Public Household Waste Recycling Centre (HWRC)','commercial.community.HWRC'),
+ ('CC10','Recycling Site','commercial.community.recycling'),
+ ('CC11','CCTV','commercial.community.CCTV'),
+ ('CC12','Job Centre','commercial.community.employment'),
+ ('CE','Education','commercial.education'),
+ ('CE01','College','commercial.education.college'),
+ ('CE01FE','Further Education','commercial.education.college.further'),
+ ('CE01HE','Higher Education','commercial.education.college.higher'),
+ ('CE02','Children’s Nursery / Crèche','commercial.education.nursery'),
+ ('CE03','Preparatory / First / Primary / Infant / Junior / Middle School','commercial.education.school'),
+ ('CE03FS','First School','commercial.education.school.first'),
+ ('CE03IS','Infant School','commercial.education.school.infant'),
+ ('CE03JS','Junior School','commercial.education.school.junior'),
+ ('CE03MS','Middle School','commercial.education.school.middle'),
+ ('CE03NP','Non State Primary / Preparatory School','commercial.education.school.primary.private'),
+ ('CE03PS','Primary School','commercial.education.school.primary.state'),
+ ('CE04','Secondary / High School','commercial.education.secondarySchool'),
+ ('CE04NS','Non State Secondary School','commercial.education.secondarySchool.private'),
+ ('CE04SS','Secondary School','commercial.education.secondarySchool.state'),
+ ('CE05','University','commercial.education.university'),
+ ('CE06','Special Needs Establishment.','commercial.education.specialNeeds'),
+ ('CE07','Other Educational Establishment','commercial.education.other'),
+ ('CH','Hotel / Motel / Boarding / Guest House','commercial.guest'),
+ ('CH01','Boarding / Guest House / Bed And Breakfast / Youth Hostel','commercial.guest.hostel'),
+ ('CH01YH','Youth Hostel','commercial.guest.hostel.youth'),
+ ('CH02','Holiday Let/Accomodation/Short-Term Let Other Than CH01','commercial.guest.shortLet'),
+ ('CH03','Hotel/Motel','commercial.guest.hotel'),
+ ('CI','Industrial Applicable to manufacturing, engineering, maintenance, storage / wholesale distribution and extraction sites','commercial.industrial'),
+ ('CI01','Factory/Manufacturing','commercial.industrial.manufacturing'),
+ ('CI01AW','Aircraft Works','commercial.industrial.manufacturing.aircraft'),
+ ('CI01BB','Boat Building','commercial.industrial.manufacturing.boats'),
+ ('CI01BR','Brick Works','commercial.industrial.manufacturing.bricks'),
+ ('CI01BW','Brewery','commercial.industrial.manufacturing.beer'),
+ ('CI01CD','Cider Manufacture','commercial.industrial.manufacturing.cider'),
+ ('CI01CM','Chemical Works','commercial.industrial.manufacturing.chemicals'),
+ ('CI01CW','Cement Works','commercial.industrial.manufacturing.cement'),
+ ('CI01DA','Dairy Processing','commercial.industrial.manufacturing.dairy'),
+ ('CI01DY','Distillery','commercial.industrial.manufacturing.distillery'),
+ ('CI01FL','Flour Mill','commercial.industrial.manufacturing.flour'),
+ ('CI01FO','Food Processing','commercial.industrial.manufacturing.food'),
+ ('CI01GW','Glassworks','commercial.industrial.manufacturing.glass'),
+ ('CI01MG','Manufacturing','commercial.industrial.manufacturing.other'),
+ ('CI01OH','Oast House','commercial.industrial.manufacturing.hops'),
+ ('CI01OR','Oil Refining','commercial.industrial.manufacturing.oil'),
+ ('CI01PG','Pottery Manufacturing','commercial.industrial.manufacturing.pottery'),
+ ('CI01PM','Paper Mill','commercial.industrial.manufacturing.paper'),
+ ('CI01PW','Printing Works','commercial.industrial.manufacturing.printing'),
+ ('CI01SR','Sugar Refinery','commercial.industrial.manufacturing.sugar'),
+ ('CI01SW','Steel Works','commercial.industrial.manufacturing.steel'),
+ ('CI01TL','Timber Mill','commercial.industrial.manufacturing.timber'),
+ ('CI01WN','Winery','commercial.industrial.manufacturing.wine'),
+ ('CI01YD','Shipyard','commercial.industrial.manufacturing.ships'),
+ ('CI02','Mineral / Ore Working / Quarry / Mine','commercial.industrial.extraction'),
+ ('CI02MA','Mineral Mining / Active','commercial.industrial.extraction.mining'),
+ ('CI02MD','Mineral Distribution / Storage','commercial.industrial.extraction.distribution'),
+ ('CI02MP','Mineral Processing','commercial.industrial.extraction.processing'),
+ ('CI02OA','Oil / Gas Extraction / Active','commercial.industrial.extraction.oilGas'),
+ ('CI02QA','Mineral Quarrying / Open Extraction / Active','commercial.industrial.extraction.quarrying'),
+ ('CI03','Workshop / Light Industrial','commercial.industrial.light'),
+ ('CI03GA','Servicing Garage','commercial.industrial.light.garage'),
+ ('CI04','Warehouse / Store / Storage Depot','commercial.industrial.light.storage'),
+ ('CI04CS','Crop Handling / Storage','commercial.industrial.light.storage.crops'),
+ ('CI04PL','Postal Sorting / Distribution','commercial.industrial.light.storage.post'),
+ ('CI04SO','Solid Fuel Storage','commercial.industrial.light.storage.solidFuel'),
+ ('CI04TS','Timber Storage','commercial.industrial.light.storage.timber'),
+ ('CI05','Wholesale Distribution','commercial.industrial.distribution'),
+ ('CI05SF','Solid Fuel Distribution','commercial.industrial.distribution.solidFueld'),
+ ('CI05TD','Timber Distribution','commercial.industrial.distribution.timber'),
+ ('CI06','Recycling Plant','commercial.industrial.recycling'),
+ ('CI07','Incinerator / Waste Transfer Station','commercial.industrial.incineration'),
+ ('CI08','Maintenance Depot','commercial.industrial.maintenanceDepot'),
+ ('CL','Leisure - Applicable to recreational sites and enterprises','commercial.leisure'),
+ ('CL01','Amusements','commercial.leisure.amusements'),
+ ('CL01LP','Leisure Pier','commercial.leisure.amusements.pier'),
+ ('CL02','Holiday / Campsite','commercial.leisure.holiday'),
+ ('CL02CG','Camping','commercial.leisure.holiday.camping'),
+ ('CL02CV','Caravanning','commercial.leisure.holiday.caravanning'),
+ ('CL02HA','Holiday Accommodation','commercial.leisure.holiday.accommodation'),
+ ('CL02HO','Holiday Centre','commercial.leisure.holiday.centre'),
+ ('CL02YC','Youth Organisation Camp','commercial.leisure.holiday.youth'),
+ ('CL03','Library','commercial.leisure.library'),
+ ('CL03RR','Reading Room','commercial.leisure.library.readingRoom'),
+ ('CL04','Museum / Gallery','commercial.leisure.museum'),
+ ('CL04AC','Art Centre / Gallery','commercial.leisure.museum.art'),
+ ('CL04AM','Aviation Museum','commercial.leisure.museum.aviation'),
+ ('CL04HG','Heritage Centre','commercial.leisure.museum.heritage'),
+ ('CL04IM','Industrial Museum','commercial.leisure.museum.industrial'),
+ ('CL04MM','Military Museum','commercial.leisure.museum.military'),
+ ('CL04NM','Maritime Museum','commercial.leisure.museum.maritime'),
+ ('CL04SM','Science Museum','commercial.leisure.museum.science'),
+ ('CL04TM','Transport Museum','commercial.leisure.museum.transport'),
+ ('CL06','Indoor / Outdoor Leisure / Sporting Activity / Centre','commercial.leisure.sport'),
+ ('CL06AH','Athletics Facility','commercial.leisure.sport.athletics'),
+ ('CL06BF','Bowls Facility','commercial.leisure.sport.bowls'),
+ ('CL06CK','Cricket Facility','commercial.leisure.sport.cricket'),
+ ('CL06CU','Curling Facility','commercial.leisure.sport.curling'),
+ ('CL06DS','Diving / Swimming Facility','commercial.leisure.sport.swimming'),
+ ('CL06EQ','Equestrian Sports Facility','commercial.leisure.sport.equestrian'),
+ ('CL06FB','Football Facility','commercial.leisure.sport.football'),
+ ('CL06FI','Fishing / Angling Facility','commercial.leisure.sport.fishing'),
+ ('CL06GF','Golf Facility','commercial.leisure.sport.golf'),
+ ('CL06GL','Gliding Facility','commercial.leisure.sport.gliding'),
+ ('CL06GR','Greyhound Racing Facility','commercial.leisure.sport.dogracing'),
+ ('CL06HF','Hockey Facility','commercial.leisure.sport.hockey'),
+ ('CL06HR','Horse Racing Facility','commercial.leisure.sport.horseracing'),
+ ('CL06HV','Historic Vessel / Aircraft / Vehicle','commercial.leisure.sport.historicVehicles'),
+ ('CL06LS','Activity / Leisure / Sports Centre','commercial.leisure.sport.centre'),
+ ('CL06ME','Model Sports Facility','commercial.leisure.sport.model'),
+ ('CL06MF','Motor Sports Facility','commercial.leisure.sport.motor'),
+ ('CL06PF','Playing Field','commercial.leisure.sport.playingField'),
+ ('CL06QS','Racquet Sports Facility','commercial.leisure.sport.racquet'),
+ ('CL06RF','Rugby Facility','commercial.leisure.sport.rugby'),
+ ('CL06RG','Recreation Ground','commercial.leisure.sport.recreationGround'),
+ ('CL06SI','Shinty Facility','commercial.leisure.sport.shinty'),
+ ('CL06SK','Skateboarding Facility','commercial.leisure.sport.skateboarding'),
+ ('CL06SX','Civilian Firing Facility','commercial.leisure.sport.firing'),
+ ('CL06TB','Tenpin Bowling Facility','commercial.leisure.sport.tenpin'),
+ ('CL06TN','Public Tennis Court','commercial.leisure.sport.tennis'),
+ ('CL06WA','Water Sports Facility','commercial.leisure.sport.water'),
+ ('CL06WP','Winter Sports Facility','commercial.leisure.sport.winter'),
+ ('CL06WY','Wildlife Sports Facility','commercial.leisure.sport.wildlife'),
+ ('CL06YF','Cycling Sports Facility','commercial.leisure.sport.cycling'),
+ ('CL07','Bingo Hall / Cinema / Conference / Exhibition Centre / Theatre / Concert Hall','commercial.leisure.entertainment'),
+ ('CL07CI','Cinema','commercial.leisure.entertainment.cinema'),
+ ('CL07EN','Entertainment Complex','commercial.leisure.entertainment.mixed'),
+ ('CL07EX','Conference / Exhibition Centre','commercial.leisure.entertainment.exhibition'),
+ ('CL07TH','Theatre','commercial.leisure.entertainment.theatre'),
+ ('CL08','Zoo / Theme Park','commercial.leisure.park.zoo'),
+ ('CL08AK','Amusement Park','commercial.leisure.park.amusement'),
+ ('CL08AQ','Aquatic Attraction','commercial.leisure.park.aquatic'),
+ ('CL08MX','Model Village Site','commercial.leisure.park.model'),
+ ('CL08WZ','Wildlife / Zoological Park','commercial.leisure.park.wildlife'),
+ ('CL09','Beach Hut (Recreational, Non-Residential Use Only)','commercial.leisure.beachHut'),
+ ('CL10','Licensed Private Members’ Club','commercial.leisure.club.private'),
+ ('CL10RE','Recreational / Social Club','commercial.leisure.club.social'),
+ ('CL11','Arena / Stadium','commercial.leisure.arena'),
+ ('CL11SD','Stadium','commercial.leisure.arena.stadium'),
+ ('CL11SJ','Showground','commercial.leisure.arena.showground'),
+ ('CM','Medical','commercial.medical'),
+ ('CM01','Dentist','commercial.medical.dentist'),
+ ('CM02','General Practice Surgery / Clinic','commercial.medical.GP'),
+ ('CM02HC','Health Centre','commercial.medical.healthCentre'),
+ ('CM02HL','Health Care Services','commercial.medical.healthServices'),
+ ('CM03','Hospital / Hospice','commercial.medical.care'),
+ ('CM03HI','Care home/Hospice','commercial.medical.care.home'),
+ ('CM03HP','Hospital','commercial.medical.care.hospital'),
+ ('CM04','Medical / Testing / Research Laboratory','commercial.medical.lab'),
+ ('CM05','Professional Medical Service','commercial.medical.professional'),
+ ('CM05ZS','Assessment / Development Services','commercial.medical.assessment'),
+ ('CN','Animal Centre','commercial.animals'),
+ ('CN01','Cattery / Kennel','commercial.animals.kennelsCattery'),
+ ('CN02','Animal Services','commercial.animals.services'),
+ ('CN02AX','Animal Quarantining','commercial.animals.services.quarantine'),
+ ('CN03','Equestrian','commercial.animals.equestrian'),
+ ('CN03HB','Horse Racing / Breeding Stable','commercial.animals.equestrian.racing'),
+ ('CN03SB','Commercial Stabling / Riding','commercial.animals.equestrian.riding'),
+ ('CN04','Vet / Animal Medical Treatment','commercial.animals.vet'),
+ ('CN05','Animal / Bird / Marine Sanctuary','commercial.animals.sanctuary'),
+ ('CN05AN','Animal Sanctuary','commercial.animals.sanctuary.animals'),
+ ('CN05MR','Marine Sanctuary','commercial.animals.sanctuary.marine'),
+ ('CO','Office','commercial.office'),
+ ('CO01','Office / Work Studio','commercial.office.workspace'),
+ ('CO01EM','Embassy /, High Commission / Consulate','commercial.office.workspace.embassy'),
+ ('CO01FM','Film Studio','commercial.office.workspace.film'),
+ ('CO01GV','Central Government Service','commercial.office.workspace.gov.national'),
+ ('CO01LG','Local Government Service','commercial.office.workspace.gov.local'),
+ ('CO02','Broadcasting (TV / Radio)','commercial.office.broadcasting'),
+ ('CR','Retail','commercial.retail'),
+ ('CR01','Bank / Financial Service','commercial.retail.financial'),
+ ('CR02','Retail Service Agent','commercial.retail.services'),
+ ('CR02PO','Post Office','commercial.retail.post'),
+ ('CR04','Market (Indoor / Outdoor)','commercial.retail.market'),
+ ('CR04FK','Fish Market','commercial.retail.market.fish'),
+ ('CR04FV','Fruit / Vegetable Market','commercial.retail.market.fruit'),
+ ('CR04LV','Livestock Market','commercial.retail.market.livestock'),
+ ('CR05','Petrol Filling Station','commercial.retail.fuel'),
+ ('CR06','Public House / Bar / Nightclub','commercial.retail.drinking'),
+ ('CR07','Restaurant / Cafeteria','commercial.retail.restaurant'),
+ ('CR08','Shop / Showroom','commercial.retail.showroom'),
+ ('CR08 ','Shop','commercial.retail.shop'),
+ ('CR08GC','Garden Centre','commercial.retail.shop.gardenCentre'),
+ ('CR09','Other Licensed Premise / Vendor','commercial.retail.licensedPremises'),
+ ('CR10','Fast Food Outlet / Takeaway (Hot / Cold)','commercial.retail.takeaway'),
+ ('CR11','Automated Teller Machine (ATM)','commercial.retail.atm'),
+ ('CS','Storage Land','commercial.storageLand'),
+ ('CS01','General Storage Land','commercial.storageLand.general'),
+ ('CS02','Builders’ Yard','commercial.storageLand.building'),
+ ('CT','Transport','commercial.transport'),
+ ('CT01','Airfield / Airstrip / Airport / Air Transport Infrastructure Facility','commercial.transport.air'),
+ ('CT01AF','Airfield','commercial.transport.air.airfield'),
+ ('CT01AI','Air Transport Infrastructure Services','commercial.transport.air.infrastructure'),
+ ('CT01AP','Airport','commercial.transport.air.airport'),
+ ('CT01AY','Air Passenger Terminal','commercial.transport.air.passengerTerminal'),
+ ('CT01HS','Helicopter Station','commercial.transport.air.helicopterStation'),
+ ('CT01HT','Heliport / Helipad','commercial.transport.air.heliport'),
+ ('CT02','Bus Shelter','commercial.transport.bus'),
+ ('CT03','Car / Coach / Commercial Vehicle / Taxi Parking / Park And Ride Site','commercial.transport.parking'),
+ ('CT03PK','Public Park And Ride','commercial.transport.parking.parkAndRide'),
+ ('CT03PP','Public Car Parking','commercial.transport.parking.car'),
+ ('CT03PU','Public Coach Parking','commercial.transport.parking.coach'),
+ ('CT03VP','Public Commercial Vehicle Parking','commercial.transport.parking.commercialVehicle'),
+ ('CT04','Goods Freight Handling / Terminal','commercial.transport.freight'),
+ ('CT04AE','Air Freight Terminal','commercial.transport.freight.air'),
+ ('CT04CF','Container Freight','commercial.transport.freight.container'),
+ ('CT04RH','Road Freight Transport','commercial.transport.freight.road'),
+ ('CT04RT','Rail Freight Transport','commercial.transport.freight.rail'),
+ ('CT05','Marina','commercial.transport.marina'),
+ ('CT06','Mooring','commercial.transport.mooring'),
+ ('CT07','Railway Asset','commercial.transport.railAsset'),
+ ('CT08','Station / Interchange / Terminal / Halt','commercial.transport.terminal'),
+ ('CT08BC','Bus station','commercial.transport.terminal.bus'),
+ ('CT08RS','Train station','commercial.transport.terminal.train'),
+ ('CT08VH','Vehicular Rail Terminal','commercial.transport.terminal.vehicularRail'),
+ ('CT09','Transport Track / Way','commercial.transport.track'),
+ ('CT09CL','Cliff Railway','commercial.transport.track.cliff'),
+ ('CT09CX','Chair Lift / Cable Car / Ski Tow','commercial.transport.track.cable'),
+ ('CT09MO','Monorail','commercial.transport.track.monorail'),
+ ('CT10','Vehicle Storage','commercial.transport.storage'),
+ ('CT10BG','Boat Storage','commercial.transport.storage.boat'),
+ ('CT10BU','Bus / Coach Depot','commercial.transport.storage.bus'),
+ ('CT11','Transport Related Infrastructure','commercial.transport.infrastructure'),
+ ('CT11AD','Aqueduct','commercial.transport.infrastructure.aqueduct'),
+ ('CT11LK','Lock','commercial.transport.infrastructure.lock'),
+ ('CT11WE','Weir','commercial.transport.infrastructure.weir'),
+ ('CT11WG','Weighbridge / Load Gauge','commercial.transport.infrastructure.weighing'),
+ ('CT12','Overnight Lorry Park','commercial.transport.overnightLorryPark'),
+ ('CT13','Harbour / Port / Dock / Dockyard / Slipway / Landing Stage / Pier / Jetty / Pontoon / Terminal / Berthing / Quay','commercial.transport.dock'),
+ ('CT13FR','Passenger Ferry Terminal','commercial.transport.dock.ferry.passengers'),
+ ('CT13NB','Non-Tanker Nautical Berthing','commercial.transport.dock.generalBerth'),
+ ('CT13NF','Nautical Refuelling Facility','commercial.transport.dock.refuelling'),
+ ('CT13SA','Slipway','commercial.transport.dock.slipway'),
+ ('CT13SP','Ship Passenger Terminal','commercial.transport.dock.passenger'),
+ ('CT13TK','Tanker Berthing','commercial.transport.dock.tankerBerth'),
+ ('CT13VF','Vehicular Ferry Terminal','commercial.transport.dock.ferry.vehicles'),
+ ('CU','Utility','commercial.utility'),
+ ('CU01','Electricity Sub-Station','commercial.utility.SubStation'),
+ ('CU02','Landfill','commercial.utility.landfill'),
+ ('CU03','Power Station / Energy Production','commercial.utility.electricity'),
+ ('CU03ED','Electricity Distribution Facility','commercial.utility.electricity.distribution'),
+ ('CU03EP','Electricity Production Facility','commercial.utility.electricity.production'),
+ ('CU03WF','Wind Farm','commercial.utility.electricity.windFarm'),
+ ('CU03WU','Wind Turbine','commercial.utility.electricity.windTurbine'),
+ ('CU04','Pump House / Pumping Station / Water Tower','commercial.utility.water'),
+ ('CU04WC','Water Controlling / Pumping','commercial.utility.water.pump.control'),
+ ('CU04WD','Water Distribution / Pumping','commercial.utility.water.pump.distribution'),
+ ('CU04WM','Water Quality Monitoring','commercial.utility.water.qualityMonitoring'),
+ ('CU04WS','Water Storage','commercial.utility.water.storage'),
+ ('CU04WW','Waste Water Distribution / Pumping','commercial.utility.water.waste'),
+ ('CU06','Telecommunication','commercial.utility.telecoms'),
+ ('CU06TE','Telecommunications Mast','commercial.utility.telecoms.mast'),
+ ('CU06TX','Telephone Exchange','commercial.utility.telecoms.exhange'),
+ ('CU07','Water / Waste Water / Sewage Treatment Works','commercial.utility.waterTreatment'),
+ ('CU07WR','Waste Water Treatment','commercial.utility.waterTreatment.waste'),
+ ('CU07WT','Water Treatment','commercial.utility.waterTreatment.water'),
+ ('CU08','Gas / Oil Storage / Distribution','commercial.utility.oilGas'),
+ ('CU08GG','Gas Governor','commercial.utility.oilGas.gasGovernor'),
+ ('CU08GH','Gas Holder','commercial.utility.oilGas.gasHolder'),
+ ('CU08OT','Oil Terminal','commercial.utility.oilGas.oilTerminal'),
+ ('CU09','Other Utility Use','commercial.utility.other'),
+ ('CU09CQ','Cable Terminal Station','commercial.utility.other.cableTerminal'),
+ ('CU09OV','Observatory','commercial.utility.other.observatory'),
+ ('CU09RA','Radar Station','commercial.utility.other.radar'),
+ ('CU09SE','Satellite Earth Station','commercial.utility.other.satelliteEarth'),
+ ('CU10','Waste Management','commercial.utility.wasteManagement'),
+ ('CU11','Telephone Box','commercial.utility.publicPhone.box'),
+ ('CU11OP','Other Public Telephones','commercial.utility.publicPhone.other'),
+ ('CU12','Dam','commercial.utility.dam'),
+ ('CX','Emergency / Rescue Service','commercial.emergency'),
+ ('OA02NL','Nautical Navigation Beacon / Light','other.navigation.nautical.beacon'),
+ ('OA03','Aid To Road Navigation','other.navigation.road'),
+ ('OA03GP','Guide Post','other.navigation.guidePost'),
+ ('OC','Coastal Protection / Flood Prevention','other.coastal'),
+ ('OC01','Boulder Wall / Sea Wall','other.coastal.wall'),
+ ('OC02','Flood Gate / Flood Sluice Gate / Flood Valve','other.coastal.floodGate'),
+ ('OC03','Groyne','other.coastal.groyne'),
+ ('OC04','Rip-Rap','other.coastal.ripRap'),
+ ('OE','Emergency Support','other.emergency'),
+ ('OE01','Beach Office / First Aid Facility','other.emergency.firstAid'),
+ ('OE02','Emergency Telephone (Non Motorway)','other.emergency.telephone'),
+ ('OE03','Fire Alarm Structure / Fire Observation Tower / Fire Beater Facility','other.emergency.fire'),
+ ('OE04','Emergency Equipment Point / Emergency Siren / Warning Flag','other.emergency.warning'),
+ ('OE05','Lifeguard Facility','other.emergency.lifeguard'),
+ ('OE06','LIfe / Belt / Buoy / Float / Jacket / Safety Rope','other.emergency.floatAids'),
+ ('OF','Street Furniture','other.streetFurniture'),
+ ('OG','Agricultural Support Objects','other.agriculture'),
+ ('OG01','Fish Ladder / Lock / Pen / Trap','other.agriculture.fishPen'),
+ ('OG02','Livestock Pen / Dip','other.agriculture.livestockPen'),
+ ('OG03','Currick','other.agriculture.currick'),
+ ('OG04','Slurry Bed / Pit','other.agriculture.slurry'),
+ ('OH','Historical Site / Object','other.historic'),
+ ('OH01','Historic Structure / Object','other.historic.structure'),
+ ('OI','Industrial Support','other.industrial'),
+ ('OI01','Adit / Incline / Level','other.industrial.aditIncline'),
+ ('OI02','Caisson / Dry Dock / Grid','other.industrial.caissonDock'),
+ ('OI03','Channel / Conveyor / Conduit / Pipe','other.industrial.channel'),
+ ('OI04','Chimney / Flue','other.industrial.chimney'),
+ ('OI05','Crane / Hoist / Winch / Material Elevator','other.industrial.crane'),
+ ('OI06','Flare Stack','other.industrial.flareStack'),
+ ('OI07','Hopper / Silo / Cistern / Tank','other.industrial.siloTank'),
+ ('OI08','Grab / Skip / Other Industrial Waste Machinery / Discharging','other.industrial.discharge'),
+ ('OI09','Kiln / Oven / Smelter','other.industrial.kiln'),
+ ('OI10','Manhole / Shaft','other.industrial.manholeShaft'),
+ ('OI11','Industrial Overflow / Sluice / Valve / Valve Housing','other.industrial.overflowSluiceValve'),
+ ('OI12','Cooling Tower','other.industrial.coolingTower'),
+ ('OI13','Solar Panel / Waterwheel','other.industrial.solarPanel'),
+ ('OI14','Telephone Pole / Post','other.industrial.pylon.telecom'),
+ ('OI15','Electricity Distribution Pole / Pylon','other.industrial.pylon.electricity'),
+ ('ON','Significant Natural Object','other.natural'),
+ ('ON01','Boundary / Significant / Historic Tree / Pollard','other.natural.tree'),
+ ('ON02','Boundary / Significant Rock / Boulder','other.natural.rock'),
+ ('ON03','Natural Hole (Blow / Shake / Swallow)','other.natural.hole'),
+ ('OO','Ornamental / Cultural Object','other.ornamental'),
+ ('OO02','Mausoleum / Tomb / Grave','other.ornamental.tomb'),
+ ('OO03','Simple Ornamental Object','other.ornamental.object'),
+ ('OO04','Maze','other.ornamental.maze'),
+ ('OP','Sport / Leisure Support','other.leisure'),
+ ('OP01','Butt / Hide','other.leisure.hide'),
+ ('OP02','Gallop / Ride','other.leisure.gallop'),
+ ('OP03','Miniature Railway','other.leisure.modelRailway'),
+ ('OR','Royal Mail Infrastructure','other.mail'),
+ ('OR01','Postal Box','other.mail.postBox'),
+ ('OR02','Postal Delivery Box / Pouch','other.mail.deliveryBox'),
+ ('OR03','PO Box','other.mail.POBox'),
+ ('OR04','Additional Mail / Packet Addressee','other.mail.additionalAddressee'),
+ ('OS','Scientific / Observation Support','other.scientific'),
+ ('OS01','Meteorological Station / Equipment','other.scientific.meteo'),
+ ('OS02','Radar / Satellite Infrastructure','other.scientific.radarSatellite'),
+ ('OS03','Telescope / Observation Infrastructure / Astronomy','other.scientific.astronomy'),
+ ('OT','Transport Support','other.transport'),
+ ('OT01','Cattle Grid / Ford','other.transport.cattleGridFord'),
+ ('OT02','Elevator / Escalator / Steps','other.transport.stepsLiftEscalator'),
+ ('OT03','Footbridge / Walkway','other.transport.bridge'),
+ ('OT04','Pole / Post / Bollard (Restricting Vehicular Access)','other.transport.post'),
+ ('OT05','Subway / Underpass','other.transport.subway'),
+ ('OT06','Customs Inspection Facility','other.transport.customs'),
+ ('OT07','Lay-By','other.transport.layby'),
+ ('OT08','Level Crossing','other.transport.rail.crossing.vehicles'),
+ ('OT09','Mail Pick Up','other.transport.mailPickUp'),
+ ('OT10','Railway Pedestrian Crossing','other.transport.rail.crossing.pedestrian'),
+ ('OT11','Railway Buffer','other.transport.rail.buffer'),
+ ('OT12','Rail Drag','other.transport.rail.drag'),
+ ('OT13','Rail Infrastructure Services','other.transport.rail.infrastructure'),
+ ('OT14','Rail Kilometre Distance Marker','other.transport.rail.marker.km'),
+ ('OT15','Railway Lighting','other.transport.rail.lighting'),
+ ('OT16','Rail Mile Distance Marker','other.transport.rail.market.mile'),
+ ('OT17','Railway Turntable','other.transport.rail.turntable'),
+ ('OT18','Rail Weighbridge','other.transport.rail.weighbridge'),
+ ('OT19','Rail Signalling','other.transport.rail.signals'),
+ ('OT20','Railway Traverse','other.transport.rail.traverse'),
+ ('OT21','Goods Tramway','other.transport.goodsTramway'),
+ ('OT22','Road Drag','other.transport.road.drag'),
+ ('OT23','Vehicle Dip','other.transport.road.vehicleDip'),
+ ('OT24','Road Turntable','other.transport.road.turntable'),
+ ('OT25','Road Mile Distance Marker','other.transport.road.marker.mile'),
+ ('OT26','Road Kilometre Distance Marker','other.transport.road.market.km'),
+ ('OT27','Road Infrastructure Services','other.transport.road.infrastructure'),
+ ('OU','Unsupported Site','other.unsupported'),
+ ('OU01','Cycle Parking Facility','other.unsupported.cycleParking'),
+ ('OU04','Picnic / Barbeque Site','other.unsupported.picnic'),
+ ('OU05','Travelling Persons Site','other.unsupported.travellingPersons'),
+ ('OU08','Shelter (Not Including Bus Shelter)','other.unsupported.shelter'),
+ ('PS','Street Record','parent.street'),
+ ('R','Residential','residential'),
+ ('RB','Ancillary Building','residential.building'),
+ ('RC','Car Park Space','residential.carParkingSpace'),
+ ('RC01','Allocated Parking','residential.carParkingSpace.allocated'),
+ ('RD','Residential dwelling','residential.dwelling'),
+ ('RD01','Caravan','residential.dwelling.caravan'),
+ ('RD02','Detached','residential.dwelling.house.detached'),
+ ('RD03','Semi-detached','residential.dwelling.house.semiDetached'),
+ ('RD04','Terrace','residential.dwelling.house.terrace'),
+ ('RD06','Flat','residential.dwelling.flat'),
+ ('RD07','House Boat','residential.dwelling.boat'),
+ ('RD08','Sheltered Accommodation','residential.dwelling.shelteredAccommodation'),
+ ('RD10','Privately Owned Holiday Caravan / Chalet','residential.dwelling.holiday'),
+ ('RG','Garage','residential.garage'),
+ ('RG02','Lock-Up Garage / Garage Court','residential.garage'),
+ ('RH','House In Multiple Occupation','residential.HMO'),
+ ('RH01','HMO Parent','residential.HMO.parent'),
+ ('RH02','HMO Bedsit / Other Non Self Contained Accommodation','residential.HMO.bedsit'),
+ ('RH03','HMO Not Further Divided','residential.HMO.undivided'),
+ ('RI','Residential Institution','residential.institution'),
+ ('RI01','Care / Nursing Home','residential.institution.care'),
+ ('RI02','Communal Residence','residential.institution.communal'),
+ ('RI02NC','Non-Commercial Lodgings','residential.institution.noncommercial'),
+ ('RI02RC','Religious Community','residential.institution.religious'),
+ ('RI03','Residential Education','residential.institution.education'),
+ ('U','Unclassified','unclassified'),
+ ('UC','Awaiting Classification','unclassified.awaitingclassification'),
+ ('UP','Pending Internal Investigation','unclassified.pendingInvestigation'),
+ ('X','Dual Use','dualUse'),
+ ('Z','Object of Interest','object'),
+ ('ZA','Archaeological Dig Site','object.archaeological'),
+ ('ZM','Monument','object.monument'),
+ ('ZM01','Obelisk / Milestone / Standing Stone','object.monument.vertical'),
+ ('ZM01OB','Obelisk','object.monument.vertical.obelisk'),
+ ('ZM01ST','Standing Stone','object.monument.vertical.standingStone'),
+ ('ZM02','Memorial / Market Cross','object.monument.memorial'),
+ ('ZM03','Statue','object.monument.statue'),
+ ('ZM04','Castle / Historic Ruin','object.monument.ruin'),
+ ('ZM05','Other Structure','object.monument.other'),
+ ('ZM05BS','Boundary Stone','object.monument.other.boundaryStone'),
+ ('ZM05CE','Cascade / Fountain','object.monument.other.waterFeature'),
+ ('ZM05PN','Permanent Art Display / Sculpture','object.monument.other.art'),
+ ('ZM05WI','Windmill (Inactive)','object.monument.other.windmill'),
+ ('ZS','Stately Home','object.statelyHome'),
+ ('ZU','Underground Feature','object.underground'),
+ ('ZU01','Cave','object.underground.cave'),
+ ('ZU04','Pothole / Natural Hole','object.underground.hole'),
+ ('ZV','Other Underground Feature','object.underground.other'),
+ ('ZV01','Cellar','object.underground.other.cellar'),
+ ('ZV02','Disused Mine','object.underground.other.extraction'),
+ ('ZV02MI','Mineral Mining / Inactive','object.underground.other.extraction.mine'),
+ ('ZV02OI','Oil And / Gas Extraction/ Inactive','object.underground.other.extraction.oilGas'),
+ ('ZV02QI','Mineral Quarrying And / Open Extraction / Inactive','object.underground.other.extraction.quarry'),
+ ('ZV03','Well / Spring','object.underground.other.water'),
+ ('ZV03SG','Spring','object.underground.other.water.spring'),
+ ('ZV03WL','Well','object.underground.other.water.well'),
+ ('ZW','Place Of Worship','object.religious'),
+ ('ZW99','Religious building','object.religious.building'),
+ ('ZW99AB','Abbey','object.religious.building.abbey'),
+ ('ZW99CA','Cathedral','object.religious.building.cathedral'),
+ ('ZW99CH','Church','object.religious.building.church'),
+ ('ZW99CP','Chapel','object.religious.building.chapel'),
+ ('ZW99GU','Gurdwara','object.religious.building.gurdwara'),
+ ('ZW99KH','Kingdom Hall','object.religious.building.kingdomHall'),
+ ('ZW99LG','Lych Gate','object.religious.building.lychGate'),
+ ('ZW99MQ','Mosque','object.religious.building.mosque'),
+ ('ZW99MT','Minster','object.religious.building.minster'),
+ ('ZW99SU','Stupa','object.religious.building.stupa'),
+ ('ZW99SY','Synagogue','object.religious.building.synagogue'),
+ ('ZW99TP','Temple','object.religious.building.temple'),
+ ('P','Parent Shell',null),
+ ('PP','Property Shell',null);
diff --git a/hasura.planx.uk/migrations/1721047343459_update_blpu_codes_values/up.sql b/hasura.planx.uk/migrations/1721047343459_update_blpu_codes_values/up.sql
new file mode 100644
index 0000000000..374641a390
--- /dev/null
+++ b/hasura.planx.uk/migrations/1721047343459_update_blpu_codes_values/up.sql
@@ -0,0 +1,468 @@
+TRUNCATE table "public"."blpu_codes";
+INSERT INTO "public"."blpu_codes" (code, description, value) VALUES
+ ('C','Commercial','commercial'),
+ ('CA','Agricultural','commercial.agriculture'),
+ ('CA01','Farm / Non-Residential Agricultural Development','commercial.agriculture.farm'),
+ ('CA02','Fishery','commercial.agriculture.fish'),
+ ('CA02FF','Fish Farming','commercial.agriculture.fish.farm'),
+ ('CA02FH','Fish Hatchery','commercial.agriculture.fish.hatchery'),
+ ('CA02FP','Fish Processing','commercial.agriculture.fish.processing'),
+ ('CA02OY','Oyster / Mussel Bed','commercial.agriculture.fish.oysters'),
+ ('CA03','Horticulture','commercial.horticulture'),
+ ('CA03SH','Smallholding','commercial.horticulture.smallholding'),
+ ('CA03VY','Vineyard','commercial.horticulture.vineyard'),
+ ('CA03WB','Watercress Bed','commercial.horticulture.watercress'),
+ ('CA04','Slaughter House / Abattoir','commercial.abattoir'),
+ ('CB','Commercial Ancillary Development','commercial.ancilliary'),
+ ('CC','Community Services','commercial.community'),
+ ('CC02','Law Court','commercial.community.court'),
+ ('CC03','Prison','commercial.community.prison'),
+ ('CC03HD','HM Detention Centre','commercial.community.prison.detention'),
+ ('CC03PR','HM Prison Service','commercial.community.prison.service'),
+ ('CC03SC','Secure Residential Accommodation','commercial.community.prison.secureResidential'),
+ ('CC04','Public / Village Hall / Other Community Facility','commercial.community.hall'),
+ ('CC04YR','Youth Recreational / Social Club','commercial.community.hall.club'),
+ ('CC05','Public Convenience','commercial.community.wc'),
+ ('CC06','Cemetery / Crematorium / Graveyard. In Current Use.','commercial.community.cemetary'),
+ ('CC06CB','Columbarium','commercial.community.cemetary.columbarium'),
+ ('CC06CN','Crematorium','commercial.community.cemetary.crematorium'),
+ ('CC06CR','Chapel Of Rest','commercial.community.cemetary.chapelOfRest'),
+ ('CC06CY','Cemetery','commercial.community.cemetary.cemetary'),
+ ('CC06MC','Military Cemetery','commercial.community.cemetary.military'),
+ ('CC06MY','Mortuary','commercial.community.cemetary.mortuary'),
+ ('CC07','Church Hall / Religious Meeting Place / Religious Hall','commercial.community.religious'),
+ ('CC08','Community Service Centre / Office','commercial.community.services'),
+ ('CC09','Public Household Waste Recycling Centre (HWRC)','commercial.community.HWRC'),
+ ('CC10','Recycling Site','commercial.community.recycling'),
+ ('CC11','CCTV','commercial.community.CCTV'),
+ ('CC12','Job Centre','commercial.community.employment'),
+ ('CE','Education','commercial.education'),
+ ('CE01','College','commercial.education.college'),
+ ('CE01FE','Further Education','commercial.education.college.further'),
+ ('CE01HE','Higher Education','commercial.education.college.higher'),
+ ('CE02','Children’s Nursery / Crèche','commercial.education.nursery'),
+ ('CE03','Preparatory / First / Primary / Infant / Junior / Middle School','commercial.education.school'),
+ ('CE03FS','First School','commercial.education.school.first'),
+ ('CE03IS','Infant School','commercial.education.school.infant'),
+ ('CE03JS','Junior School','commercial.education.school.junior'),
+ ('CE03MS','Middle School','commercial.education.school.middle'),
+ ('CE03NP','Non State Primary / Preparatory School','commercial.education.school.primary.private'),
+ ('CE03PS','Primary School','commercial.education.school.primary.state'),
+ ('CE04','Secondary / High School','commercial.education.secondarySchool'),
+ ('CE04NS','Non State Secondary School','commercial.education.secondarySchool.private'),
+ ('CE04SS','Secondary School','commercial.education.secondarySchool.state'),
+ ('CE05','University','commercial.education.university'),
+ ('CE06','Special Needs Establishment.','commercial.education.specialNeeds'),
+ ('CE07','Other Educational Establishment','commercial.education.other'),
+ ('CH','Hotel / Motel / Boarding / Guest House','commercial.guest'),
+ ('CH01','Boarding House / Guest House / Bed And Breakfast / Youth Hostel','commercial.guest.hostel'),
+ ('CH01YH','Youth Hostel','commercial.guest.hostel.youth'),
+ ('CH02','Holiday Let / Accomodation / Short-Term Let','commercial.guest.shortLet'),
+ ('CH03','Hotel / Motel','commercial.guest.hotel'),
+ ('CI','Industrial Applicable to manufacturing, engineering, maintenance, storage / wholesale distribution and extraction sites','commercial.industrial'),
+ ('CI01','Factory/Manufacturing','commercial.industrial.manufacturing'),
+ ('CI01AW','Aircraft Works','commercial.industrial.manufacturing.aircraft'),
+ ('CI01BB','Boat Building','commercial.industrial.manufacturing.boats'),
+ ('CI01BR','Brick Works','commercial.industrial.manufacturing.bricks'),
+ ('CI01BW','Brewery','commercial.industrial.manufacturing.beer'),
+ ('CI01CD','Cider Manufacture','commercial.industrial.manufacturing.cider'),
+ ('CI01CM','Chemical Works','commercial.industrial.manufacturing.chemicals'),
+ ('CI01CW','Cement Works','commercial.industrial.manufacturing.cement'),
+ ('CI01DA','Dairy Processing','commercial.industrial.manufacturing.dairy'),
+ ('CI01DY','Distillery','commercial.industrial.manufacturing.distillery'),
+ ('CI01FL','Flour Mill','commercial.industrial.manufacturing.flour'),
+ ('CI01FO','Food Processing','commercial.industrial.manufacturing.food'),
+ ('CI01GW','Glassworks','commercial.industrial.manufacturing.glass'),
+ ('CI01MG','Manufacturing','commercial.industrial.manufacturing.other'),
+ ('CI01OH','Oast House','commercial.industrial.manufacturing.hops'),
+ ('CI01OR','Oil Refining','commercial.industrial.manufacturing.oil'),
+ ('CI01PG','Pottery Manufacturing','commercial.industrial.manufacturing.pottery'),
+ ('CI01PM','Paper Mill','commercial.industrial.manufacturing.paper'),
+ ('CI01PW','Printing Works','commercial.industrial.manufacturing.printing'),
+ ('CI01SR','Sugar Refinery','commercial.industrial.manufacturing.sugar'),
+ ('CI01SW','Steel Works','commercial.industrial.manufacturing.steel'),
+ ('CI01TL','Timber Mill','commercial.industrial.manufacturing.timber'),
+ ('CI01WN','Winery','commercial.industrial.manufacturing.wine'),
+ ('CI01YD','Shipyard','commercial.industrial.manufacturing.ships'),
+ ('CI02','Mineral / Ore Working / Quarry / Mine','commercial.industrial.extraction'),
+ ('CI02MA','Mineral Mining / Active','commercial.industrial.extraction.mining'),
+ ('CI02MD','Mineral Distribution / Storage','commercial.industrial.extraction.distribution'),
+ ('CI02MP','Mineral Processing','commercial.industrial.extraction.processing'),
+ ('CI02OA','Oil / Gas Extraction / Active','commercial.industrial.extraction.oilGas'),
+ ('CI02QA','Mineral Quarrying / Open Extraction / Active','commercial.industrial.extraction.quarrying'),
+ ('CI03','Workshop / Light Industrial','commercial.industrial.light'),
+ ('CI03GA','Servicing Garage','commercial.industrial.light.garage'),
+ ('CI04','Warehouse / Store / Storage Depot','commercial.industrial.light.storage'),
+ ('CI04CS','Crop Handling / Storage','commercial.industrial.light.storage.crops'),
+ ('CI04PL','Postal Sorting / Distribution','commercial.industrial.light.storage.post'),
+ ('CI04SO','Solid Fuel Storage','commercial.industrial.light.storage.solidFuel'),
+ ('CI04TS','Timber Storage','commercial.industrial.light.storage.timber'),
+ ('CI05','Wholesale Distribution','commercial.industrial.distribution'),
+ ('CI05SF','Solid Fuel Distribution','commercial.industrial.distribution.solidFueld'),
+ ('CI05TD','Timber Distribution','commercial.industrial.distribution.timber'),
+ ('CI06','Recycling Plant','commercial.industrial.recycling'),
+ ('CI07','Incinerator / Waste Transfer Station','commercial.industrial.incineration'),
+ ('CI08','Maintenance Depot','commercial.industrial.maintenanceDepot'),
+ ('CL','Leisure - Applicable to recreational sites and enterprises','commercial.leisure'),
+ ('CL01','Amusements','commercial.leisure.amusements'),
+ ('CL01LP','Leisure Pier','commercial.leisure.amusements.pier'),
+ ('CL02','Holiday / Campsite','commercial.leisure.holiday'),
+ ('CL02CG','Camping','commercial.leisure.holiday.camping'),
+ ('CL02CV','Caravanning','commercial.leisure.holiday.caravanning'),
+ ('CL02HA','Holiday Accommodation','commercial.leisure.holiday.accommodation'),
+ ('CL02HO','Holiday Centre','commercial.leisure.holiday.centre'),
+ ('CL02YC','Youth Organisation Camp','commercial.leisure.holiday.youth'),
+ ('CL03','Library','commercial.leisure.library'),
+ ('CL03RR','Reading Room','commercial.leisure.library.readingRoom'),
+ ('CL04','Museum / Gallery','commercial.leisure.museum'),
+ ('CL04AC','Art Centre / Gallery','commercial.leisure.museum.art'),
+ ('CL04AM','Aviation Museum','commercial.leisure.museum.aviation'),
+ ('CL04HG','Heritage Centre','commercial.leisure.museum.heritage'),
+ ('CL04IM','Industrial Museum','commercial.leisure.museum.industrial'),
+ ('CL04MM','Military Museum','commercial.leisure.museum.military'),
+ ('CL04NM','Maritime Museum','commercial.leisure.museum.maritime'),
+ ('CL04SM','Science Museum','commercial.leisure.museum.science'),
+ ('CL04TM','Transport Museum','commercial.leisure.museum.transport'),
+ ('CL06','Indoor / Outdoor Leisure / Sporting Activity / Centre','commercial.leisure.sport'),
+ ('CL06AH','Athletics Facility','commercial.leisure.sport.athletics'),
+ ('CL06BF','Bowls Facility','commercial.leisure.sport.bowls'),
+ ('CL06CK','Cricket Facility','commercial.leisure.sport.cricket'),
+ ('CL06CU','Curling Facility','commercial.leisure.sport.curling'),
+ ('CL06DS','Diving / Swimming Facility','commercial.leisure.sport.swimming'),
+ ('CL06EQ','Equestrian Sports Facility','commercial.leisure.sport.equestrian'),
+ ('CL06FB','Football Facility','commercial.leisure.sport.football'),
+ ('CL06FI','Fishing / Angling Facility','commercial.leisure.sport.fishing'),
+ ('CL06GF','Golf Facility','commercial.leisure.sport.golf'),
+ ('CL06GL','Gliding Facility','commercial.leisure.sport.gliding'),
+ ('CL06GR','Greyhound Racing Facility','commercial.leisure.sport.dogracing'),
+ ('CL06HF','Hockey Facility','commercial.leisure.sport.hockey'),
+ ('CL06HR','Horse Racing Facility','commercial.leisure.sport.horseracing'),
+ ('CL06HV','Historic Vessel / Aircraft / Vehicle','commercial.leisure.sport.historicVehicles'),
+ ('CL06LS','Activity / Leisure / Sports Centre','commercial.leisure.sport.centre'),
+ ('CL06ME','Model Sports Facility','commercial.leisure.sport.model'),
+ ('CL06MF','Motor Sports Facility','commercial.leisure.sport.motor'),
+ ('CL06PF','Playing Field','commercial.leisure.sport.playingField'),
+ ('CL06QS','Racquet Sports Facility','commercial.leisure.sport.racquet'),
+ ('CL06RF','Rugby Facility','commercial.leisure.sport.rugby'),
+ ('CL06RG','Recreation Ground','commercial.leisure.sport.recreationGround'),
+ ('CL06SI','Shinty Facility','commercial.leisure.sport.shinty'),
+ ('CL06SK','Skateboarding Facility','commercial.leisure.sport.skateboarding'),
+ ('CL06SX','Civilian Firing Facility','commercial.leisure.sport.firing'),
+ ('CL06TB','Tenpin Bowling Facility','commercial.leisure.sport.tenpin'),
+ ('CL06TN','Public Tennis Court','commercial.leisure.sport.tennis'),
+ ('CL06WA','Water Sports Facility','commercial.leisure.sport.water'),
+ ('CL06WP','Winter Sports Facility','commercial.leisure.sport.winter'),
+ ('CL06WY','Wildlife Sports Facility','commercial.leisure.sport.wildlife'),
+ ('CL06YF','Cycling Sports Facility','commercial.leisure.sport.cycling'),
+ ('CL07','Bingo Hall / Cinema / Conference / Exhibition Centre / Theatre / Concert Hall','commercial.leisure.entertainment'),
+ ('CL07CI','Cinema','commercial.leisure.entertainment.cinema'),
+ ('CL07EN','Entertainment Complex','commercial.leisure.entertainment.mixed'),
+ ('CL07EX','Conference / Exhibition Centre','commercial.leisure.entertainment.exhibition'),
+ ('CL07TH','Theatre','commercial.leisure.entertainment.theatre'),
+ ('CL08','Zoo / Theme Park','commercial.leisure.park.zoo'),
+ ('CL08AK','Amusement Park','commercial.leisure.park.amusement'),
+ ('CL08AQ','Aquatic Attraction','commercial.leisure.park.aquatic'),
+ ('CL08MX','Model Village Site','commercial.leisure.park.model'),
+ ('CL08WZ','Wildlife / Zoological Park','commercial.leisure.park.wildlife'),
+ ('CL09','Beach Hut (Recreational, Non-Residential Use Only)','commercial.leisure.beachHut'),
+ ('CL10','Licensed Private Members’ Club','commercial.leisure.club.private'),
+ ('CL10RE','Recreational / Social Club','commercial.leisure.club.social'),
+ ('CL11','Arena / Stadium','commercial.leisure.arena'),
+ ('CL11SD','Stadium','commercial.leisure.arena.stadium'),
+ ('CL11SJ','Showground','commercial.leisure.arena.showground'),
+ ('CM','Medical','commercial.medical'),
+ ('CM01','Dentist','commercial.medical.dentist'),
+ ('CM02','General Practice Surgery / Clinic','commercial.medical.GP'),
+ ('CM02HC','Health Centre','commercial.medical.healthCentre'),
+ ('CM02HL','Health Care Services','commercial.medical.healthServices'),
+ ('CM03','Hospital / Hospice','commercial.medical.care'),
+ ('CM03HI','Care home/Hospice','commercial.medical.care.home'),
+ ('CM03HP','Hospital','commercial.medical.care.hospital'),
+ ('CM04','Medical / Testing / Research Laboratory','commercial.medical.lab'),
+ ('CM05','Professional Medical Service','commercial.medical.professional'),
+ ('CM05ZS','Assessment / Development Services','commercial.medical.assessment'),
+ ('CN','Animal Centre','commercial.animals'),
+ ('CN01','Cattery / Kennel','commercial.animals.kennelsCattery'),
+ ('CN02','Animal Services','commercial.animals.services'),
+ ('CN02AX','Animal Quarantining','commercial.animals.services.quarantine'),
+ ('CN03','Equestrian','commercial.animals.equestrian'),
+ ('CN03HB','Horse Racing / Breeding Stable','commercial.animals.equestrian.racing'),
+ ('CN03SB','Commercial Stabling / Riding','commercial.animals.equestrian.riding'),
+ ('CN04','Vet / Animal Medical Treatment','commercial.animals.vet'),
+ ('CN05','Animal / Bird / Marine Sanctuary','commercial.animals.sanctuary'),
+ ('CN05AN','Animal Sanctuary','commercial.animals.sanctuary.animals'),
+ ('CN05MR','Marine Sanctuary','commercial.animals.sanctuary.marine'),
+ ('CO','Office','commercial.office'),
+ ('CO01','Office / Work Studio','commercial.office.workspace'),
+ ('CO01EM','Embassy /, High Commission / Consulate','commercial.office.workspace.embassy'),
+ ('CO01FM','Film Studio','commercial.office.workspace.film'),
+ ('CO01GV','Central Government Service','commercial.office.workspace.gov.national'),
+ ('CO01LG','Local Government Service','commercial.office.workspace.gov.local'),
+ ('CO02','Broadcasting (TV / Radio)','commercial.office.broadcasting'),
+ ('CR','Retail','commercial.retail'),
+ ('CR01','Bank / Financial Service','commercial.retail.financial'),
+ ('CR02','Retail Service Agent','commercial.retail.services'),
+ ('CR02PO','Post Office','commercial.retail.post'),
+ ('CR04','Market (Indoor / Outdoor)','commercial.retail.market'),
+ ('CR04FK','Fish Market','commercial.retail.market.fish'),
+ ('CR04FV','Fruit / Vegetable Market','commercial.retail.market.fruit'),
+ ('CR04LV','Livestock Market','commercial.retail.market.livestock'),
+ ('CR05','Petrol Filling Station','commercial.retail.fuel'),
+ ('CR06','Public House / Bar / Nightclub','commercial.retail.drinking'),
+ ('CR07','Restaurant / Cafeteria','commercial.retail.restaurant'),
+ ('CR08','Shop / Showroom','commercial.retail.showroom'),
+ ('CR08 ','Shop','commercial.retail.shop'),
+ ('CR08GC','Garden Centre','commercial.retail.shop.gardenCentre'),
+ ('CR09','Other Licensed Premise / Vendor','commercial.retail.licensedPremises'),
+ ('CR10','Fast Food Outlet / Takeaway (Hot / Cold)','commercial.retail.takeaway'),
+ ('CR11','Automated Teller Machine (ATM)','commercial.retail.atm'),
+ ('CS','Storage Land','commercial.storageLand'),
+ ('CS01','General Storage Land','commercial.storageLand.general'),
+ ('CS02','Builders’ Yard','commercial.storageLand.building'),
+ ('CT','Transport','commercial.transport'),
+ ('CT01','Airfield / Airstrip / Airport / Air Transport Infrastructure Facility','commercial.transport.air'),
+ ('CT01AF','Airfield','commercial.transport.air.airfield'),
+ ('CT01AI','Air Transport Infrastructure Services','commercial.transport.air.infrastructure'),
+ ('CT01AP','Airport','commercial.transport.air.airport'),
+ ('CT01AY','Air Passenger Terminal','commercial.transport.air.passengerTerminal'),
+ ('CT01HS','Helicopter Station','commercial.transport.air.helicopterStation'),
+ ('CT01HT','Heliport / Helipad','commercial.transport.air.heliport'),
+ ('CT02','Bus Shelter','commercial.transport.bus'),
+ ('CT03','Car / Coach / Commercial Vehicle / Taxi Parking / Park And Ride Site','commercial.transport.parking'),
+ ('CT03PK','Public Park And Ride','commercial.transport.parking.parkAndRide'),
+ ('CT03PP','Public Car Parking','commercial.transport.parking.car'),
+ ('CT03PU','Public Coach Parking','commercial.transport.parking.coach'),
+ ('CT03VP','Public Commercial Vehicle Parking','commercial.transport.parking.commercialVehicle'),
+ ('CT04','Goods Freight Handling / Terminal','commercial.transport.freight'),
+ ('CT04AE','Air Freight Terminal','commercial.transport.freight.air'),
+ ('CT04CF','Container Freight','commercial.transport.freight.container'),
+ ('CT04RH','Road Freight Transport','commercial.transport.freight.road'),
+ ('CT04RT','Rail Freight Transport','commercial.transport.freight.rail'),
+ ('CT05','Marina','commercial.transport.marina'),
+ ('CT06','Mooring','commercial.transport.mooring'),
+ ('CT07','Railway Asset','commercial.transport.railAsset'),
+ ('CT08','Station / Interchange / Terminal / Halt','commercial.transport.terminal'),
+ ('CT08BC','Bus station','commercial.transport.terminal.bus'),
+ ('CT08RS','Train station','commercial.transport.terminal.train'),
+ ('CT08VH','Vehicular Rail Terminal','commercial.transport.terminal.vehicularRail'),
+ ('CT09','Transport Track / Way','commercial.transport.track'),
+ ('CT09CL','Cliff Railway','commercial.transport.track.cliff'),
+ ('CT09CX','Chair Lift / Cable Car / Ski Tow','commercial.transport.track.cable'),
+ ('CT09MO','Monorail','commercial.transport.track.monorail'),
+ ('CT10','Vehicle Storage','commercial.transport.storage'),
+ ('CT10BG','Boat Storage','commercial.transport.storage.boat'),
+ ('CT10BU','Bus / Coach Depot','commercial.transport.storage.bus'),
+ ('CT11','Transport Related Infrastructure','commercial.transport.infrastructure'),
+ ('CT11AD','Aqueduct','commercial.transport.infrastructure.aqueduct'),
+ ('CT11LK','Lock','commercial.transport.infrastructure.lock'),
+ ('CT11WE','Weir','commercial.transport.infrastructure.weir'),
+ ('CT11WG','Weighbridge / Load Gauge','commercial.transport.infrastructure.weighing'),
+ ('CT12','Overnight Lorry Park','commercial.transport.overnightLorryPark'),
+ ('CT13','Harbour / Port / Dock / Dockyard / Slipway / Landing Stage / Pier / Jetty / Pontoon / Terminal / Berthing / Quay','commercial.transport.dock'),
+ ('CT13FR','Passenger Ferry Terminal','commercial.transport.dock.ferry.passengers'),
+ ('CT13NB','Non-Tanker Nautical Berthing','commercial.transport.dock.generalBerth'),
+ ('CT13NF','Nautical Refuelling Facility','commercial.transport.dock.refuelling'),
+ ('CT13SA','Slipway','commercial.transport.dock.slipway'),
+ ('CT13SP','Ship Passenger Terminal','commercial.transport.dock.passenger'),
+ ('CT13TK','Tanker Berthing','commercial.transport.dock.tankerBerth'),
+ ('CT13VF','Vehicular Ferry Terminal','commercial.transport.dock.ferry.vehicles'),
+ ('CU','Utility','commercial.utility'),
+ ('CU01','Electricity Sub-Station','commercial.utility.SubStation'),
+ ('CU02','Landfill','commercial.utility.landfill'),
+ ('CU03','Power Station / Energy Production','commercial.utility.electricity'),
+ ('CU03ED','Electricity Distribution Facility','commercial.utility.electricity.distribution'),
+ ('CU03EP','Electricity Production Facility','commercial.utility.electricity.production'),
+ ('CU03WF','Wind Farm','commercial.utility.electricity.windFarm'),
+ ('CU03WU','Wind Turbine','commercial.utility.electricity.windTurbine'),
+ ('CU04','Pump House / Pumping Station / Water Tower','commercial.utility.water'),
+ ('CU04WC','Water Controlling / Pumping','commercial.utility.water.pump.control'),
+ ('CU04WD','Water Distribution / Pumping','commercial.utility.water.pump.distribution'),
+ ('CU04WM','Water Quality Monitoring','commercial.utility.water.qualityMonitoring'),
+ ('CU04WS','Water Storage','commercial.utility.water.storage'),
+ ('CU04WW','Waste Water Distribution / Pumping','commercial.utility.water.waste'),
+ ('CU06','Telecommunication','commercial.utility.telecoms'),
+ ('CU06TE','Telecommunications Mast','commercial.utility.telecoms.mast'),
+ ('CU06TX','Telephone Exchange','commercial.utility.telecoms.exhange'),
+ ('CU07','Water / Waste Water / Sewage Treatment Works','commercial.utility.waterTreatment'),
+ ('CU07WR','Waste Water Treatment','commercial.utility.waterTreatment.waste'),
+ ('CU07WT','Water Treatment','commercial.utility.waterTreatment.water'),
+ ('CU08','Gas / Oil Storage / Distribution','commercial.utility.oilGas'),
+ ('CU08GG','Gas Governor','commercial.utility.oilGas.gasGovernor'),
+ ('CU08GH','Gas Holder','commercial.utility.oilGas.gasHolder'),
+ ('CU08OT','Oil Terminal','commercial.utility.oilGas.oilTerminal'),
+ ('CU09','Other Utility Use','commercial.utility.other'),
+ ('CU09CQ','Cable Terminal Station','commercial.utility.other.cableTerminal'),
+ ('CU09OV','Observatory','commercial.utility.other.observatory'),
+ ('CU09RA','Radar Station','commercial.utility.other.radar'),
+ ('CU09SE','Satellite Earth Station','commercial.utility.other.satelliteEarth'),
+ ('CU10','Waste Management','commercial.utility.wasteManagement'),
+ ('CU11','Telephone Box','commercial.utility.publicPhone.box'),
+ ('CU11OP','Other Public Telephones','commercial.utility.publicPhone.other'),
+ ('CU12','Dam','commercial.utility.dam'),
+ ('CX','Emergency / Rescue Service','commercial.emergency'),
+ ('OA02NL','Nautical Navigation Beacon / Light','other.navigation.nautical.beacon'),
+ ('OA03','Aid To Road Navigation','other.navigation.road'),
+ ('OA03GP','Guide Post','other.navigation.guidePost'),
+ ('OC','Coastal Protection / Flood Prevention','other.coastal'),
+ ('OC01','Boulder Wall / Sea Wall','other.coastal.wall'),
+ ('OC02','Flood Gate / Flood Sluice Gate / Flood Valve','other.coastal.floodGate'),
+ ('OC03','Groyne','other.coastal.groyne'),
+ ('OC04','Rip-Rap','other.coastal.ripRap'),
+ ('OE','Emergency Support','other.emergency'),
+ ('OE01','Beach Office / First Aid Facility','other.emergency.firstAid'),
+ ('OE02','Emergency Telephone (Non Motorway)','other.emergency.telephone'),
+ ('OE03','Fire Alarm Structure / Fire Observation Tower / Fire Beater Facility','other.emergency.fire'),
+ ('OE04','Emergency Equipment Point / Emergency Siren / Warning Flag','other.emergency.warning'),
+ ('OE05','Lifeguard Facility','other.emergency.lifeguard'),
+ ('OE06','LIfe / Belt / Buoy / Float / Jacket / Safety Rope','other.emergency.floatAids'),
+ ('OF','Street Furniture','other.streetFurniture'),
+ ('OG','Agricultural Support Objects','other.agriculture'),
+ ('OG01','Fish Ladder / Lock / Pen / Trap','other.agriculture.fishPen'),
+ ('OG02','Livestock Pen / Dip','other.agriculture.livestockPen'),
+ ('OG03','Currick','other.agriculture.currick'),
+ ('OG04','Slurry Bed / Pit','other.agriculture.slurry'),
+ ('OH','Historical Site / Object','other.historic'),
+ ('OH01','Historic Structure / Object','other.historic.structure'),
+ ('OI','Industrial Support','other.industrial'),
+ ('OI01','Adit / Incline / Level','other.industrial.aditIncline'),
+ ('OI02','Caisson / Dry Dock / Grid','other.industrial.caissonDock'),
+ ('OI03','Channel / Conveyor / Conduit / Pipe','other.industrial.channel'),
+ ('OI04','Chimney / Flue','other.industrial.chimney'),
+ ('OI05','Crane / Hoist / Winch / Material Elevator','other.industrial.crane'),
+ ('OI06','Flare Stack','other.industrial.flareStack'),
+ ('OI07','Hopper / Silo / Cistern / Tank','other.industrial.siloTank'),
+ ('OI08','Grab / Skip / Other Industrial Waste Machinery / Discharging','other.industrial.discharge'),
+ ('OI09','Kiln / Oven / Smelter','other.industrial.kiln'),
+ ('OI10','Manhole / Shaft','other.industrial.manholeShaft'),
+ ('OI11','Industrial Overflow / Sluice / Valve / Valve Housing','other.industrial.overflowSluiceValve'),
+ ('OI12','Cooling Tower','other.industrial.coolingTower'),
+ ('OI13','Solar Panel / Waterwheel','other.industrial.solarPanel'),
+ ('OI14','Telephone Pole / Post','other.industrial.pylon.telecom'),
+ ('OI15','Electricity Distribution Pole / Pylon','other.industrial.pylon.electricity'),
+ ('ON','Significant Natural Object','other.natural'),
+ ('ON01','Boundary / Significant / Historic Tree / Pollard','other.natural.tree'),
+ ('ON02','Boundary / Significant Rock / Boulder','other.natural.rock'),
+ ('ON03','Natural Hole (Blow / Shake / Swallow)','other.natural.hole'),
+ ('OO','Ornamental / Cultural Object','other.ornamental'),
+ ('OO02','Mausoleum / Tomb / Grave','other.ornamental.tomb'),
+ ('OO03','Simple Ornamental Object','other.ornamental.object'),
+ ('OO04','Maze','other.ornamental.maze'),
+ ('OP','Sport / Leisure Support','other.leisure'),
+ ('OP01','Butt / Hide','other.leisure.hide'),
+ ('OP02','Gallop / Ride','other.leisure.gallop'),
+ ('OP03','Miniature Railway','other.leisure.modelRailway'),
+ ('OR','Royal Mail Infrastructure','other.mail'),
+ ('OR01','Postal Box','other.mail.postBox'),
+ ('OR02','Postal Delivery Box / Pouch','other.mail.deliveryBox'),
+ ('OR03','PO Box','other.mail.POBox'),
+ ('OR04','Additional Mail / Packet Addressee','other.mail.additionalAddressee'),
+ ('OS','Scientific / Observation Support','other.scientific'),
+ ('OS01','Meteorological Station / Equipment','other.scientific.meteo'),
+ ('OS02','Radar / Satellite Infrastructure','other.scientific.radarSatellite'),
+ ('OS03','Telescope / Observation Infrastructure / Astronomy','other.scientific.astronomy'),
+ ('OT','Transport Support','other.transport'),
+ ('OT01','Cattle Grid / Ford','other.transport.cattleGridFord'),
+ ('OT02','Elevator / Escalator / Steps','other.transport.stepsLiftEscalator'),
+ ('OT03','Footbridge / Walkway','other.transport.bridge'),
+ ('OT04','Pole / Post / Bollard (Restricting Vehicular Access)','other.transport.post'),
+ ('OT05','Subway / Underpass','other.transport.subway'),
+ ('OT06','Customs Inspection Facility','other.transport.customs'),
+ ('OT07','Lay-By','other.transport.layby'),
+ ('OT08','Level Crossing','other.transport.rail.crossing.vehicles'),
+ ('OT09','Mail Pick Up','other.transport.mailPickUp'),
+ ('OT10','Railway Pedestrian Crossing','other.transport.rail.crossing.pedestrian'),
+ ('OT11','Railway Buffer','other.transport.rail.buffer'),
+ ('OT12','Rail Drag','other.transport.rail.drag'),
+ ('OT13','Rail Infrastructure Services','other.transport.rail.infrastructure'),
+ ('OT14','Rail Kilometre Distance Marker','other.transport.rail.marker.km'),
+ ('OT15','Railway Lighting','other.transport.rail.lighting'),
+ ('OT16','Rail Mile Distance Marker','other.transport.rail.market.mile'),
+ ('OT17','Railway Turntable','other.transport.rail.turntable'),
+ ('OT18','Rail Weighbridge','other.transport.rail.weighbridge'),
+ ('OT19','Rail Signalling','other.transport.rail.signals'),
+ ('OT20','Railway Traverse','other.transport.rail.traverse'),
+ ('OT21','Goods Tramway','other.transport.goodsTramway'),
+ ('OT22','Road Drag','other.transport.road.drag'),
+ ('OT23','Vehicle Dip','other.transport.road.vehicleDip'),
+ ('OT24','Road Turntable','other.transport.road.turntable'),
+ ('OT25','Road Mile Distance Marker','other.transport.road.marker.mile'),
+ ('OT26','Road Kilometre Distance Marker','other.transport.road.market.km'),
+ ('OT27','Road Infrastructure Services','other.transport.road.infrastructure'),
+ ('OU','Custom','other.unsupported'),
+ ('OU01','Cycle Parking Facility','other.unsupported.cycleParking'),
+ ('OU04','Picnic / Barbeque Site','other.unsupported.picnic'),
+ ('OU05','Travelling Persons Site','other.unsupported.travellingPersons'),
+ ('OU08','Shelter (Not Including Bus Shelter)','other.unsupported.shelter'),
+ ('PS','Street Record','parent.street'),
+ ('R','Residential','residential'),
+ ('RB','Residential Ancillary Building','residential.building'),
+ ('RC','Residential Car Park Space','residential.carParkingSpace'),
+ ('RC01','Residential Allocated Parking','residential.carParkingSpace.allocated'),
+ ('RD','Residential dwelling','residential.dwelling'),
+ ('RD01','Caravan','residential.dwelling.caravan'),
+ ('RD02','Residential - Detached','residential.dwelling.house.detached'),
+ ('RD03','Residential - Semi Detached','residential.dwelling.house.semiDetached'),
+ ('RD04','Residential - Terraced','residential.dwelling.house.terrace'),
+ ('RD06','Residential - Flat','residential.dwelling.flat'),
+ ('RD07','House Boat','residential.dwelling.boat'),
+ ('RD08','Sheltered Accommodation','residential.dwelling.shelteredAccommodation'),
+ ('RD10','Privately Owned Holiday Caravan / Chalet','residential.dwelling.holiday'),
+ ('RG','Garage','residential.garage'),
+ ('RG02','Lock-Up Garage / Garage Court','residential.garage'),
+ ('RH','House In Multiple Occupation','residential.HMO'),
+ ('RH01','HMO Parent','residential.HMO.parent'),
+ ('RH02','HMO Bedsit / Other Non Self Contained Accommodation','residential.HMO.bedsit'),
+ ('RH03','HMO Not Further Divided','residential.HMO.undivided'),
+ ('RI','Residential Institution','residential.institution'),
+ ('RI01','Care / Nursing Home','residential.institution.care'),
+ ('RI02','Communal Residence','residential.institution.communal'),
+ ('RI02NC','Non-Commercial Lodgings','residential.institution.noncommercial'),
+ ('RI02RC','Religious Community','residential.institution.religious'),
+ ('RI03','Residential Education','residential.institution.education'),
+ ('U','Unclassified','unclassified'),
+ ('UC','Awaiting Classification','unclassified.awaitingclassification'),
+ ('UP','Pending Internal Investigation','unclassified.pendingInvestigation'),
+ ('X','Dual Use','dualUse'),
+ ('Z','Object of Interest','object'),
+ ('ZA','Archaeological Dig Site','object.archaeological'),
+ ('ZM','Monument','object.monument'),
+ ('ZM01','Obelisk / Milestone / Standing Stone','object.monument.vertical'),
+ ('ZM01OB','Obelisk','object.monument.vertical.obelisk'),
+ ('ZM01ST','Standing Stone','object.monument.vertical.standingStone'),
+ ('ZM02','Memorial / Market Cross','object.monument.memorial'),
+ ('ZM03','Statue','object.monument.statue'),
+ ('ZM04','Castle / Historic Ruin','object.monument.ruin'),
+ ('ZM05','Other Structure','object.monument.other'),
+ ('ZM05BS','Boundary Stone','object.monument.other.boundaryStone'),
+ ('ZM05CE','Cascade / Fountain','object.monument.other.waterFeature'),
+ ('ZM05PN','Permanent Art Display / Sculpture','object.monument.other.art'),
+ ('ZM05WI','Windmill (Inactive)','object.monument.other.windmill'),
+ ('ZS','Stately Home','object.statelyHome'),
+ ('ZU','Underground Feature','object.underground'),
+ ('ZU01','Cave','object.underground.cave'),
+ ('ZU04','Pothole / Natural Hole','object.underground.hole'),
+ ('ZV','Other Underground Feature','object.underground.other'),
+ ('ZV01','Cellar','object.underground.other.cellar'),
+ ('ZV02','Disused Mine','object.underground.other.extraction'),
+ ('ZV02MI','Mineral Mining / Inactive','object.underground.other.extraction.mine'),
+ ('ZV02OI','Oil And / Gas Extraction/ Inactive','object.underground.other.extraction.oilGas'),
+ ('ZV02QI','Mineral Quarrying And / Open Extraction / Inactive','object.underground.other.extraction.quarry'),
+ ('ZV03','Well / Spring','object.underground.other.water'),
+ ('ZV03SG','Spring','object.underground.other.water.spring'),
+ ('ZV03WL','Well','object.underground.other.water.well'),
+ ('ZW','Place Of Worship','object.religious'),
+ ('ZW99','Religious building','object.religious.building'),
+ ('ZW99AB','Abbey','object.religious.building.abbey'),
+ ('ZW99CA','Cathedral','object.religious.building.cathedral'),
+ ('ZW99CH','Church','object.religious.building.church'),
+ ('ZW99CP','Chapel','object.religious.building.chapel'),
+ ('ZW99GU','Gurdwara','object.religious.building.gurdwara'),
+ ('ZW99KH','Kingdom Hall','object.religious.building.kingdomHall'),
+ ('ZW99LG','Lych Gate','object.religious.building.lychGate'),
+ ('ZW99MQ','Mosque','object.religious.building.mosque'),
+ ('ZW99MT','Minster','object.religious.building.minster'),
+ ('ZW99SU','Stupa','object.religious.building.stupa'),
+ ('ZW99SY','Synagogue','object.religious.building.synagogue'),
+ ('ZW99TP','Temple','object.religious.building.temple'),
+ ('P','Parent Shell',null),
+ ('PP','Property Shell',null);
diff --git a/hasura.planx.uk/migrations/1721112734683_drop_table_public_project_types/down.sql b/hasura.planx.uk/migrations/1721112734683_drop_table_public_project_types/down.sql
new file mode 100644
index 0000000000..6682b6f158
--- /dev/null
+++ b/hasura.planx.uk/migrations/1721112734683_drop_table_public_project_types/down.sql
@@ -0,0 +1,194 @@
+CREATE TABLE "public"."project_types" (
+ "description" text NOT NULL,
+ "value" text NOT NULL,
+ "id" serial NOT NULL,
+ PRIMARY KEY ("id")
+);
+COMMENT ON TABLE "public"."project_types" IS E'A list of things people want to do within the planning system';
+INSERT INTO "public"."project_types" (description, value) VALUES
+ ('demolition of a building', 'demolish.full'),
+ ('demolition of part of a building', 'demolish.part'),
+ ('demolition of an outbuilding', 'demolish.outbuilding'),
+ ('demolition of an extension', 'demolish.extension'),
+ ('demolition of a boundary', 'demolish.boundary'),
+ ('alteration of internal layout', 'internal'),
+ ('internal alterations', 'alter.internal'),
+ ('alteration of internal walls', 'alter.internal.walls'),
+ ('alteration to internal floors', 'alter.internal.floors'),
+ ('alteration of internal staircases', 'alter.internal.staircases'),
+ ('alteration of internal doorways', 'alter.internal.doorways'),
+ ('alteration of internal window openings', 'alter.internal.windows'),
+ ('alteration of internal finishes', 'alter.internal.finishes'),
+ ('alteration of internal services', 'alter.internal.services'),
+ ('installation / replacement of kitchen units', 'alter.internal.kitchen'),
+ ('installation / replacement of bathroom appliances', 'alter.internal.bathroom'),
+ ('replacement of internal doors ', 'alter.internal.doors'),
+ ('alterations to internal decorative features', 'alter.internal.features'),
+ ('conversion of a roof space into habitable room/s', 'alter.internal.loft'),
+ ('alteration of internal basements', 'alter.internal.basement'),
+ ('addition of a mezzanine floor', 'alter.internal.mezzanine'),
+ ('removal of part of a building', 'alter.remove'),
+ ('removal of equipment', 'alter.remove.equipment'),
+ ('removal of a chimney', 'alter.remove.chimney'),
+ ('removal of a soil pipe', 'alter.remove.soilPipe'),
+ ('removal of a hard surface', 'alter.remove.surface'),
+ ('removal of a deck', 'alter.remove.deck'),
+ ('removal of part of a facade', 'alter.remove.facade'),
+ ('repairs to windows ', 'alter.repair.windows'),
+ ('repairs to doors ', 'alter.repair.doors'),
+ ('replacement of windows with windows', 'alter.replace.windowsToWindows'),
+ ('replacement of doors with doors', 'alter.replace.doorsToDoors'),
+ ('replacement of windows with doors', 'alter.replace.windowsToDoors'),
+ ('replacement of doors with windows', 'alter.replace.doorsToWindows'),
+ ('changes to door or window openings', 'alter.openings'),
+ ('addition of window or door openings', 'alter.openings.add'),
+ ('alteration of window or door openings', 'alter.openings.alter'),
+ ('alteration of window or door openings to the rear', 'alter.openings.alter.rear'),
+ ('addition of doorways to the front of the building', 'alter.openings.add.doors.front'),
+ ('addition of doorways to the side of the building', 'alter.openings.add.doors.side'),
+ ('addition of doorways to the rear of the building', 'alter.openings.add.doors.rear'),
+ ('addition of window openings', 'alter.openings.add.windows'),
+ ('addition of window openings to the front of the building', 'alter.openings.add.windows.front'),
+ ('addition of window openings to the side of the building', 'alter.openings.add.windows.side'),
+ ('addition of window openings to the rear of the building', 'alter.openings.add.windows.rear'),
+ ('addition of high up window', 'alter.openings.add.windows.high'),
+ ('addition of doors openings to the front of the building', 'alter.openings.alter.doors.front'),
+ ('addition of doors openings to the side of the building', 'alter.openings.alter.doors.side'),
+ ('addition of doors openings to the rear of the building', 'alter.openings.alter.doors.rear'),
+ ('addition of window openings', 'alter.openings.alter.windows'),
+ ('addition of window openings to the front of the building', 'alter.openings.alter.windows.front'),
+ ('addition of window openings to the side of the building', 'alter.openings.alter.windows.side'),
+ ('addition of window openings to the rear of the building', 'alter.openings.alter.windows.rear'),
+ ('blocking-up of doorways or windows', 'alter.openings.remove'),
+ ('addition of secondary glazing', 'alter.secondaryGlazing'),
+ ('addition of one or more skylights', 'alter.rooflight'),
+ ('alterations to facades', 'alter.facades'),
+ ('alterations to facades to th rear of the building', 'alter.facades.rear'),
+ ('painting of facades', 'alter.facades.paint'),
+ ('cladding of facades', 'alter.facades.reclad'),
+ ('addition of advert or sign', 'alter.sign'),
+ ('works to drains', 'alter.drains'),
+ ('alterations to tree or hedges', 'alter.trees'),
+ ('alterations to hard surfaces', 'alter.surfaces'),
+ ('alterations to hard surfaces', 'alter.surfaces.parking'),
+ ('addition or alteration of a deck', 'alter.decks'),
+ ('alterations to a boundary', 'alter.boundary'),
+ ('repairs to a boundary', 'alter.boundary.repair'),
+ ('repairs to a fence', 'alter.boundary.repair.fence'),
+ ('repairs to a gate', 'alter.boundary.repair.gate'),
+ ('repairs to a wall', 'alter.boundary.repair.wall'),
+ ('replacement of a boundary', 'alter.boundary.replace'),
+ ('replacement of a fence', 'alter.boundary.replace.fence'),
+ ('replacement of a gate', 'alter.boundary.replace.gate'),
+ ('replacement of a walll', 'alter.boundary.replace.wall'),
+ ('addition of a new boundary', 'alter.boundary.add'),
+ ('erection of a new fence', 'alter.boundary.add.fence'),
+ ('addition of a new gate', 'alter.boundary.add.gate'),
+ ('construction of a new wall', 'alter.boundary.add.wall'),
+ ('addition of a chimney', 'alter.chimneys'),
+ ('removal of a chimney', 'alter.remove.chimney'),
+ ('alterations to the roof', 'alter.roof'),
+ ('alteration of roof materials', 'alter.roof.materials'),
+ ('alteration of roof shape', 'alter.roof.shape'),
+ ('addition of a roof terrace', 'alter.roof.terrace'),
+ ('alterations to roof parapet', 'alter.roof.parapet'),
+ ('alterations to a public highway', 'alter.highways'),
+ ('creation of a point of access to a highway', 'alter.highways.access'),
+ ('creation of a point of access to an unclassified road', 'alter.highways.access.unclassified'),
+ ('addition of a dropped kerb', 'alter.highways.droppedKerb.add'),
+ ('removal of a dropped kerb', 'alter.highways.droppedKerb.remove'),
+ ('addition or alteration of soil pipes', 'alter.soilPipes'),
+ ('works to an external staircase', 'alter.staircase'),
+ ('addition or removal of a bay window', 'alter.bayWindow'),
+ ('addition of a bay window', 'alter.bayWindow.add'),
+ ('removal of a bay window', 'alter.bayWindow.remove'),
+ ('addition of a bay window to the rear', 'alter.bayWindow.rear'),
+ ('addition of an indoor swimming pool', 'alter.swimmingPool.indoor'),
+ ('addition of an outdoor swimming pool', 'alter.swimmingPool.outdoor'),
+ ('addition or removal of a pond', 'alter.landscape.ponds'),
+ ('addition or removal of a residential lawn or garden', 'alter.landscape.gardens'),
+ ('installation of equipment', 'alter.equipment'),
+ ('installation of a barbecue', 'alter.equipment.bbq'),
+ ('installation of cctv', 'alter.equipment.cctv'),
+ ('installation of external lighting ', 'alter.equipment.lighting'),
+ ('installation of wind turbine ', 'alter.equipment.wind'),
+ ('installation of antennae', 'alter.equipment.antennae'),
+ ('installation of an aerial', 'alter.equipment.antennae.aerial'),
+ ('installation of a satellite dish', 'alter.equipment.antennae.dish'),
+ ('installation of solar panel', 'alter.equipment.solar'),
+ ('installation of security alarm ', 'alter.equipment.alarm'),
+ ('installation of tank ', 'alter.equipment.tank'),
+ ('installation of heat pump (air)', 'alter.equipment.heatPump.air'),
+ ('installation of heat pump (ground)', 'alter.equipment.heatPump.ground'),
+ ('installation of heat pump (water)', 'alter.equipment.heatPump.water'),
+ ('installation of biomass / CHP', 'alter.equipment.biomass'),
+ ('installation of an electric vehicle charging point', 'alter.equipment.charging'),
+ ('installation of industrial equipment', 'alter.equipment.industrial'),
+ ('installation of cables ', 'alter.cables'),
+ ('installation of pipes', 'alter.pipes'),
+ ('extension to the rear or side', 'extend.rearSide'),
+ ('extension to the rear', 'extend.rearSide.rear'),
+ ('extension to the side', 'extend.rearSide.side'),
+ ('extension to the front', 'extend.front'),
+ ('upper storey extension', 'extend.upperStorey'),
+ ('roof extension', 'extend.roof'),
+ ('addition of a roof dormer', 'extend.roof.dormer'),
+ ('addition of a mansard roof', 'extend.roof.mansard'),
+ ('hip-to-gable roof enlargement', 'extend.roof.hiptogable'),
+ ('addition of one or more new storeys', 'extend.roof.newstorey'),
+ ('connection of parts of a roof', 'extend.roof.connect'),
+ ('alteration of roof shape', 'extend.roof.shape'),
+ ('addition of a new storey', 'extend.roof.newstorey'),
+ ('basement extension ', 'extend.basement'),
+ ('enlargement of a basement', 'extend.basement.extend'),
+ ('addition of a lightwell', 'extend.basement.lightwell'),
+ ('addition of an outbuilding', 'extend.outbuilding.garage'),
+ ('addition of garage', 'extend.outbuilding.garage'),
+ ('addition of shed', 'extend.outbuilding.shed'),
+ ('addition of garden office', 'extend.outbuilding.office'),
+ ('addition of a roof shelter', 'extend.outbuilding.shelter'),
+ ('additon of sauna', 'extend.outbuilding.sauna'),
+ ('addition of store', 'extend.outbuilding.store'),
+ ('addition of gym', 'extend.outbuilding.gym'),
+ ('addition of summer house', 'extend.outbuilding.summerHouse'),
+ ('addition of greenhouse', 'extend.outbuilding.greenhouse'),
+ ('addition of other outbuilding', 'extend.outbuilding.other'),
+ ('addition of a tank', 'extend.outbuilding.tank'),
+ ('addition of a porch', 'extend.porch'),
+ ('addition of a front porch', 'extend.porch.front'),
+ ('addition of a side porch', 'extend.porch.side'),
+ ('addition of a rear porch', 'extend.porch.rear'),
+ ('new home/s', 'new.residential.dwelling'),
+ ('new flat/s', 'new.residential.dwelling.flat'),
+ ('new houses/s', 'new.residential.dwelling.house'),
+ ('new office premises', 'new.office'),
+ ('new storage or distribution premises', 'new.storage'),
+ ('new industrial premises', 'new.industrial'),
+ ('new retail premises', 'new.retail'),
+ ('new leisure premises', 'new.leisure'),
+ ('new mixed premises', 'new.mixed'),
+ ('new agricultural premises', 'new.agriculture'),
+ ('new agricultural premises', 'new.agriculture.glasshouse'),
+ ('new agricultural premises', 'new.agriculture.poultry'),
+ ('new agricultural premises', 'new.agriculture.pigs'),
+ ('new agricultural premises', 'new.agricultural.mining '),
+ ('new agricultural premises', 'new.agricultural.fish'),
+ ('new forestry premises', 'new.forestry'),
+ ('new other premises', 'new'),
+ ('change of use', 'changeOfUse.whole'),
+ ('changing the use of part of the property', 'changeOfUse.part'),
+ ('permanent change of use', 'changeOfUse.permanent'),
+ ('temporary change of use', 'changeOfUse.temporary'),
+ ('temporary change of use - markets', 'changeOfUse.temporary.market'),
+ ('temporary change of use - motor racing', 'changeOfUse.temporary.motorracing'),
+ ('conversion of an outbuilding', 'changeOfUse.outbuilding'),
+ ('convertion of an extension', 'changeOfUse.extension'),
+ ('working from home', 'changeOfUse.workFromHome'),
+ ('let a property', 'changeOfUse.let.whole'),
+ ('let part of a property', 'changeOfUse.let.part'),
+ ('siting of a caravan', 'changeOfUse.caravans'),
+ ('land swap', 'changeOfUse.swap'),
+ ('creation of a residential annexe', 'changeofUse.annexe'),
+ ('subdivision of a property', 'unit.subdivide'),
+ ('merge two or more properties', 'unit.merge'),
+ ('other changes', 'other');
diff --git a/hasura.planx.uk/migrations/1721112734683_drop_table_public_project_types/up.sql b/hasura.planx.uk/migrations/1721112734683_drop_table_public_project_types/up.sql
new file mode 100644
index 0000000000..4a682ac1da
--- /dev/null
+++ b/hasura.planx.uk/migrations/1721112734683_drop_table_public_project_types/up.sql
@@ -0,0 +1 @@
+DROP table "public"."project_types" CASCADE;
diff --git a/hasura.planx.uk/package.json b/hasura.planx.uk/package.json
index 1b859f4845..19bf95a16c 100644
--- a/hasura.planx.uk/package.json
+++ b/hasura.planx.uk/package.json
@@ -5,6 +5,7 @@
"scripts": {
"start": "hasura console --envfile ./../.env"
},
+ "packageManager": "pnpm@8.6.6",
"pnpm": {
"overrides": {
"follow-redirects@<=1.15.5": ">=1.15.6"
diff --git a/hasura.planx.uk/tests/package.json b/hasura.planx.uk/tests/package.json
index 3bdcc77c1b..b5f2938381 100644
--- a/hasura.planx.uk/tests/package.json
+++ b/hasura.planx.uk/tests/package.json
@@ -9,7 +9,7 @@
"isomorphic-fetch": "^3.0.0",
"jest": "^29.7.0",
"jsonwebtoken": "^9.0.1",
- "uuid": "^9.0.0"
+ "uuid": "^10.0.0"
},
"jest": {
"setupFilesAfterEnv": [
diff --git a/hasura.planx.uk/tests/pnpm-lock.yaml b/hasura.planx.uk/tests/pnpm-lock.yaml
index 0376ee2a93..2aa8871dcd 100644
--- a/hasura.planx.uk/tests/pnpm-lock.yaml
+++ b/hasura.planx.uk/tests/pnpm-lock.yaml
@@ -21,408 +21,348 @@ dependencies:
specifier: ^9.0.1
version: 9.0.1
uuid:
- specifier: ^9.0.0
- version: 9.0.0
+ specifier: ^10.0.0
+ version: 10.0.0
packages:
- /@ampproject/remapping@2.2.1:
- resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
+ /@ampproject/remapping@2.3.0:
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
dependencies:
- '@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.18
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
dev: false
- /@babel/code-frame@7.22.13:
- resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
+ /@babel/code-frame@7.24.7:
+ resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/highlight': 7.22.20
- chalk: 2.4.2
- dev: false
-
- /@babel/code-frame@7.22.5:
- resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/highlight': 7.22.5
+ '@babel/highlight': 7.24.7
+ picocolors: 1.0.1
dev: false
- /@babel/compat-data@7.22.6:
- resolution: {integrity: sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==}
+ /@babel/compat-data@7.24.7:
+ resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==}
engines: {node: '>=6.9.0'}
dev: false
- /@babel/core@7.22.8:
- resolution: {integrity: sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==}
+ /@babel/core@7.24.7:
+ resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==}
engines: {node: '>=6.9.0'}
dependencies:
- '@ampproject/remapping': 2.2.1
- '@babel/code-frame': 7.22.5
- '@babel/generator': 7.22.7
- '@babel/helper-compilation-targets': 7.22.6(@babel/core@7.22.8)
- '@babel/helper-module-transforms': 7.22.5
- '@babel/helpers': 7.22.6
- '@babel/parser': 7.22.7
- '@babel/template': 7.22.5
- '@babel/traverse': 7.23.2
- '@babel/types': 7.22.5
- '@nicolo-ribaudo/semver-v6': 6.3.3
- convert-source-map: 1.9.0
- debug: 4.3.4
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/helper-compilation-targets': 7.24.7
+ '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7)
+ '@babel/helpers': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/template': 7.24.7
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ convert-source-map: 2.0.0
+ debug: 4.3.5
gensync: 1.0.0-beta.2
json5: 2.2.3
+ semver: 7.6.2
transitivePeerDependencies:
- supports-color
dev: false
- /@babel/generator@7.22.7:
- resolution: {integrity: sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.22.5
- '@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.18
- jsesc: 2.5.2
- dev: false
-
- /@babel/generator@7.23.0:
- resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==}
+ /@babel/generator@7.24.7:
+ resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.23.0
- '@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.18
+ '@babel/types': 7.24.7
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
jsesc: 2.5.2
dev: false
- /@babel/helper-compilation-targets@7.22.6(@babel/core@7.22.8):
- resolution: {integrity: sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==}
+ /@babel/helper-compilation-targets@7.24.7:
+ resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==}
engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
dependencies:
- '@babel/compat-data': 7.22.6
- '@babel/core': 7.22.8
- '@babel/helper-validator-option': 7.22.5
- '@nicolo-ribaudo/semver-v6': 6.3.3
- browserslist: 4.21.9
+ '@babel/compat-data': 7.24.7
+ '@babel/helper-validator-option': 7.24.7
+ browserslist: 4.23.1
lru-cache: 5.1.1
+ semver: 7.6.2
dev: false
- /@babel/helper-environment-visitor@7.22.20:
- resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
- engines: {node: '>=6.9.0'}
- dev: false
-
- /@babel/helper-environment-visitor@7.22.5:
- resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==}
+ /@babel/helper-environment-visitor@7.24.7:
+ resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.24.7
dev: false
- /@babel/helper-function-name@7.23.0:
- resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
+ /@babel/helper-function-name@7.24.7:
+ resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/template': 7.22.15
- '@babel/types': 7.23.0
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
dev: false
- /@babel/helper-hoist-variables@7.22.5:
- resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+ /@babel/helper-hoist-variables@7.24.7:
+ resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.23.0
+ '@babel/types': 7.24.7
dev: false
- /@babel/helper-module-imports@7.22.5:
- resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==}
+ /@babel/helper-module-imports@7.24.7:
+ resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.22.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
dev: false
- /@babel/helper-module-transforms@7.22.5:
- resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==}
+ /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==}
engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
dependencies:
- '@babel/helper-environment-visitor': 7.22.5
- '@babel/helper-module-imports': 7.22.5
- '@babel/helper-simple-access': 7.22.5
- '@babel/helper-split-export-declaration': 7.22.6
- '@babel/helper-validator-identifier': 7.22.5
- '@babel/template': 7.22.5
- '@babel/traverse': 7.23.2
- '@babel/types': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-module-imports': 7.24.7
+ '@babel/helper-simple-access': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
transitivePeerDependencies:
- supports-color
dev: false
- /@babel/helper-plugin-utils@7.22.5:
- resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
+ /@babel/helper-plugin-utils@7.24.7:
+ resolution: {integrity: sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==}
engines: {node: '>=6.9.0'}
dev: false
- /@babel/helper-simple-access@7.22.5:
- resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
+ /@babel/helper-simple-access@7.24.7:
+ resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.22.5
+ '@babel/traverse': 7.24.7
+ '@babel/types': 7.24.7
+ transitivePeerDependencies:
+ - supports-color
dev: false
- /@babel/helper-split-export-declaration@7.22.6:
- resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+ /@babel/helper-split-export-declaration@7.24.7:
+ resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/types': 7.23.0
- dev: false
-
- /@babel/helper-string-parser@7.22.5:
- resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
- engines: {node: '>=6.9.0'}
+ '@babel/types': 7.24.7
dev: false
- /@babel/helper-validator-identifier@7.22.20:
- resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ /@babel/helper-string-parser@7.24.7:
+ resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==}
engines: {node: '>=6.9.0'}
dev: false
- /@babel/helper-validator-identifier@7.22.5:
- resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
+ /@babel/helper-validator-identifier@7.24.7:
+ resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
dev: false
- /@babel/helper-validator-option@7.22.5:
- resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==}
+ /@babel/helper-validator-option@7.24.7:
+ resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==}
engines: {node: '>=6.9.0'}
dev: false
- /@babel/helpers@7.22.6:
- resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==}
+ /@babel/helpers@7.24.7:
+ resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/template': 7.22.5
- '@babel/traverse': 7.23.2
- '@babel/types': 7.22.5
- transitivePeerDependencies:
- - supports-color
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
dev: false
- /@babel/highlight@7.22.20:
- resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
+ /@babel/highlight@7.24.7:
+ resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-validator-identifier': 7.22.20
+ '@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2
js-tokens: 4.0.0
+ picocolors: 1.0.1
dev: false
- /@babel/highlight@7.22.5:
- resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-validator-identifier': 7.22.5
- chalk: 2.4.2
- js-tokens: 4.0.0
- dev: false
-
- /@babel/parser@7.22.7:
- resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==}
- engines: {node: '>=6.0.0'}
- hasBin: true
- dependencies:
- '@babel/types': 7.22.5
- dev: false
-
- /@babel/parser@7.23.0:
- resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==}
+ /@babel/parser@7.24.7:
+ resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==}
engines: {node: '>=6.0.0'}
- hasBin: true
dependencies:
- '@babel/types': 7.23.0
+ '@babel/types': 7.24.7
dev: false
- /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.8):
+ /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7):
resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.8):
+ /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.8):
+ /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7):
resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.8):
+ /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7):
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.8):
+ /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.8):
- resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==}
+ /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.8):
+ /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7):
resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.8):
+ /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.8):
+ /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7):
resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.8):
+ /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.8):
+ /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.8):
+ /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7):
resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.8):
+ /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7):
resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.8):
- resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==}
+ /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.7):
+ resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
- '@babel/core': 7.22.8
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/helper-plugin-utils': 7.24.7
dev: false
- /@babel/template@7.22.15:
- resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
+ /@babel/template@7.24.7:
+ resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/code-frame': 7.22.13
- '@babel/parser': 7.23.0
- '@babel/types': 7.23.0
+ '@babel/code-frame': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
dev: false
- /@babel/template@7.22.5:
- resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==}
+ /@babel/traverse@7.24.7:
+ resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/code-frame': 7.22.5
- '@babel/parser': 7.22.7
- '@babel/types': 7.22.5
- dev: false
-
- /@babel/traverse@7.23.2:
- resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.22.13
- '@babel/generator': 7.23.0
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-hoist-variables': 7.22.5
- '@babel/helper-split-export-declaration': 7.22.6
- '@babel/parser': 7.23.0
- '@babel/types': 7.23.0
- debug: 4.3.4
+ '@babel/code-frame': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/helper-environment-visitor': 7.24.7
+ '@babel/helper-function-name': 7.24.7
+ '@babel/helper-hoist-variables': 7.24.7
+ '@babel/helper-split-export-declaration': 7.24.7
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
+ debug: 4.3.5
globals: 11.12.0
transitivePeerDependencies:
- supports-color
dev: false
- /@babel/types@7.22.5:
- resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-string-parser': 7.22.5
- '@babel/helper-validator-identifier': 7.22.5
- to-fast-properties: 2.0.0
- dev: false
-
- /@babel/types@7.23.0:
- resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
+ /@babel/types@7.24.7:
+ resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-string-parser': 7.22.5
- '@babel/helper-validator-identifier': 7.22.20
+ '@babel/helper-string-parser': 7.24.7
+ '@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
dev: false
@@ -451,7 +391,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
@@ -472,14 +412,14 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
ansi-escapes: 4.3.2
chalk: 4.1.2
- ci-info: 3.8.0
+ ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@20.4.0)
+ jest-config: 29.7.0(@types/node@20.14.9)
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -491,7 +431,7 @@ packages:
jest-util: 29.7.0
jest-validate: 29.7.0
jest-watcher: 29.7.0
- micromatch: 4.0.5
+ micromatch: 4.0.7
pretty-format: 29.7.0
slash: 3.0.0
strip-ansi: 6.0.1
@@ -507,7 +447,7 @@ packages:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
jest-mock: 29.7.0
dev: false
@@ -534,7 +474,7 @@ packages:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -566,25 +506,25 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@jridgewell/trace-mapping': 0.3.18
- '@types/node': 20.4.0
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/node': 20.14.9
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit: 0.1.2
glob: 7.2.3
graceful-fs: 4.2.11
- istanbul-lib-coverage: 3.2.0
- istanbul-lib-instrument: 6.0.0
- istanbul-lib-report: 3.0.0
+ istanbul-lib-coverage: 3.2.2
+ istanbul-lib-instrument: 6.0.3
+ istanbul-lib-report: 3.0.1
istanbul-lib-source-maps: 4.0.1
- istanbul-reports: 3.1.5
+ istanbul-reports: 3.1.7
jest-message-util: 29.7.0
jest-util: 29.7.0
jest-worker: 29.7.0
slash: 3.0.0
string-length: 4.0.2
strip-ansi: 6.0.1
- v8-to-istanbul: 9.1.0
+ v8-to-istanbul: 9.3.0
transitivePeerDependencies:
- supports-color
dev: false
@@ -600,7 +540,7 @@ packages:
resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@jridgewell/trace-mapping': 0.3.18
+ '@jridgewell/trace-mapping': 0.3.25
callsites: 3.1.0
graceful-fs: 4.2.11
dev: false
@@ -611,7 +551,7 @@ packages:
dependencies:
'@jest/console': 29.7.0
'@jest/types': 29.6.3
- '@types/istanbul-lib-coverage': 2.0.4
+ '@types/istanbul-lib-coverage': 2.0.6
collect-v8-coverage: 1.0.2
dev: false
@@ -629,9 +569,9 @@ packages:
resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@babel/core': 7.22.8
+ '@babel/core': 7.24.7
'@jest/types': 29.6.3
- '@jridgewell/trace-mapping': 0.3.18
+ '@jridgewell/trace-mapping': 0.3.25
babel-plugin-istanbul: 6.1.1
chalk: 4.1.2
convert-source-map: 2.0.0
@@ -640,7 +580,7 @@ packages:
jest-haste-map: 29.7.0
jest-regex-util: 29.6.3
jest-util: 29.7.0
- micromatch: 4.0.5
+ micromatch: 4.0.7
pirates: 4.0.6
slash: 3.0.0
write-file-atomic: 4.0.2
@@ -653,58 +593,49 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/schemas': 29.6.3
- '@types/istanbul-lib-coverage': 2.0.4
- '@types/istanbul-reports': 3.0.1
- '@types/node': 20.4.0
- '@types/yargs': 17.0.24
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 20.14.9
+ '@types/yargs': 17.0.32
chalk: 4.1.2
dev: false
- /@jridgewell/gen-mapping@0.3.3:
- resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
+ /@jridgewell/gen-mapping@0.3.5:
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
engines: {node: '>=6.0.0'}
dependencies:
- '@jridgewell/set-array': 1.1.2
+ '@jridgewell/set-array': 1.2.1
'@jridgewell/sourcemap-codec': 1.4.15
- '@jridgewell/trace-mapping': 0.3.18
+ '@jridgewell/trace-mapping': 0.3.25
dev: false
- /@jridgewell/resolve-uri@3.1.0:
- resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
+ /@jridgewell/resolve-uri@3.1.2:
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
dev: false
- /@jridgewell/set-array@1.1.2:
- resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+ /@jridgewell/set-array@1.2.1:
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
engines: {node: '>=6.0.0'}
dev: false
- /@jridgewell/sourcemap-codec@1.4.14:
- resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
- dev: false
-
/@jridgewell/sourcemap-codec@1.4.15:
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
dev: false
- /@jridgewell/trace-mapping@0.3.18:
- resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
+ /@jridgewell/trace-mapping@0.3.25:
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
dependencies:
- '@jridgewell/resolve-uri': 3.1.0
- '@jridgewell/sourcemap-codec': 1.4.14
- dev: false
-
- /@nicolo-ribaudo/semver-v6@6.3.3:
- resolution: {integrity: sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==}
- hasBin: true
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
dev: false
/@sinclair/typebox@0.27.8:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: false
- /@sinonjs/commons@3.0.0:
- resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==}
+ /@sinonjs/commons@3.0.1:
+ resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
dependencies:
type-detect: 4.0.8
dev: false
@@ -712,76 +643,78 @@ packages:
/@sinonjs/fake-timers@10.3.0:
resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
dependencies:
- '@sinonjs/commons': 3.0.0
+ '@sinonjs/commons': 3.0.1
dev: false
- /@types/babel__core@7.20.1:
- resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==}
+ /@types/babel__core@7.20.5:
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
dependencies:
- '@babel/parser': 7.22.7
- '@babel/types': 7.22.5
- '@types/babel__generator': 7.6.4
- '@types/babel__template': 7.4.1
- '@types/babel__traverse': 7.20.1
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
+ '@types/babel__generator': 7.6.8
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.20.6
dev: false
- /@types/babel__generator@7.6.4:
- resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==}
+ /@types/babel__generator@7.6.8:
+ resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==}
dependencies:
- '@babel/types': 7.22.5
+ '@babel/types': 7.24.7
dev: false
- /@types/babel__template@7.4.1:
- resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==}
+ /@types/babel__template@7.4.4:
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
dependencies:
- '@babel/parser': 7.22.7
- '@babel/types': 7.22.5
+ '@babel/parser': 7.24.7
+ '@babel/types': 7.24.7
dev: false
- /@types/babel__traverse@7.20.1:
- resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==}
+ /@types/babel__traverse@7.20.6:
+ resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
dependencies:
- '@babel/types': 7.22.5
+ '@babel/types': 7.24.7
dev: false
- /@types/graceful-fs@4.1.6:
- resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
+ /@types/graceful-fs@4.1.9:
+ resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
dependencies:
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
dev: false
- /@types/istanbul-lib-coverage@2.0.4:
- resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
+ /@types/istanbul-lib-coverage@2.0.6:
+ resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
dev: false
- /@types/istanbul-lib-report@3.0.0:
- resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==}
+ /@types/istanbul-lib-report@3.0.3:
+ resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
dependencies:
- '@types/istanbul-lib-coverage': 2.0.4
+ '@types/istanbul-lib-coverage': 2.0.6
dev: false
- /@types/istanbul-reports@3.0.1:
- resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==}
+ /@types/istanbul-reports@3.0.4:
+ resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
dependencies:
- '@types/istanbul-lib-report': 3.0.0
+ '@types/istanbul-lib-report': 3.0.3
dev: false
- /@types/node@20.4.0:
- resolution: {integrity: sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==}
+ /@types/node@20.14.9:
+ resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
+ dependencies:
+ undici-types: 5.26.5
dev: false
- /@types/stack-utils@2.0.1:
- resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==}
+ /@types/stack-utils@2.0.3:
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
dev: false
- /@types/yargs-parser@21.0.0:
- resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
+ /@types/yargs-parser@21.0.3:
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
dev: false
- /@types/yargs@17.0.24:
- resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==}
+ /@types/yargs@17.0.32:
+ resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==}
dependencies:
- '@types/yargs-parser': 21.0.0
+ '@types/yargs-parser': 21.0.3
dev: false
/ansi-escapes@4.3.2:
@@ -829,17 +762,17 @@ packages:
sprintf-js: 1.0.3
dev: false
- /babel-jest@29.7.0(@babel/core@7.22.8):
+ /babel-jest@29.7.0(@babel/core@7.24.7):
resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
'@babel/core': ^7.8.0
dependencies:
- '@babel/core': 7.22.8
+ '@babel/core': 7.24.7
'@jest/transform': 29.7.0
- '@types/babel__core': 7.20.1
+ '@types/babel__core': 7.20.5
babel-plugin-istanbul: 6.1.1
- babel-preset-jest: 29.6.3(@babel/core@7.22.8)
+ babel-preset-jest: 29.6.3(@babel/core@7.24.7)
chalk: 4.1.2
graceful-fs: 4.2.11
slash: 3.0.0
@@ -851,7 +784,7 @@ packages:
resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
engines: {node: '>=8'}
dependencies:
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/helper-plugin-utils': 7.24.7
'@istanbuljs/load-nyc-config': 1.1.0
'@istanbuljs/schema': 0.1.3
istanbul-lib-instrument: 5.2.1
@@ -864,41 +797,41 @@ packages:
resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@babel/template': 7.22.5
- '@babel/types': 7.22.5
- '@types/babel__core': 7.20.1
- '@types/babel__traverse': 7.20.1
+ '@babel/template': 7.24.7
+ '@babel/types': 7.24.7
+ '@types/babel__core': 7.20.5
+ '@types/babel__traverse': 7.20.6
dev: false
- /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.8):
+ /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7):
resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.22.8
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.8)
- '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.8)
- '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.8)
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.8)
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.8)
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.8)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.8)
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.8)
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.8)
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.8)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.8)
- '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.8)
- dev: false
-
- /babel-preset-jest@29.6.3(@babel/core@7.22.8):
+ '@babel/core': 7.24.7
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7)
+ dev: false
+
+ /babel-preset-jest@29.6.3(@babel/core@7.24.7):
resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
- '@babel/core': 7.22.8
+ '@babel/core': 7.24.7
babel-plugin-jest-hoist: 29.6.3
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.8)
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7)
dev: false
/balanced-match@1.0.2:
@@ -912,22 +845,21 @@ packages:
concat-map: 0.0.1
dev: false
- /braces@3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ /braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
dependencies:
- fill-range: 7.0.1
+ fill-range: 7.1.1
dev: false
- /browserslist@4.21.9:
- resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==}
+ /browserslist@4.23.1:
+ resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
dependencies:
- caniuse-lite: 1.0.30001512
- electron-to-chromium: 1.4.451
- node-releases: 2.0.12
- update-browserslist-db: 1.0.11(browserslist@4.21.9)
+ caniuse-lite: 1.0.30001639
+ electron-to-chromium: 1.4.815
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.16(browserslist@4.23.1)
dev: false
/bser@2.1.1:
@@ -959,8 +891,8 @@ packages:
engines: {node: '>=10'}
dev: false
- /caniuse-lite@1.0.30001512:
- resolution: {integrity: sha512-2S9nK0G/mE+jasCUsMPlARhRCts1ebcp2Ji8Y8PWi4NDE1iRdLCnEPHkEfeBrGC45L4isBx5ur3IQ6yTE2mRZw==}
+ /caniuse-lite@1.0.30001639:
+ resolution: {integrity: sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg==}
dev: false
/chalk@2.4.2:
@@ -985,13 +917,13 @@ packages:
engines: {node: '>=10'}
dev: false
- /ci-info@3.8.0:
- resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==}
+ /ci-info@3.9.0:
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
dev: false
- /cjs-module-lexer@1.2.3:
- resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==}
+ /cjs-module-lexer@1.3.1:
+ resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==}
dev: false
/cliui@8.0.1:
@@ -1037,10 +969,6 @@ packages:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: false
- /convert-source-map@1.9.0:
- resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
- dev: false
-
/convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
dev: false
@@ -1048,13 +976,12 @@ packages:
/create-jest@29.7.0:
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- hasBin: true
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@20.4.0)
+ jest-config: 29.7.0(@types/node@20.14.9)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -1073,8 +1000,8 @@ packages:
which: 2.0.2
dev: false
- /debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ /debug@4.3.5:
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -1085,8 +1012,8 @@ packages:
ms: 2.1.2
dev: false
- /dedent@1.3.0:
- resolution: {integrity: sha512-7glNLfvdsMzZm3FpRY1CHuI2lbYDR+71YmrhmTZjYFD5pfT0ACgnGRdrrC9Mk2uICnzkcdelCx5at787UDGOvg==}
+ /dedent@1.5.3:
+ resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==}
peerDependencies:
babel-plugin-macros: ^3.1.0
peerDependenciesMeta:
@@ -1120,8 +1047,8 @@ packages:
safe-buffer: 5.2.1
dev: false
- /electron-to-chromium@1.4.451:
- resolution: {integrity: sha512-YYbXHIBxAHe3KWvGOJOuWa6f3tgow44rBW+QAuwVp2DvGqNZeE//K2MowNdWS7XE8li5cgQDrX1LdBr41LufkA==}
+ /electron-to-chromium@1.4.815:
+ resolution: {integrity: sha512-OvpTT2ItpOXJL7IGcYakRjHCt8L5GrrN/wHCQsRB4PQa1X9fe+X9oen245mIId7s14xvArCGSTIq644yPUKKLg==}
dev: false
/emittery@0.13.1:
@@ -1139,8 +1066,8 @@ packages:
is-arrayish: 0.2.1
dev: false
- /escalade@3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ /escalade@3.1.2:
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
engines: {node: '>=6'}
dev: false
@@ -1157,7 +1084,6 @@ packages:
/esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
- hasBin: true
dev: false
/execa@5.1.1:
@@ -1201,8 +1127,8 @@ packages:
bser: 2.1.1
dev: false
- /fill-range@7.0.1:
- resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ /fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
@@ -1220,16 +1146,16 @@ packages:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: false
- /fsevents@2.3.2:
- resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
dev: false
optional: true
- /function-bind@1.1.1:
- resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+ /function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
dev: false
/gensync@1.0.0-beta.2:
@@ -1282,11 +1208,11 @@ packages:
engines: {node: '>=8'}
dev: false
- /has@1.0.3:
- resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
- engines: {node: '>= 0.4.0'}
+ /hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
dependencies:
- function-bind: 1.1.1
+ function-bind: 1.1.2
dev: false
/html-escaper@2.0.2:
@@ -1301,7 +1227,6 @@ packages:
/import-local@3.1.0:
resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
engines: {node: '>=8'}
- hasBin: true
dependencies:
pkg-dir: 4.2.0
resolve-cwd: 3.0.0
@@ -1327,10 +1252,11 @@ packages:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
dev: false
- /is-core-module@2.12.1:
- resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
+ /is-core-module@2.14.0:
+ resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==}
+ engines: {node: '>= 0.4'}
dependencies:
- has: 1.0.3
+ hasown: 2.0.2
dev: false
/is-fullwidth-code-point@3.0.0:
@@ -1360,14 +1286,14 @@ packages:
/isomorphic-fetch@3.0.0:
resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==}
dependencies:
- node-fetch: 2.6.12
- whatwg-fetch: 3.6.2
+ node-fetch: 2.7.0
+ whatwg-fetch: 3.6.20
transitivePeerDependencies:
- encoding
dev: false
- /istanbul-lib-coverage@3.2.0:
- resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
+ /istanbul-lib-coverage@3.2.2:
+ resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
engines: {node: '>=8'}
dev: false
@@ -1375,34 +1301,34 @@ packages:
resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
engines: {node: '>=8'}
dependencies:
- '@babel/core': 7.22.8
- '@babel/parser': 7.22.7
+ '@babel/core': 7.24.7
+ '@babel/parser': 7.24.7
'@istanbuljs/schema': 0.1.3
- istanbul-lib-coverage: 3.2.0
- semver: 7.5.4
+ istanbul-lib-coverage: 3.2.2
+ semver: 7.6.2
transitivePeerDependencies:
- supports-color
dev: false
- /istanbul-lib-instrument@6.0.0:
- resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==}
+ /istanbul-lib-instrument@6.0.3:
+ resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
engines: {node: '>=10'}
dependencies:
- '@babel/core': 7.22.8
- '@babel/parser': 7.22.7
+ '@babel/core': 7.24.7
+ '@babel/parser': 7.24.7
'@istanbuljs/schema': 0.1.3
- istanbul-lib-coverage: 3.2.0
- semver: 7.5.4
+ istanbul-lib-coverage: 3.2.2
+ semver: 7.6.2
transitivePeerDependencies:
- supports-color
dev: false
- /istanbul-lib-report@3.0.0:
- resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==}
- engines: {node: '>=8'}
+ /istanbul-lib-report@3.0.1:
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
dependencies:
- istanbul-lib-coverage: 3.2.0
- make-dir: 3.1.0
+ istanbul-lib-coverage: 3.2.2
+ make-dir: 4.0.0
supports-color: 7.2.0
dev: false
@@ -1410,19 +1336,19 @@ packages:
resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
engines: {node: '>=10'}
dependencies:
- debug: 4.3.4
- istanbul-lib-coverage: 3.2.0
+ debug: 4.3.5
+ istanbul-lib-coverage: 3.2.2
source-map: 0.6.1
transitivePeerDependencies:
- supports-color
dev: false
- /istanbul-reports@3.1.5:
- resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==}
+ /istanbul-reports@3.1.7:
+ resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
engines: {node: '>=8'}
dependencies:
html-escaper: 2.0.2
- istanbul-lib-report: 3.0.0
+ istanbul-lib-report: 3.0.1
dev: false
/jest-changed-files@29.7.0:
@@ -1442,10 +1368,10 @@ packages:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
chalk: 4.1.2
co: 4.6.0
- dedent: 1.3.0
+ dedent: 1.5.3
is-generator-fn: 2.1.0
jest-each: 29.7.0
jest-matcher-utils: 29.7.0
@@ -1455,7 +1381,7 @@ packages:
jest-util: 29.7.0
p-limit: 3.1.0
pretty-format: 29.7.0
- pure-rand: 6.0.2
+ pure-rand: 6.1.0
slash: 3.0.0
stack-utils: 2.0.6
transitivePeerDependencies:
@@ -1480,7 +1406,7 @@ packages:
create-jest: 29.7.0
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@20.4.0)
+ jest-config: 29.7.0(@types/node@20.14.9)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -1491,7 +1417,7 @@ packages:
- ts-node
dev: false
- /jest-config@29.7.0(@types/node@20.4.0):
+ /jest-config@29.7.0(@types/node@20.14.9):
resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
@@ -1503,13 +1429,13 @@ packages:
ts-node:
optional: true
dependencies:
- '@babel/core': 7.22.8
+ '@babel/core': 7.24.7
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.4.0
- babel-jest: 29.7.0(@babel/core@7.22.8)
+ '@types/node': 20.14.9
+ babel-jest: 29.7.0(@babel/core@7.24.7)
chalk: 4.1.2
- ci-info: 3.8.0
+ ci-info: 3.9.0
deepmerge: 4.3.1
glob: 7.2.3
graceful-fs: 4.2.11
@@ -1521,7 +1447,7 @@ packages:
jest-runner: 29.7.0
jest-util: 29.7.0
jest-validate: 29.7.0
- micromatch: 4.0.5
+ micromatch: 4.0.7
parse-json: 5.2.0
pretty-format: 29.7.0
slash: 3.0.0
@@ -1566,7 +1492,7 @@ packages:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
jest-mock: 29.7.0
jest-util: 29.7.0
dev: false
@@ -1581,18 +1507,18 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/graceful-fs': 4.1.6
- '@types/node': 20.4.0
+ '@types/graceful-fs': 4.1.9
+ '@types/node': 20.14.9
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
jest-regex-util: 29.6.3
jest-util: 29.7.0
jest-worker: 29.7.0
- micromatch: 4.0.5
+ micromatch: 4.0.7
walker: 1.0.8
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: false
/jest-leak-detector@29.7.0:
@@ -1617,12 +1543,12 @@ packages:
resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@babel/code-frame': 7.22.5
+ '@babel/code-frame': 7.24.7
'@jest/types': 29.6.3
- '@types/stack-utils': 2.0.1
+ '@types/stack-utils': 2.0.3
chalk: 4.1.2
graceful-fs: 4.2.11
- micromatch: 4.0.5
+ micromatch: 4.0.7
pretty-format: 29.7.0
slash: 3.0.0
stack-utils: 2.0.6
@@ -1633,7 +1559,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
jest-util: 29.7.0
dev: false
@@ -1674,7 +1600,7 @@ packages:
jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
jest-util: 29.7.0
jest-validate: 29.7.0
- resolve: 1.22.2
+ resolve: 1.22.8
resolve.exports: 2.0.2
slash: 3.0.0
dev: false
@@ -1688,7 +1614,7 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -1719,9 +1645,9 @@ packages:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
chalk: 4.1.2
- cjs-module-lexer: 1.2.3
+ cjs-module-lexer: 1.3.1
collect-v8-coverage: 1.0.2
glob: 7.2.3
graceful-fs: 4.2.11
@@ -1742,15 +1668,15 @@ packages:
resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@babel/core': 7.22.8
- '@babel/generator': 7.22.7
- '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.8)
- '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.8)
- '@babel/types': 7.22.5
+ '@babel/core': 7.24.7
+ '@babel/generator': 7.24.7
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.7)
+ '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.7)
+ '@babel/types': 7.24.7
'@jest/expect-utils': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.8)
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7)
chalk: 4.1.2
expect: 29.7.0
graceful-fs: 4.2.11
@@ -1761,7 +1687,7 @@ packages:
jest-util: 29.7.0
natural-compare: 1.4.0
pretty-format: 29.7.0
- semver: 7.5.4
+ semver: 7.6.2
transitivePeerDependencies:
- supports-color
dev: false
@@ -1771,9 +1697,9 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
chalk: 4.1.2
- ci-info: 3.8.0
+ ci-info: 3.9.0
graceful-fs: 4.2.11
picomatch: 2.3.1
dev: false
@@ -1796,7 +1722,7 @@ packages:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -1808,7 +1734,7 @@ packages:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies:
- '@types/node': 20.4.0
+ '@types/node': 20.14.9
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -1841,7 +1767,6 @@ packages:
/js-yaml@3.14.1:
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
- hasBin: true
dependencies:
argparse: 1.0.10
esprima: 4.0.1
@@ -1850,7 +1775,6 @@ packages:
/jsesc@2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
- hasBin: true
dev: false
/json-parse-even-better-errors@2.3.1:
@@ -1860,7 +1784,6 @@ packages:
/json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
- hasBin: true
dev: false
/jsonwebtoken@9.0.1:
@@ -1869,8 +1792,8 @@ packages:
dependencies:
jws: 3.2.2
lodash: 4.17.21
- ms: 2.1.2
- semver: 7.5.4
+ ms: 2.1.3
+ semver: 7.6.2
dev: false
/jwa@1.4.1:
@@ -1919,18 +1842,11 @@ packages:
yallist: 3.1.1
dev: false
- /lru-cache@6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ /make-dir@4.0.0:
+ resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
engines: {node: '>=10'}
dependencies:
- yallist: 4.0.0
- dev: false
-
- /make-dir@3.1.0:
- resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
- engines: {node: '>=8'}
- dependencies:
- semver: 7.5.4
+ semver: 7.6.2
dev: false
/makeerror@1.0.12:
@@ -1943,11 +1859,11 @@ packages:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: false
- /micromatch@4.0.5:
- resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ /micromatch@4.0.7:
+ resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
engines: {node: '>=8.6'}
dependencies:
- braces: 3.0.2
+ braces: 3.0.3
picomatch: 2.3.1
dev: false
@@ -1966,12 +1882,16 @@ packages:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: false
+ /ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: false
+
/natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: false
- /node-fetch@2.6.12:
- resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==}
+ /node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
@@ -1986,8 +1906,8 @@ packages:
resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
dev: false
- /node-releases@2.0.12:
- resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==}
+ /node-releases@2.0.14:
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
dev: false
/normalize-path@3.0.0:
@@ -2045,7 +1965,7 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
dependencies:
- '@babel/code-frame': 7.22.5
+ '@babel/code-frame': 7.24.7
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@@ -2070,8 +1990,8 @@ packages:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: false
- /picocolors@1.0.0:
- resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ /picocolors@1.0.1:
+ resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
dev: false
/picomatch@2.3.1:
@@ -2097,7 +2017,7 @@ packages:
dependencies:
'@jest/schemas': 29.6.3
ansi-styles: 5.2.0
- react-is: 18.2.0
+ react-is: 18.3.1
dev: false
/prompts@2.4.2:
@@ -2108,12 +2028,12 @@ packages:
sisteransi: 1.0.5
dev: false
- /pure-rand@6.0.2:
- resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==}
+ /pure-rand@6.1.0:
+ resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
dev: false
- /react-is@18.2.0:
- resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
+ /react-is@18.3.1:
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
dev: false
/require-directory@2.1.1:
@@ -2138,11 +2058,10 @@ packages:
engines: {node: '>=10'}
dev: false
- /resolve@1.22.2:
- resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
- hasBin: true
+ /resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
dependencies:
- is-core-module: 2.12.1
+ is-core-module: 2.14.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: false
@@ -2151,12 +2070,9 @@ packages:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false
- /semver@7.5.4:
- resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
+ /semver@7.6.2:
+ resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
- hasBin: true
- dependencies:
- lru-cache: 6.0.0
dev: false
/shebang-command@2.0.0:
@@ -2311,29 +2227,33 @@ packages:
engines: {node: '>=10'}
dev: false
- /update-browserslist-db@1.0.11(browserslist@4.21.9):
- resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ dev: false
+
+ /update-browserslist-db@1.0.16(browserslist@4.23.1):
+ resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.21.9
- escalade: 3.1.1
- picocolors: 1.0.0
+ browserslist: 4.23.1
+ escalade: 3.1.2
+ picocolors: 1.0.1
dev: false
- /uuid@9.0.0:
- resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
+ /uuid@10.0.0:
+ resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
hasBin: true
dev: false
- /v8-to-istanbul@9.1.0:
- resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==}
+ /v8-to-istanbul@9.3.0:
+ resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
engines: {node: '>=10.12.0'}
dependencies:
- '@jridgewell/trace-mapping': 0.3.18
- '@types/istanbul-lib-coverage': 2.0.4
- convert-source-map: 1.9.0
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/istanbul-lib-coverage': 2.0.6
+ convert-source-map: 2.0.0
dev: false
/walker@1.0.8:
@@ -2346,8 +2266,8 @@ packages:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
dev: false
- /whatwg-fetch@3.6.2:
- resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==}
+ /whatwg-fetch@3.6.20:
+ resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
dev: false
/whatwg-url@5.0.0:
@@ -2360,7 +2280,6 @@ packages:
/which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
- hasBin: true
dependencies:
isexe: 2.0.0
dev: false
@@ -2395,10 +2314,6 @@ packages:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
dev: false
- /yallist@4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
- dev: false
-
/yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
@@ -2409,7 +2324,7 @@ packages:
engines: {node: '>=12'}
dependencies:
cliui: 8.0.1
- escalade: 3.1.1
+ escalade: 3.1.2
get-caller-file: 2.0.5
require-directory: 2.1.1
string-width: 4.2.3
diff --git a/hasura.planx.uk/tests/portals.test.js b/hasura.planx.uk/tests/portals.test.js
index 6511576507..7d34edc4f2 100644
--- a/hasura.planx.uk/tests/portals.test.js
+++ b/hasura.planx.uk/tests/portals.test.js
@@ -9,9 +9,9 @@ describe("portals", () => {
let res = await gqlAdmin(`
mutation {
insert_flows(objects: [
- {slug: "TEST_root"},
- {slug: "TEST_portal"},
- {slug: "TEST_subportal"}
+ {slug: "TEST_root", name: "Test root"},
+ {slug: "TEST_portal", name: "Test portal"},
+ {slug: "TEST_subportal", name: "Test subportal"}
]) {
returning {
id
diff --git a/hasura.planx.uk/tests/s3_applications.test.js b/hasura.planx.uk/tests/s3_applications.test.js
new file mode 100644
index 0000000000..913e95cb8c
--- /dev/null
+++ b/hasura.planx.uk/tests/s3_applications.test.js
@@ -0,0 +1,79 @@
+const { introspectAs } = require("./utils");
+
+describe("s3_applications", () => {
+ describe("public", () => {
+ let i;
+ beforeAll(async () => {
+ i = await introspectAs("public");
+ });
+
+ test("cannot query s3 applications", () => {
+ expect(i.queries).not.toContain("s3_applications");
+ });
+
+ test("cannot create, update, or delete s3 applications", () => {
+ expect(i).toHaveNoMutationsFor("s3_applications");
+ });
+ });
+
+ describe("admin", () => {
+ let i;
+ beforeAll(async () => {
+ i = await introspectAs("admin");
+ });
+
+ test("has full access to query and mutate s3 applications", () => {
+ expect(i.queries).toContain("s3_applications");
+ expect(i.mutations).toContain("insert_s3_applications");
+ expect(i.mutations).toContain("update_s3_applications_by_pk");
+ expect(i.mutations).toContain("delete_s3_applications");
+ });
+ });
+
+ describe("platformAdmin", () => {
+ let i;
+ beforeAll(async () => {
+ i = await introspectAs("platformAdmin");
+ });
+
+ test("cannot query s3_applications", () => {
+ expect(i.queries).not.toContain("s3_applications");
+ });
+
+ test("cannot create, update, or delete s3_applications", () => {
+ expect(i).toHaveNoMutationsFor("s3_applications");
+ });
+ });
+
+ describe("teamEditor", () => {
+ let i;
+ beforeAll(async () => {
+ i = await introspectAs("teamEditor");
+ });
+
+ test("cannot query s3_applications", () => {
+ expect(i.queries).not.toContain("s3_applications");
+ });
+
+ test("cannot create, update, or delete s3_applications", () => {
+ expect(i).toHaveNoMutationsFor("s3_applications");
+ });
+ });
+
+ describe("api", () => {
+ let i;
+ beforeAll(async () => {
+ i = await introspectAs("api");
+ });
+
+ test("can query and mutate s3 applications", () => {
+ expect(i.queries).toContain("s3_applications");
+ expect(i.mutations).toContain("insert_s3_applications");
+ expect(i.mutations).toContain("update_s3_applications_by_pk");
+ });
+
+ test("cannot delete s3 applications", () => {
+ expect(i.mutations).not.toContain("delete_s3_applications");
+ });
+ });
+});
diff --git a/hasura.planx.uk/tests/sessions.test.js b/hasura.planx.uk/tests/sessions.test.js
index 83f91797f1..54c7a615a2 100644
--- a/hasura.planx.uk/tests/sessions.test.js
+++ b/hasura.planx.uk/tests/sessions.test.js
@@ -80,13 +80,15 @@ describe("sessions", () => {
`mutation InsertFlow(
$data: jsonb!,
$slug: String!,
+ $name: String!,
$teamId: Int!,
) {
insert_flows_one(
object: {
data: $data
slug: $slug
- team_id: $teamId,
+ name: $name
+ team_id: $teamId
version: 1
}
) {
@@ -97,6 +99,7 @@ describe("sessions", () => {
data: { x: 1 },
slug: "flow1",
teamId: teamId,
+ name: "flow 1",
}
);
flowId = res2.data.insert_flows_one.id;
diff --git a/infrastructure/application/Pulumi.production.yaml b/infrastructure/application/Pulumi.production.yaml
index ef34071a3d..60e7802b58 100644
--- a/infrastructure/application/Pulumi.production.yaml
+++ b/infrastructure/application/Pulumi.production.yaml
@@ -21,6 +21,8 @@ config:
secure: AAABADo05EPv/HWj7Rkf19nBeTcPJd4pEcRi2/uhyB3agraFODpLvNMx2bXfISf5pZ4HA41GYCE4f7OLcJN6hIV6ZMWUlEriPzvkoUAixbLlz1LIERiyk73R8E4F2bV65/9aFqi4l7caLS5c8iDJrE+JAvu2i7oS
application:hasura-admin-secret:
secure: AAABAHfDtVpAD8w32yINWTjgvuRQixWXYFf3/rEcyh59/pRSz+J4ZYCXNq5jqBiIXM2emB+7zOY=
+ application:hasura-cpu: "512"
+ application:hasura-memory: "2048"
application:hasura-planx-api-key:
secure: AAABAExsXFL7HabeK0Z1oSUJzI2NqVqEmKJ1ojYXyX4Hi8Sbt1Ht9QJc/Yn3cPBAB2r32HKa4HtqqLmfGjS+04lFB/I=
application:jwt-secret:
@@ -55,6 +57,12 @@ config:
secure: AAABADIUwFlpmPKfH8fQoNkOe9z8xCwnQgCrV1jxoPTtgfpL9GmImtNx0AnL6HUgkndlUgjCtArhChDN2rdepbgvBV2IZmZ3vds8LvRnBwwLKdxWvNwC6LBQnmWo4oac+VU1XoEOrs+kIDnPqFpkCwyxwySw3FzEmRzUoNLUlGun+ZKTtgtPgYcBNL4P9A73WAvzNlSX2mmRB7lVcEKqSB8SZ3/kEgGbgQ9PyDmHON78RBkaHBT5i0wHP9O1fulEoJ/w9D1S237JagtKzqeb81KUcqWTYLHUwuWKM2pmY4LpVKWOJM8d9PI7gYNQB4YKj/y1mSViK7PuSdCpmPchHER2WN+Oil7z/T47DQevp46Gthv5Von7ZEtoo1kw7aYsRxcUSl+pvVuOMzgP3bw3GS3YKksBsxA8WOlm+bKbyXoHVm/nrFuoSeTmBFUz+sb4VrWDDlF8c+XIe7SRjekk0Ld6Xr8qMPcRjOxj5wtTTPnsaetBmb9FERCa+IW91e37rMUitctX1QqF05SaajJ9oBwJoWQXxIMJ05OltWV1bLW1qdWAcqwFQMXsivo1/xFSjeeUmlld0ba3fjQcdMIvuXOLLVyYQpFPyxKMV1DT4Z+NSRkbBzOP9DtIB2pVp98QeKs3Fovd7mKS6ThGGMdYsub3o3TKg+pAh/KCffe2+MHRyP3Cwz7M7qJ/33puo4HGirTIJdV2nMRBroFyWU5mO8PFBdBgMeSP+zefu0QYpv1ifTv39Xoao4L0TXnj+mT2cO9oZknrH/ymyqTsLHj3Mrn200hZLhp1UhbATzEmHw+6KDMdgpADJRqsDIhtr6MOMa9Q9A1q2Kbk57XSxhP43xA8bZN/BIC+swTUCehFmFD5YeJtjYOD1TnEJPgYnsDtyheenblxfwVhmFT7kxMs8zV6QPLukKKBhkmk7OnyjjMxsJC7/B3SzajDpHqstjZkK+jklE+gQrJxxukVOwiJsBoXzya4aIBeRDEcQRxBK6nbjQOFAUoa5eMID5LAj33tXgXdyM8pdoNM5vJUIXJc6IhWaPUlDPTEwAdehtC+wNEqzeloNQxzCaZ/XsfMTrNcUpHrJcF+xFEcWA57OfiSDyNd3VyMFUQV87NJF/ifg1jhFNl4KxI/md5oUZOX97F314C3YEwsbQy9/2b/WbmnuMhgPpT4QYLDnYqn7Y9BbsBD2eR1U6NvLxJy8H83nCfEfUvRvJ1cmV5IiXnHaF8HC3/ThNjMM7CQaxWLWM4fkDQApEmUU34yL068daNmy3mEbDa739X/zCPNh9295ruyFT74n8Iw4XWCMo/3v0vNVDCRyV5pI4vaEj1GOQSNMLa8CHjXL1T8RKl8b93GXssVRSbDf5WoBcAt0v35v0i5Lq5jTVZjUtlftPVelhI/CLrdP5+5KFaj5M3PX6SaPSO6DbzFjLeCKDu0+MhITp/2iFR5zP1qFHb0fTnIhdKUHGSb88OKUZ8B3eRQRxJrauYcAu0ezx0fOtlEpaZ2E/yUhB4KxXEBCHXkKg1fvoziX/fgsdZGXGdjDzaYhtWxSGsHjQfkGSgaCZ5JY0bwB/Gp6obQlfsJZrFKPCMo+qeRMRv0okEFtlO2Vp7WlH2NjaMZffaXZ2TRsFvMfT2XFNCXF+3pAM9RU8gmN1j/ZULCFsmFJbgJprjNK4KvCjMZmFLUzm7G6+ul6recIcUufwKRm6kmJnJgJIMvz8mbsTU/NDAMLLak4MeJxCzRVXWbXBpv2J6ol15Q89D4eNgdSQKFBjMz7/SnTG06k+kCT1y24+0xAJU8x3BQmpN8ExFnQBzbCyaXkSLPxkt8Y9CJRSx+nIo35sTcVNsu9yw1KNH4+X2qAads55wGFBNy6ucZ2ngI2pnFGfEGNbXv2ZnjB2p8z+UiIHLnBk7Y18Blqvin/guZ4jimpEL0Tuq7Voinrz9Wn4/fwTj0UcMan7UqIq4x4p/C8QiWsYQq/WXlXJqE3XQ0cTsP3cIB1cEFBGGvJhoebBDECyGFlHxW/hTn2RdLApRVF5TAIo02nHcpji0XAT3ctlEKF/4KuFb7RtvNo/OpXDWb44JCt400Wuta1y1I4hDjCtA60pKIA3sBRmkGv3asxzgWYlftCyGLihZNwsPIA/WvGZTSeIY+9I+Ns69YxYxQYHx6Yk/sH0YgkTIau67n4SpbTTQHmNjdyhHapIeutQ9tpmPS06lrqEP7vuYryGlfK/a96MsHPUHJH015zxFDEw5RxeYvaVPOVAB2zA8TMkhGUw8PmAJPpCrT0oUhIFgVt7H56Lj3A/EKlNnFYQbrL6eUB6xl4I1eeUOsDGmgZxDioKQY81wyEjpuI8nSgDlJXg7j472Ol1Oj2AQBIMxa2RprpUwbZ0+6O/+w1jq4Ywy766PDSFj5HGQAxO2EfG+x+Tp9lPS+lhB/O6k1xZ2c8vT8UQjCZI4CCQMLgZcjgy4m+Bj01gJWgyLcLhAF2gfp9mgaoGkHWN24Gu4rykGwr7EJvmffA0U5+RRlkGkSvgjTqnh577o2gw5jyZvGCUUcxb89BAOg63JoZyeZVxpr+mBiASDhafJ1OYo1s1yUUP6dujlpGs1vWWkLeY7kx4LHITrMJw3N+YBGV4gKyRmAzqqNgjsPBAZuq6vW+I6US7Ohdrpzkv1NzXFaLK3o8wU9lbHfC6D/CiB6w6ypdGxWZ+PJy8NHYUwFdfM8nLyd7XjUxcOpdO4y/TS/9r4+FXCnoqIsEiBNXatQvfYdbNmbEGIILgXgBBI7BPZ3A8+U98yaUzgMzXBhOi5Vqn5QA+Yeb9yZdqgGgOJqblm9KgwMXQxwwCfQGTri1hTlP6ZemZNJTgkZph3UhS48MfMDHqoDstYE8gZeALSgDDB+H0dvkCBKT6AcIRejulORkBevz8ZFtQm5xws7EPcscP+1/KxuXzHfsYuf1CLrOIf7K8ZzofksqDIuu8XaDwEfGP9FVOjaohS7kUtyJmT6M2B7HM/lPLopns+CD1nkSPNPIvA9XZHNAdfL7887+1dSMcE1t6m1Rtkee9K8JrREHuLoWZzUHMjo18gBYzX3JJQSykKfy5ZTcqBjfp+j8EjbCV9x8/VmMfjZ6TApf2TDhGxihLBkBKFnSSymCfsVNPv9fBUXYPH3CYHs2VAQUOhh2XYDQasfUbYbtgnOSJfgtCdTHVHB5cYwG4ZrTIA68LJhjrc660bkzeXTAxn6P3o5bRKyqDCAOGqyv0M=
application:ssl-doncaster-key:
secure: AAABADjezySsYE1/SQmPh9oTRvK0m2tnDSBWUL4j1n9ahASsy7qqkJr5eL2IV9yfW1FP11Gj0XViJ2MviELA9ahrnzrcJVBTqlQKpVRYA3p5myLLmI1ntbr3Y+ZRtzVGQbEHnGr1kerLK03YsGJNLgNw1QWeO8tCHF8+FpJqyxhCPSHV16lBVTjsDxMOBc6rLC/dtI00edcq2x7N0Auhyr/sCauGis/GgYAH3On3HdUSQUvELPFFWn/4Ce8bUzIZ0tywvoy0BqQPO2cHKQyEBhb+Gavj/6Zb2MSvj5xen2/B7BZ2oxq7Xpui1X4nDGqBPf8xdXRlTrt9jIQnpvrqec/A729uXMyngpPBr3vg0wPzdqiUbvMVv13DV0XpdQr6NYf7UdKrQ28yd+37WPMRd4oLynfza3j9FJdqQG01DkLWsEOZa2qpDmg5Edj18fy3KRDe5HIrjCnAsn54H7Q00jggq1Yl31Y/Q0YHc0czDuD2/NTn7SyjBks4gM0QG9rv32U2Co+Z1rzBL94vLmBUNGLWF2IvU1eElkH56ATNR+I7uHXl+AvzsvKqGlY7+UKmna+qlSUI+86kCMb/xltD4nGgu1pHpkT6LptC0xFIPTFL5yH0ZsQ6aEUO8t9BBPRvE5AU4C5zM3Lb7iUI0jX31+Q9ZeslixE/fMBRyjDM4lakvGEVYO88PYtS1cl2JC4Ro2dL5eNySkkPIt/bu0QEPnfVrWZfTFeM9dGiDUG66iWxi/eEvLV53D7AbuhbOSD1J3VILgVmuefHwDAgoPOeUZZGKIiZgFHssn6/Owv3mCYtywtiwv517T9TrR1/RjqT0sAFp33xwwzpQr4X7RLIZUgfhg26bM6l/Tvl7+LLVmbttMWDFnjHM1EdeyDM9gBonOIuwUYIjl80RoD5ezJ9aafQcM2CdbPNsBmzlbgln98YR8Tm7QyOpxzLr3YOp5QLpZ/FGFHSNh1qvfELXU9LeFAhShlrZ3p7Nf6R4rynAl6eoDU9EMc1w8ZfBxoAtxYF41zbzDwgjwUvYmRtUWQa7foVtSTJGQx8ypZlaVP3W47Kq8jTMRkgKKkJvxgB7RErfVeL9GpRXHTZkD/i1kSM15zg4T02ijBHAb54IRK196Vf0yUR0eFP5mUXeEFdcsRMwVBaNYrQhWMmx0aiQWS6lRK+n/eDv5klGnSl9iUKdBvyjXwXVzNJYjJlZPIXYn0xKfG/zClwDxfr4K0Hg4H3lSttu/+hyyxHJi5tGctMXeVvkRj6gCINSiVv2/fEwk3IeaGyRz6o0YiPlt16q41JepwjZhA+7DtNS8WE+aoPcb5hN1lmlKFlvAj8yQ4MYEJLXdj13ZsWoXfdJAh+0W9mKk7hnNJer9954poHRtD1AFVgeIZfTFkKdmkD+SVay3BvqXjcEmWtF1VB8d2VliP33ZNo/J6VWDeKoAJ/se9x9qcu/yOke+Cijd9qZPQ09uzdxOHX+6bGvF5YWjiln8EK6RM49TAfAq9vtt1R5X4DvEQbGxkb5TLpoURKqV7DeQUmcymNJ+55zjKR58177z2LuqFquhwl9dHy65sYB8Rhmiiv/hQBdsNELSy+f0Zy8d2EWw97nPLTqUBJD5iDP0H7dis7BbHZnoHBZS9MkidJgHqlZNLFrmVK3F4YU+9juWvAK3XkTZgx0r4y72cMRwJ3GcKfumI2u7cMEbimmtsx8/qhej0PTf7bXoGaQWmboQE5D89wRACoAqpOwC0G/BJ54qYZP1q7lwU6Ku97sueznkNKE5A2dokDR+gnm3uy+mbMJI6NUOfKJCgrnoxkTgCVcIHwMGHG1u9VED1A6GBDFfO/5Wvx5BI/jihO5+vfvr49UFFAz5Xah6kjIFH/S47AnTVHfbRIH/22z7BMOJQMt4kZ3ZklyVnMfdQtIK1YPlgtN7eXgH+F3OvH7K1RDW5vUvFk64LWIlb/8EoaF+TALb8ZSx2Zv8xLfm1NjLuztvQkSot7jhRTo23XjDJfxf/e8Aaqjmlgl/CDVC62kq7Wt84BaP8r/pO4+KAAxb8plYzhzK7M1m0QOOvk2Avb80TamNeQjLX906GUpsEI61mEZAYm/NJFENpA/5Rh1HLI2lAKmyEi9bcQ1QoscoO8HIKKjb7uIj8t6bvpy8JAGlqx3Yq1S+yBYqFdPpYJEzW0DrPdDR55B6KD/HfEt0t2KpehCJk40uzfmBMyRv6MqP7uRb6O49pkBj6lN8+NUM8PUBMcT2T4IvxvID1zhyDAo7KIqS0IpMJUOactGyI=
+ application:ssl-epsom-and-ewell-cert:
+ secure: AAABAN1YNPGTbUk3OK/j7777E5fs37UbfLwG6ZWhnbNZKpki4rYk6SEw4m3bK3c5NlizygvjIEonsDavi5Np9Bcl3eRbUZCdTfJ3zKYkU+jn1RYwAUsqUxLGyZvv9XLptWb1Ykq2ewsgzmxnWF7oEndXuyuCGdn7B4V1RUmMH+s9sFVBGHWx+5v3dp3KCOHcz5mbZ7/bJIBikXFDkLIsEq6ZvviElNTiWBjQvDm7xZ9UYgmuLIUMALXHSxJFy9vFNYwnMmr8OcpUSgssX7g/cDCo39Xe7kWQRdH0lnmiPSChKSIJRsM/d9FZ1ZffUGXU4GeJmOdHNTI3q/hLDwfR7zRQWNeNHH9o22nikf2OpViviz6iVvD/Oy6SOxoH5RG5G3n7dQzHKV6bS51bV0w1PrBPD3UmL1nCK8AQlsuXf9FDXn7jEpijycQVEXQnHrCZ6WY+UrU2yJsX2gwnXAAdEGusJEPgHjYDanTgmMwRYJ+v8QV8BmykjqI/eMVOzZh7Kernd9RYu4Z3SCqarrpdLin1xIgdPXwB8wcgWj8K8lyCos/0FGSGLmFNGvvZy5J9z4hhLdIqOgUjpuZe4C5w9h/IBrkJJuVeNpzM7A0fcqcv7B53KQRgas9bH2CHT11+ymC/MY5/9IjchWIDkaksAfWAiIKAEVX9sCiEF7D8DLMkL867rhQT1w/2udvx5IambfvDZxw1NwybdiOsh1xdEfT8Rgs4t7s6FSek8xy1Ohzp7kmrqy0EqIG+8PNhn7AiaevgICqwTlHTvYKg1nzsscSSluva07Ww8Z2nOy6LDv9aJhxZI9kwVSuXZjn5WTpWN6WPHy/198J6R1SSSPMRqegvWFoN2pGELuh+TGudMFwypPkj/EwhW+60YqBY+jKL6bp3AZvFUZ35vU9LFxQXQr4yb6Irfh/G2gzP85M5JIQxEUAiLuY0VqAUlgD+XjlwRb4W90DNEx7dsRKt3+bpiFnRrXY8UGnfzay8+P4Rp0c3ObDuevU6lKGYXe7lHtmWc57qEWgYbXTgOt7ntKqZsdJ0NvGwGwBCISoYPYYTMynTmWWBWBpDBx7IBssdBdMRF0eRLdXzZDEHzg822S04DWHVQwUfYEN/24UiQ/78UaVVuYn7d0G0Xf61Cq7n95n+mEuQ75Eh7km+zPZTBlY6c3RJpYqZHv1UToFfgdBxX/yz5+1de6hXFkL6QcdXTFOiYEn/Pw6cpdpvHx0/81bCLTQOg/2YxdAgGJTv1J0Ko/sf5JkMJagDHVbOMquiwJ0UKV4Lm+vAgEtO2IQ/EM4p+syRcuVdhmklKGXLRBYHO4t7JxKSAKbyAj46AVcm5QcdVvWnVe1bBeks/y4nybJCbh/LLbyBKxCPTzd2aHa5lJ1zBEVw2YABKre+OgQW8g9VsMU05vqxj1mIVwZfCkwNIXTJn4vlwUA1h9plTW9vgTRqCBCfuuZI7uZtoeZiVpSfVO4/8bzoKlf7jGC+9MVUkVCBdWBMk3AvaaEyQ8ll71CyJJlM/EHQ3RKQNZUNnpR/uy9W+H8K7mN2ExvA+P043TshMP65H8Lq7gNsvztUVFpHQN1EoJhbh3DQ6QDMhLnqTH0BIqKJu2Jw1wHoLA0McCALbJzovCowcgQ1BEUP8cSHFG4BtUWNJEh8IM6lv+LoWNYH5LOA8+Jcd6Idb8xbLQPGHW70CHb5X5egK6dt7cbfWUl93pZMKcgy1Ar+O+k6hCycsqWVM4KX0taYHkfZzKjRVud41W2MxkUdfZN7MK2ou8qIpvpHb+1Lvnv0K7AzGyFpXwaNdY4D3yDTo8vWY7VMo+l3N2gYYkoAgRAPUL/niLfTqxnl4bnt19RmBVDgteLAd+ShIVvbuNy/GLAqw/NhaKwtxQFHeIXL6BlA125l/xK9uAz9zhazHmjG5MhdnBEs8VX5NljOOKsR1kzIE4HzBo4rIpbuIesIrUXtH2gnxhkngajjfhl8Mcbl/zg+VWkzsLw0B/uCtfEbvTxcBgvFgqmRQhxMmujorV9gDmwX6w65Rl4zA9PS2vhyzhy3v5JyoItbENF3FQTU0xermBolWpX5WAGGwBJMYbT+Nrrm908rbUF8DpLtfQ0VkieAmczIUBuLDqB7XWYRDgl1OVKZqRXnbrl1sK0GCEg0NfG+i8ow6/UP8nnwTVjKGtng3lecvSlaPZARLxAlKHyrZHf7XJRbqMwG4RdGXslrDmUboh9XQYfhWRJZNtv4gL+WGkiR3anq9dVJeOwzNM+exXYwu4bgy1Q8sWLZyIvitEotEXDZEILOdEP691KjryzY1SvquiwdXKET6gYpzmMCsU4yh/W4LZCwy92lBEXj9umEnGC191VPtCOfxWjaX7q9AVwtgJS8eDH65lMAuP+EFaiBQSitbZHjeTVhYj8cIkI75qdcGVcrKRkSI5JULYgud7CUhnb9VFSPRfJ5lUbEFQFMBKH5sZmav/gjZswcPJLo1CmEIqqwCRMVxJ0qf4QUvASQdR6q5P5oljHEmmuCBISsUunqOZeKP0xxK++K89/RWtQYNvGL7rvCVar52K+lqGeK2LuOg61Duw2juvK9MMJ6OVIQzR9erWojtn4TyXLDeqefj0DSA/+MphOeHxQxX+oPCOrwMgpeqymABSXyFASiYd2oBaCvaywqHKzJGAKM+DgIJKtOixwWMSC7gDqlp8PBcG4Xzs+exTrQ4gltiuS/PylJ2KLlFh5VdNMcDNRX2/LcnAMewUS1SJYycFHw/kPONBNFlLIn1OWIuIqEceH5EDQxkfmEJoHcFBGQcCQ2dIzfggQAqSZUHlUSoUa+iLWZIQfBM8jr1/awKWP4i7a3KDL9VRhU9tO+kqJyh8pRan7B0FZCg8kVuv1YRnpz6Ucb/lJxqv4I/qse8XTem/3YWrbezT1Pz7EepwkccYO8t+do55iARGYTPCCxulnwU2rH+rzoMkMQ0znk+X1V2uMz7XvX5S567NOoIsAD38GinyTiv0MUE3EAvvPISTi7rxCILHN/3H5pXffJ+DQk2/x2UMzi8YjwymA5EZpe0ArWhyi4JUCRxQHUqRvhStYkLACqzqAYYx8U+kmhM2b7HkFdN+dJuxYwV4hCqlc+N2ViKwEZY42MCkihugH5BiAPsAYCQ96dnihp0bh02rXuTN9l3n+DlBdM3LHfOaT2GQw0gQwlSQtwiVhLqHKT2oRJGQUXOCE6O46xtXdYdtGqP5I4TEkL0wHkHHfrwb/0CzKn0SvzWk2NkSubpBttsSzhYcjrbhqZCPQt2uF7KrCKaGfeM+AL2HSKwY4OKCkgPpQe6f+E+/Y/71pwWKHHvXMaNrNDuVcCHnndKq5c83OmuKsHRs+uk/tcpk8ZeKnZGDlbAaxzNgYLT3vSMyWjohx3bwJH2T2jSTSOw7ZltOmZtCL7a4yE+co4A3hZxeuupqO+GNGxsVV1FrWRZF5rIgOvf6+ubyHFLZNvas6ZuzwNDkqkd8WyujEdcN1oX84OexIQZDEI20gvQ+w20qqyR9GBZBPmk1z18xvOGmcrR3HesDymvRfVcD59FvAEuu6Bl4KbvWKzsyDjXJu8BWeNWnY54uiT8PVuQVbJ6lRAsspfyN2J/7wa4KN8r6O4rV8n5aFVs71ujEmqHR9o9tAm0J29+2mjEi/vqIoh/iN5L9CILdKeRwP8WJO17yg1lm/c4trd3/xNRS7b2wJaP6Br5MS8NDSEaCR+QOsN6g+TVENnoxTmojVdwSsiXT/mx/RBKK8RZwEOrCiOsLBqIlDMQBuPhx+eobwbsTyeNvhQOIhCzmPaWXuVRqsnuJv9eYLLOmrwT6sm3AQbnGOaC5hAbzYgh1sQ8qAsKkuM/TWWJkmpPv0Ya9F0d3qFSOMA9QaiVXCeD0rNsl9LyfpjghFsiOiOt2UrSO2irJb+9QsPKbRSVxw8HtHLmYo4iL1Tgw==
+ application:ssl-epsom-and-ewell-chain:
+ secure: AAABAOXsk9afvb9Lnu0+TQNKLGUsYInXmPIkORFUb/mb27pOR1OiDxSXOMW5nWRsjCmbe3NZRc/ICIX/rLKybZCS+PmfjZ0JZqMqRdSny53YHJv1IzUbManzbSpxsrRP/LYNVL0S9tTZfzoFCuEyJjKVoXk9/6R0Ud6lVcvskCkM8LYr829ul97qmQlYY72GaXxyBAH1TGwzmy0Jrs4MnHWjZyGQs4vaSpioKiiIZrw4SCZfidl9Vj4pjwwmgim0BImcWHan2N46uJ1iA2t1FpGReNLtVpV8j28e15z3jlx/kKrH4mB1Cd14V/syAEzIjgFcVCKnlIAcdeVLzvkZtLw/79tCJ9qvq98o5u47JoHk7EapFlgnhRJ7k5EmAjfd00PkaSwLL4sJFNL0Pk/RnZ9Ap8Lq0/SqxyeTWBCp3gsXalUJRBKyMjHG7pUi4IQt8IYt8SwH/DcWTBm60AqrT7I8VC6Ml1IT14X1ueETR4Fm8nLQIiz1Yfb+zA9lcUBTgPb6t7uRHqaJfi1/5q8TORtdNIQ5DgSl2U5uSyo0QAG7P2bKy5d67Un/OQgCkXQNM87hafZaWB5nbhoj8lg6ucCVhgb7nOYZMqa2Lt2Gwac6rshZrm/A5HUF43wZt3jN4dJHHx+ODczU7y0/jXW/T4r9qqQ1HdZtBqw3iquJfpYcEKQsXIn+om69UThWAt191xTddQLf3aNK79KbjUvdYtvoySqf9rY7GmYPI83vwHFgSjk9M+dEvuwPFDlO0s6N3N3fe7fjquaxs1OUO9b5/AuvLjEHlaCLxeRQ+pEgKIZOLPRhepPwtvxAF1hbhx/2I6TJpLQJuqNWQNR+Ac6mwg4cicQHcBKXKxof9rkYjhsdjav9qlJUuh7hqGW9oH9fOw97AgIzkUw3+w85VqDiVCO4s3dd1R3clmAL43XL/BqzYSH/deB1ZJw0VVLPF0l/KXOBA5izYZ2hTe+ETmRCB7eAVwgun8n+cBWTtxgUqeH0w3tXiwVbJbCNp9iChuiNcoMsbqnmdpDIVURdA+out8pO9KxRMY7fcQgjpEcWiYtQ0dALp0mfDkDXIMojTIDf9Fq46NKo+f9AT5FeB8J1n0gVkNy3Cz5cizQM/bcrXVEveSeWIqkUBW3p4gX/jq/55qXkGAjxQeI5x9cIm8fL6GZ0euMlM7MnldXrxbJ4WGtCTb7W4lzjFYXZj9dR7eO6ZiEr6WWvsUNk/QpIb2XRyrh4gHPi62BJa+G7LiJyt09zo68sXaNJZlZ0HtlSjihu+Q/mJuxNVCIVWQO7w2a9AcqFE904tfE55agP3qyvtEjuwkaJo3gOAToPmN7Pm9vbPgge8qCCdPSE+ZZfx0aAyPGcpNCj7HdPPZeC1tyjpOs/bmXA7PzJDH0REKNKiVZ9Ypw0B//i3RScbDBMsvzLW8q6TFdSIB8LCrD224KJPHpJHjQ8byibRAMIPEhR/4EQoTvsZ/FhiI9uEqSH6C2Nuyn8zDWtyZauTRQ4AxwRJbkEFhsOuLlmKkjM6+O7HbxKyHVfmTs7TQlTeCmmif/NuSszdlNX2AjXzqqYRULjZoeJyUl6y52ind83PbOdT3clc9K/MTc9q8Qvu58i+AKZ3USMDj9iykmNxuuxL14pcdui5A1haRfoWAedWPXI9ChvFyROUpvpNbUgvJfI6C1NUWoPrdVPvnmuqiKG1Q8S4PgK/133eb+d585Y/GDZfsZPfOmhE0PmFco2l3py6YQZgA2nucl2XpTWuJqmTNQIK/G8RsClm0HwJG0ErEtsCav2YsDqrO2g+cIpt8QAbM9GwCDU8HAdGFgJWKnobh++ZxktlXAcmSVe76pmF6LR313IYoldzsn12lrT8OK3umcOL5YV6tTIqwakfmwElPqCa8spGQviWVPdNOVTxEyLo0TFi1mYnFBUcEuOcFUQqp3H4SkB/25ZiIS+HaKbFgj3ASrX2owFmBTLRcNEPSjqZjQz7M0BXNKRcF6ZoUifsVhqIkwzQsHV5gm8M5UOZzIAAksg4uOb8iIluvdn+YaFZzcpVlssjAAqfx5gUWDmy4Iv9o7zySC9xlsyCv8YAGe/edTPbm8jA8QmpnPB1HdWNPpT7hYl8pkrnF+D8rXXCjmSH/r2yGjMM6YpMKQR+BDr4uKK0qu4+vLyVT06M+QUzQFuC0K5TG4SQEkJH1B8EHEmYrSdIwqTuA7ZnKFNcY2h9Z2ReDcOhX4=
+ application:ssl-epsom-and-ewell-key:
+ secure: AAABABngth8fC8gaD7FItkcIgu1B7NEfXj5QGExBTUClDu05/cJsG3lsz4j/QN0yGVrJsryWM3gOfwVFwalLJmn+Ff0hBaRbdbzJIIdA3GRXpN6muOh0JAQpWZ5JmvLNSmfF8q+U1YUAds7Q8N5fXAaTQMPvwzTJcKTSJbvJ8uv6yTenzwqehaujz4fbOZrakYLRAWBH4QIuht51QQ+3CaLxnHDrO/ORt2ACzpDnqNDBKvVpLi/S3zMcZcMB1zR7uY9osO3XXzBHHuYjkjaP1W9t7ay0J1M4jJc/XRbg9bWSKG1/nOiagboPF3AAe+XwETAhsKi5XyEuAbSzffCx+Z4kZAIqqJTp+dOnj1jyu7nX9wnn9dl0iJv01eDCP3/dzXI1+ZVxbqbnhxBuEP6Dmx0ArledivEO6BPRnTGP2K7BAc6vcnW6gMBs5A77NZzebhOhO1n8WWBRQZyRHP0XxSy0/bMHG/hTgTsyI3g8WmSciPV10zNnOTtbEYZvw5y6V1gjhkgDb3Ds5pJpeZujgrcjsx1WOkVX3zu9CQ083NovEtJlAcAYCkLn08Dgv6vRCEX2VuwhX0VlEG4M/OwZ3dV4uARZe5erZRF+w+ec2n0gO0IyfTT9Oe3bKTtPkdR205cxIDTaeOA9NkAJChrHNX1aIogor+4hyhVee2yTawztDqpUwVpH3TdmCBPCGBnhSwgxCNxlBvu/BLopUceMMNEhYeUQid70nRQvbjUs7FY6j/TAkxJYNF7hgpRYbvg6fuhiicm9fY36WKyqEZEncon1dCLYCespq4BupNGcnPFPrA2811i5qkz5aCdeyGEYBHTJcfQyxETdPO817MD4GOiruG1BXMT3apFx6/EtNGvLAoZe510ia6/CxTwYaC71VLM57LlK4p1Ubd8+R6ikueXAl5yHYm4jJJ75ftvJs7/PAWeP2CGIonSt8TeWJhYjsAPzxEtFqnYdY2cbwe3c/NEejr9zXgZSIPsTvcS3NAEiHxPlBWCB7Opzi6FkdXsjkf/RkSfyupMCMHgcRTXDtHdPS7f5F+j+II76vHEWmOUXB8aN56x69SbR8e+3e8wAJhu8INU39W+AJAIxmySvkrstIp9k2ljqkGsoo64P5jOpS8WmiJfwf8EYMZk5iMKsZpf4DYOToe7wW659nX1sMAlROGIvjG1Q2pnEdo/T8mAPTmM+A5MjzOYmGE23ht+Z+9JHvOmSxAOyQuYZrP0zlWxnyvUQ0Gp8wimVoZEQ5O2eAWeF+qf+Bh3KgcotSE5OyHnOub4eg/nllTmFRChOozoP//3IwfPUuJ9FJYar/OnJbijbFU30Yk0cOQ4qtTCcfgWTbCBOq317PKslmlIJLbL8iQxzAahNgIpUSRGQ3p94h1GUki5P3iqki1kYHWHV/4f0cYu6qnAxmKgsdMEPXxCCZPK6aFcKZA6kJ6ko7taGFfD//GrLpPIIXX9tbkchlhqX5kJx1bXcnF4GMdGZvXx8+1bYhPnI8uArKl0uViqeQ6hTPkYMTg8BaHL70IAiCN7jrmjmQ7khgPci5TzrO7pPFY5wZPGqFrKhQKw/cXPZqDUGDdItmq+fCYJrkuQGm8jQ7Zb4E5x7vgcGsIQ7/PgfJya2+UrjN0/r/xjQyF/ZMNh9GVJ+tFcjCwQLBvHksxkETyLx9IU7WVNSdCKPpap4+ZDrut1Q4SitDXiV9EyKzYFVZd6Y5Wrad0hG3igjiqN4LgJzstGGOpUL2FvQDyEqgYh6Bu/5d5MhflpqS+6wdJqsehEe2Bjkjt/hBtmj71Sa8T1COqK/ATGtaqBlfXWPOORBFPWA+Qb1AouS7ewmmXGRF28rVA+bq8E6SbksUr6Ven3TxWAmlU3Qx24KOtHhhDwvHFCofL8acxLqs+GkZ+IjAovmoSw0tmu963vZ0TBYcSery5xhjt/euwI2dISHI81Ft52gasuKcAa4i5bAKiuMEcBlFNQUqaYvdndH0wbL6H5PwU7bv/vbKZeApq3cB+uj8pa+V/+ZqOtv6GbiGzq+uCTgbd+cMvNdNPUwiFwRe1rcsMyH0d+LtGWFUDrVjp65GzvVoUBYducEIrV5zQIWYMzf2Whb6tRZu8TJ+5cgdIEIDtPnsVY4Sqppi8ziNHOhBe9XQjio/tv7NdvWFu5zBeqdTt5BoX+jgsjUsYuVVhRo+oB/xDWJMPUJscUcHDoZDxR8BN2mE3yfGwev+/9xC2gsu23wcVjJf+lR32bgPy7yJSoXcWiMxTBhZxcbSUdStxI/vhsZMEet80/U+WRuyjUwrafJAV7typC8+UC8SQj4hA==
application:ssl-gateshead-cert:
secure: AAABAA4sXJL0jy7scdk7OXFcuIjhA9g02L3mALj1QeEOitqUdHG/HZnTw1xmZAvnWhSirO25xT+DzGfxPiRrPlEuhuJ3bXFPNztle79L795xQRPbVjhZ0aASWutFouG/3xB3foU/j4hpf6oyzPoOrjcGv8rS3PddqgwdVgRbNqkqYb+SHs3xIEb8kvstQNDyiiL9OPeQiqFhaVCdcG1x70aVn3IW5n2JHDXG3tKZ/onu6maxfP0WF8P782VhmsrtVSgVEaO6ntm1cOad+W1k0ZnkN+26UzQbTL5/tGR2MZ+/PiLw1KotFb3CS2glkv6ecmC73z3Dbye3GWlR27kKzlxQQOKbxrKcwpt5GshZWtnfRWPBQK9B8yjejxRswPniblLbmnNPYATjq3NKDaoD5pt6CIOyXywsyvA3CZVCqLBblAJMprUCbKVlbsyn/5eSV5STD7Sig1LyLQKylVyicD+ii/pLhWQhkCoCLeMhF4cAuQCJ1hrmu88gOY/PThwi9U70el9dSDqYnJ0sNU5cLNgJ2X7rH+w3e+wveDOieyhLqJhk7i+zvcOizMpRIteWXDwd1jTdeiltJxVEiuoKHBcBmtvAB5X5bXKuqIiCpDjMYT7nqyMzTt9HfKWBOB/iFU5Ba1iko0wdOBJyU5PfWR5/F1P0J9bl5h8pE2fY0bilNgRTgRB8auo/9CmW8pvUJVJgzpSX9TN7yBoAGjyf+/IJdsCBFLEv1loUDGtCokq411tr368xPlJz+/2HQpGlv8MBNiH3snYHa0rOITryZhB+09VgFAAa8AmzMreAE/KLzanRIWe8Ag78SaUEnF7O/WzQHCyjgxk8ZrPG1+HL89H9nOJUlBcKcwljdGLKiUwR46Yxl1ZmMr7f7YKlA5EzDtFNJk/aelcUP+xL9wma9IgL/xm0qcjKP6Xt78tGlrHzL9+s1r5Z+mTWs+C7wjUTIPUNnVJauk4zKZ7YxPiISZdGAdUgO38mggZTs9OKn3Tanyit8OT5QHL/u4gv8UBO1EUNeR1VVYqhQh3KVcU+FHQdijF89KEd4t/Y28FnBh21GrnCebtVuaFNrsWu0IfqC3+c31OpZfOA462yPIQ6T6UfHWUon8Ag/ETnbDUSYYHBEPRGDur+K6roUwPgRmaxmFTnuoa7BMgLYdPhlIzCimfBmg8jquRCvewf3XKvIh8nxhjZgFRiJXfZhr7G6VKq/lhmpWqSj3vBYGBP/hHVsw95CEaThR7BRp+ZCv+Lev02pLjZ1KbtUrYISfrFl+TbYmDJX7CnrXso/X2IXB0aMV21icd9ErANlpsTIjA1cEOrs1osMtPyaVhkHeoZRyaZgjHMU+xhnGbnYygo0YIuA33cDMJ8e7lq6ynn/1u+KlrXlQs//cFSKo2Fu58HQlWMrsOoKdcqrqyQ+TDltjR9hxjcbufutNPMjpCYqRn8hsxOla/lSTn5WAE3j/Di6+7wISIX3hlb5LNL4yluaGzBcpSoRyDnPLCAZJAGk40UQAVOF+/j/yckISUknRCPkhy+7Gf8+s9rlMdQtZRR93itTHhFpNrYaSQq1x1Zalyxox2fLrUBG9Ekivi77Qxjj0VLlhDjz0rvyUKEIwbbaPgLprMAMMLaCzwTcEVmk1NuA/koyNligLFlFEUDgEaghVrDX6p9l1nXeQzj5KFGU5GxwDyIT87gcXhiAJ4McVsa1UHED6erZhAZGzMxT/ZCEDCvS8HNeEeUHgooqBNmwpwYXQsoelqsHtE1RydJ3bd554i3ijARxW5LzkeM2sLNq496zjRcEY5eIwBLxK36Yh32yAQnRphgl1mcvH+lczOPPZK0avYx7llaaPcDsX1km2epiV5ws+BoxmLcGEClrAK2rD4YnUmKzU6sdCSOQvi63Bna3xqmvTNcWbW0SuRBVNZy+ILtUBdIAAdvGLRdWwVwgdEwFOOnHGJQWaZG7nqMyfxyMKUw2W4PjINsUthCWymbqCQLgbSYYAQtRpJbVSGl538OaF63J7cspQlNltCQoYLbdHnxM2NoF+mGeFZO2HwCrGJ6FLSCnqYzMQV9XZwAUgPF0zZTp/97Z8eozhr8SjiYgNUVHq1HBVAZDD4TEqzwyv5W7H99ujYTgbciCP7M2+jB/GSdHjE/PuB4JPRmZfOPq5K8GyziPsY6QHpLlx1mdzuLLqwoufnVs/vdfR+7+ORfjjQil3LHGxwRIiEiO6jPkj4CVqS5HNIyAKRox9D5gLQyd28wBxHq2GJUpemZQM9UDKFw/kbWkeBhRNUZsxK1eN/J9hiEGiscW0peyaUBwCkwEHfUoV8aYoolrafF1MG7RR7vyivW5tJPencgkvfuNk3EaCpDxYSy0pnBDzfcMdrLXVjrXqdL8qVekB/sD4GRqmtFKa6YxZa96EVALM40ea7NEVEljUGxKZKusda1JMGZ3fdVE9QawdWuU3DwBC4YbO5CgoLxIIogRIiFq7kRwOPvgyctBN/dqMVqQOqdyBzn2t+cVThAjsnllnKhenqtie95N9SQkYj8UjVHUCjgL54lxpV0Rhy3K4qx5ftm/mxOamNPiRiEABbxpXQSJ9PY4/nC+TSwhNZJAicvBpgylId8pgGkKkHTYCulKpzunZ6+v7NuHTmZ00QZtnZmjRtsFIyKVOhZEoCvA7QqEvFkuM8WJnP5ViOt38MGZ4RAdyYIJ1Czn8lzSmNMr/mDT9Q4U46p9YPh0t8GhNPi9hVOgQvBUSI3y4BEzhr1yRY88t5p7ApPIpSxFMGRUTCP5ZOy4MlIOZXW+gIs9zfelLtx/XOZE4MVz3NwejYIUAet8wWdZFrT9Ndcf36eMgL/sa5BEQTrOyQRr7/uTxHcDe9W0vmNu2c5rFqoaHDfAZNBJLlsMooXUS+KuVA2YaUVvuo3s/sOt1EqHjRgDg/INpmN5dfTmXJnJ55MSTQduAN3zyJfcoOhIn09XwVOQFsF/LSunGVubDcYds105ykqY5ZdOMQtHgrOX7U4QgMK/6bEutHBqo2N6MS/9gmM8bsXMShvuGFvUbKhPGPVJXZCl53hgzJS/j5kJLWL2iM0Vumzx8CgMWZIFfsTl9T5RwVfW8yMcv6tuZ7ZQZltCFEEriKWSeJXudXd8vzWXyL11AawpRkffVwz/SErOHeSkQVHjoTmYkaZ/SFNhw08Vdq2l5oFQUZJUqbzlp79U7lIJJKK9RFtVs3ZhQI7QNjkR74qFhbRKgYsEcBHF0vBlYy8IZgmgGTmrsumeL9/0njfrabraN7HWpDKQITgUbwJK7qZ8reTbqWcK+J2oNN13icy
application:ssl-gateshead-chain:
@@ -68,9 +76,11 @@ config:
application:ssl-gloucester-key:
secure: AAABAGwoc2NFbOjzGrCk+rMyWYTfZZxVNLPGUSmla7FfmitukCTLWvAIy4xNTkB9ajN18IxZ2YbAKaKjc8zsPMmcXjUlGMcVxu2qSnVNiN7A6s69ClKQ6fRVTEvgfcuP/mJLyZ3l7VBDlpK8c0T6TQ351l4NrA32G8Ig5AS3TBkPFTbZz/3ZkVUNEf5/n29bZ3AFKsb6b50zaFxzWYbW5qYZNPnQrC0cKaxv0O7k4KzRgnVexb/doceR2SPRPORoypxuSXd8J1sCc78AZR+dCa5JJvsisSLO8FulBAjhPjSNSmGCrAWB9xVLD6Ie7BX0QKkrJe+hmvWV2BsbDytgpXDhY2G8hoEiuJCH5R78DStIFP07Q5rxXlBoEcYZQh02Hj+69BgLs0bW7eNH1gl3s7a/fE1DYRscK8hv6cRI1zSSZKUacxOCsWaba6hyw8N9CyA15XZ2wrSsHD+9KOa9GBkPHs3vJQD9PS1IrSGvfJH4NKVvtS0OwNvhE+97+TzEEkQ4wJ8gQ3Bo46oGxjs+ovz/zIGNRXr6I+zKIdcXvjqUrMdF/0ysHztbN+S+/Z0yAXxcKyZBREze/9bBJ3ApgWTd/OWnPH991NSjTu7KVG9ULH28x+kD+Gw3Gys4bFe/BdWWwnu8dqv4XHU7VrOQ40iVK9uYuulbi2CRUwQLV7oEaQclV4V0RidXqov+M0byPLpEDVZGLLdYHItP5dIQylYukWjwTVtyDZHiGc1y2n4WJl5nJa7eOwCV2haY9lPfJXJqNrKc+uEpRhP/oBJFOGA/w9JcDKg40tdyJj0VvM69hJCVcPRc4jVNAZqBm0OR/7W7rGAmSxHAXm4SZYpB5w8+qRubNze/6yNhlGRMWfApNNem33BMW6HV8AMOuuDNQg1BokX+P51zUGN318v1SyxFFp4o98wytGVw6tWFjGovFa+shCgKWj7fpBdWJhAKsmdMB5pUuUM+RZz0s03SOIzo2FbXanVBnAzxEka4y0Z3VVBthO9TpWF1FGVYuqbLFQtlYTRdXHhyH7mXGm5mDtIenxWJqgNUfvLv4Tl0Lkvz6pPPNbgfLwKE+BBnA82bH/YaTV9J3ZGZiJ6sQ5Vn7zXzyhEDlL05jFm+D9CXtC9gqKKeUsOzsHvTvHVWhMIpHi1IxQac5Ji73kgRL4yRiiD2iD/bbzJS+45o+9m+zt82pjsseizF5UiX6t+bbaFW4g+G+43asCZU4LS1t4V4UHwpOVJwFNBl5xlHqWeBpE29RrWXzPZN67tsTV4Bp3rAPp3HzFXt5OLhluafJfS43gTyHRtVDsyfJaD/V7GI1HQn53oqCr9VwTvYv/x0nJSiL+Meukzku9Z28Fgtmbo54gKGx/iK0ffBXkigT/SQhLUDMSGgk+dNJSGhBpCcyal4a11eRxh+W+YbAmIMUp3rnoBKNLe2Oi3wA6YUk6/2L824776NJaYxh1VoSpHLjFMcTMOk+GkwYcY5H5iWyoy2FrprO0lNafE7jKryNKfZC/iHY1472NXlw+lLwvog93Xls1bY3pA68rl+7jyv4kvc0uS0h4G/O1N8BUoTtXiZpDlkDxVe/cSp9aX/jqZfT8oUmikGOA9/jA6ggOapD4UfGOo/+XLMIIok3JK57aGm3bZ1R4HadBd9FSFFEP8DicYqJfQkbUZJj8OYlulFWDADHJMS2uE1gFpPH3ecFsWZjvhhEPertZHSXI5kUrptH8McJYX/unKkvrX83fUGn8yRi+j6ahuzbGhZpI2bhVELtWR1UHAWSC+lzWhWXQPxT58TMryx55+14baqVvt59QVp0JiXwHfp8Itn8aL7CNxmJWTxCAv0OqtKYkrI+M2v3bU5ySZrE+6iXJQzJt4vdvJqOmv0UvGeUNWUSTkaxiZRnw7m4SXB0WM4StibFLHCy1/wpKAyBLtePLLlE3h9iVT9jdwc/W74BLykac3xxdWbIaKDXjMQ67PjuEDN425V2wgUYpx932p8J5jO3QiY2qyuLJMrqhQQkjmXPfOO6eoFWG5Uu0KT/O6zF8UjapaVo+BBq/IDbNdNNgmJymBBjxj+/8f7iKnORI5GI6aXLFDyL6MtxesekIFETPZi/1EpqQN7fWRBotJSshV0M9emqfdNzT2KTzaZUTpa9OXqSc2gu5R8bzIQwUFTlKzdBC5luHVbqDFKREjxwntdUw0IrEvjdZBy4OxNjyMBOtFPdrtaU52AhNYkI3A+Ny8Ra/fkz+aVrnyIcTpdq8rFlACr6Q3iglRKMTLWaIygF3d/zfgve+DUdul7Og/1vgvy03rdDGik/mySRqDud4lw6JAiAKglTzhg3b4elrd2WqJxY28nm5PwBYU0tIQz6D/2IVXd700ZEybAEz13KAi/+jebHmGXF4v4/iAOGh8x6b+nu/ph628uNfgvdqbh6YjUSgmBMceYKIFn7ycNfWT6Um8HLoa0ofxiOsvRVxr0Nsx4cLCtLAZ+xek=
application:ssl-lambeth-cert:
- secure: AAABACSO184UmYsTyp5LtMIB0ITweF9l8cq7T1Btzqza9Y9/IAL6sP4PtYvkjmbRCYeVDa7XFkGNuybR1uc2b1otibDVW/rmlh6F7yDmEMet9vVPueB7qA08pdDHgB3Rok/ADAq0nEbUhV4A+rlUPykbn4C6fg17wKfzmyGTpDm4mWr189fomsSXUFFZ5MnGKFZU4ylwqWdfqY190Qu+kdPJhPJkPVi9u1Qql25XoKHUYs0xJym2VMcIuQJMJF/m4/5gAglj2V1exD5xEMfREwC+taxHKpk4EDZZMPeJ5dgL5YJrfD0IqJNGUhNB/6nle31pjIOfLISgNoMG4oKDb5OqQUGLDQFlN3LMfxWnCDewdH9r7F3A4Zbtph/XTj5yHxz1FRmkGwsJeAUCJ92avViMjyxv3Q7ypFArgsDdHmmJRHP4j7SHdCpt0MiGbN8QmghDRgO2zP85RFxGWX+96PNq1QppsJx8Hzzxg1fRxMhOW+9l8B5psZPFqs7TE3a23XZW36lVyogZxhEENCmPT/7rpUJrikmBuB3xiiJb7CVpegI6+LPcP8t22N2/A1m6Pczy0VQ2Jvd04upbzuC/Kja+3yGZVg8ouqIWD4a501WKLEqOz5uLk2X3Ad7V8aCPIQWme7G58pqHwVfsJ8tT+9oa/o5NVPMuxtnFIqjKVAGIDYUsgVL099hV5aI1EeeMeQ6AocYYLiCKLIyBkJ0ImGHU2/ZmsFYTIgZvBHUtxNHf2pNYhC3+VU1Btvd+XC5LtNfzM/ftX/o/LMYRDiTFYjiiIxzCOTp6qEYjUdAxBdih/A+pyIoV5f5a4tSmOfUhzq+5B5qvweJccio/5e2nQql1Ho/9d5kX8TKSMnxfjyey8lvLxIYGqYuoO8Bj5H/7+J7y0Dx3cndwPhYVIUWn3wwjjyXw/xfwGrs6N7WD6/qBIgbakL0zIZH6bPR/oQ0qqiDbs2J73DqS7JbfL3s7pj5lBH4+HBDAMTS45UWNLO4ZsT5NtjeEuXZ/aaSWOQiA1s0hG1rRHs+5ZSbGEPEkA5Mpo6J7YGQcUDJDRFTvcIJ6pDFJLfXXHnOGQ492VkLxTbR26qht1n3SJheF/DfBceVHeqz7bV9OjF2utjDbp27hUsSjP6Qdqb6V5bx1VyDz4sp3BgBbwwf7yy+zFkXQky9ZuBnScaPV9L5zCC2CekzNUT2NMtVgAwtggzll12DcTreJeu5ImcHrhbWCORsUHYVTnXI0QRL6Ep3s7awojW42yNb+L1XMZN8Q23j1RDPhVvkztQs7I8hyU/sMaEwKT9O46cgIiMq9xXaN6fH0UkMgiT2iR3Ekal1UDQOPJkbkfKv9MyOBpAaJoum1CMVh+czMSpe0cjNSMzyZg6P38o2/jbMIcsdnnYMY7wVXdINlJyT/LYREWjCe4EQDglZzb0/pXAe94yafb2dV6QIklP1GQX/8m+KQkr2Iaj0aR/YU6sIEp2MkFBZWGT62lqBosFjlgTTjrleA0Z/EZR5i4FLWNJ/pIYn0Z9mLQpXpd+IDBkor6m+ybsSz5UFUxvV9tfU0f395R6S5TZhnmeZiThjPiJjBXFcSOwz94ITGFmlOH8PujRXyth+tq4uCUGQ1ji2epZ3isNhR00RAuqhd7NxbTrw32nVAS10ftYm7p6lfKsuGNB8OK67gw5bi/rXGNWuFgC7DBzG3yUDeQTHtdbvik8x/ZU3PcR2uYcg0WUtL2pmqW7NcRWlCGEcO+HyIIfnTon1croipuYwPsgoer8ZyY7ydUjt3X/axlYoWWK1b2Boee69P8H9Mt6UCfqRME55aBV0asH1hloEIcJ4pQ/NqWv08i5zWkEnu/99lD+Mjarg4GwjHp4hovNi0XGn+6Is4vD1rLH/97xrRiBRTBRHfjJxgPFURPmv6gCq8PIY1/INiwqY+S77PSuFxNTUimGhLaOak62iMWyp/nrKGscQi71VL4gMj1MC2cP5Z/6ORj6CzzEKEhX4C5kTaODCzsAv1yDNMVEUVVh1DpbWjvNKXd2PtRkPcb6XOiyZb6s9duS3obloPZJjz42vHpGtf+OUie2ip/z78I8UMr7Jehmt+LpFOcbeFAqk/5HgAnBc2mQIi7gHFXjHg+CZr9sC+cMz9DTUU2OCEu5CiV+9W6700tvaCxAaL+wsQu21SC/fmJdv577GtxsTXnyRh7HRk8Kc2dyT+Gk6du1p6Wl7lvqLKiHMVpympoPgez22ZRRyj3CmRoKHefehGxc4nCtsCvhUpYfkq+sJJIFsfRFsMd/iwdwFWz7wipD9U6NavlycQpwOnCpOtBlG4OgS7flruW8tBL8CWwA6IWDAI5A8AMllMxynnXbPkdQuTqY4UdC9yjFU7K9ykl7+nVVjH6IXLQ/ip6Jd3OFsurrtWsmIVYQgWMaymubf0gVJRryAkvydDXdYYbggD7N4qMT2aez5/DysOYJZiUc7jfWPFEvUYiKzZ3px/ShseYIj0jewUoNvr/fAuFnRaobxnRTF0RQGSdZSfvc6qOo1rFKDQlMlsfdX9PI3D2X4Kculso3/GU7TbkL/x3uhc2ZTgsDccJSXw3hMXKIEspfHgZRryqw0MiUf2WvIt1EPevh2k6Hs/l8ow1zwrGq6rwM67k1ccw6dmuYGtTa3+QY+Ft4HIz6ZwTU7UM/RqqBiOf0illlDHwcPy1seplvpvJWPtP6Wvg6Dhl0E/7wzgk6IovUVOFMSX35ifBkXXn7p7PAI3Vjs+atqjvdG/CFgF4LrFSwCefuTCmmkSjFD/kTQZMtenu4ZfILxIEy3dqoFSz9y53GQKV6deB2qh4jQ1uBvuNO6X/nWdcBTA67vBSnnhePYiG44QeDV4BePpkIw2cbMlDDfLo19yKmFjbZq8SJvI32VvwW4bWMBinvpsVAOK+dhhu8s3bI/P4LrvGnAD2YKgeflALagR4cqL8fVb0oIBFfhbZ0fs6Ett8AM65HKpmG/qHptPD7bPUmlm7+iZHLguh1O8oZfEaBXVQEebEYDGJHt418jevrUvjtUMN5Hw7UKX2vgAbOApu+bPLzGrmU0gT9GHbzH6M+KGsb5Z+3qwRt1Dj26REidRXgNCrq2zH8wnjeD+PQU/mhonO1JuQWrdpDfHJMvJyJWmKAL5CtA1yP48tO8Muc3xky79qQjfICN6UXgkMuVSwhYPg90Cx7kUCswfoVBQCGY9wujhF9fbQx2/HZzW6yOlZiMbV2Rtm8yqWkC4uDC5+LZXZ4hfSRa9
+ secure: AAABABVF8JrsOipsnIYtIDiIR/ILBcWTuRgzQp1ISBHThNHaO/N/bccO1Q3R1umgNcI0dUWBIDAUeOMWW7sQRGzedPfffbDH0jMT3c/nqUdY8jFATJcLCs0iBgG3IIiuF4jAfK/AnsQGb0VHzYAunOS899B5k9TRM48U07ZAQ006F6zZxla3fOICBAVhSVVqzp3Q8BRiFdMLMw53JYjfo5oEvBFNEVTGSigbjns0c8d8pE16eU1Sru67TtkReV/fRyStRAMpR3E5PXMt0Vsg6XCSwhqv5HSDxMPUozUg51RYVW+NY25Dsz3JLZhfMacocdeTIHOmYN0lpWjgN5b1z3j3IbbnkHf8cvGxDL++ppyUwpJWjdim03Q0MfebuBpofo+H46zdUHRAf9FBVGvpA0OaP2NCrJ+wZz0gaxpO8KGB+kzn0Vt5cDOvn9tfzVr8Qp1G8mX92CwFjtcU42qiMJcg/qiahIEGmHuomGnRBSYBhu2MNRj+otdT48203ICAJUidbsDXAJ6r4JAv6ccHea8X9mrae0TMta9q2/1s25Ji4K2DoH55IK5yaHmME7YVslB5wNUttyxg9yyYmioBT9sO4C272jSZPoDRETFzWEqoeN/30HpIkCE1LZHqdmEWEk5iJcMsEC2AR2Ie/6+R2plo2OCpnGyoEZ0aWU++gyPw9zyodfFJBa4hhkH7K/pJfF0PFYpF+mw8PmKgncA3RLfku83Iv4Ls+35V/EDgkM0ndzvbLpYe4bScaTaIzucrJ0dWxRSRStGoZ8TNU/o10Ust95g5s6uE7nIPWEJJXepH5D0tuRqGh9Jet7ef+dwvxZ4XmjvRDqIQC7yVgXXIc0oPGcXjkYuiz8rtOp98YtpilAoM0eEsmoOxPVHYjvFyi4x6lCDslrqPtuMHnRcHpMUETQLsaO+pxS6aL7xJ5wQZ4ES9FjEkmxxJpgb9zz3UTNke7kKueHJsXwZBsL22qRRCml5xcB9yYWM+BYmBw2gkx0maFZiXqcoIeiqCjSNlSJ3ruLZdq2EsqUbogiybmngtjPArGxGVXh/jDxBu+YVk1dGeQ/DGEEfJfzkCn0bGTpEpoAkaFZ0aBxfba8r4Vr9Sh3udHd4Jg0gHnDkdLGSNu3hb++wt1NxK9RmyQwF+wSZdR9txgQCZ+ZDqEgVRXr7M9y5qLKpeJ2IeqyrYLQU1iwVe6ps3hgf7J+u/8FKhYccIgizLrkLqfS+yvBHy6qvdVhZtgQXJ3awjkda3yi/0K3smg5XvmJH8zQhpdZFrFL/JHChJ7bTWcb1K9ppY0256rgcOLBDt/ksLcAT1wz4gt5a8BlCsEeNY5wDL5fEakDadzVq/YemHPhsACpStMA9iwAw46g4rPHQQDgo5TWz+RqLXaGMRCopK+Ob8+dNwzDR96V7q+P/cDbs38BtmTN5qaPGUxQ5EY/M+/acTiqPj2n3J7baRifAE5ZMtWD2GpHMJcstmYo+p64o02Bhlta9gOVxg24EHFaWXeC6Gd6j19mrfDA4miI7QU5cIcBwiEjwdfpZwugISx4bgJHDv5MBmd5hs+jTeyoVijXXEw5z36iKcbZaxKjDxTdrbPePZme4U/zp8dc5uDGMp961UborpYlxPFAi8me/ON7O6DuuFSzolSo9CIhx+nUA4w8XjR/NWC/g6bF/Jnu3IaiyPC8NXbk2X9hjmiYdxy7VYw2MMHIZgplZGw8P9iWhZKXf5rEafYY4Cx0kFjw+VD8oYB2RWo+TJgtzb3ol99AxhYqOG/GXfvYgzr7wL06wdKxyvYZzlMjpFqnQv9R8TjuDQ5DOFPrizaMkrjzIFZ1hLqfgS3GFAfPUiPWT+RI/hRA2ttmbLFbo6kP5MJ3U3eDfPUXNqZbgRhH36Z/mXOYTshTOYHbSimtGN50/ONZ2xwVHzb5yXE/MZKJBeCthwhCalUX+V/Rg/yTpzCTTMTaBgSBl4UCAn9jdO13E+fPI+QNdkv+CppedhHphi+0+MM+XfQAORhwqSanTZdVF5CMLqUr5y8eh3yvaJjh0HJs3T2KPubVa2guscAoewD7nqq38WE1JahIl/r7sceuy5G1uJCFm+CKfgmXSxFp5ontIdBvG8SNtdNs3SxcxICKsrp8opPPXkHRgOzZzIz4DeiBJgx2VCrFJcnO14GNdd9+F65RF5nIS6w/99wDbXUi8mAX9Hhi74FlzN8q6Hyr3YSQXGBRIgpoSYoMfuG3WGjjPNZTbfY2g3lI6qvM9p6HZGXpahyXld0OjkTYdgPeq7TvrFRPc5Igr/vpmlBcDtl44jIUCFdpXBZ7Jrk+q3qk/9zUKMuDwWMbpyhHW+uTeoUtNP6WfthlqrJ4B7Gos5/RvJk5BNyMQ/Mj21gSIfqXkzmbh8nyPpVydpWEG4h8+94R9k2DEjPwgatkKK0KKI18gmWiFx8RqV2UUyfd3Dk1i60XoOnzPnlcw3i5wOK4xOmlttW319dcBZ3ZCbe+nIpHGKrJ49O4+R9unydj8lIqgJhSVJf+ED4a5FkfxSN9aESPKbmfjqDiOrUXIgijQKYzU2OybfFuWLb772Pqc9id4XJQViKZzPh805dZqhZycq8f1eZDrHVUfhJnlLhePj0D3KaeHYrz7TZyRierajtnOHh1EhWKdIJbSpxsyk8n1tp65rP8mFe5J4QvyFHdSPN3c9MQdsXVrcGa6Ad42H3Jdm+j8hnnl+AuvxMul9pDXfujAter2rfrEg4k7kTVCwhOwKvED/8rKneQOG+d3n+eALKw4mm2rZxO0tufzo4HouOwMW6OOIZ59nNpbg+ODpufmU0QWBiDMrAKtTCwKZX0DC8aDfJySXjsDcFacu3L2HUCVuSgU5rWI9fKgCb3BodjFWuZJNMuNTu2pnOOiibpleodRF2GcjoBAQ1+Wt31by9vK+y9cnI6DjQJUEeBAZrC8eNkNMGzAAtLV5C9pw9Q9eVVVyNl7w9nY/oyoMpDsDQV8b7FHxTAUpml2tNAD0qLuMonLJcIdQ+kCe9LSu6E7zfbK3+GbunU3X81dpMKBwXVaHWNSGAjD2pZf5uAKIHsFsZTg2CoG7jK4DcdY+eqQbHeKKW1splR2U0/0tkcG/FJj83k+1uywe2o6FwsnFLO6/xYr6oihKeXItDixvix5pvFAsoG8FNsvFQeePgagO31HINGZs3GdMpRaVVerKnEvVazN1QjNeY2w3XW3c1Z4oqPN6Q26lcFb8bUNgEVjUwTnwZ+P7eSOHuLPfR1rxF/uhhFxl+dFTQEi1U2VD8qFLK4P0+qZZbiq0VHU8xKnxW1t0Mwuhn5Y4RF4UMRcg3ipQLEmNeBTS7HSuIwlZGfJv0OJb/K2GO4Acr0D556onLYOwpSAxoBF7RaHT4iV9N1vBRduvDMo/0FBvy6hyMWz8vIrgl+a4QtUIAsCbyLnXMsaRys8oKl+ekkDXtPz8d0LxvtPKO8wi7Ci3obBh7lnbSTQ5Q9EOF8bon6f4NIcXszTVziPpBZU6YeUShgRRGMWuGop8YzepiBWOcETgdTlvhOsGtBA139Rl+UL3qmxNFWCmOZI3bHRYAk+2BNJ3qgjmwz7EneyP1XY9on6ji7le
+ application:ssl-lambeth-chain:
+ secure: AAABAL20WMuViMkaIsjSuZkzNgc+R0WlKOiYLuXR3mmXIYEFhq9h7cM0/1r4zPmWKMQz6fOKxrlSYyWdT2TGfjbiQkJ5l9pfDPrQkhkvkOJA3FDwATZS+fKh3R3n1aB5FZDfUvFu2qDOGOPzsGqTAS59dhIscvB8kwz7rct6/5r0+FT3wdUk1tXrp0yIQNzm6Hjxwsh/CmoohmBiGf11muwPkt8/Zfz2l+7dL+N7tLwGTRQcY4VSL8f3/2HvXNNpzdgVAHiEofBuMMsrsPSBF14BmuiV2OAkvCuTQmNYyUw/yivmKmxCdWnnWqtZt9OD3dGlFTb3lf9JkfLGhtcjm/tHq3iGQNnz+0d5O+G/TH1QKTcjUvztk2Okp1urWJjp+QPt8MNedte9lQ4VEflQVu/XZ6HgPx8DoRu+wxg6XtQ5srtho6Yk5sigFasgxx2wkURNSj7LgIVr6K2Agm1gAKlXq7wK/bk7ixTYiWIUvlE/GHiH7eKsy2GxFqjeoY57+U6/st9mpLoKLs7vkPb1/9SWNJ9ThvmeEPLAltN+M9ghtYf2vE/LsPun0ZBOKr3xLAe6s18nn8gmn/2aK55AwAICTDhlNbMv2tp8xQuCCurh16Mu1viDlm48AkG3teDbL1f/rp09yzccEalids/CVGkA43OOvpzsL13Sl+yQpQF+Y/EogrmByUuHOcFIBQlPdk5RNUoIEMzGz0dcjsT4PzVc/9FlvWbfuHNu9ubYeYkn80k3cOmopbkvuHfYw+nkCZa7OfgDFy+pOPTFYJ6ELSGL+Cs7lCaX/lNcRK9eBj9m7KkMhaLip2xbPpulDaZc2unl5MRT6hb4CLHJKT+IqoDpqX3ZX3OcbQ2KvesJYVh9w7T+4Aqs040Pd1W/Gwy46raAiJQsaFXcJbmlFmp8u3xQdqlWg1qB88fKp2L6fwgOxm/kHjrJx0H2EO5CW7K9sylXW2qVx921px21FHpf3wkkoComZhd0Va4Baz0C1EeuoVr2jjLXi3E4fc2L8KWdx9ppZBE8zHJAWome0tC45/X97SciTSqtbDL5KynJIyYSm55qZZbVQXa4oaXBacdptv3HNOIfXerIAgEKu2wbwbNWc6+jNd8S8js5POOQ7Nidr5/qZgtOsi+5ZivDLOXzY7f+5GLhm0+ChqbT9pwn5c7MQWy+rIK15d1Mf1VvIBKSY4TzEc7oqcGHcncV/aMg+dyTR9sTEUYnFzDr++AX/iJvsAPxI9pRd5iiqp2sYpX+w3Q79HMapawJ4CQ4DImREEtN6f7Q27K7j4qyc7TfzdejIsxY/AEqmJvH7lunatBMWDxuIBr/HSZMkTrmZDKBmmZnXSrzIGwg08jKXNZohNGDy3I/6C9LovvvJJaho295CMxYEa98jXtGndKoCIlIeToQh+WdW+im1cdJsKHZ1Fkcsw6+MiVDAQXHXmjgva76EqHUqH5taGthcKtUVk5k4Bntt8GxD9A9PXoHSoQ9XtDUufefAemdTXSmOze6TLc81gC2OPFZhQbfGpbYZMo/ZKg6e5G4qQ4icm7xmIkKSOqah5d1+I5D6pEWMq+IRmIdC6nPphhl7QGsxKnRbbD3nKshFh2yr+85GsBwFevVyKcDQpLZP2Pi2ebZbctmaSdVriDhU1XL6uz0H8rfw2vmxJ25zV0e7xLV/hx4UBjgcGn/T8hjoA6K6Vhg9hFs+uG7SCeahDlMGNe7RmO3T698jO/Ub2j1vafELk/zYlJrkdHT38cqj+Caz8bFK9TYqRlE75RdGTG6HW+MO2P/Pad1uxeQ3Er373o5+0rRMEINDqmtt30fZxTLfMihgXhzuM3+c9EZZ/IDplA91Of8C63vnpNmAmovFauy7Zok5VGlDjNW/5q/PT6ABxY/y0OgrdOW7frGDdj/M4EVdMM7B9g169wEcOiep8pJstIMposmEeHrlGdhPmXUswxILTGNkbycSm42Lg6M/DJncXkmSI9PHzB4SzGwgE0lqKIz98P0GH75yw6vk7j9Zn5QUWsaMfDf7TAdEgAVI8iQiTN2OrvRHEuDVL40B4WlK16PNXa2h4IvOm+BiZJgjrCA29qw5R2DWonEk12r271baUBJ3JRVIsC0FaX2wBjIW+BvWVc6nWYbhUGtC9er+61F6guSxfdaAi56vQo6jiyD5PBTu68nZp1Xry9U1RNfzwywWxbGly0FrWVwBmI0KNoSfgsuWJJEpcz3bkZRBx9LUMs/1dP17bC3UqpBsOLHv2lZlmOdDdGhZmNSFf0615BWiIF9NUOrthuTbFBNsVDLok1bCuAuD6/VuYZeIh9mEw11HsdQrUHUOiF1vW+IbIRYw3cUUP/6VXOKiito0u1rGbDpZ1/l3FjdbygW9NGeVD5d3NcceoIh7cZG+skPCjXpbvK6ItBANLfGIQPjcXtpoLKsd6XrlNwNpTjcX/TAZvA19poXFIi8spW9RjPpPxfbEmGikT9FdBOjfYlTXmzg/tQYyIoVLRKE+Xl2vbxRhyrM3+HJeHczDLV4C7Ebocdhh2oWeZnb7y3X4vELlJWUl+f7aEPxnKculFDrg+mPFaFGVTaUddYhjqHVKjYMPIZv2I0ZqpFcq2ZbdnUzKW/O+koU9RZN6BzqWYwZmoAiqB5e4X7Tb2YXl28FW3WYHUxjECPkJAYL+NzfkP3WSYUVJHzkbs5qipJAs/PAuUE2z7VyW5prqeKujtDUH3BVzwMA/3wJgvC0igVRANhe2WiNcxhqVCG1ZjpGWO/EBHQCF35ChYkdlDPHpFNq8RmGSOayv+s253Rx7AzKoB0s9TeNGzJvWaHvLrh0Ob/NnCYntVB/mNxB1UmSkMN6Pu2Iw3JBOrW1LYShBIgP1xl8rUCDKGRo3p+NN8YiZS9GXqAAxhgU64rfus2dyDSiOTWrS+99JPBhctL/eVxyBPdSOifOVP8QAWybRObyXMtumIiyvOPXdxVNQ5/DxIGeNivFJ3ulueHm6w8nH+pfyQnmrGsayFV1gM1W3wv3KGDdxY09AFAA/9/uMtZO59LdvgbsMR67q5IZV+1EOHsetkU4xHlMVDDWZlJXVzKb7ESocXRumi03eIeKWukPC50GA8YkF/lcg7KMScrX9eu9ZIGvp2PYaqFkj48//muUVj2k78ygbjs3kfZCi5g0VJL+SXLrDMP6z7x/3HlDDYtirsRIdeT2E2ViUrBPXCQdj/URlowheomX19aTy+3ycM/z97gQiJSnHHk7chbDcxqz8WGkCZBu0jfn5prDc5bamfM4wGu+RTTqCmPNYsZGeRrWFCXfywWVgLm3sHWfyR7N3aq2vL04qKOllmt4pbPTnxAWK5WNp7CWGZ/JreZGeXwzp//r7HGvRAO3pQC5jISccUDlly593NhSsZxFjvOOlQR/6vxzEzQ4tF7KMa4dzeGxAK4noJhbwg/cS4LSFRSMdli/8KUPkp7scggmc8i+5YK4DxZMtawaXazv9jaRP0waCXdmzoIDUz7wR0HlpPDvYYftHG0ThGtNOZW38JEK45RNGogaAqNY9mO7ZUjCLCxY5Jvt2fC5yhpya9mevYI/btRJlsW+WBBzOycNcS0AFB4p3Sa1vu9gQi8vVWwe0oeSESPLQoen+ItGtVWV0MA7mjoGlLfVgDDoxNovLVFYE0LwbsKlfCkSNnHWvbKLuahqm9eaGd+nKfnCksI2P3ngPlRCzZDMNtb0L1+tugYsjp+RbT9SOTy4/D+lAph9v57pziiBuW2Aw4f8R5/K52xECFwIjQ/I2nt0hKEciew4kvwMuuiMx8F0tg/AOj9rhWK0DHnH+eoEFKqPq/IBahB88nMzrfiaTzW8Tl4Xb2B06qQ7yFQ2pwxBwX4yku43dJi8lMZWzr/kYH1z+p+SJRmiP5ps9F08nj2tO18GvKupmYecV9i1VjgCrFDqwghEHJmjSUYcE3k97c9AKFjA6Ixc4zpJi1pVLWgDN11wz4v4tBaHi8dMmnIlU3nM1cecUxPVbgA+1P3lzAw4o1jAOVamDYRbjSM62FEjwiE5/mijLbbdG/2GqMmTFQi/LNgZStaPMpnUooBFCH5OxrJrDKl+vaJ6m7lAmNlnRlzh19Qutgh0KbELT2aOpypfIlRwg3r26xi5S3Si4Z5Orv6kH4+LkvGg5BQtZkFm6w4saXx6J+cwhYFMCWohczErHfL5y8krjkiF5fUKwhSdZXZDESJ1YC1F0sjO21HF3V8sSafm1gF0xeQ/Too4nDgNalCXX4BAgNFrFv8D8NezXrLjKsbrckzb4/MCDg6u+SfrNif8Xbom3Z/ac1ol6yFa8nac6O2OvF5rx75wCDpskq7HXSPb8hCxElto9BQsEEgH91sxCCOO6LrTufJeah14euk/g//x5O0Yw0r5uflpd9LAVhKjj56d5nwiUZqgTCHGevDdvpv0ejd4k0WYowhG2JL66dmIfLflsxC1pItfYTii4RooWaeuAcLt4zZ7mn7hX2CJyKo+5auJpBRXmL2IroTFKQ0LAnf62KKMuFTRrORM5J/C7pxCmxpAx7wAfVDDY/GEadApVJL6PoYnjo28BaUJVvPSVyCe7/TLO0Ifck8rlv3BIxhqIj9gKaUqfCzQuM+3adz9FV3RJlDjoi8KRxbvHQ1Ui+cemsBADVmpufA/mmZpx9qErM+x1mZeoE3kDVdpDyXyqhbrfspNsM2RHfVq5O6SqsTovc3H4Hu6zCgKqDgpDdZTLkdYwEGbGL4AhJ0v76jM2g+aNViy2qVVRsvn6Ldr5/XzioS5RnzDdri9qe0aHS+Eupku3WrR1TX1hIO6Bw11hlF3lIWRroemoD3sqBafT0Cds65A1oZP3Vmw2+j3CwxCosvxHBx/C1FTmNGmk4OTnBMjFHDJyUZaoHDSbAh9nEtAyAbSNmuRTBc7yEezkqH6n2H0xL8zSZONfgWUfjW51C8LyKqCFk8psdMtocp5wz4f9fg8/EudOdAfzjYdXlmSd3dyZ5dXUKrZv4+GxeKoqtuqfVrR3jQGPbh1V0kQh8wJYzq4oF5iftRgCdUWnPzyfOAB+E5aFABjZs+IUByojhovj1Xc1OZKlq01ESSTXMRGQ52/h6OH4qU8mL9alDvZwdrfFCbNw2fRZ/+NjMhW/+QAOHRgISYfANeryWOzQ0rLRUksMt/VwVwgjOgU3EMEhcXM8C8DMMC2ChRBC1bRWj8bB1J9ATlQOzL84QXKw7Yn8rhohmRpjHPGjW6Pg5HXisi+ZKeZthb/wLHFf/dqE9IWg2AYfff2/1fr1G4hQjr5gZRDx8kDS7BdZGDTbyEEjblNF1fuiAqyfXaBVAdE8J/2eR1i/jKiKto9D8c0BqwTYAcHW3iS4wzmGe/U3Th9GqRsxvLxgSP1QC9yQ2htNU8katg6gCxxkGLdct67QJMhCq97C+GX/WrconY4Y3Jpr5MArBIv04P5mzfyKi9mMDCsza+d0+joAoOzj9NgiE4ltxnOhRW/kURzVnSfFSD2wFoJvsBU9Aml+vfhXQBNGjsk0tb9BlU3l/Ct/2Ua5CcOLnLxZFkQ0NdfQuZcI0PlxOGUmTPo0tzTISJEx5lyVRnmGi8ru1maZvdQnZsiFg3b4TDf6KL0dsE8OTA4JOpRmSM+uzo9DfIfmtqjK4dnvSPbz01w2DVz3x2ud3DFfZn6RdUo2FE5i2X1AM63VLWblz9KKw8Fb9sCjXWFoB8JQXcm+UoEQ9c7wCaer/zQnNxaJqcS7/nj1RhUuU1DLlSFe7UOA+qP0p+icTsmAlxhVd70Xtal/9gkRfHMncoZry2pHlqM4ocVjYDn4rw/entwQpKiNYhvvtxIj9NyXt/iMBhnANsHVTPcr8JE/Hfwwp4ZcDIDgYj6/tMovDsWY+q5IX+5rMd5ifFwjFXvsIo7nADHY9OsargEubPjTByUmdoELTwQQNAyrsDMquVO2BunYqEaPT4EOVRtcGsora+vR804rN9wlkc2KhgUCNmgqswDE1e86fyAxxWaG/ETT+e8kFB2kWqvLagKrTzwTha05dPvhqEYn8GqkPCdRuFSOY4E2CCwD1pXgC+zVFbb7xDR/YGPxUoUJAdcIHrpzuqd4lQd6JHQJKbnbCguzxQkyJ48JXDgcQNNk8GNVGPSGDru26ccyrMNstqBqfcaWqlFj1TA8Bd+0KkLdJRhI+pljN882tq6ZXTHfYWFM4mpq0eth1M9UFfJ8Ga1IYHKvJewVLCzx6QvhlqlQO3eQpLKDgUB1wpfh/x+b3ZSrx0LVMgEgaDNQX0kM4/3aNFbEvMqbAYaBkcsDWnmlk/wV+LrfotKlvbcz+96fBkSmaX2a4yVVzsymDPt8IT2MEr0vXFQ3AP2oRYGRaFM5hA0BipGsILc0klk8WX9PYMm112ZLJDPU93fcdK8FbQOUgoA9oR1+T4CMM8jz5fyvl0VQXbDogsmYLNDlDClW6PtS8kknT2EbbU27RVUmdnCiExgwGdB1Lp/+afhizPUS88UIeyKWJ5JPmRATy7NFhLXM05kFggJLb95THSiWZCnhWJ7PGBsMJNnr6ewQwTDeS9bXh2ve9Gr6rCiWocySl6cBeMbUyORHyLnjzJBocZnHRneiT6k1nBu7x6QBeRz1Y9s+ooz9QxqKjURPLINKQVnaXxxdFhmjLaQQmo2PK2X3dwO5YjXSaJoFMYbMK7r1zmLQkhBXXlDww0kImq3v41mvaaEJA4j2YAwVGpN7sW+TmK+x089nX1jbwXCcsnrzkPhnBCXg/RjEe6Zss33Anzi5N00RYj9tIn2B0tB82Jy7G6f5gP4Cj2/m65iJQ6IPvJw3TVmc1r6g79npq7TqbpuAqrmgdt7icDShpDJNe5fbqF7r7x45Wu0TjPRdhimcXQma+BklraZDp6Il+kEKnHyqT1Wq3pJPs7ehHk45Vufjpi2a5th8kkM5kCEtGWUUX+qsingb4S/Zxk4FHcriHDbd+sEO5V/jdQJQfz+JNKLL/Uz28/JTLOl1+7KHipJK/+mjnCJkqW+u0av6tCKvp+CiPWDY+WpBVxb1jSq7o+1mgJG++nQJ5CsOa8InPI/2o4xN+E+/6LvHR6Pr9RXdNcbbkt1ICQ5PBKrjZJw56ohyWAIPvlPPJBDLR4Ai98O2GGKlmwFOn2HIwu1lKqiA91utedtsffzQdENtNHITKdUJlbMLsyEdrI4tc+fC2GzUlBDp0yxSepJLdpEzhQuSrh4/aHyYgIcdjN6OwmHLABW5ZQ6tc7MiWQ7PhqXYIDgx+voePjlIs/RKPo0kOE2mm6vN358Ica3vCIh29PiqIDKgT1nrLjRkkpKXogerqgE9dL6JFKEBA++7DD33jhblcTsiMt5isKrl0xHuggvg5lCLkkFpv+m8jy84nkppU3jlR8+2uOy0X1qwhr0CUJ4d/OX8tqvRF6/NwqEV/GhqkIVoK1iGwUdWyNFRgnctGFnhuncjUrK3VDuj4vwZllx7dFLGA0kJrK4N20vXjLtBUr/20oMT4XDXZrL+NOj7yhzdH97sDnaROhKD2E9DPQ=
application:ssl-lambeth-key:
- secure: AAABABYsOQCXgtklLmxDuHVYXSRdzpmZqesaNzu6GOmrTm5OvvMg1L9FosLdrZPF7IhLm+AuBEbJRBHCWAOZhbo0K0KuKiy7vBfzQ23Qhpd9WaZgS5uO1pC3J6smdpl8MFS7r6mnH4qPszBkVLv5HteCP9FntxXQabgZgFlU5EX4aAxVYMYbp0liNq+VUszunBs2hgSGHEeKS69lur1/o4XHXnTXITogtSn2xz9aGXeRzaiW/SU3xT8nCNhpPdCbaH//MWUHvXV2dmdWtvamiTmcovAkMcM+dpC/43/T8xczdTol3w+E2nuIIWd8wLKuOnPS54qFKT1dYoS46znfePwZrIan9JwkEX8B2ItXM8yjbwtWCNjSCAdpJTxCGZBWzkVbMiwJYuQHUyQG/4z6zHWjoGtg2PdTr9dM9j4WUea5WRQ8fZmIbBvD9zwqLEJoQFcC391cNz9zus6qrPWyQE7FJ+INlFIWiTUJd7wT29+OlWYNcD0kCap7+tYKXloeSy631EU6P5woMWGYWV/FECa/GuK8jmRDslIPmpv6jpZFoyrf+PIzjwePkbFp4N82iPBG2XeSEskFAXv6Y6iDgMzFNUIq9Y2ASycLj51wMj6i8NlgUsdNiHg0Wq3F/a6x+HCVniJ+iJxAIcuvD+9aw8aOQtJTsd4xJ+suDZyYZq1GNLTXHf+yt4CrgU/FLFwsmPhEPThuRsBO338yODL8qYcpho65FqLOtl1vZddgxq6yC77qq61rhViOB0Ix+343WctF11L66mF2/lr1nWLrHODgSII7LS/+DGuP2nFPc5vPe4wrujyFSoVboYTOmgrMA5KmR4VrcXQy+SXn+UcrMmbVKxv+vwp3jIh9+XvnjabZDL7n5FJTKVaMk/7VjSZY6jL9FEPJF17XNXVKKg+TgXymQn7NjuVthiDVZxloYvqbtvvcZEUc9GQ+qeWGo5tgQY66JNaAlGNAPnkJhaZE/WSzW5UtQtQLxiXOJlf+SuvN8B0Wr2Jmy+LQDp2TjnCYXUXtFNnJoUOqz19ZymFEnaqixS7dR/zZaKIdO4pXFBjaztnZZLtYe6iybu9Cpf52z8amGdKTHXsk7dGS6ILQBWib0uTjmnppb5KxkT0TOzw0PmeUhjN5OFryQbATdWyAlbvS1MXqli9Q7Q1gB8INnxTBkNWuFBwJ11VFc8Z28c17r9a565ar8zdWl9mVXUD+7mb2D/ASX/fXGMrZ6angag7EAeLxPbIjRvcHm/EHKKgaZRS4yNHXzUWp9MgDq+3t9Emrr1+MAwXAH3Wka44p8U/gXDmULnwfRP2tOeaDyQgq7T+lpy7/HWTtp6jTmF9dlafdPr/e38igCj2r0Mjk7S5ORfu+lxmc5Nsnwd/lDJEnV0z/efvYGiWJlK/dPqI+6xxhGLSbYCxrhHJ3t45YUudLt/HOvMuKJuxGT0MFyvrSOi+Xl7+wcbpzpjPiSnROwJA1bT1u1Mnq4/cY+OH097rAES5WKQA1+lqc3rxJ1ejLzLNvOKYEvYP74Akd1iwAXBiZmOcNTxQEfRztN2Q7+syjQYY3uurkIO9f9VBL/8tYfMIZw9Q2o8tO+B2ok07AW4C45IbJXw1gUvYR8r3BCgs/wsmBWrJt7IxYDMFcBe6CNToUSkmGiNRHpErbh8BsyiF4igzcvh8G3zjnl1Jk5TXg08TShT55jVwsYYtJlSVENoire4J9wTVfFN5Obd22QiYpAV/TblTOLmae+u6wvB69FGF3Gzi6aUlf+4PxD7j4IK2dmX1ljBiX0U61VBwt8N0Z0eH7+n3dWe35LcLFnfiyjdw6hgLEFgGwLE0FgUPzrB+9cOy9MoFBKWg2yYYGeo1aOrF2aFVTjcjI9vBDICS8fs10bJGPes2mx/NCW1DBRtbUn6qDe0gEi2FrI4Hc7sEjXjRwuiR4YVXdyLvFnScSRNUt3QD6OsrqXmnoKuJ8TANAuOTlfwvkxPSFeNfFSAAtTmnYMqrGsELFx07G5mEBIJMJ5DrwdGhmoUh1/qR8mu2TB4AC8mBLyD/fY274tTFUE8sCGDHC1BS60AmiLRh54moYA4xZ30hXCU4FAi+0Kr2+5rmGGtPfyW1PuDffsY6CizkSF0n3Mpi+Nx8/jy17PzSDrLfFMxCq/FbCxnHzI1II8mVoFI7Uru8JqhgqoCymceKvjfvfRNnvTWSLmy1fqiwDHvaB99cS58dkB+6RfFBaakSs6OvlsDGq/j6cpBsyUMxMmsFEAs5xqjwATKsYE4+i0xz44HlPrxkKPiP3dhd/hFWxn5La/qZZMvXzUeiafKSB6Jrru3E=
+ secure: AAABAK5QLAxwWQHYNiBEZbN5hd2cXoWWnG3FS4I6f/c4ranj319YBjv/YiMFxM+42ldWvhk4mIW7aa0KM8mw7kpv6uIbXufb958IH+VXmjTFuq0IlTEA+3uHlNTfVBKRW9gOZmljb+0bKhDAgRj/AMKTJEhJpH7u51enAUJHandwMFwDN/yQ8Vima+MEJZN4Lfktwcs5btJI5FGSGFl0r5I20xZYoQWpVxGlTDixmfRMjOOUVflO23BfdYHfsQkBi/R3sXFycUOMbccU0CM+NUPp7eDQc+1/vaZ/6c32sKoQ9O3/+1nGT4hvxiLqU5Cg5ZBs0hSQ5kzyaAPwXTE+BV/So/Go+bh1UziQRzYhSyUf+pBHnUCAVuXWnVC/WjhR2XK00VcNdh9QmiL1xntYWJmuidsDEWYWD0sg4G96/pviw1lpGp9qq9O9Tkh7bSCHtR8I5gYiR+IjWuA9HBtBnRIIxvmO6ulvJ7JBc1USBxJywOp+HvZefqkLMxlSHjkXoXdA7aJCFdJ6l5g57tWeeI6C2LHaALG5S9MUU1vPEi8LMG2zuSlHl+mbVaeMQVX3VJdNmdAWukDleAqrFYSYWycJ5ancU3tgSCTGk6SN4VXoePhvaz3GCg8Zs0LbE2Xq9EgonPekaBMV1GtQlouH+Aw+aYAr4f5rzFv9uYpBOeNpinxx9o2DPERK3Be1EbJbWbGRuNX1H6qhOYPJyb80YBBMylxTFxqmf8yNgKOsqWIn9G3giNhrDSDpJdX68w/OtLJtxrOLpS+u51GWHgCIQSoMmA3azlozL4oIoM7+AwRrVDIrUxvj1E9S6QnoyCkcEqZqJ3HC3ceAU3d7xctGCH6BDg6KStplfw9Ina9ZDagLjN1y8h50YQ4nybv47k9f5Wjy5a6q9OmKamALTjKYbVVbio96RjKRS9dSKMBTEqU+Iigr8vYo1D7HxnSWf8EPjkzePlYtiun4KY88ZUEzC9ru8tkdbgFAakqB+1EKW32D5o2b/03aviPZvkDBnwssfNMLxsUrEYPPSH5RVarBD8dcgcwyVlEPtcJN/Jt2TfzIysBA+vNYQ3N8ggj5WloN6WpwjRZgTmB3D9zm2DZOYe41o56uorWrGaDgpy3+VIjNmY1MfqTtiURE3L9Ua/rEipaLZSAqpEMOx0GzMeOXN1FWWi0QOLiEglHGcVK33moKhHRr7VhEpXTE4cVWeCP0yYNMgRVXfFE74vfW0qJOrs8zEpMWiX+I6FJJ7X75qUSTwAeysZz80yixVxNgT3CMNFYZwiHzWU/H4SmQMwWjl+dGc4WSYgZY2eWt+CPNbAeIu/RDI971hMDzyX6pweGPr7b9cHT2Av/WK1R0h6VIT1dWnfP1ppCSB/aRdWrvRvTMIq84ngoTRL658K6D6nxmMNUGYyAivvWN6H0vsNh89ns51ekKzqp4jdpI+3jnWwqhLg0SImSmkUm/oMLvi4q3LCjoMHuaibnVrJsps/JEbtoHZCapxAFRpl0ytM4r1XUVJu+Dqm9sW5myVfpkBH1TrLErJRwfHYsFqg3oTwYFNYdLp+O6YzF6cMfSI+gmm5X/GnSVeOda5dLMwCXFoJMCNC8vkJJGud1sJV2eg6XHx9ohafq4W8TX1ztmgoYvuADAgmiDdltbHbAk7Q5uWP8743uXgWdyxWWxnvRc2jGa1T8pjq0ac6SvPDQOdNnaF+wVa/GBHz1yEbVgISriyQd5WSe5gnT9aY4mTRj5ApB+ZXydO60gO/xb/MnPYD1nNm1M20yhgsmqLbM4fGNJXYPVVVGQFUb4xyCuIfpbxLnq3RzjNiGhqbtO/7umD9jm9Qek7p/YvDhms76EMMkgDmjjZhHoGCOdjkA6Vlcugzhvh0IfFk8oRrFlUoGc/49YIWDSIcB9bM3kA1SM3L4ETJXDmoNuAH9oUkWjyyvoBue/7FqvFHpmjTQU+PfnNtHLQy1dUNrWTKDahHO/NE1lZrhGE4JGLs1gsnEqJFvmr6yxgkClP0YiRtoW+zmTpGkSjlf0codUbSFWTgX4MHsqYahE3nZX5z4d+zySx/iIOhPydTRBnkT7ACLnHGYsSbxLHNGjnLtaf+2S7UeezJtRgjldAUvVN3NZ4bwbCGk+H2PFjXQTjEpqKGWcSN7g+i76mem5N2pt7GieXykm9l5aq3FvDZmIzAtYd67qrGJ2Zd2L9rUESBBkxU8DRv3stWFyico03EVRih3kBwLgBtYwHe4lLKcOc2UhgExA92pQkRhicimCZ+5oXCiZOyLdc0qML150RXVxT0iQ+n27rOchZ+niQuD1G73TT7ckw5kqGbha/ngkr3xmu2fw+SYUzV2t9/6eMv3KAC16kvA8CoXpyz8Wu+HYH6kEV7nS6aYTTmLhno3uE0AHPkmJjvqoEHCqCggvJSIdOfZJrjyd6BCIvGBRO0JSMft5DzJBDDjtoYUGLTaJk8tLRxrQjMFVZ/CjwH2ki893BR9bE6jRrlS2hE0n/XP6ck+k6VyT2AWRfGoeLEoepW2myNmQVT9Uh8J6Uf50z7HKaPjwp1VAWxID2OYGugp0B675g4IV0hORwMAy0kH0BU9TpmY1S01d1g==
application:ssl-medway-cert:
secure: AAABADcRrgyLvE/mAcsgoEgkLFgNA75B2NBxtr3o7y4xBIJXJKB/zcr4lT5RoB1M3n76vg/9iBpgT3m5afvtk/a39dlEhYQRsTGpZHccnV3l+9pz3yekORUggDlu+/LkCahs4M7gsohs+zPVlxFuFwcTtRrk+qWJhswsHD7JEd+en1QLDqDOBqAEhk/yzxbyCQofzKf8Rl2Z6iqZcTfOPiBtNT0BFyTBxcE4cZMAdeNj55gA0fPigyZIVGtlEfEJKzwz4WWBBtGWp5x3xU26K3j1Jccj5CIdUsiuWIlqPw+wiRZ+GcB8T98JzbPfNqY0LDvKvYi6GRT+MBytlPMqJfMOi1UUhAYuPbu+v4eE7uJID3oOC97t3sFNx/WGzPO97BtPwOfMefWImx+jbWgtl82xdCmowllI616pFJ8giJOSVKwzKJIUi5SQYifDyzXZq74ezrqgW9rMyLscsWBG+VmI/Cd+KJ7oz2/iBZ8L4iAWKZdK5HRzn07Twwg7w/QhT2YkGZ52XwPnN8Pt/CpeUcxjmoQOzqRCnc8VXXNPh9ZyTE+sgQ5VecyHRJ1jPo77VopCuqpq0c5SIeDXFhVvpt9QGpIOdsqqz3FJFk6osEsWvGz8GN1dVKz8lDoJSgxdlcwu+Kv2zhQQWZrwahvmMHolENmCcj04Y502Hm7MyV5q7yDqFe6pRvA29J+xqGNIzRVOhPhWirD1PGhlgv4QOLbIt4mUQxEq2M2dvLQU7AWWabqzYtaAbQC3m65tY6KpYcaFGFicxtHOGWZzEPr+aZPH4GcuL8aKmO6KS7JsHdxXoarDSpI5i/1Ko5bP1fX7ykiH5uGQRnDOSn4ET4Jt1QxNt3SDO/7mZxnnfEnDkAJU4ZD2y0ZaE6cvZzngv3h+1fOTYmaAU+jJNvf/8y9FaMzC56EM9wVee5CPBgB6mOCbdlUtexNTSfrm5ijjO8TrJLapvDLkYbAw037AuZX3ICJz9Kji25mR3QEDZC3eGOTV1qwzMfvMt4y0qRFWDKMbmezqV5KbQGGPpMGH2tpg2TQ60a4UrjsLTlU86xNLay+fIju4UC9XiSpjQsY/gPkESUFSHpkWCNoCgbKugIX7KVSkv9wqYSaxz0drrd1IcvKx94NxDU6RMnWaRy1tBQYkHQ26wK51Tf8OCISIX6/FF3HyUgufPOStxq/0xVsBqm3XTqcRV0h3Y4IrT4/0S93AlNTOrc1KqeBGfZPqI4NoPRCH1PNrhCvya26FedO4SaYXmN3skAReB/fe4vZaoCbzmiTllPLx1X1FiX0k9LWmxOjemNKuZ8HzRoUJmAI/+G4qSZa9DJ+uSioE4Ic5K8INz8Y3c8hCFAf3BV97KB0hVVA/i0FjKAiVHJDxT0gFJgQYGjH4IZ8ltiKOnBNQk6UJvkqmAOngbSMA3Ec+st/jmsXTUMnbPAkuOxdCz9e/FgFMynuNOiN3Te64QGlrTWxnWwprC7Gtlnl2uDWAnyjS3TlkRL4g2HhS3NTphxLw1IDE4s9L6mdx/t66PMUjRdhKhPP0lBsaaVr4ZWorDX/1fvkSZI1Rzw75sE5Hnh48+LGBMl6gmjClViyK4FVaMJC38uR5PitpjvWdd1nhct8d8xffvlan9EFTgMCRoORrLVQC3LB7czTocLn1xDhsDlfrUKTc3YFGu65ZBa8gmW1wQfWBVJ/S/uW98hkjS7a/7yLsjKax+EawN1zJIvua1C6m2RmqE6HjgwYyD/0uY3zMHBMoXJJsawbOBW5N6ilL3w3FbtweJOo9LobUxVTgMI/mJZ93vTIHa156Ua1is32BumLzEBSvBnWsIZVKBq9Kvk/9bl91x7xH1PPiNTuClLVVWUmQVpJXpBGCpdbzqY4ny0DageoiEwuUBDmr/tq0Iwj4TwjkDKn3g5QNkh0rj+sKzbqz+y2BwqCQuSYSXSROLkGzCwQbD9LDwmgSlqoBu3Yacz/f6wd4ev3i3vZGJH7fDLeDUxzs1UBJV6SZ8XdNTsTywWMTPHXyM1quuDpeY+lQPMlbaSCNY7KqgB8bj2CD0/8qqTEhipXZs5SWxMvAkYnH4gv1i6WmC8sDwYLSJTl4CbEWcxakQcYvfqWpOMJC7LOe3ViMLhROJHfS5mrDbMuFOnHpF7b7umybZM7q3vCAGYBUJwDopUL7YdYhlXm/ZEu9fd5SVW6aNVMG3/OpfjGgKpZj1mEyiqq2HkNxvRpZ7RdZHLbRbMGYmw5rUhIZllnUzI3NhYHJwqTNsoTgiIaSxwL5v9PD8TVC8B+HRSlb1nFStkVIljBvchfahrDNekCqwmkjFOfmWZDuCaWTOiDEErQJCNyiTLuJUS3PS8cxM5sxeAUMLvASlefCSqTDMGbY40ZRcwOIVRruibXJsR0Rx9OtuV4x5vp6/suRhQQn41tOMji6MZYBOp3aeCJRB64tYIrgRqel18QWCMM1xekGjSPAy0IVY/W7QYOT3K7aWlMjy1PJa+uvo6cbkiELxaMjV51ppcFW+7vtweUu7MrtI4bp5KMCpwoR1ODym/ZyUm8NheOy/k1ZP0nYdCcK8+qW3cMtbhCnzzAZ5mWl+9xkDilGtevtVItuHbYQbxx5bzARYTKJa98EmVnXGxabLzbbX3gwz7epZWlQECLUhSMFRUGrOVU2qSvcKF5JjyuY3kqBtPRf9iBSOcmdSmTCb9GHk5157xmKirIPyc2l/yBV4KMg61H2HYdVy+qF1FA/xItQCCDXTwdeeEYVagdBX5l4w5X/JekJZFqerIF22dXqrSfB0tLYbB7RBNnbZnWQkoFO1/ct0Im/xOGNEfYIaLd/4IS67DjaCs1XdhyDLSlRD1kGusqn0IBMaKKGryhWgiVgU86zGz7lAkLwA5WoY1cdIgX72g3FjBaXzmqTGDFyqQh9Uao8DMb/ja7pRHJ826t7B4rCcBqCzam/nvkcC6+MsZotkjUlXw9YmrOnqOnSJVjGJOlA04IYfmxUg87I/CWj3do9Z3Sob7eASpemWo/woHdYe+8OZDhMXQ5WD430mSydzB9i4+99f7K7/TX42wiSSrm1/mk7zFoaDOtsTMl1mcw6KgVHAdfYpHQKyssFMK7uGPlLjfHikW1aCOiMVC+n8QFl3kjXApbvgCeHMxmrbX1KW2nlgRRWBQE90Q81f7kXXhOic8sNUTxE6HCGK1a+SY377eAJn+xs3+PoJ4K4XLAjprnge4mgN768eA8Qv8r3fcvV8RInhExX1ZeIRlHTvumTxr0MpNjYaZ4Phz3yNws7eEfhQYXn0LsDP9EqNh15keOMIHMXvBUOhAaP4vBpxq8q+Qq17zhwJ/t/cfn8Jl4GaIBXIGEYgth89o/5xwtuPOfNELhSW+S0oZsJkY+OOAEI6nzZNXcWPrHK6U9dIwP+wOv0sDh5CwQyfl4A5Ps3Zjjfw3pWJHzZ2q19Nirf4D69SRtkEUVvRcxYK/n2tzYrUo9BPr/I3NMZCblXWiAjNP5+rq8eKTh411FP9jxhn4CsjWTkGeSKgL6cyphoWrcfhga8EhxbdypBWJz2/uJZDikAQ1NbIhTGm2PlS0k0Y6LRSxfj4Uhf69qITFtXhwfE1MjjEsM82qe0m+41pn8cPpi8D+2DFTwTEf30+ZqElwEme7YBySLKg7vK1I6fRCOQRTzihlZC/AN4f8Ybt/VM2n+5+oPnHWz2Cmu16rRviDTRj83sG6hpD/Ca9rLo03oMuw==
application:ssl-medway-chain:
diff --git a/infrastructure/application/Pulumi.staging.yaml b/infrastructure/application/Pulumi.staging.yaml
index 47ce774321..7927a328cc 100644
--- a/infrastructure/application/Pulumi.staging.yaml
+++ b/infrastructure/application/Pulumi.staging.yaml
@@ -22,6 +22,8 @@ config:
secure: AAABACgwjEmlLmE19ofRO8e/JpD8sHDV2lcDmSXbU/Mw8ZRh5gTgll8DZ3BVjpDWfQfIecBAIf2TFgeo9CsBSLjfaRJ7eJyKDSWm7i8LlMC2JN/PN+Ig8oeI0H0oLkqJIziNKKjx+e97zDiXO9LZ1CVzrywR
application:hasura-admin-secret:
secure: AAABAHsoh7ZNkr6ep3xXsUZpp/JIjshBX+tJ0KOFgGnJ4wxR0oIcB6VewVDuwSyFJRVix72YahM=
+ application:hasura-cpu: "512"
+ application:hasura-memory: "2048"
application:hasura-planx-api-key:
secure: AAABANHLs3ItPxkteh0chwMP2bKuHO3ovuRLi4FsIrCqerzXVIaTLFDqNR+4KBTeMPz4cnF5tCTwsrJv9GruZdXU+lg=
application:jwt-secret:
diff --git a/infrastructure/application/index.ts b/infrastructure/application/index.ts
index 26deceb602..a5817ffe67 100644
--- a/infrastructure/application/index.ts
+++ b/infrastructure/application/index.ts
@@ -76,6 +76,10 @@ const CUSTOM_DOMAINS: CustomDomains =
domain: "planningservices.gloucester.gov.uk",
name: "gloucester",
},
+ {
+ domain: "planningservices.epsom-ewell.gov.uk",
+ name: "epsom-and-ewell",
+ },
]
: [];
diff --git a/infrastructure/application/package.json b/infrastructure/application/package.json
index acf5364be9..aa65adf6d6 100644
--- a/infrastructure/application/package.json
+++ b/infrastructure/application/package.json
@@ -19,9 +19,11 @@
"scripts": {
"build-editor": "cd ../../editor.planx.uk && pnpm build"
},
+ "packageManager": "pnpm@8.6.6",
"pnpm": {
"overrides": {
- "protobufjs@>=7.0.0 <7.2.5": ">=7.2.5"
+ "protobufjs@>=7.0.0 <7.2.5": ">=7.2.5",
+ "@grpc/grpc-js@>=1.10.0 <1.10.9": ">=1.10.9"
}
}
}
diff --git a/infrastructure/application/pnpm-lock.yaml b/infrastructure/application/pnpm-lock.yaml
index f11c8bcdd3..5e236d2bab 100644
--- a/infrastructure/application/pnpm-lock.yaml
+++ b/infrastructure/application/pnpm-lock.yaml
@@ -6,6 +6,7 @@ settings:
overrides:
protobufjs@>=7.0.0 <7.2.5: '>=7.2.5'
+ '@grpc/grpc-js@>=1.10.0 <1.10.9': '>=1.10.9'
dependencies:
'@nodelib/fs.walk':
@@ -52,22 +53,22 @@ devDependencies:
packages:
- /@grpc/grpc-js@1.10.6:
- resolution: {integrity: sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA==}
+ /@grpc/grpc-js@1.10.9:
+ resolution: {integrity: sha512-5tcgUctCG0qoNyfChZifz2tJqbRbXVO9J7X6duFcOjY3HUNCxg5D0ZCK7EP9vIcZ0zRpLU9bWkyCqVCLZ46IbQ==}
engines: {node: '>=12.10.0'}
dependencies:
- '@grpc/proto-loader': 0.7.12
+ '@grpc/proto-loader': 0.7.13
'@js-sdsl/ordered-map': 4.4.2
dev: false
- /@grpc/proto-loader@0.7.12:
- resolution: {integrity: sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==}
+ /@grpc/proto-loader@0.7.13:
+ resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==}
engines: {node: '>=6'}
hasBin: true
dependencies:
lodash.camelcase: 4.3.0
long: 5.2.3
- protobufjs: 7.2.6
+ protobufjs: 7.3.2
yargs: 17.7.2
dev: false
@@ -106,135 +107,135 @@ packages:
engines: {node: '>=14'}
deprecated: Please use @opentelemetry/api >= 1.3.0
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
dev: false
- /@opentelemetry/api@1.8.0:
- resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==}
+ /@opentelemetry/api@1.9.0:
+ resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
dev: false
- /@opentelemetry/context-async-hooks@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==}
+ /@opentelemetry/context-async-hooks@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-sBW313mnMyFg0cp/40BRzrZBWG+581s2j5gIsa5fgGadswyILk4mNFATsqrCOpAx945RDuZ2B7ThQLgor9OpfA==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
dev: false
- /@opentelemetry/core@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==}
+ /@opentelemetry/core@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/exporter-zipkin@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==}
+ /@opentelemetry/exporter-zipkin@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-nnhY0e5DHg8BfUSNCQZoGZnGeqz+zMTeEUOh1dfgtaXmF99uM0QPuTa1i2lH+eZqebP8w1WDWZlewu9FUlHqIg==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/instrumentation-grpc@0.32.0(@opentelemetry/api@1.8.0):
+ /@opentelemetry/instrumentation-grpc@0.32.0(@opentelemetry/api@1.9.0):
resolution: {integrity: sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
'@opentelemetry/api-metrics': 0.32.0
- '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.6.0
transitivePeerDependencies:
- supports-color
dev: false
- /@opentelemetry/instrumentation@0.32.0(@opentelemetry/api@1.8.0):
+ /@opentelemetry/instrumentation@0.32.0(@opentelemetry/api@1.9.0):
resolution: {integrity: sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
'@opentelemetry/api-metrics': 0.32.0
require-in-the-middle: 5.2.0
- semver: 7.6.0
+ semver: 7.6.2
shimmer: 1.2.1
transitivePeerDependencies:
- supports-color
dev: false
- /@opentelemetry/propagator-b3@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==}
+ /@opentelemetry/propagator-b3@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-/A+1Tbnf0uwnP51OkoaQlrb9YILdHsoqIISna1MNXpZRzf42xm6LVLb49i+m/zlJoW1e8P4ekcrditR5pfmwog==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
dev: false
- /@opentelemetry/propagator-jaeger@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==}
+ /@opentelemetry/propagator-jaeger@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-uwA5xqaPISXeX+YutqbjmzENnCGCvrIXlqIXP5gRoA5N6S3W28p+ExL77TugMKHN5gXklapF67jDfz7lq5ETzQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
dev: false
- /@opentelemetry/resources@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==}
+ /@opentelemetry/resources@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/sdk-trace-base@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==}
+ /@opentelemetry/sdk-trace-base@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-6+g2fiRQUG39guCsKVeY8ToeuUf3YUnPkN6DXRA1qDmFLprlLvZm9cS6+chgbW70cZJ406FTtSCDnJwxDC5sGQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/sdk-trace-node@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==}
+ /@opentelemetry/sdk-trace-node@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-sYdZmNCkqthPpjwCxAJk5aQNLxCOQjT1u3JMGvO6rb3Ic8uFdnzXavP13Md9uYPcZBo+KxetyDhCf0x8wJGRng==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/context-async-hooks': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/propagator-b3': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/propagator-jaeger': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.8.0)
- semver: 7.6.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/context-async-hooks': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/propagator-b3': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/propagator-jaeger': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0)
+ semver: 7.6.2
dev: false
- /@opentelemetry/semantic-conventions@1.23.0:
- resolution: {integrity: sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==}
+ /@opentelemetry/semantic-conventions@1.25.0:
+ resolution: {integrity: sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==}
engines: {node: '>=14'}
dev: false
@@ -291,7 +292,7 @@ packages:
requiresBuild: true
dependencies:
'@pulumi/pulumi': 3.75.0
- aws-sdk: 2.1597.0
+ aws-sdk: 2.1644.0
builtin-modules: 3.0.0
mime: 2.6.0
read-package-tree: 5.3.1
@@ -309,7 +310,7 @@ packages:
'@pulumi/aws': 5.42.0
'@pulumi/docker': 3.2.0
'@pulumi/pulumi': 3.75.0
- '@types/aws-lambda': 8.10.137
+ '@types/aws-lambda': 8.10.140
mime: 2.6.0
transitivePeerDependencies:
- supports-color
@@ -347,16 +348,16 @@ packages:
resolution: {integrity: sha512-gtraq2JsCWIpMyohWluXGvxPzOnbqqPCVMtE96SPiKaevaBXdfx4PI/Yli29d3KK/thigvb3RrJ9e7X6q6DGew==}
engines: {node: '>=8.13.0 || >=10.10.0'}
dependencies:
- '@grpc/grpc-js': 1.10.6
+ '@grpc/grpc-js': 1.10.9
'@logdna/tail-file': 2.2.0
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/exporter-zipkin': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/instrumentation-grpc': 0.32.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-node': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/exporter-zipkin': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-grpc': 0.32.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-node': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
'@pulumi/query': 0.3.0
execa: 5.1.1
google-protobuf: 3.21.2
@@ -367,7 +368,7 @@ packages:
pkg-dir: 7.0.0
read-package-tree: 5.3.1
require-from-string: 2.0.2
- semver: 7.6.0
+ semver: 7.6.2
source-map-support: 0.5.21
ts-node: 7.0.1
typescript: 3.8.3
@@ -389,8 +390,8 @@ packages:
- supports-color
dev: false
- /@types/aws-lambda@8.10.137:
- resolution: {integrity: sha512-YNFwzVarXAOXkjuFxONyDw1vgRNzyH8AuyN19s0bM+ChSu/bzxb5XPxYFLXoqoM+tvgzwR3k7fXcEOW125yJxg==}
+ /@types/aws-lambda@8.10.140:
+ resolution: {integrity: sha512-4Dh3dk2TUcbdfHrX0Al90mNGJDvA9NBiTQPzbrjGi/dLxzKCGOYgT8YQ47jUKNFALkAJAadifq0pzyjIUlhVhg==}
dev: false
/@types/mime@2.0.3:
@@ -473,8 +474,8 @@ packages:
possible-typed-array-names: 1.0.0
dev: false
- /aws-sdk@2.1597.0:
- resolution: {integrity: sha512-YvApP9p5a5TD870mvQRrcUyJz3nKFrtlnDLaA4yrmAaidMDGzdNJ+AZlW0+onRCB4llzKD4Hos56zea0ulR+zQ==}
+ /aws-sdk@2.1644.0:
+ resolution: {integrity: sha512-9DkVmQWrL766uxeag6wLbXNahwodrIvxZlh1JZ6bzMoNXLCx38GhQfdtLhCoqK7+k0c5QIzHhjPqyqwPM4ohJw==}
engines: {node: '>= 10.0.0'}
requiresBuild: true
dependencies:
@@ -593,8 +594,8 @@ packages:
is-data-view: 1.0.1
dev: false
- /debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ /debug@4.3.5:
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -663,7 +664,7 @@ packages:
function.prototype.name: 1.1.6
get-intrinsic: 1.2.4
get-symbol-description: 1.0.2
- globalthis: 1.0.3
+ globalthis: 1.0.4
gopd: 1.0.1
has-property-descriptors: 1.0.2
has-proto: 1.0.3
@@ -842,6 +843,7 @@ packages:
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -851,11 +853,12 @@ packages:
path-is-absolute: 1.0.1
dev: false
- /globalthis@1.0.3:
- resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ /globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
dependencies:
define-properties: 1.2.1
+ gopd: 1.0.1
dev: false
/google-protobuf@3.21.2:
@@ -928,6 +931,7 @@ packages:
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
dependencies:
once: 1.4.0
wrappy: 1.0.2
@@ -1193,7 +1197,7 @@ packages:
dependencies:
hosted-git-info: 4.1.0
is-core-module: 2.13.1
- semver: 7.6.0
+ semver: 7.6.2
validate-npm-package-license: 3.0.4
dev: false
@@ -1298,8 +1302,8 @@ packages:
engines: {node: '>= 0.4'}
dev: false
- /protobufjs@7.2.6:
- resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==}
+ /protobufjs@7.3.2:
+ resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==}
engines: {node: '>=12.0.0'}
requiresBuild: true
dependencies:
@@ -1337,6 +1341,7 @@ packages:
/read-package-json@2.1.2:
resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==}
+ deprecated: This package is no longer supported. Please use @npmcli/package-json instead.
dependencies:
glob: 7.2.3
json-parse-even-better-errors: 2.3.1
@@ -1387,7 +1392,7 @@ packages:
resolution: {integrity: sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==}
engines: {node: '>=6'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
module-details-from-path: 1.0.3
resolve: 1.22.8
transitivePeerDependencies:
@@ -1442,12 +1447,10 @@ packages:
hasBin: true
dev: false
- /semver@7.6.0:
- resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
+ /semver@7.6.2:
+ resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
hasBin: true
- dependencies:
- lru-cache: 6.0.0
dev: false
/set-function-length@1.2.2:
@@ -1518,7 +1521,7 @@ packages:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.17
+ spdx-license-ids: 3.0.18
dev: false
/spdx-exceptions@2.5.0:
@@ -1529,11 +1532,11 @@ packages:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
dependencies:
spdx-exceptions: 2.5.0
- spdx-license-ids: 3.0.17
+ spdx-license-ids: 3.0.18
dev: false
- /spdx-license-ids@3.0.17:
- resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
+ /spdx-license-ids@3.0.18:
+ resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==}
dev: false
/sprintf-js@1.0.3:
diff --git a/infrastructure/application/services/hasura.ts b/infrastructure/application/services/hasura.ts
index 5150500116..d6f9696753 100644
--- a/infrastructure/application/services/hasura.ts
+++ b/infrastructure/application/services/hasura.ts
@@ -68,7 +68,8 @@ export const createHasuraService = async ({
},
hasura: {
image: repo.buildAndPushImage("../../hasura.planx.uk"),
- memory: 1024 /*MB*/,
+ cpu: config.requireNumber("hasura-cpu"),
+ memory: config.requireNumber("hasura-memory"),
environment: [
{ name: "HASURA_GRAPHQL_ENABLE_CONSOLE", value: "true" },
{
@@ -106,7 +107,7 @@ export const createHasuraService = async ({
},
],
},
- }
+ },
},
desiredCount: 1,
});
diff --git a/infrastructure/certificates/package.json b/infrastructure/certificates/package.json
index 91c3d40f8f..ab8d8e38cf 100644
--- a/infrastructure/certificates/package.json
+++ b/infrastructure/certificates/package.json
@@ -10,10 +10,12 @@
"@pulumi/pulumi": "^3.0.0",
"tldjs": "^2.3.1"
},
+ "packageManager": "pnpm@8.6.6",
"pnpm": {
"overrides": {
"protobufjs": ">=7.2.4",
- "protobufjs@>=7.0.0 <7.2.5": ">=7.2.5"
+ "protobufjs@>=7.0.0 <7.2.5": ">=7.2.5",
+ "@grpc/grpc-js@>=1.10.0 <1.10.9": ">=1.10.9"
}
}
}
diff --git a/infrastructure/certificates/pnpm-lock.yaml b/infrastructure/certificates/pnpm-lock.yaml
index 12ae64b4d9..f778369177 100644
--- a/infrastructure/certificates/pnpm-lock.yaml
+++ b/infrastructure/certificates/pnpm-lock.yaml
@@ -7,6 +7,7 @@ settings:
overrides:
protobufjs: '>=7.2.4'
protobufjs@>=7.0.0 <7.2.5: '>=7.2.5'
+ '@grpc/grpc-js@>=1.10.0 <1.10.9': '>=1.10.9'
dependencies:
'@pulumi/aws':
@@ -35,22 +36,22 @@ devDependencies:
packages:
- /@grpc/grpc-js@1.10.6:
- resolution: {integrity: sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA==}
+ /@grpc/grpc-js@1.10.9:
+ resolution: {integrity: sha512-5tcgUctCG0qoNyfChZifz2tJqbRbXVO9J7X6duFcOjY3HUNCxg5D0ZCK7EP9vIcZ0zRpLU9bWkyCqVCLZ46IbQ==}
engines: {node: '>=12.10.0'}
dependencies:
- '@grpc/proto-loader': 0.7.12
+ '@grpc/proto-loader': 0.7.13
'@js-sdsl/ordered-map': 4.4.2
dev: false
- /@grpc/proto-loader@0.7.12:
- resolution: {integrity: sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==}
+ /@grpc/proto-loader@0.7.13:
+ resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==}
engines: {node: '>=6'}
hasBin: true
dependencies:
lodash.camelcase: 4.3.0
long: 5.2.3
- protobufjs: 7.2.6
+ protobufjs: 7.3.2
yargs: 17.7.2
dev: false
@@ -111,7 +112,7 @@ packages:
requiresBuild: true
dependencies:
'@pulumi/pulumi': 3.0.0
- aws-sdk: 2.1597.0
+ aws-sdk: 2.1644.0
builtin-modules: 3.0.0
mime: 2.6.0
read-package-tree: 5.3.1
@@ -127,7 +128,7 @@ packages:
'@pulumi/aws': 4.0.0
'@pulumi/docker': 3.6.1
'@pulumi/pulumi': 3.0.0
- '@types/aws-lambda': 8.10.137
+ '@types/aws-lambda': 8.10.140
mime: 2.6.0
dev: false
@@ -150,14 +151,14 @@ packages:
resolution: {integrity: sha512-s9pwbdFrMU8vt4F5aIf8cpnDmHSM5Pn5V2Y7T7m0R14pfxTjCqt5ZAuEdKys0SgL+DxDp5L4Kz/53SXC6MFEEw==}
engines: {node: '>=8.13.0 || >=10.10.0'}
dependencies:
- '@grpc/grpc-js': 1.10.6
+ '@grpc/grpc-js': 1.10.9
'@logdna/tail-file': 2.2.0
'@pulumi/query': 0.3.0
google-protobuf: 3.21.2
js-yaml: 3.14.1
minimist: 1.2.8
normalize-package-data: 2.5.0
- protobufjs: 7.2.6
+ protobufjs: 7.3.2
read-package-tree: 5.3.1
require-from-string: 2.0.2
semver: 6.3.1
@@ -172,8 +173,8 @@ packages:
resolution: {integrity: sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==}
dev: false
- /@types/aws-lambda@8.10.137:
- resolution: {integrity: sha512-YNFwzVarXAOXkjuFxONyDw1vgRNzyH8AuyN19s0bM+ChSu/bzxb5XPxYFLXoqoM+tvgzwR3k7fXcEOW125yJxg==}
+ /@types/aws-lambda@8.10.140:
+ resolution: {integrity: sha512-4Dh3dk2TUcbdfHrX0Al90mNGJDvA9NBiTQPzbrjGi/dLxzKCGOYgT8YQ47jUKNFALkAJAadifq0pzyjIUlhVhg==}
dev: false
/@types/node@14.14.41:
@@ -252,8 +253,8 @@ packages:
possible-typed-array-names: 1.0.0
dev: false
- /aws-sdk@2.1597.0:
- resolution: {integrity: sha512-YvApP9p5a5TD870mvQRrcUyJz3nKFrtlnDLaA4yrmAaidMDGzdNJ+AZlW0+onRCB4llzKD4Hos56zea0ulR+zQ==}
+ /aws-sdk@2.1644.0:
+ resolution: {integrity: sha512-9DkVmQWrL766uxeag6wLbXNahwodrIvxZlh1JZ6bzMoNXLCx38GhQfdtLhCoqK7+k0c5QIzHhjPqyqwPM4ohJw==}
engines: {node: '>= 10.0.0'}
requiresBuild: true
dependencies:
@@ -421,7 +422,7 @@ packages:
function.prototype.name: 1.1.6
get-intrinsic: 1.2.4
get-symbol-description: 1.0.2
- globalthis: 1.0.3
+ globalthis: 1.0.4
gopd: 1.0.1
has-property-descriptors: 1.0.2
has-proto: 1.0.3
@@ -566,6 +567,7 @@ packages:
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -575,11 +577,12 @@ packages:
path-is-absolute: 1.0.1
dev: false
- /globalthis@1.0.3:
- resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ /globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
dependencies:
define-properties: 1.2.1
+ gopd: 1.0.1
dev: false
/google-protobuf@3.21.2:
@@ -640,6 +643,7 @@ packages:
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
dependencies:
once: 1.4.0
wrappy: 1.0.2
@@ -904,8 +908,8 @@ packages:
engines: {node: '>= 0.4'}
dev: false
- /protobufjs@7.2.6:
- resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==}
+ /protobufjs@7.3.2:
+ resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==}
engines: {node: '>=12.0.0'}
requiresBuild: true
dependencies:
@@ -939,6 +943,7 @@ packages:
/read-package-json@2.1.2:
resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==}
+ deprecated: This package is no longer supported. Please use @npmcli/package-json instead.
dependencies:
glob: 7.2.3
json-parse-even-better-errors: 2.3.1
@@ -1099,7 +1104,7 @@ packages:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.17
+ spdx-license-ids: 3.0.18
dev: false
/spdx-exceptions@2.5.0:
@@ -1110,11 +1115,11 @@ packages:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
dependencies:
spdx-exceptions: 2.5.0
- spdx-license-ids: 3.0.17
+ spdx-license-ids: 3.0.18
dev: false
- /spdx-license-ids@3.0.17:
- resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
+ /spdx-license-ids@3.0.18:
+ resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==}
dev: false
/split2@3.2.2:
diff --git a/infrastructure/data/package.json b/infrastructure/data/package.json
index ca42fbf15d..8ee29c4301 100644
--- a/infrastructure/data/package.json
+++ b/infrastructure/data/package.json
@@ -7,9 +7,11 @@
"@pulumi/awsx": "^0.30.0",
"@pulumi/pulumi": "^3.74.0"
},
+ "packageManager": "pnpm@8.6.6",
"pnpm": {
"overrides": {
- "protobufjs@>=7.0.0 <7.2.5": ">=7.2.5"
+ "protobufjs@>=7.0.0 <7.2.5": ">=7.2.5",
+ "@grpc/grpc-js@>=1.10.0 <1.10.9": ">=1.10.9"
}
}
}
diff --git a/infrastructure/data/pnpm-lock.yaml b/infrastructure/data/pnpm-lock.yaml
index c058cbd09b..3a4e684bc7 100644
--- a/infrastructure/data/pnpm-lock.yaml
+++ b/infrastructure/data/pnpm-lock.yaml
@@ -6,6 +6,7 @@ settings:
overrides:
protobufjs@>=7.0.0 <7.2.5: '>=7.2.5'
+ '@grpc/grpc-js@>=1.10.0 <1.10.9': '>=1.10.9'
dependencies:
'@pulumi/aws':
@@ -25,22 +26,22 @@ devDependencies:
packages:
- /@grpc/grpc-js@1.10.6:
- resolution: {integrity: sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA==}
+ /@grpc/grpc-js@1.10.9:
+ resolution: {integrity: sha512-5tcgUctCG0qoNyfChZifz2tJqbRbXVO9J7X6duFcOjY3HUNCxg5D0ZCK7EP9vIcZ0zRpLU9bWkyCqVCLZ46IbQ==}
engines: {node: '>=12.10.0'}
dependencies:
- '@grpc/proto-loader': 0.7.12
+ '@grpc/proto-loader': 0.7.13
'@js-sdsl/ordered-map': 4.4.2
dev: false
- /@grpc/proto-loader@0.7.12:
- resolution: {integrity: sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==}
+ /@grpc/proto-loader@0.7.13:
+ resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==}
engines: {node: '>=6'}
hasBin: true
dependencies:
lodash.camelcase: 4.3.0
long: 5.2.3
- protobufjs: 7.2.6
+ protobufjs: 7.3.2
yargs: 17.7.2
dev: false
@@ -58,135 +59,135 @@ packages:
engines: {node: '>=14'}
deprecated: Please use @opentelemetry/api >= 1.3.0
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
dev: false
- /@opentelemetry/api@1.8.0:
- resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==}
+ /@opentelemetry/api@1.9.0:
+ resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
dev: false
- /@opentelemetry/context-async-hooks@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==}
+ /@opentelemetry/context-async-hooks@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-sBW313mnMyFg0cp/40BRzrZBWG+581s2j5gIsa5fgGadswyILk4mNFATsqrCOpAx945RDuZ2B7ThQLgor9OpfA==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
dev: false
- /@opentelemetry/core@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==}
+ /@opentelemetry/core@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/exporter-zipkin@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==}
+ /@opentelemetry/exporter-zipkin@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-nnhY0e5DHg8BfUSNCQZoGZnGeqz+zMTeEUOh1dfgtaXmF99uM0QPuTa1i2lH+eZqebP8w1WDWZlewu9FUlHqIg==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/instrumentation-grpc@0.32.0(@opentelemetry/api@1.8.0):
+ /@opentelemetry/instrumentation-grpc@0.32.0(@opentelemetry/api@1.9.0):
resolution: {integrity: sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
'@opentelemetry/api-metrics': 0.32.0
- '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.6.0
transitivePeerDependencies:
- supports-color
dev: false
- /@opentelemetry/instrumentation@0.32.0(@opentelemetry/api@1.8.0):
+ /@opentelemetry/instrumentation@0.32.0(@opentelemetry/api@1.9.0):
resolution: {integrity: sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
'@opentelemetry/api-metrics': 0.32.0
require-in-the-middle: 5.2.0
- semver: 7.6.0
+ semver: 7.6.2
shimmer: 1.2.1
transitivePeerDependencies:
- supports-color
dev: false
- /@opentelemetry/propagator-b3@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==}
+ /@opentelemetry/propagator-b3@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-/A+1Tbnf0uwnP51OkoaQlrb9YILdHsoqIISna1MNXpZRzf42xm6LVLb49i+m/zlJoW1e8P4ekcrditR5pfmwog==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
dev: false
- /@opentelemetry/propagator-jaeger@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==}
+ /@opentelemetry/propagator-jaeger@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-uwA5xqaPISXeX+YutqbjmzENnCGCvrIXlqIXP5gRoA5N6S3W28p+ExL77TugMKHN5gXklapF67jDfz7lq5ETzQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
dev: false
- /@opentelemetry/resources@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==}
+ /@opentelemetry/resources@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/sdk-trace-base@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==}
+ /@opentelemetry/sdk-trace-base@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-6+g2fiRQUG39guCsKVeY8ToeuUf3YUnPkN6DXRA1qDmFLprlLvZm9cS6+chgbW70cZJ406FTtSCDnJwxDC5sGQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/sdk-trace-node@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==}
+ /@opentelemetry/sdk-trace-node@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-sYdZmNCkqthPpjwCxAJk5aQNLxCOQjT1u3JMGvO6rb3Ic8uFdnzXavP13Md9uYPcZBo+KxetyDhCf0x8wJGRng==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/context-async-hooks': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/propagator-b3': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/propagator-jaeger': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.8.0)
- semver: 7.6.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/context-async-hooks': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/propagator-b3': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/propagator-jaeger': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0)
+ semver: 7.6.2
dev: false
- /@opentelemetry/semantic-conventions@1.23.0:
- resolution: {integrity: sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==}
+ /@opentelemetry/semantic-conventions@1.25.0:
+ resolution: {integrity: sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==}
engines: {node: '>=14'}
dev: false
@@ -243,7 +244,7 @@ packages:
requiresBuild: true
dependencies:
'@pulumi/pulumi': 3.74.0
- aws-sdk: 2.1597.0
+ aws-sdk: 2.1644.0
builtin-modules: 3.0.0
mime: 2.6.0
read-package-tree: 5.3.1
@@ -261,7 +262,7 @@ packages:
'@pulumi/aws': 4.0.0
'@pulumi/docker': 3.6.1
'@pulumi/pulumi': 3.74.0
- '@types/aws-lambda': 8.10.137
+ '@types/aws-lambda': 8.10.140
mime: 2.6.0
transitivePeerDependencies:
- supports-color
@@ -281,15 +282,15 @@ packages:
resolution: {integrity: sha512-VKHCH84aiD6FTosr/SmRnp/te1JvpunpPToIG69IlTDMAiDFeRFu/mXUenc1uicWyxG/pKav72f+eKGNdyZqjg==}
engines: {node: '>=8.13.0 || >=10.10.0'}
dependencies:
- '@grpc/grpc-js': 1.10.6
+ '@grpc/grpc-js': 1.10.9
'@logdna/tail-file': 2.2.0
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/exporter-zipkin': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/instrumentation-grpc': 0.32.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-node': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/exporter-zipkin': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-grpc': 0.32.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-node': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
'@pulumi/query': 0.3.0
execa: 5.1.1
google-protobuf: 3.21.2
@@ -300,7 +301,7 @@ packages:
pkg-dir: 7.0.0
read-package-tree: 5.3.1
require-from-string: 2.0.2
- semver: 7.6.0
+ semver: 7.6.2
source-map-support: 0.5.21
ts-node: 7.0.1
typescript: 3.8.3
@@ -313,8 +314,8 @@ packages:
resolution: {integrity: sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==}
dev: false
- /@types/aws-lambda@8.10.137:
- resolution: {integrity: sha512-YNFwzVarXAOXkjuFxONyDw1vgRNzyH8AuyN19s0bM+ChSu/bzxb5XPxYFLXoqoM+tvgzwR3k7fXcEOW125yJxg==}
+ /@types/aws-lambda@8.10.140:
+ resolution: {integrity: sha512-4Dh3dk2TUcbdfHrX0Al90mNGJDvA9NBiTQPzbrjGi/dLxzKCGOYgT8YQ47jUKNFALkAJAadifq0pzyjIUlhVhg==}
dev: false
/@types/node@14.14.41:
@@ -389,8 +390,8 @@ packages:
possible-typed-array-names: 1.0.0
dev: false
- /aws-sdk@2.1597.0:
- resolution: {integrity: sha512-YvApP9p5a5TD870mvQRrcUyJz3nKFrtlnDLaA4yrmAaidMDGzdNJ+AZlW0+onRCB4llzKD4Hos56zea0ulR+zQ==}
+ /aws-sdk@2.1644.0:
+ resolution: {integrity: sha512-9DkVmQWrL766uxeag6wLbXNahwodrIvxZlh1JZ6bzMoNXLCx38GhQfdtLhCoqK7+k0c5QIzHhjPqyqwPM4ohJw==}
engines: {node: '>= 10.0.0'}
requiresBuild: true
dependencies:
@@ -509,8 +510,8 @@ packages:
is-data-view: 1.0.1
dev: false
- /debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ /debug@4.3.5:
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -579,7 +580,7 @@ packages:
function.prototype.name: 1.1.6
get-intrinsic: 1.2.4
get-symbol-description: 1.0.2
- globalthis: 1.0.3
+ globalthis: 1.0.4
gopd: 1.0.1
has-property-descriptors: 1.0.2
has-proto: 1.0.3
@@ -752,6 +753,7 @@ packages:
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -761,11 +763,12 @@ packages:
path-is-absolute: 1.0.1
dev: false
- /globalthis@1.0.3:
- resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ /globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
dependencies:
define-properties: 1.2.1
+ gopd: 1.0.1
dev: false
/google-protobuf@3.21.2:
@@ -838,6 +841,7 @@ packages:
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
dependencies:
once: 1.4.0
wrappy: 1.0.2
@@ -1097,7 +1101,7 @@ packages:
dependencies:
hosted-git-info: 4.1.0
is-core-module: 2.13.1
- semver: 7.6.0
+ semver: 7.6.2
validate-npm-package-license: 3.0.4
dev: false
@@ -1202,8 +1206,8 @@ packages:
engines: {node: '>= 0.4'}
dev: false
- /protobufjs@7.2.6:
- resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==}
+ /protobufjs@7.3.2:
+ resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==}
engines: {node: '>=12.0.0'}
requiresBuild: true
dependencies:
@@ -1233,6 +1237,7 @@ packages:
/read-package-json@2.1.2:
resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==}
+ deprecated: This package is no longer supported. Please use @npmcli/package-json instead.
dependencies:
glob: 7.2.3
json-parse-even-better-errors: 2.3.1
@@ -1283,7 +1288,7 @@ packages:
resolution: {integrity: sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==}
engines: {node: '>=6'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
module-details-from-path: 1.0.3
resolve: 1.22.8
transitivePeerDependencies:
@@ -1327,12 +1332,10 @@ packages:
hasBin: true
dev: false
- /semver@7.6.0:
- resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
+ /semver@7.6.2:
+ resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
hasBin: true
- dependencies:
- lru-cache: 6.0.0
dev: false
/set-function-length@1.2.2:
@@ -1403,7 +1406,7 @@ packages:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.17
+ spdx-license-ids: 3.0.18
dev: false
/spdx-exceptions@2.5.0:
@@ -1414,11 +1417,11 @@ packages:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
dependencies:
spdx-exceptions: 2.5.0
- spdx-license-ids: 3.0.17
+ spdx-license-ids: 3.0.18
dev: false
- /spdx-license-ids@3.0.17:
- resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
+ /spdx-license-ids@3.0.18:
+ resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==}
dev: false
/sprintf-js@1.0.3:
diff --git a/infrastructure/networking/package.json b/infrastructure/networking/package.json
index ca42fbf15d..8ee29c4301 100644
--- a/infrastructure/networking/package.json
+++ b/infrastructure/networking/package.json
@@ -7,9 +7,11 @@
"@pulumi/awsx": "^0.30.0",
"@pulumi/pulumi": "^3.74.0"
},
+ "packageManager": "pnpm@8.6.6",
"pnpm": {
"overrides": {
- "protobufjs@>=7.0.0 <7.2.5": ">=7.2.5"
+ "protobufjs@>=7.0.0 <7.2.5": ">=7.2.5",
+ "@grpc/grpc-js@>=1.10.0 <1.10.9": ">=1.10.9"
}
}
}
diff --git a/infrastructure/networking/pnpm-lock.yaml b/infrastructure/networking/pnpm-lock.yaml
index c058cbd09b..3a4e684bc7 100644
--- a/infrastructure/networking/pnpm-lock.yaml
+++ b/infrastructure/networking/pnpm-lock.yaml
@@ -6,6 +6,7 @@ settings:
overrides:
protobufjs@>=7.0.0 <7.2.5: '>=7.2.5'
+ '@grpc/grpc-js@>=1.10.0 <1.10.9': '>=1.10.9'
dependencies:
'@pulumi/aws':
@@ -25,22 +26,22 @@ devDependencies:
packages:
- /@grpc/grpc-js@1.10.6:
- resolution: {integrity: sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA==}
+ /@grpc/grpc-js@1.10.9:
+ resolution: {integrity: sha512-5tcgUctCG0qoNyfChZifz2tJqbRbXVO9J7X6duFcOjY3HUNCxg5D0ZCK7EP9vIcZ0zRpLU9bWkyCqVCLZ46IbQ==}
engines: {node: '>=12.10.0'}
dependencies:
- '@grpc/proto-loader': 0.7.12
+ '@grpc/proto-loader': 0.7.13
'@js-sdsl/ordered-map': 4.4.2
dev: false
- /@grpc/proto-loader@0.7.12:
- resolution: {integrity: sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==}
+ /@grpc/proto-loader@0.7.13:
+ resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==}
engines: {node: '>=6'}
hasBin: true
dependencies:
lodash.camelcase: 4.3.0
long: 5.2.3
- protobufjs: 7.2.6
+ protobufjs: 7.3.2
yargs: 17.7.2
dev: false
@@ -58,135 +59,135 @@ packages:
engines: {node: '>=14'}
deprecated: Please use @opentelemetry/api >= 1.3.0
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
dev: false
- /@opentelemetry/api@1.8.0:
- resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==}
+ /@opentelemetry/api@1.9.0:
+ resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
dev: false
- /@opentelemetry/context-async-hooks@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-wazGJZDRevibOJ+VgyrT+9+8sybZAxpZx2G7vy30OAtk92OpZCg7HgNxT11NUx0VBDWcRx1dOatMYGOVplQ7QA==}
+ /@opentelemetry/context-async-hooks@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-sBW313mnMyFg0cp/40BRzrZBWG+581s2j5gIsa5fgGadswyILk4mNFATsqrCOpAx945RDuZ2B7ThQLgor9OpfA==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
dev: false
- /@opentelemetry/core@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-hdQ/a9TMzMQF/BO8Cz1juA43/L5YGtCSiKoOHmrTEf7VMDAZgy8ucpWx3eQTnQ3gBloRcWtzvcrMZABC3PTSKQ==}
+ /@opentelemetry/core@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/exporter-zipkin@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-2LOGvNUGONuIcWhynFaJorVyqv03uZkURScciLmOxvBf2lWTNPEj77br1dCpShIWBM+YlrH7Tc+JXAs+GC7DqA==}
+ /@opentelemetry/exporter-zipkin@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-nnhY0e5DHg8BfUSNCQZoGZnGeqz+zMTeEUOh1dfgtaXmF99uM0QPuTa1i2lH+eZqebP8w1WDWZlewu9FUlHqIg==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/instrumentation-grpc@0.32.0(@opentelemetry/api@1.8.0):
+ /@opentelemetry/instrumentation-grpc@0.32.0(@opentelemetry/api@1.9.0):
resolution: {integrity: sha512-Az6wdkPx/Mi26lT9LKFV6GhCA9prwQFPz5eCNSExTnSP49YhQ7XCjzPd2POPeLKt84ICitrBMdE1mj0zbPdLAQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
'@opentelemetry/api-metrics': 0.32.0
- '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/instrumentation': 0.32.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.6.0
transitivePeerDependencies:
- supports-color
dev: false
- /@opentelemetry/instrumentation@0.32.0(@opentelemetry/api@1.8.0):
+ /@opentelemetry/instrumentation@0.32.0(@opentelemetry/api@1.9.0):
resolution: {integrity: sha512-y6ADjHpkUz/v1nkyyYjsQa/zorhX+0qVGpFvXMcbjU4sHnBnC02c6wcc93sIgZfiQClIWo45TGku1KQxJ5UUbQ==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
- '@opentelemetry/api': 1.8.0
+ '@opentelemetry/api': 1.9.0
'@opentelemetry/api-metrics': 0.32.0
require-in-the-middle: 5.2.0
- semver: 7.6.0
+ semver: 7.6.2
shimmer: 1.2.1
transitivePeerDependencies:
- supports-color
dev: false
- /@opentelemetry/propagator-b3@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-cZ6rl8y2bdxYQ4e+zP2CQ+QmuPebaLBLO1skjFpj3eEu7zar+6hBzUP3llMOUupkQeQSwXz+4c8dZ26OhYfG/g==}
+ /@opentelemetry/propagator-b3@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-/A+1Tbnf0uwnP51OkoaQlrb9YILdHsoqIISna1MNXpZRzf42xm6LVLb49i+m/zlJoW1e8P4ekcrditR5pfmwog==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
dev: false
- /@opentelemetry/propagator-jaeger@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-6iArixfgIl3ZgzeltQ5jyiKbjZygM+MbM84pXi1HL0Qs4x4Ck5rM6wEtjhZffFnlDMWEkEqrnM0xF6bTfbiMAQ==}
+ /@opentelemetry/propagator-jaeger@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-uwA5xqaPISXeX+YutqbjmzENnCGCvrIXlqIXP5gRoA5N6S3W28p+ExL77TugMKHN5gXklapF67jDfz7lq5ETzQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
dev: false
- /@opentelemetry/resources@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-iPRLfVfcEQynYGo7e4Di+ti+YQTAY0h5mQEUJcHlU9JOqpb4x965O6PZ+wMcwYVY63G96KtdS86YCM1BF1vQZg==}
+ /@opentelemetry/resources@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/sdk-trace-base@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-PzBmZM8hBomUqvCddF/5Olyyviayka44O5nDWq673np3ctnvwMOvNrsUORZjKja1zJbwEuD9niAGbnVrz3jwRQ==}
+ /@opentelemetry/sdk-trace-base@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-6+g2fiRQUG39guCsKVeY8ToeuUf3YUnPkN6DXRA1qDmFLprlLvZm9cS6+chgbW70cZJ406FTtSCDnJwxDC5sGQ==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
dev: false
- /@opentelemetry/sdk-trace-node@1.23.0(@opentelemetry/api@1.8.0):
- resolution: {integrity: sha512-dwnin5Go2r6VzJZkVc9JBPupssWp7j2EFto+S7qRkwQ00WDykWeq3x2Skk7I1Jr448FeBSvGCQVPgV5e6s6O3w==}
+ /@opentelemetry/sdk-trace-node@1.25.0(@opentelemetry/api@1.9.0):
+ resolution: {integrity: sha512-sYdZmNCkqthPpjwCxAJk5aQNLxCOQjT1u3JMGvO6rb3Ic8uFdnzXavP13Md9uYPcZBo+KxetyDhCf0x8wJGRng==}
engines: {node: '>=14'}
peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.9.0'
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
dependencies:
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/context-async-hooks': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/core': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/propagator-b3': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/propagator-jaeger': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.8.0)
- semver: 7.6.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/context-async-hooks': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/propagator-b3': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/propagator-jaeger': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0)
+ semver: 7.6.2
dev: false
- /@opentelemetry/semantic-conventions@1.23.0:
- resolution: {integrity: sha512-MiqFvfOzfR31t8cc74CTP1OZfz7MbqpAnLCra8NqQoaHJX6ncIRTdYOQYBDQ2uFISDq0WY8Y9dDTWvsgzzBYRg==}
+ /@opentelemetry/semantic-conventions@1.25.0:
+ resolution: {integrity: sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==}
engines: {node: '>=14'}
dev: false
@@ -243,7 +244,7 @@ packages:
requiresBuild: true
dependencies:
'@pulumi/pulumi': 3.74.0
- aws-sdk: 2.1597.0
+ aws-sdk: 2.1644.0
builtin-modules: 3.0.0
mime: 2.6.0
read-package-tree: 5.3.1
@@ -261,7 +262,7 @@ packages:
'@pulumi/aws': 4.0.0
'@pulumi/docker': 3.6.1
'@pulumi/pulumi': 3.74.0
- '@types/aws-lambda': 8.10.137
+ '@types/aws-lambda': 8.10.140
mime: 2.6.0
transitivePeerDependencies:
- supports-color
@@ -281,15 +282,15 @@ packages:
resolution: {integrity: sha512-VKHCH84aiD6FTosr/SmRnp/te1JvpunpPToIG69IlTDMAiDFeRFu/mXUenc1uicWyxG/pKav72f+eKGNdyZqjg==}
engines: {node: '>=8.13.0 || >=10.10.0'}
dependencies:
- '@grpc/grpc-js': 1.10.6
+ '@grpc/grpc-js': 1.10.9
'@logdna/tail-file': 2.2.0
- '@opentelemetry/api': 1.8.0
- '@opentelemetry/exporter-zipkin': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/instrumentation-grpc': 0.32.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/resources': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-base': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/sdk-trace-node': 1.23.0(@opentelemetry/api@1.8.0)
- '@opentelemetry/semantic-conventions': 1.23.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/exporter-zipkin': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-grpc': 0.32.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-node': 1.25.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.25.0
'@pulumi/query': 0.3.0
execa: 5.1.1
google-protobuf: 3.21.2
@@ -300,7 +301,7 @@ packages:
pkg-dir: 7.0.0
read-package-tree: 5.3.1
require-from-string: 2.0.2
- semver: 7.6.0
+ semver: 7.6.2
source-map-support: 0.5.21
ts-node: 7.0.1
typescript: 3.8.3
@@ -313,8 +314,8 @@ packages:
resolution: {integrity: sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w==}
dev: false
- /@types/aws-lambda@8.10.137:
- resolution: {integrity: sha512-YNFwzVarXAOXkjuFxONyDw1vgRNzyH8AuyN19s0bM+ChSu/bzxb5XPxYFLXoqoM+tvgzwR3k7fXcEOW125yJxg==}
+ /@types/aws-lambda@8.10.140:
+ resolution: {integrity: sha512-4Dh3dk2TUcbdfHrX0Al90mNGJDvA9NBiTQPzbrjGi/dLxzKCGOYgT8YQ47jUKNFALkAJAadifq0pzyjIUlhVhg==}
dev: false
/@types/node@14.14.41:
@@ -389,8 +390,8 @@ packages:
possible-typed-array-names: 1.0.0
dev: false
- /aws-sdk@2.1597.0:
- resolution: {integrity: sha512-YvApP9p5a5TD870mvQRrcUyJz3nKFrtlnDLaA4yrmAaidMDGzdNJ+AZlW0+onRCB4llzKD4Hos56zea0ulR+zQ==}
+ /aws-sdk@2.1644.0:
+ resolution: {integrity: sha512-9DkVmQWrL766uxeag6wLbXNahwodrIvxZlh1JZ6bzMoNXLCx38GhQfdtLhCoqK7+k0c5QIzHhjPqyqwPM4ohJw==}
engines: {node: '>= 10.0.0'}
requiresBuild: true
dependencies:
@@ -509,8 +510,8 @@ packages:
is-data-view: 1.0.1
dev: false
- /debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ /debug@4.3.5:
+ resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
@@ -579,7 +580,7 @@ packages:
function.prototype.name: 1.1.6
get-intrinsic: 1.2.4
get-symbol-description: 1.0.2
- globalthis: 1.0.3
+ globalthis: 1.0.4
gopd: 1.0.1
has-property-descriptors: 1.0.2
has-proto: 1.0.3
@@ -752,6 +753,7 @@ packages:
/glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
dependencies:
fs.realpath: 1.0.0
inflight: 1.0.6
@@ -761,11 +763,12 @@ packages:
path-is-absolute: 1.0.1
dev: false
- /globalthis@1.0.3:
- resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ /globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'}
dependencies:
define-properties: 1.2.1
+ gopd: 1.0.1
dev: false
/google-protobuf@3.21.2:
@@ -838,6 +841,7 @@ packages:
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
dependencies:
once: 1.4.0
wrappy: 1.0.2
@@ -1097,7 +1101,7 @@ packages:
dependencies:
hosted-git-info: 4.1.0
is-core-module: 2.13.1
- semver: 7.6.0
+ semver: 7.6.2
validate-npm-package-license: 3.0.4
dev: false
@@ -1202,8 +1206,8 @@ packages:
engines: {node: '>= 0.4'}
dev: false
- /protobufjs@7.2.6:
- resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==}
+ /protobufjs@7.3.2:
+ resolution: {integrity: sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==}
engines: {node: '>=12.0.0'}
requiresBuild: true
dependencies:
@@ -1233,6 +1237,7 @@ packages:
/read-package-json@2.1.2:
resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==}
+ deprecated: This package is no longer supported. Please use @npmcli/package-json instead.
dependencies:
glob: 7.2.3
json-parse-even-better-errors: 2.3.1
@@ -1283,7 +1288,7 @@ packages:
resolution: {integrity: sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==}
engines: {node: '>=6'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
module-details-from-path: 1.0.3
resolve: 1.22.8
transitivePeerDependencies:
@@ -1327,12 +1332,10 @@ packages:
hasBin: true
dev: false
- /semver@7.6.0:
- resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
+ /semver@7.6.2:
+ resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
hasBin: true
- dependencies:
- lru-cache: 6.0.0
dev: false
/set-function-length@1.2.2:
@@ -1403,7 +1406,7 @@ packages:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.17
+ spdx-license-ids: 3.0.18
dev: false
/spdx-exceptions@2.5.0:
@@ -1414,11 +1417,11 @@ packages:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
dependencies:
spdx-exceptions: 2.5.0
- spdx-license-ids: 3.0.17
+ spdx-license-ids: 3.0.18
dev: false
- /spdx-license-ids@3.0.17:
- resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
+ /spdx-license-ids@3.0.18:
+ resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==}
dev: false
/sprintf-js@1.0.3:
diff --git a/scripts/encrypt/package.json b/scripts/encrypt/package.json
index bed04c82bc..47f53c4676 100644
--- a/scripts/encrypt/package.json
+++ b/scripts/encrypt/package.json
@@ -7,6 +7,7 @@
"encrypt": "ts-node encrypt.ts",
"decrypt": "ts-node decrypt.ts"
},
+ "packageManager": "pnpm@8.6.6",
"keywords": [],
"dependencies": {
"@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#722e1c7",
diff --git a/scripts/pullrequest/create.sh b/scripts/pullrequest/create.sh
index c8fc91cadf..6f0f9394f5 100755
--- a/scripts/pullrequest/create.sh
+++ b/scripts/pullrequest/create.sh
@@ -10,15 +10,6 @@ echo "root:$SSH_PASSWORD" | chpasswd
# https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-22-04
swapon --show
-# install docker
-apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
-curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --batch --yes --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
-echo \
- "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
- $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
-apt-get update -y
-apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
-
# set env for this shell
set -o allexport
source .env.pizza
diff --git a/scripts/seed-database/container.sh b/scripts/seed-database/container.sh
index a4c369f8cd..03390220ad 100755
--- a/scripts/seed-database/container.sh
+++ b/scripts/seed-database/container.sh
@@ -26,6 +26,7 @@ tables=(
flow_document_templates
team_members
team_themes
+ team_settings
# Optional tables
# Please comment in if working on a feature and you require example data locally
# You will need to manually grant select permissions to the github_actions on production, and update main.sql
diff --git a/scripts/seed-database/write/main.sql b/scripts/seed-database/write/main.sql
index 4a75095dfd..a3c284c12f 100644
--- a/scripts/seed-database/write/main.sql
+++ b/scripts/seed-database/write/main.sql
@@ -7,6 +7,7 @@
\include write/team_members.sql
\include write/team_integrations.sql
\include write/team_themes.sql
+\include write/team_settings.sql
-- Optional tables
-- \include write/feedback.sql
\ No newline at end of file
diff --git a/scripts/seed-database/write/team_settings.sql b/scripts/seed-database/write/team_settings.sql
new file mode 100644
index 0000000000..ad7d7ac281
--- /dev/null
+++ b/scripts/seed-database/write/team_settings.sql
@@ -0,0 +1,65 @@
+-- insert teams_settings overwriting conflicts
+CREATE TEMPORARY TABLE sync_team_settings (
+ id integer,
+ team_id integer,
+ reference_code text,
+ homepage text,
+ help_email text,
+ help_phone text,
+ help_opening_hours text,
+ email_reply_to_id text,
+ external_planning_site_url text,
+ external_planning_site_name text,
+ boundary_url text,
+ boundary_bbox jsonb
+);
+
+\copy sync_team_settings FROM '/tmp/team_settings.csv' WITH (FORMAT csv, DELIMITER ';');
+
+INSERT INTO
+ team_settings (
+ id,
+ team_id,
+ reference_code,
+ homepage,
+ help_email,
+ help_phone,
+ help_opening_hours,
+ email_reply_to_id,
+ external_planning_site_url,
+ external_planning_site_name,
+ boundary_url,
+ boundary_bbox
+ )
+SELECT
+ id,
+ team_id,
+ reference_code,
+ homepage,
+ help_email,
+ help_phone,
+ help_opening_hours,
+ email_reply_to_id,
+ external_planning_site_url,
+ external_planning_site_name,
+ boundary_url,
+ boundary_bbox
+FROM
+ sync_team_settings ON CONFLICT (id) DO
+UPDATE
+SET
+ team_id = EXCLUDED.team_id,
+ reference_code = EXCLUDED.reference_code,
+ homepage = EXCLUDED.homepage,
+ help_email = EXCLUDED.help_email,
+ help_phone = EXCLUDED.help_phone,
+ help_opening_hours = EXCLUDED.help_opening_hours,
+ email_reply_to_id = EXCLUDED.email_reply_to_id,
+ external_planning_site_url = EXCLUDED.external_planning_site_url,
+ external_planning_site_name = EXCLUDED.external_planning_site_name,
+ boundary_url = EXCLUDED.boundary_url,
+ boundary_bbox = EXCLUDED.boundary_bbox;
+SELECT
+ setval('team_settings_id_seq', max(id))
+FROM
+ team_settings;
\ No newline at end of file
diff --git a/sharedb.planx.uk/package.json b/sharedb.planx.uk/package.json
index 038733e17c..f69b3a89b9 100644
--- a/sharedb.planx.uk/package.json
+++ b/sharedb.planx.uk/package.json
@@ -7,14 +7,15 @@
"dompurify": "^3.1.2",
"jsdom": "^24.1.0",
"jsonwebtoken": "^8.5.1",
- "pg": "^8.11.3",
+ "pg": "^8.12.0",
"sharedb": "^4.1.1",
- "ws": "^8.17.0"
+ "ws": "^8.17.1"
},
"scripts": {
"dev": "node-dev server.js",
"start": "node server.js"
},
+ "packageManager": "pnpm@8.6.6",
"devDependencies": {
"node-dev": "^8.0.0"
},
diff --git a/sharedb.planx.uk/pnpm-lock.yaml b/sharedb.planx.uk/pnpm-lock.yaml
index 6dda1dbe37..efc01ef711 100644
--- a/sharedb.planx.uk/pnpm-lock.yaml
+++ b/sharedb.planx.uk/pnpm-lock.yaml
@@ -23,14 +23,14 @@ dependencies:
specifier: '>=9.0.0'
version: 9.0.1
pg:
- specifier: ^8.11.3
- version: 8.11.3
+ specifier: ^8.12.0
+ version: 8.12.0
sharedb:
specifier: ^4.1.1
version: 4.1.1
ws:
- specifier: ^8.17.0
- version: 8.17.0
+ specifier: ^8.17.1
+ version: 8.17.1
devDependencies:
node-dev:
@@ -68,11 +68,6 @@ packages:
resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
dev: false
- /buffer-writer@2.0.0:
- resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==}
- engines: {node: '>=4'}
- dev: false
-
/combined-stream@1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
@@ -277,7 +272,7 @@ packages:
whatwg-encoding: 3.1.1
whatwg-mimetype: 4.0.0
whatwg-url: 14.0.0
- ws: 8.17.0
+ ws: 8.17.1
xml-name-validator: 5.0.0
transitivePeerDependencies:
- bufferutil
@@ -378,10 +373,6 @@ packages:
resolution: {integrity: sha512-wf5fci7GGpMYRDnbbdIFQymvhsbFACMHtxjivQo5KgvAHlxekyfJ9aPsRr6YfFQthQkk4bmsl5yESrZwC/oMYQ==}
dev: false
- /packet-reader@1.0.0:
- resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==}
- dev: false
-
/parse5@7.1.2:
resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
dependencies:
@@ -398,8 +389,8 @@ packages:
dev: false
optional: true
- /pg-connection-string@2.6.2:
- resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==}
+ /pg-connection-string@2.6.4:
+ resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==}
dev: false
/pg-int8@1.0.1:
@@ -407,16 +398,16 @@ packages:
engines: {node: '>=4.0.0'}
dev: false
- /pg-pool@3.6.1(pg@8.11.3):
- resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==}
+ /pg-pool@3.6.2(pg@8.12.0):
+ resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==}
peerDependencies:
pg: '>=8.0'
dependencies:
- pg: 8.11.3
+ pg: 8.12.0
dev: false
- /pg-protocol@1.6.0:
- resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==}
+ /pg-protocol@1.6.1:
+ resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==}
dev: false
/pg-types@2.2.0:
@@ -430,8 +421,8 @@ packages:
postgres-interval: 1.2.0
dev: false
- /pg@8.11.3:
- resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==}
+ /pg@8.12.0:
+ resolution: {integrity: sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==}
engines: {node: '>= 8.0.0'}
peerDependencies:
pg-native: '>=3.0.1'
@@ -439,11 +430,9 @@ packages:
pg-native:
optional: true
dependencies:
- buffer-writer: 2.0.0
- packet-reader: 1.0.0
- pg-connection-string: 2.6.2
- pg-pool: 3.6.1(pg@8.11.3)
- pg-protocol: 1.6.0
+ pg-connection-string: 2.6.4
+ pg-pool: 3.6.2(pg@8.12.0)
+ pg-protocol: 1.6.1
pg-types: 2.2.0
pgpass: 1.0.5
optionalDependencies:
@@ -636,8 +625,8 @@ packages:
isexe: 2.0.0
dev: true
- /ws@8.17.0:
- resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==}
+ /ws@8.17.1:
+ resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
diff --git a/sharedb.planx.uk/sharedb-postgresql.js b/sharedb.planx.uk/sharedb-postgresql.js
index fbabf13bc2..236950302a 100644
--- a/sharedb.planx.uk/sharedb-postgresql.js
+++ b/sharedb.planx.uk/sharedb-postgresql.js
@@ -81,8 +81,8 @@ PostgresDB.prototype.commit = function (
client.query("BEGIN", (err) => {
client.query(
- "INSERT INTO flows (id, slug) VALUES ($1, $2) ON CONFLICT DO NOTHING",
- [id, id],
+ "INSERT INTO flows (id, slug, name) VALUES ($1, $2, $3) ON CONFLICT DO NOTHING",
+ [id, id, id],
(err, _res) => {
if (err) {
rollback(client, done);
@@ -156,7 +156,7 @@ PostgresDB.prototype.commit = function (
};
// Get the named document from the database. The callback is called with (err,
-// snapshot). A snapshot with a version of zero is returned if the docuemnt
+// snapshot). A snapshot with a version of zero is returned if the document
// has never been created in the database.
PostgresDB.prototype.getSnapshot = function (
_collection,