From cd25a901e60801fbe92ab4f910ed9aa9d9d042aa Mon Sep 17 00:00:00 2001 From: aloftus23 Date: Wed, 13 Mar 2024 15:49:31 -0400 Subject: [PATCH] Move over the lz-infra branch and capture updates --- backend/Dockerfile.worker | 2 +- backend/env.yml | 45 +- backend/serverless.yml | 109 +- backend/src/api/app.ts | 167 +- backend/src/api/auth.ts | 23 +- backend/src/api/helpers.ts | 179 +- backend/src/api/saved-searches.ts | 3 +- backend/src/api/scan-tasks.ts | 30 +- backend/src/api/scans.ts | 21 +- backend/src/api/search.ts | 5 +- backend/src/api/users.ts | 687 +-- backend/src/api/vulnerabilities.ts | 9 +- backend/src/tasks/amass.ts | 9 +- backend/src/tasks/bastion.ts | 13 +- backend/src/tasks/censys.ts | 11 +- backend/src/tasks/censysCertificates.ts | 46 +- backend/src/tasks/censysIpv4.ts | 27 +- backend/src/tasks/cve.ts | 26 +- backend/src/tasks/dnstwist.ts | 9 +- backend/src/tasks/dotgov.ts | 8 +- backend/src/tasks/ecs-client.ts | 5 +- backend/src/tasks/es-client.ts | 29 +- backend/src/tasks/findomain.ts | 18 +- backend/src/tasks/functions.yml | 27 - .../tasks/helpers/fetchPublicSuffixList.ts | 5 +- backend/src/tasks/hibp.ts | 7 +- backend/src/tasks/intrigue-ident.ts | 11 +- backend/src/tasks/lambda-client.ts | 3 +- backend/src/tasks/lookingGlass.ts | 7 +- backend/src/tasks/makeGlobalAdmin.ts | 7 +- backend/src/tasks/portscanner.ts | 7 +- backend/src/tasks/rootDomainSync.ts | 7 +- backend/src/tasks/s3-client.ts | 31 +- backend/src/tasks/saved-search.ts | 7 +- backend/src/tasks/scheduler.ts | 36 +- backend/src/tasks/search-sync.ts | 11 +- backend/src/tasks/shodan.ts | 11 +- backend/src/tasks/sslyze.ts | 9 +- backend/src/tasks/syncdb.ts | 33 +- backend/src/tasks/trustymail.ts | 41 +- backend/src/tasks/updateScanTaskStatus.ts | 3 +- backend/src/tasks/wappalyzer.ts | 21 +- backend/src/tasks/webscraper.ts | 21 +- backend/src/tools/lambda-logger.js | 40 + backend/worker/shodan.sh | 11 - backend/worker/worker-entry.sh | 2 +- docs/package-lock.json | 3915 ++++++++--------- docs/src/pages/index.js | 16 - frontend/env.yml | 5 +- frontend/prod.env | 4 +- frontend/public/index.html | 38 +- frontend/scripts/api.js | 62 +- frontend/scripts/lambda-logger.js | 40 + frontend/serverless.yml | 24 +- frontend/src/App.tsx | 87 +- frontend/src/pages/Scans/ScanTasksView.tsx | 2 +- frontend/stage.env | 8 +- infrastructure/cloudtrail.tf | 11 +- infrastructure/cloudtrail_bucket_policy.tpl | 27 +- infrastructure/cloudwatch.tf | 90 - infrastructure/database.tf | 149 +- infrastructure/elastic.tf | 29 +- infrastructure/es.tf | 28 +- infrastructure/frontend_bucket_policy.tpl | 30 - infrastructure/kms.tf | 18 +- infrastructure/main.tf | 37 +- infrastructure/matomo.tf | 88 +- infrastructure/pe.tf | 333 -- infrastructure/pe_worker.tf | 835 ---- infrastructure/prod.config | 6 +- infrastructure/prod.tfvars | 194 +- infrastructure/provider.tf | 8 +- infrastructure/sns.tf | 9 - infrastructure/stage.config | 6 +- infrastructure/stage.tfvars | 195 +- infrastructure/users.tf | 27 +- infrastructure/vars.tf | 332 +- infrastructure/vpc.tf | 207 +- infrastructure/worker.tf | 71 +- 79 files changed, 2917 insertions(+), 5853 deletions(-) create mode 100644 backend/src/tools/lambda-logger.js delete mode 100644 backend/worker/shodan.sh create mode 100644 frontend/scripts/lambda-logger.js delete mode 100644 infrastructure/cloudwatch.tf delete mode 100644 infrastructure/frontend_bucket_policy.tpl delete mode 100644 infrastructure/pe.tf delete mode 100644 infrastructure/pe_worker.tf delete mode 100644 infrastructure/sns.tf diff --git a/backend/Dockerfile.worker b/backend/Dockerfile.worker index e33a19ad..3f0a270c 100644 --- a/backend/Dockerfile.worker +++ b/backend/Dockerfile.worker @@ -60,7 +60,7 @@ RUN apt remove dav1d && apt autoclean && apt autoremove # Install pe-source module # Sync the latest from cf-staging branch -RUN git clone -b cf-source-staging https://github.com/cisagov/pe-reports.git && cd pe-reports && git checkout c9cbbd73b22ef38cabe1da6ba50aeb2dc0be4f99 && sed -i 's/"pandas == 1.1.5"/"pandas == 1.5.1"/g' setup.py && sed -i 's/psycopg2-binary == 2.9.3/psycopg2-binary == 2.9.5/g' setup.py && sed -i 's/psycopg2-binary == 2.9.3/psycopg2-binary == 2.9.5/g' setup_reports.py && pip install . +# RUN git clone -b cf-source-staging https://github.com/cisagov/pe-reports.git && cd pe-reports && git checkout c9cbbd73b22ef38cabe1da6ba50aeb2dc0be4f99 && sed -i 's/"pandas == 1.1.5"/"pandas == 1.5.1"/g' setup.py && sed -i 's/psycopg2-binary == 2.9.3/psycopg2-binary == 2.9.5/g' setup.py && sed -i 's/psycopg2-binary == 2.9.3/psycopg2-binary == 2.9.5/g' setup_reports.py && pip install . # Python dependencies COPY worker/requirements.txt worker/requirements.txt diff --git a/backend/env.yml b/backend/env.yml index cfa1c536..bd71acca 100644 --- a/backend/env.yml +++ b/backend/env.yml @@ -1,4 +1,6 @@ ---- +## added dev option for environment to remove the warning +## from 'npx sls package' during backend 'test' github action +## Warning: Invalid configuration encountered at 'provider.environment': must be object dev: DUMMY: @@ -14,8 +16,6 @@ staging: PE_DB_PASSWORD: ${ssm:/crossfeed/staging/PE_DB_PASSWORD} SIXGILL_CLIENT_ID: ${ssm:/crossfeed/staging/SIXGILL_CLIENT_ID} SIXGILL_CLIENT_SECRET: ${ssm:/crossfeed/staging/SIXGILL_CLIENT_SECRET} - INTELX_API_KEY: ${ssm:/crossfeed/staging/INTELX_API_KEY} - HIBP_API_KEY: ${ssm:/crossfeed/staging/HIBP_API_KEY} PE_SHODAN_API_KEYS: ${ssm:/crossfeed/staging/PE_SHODAN_API_KEYS} JWT_SECRET: ${ssm:/crossfeed/staging/APP_JWT_SECRET} LOGIN_GOV_REDIRECT_URI: ${ssm:/crossfeed/staging/LOGIN_GOV_REDIRECT_URI} @@ -32,33 +32,20 @@ staging: FARGATE_LOG_GROUP_NAME: 'crossfeed-staging-worker' CROSSFEED_SUPPORT_EMAIL_SENDER: 'noreply@staging.crossfeed.cyber.dhs.gov' CROSSFEED_SUPPORT_EMAIL_REPLYTO: 'vulnerability@cisa.dhs.gov' - FRONTEND_DOMAIN: 'https://staging-cd.crossfeed.cyber.dhs.gov' + FRONTEND_DOMAIN: 'https://staging.crossfeed.cyber.dhs.gov' SLS_LAMBDA_PREFIX: '${self:service}-${self:provider.stage}' USE_COGNITO: 1 - REACT_APP_USER_POOL_ID: us-east-1_uxiY8DOum + REACT_APP_USER_POOL_ID: ${ssm:/crossfeed/staging/USER_POOL_ID} + REACT_APP_USER_POOL_KEY: ${ssm(raw):/crossfeed/staging/USER_POOL_KEY} WORKER_USER_AGENT: ${ssm:/crossfeed/staging/WORKER_USER_AGENT} WORKER_SIGNATURE_PUBLIC_KEY: ${ssm:/crossfeed/staging/WORKER_SIGNATURE_PUBLIC_KEY} ELASTICSEARCH_ENDPOINT: ${ssm:/crossfeed/staging/ELASTICSEARCH_ENDPOINT} REACT_APP_TERMS_VERSION: ${ssm:/crossfeed/staging/REACT_APP_TERMS_VERSION} - REACT_APP_RANDOM_PASSWORD: ${ssm:/crossfeed/staging/REACT_APP_RANDOM_PASSWORD} - MATOMO_URL: http://matomo.crossfeed.local + MATOMO_URL: http://matomo.cfs.lz.us-cert.gov EXPORT_BUCKET_NAME: cisa-crossfeed-staging-exports PE_API_URL: ${ssm:/crossfeed/staging/PE_API_URL} REPORTS_BUCKET_NAME: cisa-crossfeed-staging-reports - CLOUDWATCH_BUCKET_NAME: cisa-crossfeed-staging-cloudwatch - STAGE: staging - PE_CLUSTER_NAME: pe-staging-worker - SHODAN_QUEUE_URL: ${ssm:/crossfeed/staging/SHODAN_QUEUE_URL} - SHODAN_SERVICE_NAME: pe-staging-shodan - DNSTWIST_QUEUE_URL: ${ssm:/crossfeed/staging/DNSTWIST_QUEUE_URL} - DNSTWIST_SERVICE_NAME: pe-staging-dnstwist - HIBP_QUEUE_URL: ${ssm:/crossfeed/staging/HIBP_QUEUE_URL} - HIBP_SERVICE_NAME: pe-staging-hibp - INTELX_QUEUE_URL: ${ssm:/crossfeed/staging/INTELX_QUEUE_URL} - INTELX_SERVICE_NAME: pe-staging-intelx - CYBERSIXGILL_QUEUE_URL: ${ssm:/crossfeed/staging/CYBERSIXGILL_QUEUE_URL} - CYBERSIXGILL_SERVICE_NAME: pe-staging-cybersixgill - EMAIL_BUCKET_NAME: cisa-crossfeed-staging-html-email + VPC_ENDPOINT: ${ssm:/crossfeed/staging/BACKEND_VPC_ENDPOINT} prod: DB_DIALECT: 'postgres' @@ -85,23 +72,21 @@ prod: FRONTEND_DOMAIN: 'https://crossfeed.cyber.dhs.gov' SLS_LAMBDA_PREFIX: '${self:service}-${self:provider.stage}' USE_COGNITO: 1 - REACT_APP_USER_POOL_ID: us-east-1_MZgKoBmkN + REACT_APP_USER_POOL_ID: ${ssm:/crossfeed/prod/USER_POOL_ID} + REACT_APP_USER_POOL_KEY: ${ssm(raw):/crossfeed/prod/USER_POOL_KEY} WORKER_USER_AGENT: ${ssm:/crossfeed/prod/WORKER_USER_AGENT} WORKER_SIGNATURE_PUBLIC_KEY: ${ssm:/crossfeed/prod/WORKER_SIGNATURE_PUBLIC_KEY} ELASTICSEARCH_ENDPOINT: ${ssm:/crossfeed/prod/ELASTICSEARCH_ENDPOINT} REACT_APP_TERMS_VERSION: ${ssm:/crossfeed/prod/REACT_APP_TERMS_VERSION} - REACT_APP_RANDOM_PASSWORD: ${ssm:/crossfeed/prod/REACT_APP_RANDOM_PASSWORD} - MATOMO_URL: http://matomo.crossfeed.local + MATOMO_URL: http://matomo.cfs.lz.us-cert.gov EXPORT_BUCKET_NAME: cisa-crossfeed-prod-exports PE_API_URL: ${ssm:/crossfeed/prod/PE_API_URL} REPORTS_BUCKET_NAME: cisa-crossfeed-prod-reports - CLOUDWATCH_BUCKET_NAME: cisa-crossfeed-prod-cloudwatch - STAGE: prod - PE_CLUSTER_NAME: pe-prod-worker - SHODAN_QUEUE_URL: ${ssm:/crossfeed/prod/SHODAN_QUEUE_URL} - SHODAN_SERVICE_NAME: pe-prod-shodan - EMAIL_BUCKET_NAME: cisa-crossfeed-staging-html-email + VPC_ENDPOINT: ${ssm:/crossfeed/prod/BACKEND_VPC_ENDPOINT} +## added dev option for vpc to remove the warning +## from 'npx sls package' during backend 'test' github action +## Warning: Invalid configuration encountered at 'provider.vpc': must be object dev-vpc: securityGroupIds: - dummy diff --git a/backend/serverless.yml b/backend/serverless.yml index 16775047..63c1a161 100644 --- a/backend/serverless.yml +++ b/backend/serverless.yml @@ -1,4 +1,3 @@ ---- service: crossfeed frameworkVersion: '3' @@ -17,18 +16,27 @@ custom: provider: name: aws - region: us-east-1 - endpointType: REGIONAL + region: us-gov-east-1 + endpointType: PRIVATE runtime: nodejs16.x timeout: 30 stage: ${opt:stage, 'dev'} environment: ${file(env.yml):${self:provider.stage}, ''} vpc: ${file(env.yml):${self:provider.stage}-vpc, ''} + vpcEndpointIds: + - ${file(env.yml):${self:provider.stage}.VPC_ENDPOINT, ''} apiGateway: binaryMediaTypes: - 'image/*' - 'font/*' resourcePolicy: + - Effect: Deny + Principal: '*' + Action: 'execute-api:Invoke' + Resource: 'execute-api:/${self:provider.stage}/*/*' + Condition: + StringNotEquals: + 'aws:sourceVpce': ${file(env.yml):${self:provider.stage}.VPC_ENDPOINT, ''} - Effect: Allow Principal: '*' Action: 'execute-api:Invoke' @@ -40,27 +48,23 @@ provider: iam: role: statements: - # TODO: make the resources more specific. See Resource: '*' was + # TODO: make the resources more specific. - Effect: Allow Action: - lambda:InvokeAsync - lambda:InvokeFunction - - cognito-idp:AdminDisableUser - - cognito-idp:ListUsers - - cognito-idp:AdminSetUserPassword - Resource: "*" + Resource: '*' - Effect: Allow Action: - ecs:RunTask - ecs:ListTasks - - ecs:DescribeTasks - - ecs:DescribeServices - - ecs:UpdateService - iam:PassRole + - logs:GetLogEvents Resource: '*' - Effect: Allow Action: - ses:SendRawEmail + - ses:SendEmail Resource: '*' - Effect: Allow Action: @@ -68,94 +72,13 @@ provider: - s3:GetObjectAcl - s3:PutObject - s3:PutObjectAcl - - s3:PutBucketAcl - - s3:GetBucketAcl Resource: '*' - - Effect: Allow - Action: - - sts:AssumeRole - Resource: '*' - - Effect: Allow - Action: - - sqs:ReceiveMessage - - sqs:DeleteMessage - - sqs:SendMessage - - sqs:GetQueueAttributes - Resource: '*' - - Effect: Allow - Action: - - logs:CreateExportTask - - logs:CreateLogStream - - logs:Describe* - - logs:Get* - - logs:List* - - logs:PutLogEvents - - logs:StartQuery - - logs:StopQuery - - logs:TestMetricFilter - - logs:FilterLogEvents - - logs:StartLiveTail - - logs:StopLiveTail - Resource: '*' - - Effect: Allow - Action: - - ssm:DescribeParameters - - ssm:GetParameter - - ssm:GetParameters - - ssm:GetParametersByPath - - ssm:PutParameter - Resource: '*' - -resources: - Resources: - WorkerControlQueue: - Type: AWS::SQS::Queue - Properties: - QueueName: ${self:provider.stage}-worker-control-queue - VisibilityTimeout: 300 # Should match or exceed function timeout - MaximumMessageSize: 262144 # 256 KB - MessageRetentionPeriod: 604800 # 7 days - ShodanQueue: - Type: AWS::SQS::Queue - Properties: - QueueName: ${self:provider.stage}-shodan-queue - VisibilityTimeout: 300 - MaximumMessageSize: 262144 # 256 KB - MessageRetentionPeriod: 604800 # 7 days - DnstwistQueue: - Type: AWS::SQS::Queue - Properties: - QueueName: ${self:provider.stage}-dnstwist-queue - VisibilityTimeout: 300 - MaximumMessageSize: 262144 # 256 KB - MessageRetentionPeriod: 604800 # 7 days - HibpQueue: - Type: AWS::SQS::Queue - Properties: - QueueName: ${self:provider.stage}-hibp-queue - VisibilityTimeout: 300 - MaximumMessageSize: 262144 # 256 KB - MessageRetentionPeriod: 604800 # 7 days - IntelxQueue: - Type: AWS::SQS::Queue - Properties: - QueueName: ${self:provider.stage}-intelx-queue - VisibilityTimeout: 300 - MaximumMessageSize: 262144 # 256 KB - MessageRetentionPeriod: 604800 # 7 days - CybersixgillQueue: - Type: AWS::SQS::Queue - Properties: - QueueName: ${self:provider.stage}-cybersixgill-queue - VisibilityTimeout: 300 - MaximumMessageSize: 262144 # 256 KB - MessageRetentionPeriod: 604800 # 7 days functions: - ${file(./src/tasks/functions.yml)} - ${file(./src/api/functions.yml)} plugins: + - serverless-better-credentials - serverless-domain-manager - serverless-webpack - - serverless-dotenv-plugin diff --git a/backend/src/api/app.ts b/backend/src/api/app.ts index 9bdf5004..e60920b6 100644 --- a/backend/src/api/app.ts +++ b/backend/src/api/app.ts @@ -5,8 +5,6 @@ import * as cors from 'cors'; import * as helmet from 'helmet'; import { handler as healthcheck } from './healthcheck'; import * as auth from './auth'; -import * as cpes from './cpes'; -import * as cves from './cves'; import * as domains from './domains'; import * as search from './search'; import * as vulnerabilities from './vulnerabilities'; @@ -18,9 +16,9 @@ import * as stats from './stats'; import * as apiKeys from './api-keys'; import * as reports from './reports'; import * as savedSearches from './saved-searches'; -import rateLimit from 'express-rate-limit'; import { createProxyMiddleware } from 'http-proxy-middleware'; import { UserType } from '../models'; +import logger from '../tools/lambda-logger'; if ( (process.env.IS_OFFLINE || process.env.IS_LOCAL) && @@ -34,7 +32,7 @@ if ( setInterval(() => scheduler({}, {} as any, () => null), 30000); } -const handlerToExpress = (handler) => async (req, res) => { +const handlerToExpress = (handler) => async (req, res, next) => { const { statusCode, body } = await handler( { pathParameters: req.params, @@ -44,8 +42,12 @@ const handlerToExpress = (handler) => async (req, res) => { headers: req.headers, path: req.originalUrl }, - {} + {}, + req.context ); + // Set HSTS header to ensure that the browser enforces HTTPS + res.setHeader('Strict-Transport-Security', 'max-age=31536000'); + try { const parsedBody = JSON.parse(body); res.status(statusCode).json(parsedBody); @@ -56,62 +58,55 @@ const handlerToExpress = (handler) => async (req, res) => { } }; -const app = express(); +const logHeaders = (req, res, next) => { + const sanitizedHeaders = { ...req.headers }; + // Remove or replace sensitive headers + delete sanitizedHeaders['authorization']; + + res.on('finish', () => { + const logInfo = { + httpMethod: req.method, + protocol: req.protocol, + originalURL: req.originalUrl, + path: req.path, + statusCode: res.statusCode, + headers: sanitizedHeaders, + userEmail: req.requestContext.authorizer + ? req.requestContext.authorizer.email || 'undefined' + : 'undefined' + }; + + logger.info(`Request Info: ${JSON.stringify(logInfo)}`); + }); -app.use( - rateLimit({ - windowMs: 15 * 60 * 1000, - limit: 5000 - }) -); // limit 1000 requests per 15 minutes + next(); +}; -app.use(express.json({ strict: false })); +const app = express(); -app.use( - cors({ - origin: '*', - methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'] - }) -); +app.use(logHeaders); +app.use(cors()); +app.use(express.json({ strict: false })); +app.use(helmet.hsts({ maxAge: 31536000, preload: true })); +app.use(cookieParser()); app.use( - helmet({ - contentSecurityPolicy: { - directives: { - defaultSrc: [ - "'self'", - 'https://cognito-idp.us-east-1.amazonaws.com', - 'https://api.staging-cd.crossfeed.cyber.dhs.gov' - ], - objectSrc: ["'none'"], - scriptSrc: [ - "'self'", - 'https://api.staging-cd.crossfeed.cyber.dhs.gov' - // Add any other allowed script sources here - ], - frameAncestors: ["'none'"] - // Add other directives as needed - } - }, - hsts: { - maxAge: 31536000, - includeSubDomains: true, - preload: true + helmet.contentSecurityPolicy({ + directives: { + defaultSrc: [ + "'self'", + 'https://cognito-idp.us-gov-west-1.amazonaws.com', + 'https://api.crossfeed.cyber.dhs.gov' + ], + scriptSrc: ["'self'", 'https://api.crossfeed.cyber.dhs.gov'] + // Add other directives as needed } }) ); -app.use((req, res, next) => { - res.setHeader('X-XSS-Protection', '0'); - next(); -}); - -app.use(cookieParser()); - app.get('/', handlerToExpress(healthcheck)); app.post('/auth/login', handlerToExpress(auth.login)); app.post('/auth/callback', handlerToExpress(auth.callback)); -app.post('/users/register', handlerToExpress(users.register)); const checkUserLoggedIn = async (req, res, next) => { req.requestContext = { @@ -181,10 +176,10 @@ app.get('/index.php', (req, res) => res.redirect('/matomo/index.php')); const matomoProxy = createProxyMiddleware({ target: process.env.MATOMO_URL, headers: { HTTP_X_FORWARDED_URI: '/matomo' }, - pathRewrite: function (path) { + pathRewrite: function (path, req) { return path.replace(/^\/matomo/, ''); }, - onProxyReq: function (proxyReq) { + onProxyReq: function (proxyReq, req, res) { // Only pass the MATOMO_SESSID cookie to Matomo. if (!proxyReq.getHeader('Cookie')) return; const cookies = cookie.parse(proxyReq.getHeader('Cookie')); @@ -194,13 +189,14 @@ const matomoProxy = createProxyMiddleware({ ); proxyReq.setHeader('Cookie', newCookies); }, - onProxyRes: function (proxyRes) { + onProxyRes: function (proxyRes, req, res) { // Remove transfer-encoding: chunked responses, because API Gateway doesn't // support chunked encoding. if (proxyRes.headers['transfer-encoding'] === 'chunked') { proxyRes.headers['transfer-encoding'] = ''; } - } + }, + logLevel: 'silent' }); /** @@ -212,9 +208,10 @@ const matomoProxy = createProxyMiddleware({ */ const peProxy = createProxyMiddleware({ target: process.env.PE_API_URL, - pathRewrite: function (path) { + pathRewrite: function (path, req) { return path.replace(/^\/pe/, ''); - } + }, + logLevel: 'silent' }); app.use( @@ -275,8 +272,8 @@ app.use( // needing to sign the terms of service yet const authenticatedNoTermsRoute = express.Router(); authenticatedNoTermsRoute.use(checkUserLoggedIn); +authenticatedNoTermsRoute.use(logHeaders); authenticatedNoTermsRoute.get('/users/me', handlerToExpress(users.me)); -// authenticatedNoTermsRoute.post('/users/register', handlerToExpress(users.register)); authenticatedNoTermsRoute.post( '/users/me/acceptTerms', handlerToExpress(users.acceptTerms) @@ -291,15 +288,13 @@ const authenticatedRoute = express.Router(); authenticatedRoute.use(checkUserLoggedIn); authenticatedRoute.use(checkUserSignedTerms); +authenticatedRoute.use(logHeaders); authenticatedRoute.post('/api-keys', handlerToExpress(apiKeys.generate)); authenticatedRoute.delete('/api-keys/:keyId', handlerToExpress(apiKeys.del)); authenticatedRoute.post('/search', handlerToExpress(search.search)); authenticatedRoute.post('/search/export', handlerToExpress(search.export_)); -authenticatedRoute.get('/cpes/:id', handlerToExpress(cpes.get)); -authenticatedRoute.get('/cves/:id', handlerToExpress(cves.get)); -authenticatedRoute.get('/cves/name/:name', handlerToExpress(cves.getByName)); authenticatedRoute.post('/domain/search', handlerToExpress(domains.list)); authenticatedRoute.post('/domain/export', handlerToExpress(domains.export_)); authenticatedRoute.get('/domain/:domainId', handlerToExpress(domains.get)); @@ -366,23 +361,10 @@ authenticatedRoute.get( '/organizations/:organizationId', handlerToExpress(organizations.get) ); -authenticatedRoute.get( - '/organizations/state/:state', - handlerToExpress(organizations.getByState) -); -authenticatedRoute.get( - '/organizations/regionId/:regionId', - handlerToExpress(organizations.getByRegionId) -); authenticatedRoute.post( '/organizations', handlerToExpress(organizations.create) ); -authenticatedRoute.post( - '/organizations_upsert', - handlerToExpress(organizations.upsert_org) -); - authenticatedRoute.put( '/organizations/:organizationId', handlerToExpress(organizations.update) @@ -391,10 +373,6 @@ authenticatedRoute.delete( '/organizations/:organizationId', handlerToExpress(organizations.del) ); -authenticatedRoute.post( - '/v2/organizations/:organizationId/users', - handlerToExpress(organizations.addUserV2) -); authenticatedRoute.post( '/organizations/:organizationId/roles/:roleId/approve', handlerToExpress(organizations.approveRole) @@ -419,14 +397,6 @@ authenticatedRoute.post('/stats', handlerToExpress(stats.get)); authenticatedRoute.post('/users', handlerToExpress(users.invite)); authenticatedRoute.get('/users', handlerToExpress(users.list)); authenticatedRoute.delete('/users/:userId', handlerToExpress(users.del)); -authenticatedRoute.get( - '/users/state/:state', - handlerToExpress(users.getByState) -); -authenticatedRoute.get( - '/users/regionId/:regionId', - handlerToExpress(users.getByRegionId) -); authenticatedRoute.post('/users/search', handlerToExpress(users.search)); authenticatedRoute.post( @@ -439,35 +409,6 @@ authenticatedRoute.post( handlerToExpress(reports.list_reports) ); -//Authenticated Registration Routes -authenticatedRoute.put( - '/users/:userId/register/approve', - handlerToExpress(users.registrationApproval) -); - -authenticatedRoute.put( - '/users/:userId/register/deny', - handlerToExpress(users.registrationDenial) -); - -//************* */ -// V2 Routes // -//************* */ - -// Users -authenticatedRoute.put('/v2/users/:userId', handlerToExpress(users.updateV2)); -authenticatedRoute.get('/v2/users', handlerToExpress(users.getAllV2)); - -// Organizations -authenticatedRoute.put( - '/v2/organizations/:organizationId', - handlerToExpress(organizations.updateV2) -); -authenticatedRoute.get( - '/v2/organizations', - handlerToExpress(organizations.getAllV2) -); - app.use(authenticatedRoute); export default app; diff --git a/backend/src/api/auth.ts b/backend/src/api/auth.ts index c4b280eb..380e67d5 100644 --- a/backend/src/api/auth.ts +++ b/backend/src/api/auth.ts @@ -10,6 +10,7 @@ import * as jwt from 'jsonwebtoken'; import { APIGatewayProxyEvent } from 'aws-lambda'; import * as jwksClient from 'jwks-rsa'; import { createHash } from 'crypto'; +import logger from '../tools/lambda-logger'; export interface UserToken { email: string; @@ -45,7 +46,11 @@ interface UserInfo { } const client = jwksClient({ - jwksUri: `https://cognito-idp.us-east-1.amazonaws.com/${process.env.REACT_APP_USER_POOL_ID}/.well-known/jwks.json` + jwksUri: `https://cognito-idp.us-gov-west-1.amazonaws.com/${process.env.REACT_APP_USER_POOL_ID}/.well-known/jwks.json`, + getKeysInterceptor: () => { + const jwksJson = JSON.parse(process.env.REACT_APP_USER_POOL_KEY!); + return jwksJson.keys; + } }); function getKey(header, callback) { @@ -117,14 +122,13 @@ export const callback = async (event, context) => { } catch (e) { return { statusCode: 500, - body: '' + body: e }; } - if (!userInfo.email_verified) { return { statusCode: 403, - body: '' + body: 'Email is not verified' }; } @@ -233,7 +237,7 @@ export const authorize = async (event) => { const parsed = { id: 'cisa:crossfeed:anonymous' }; return parsed; } else { - console.error(e); + logger.error(JSON.stringify(e)); const parsed = { id: 'cisa:crossfeed:anonymous' }; return parsed; } @@ -257,15 +261,6 @@ export const isGlobalViewAdmin = (event: APIGatewayProxyEvent) => { : false; }; -/** Check if a user has regionalAdmin view permissions */ -export const isRegionalAdmin = (event: APIGatewayProxyEvent) => { - return event.requestContext.authorizer && - (event.requestContext.authorizer.userType === UserType.REGIONAL_ADMIN || - event.requestContext.authorizer.userType === UserType.GLOBAL_ADMIN) - ? true - : false; -}; - /** Checks if the current user is allowed to access (modify) a user with id userId */ export const canAccessUser = (event: APIGatewayProxyEvent, userId?: string) => { return userId && (userId === getUserId(event) || isGlobalWriteAdmin(event)); diff --git a/backend/src/api/helpers.ts b/backend/src/api/helpers.ts index acc6627f..540e08ef 100644 --- a/backend/src/api/helpers.ts +++ b/backend/src/api/helpers.ts @@ -7,10 +7,12 @@ import { import { ValidationOptions, validateOrReject } from 'class-validator'; import { ClassType } from 'class-transformer/ClassTransformer'; import { plainToClass } from 'class-transformer'; -import S3Client from '../tasks/s3-client'; import { SES } from 'aws-sdk'; import * as nodemailer from 'nodemailer'; -import * as handlebars from 'handlebars'; +import logger from '../tools/lambda-logger'; + +const AWS = require('aws-sdk'); +const httpProxy = require('https-proxy-agent'); export const validateBody = async ( obj: ClassType, @@ -60,11 +62,11 @@ export const wrapHandler: WrapHandler = )) as APIGatewayProxyResult; const resp = makeResponse(event, result); if (typeof jest === 'undefined') { - console.log(`=> ${resp.statusCode} ${event.path} `); + logger.info(`=> ${resp.statusCode} ${event.path} `); } return resp; } catch (e) { - console.error(e); + logger.error(e); return makeResponse(event, { statusCode: Array.isArray(e) ? 400 : 500 }); @@ -73,172 +75,49 @@ export const wrapHandler: WrapHandler = export const NotFound: APIGatewayProxyResult = { statusCode: 404, - body: 'Item not found. View logs for details.' + body: '' }; export const Unauthorized: APIGatewayProxyResult = { statusCode: 403, - body: 'Unauthorized access. View logs for details.' + body: '' }; export const sendEmail = async ( recipient: string, subject: string, body: string -) => { - const transporter = nodemailer.createTransport({ - SES: new SES({ region: 'us-east-1' }) - }); - - await transporter.sendMail({ - from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!, - to: recipient, - subject: subject, - text: body, - replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO! - }); -}; - -export const sendRegistrationTextEmail = async (recipient: string) => { - const transporter = nodemailer.createTransport({ - SES: new SES({ region: 'us-east-1' }) - }); - - const mailOptions = { - from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!, - to: recipient, - subject: 'Crossfeed Registration Pending', - text: 'Your registration is pending approval.', - replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO! - }; - - await transporter.sendMail(mailOptions, (error, data) => { - console.log(data); - if (error) { - console.log(error); - } - }); -}; - -export const sendRegistrationHtmlEmail = async (recipient: string) => { - const transporter = nodemailer.createTransport({ - SES: new SES({ region: 'us-east-1' }) - }); - - const mailOptions = { - from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!, - to: recipient, - subject: 'Crossfeed Registration Pending', - html: '

Your registration is pending approval.

', - replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO! - }; - - await transporter.sendMail(mailOptions, (error, data) => { - console.log(data); - if (error) { - console.log(error); - } - }); -}; - -export const sendUserRegistrationEmail = async ( - recepient: string, - subject: string, - firstName: string, - lastName: string, - templateFileName: string ) => { try { - const client = new S3Client(); - const htmlTemplate = await client.getEmailAsset(templateFileName); - const template = handlebars.compile(htmlTemplate); - const data = { - firstName: firstName, - lastName: lastName - }; - - const htmlToSend = template(data); - const mailOptions = { - from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!, - to: recepient, - subject: subject, - html: htmlToSend, - replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO! - }; - + process.env.HTTPS_PROXY = 'http://proxy.lz.us-cert.gov:8080'; + process.env.HTTP_PROXY = 'http://proxy.lz.us-cert.gov:8080'; + const proxyAgent = process.env.HTTPS_PROXY || process.env.HTTP_PROXY; + AWS.config.update({ + httpOptions: { + agent: proxyAgent ? httpProxy(proxyAgent) : undefined + } + }); const transporter = nodemailer.createTransport({ - SES: new SES({ region: 'us-east-1' }) + SES: new SES({ + region: 'us-gov-west-1', + endpoint: 'https://email.us-gov-west-1.amazonaws.com' + }) }); - await transporter.sendMail(mailOptions); - } catch (errorMessage) { - console.log('Email error: ', errorMessage); - } -}; - -export const sendRegistrationDeniedEmail = async ( - recepient: string, - subject: string, - firstName: string, - lastName: string, - templateFileName: string -) => { - try { - const client = new S3Client(); - const htmlTemplate = await client.getEmailAsset(templateFileName); - const template = handlebars.compile(htmlTemplate); - const data = { - firstName: firstName, - lastName: lastName - }; - const htmlToSend = template(data); - const mailOptions = { + await transporter.sendMail({ from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!, - to: recepient, + to: recipient, subject: subject, - html: htmlToSend, + text: body, replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO! - }; - - const transporter = nodemailer.createTransport({ - SES: new SES({ region: 'us-east-1' }) }); - await transporter.sendMail(mailOptions); - } catch (errorMessage) { - console.log('Email error: ', errorMessage); - } -}; - -export const sendRegistrationApprovedEmail = async ( - recepient: string, - subject: string, - firstName: string, - lastName: string, - templateFileName: string -) => { - try { - const client = new S3Client(); - const htmlTemplate = await client.getEmailAsset(templateFileName); - const template = handlebars.compile(htmlTemplate); - const data = { - firstName: firstName, - lastName: lastName - }; - const htmlToSend = template(data); - const mailOptions = { - from: process.env.CROSSFEED_SUPPORT_EMAIL_SENDER!, - to: recepient, - subject: subject, - html: htmlToSend, - replyTo: process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO! - }; + logger.info('Email sent successfully'); + return 'Email sent successfully'; + } catch (error) { + logger.error(`Error sending email: ${error}`); - const transporter = nodemailer.createTransport({ - SES: new SES({ region: 'us-east-1' }) - }); - await transporter.sendMail(mailOptions); - } catch (errorMessage) { - console.log('Email error: ', errorMessage); + // Handle the error or re-throw it if needed + throw error; } }; diff --git a/backend/src/api/saved-searches.ts b/backend/src/api/saved-searches.ts index 1497e429..4cce3e53 100644 --- a/backend/src/api/saved-searches.ts +++ b/backend/src/api/saved-searches.ts @@ -10,6 +10,7 @@ import { import { connectToDatabase, SavedSearch, Vulnerability } from '../models'; import { validateBody, wrapHandler, NotFound, Unauthorized } from './helpers'; import { FindManyOptions } from 'typeorm'; +import logger from '../tools/lambda-logger'; export const del = wrapHandler(async (event) => { const id = event.pathParameters?.searchId; @@ -124,7 +125,7 @@ export const list = wrapHandler(async (event) => { : PAGE_SIZE; const page = event.query?.page ? parseInt(event.query?.page) : 1; - console.log(event.query); + logger.info(event.query); const result = await SavedSearch.findAndCount({ where, take: pageSize, diff --git a/backend/src/api/scan-tasks.ts b/backend/src/api/scan-tasks.ts index ba4cb340..b8ba18bd 100644 --- a/backend/src/api/scan-tasks.ts +++ b/backend/src/api/scan-tasks.ts @@ -5,7 +5,6 @@ import { IsIn, ValidateNested, isUUID, - IsUUID, IsOptional, IsObject } from 'class-validator'; @@ -13,11 +12,7 @@ import { Type } from 'class-transformer'; import { ScanTask, connectToDatabase } from '../models'; import { validateBody, wrapHandler, NotFound, Unauthorized } from './helpers'; import { SelectQueryBuilder } from 'typeorm'; -import { - getTagOrganizations, - isGlobalViewAdmin, - isGlobalWriteAdmin -} from './auth'; +import { isGlobalViewAdmin, isGlobalWriteAdmin } from './auth'; import ECSClient from '../tasks/ecs-client'; const PAGE_SIZE = parseInt(process.env.PAGE_SIZE ?? '') || 25; @@ -30,14 +25,6 @@ class ScanTaskFilters { @IsString() @IsOptional() status?: string; - - @IsUUID() - @IsOptional() - organization?: string; - - @IsUUID() - @IsOptional() - tag?: string; } class ScanTaskSearch { @@ -59,7 +46,7 @@ class ScanTaskSearch { @IsOptional() filters?: ScanTaskFilters; - async filterResultQueryset(qs: SelectQueryBuilder, event) { + filterResultQueryset(qs: SelectQueryBuilder) { if (this.filters?.name) { qs.andWhere('scan.name ILIKE :name', { name: `${this.filters?.name}` @@ -70,28 +57,17 @@ class ScanTaskSearch { status: `${this.filters?.status}` }); } - if (this.filters?.organization) { - qs.andWhere('organization.id = :org', { - org: this.filters.organization - }); - } - if (this.filters?.tag) { - qs.andWhere('organization.id IN (:...orgs)', { - orgs: await getTagOrganizations(event, this.filters.tag) - }); - } return qs; } async getResults(event) { const qs = ScanTask.createQueryBuilder('scan_task') .leftJoinAndSelect('scan_task.scan', 'scan') - .leftJoinAndSelect('scan_task.organizations', 'organization') .orderBy(`scan_task.${this.sort}`, this.order) .skip(PAGE_SIZE * (this.page - 1)) .take(PAGE_SIZE); - await this.filterResultQueryset(qs, event); + this.filterResultQueryset(qs); return qs.getManyAndCount(); } } diff --git a/backend/src/api/scans.ts b/backend/src/api/scans.ts index 33423b2d..d7560fc9 100644 --- a/backend/src/api/scans.ts +++ b/backend/src/api/scans.ts @@ -49,23 +49,6 @@ interface ScanSchema { } export const SCAN_SCHEMA: ScanSchema = { - vulnSync: { - type: 'fargate', - isPassive: true, - global: true, - description: 'Pull in vulnerability data from PEs Vulnerability database', - cpu: '1024', - memory: '8192' - }, - cveSync: { - type: 'fargate', - isPassive: true, - global: true, - description: - "Matches detected software versions to CVEs from NIST NVD and CISA's Known Exploited Vulnerabilities Catalog.", - cpu: '1024', - memory: '8192' - }, testProxy: { type: 'fargate', isPassive: false, @@ -166,8 +149,8 @@ export const SCAN_SCHEMA: ScanSchema = { type: 'fargate', isPassive: true, global: true, - cpu: '1024', - memory: '4096', + cpu: '2048', + memory: '16384', description: 'Syncs records with Elasticsearch so that they appear in search results.' }, diff --git a/backend/src/api/search.ts b/backend/src/api/search.ts index 5b258763..0634e201 100644 --- a/backend/src/api/search.ts +++ b/backend/src/api/search.ts @@ -10,6 +10,7 @@ import { IsArray, IsInt, IsOptional, IsString, IsUUID } from 'class-validator'; import { Domain } from 'domain'; import S3Client from '../tasks/s3-client'; import * as Papa from 'papaparse'; +import logger from '../tools/lambda-logger'; class SearchBody { @IsInt() @@ -64,7 +65,7 @@ export const fetchAllResults = async ( try { searchResults = await client.searchDomains(request); } catch (e) { - console.error(e.meta.body.error); + logger.error(e.meta.body.error); continue; } if (searchResults.body.hits.hits.length === 0) break; @@ -179,7 +180,7 @@ export const search = wrapHandler(async (event) => { try { searchResults = await client.searchDomains(request); } catch (e) { - console.error(e.meta.body.error); + logger.error(e.meta.body.error); throw e; } diff --git a/backend/src/api/users.ts b/backend/src/api/users.ts index 836b42a5..0836c4a7 100644 --- a/backend/src/api/users.ts +++ b/backend/src/api/users.ts @@ -7,7 +7,6 @@ import { IsEnum, IsInt, IsIn, - IsNumber, IsObject, IsPositive, ValidateNested, @@ -19,23 +18,19 @@ import { wrapHandler, NotFound, Unauthorized, - sendEmail, - sendUserRegistrationEmail, - sendRegistrationApprovedEmail, - sendRegistrationDeniedEmail + sendEmail } from './helpers'; import { UserType } from '../models/user'; import { getUserId, canAccessUser, isGlobalViewAdmin, - isRegionalAdmin, isOrgAdmin, isGlobalWriteAdmin } from './auth'; import { Type, plainToClass } from 'class-transformer'; import { IsNull } from 'typeorm'; -import { create } from './organizations'; +import logger from '../tools/lambda-logger'; class UserSearch { @IsInt() @@ -52,9 +47,7 @@ class UserSearch { 'userType', 'dateAcceptedTerms', 'lastLoggedIn', - 'acceptedTermsVersion', - 'state', - 'regionId' + 'acceptedTermsVersion' ]) @IsOptional() sort: string = 'fullName'; @@ -76,137 +69,12 @@ class UserSearch { async getResults(event): Promise<[User[], number]> { const pageSize = this.pageSize || 25; const sort = this.sort === 'name' ? 'user.fullName' : 'user.' + this.sort; - const qs = User.createQueryBuilder('user') - .leftJoinAndSelect('user.roles', 'roles') // Include the roles relation - .leftJoinAndSelect('roles.organization', 'organization') // Include the organization relation - .orderBy(sort, this.order); - const result = await qs.getMany(); - const count = await qs.getCount(); - return [result, count]; + const qs = User.createQueryBuilder('user').orderBy(sort, this.order); + const results = await qs.getManyAndCount(); + return results; } } -// New User -class NewUser { - @IsString() - firstName: string; - - @IsString() - lastName: string; - - @IsString() - @IsOptional() - state: string; - - @IsString() - @IsOptional() - regionId: string; - - @IsEmail() - @IsOptional() - email: string; - - @IsString() - @IsOptional() - organization: string; - - @IsBoolean() - @IsOptional() - organizationAdmin: string; - - @IsEnum(UserType) - @IsOptional() - userType: UserType; -} - -class UpdateUser { - @IsString() - @IsOptional() - state: string; - - @IsString() - @IsOptional() - regionId: string; - - @IsBoolean() - @IsOptional() - invitePending: boolean; - - @IsEnum(UserType) - @IsOptional() - userType: UserType; - - // @IsString() - @IsEnum(Organization) - @IsOptional() - organization: Organization; - - @IsString() - @IsOptional() - role: string; -} - -const REGION_STATE_MAP = { - Connecticut: '1', - Maine: '1', - Massachusetts: '1', - 'New Hampshire': '1', - 'Rhode Island': '1', - Vermont: '1', - 'New Jersey': '2', - 'New York': '2', - 'Puerto Rico': '2', - 'Virgin Islands': '2', - Delaware: '3', - Maryland: '3', - Pennsylvania: '3', - Virginia: '3', - 'District of Columbia': '3', - 'West Virginia': '3', - Alabama: '4', - Florida: '4', - Georgia: '4', - Kentucky: '4', - Mississippi: '4', - 'North Carolina': '4', - 'South Carolina': '4', - Tennessee: '4', - Illinois: '5', - Indiana: '5', - Michigan: '5', - Minnesota: '5', - Ohio: '5', - Wisconsin: '5', - Arkansas: '6', - Louisiana: '6', - 'New Mexico': '6', - Oklahoma: '6', - Texas: '6', - Iowa: '7', - Kansas: '7', - Missouri: '7', - Nebraska: '7', - Colorado: '8', - Montana: '8', - 'North Dakota': '8', - 'South Dakota': '8', - Utah: '8', - Wyoming: '8', - Arizona: '9', - California: '9', - Hawaii: '9', - Nevada: '9', - Guam: '9', - 'American Samoa': '9', - 'Commonwealth Northern Mariana Islands': '9', - 'Republic of Marshall Islands': '9', - 'Federal States of Micronesia': '9', - Alaska: '10', - Idaho: '10', - Oregon: '10', - Washington: '10' -}; - /** * @swagger * @@ -268,13 +136,11 @@ export const update = wrapHandler(async (event) => { } ); if (user) { - console.log(JSON.stringify({ original_user: user })); user.firstName = body.firstName ?? user.firstName; user.lastName = body.lastName ?? user.lastName; user.fullName = user.firstName + ' ' + user.lastName; user.userType = body.userType ?? user.userType; await User.save(user); - console.log(JSON.stringify({ updated_user: user })); return { statusCode: 200, body: JSON.stringify(user) @@ -283,35 +149,66 @@ export const update = wrapHandler(async (event) => { return NotFound; }); +class NewUser { + @IsString() + firstName: string; + + @IsString() + lastName: string; + + @IsEmail() + @IsOptional() + email: string; + + @IsString() + @IsOptional() + organization: string; + + @IsBoolean() + @IsOptional() + organizationAdmin: string; + + @IsEnum(UserType) + @IsOptional() + userType: UserType; +} + const sendInviteEmail = async (email: string, organization?: Organization) => { const staging = process.env.NODE_ENV !== 'production'; - await sendEmail( - email, - 'Crossfeed Invitation', - `Hi there, + try { + await sendEmail( + email, + 'Crossfeed Invitation', + `Hi there, + + You've been invited to join ${ + organization?.name ? `the ${organization?.name} organization on ` : '' + }Crossfeed. To accept the invitation and start using Crossfeed, sign on at ${ + process.env.FRONTEND_DOMAIN + }/signup. -You've been invited to join ${ - organization?.name ? `the ${organization?.name} organization on ` : '' - }Crossfeed. To accept the invitation and start using Crossfeed, sign on at ${ - process.env.FRONTEND_DOMAIN - }/signup. + Crossfeed access instructions: -Crossfeed access instructions: + 1. Visit ${process.env.FRONTEND_DOMAIN}/signup. + 2. Select "Create Account." + 3. Enter your email address and a new password for Crossfeed. + 4. A confirmation code will be sent to your email. Enter this code when you receive it. + 5. You will be prompted to enable MFA. Scan the QR code with an authenticator app on your phone, such as Microsoft Authenticator. Enter the MFA code you see after scanning. + 6. After configuring your account, you will be redirected to Crossfeed. -1. Visit ${process.env.FRONTEND_DOMAIN}/signup. -2. Select "Create Account." -3. Enter your email address and a new password for Crossfeed. -4. A confirmation code will be sent to your email. Enter this code when you receive it. -5. You will be prompted to enable MFA. Scan the QR code with an authenticator app on your phone, such as Microsoft Authenticator. Enter the MFA code you see after scanning. -6. After configuring your account, you will be redirected to Crossfeed. + For more information on using Crossfeed, view the Crossfeed user guide at https://docs.crossfeed.cyber.dhs.gov/user-guide/quickstart/. -For more information on using Crossfeed, view the Crossfeed user guide at https://docs.crossfeed.cyber.dhs.gov/user-guide/quickstart/. + If you encounter any difficulties, please feel free to reply to this email (or send an email to ${ + process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO + }).` + ); + } catch (error) { + logger.error(`Error sending email: ${error}`); -If you encounter any difficulties, please feel free to reply to this email (or send an email to ${ - process.env.CROSSFEED_SUPPORT_EMAIL_REPLYTO - }).` - ); + // Handle the error or re-throw it if needed + throw error; + } }; /** @@ -339,16 +236,12 @@ export const invite = wrapHandler(async (event) => { await connectToDatabase(); body.email = body.email.toLowerCase(); - - if (body.state) { - body.regionId = REGION_STATE_MAP[body.state]; - } - + logger.info(body.email); // Check if user already exists let user = await User.findOne({ email: body.email }); - + logger.info(user); let organization: Organization | undefined; if (body.organization) { @@ -361,17 +254,14 @@ export const invite = wrapHandler(async (event) => { ...body }); await User.save(user); - if (process.env.IS_LOCAL!) { - console.log('Cannot send invite email while running on local.'); - } else { - await sendInviteEmail(user.email, organization); - } + await sendInviteEmail(user.email, organization); } else if (!user.firstName && !user.lastName) { // Only set the user first name and last name the first time the user is invited. user.firstName = body.firstName; user.lastName = body.lastName; await User.save(user); } + // Always update the userType, if specified in the request. if (body.userType) { user.userType = body.userType; @@ -469,7 +359,6 @@ export const acceptTerms = wrapHandler(async (event) => { * description: List users. * tags: * - Users - * */ export const list = wrapHandler(async (event) => { if (!isGlobalViewAdmin(event)) return Unauthorized; @@ -494,7 +383,7 @@ export const list = wrapHandler(async (event) => { */ export const search = wrapHandler(async (event) => { if (!isGlobalViewAdmin(event)) return Unauthorized; - await connectToDatabase(true); + await connectToDatabase(); const search = await validateBody(UserSearch, event.body); const [result, count] = await search.getResults(event); return { @@ -502,453 +391,3 @@ export const search = wrapHandler(async (event) => { body: JSON.stringify({ result, count }) }; }); - -/** - * @swagger - * - * /users/regionId/{regionId}: - * get: - * description: List users with specific regionId. - * parameters: - * - in: path - * name: regionId - * description: User regionId - * tags: - * - Users - */ -export const getByRegionId = wrapHandler(async (event) => { - if (!isRegionalAdmin(event)) return Unauthorized; - const regionId = event.pathParameters?.regionId; - await connectToDatabase(); - const result = await User.find({ - where: { regionId: regionId }, - relations: ['roles', 'roles.organization'] - }); - if (result) { - return { - statusCode: 200, - body: JSON.stringify(result) - }; - } - return NotFound; -}); - -/** - * @swagger - * - * /users/state/{state}: - * get: - * description: List users with specific state. - * parameters: - * - in: path - * name: state - * description: User state - * tags: - * - Users - */ -export const getByState = wrapHandler(async (event) => { - if (!isRegionalAdmin(event)) return Unauthorized; - const state = event.pathParameters?.state; - await connectToDatabase(); - const result = await User.find({ - where: { state: state }, - relations: ['roles', 'roles.organization'] - }); - if (result) { - return { - statusCode: 200, - body: JSON.stringify(result) - }; - } - return NotFound; -}); - -/** - * @swagger - * - * /users/register: - * post: - * description: New user registration. - * tags: - * - Users - */ -export const register = wrapHandler(async (event) => { - const body = await validateBody(NewUser, event.body); - const newUser = { - firstName: body.firstName, - lastName: body.lastName, - email: body.email.toLowerCase(), - userType: UserType.STANDARD, - state: body.state, - regionId: REGION_STATE_MAP[body.state], - invitePending: true - }; - console.log(JSON.stringify(newUser)); - - await connectToDatabase(); - - // Check if user already exists - const userCheck = await User.findOne({ - where: { email: newUser.email } - }); - - let id = ''; - // Create if user does not exist - if (userCheck) { - console.log('User already exists.'); - return { - statusCode: 422, - body: 'User email already exists. Registration failed.' - }; - } - - const createdUser = await User.create(newUser); - await User.save(createdUser); - id = createdUser.id; - const savedUser = await User.findOne(id, { - relations: ['roles', 'roles.organization'] - }); - if (!savedUser) { - return NotFound; - } - // Send email notification - await sendUserRegistrationEmail( - savedUser.email, - 'Crossfeed Registration Pending', - savedUser.firstName, - savedUser.lastName, - 'crossfeed_registration_notification.html' - ); - - return { - statusCode: 200, - body: JSON.stringify(savedUser) - }; -}); - -/** - * @swagger - * - * /users/{id}/register/approve: - * put: - * description: Approve a particular users registration. - * parameters: - * - in: path - * name: id - * description: User id - * tags: - * - Users - */ -export const registrationApproval = wrapHandler(async (event) => { - // Get the user id from the path - const userId = event.pathParameters?.userId; - - // Confirm that the id is a valid UUID - if (!userId || !isUUID(userId)) { - return NotFound; - } - - // Connect to the database - await connectToDatabase(); - - const user = await User.findOne(userId); - if (!user) { - return NotFound; - } - - // Send email notification - await sendRegistrationApprovedEmail( - user.email, - 'Crossfeed Registration Approved', - user.firstName, - user.lastName, - 'crossfeed_approval_notification.html' - ); - - // TODO: Handle Response Output - return { - statusCode: 200, - body: 'User registration approved.' - }; -}); - -/** - * @swagger - * - * /users/{id}/register/deny: - * put: - * description: Deny a particular users registration. - * parameters: - * - in: path - * name: id - * description: User id - * tags: - * - Users - */ -export const registrationDenial = wrapHandler(async (event) => { - // Get the user id from the path - const userId = event.pathParameters?.userId; - - // Confirm that the id is a valid UUID - if (!userId || !isUUID(userId)) { - return NotFound; - } - - // Connect to the database - await connectToDatabase(); - - const user = await User.findOne(userId); - if (!user) { - return NotFound; - } - - await sendRegistrationDeniedEmail( - user.email, - 'Crossfeed Registration Denied', - user.firstName, - user.lastName, - 'crossfeed_denial_notification.html' - ); - - // TODO: Handle Response Output - return { - statusCode: 200, - body: 'User registration denied.' - }; -}); - -//***************// -// V2 Endpoints // -//***************// - -/** - * @swagger - * - * /v2/users: - * get: - * description: List all users with query parameters. - * tags: - * - Users - * parameters: - * - in: query - * name: state - * required: false - * schema: - * type: array - * items: - * type: string - * - in: query - * name: regionId - * required: false - * schema: - * type: array - * items: - * type: string - * - in: query - * name: invitePending - * required: false - * schema: - * type: array - * items: - * type: string - * - */ -export const getAllV2 = wrapHandler(async (event) => { - if (!isRegionalAdmin(event)) return Unauthorized; - - const filterParams = {}; - - if (event.query && event.query.state) { - filterParams['state'] = event.query.state; - } - if (event.query && event.query.regionId) { - filterParams['regionId'] = event.query.regionId; - } - if (event.query && event.query.invitePending) { - filterParams['invitePending'] = event.query.invitePending; - } - - await connectToDatabase(); - if (Object.entries(filterParams).length === 0) { - const result = await User.find({ - relations: ['roles', 'roles.organization'] - }); - return { - statusCode: 200, - body: JSON.stringify(result) - }; - } else { - const result = await User.find({ - where: filterParams, - relations: ['roles', 'roles.organization'] - }); - return { - statusCode: 200, - body: JSON.stringify(result) - }; - } -}); - -/** - * @swagger - * - * /v2/users: - * post: - * description: Create a new user. - * tags: - * - Users - */ -export const inviteV2 = wrapHandler(async (event) => { - const body = await validateBody(NewUser, event.body); - // Invoker must be either an organization or global admin - if (body.organization) { - if (!isOrgAdmin(event, body.organization)) return Unauthorized; - } else { - if (!isGlobalWriteAdmin(event)) return Unauthorized; - } - if (!isGlobalWriteAdmin(event) && body.userType) { - // Non-global admins can't set userType - return Unauthorized; - } - - await connectToDatabase(); - - body.email = body.email.toLowerCase(); - const userEmail = body.email.toLowerCase(); - - const sendRegisterEmail = async (email: string) => { - const staging = process.env.NODE_ENV !== 'production'; - - await sendEmail( - email, - 'Crossfeed Registration', - `Hello, - Your Crossfeed registration is under review. - You will receive an email when your registration is approved. - - Thank you!` - ); - }; - - // Check if user already exists - let user = await User.findOne({ - email: body.email - }); - - // Handle Organization assignment if provided - let organization: Organization | undefined; - if (body.organization) { - organization = await Organization.findOne(body.organization); - } - - // Create user if not found - if (!user) { - // Create User object - user = await User.create({ - invitePending: true, - ...body - }); - // Save User to DB - await User.save(user); - - // Send Notification Email to user - await sendRegisterEmail(userEmail); - } else if (!user.firstName && !user.lastName) { - // Only set the user first name and last name the first time the user is invited. - user.firstName = body.firstName; - user.lastName = body.lastName; - // Save User to DB - await User.save(user); - } - - // Always update the userType, if specified in the request. - if (body.userType) { - user.userType = body.userType; - await User.save(user); - } - - if (organization) { - // Create approved role if organization supplied - await Role.createQueryBuilder() - .insert() - .values({ - user: user, - organization: { id: body.organization }, - approved: true, - createdBy: { id: event.requestContext.authorizer!.id }, - approvedBy: { id: event.requestContext.authorizer!.id }, - role: body.organizationAdmin ? 'admin' : 'user' - }) - .onConflict( - ` - ("userId", "organizationId") DO UPDATE - SET "role" = excluded."role", - "approved" = excluded."approved", - "approvedById" = excluded."approvedById" - ` - ) - .execute(); - } - - const updated = await User.findOne( - { - id: user.id - }, - { - relations: ['roles', 'roles.organization'] - } - ); - return { - statusCode: 200, - body: JSON.stringify(updated) - }; -}); - -/** - * @swagger - * - * /v2/users/{id}: - * put: - * description: Update a particular user. - * parameters: - * - in: path - * name: id - * description: User id - * tags: - * - Users - */ -export const updateV2 = wrapHandler(async (event) => { - // Get the user id from the path - const userId = event.pathParameters?.userId; - - // Confirm that the id is a valid UUID - if (!userId || !isUUID(userId)) { - return NotFound; - } - - // Validate the body - const body = await validateBody(UpdateUser, event.body); - - // Connect to the database - await connectToDatabase(); - - const user = await User.findOne(userId); - if (!user) { - return NotFound; - } - - // Update the user - const updatedResp = await User.update(userId, body); - - // Handle response - if (updatedResp) { - const updatedUser = await User.findOne(userId, { - relations: ['roles', 'roles.organization'] - }); - return { - statusCode: 200, - body: JSON.stringify(updatedUser) - }; - } - return NotFound; -}); diff --git a/backend/src/api/vulnerabilities.ts b/backend/src/api/vulnerabilities.ts index 218df49b..86416504 100644 --- a/backend/src/api/vulnerabilities.ts +++ b/backend/src/api/vulnerabilities.ts @@ -170,8 +170,7 @@ class VulnerabilitySearch { : `vulnerability.${this.sort}`; let qs = Vulnerability.createQueryBuilder('vulnerability') .leftJoinAndSelect('vulnerability.domain', 'domain') - .leftJoinAndSelect('domain.organization', 'organization') - .leftJoinAndSelect('vulnerability.service', 'service'); + .leftJoinAndSelect('domain.organization', 'organization'); if (groupBy) { qs = qs @@ -186,7 +185,9 @@ class VulnerabilitySearch { ]) .orderBy('cnt', 'DESC'); } else { - qs = qs.orderBy(sort, this.order); + qs = qs + .leftJoinAndSelect('vulnerability.service', 'service') + .orderBy(sort, this.order); } if (pageSize !== -1) { @@ -282,7 +283,7 @@ export const update = wrapHandler(async (event) => { * - Vulnerabilities */ export const list = wrapHandler(async (event) => { - await connectToDatabase(true); + await connectToDatabase(); const search = await validateBody(VulnerabilitySearch, event.body); const [result, count] = await search.getResults(event); return { diff --git a/backend/src/tasks/amass.ts b/backend/src/tasks/amass.ts index 34017d22..26422c09 100644 --- a/backend/src/tasks/amass.ts +++ b/backend/src/tasks/amass.ts @@ -6,13 +6,14 @@ import { CommandOptions } from './ecs-client'; import getRootDomains from './helpers/getRootDomains'; import saveDomainsToDb from './helpers/saveDomainsToDb'; import * as path from 'path'; +import logger from '../tools/lambda-logger'; const OUT_PATH = path.join(__dirname, 'out-' + Math.random() + '.txt'); export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName, scanId } = commandOptions; - console.log('Running amass on organization', organizationName); + logger.info(`Running amass on organization ${organizationName}`); const rootDomains = await getRootDomains(organizationId!); @@ -27,7 +28,7 @@ export const handler = async (commandOptions: CommandOptions) => { '-json', OUT_PATH ]; - console.log('Running amass with args', args); + logger.info(`Running amass with args ${JSON.stringify(args)}`); spawnSync('amass', args, { stdio: 'pipe' }); const output = String(readFileSync(OUT_PATH)); const lines = output.split('\n'); @@ -48,9 +49,9 @@ export const handler = async (commandOptions: CommandOptions) => { ); } await saveDomainsToDb(domains); - console.log(`amass created/updated ${domains.length} new domains`); + logger.info(`amass created/updated ${domains.length} new domains`); } catch (e) { - console.error(e); + logger.error(JSON.stringify(e)); continue; } } diff --git a/backend/src/tasks/bastion.ts b/backend/src/tasks/bastion.ts index ab6c0556..0aa73645 100644 --- a/backend/src/tasks/bastion.ts +++ b/backend/src/tasks/bastion.ts @@ -1,21 +1,22 @@ import { Handler } from 'aws-lambda'; import { connectToDatabase, User } from '../models'; import ESClient from '../tasks/es-client'; +import logger from '../tools/lambda-logger'; -export const handler: Handler = async (event) => { +export const handler: Handler = async (event, context) => { if (event.mode === 'db') { - const connection = await connectToDatabase(true); + const connection = await connectToDatabase(); const res = await connection.query(event.query); - console.log(res); + logger.info(JSON.stringify(res), { context }); } else if (event.mode === 'es') { if (event.query === 'delete') { const client = new ESClient(); await client.deleteAll(); - console.log('Index successfully deleted'); + logger.info('Index successfully deleted', { context }); } else { - console.log('Query not found: ' + event.query); + logger.info(`Query not found: ${event.query}`, { context }); } } else { - console.log('Mode not found: ' + event.mode); + logger.info(`Mode not found: ${event.mode}`, { context }); } }; diff --git a/backend/src/tasks/censys.ts b/backend/src/tasks/censys.ts index 83e92a92..f610c248 100644 --- a/backend/src/tasks/censys.ts +++ b/backend/src/tasks/censys.ts @@ -5,6 +5,7 @@ import * as dns from 'dns'; import saveDomainsToDb from './helpers/saveDomainsToDb'; import { CommandOptions } from './ecs-client'; import getRootDomains from './helpers/getRootDomains'; +import logger from '../tools/lambda-logger'; interface CensysAPIResponse { result: { @@ -25,9 +26,9 @@ const sleep = (milliseconds: number) => { }; const fetchCensysData = async (rootDomain: string) => { - console.log(`Fetching certificates for ${rootDomain}`); + logger.info(`Fetching certificates for ${rootDomain}`); const data = await fetchPage(rootDomain); - console.log( + logger.info( `Censys found ${data.result.total} certificates for ${rootDomain} Fetching ${Math.min(data.result.total, resultLimit)} of them...` ); @@ -66,7 +67,7 @@ const fetchPage = async (rootDomain: string, nextToken?: string) => { export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName, scanId } = commandOptions; - console.log(`Running Censys on: ${organizationName}`); + logger.info(`Running Censys on: ${organizationName}`); const rootDomains = await getRootDomains(organizationId!); const uniqueNames = new Set(); //used to dedupe domain names @@ -107,7 +108,7 @@ export const handler = async (commandOptions: CommandOptions) => { // Project Sonar has both forward & reverse DNS for finding subdomains // Save domains to database - console.log(`Saving ${organizationName} subdomains to database...`); + logger.info(`Saving ${organizationName} subdomains to database...`); const domains: Domain[] = []; for (const domain of foundDomains) { let ip: string | null; @@ -129,7 +130,7 @@ export const handler = async (commandOptions: CommandOptions) => { ); } await saveDomainsToDb(domains); - console.log( + logger.info( `Censys saved or updated ${domains.length} subdomains for ${organizationName}` ); }; diff --git a/backend/src/tasks/censysCertificates.ts b/backend/src/tasks/censysCertificates.ts index f2bd369e..3b838332 100644 --- a/backend/src/tasks/censysCertificates.ts +++ b/backend/src/tasks/censysCertificates.ts @@ -1,10 +1,16 @@ -import { connectToDatabase, Domain, Scan } from '../models'; +import { + connectToDatabase, + Domain, + Organization, + Scan, + Service +} from '../models'; import { plainToClass } from 'class-transformer'; import saveDomainsToDb from './helpers/saveDomainsToDb'; import { CommandOptions } from './ecs-client'; import { CensysCertificatesData } from '../models/generated/censysCertificates'; +import saveServicesToDb from './helpers/saveServicesToDb'; import getAllDomains from './helpers/getAllDomains'; -import sanitizeChunkValues from './helpers/sanitizeChunkValues'; import * as zlib from 'zlib'; import * as readline from 'readline'; import got from 'got'; @@ -12,6 +18,7 @@ import PQueue from 'p-queue'; import pRetry from 'p-retry'; import axios from 'axios'; import getScanOrganizations from './helpers/getScanOrganizations'; +import logger from '../tools/lambda-logger'; interface CommonNameToDomainsMap { [commonName: string]: Domain[]; @@ -35,12 +42,10 @@ const downloadPath = async ( path: string, commonNameToDomainsMap: CommonNameToDomainsMap, i: number, - numFiles: number + numFiles: number, + commandOptions: CommandOptions ): Promise => { - if (i >= 100) { - throw new Error('Invalid chunk number.'); - } - console.log(`i: ${i} of ${numFiles}: starting download of url ${path}`); + logger.info(`i: ${i} of ${numFiles}: starting download of url ${path}`); const domains: Domain[] = []; const gunzip = zlib.createGunzip(); @@ -100,11 +105,11 @@ const downloadPath = async ( readInterface.on('SIGTSTP', reject); }); if (!domains.length) { - console.log( + logger.info( `censysCertificates - processed file ${i} of ${numFiles}: got no results` ); } else { - console.log( + logger.info( `censysCertificates - processed file ${i} of ${numFiles}: got some results: ${domains.length} domains` ); } @@ -113,14 +118,16 @@ const downloadPath = async ( }; export const handler = async (commandOptions: CommandOptions) => { - const { organizationId } = commandOptions; + const { chunkNumber, numChunks, organizationId } = commandOptions; - const { chunkNumber, numChunks } = await sanitizeChunkValues(commandOptions); + if (chunkNumber === undefined || numChunks === undefined) { + throw new Error('Chunks not specified.'); + } const { data: { results } } = await pRetry(() => axios.get(CENSYS_CERTIFICATES_ENDPOINT, { auth }), { - // Perform fewer retries on jest to make tests faster + // Perform less retries on jest to make tests faster retries: typeof jest === 'undefined' ? 5 : 2, randomize: true }); @@ -128,7 +135,7 @@ export const handler = async (commandOptions: CommandOptions) => { const { data: { files } } = await pRetry(() => axios.get(results.latest.details_url, { auth }), { - // Perform fewer retries on jest to make tests faster + // Perform less retries on jest to make tests faster retries: typeof jest === 'undefined' ? 5 : 2, randomize: true }); @@ -155,9 +162,9 @@ export const handler = async (commandOptions: CommandOptions) => { const fileNames = Object.keys(files).sort(); const jobs: Promise[] = []; - let startIndex = Math.floor(((1.0 * chunkNumber!) / numChunks!) * numFiles); + let startIndex = Math.floor(((1.0 * chunkNumber) / numChunks) * numFiles); let endIndex = - Math.floor(((1.0 * (chunkNumber! + 1)) / numChunks!) * numFiles) - 1; + Math.floor(((1.0 * (chunkNumber + 1)) / numChunks) * numFiles) - 1; if (process.env.IS_LOCAL && typeof jest === 'undefined') { // For local testing. @@ -193,10 +200,11 @@ export const handler = async (commandOptions: CommandOptions) => { files[fileName].download_path, commonNameToDomainsMap, idx, - numFiles + numFiles, + commandOptions ), { - // Perform fewer retries on jest to make tests faster + // Perform less retries on jest to make tests faster retries: typeof jest === 'undefined' ? 5 : 2, randomize: true } @@ -204,8 +212,8 @@ export const handler = async (commandOptions: CommandOptions) => { ) ); } - console.log(`censysCertificates: scheduled all tasks`); + logger.info(`censysCertificates: scheduled all tasks`); await Promise.all(jobs); - console.log(`censysCertificates done`); + logger.info(`censysCertificates done`); }; diff --git a/backend/src/tasks/censysIpv4.ts b/backend/src/tasks/censysIpv4.ts index 6972d38c..51808451 100644 --- a/backend/src/tasks/censysIpv4.ts +++ b/backend/src/tasks/censysIpv4.ts @@ -13,7 +13,7 @@ import PQueue from 'p-queue'; import pRetry from 'p-retry'; import axios from 'axios'; import getScanOrganizations from './helpers/getScanOrganizations'; -import sanitizeChunkValues from './helpers/sanitizeChunkValues'; +import logger from '../tools/lambda-logger'; export interface IpToDomainsMap { [ip: string]: Domain[]; @@ -39,10 +39,7 @@ const downloadPath = async ( numFiles: number, commandOptions: CommandOptions ): Promise => { - if (i >= 100) { - throw new Error('Invalid chunk number.'); - } - console.log(`i: ${i} of ${numFiles}: starting download of url ${path}`); + logger.info(`i: ${i} of ${numFiles}: starting download of url ${path}`); const domains: Domain[] = []; const services: Service[] = []; @@ -109,11 +106,11 @@ const downloadPath = async ( readInterface.on('SIGTSTP', reject); }); if (!domains.length) { - console.log( + logger.info( `censysipv4 - processed file ${i} of ${numFiles}: got no results` ); } else { - console.log( + logger.info( `censysipv4 - processed file ${i} of ${numFiles}: got some results: ${domains.length} domains and ${services.length} services` ); } @@ -123,9 +120,11 @@ const downloadPath = async ( }; export const handler = async (commandOptions: CommandOptions) => { - const { organizationId } = commandOptions; + const { chunkNumber, numChunks, organizationId } = commandOptions; - const { chunkNumber, numChunks } = await sanitizeChunkValues(commandOptions); + if (chunkNumber === undefined || numChunks === undefined) { + throw new Error('Chunks not specified.'); + } const { data: { results } @@ -157,9 +156,9 @@ export const handler = async (commandOptions: CommandOptions) => { const fileNames = Object.keys(files).sort(); const jobs: Promise[] = []; - let startIndex = Math.floor(((1.0 * chunkNumber!) / numChunks!) * numFiles); + let startIndex = Math.floor(((1.0 * chunkNumber) / numChunks) * numFiles); let endIndex = - Math.floor(((1.0 * (chunkNumber! + 1)) / numChunks!) * numFiles) - 1; + Math.floor(((1.0 * (chunkNumber + 1)) / numChunks) * numFiles) - 1; if (process.env.IS_LOCAL && typeof jest === 'undefined') { // For local testing. @@ -193,7 +192,7 @@ export const handler = async (commandOptions: CommandOptions) => { commandOptions ), { - // Perform fewer retries on jest to make tests faster + // Perform less retries on jest to make tests faster retries: typeof jest === 'undefined' ? 5 : 2, randomize: true } @@ -201,8 +200,8 @@ export const handler = async (commandOptions: CommandOptions) => { ) ); } - console.log(`censysipv4: scheduled all tasks`); + logger.info(`censysipv4: scheduled all tasks`); await Promise.all(jobs); - console.log(`censysipv4 done`); + logger.info(`censysipv4 done`); }; diff --git a/backend/src/tasks/cve.ts b/backend/src/tasks/cve.ts index 148fabc7..918516c7 100644 --- a/backend/src/tasks/cve.ts +++ b/backend/src/tasks/cve.ts @@ -10,11 +10,19 @@ import { plainToClass } from 'class-transformer'; import { CommandOptions } from './ecs-client'; import * as buffer from 'buffer'; import saveVulnerabilitiesToDb from './helpers/saveVulnerabilitiesToDb'; -import { LessThan, MoreThan, In, MoreThanOrEqual, Not } from 'typeorm'; +import { + LessThan, + MoreThan, + FindOperator, + In, + MoreThanOrEqual, + Not +} from 'typeorm'; import * as fs from 'fs'; import * as zlib from 'zlib'; import axios, { AxiosResponse } from 'axios'; import { CISACatalogOfKnownExploitedVulnerabilities } from 'src/models/generated/kev'; +import logger from '../tools/lambda-logger'; /** * The CVE scan creates vulnerabilities based on existing @@ -126,21 +134,21 @@ const identifyPassiveCVEsFromCPEs = async (allDomains: Domain[]) => { }); if (hostsToCheck.length === 0) { - console.warn('No hosts to check - no domains with CPEs found.'); + logger.warn('No hosts to check - no domains with CPEs found.'); return; } const numBatches = hostsToCheck.length / CPE2CVE_BATCH_SIZE; for (let batch = 0; batch < numBatches; batch++) { let input = ''; - console.log(`\tcpe2cve: starting batch ${batch} / ${numBatches}`); + logger.info(`\tcpe2cve: starting batch ${batch} / ${numBatches}`); for ( let index = CPE2CVE_BATCH_SIZE * batch; index < Math.min(CPE2CVE_BATCH_SIZE * (batch + 1), hostsToCheck.length); index++ ) { input += `${index} ${hostsToCheck[index].cpes.join(',')}\n`; - console.log(`\t${index} ${hostsToCheck[index].cpes.join(',')}`); + logger.info(`\t${index} ${hostsToCheck[index].cpes.join(',')}`); } let res: Buffer; try { @@ -149,7 +157,7 @@ const identifyPassiveCVEsFromCPEs = async (allDomains: Domain[]) => { { input: input, maxBuffer: buffer.constants.MAX_LENGTH } ); } catch (e) { - console.error(e); + logger.error(JSON.stringify(e)); continue; } const split = String(res).split('\n'); @@ -299,7 +307,7 @@ const populateVulnerabilitiesFromNVD = async () => { for (const item of parsed.CVE_Items) { const cve = item.cve.CVE_data_meta.ID; if (vulnerabilitiesMap[cve]) { - console.log(cve); + logger.info(cve); const vulns = vulnerabilitiesMap[cve]; const description = item.cve.description.description_data.find( (desc) => desc.lang === 'en' @@ -339,7 +347,7 @@ const populateVulnerabilitiesFromKEV = async () => { } ); if (affected > 0) { - console.log(`KEV ${kevVuln.cveID}: updated ${affected} vulns`); + logger.info(`KEV ${kevVuln.cveID}: updated ${affected} vulns`); } } }; @@ -380,7 +388,7 @@ const reopenClosedVulnerabilities = async () => { }; export const handler = async (commandOptions: CommandOptions) => { - console.log('Running cve detection globally'); + logger.info('Running cve detection globally'); // CVE is a global scan; organizationId is used only for testing. const { organizationId } = commandOptions; @@ -404,7 +412,7 @@ export const handler = async (commandOptions: CommandOptions) => { break; } - console.log(`Running batch ${batchNum}`); + logger.info(`Running batch ${batchNum}`); await identifyPassiveCVEsFromCPEs(domains); diff --git a/backend/src/tasks/dnstwist.ts b/backend/src/tasks/dnstwist.ts index bf8bc1f2..391bbabc 100644 --- a/backend/src/tasks/dnstwist.ts +++ b/backend/src/tasks/dnstwist.ts @@ -6,6 +6,7 @@ import saveVulnerabilitiesToDb from './helpers/saveVulnerabilitiesToDb'; import { spawnSync } from 'child_process'; import saveDomainsToDb from './helpers/saveDomainsToDb'; import * as dns from 'dns'; +import logger from '../tools/lambda-logger'; async function runDNSTwist(domain: string) { const child = spawnSync( @@ -18,7 +19,7 @@ async function runDNSTwist(domain: string) { ); const savedOutput = child.stdout; const finalResults = JSON.parse(savedOutput); - console.log( + logger.info( `Got ${ Object.keys(finalResults).length } similar domains for root domain ${domain}` @@ -30,10 +31,10 @@ export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName } = commandOptions; await connectToDatabase(); const dateNow = new Date(Date.now()); - console.log('Running dnstwist on organization', organizationName); + logger.info(`Running dnstwist on organization ${organizationName}`); const root_domains = await getRootDomains(organizationId!); const vulns: Vulnerability[] = []; - console.log('Root domains:', root_domains); + logger.info(`Root domains: ${root_domains}`); for (const root_domain of root_domains) { try { const results = await runDNSTwist(root_domain); @@ -104,7 +105,7 @@ export const handler = async (commandOptions: CommandOptions) => { continue; } } catch (e) { - console.error(e); + logger.error(JSON.stringify(e)); continue; } } diff --git a/backend/src/tasks/dotgov.ts b/backend/src/tasks/dotgov.ts index fd686aca..1f7d8e70 100644 --- a/backend/src/tasks/dotgov.ts +++ b/backend/src/tasks/dotgov.ts @@ -2,6 +2,7 @@ import { connectToDatabase, Organization, OrganizationTag } from '../models'; import { CommandOptions } from './ecs-client'; import axios from 'axios'; import * as Papa from 'papaparse'; +import logger from '../tools/lambda-logger'; interface ParsedRow { 'Domain Name': string; @@ -60,8 +61,7 @@ export const handler = async (commandOptions: CommandOptions) => { orgsToRootDomainMap )) { // Create a new organization if needed; else, create the same one. - console.log(orgName); - console.log(row); + logger.info(orgName); const organization = (await Organization.findOne({ name: orgName @@ -77,8 +77,8 @@ export const handler = async (commandOptions: CommandOptions) => { // Replace existing rootDomains with new rootDomains. organization.rootDomains = [...rootDomains]; await organization.save(); - console.log('Finished org', orgName); + logger.info(`Finished org ${orgName}`); } - console.log(`dotgov done`); + logger.info(`dotgov done`); }; diff --git a/backend/src/tasks/ecs-client.ts b/backend/src/tasks/ecs-client.ts index 7b9e806e..4ef94a1f 100644 --- a/backend/src/tasks/ecs-client.ts +++ b/backend/src/tasks/ecs-client.ts @@ -1,5 +1,6 @@ import { ECS, CloudWatchLogs } from 'aws-sdk'; import { SCAN_SCHEMA } from '../api/scans'; +import logger from '../tools/lambda-logger'; export interface CommandOptions { /** A list of organizations (id and name) that this @@ -86,8 +87,6 @@ class ECSClient { }, Env: [ `CROSSFEED_COMMAND_OPTIONS=${JSON.stringify(commandOptions)}`, - `CF_API_KEY=${process.env.CF_API_KEY}`, - `PE_API_KEY=${process.env.PE_API_KEY}`, `DB_DIALECT=${process.env.DB_DIALECT}`, `DB_HOST=${process.env.DB_HOST}`, `IS_LOCAL=true`, @@ -125,7 +124,7 @@ class ECSClient { failures: [] }; } catch (e) { - console.error(e); + logger.error(e); return { tasks: [], failures: [{}] diff --git a/backend/src/tasks/es-client.ts b/backend/src/tasks/es-client.ts index f470dd0f..0e157004 100644 --- a/backend/src/tasks/es-client.ts +++ b/backend/src/tasks/es-client.ts @@ -1,7 +1,9 @@ import { Client } from '@elastic/elasticsearch'; import { Domain, Webpage } from '../models'; +import logger from '../tools/lambda-logger'; export const DOMAINS_INDEX = 'domains-5'; +const httpProxy = require('https-proxy-agent'); interface DomainRecord extends Domain { suggest: { input: string | string[]; weight: number }[]; @@ -37,7 +39,16 @@ class ESClient { client: Client; constructor(isLocal?: boolean) { - this.client = new Client({ node: process.env.ELASTICSEARCH_ENDPOINT! }); + process.env.HTTPS_PROXY = 'http://proxy.lz.us-cert.gov:8080'; + process.env.HTTP_PROXY = 'http://proxy.lz.us-cert.gov:8080'; + + const proxyAgent = process.env.HTTPS_PROXY || process.env.HTTP_PROXY; + const agent = proxyAgent ? httpProxy(proxyAgent) : undefined; + + this.client = new Client({ + node: process.env.ELASTICSEARCH_ENDPOINT!, + agent: agent + }); } /** @@ -70,10 +81,10 @@ class ESClient { index: DOMAINS_INDEX, body: { properties: mapping } }); - console.log(`Index ${DOMAINS_INDEX} updated.`); + logger.info(`Index ${DOMAINS_INDEX} updated.`); } catch (e) { if (e.meta?.body?.error.type !== 'index_not_found_exception') { - console.error(e.meta?.body); + logger.error(e.meta?.body); throw e; } await this.client.indices.create({ @@ -93,7 +104,7 @@ class ESClient { } } }); - console.log(`Created index ${DOMAINS_INDEX}.`); + logger.info(`Created index ${DOMAINS_INDEX}.`); } await this.client.indices.putSettings({ index: DOMAINS_INDEX, @@ -101,7 +112,7 @@ class ESClient { settings: { refresh_interval: '1800s' } } }); - console.log(`Updated settings for index ${DOMAINS_INDEX}.`); + logger.info(`Updated settings for index ${DOMAINS_INDEX}.`); } excludeFields = (domain: Domain) => { @@ -140,13 +151,13 @@ class ESClient { ]; }, onDrop(doc) { - console.error(doc.error, doc.document); + logger.error(`${doc.error} ${doc.document}`); b.abort(); } }); const result = await b; if (result.aborted) { - console.error(result); + logger.error(result); throw new Error('Bulk operation aborted'); } return result; @@ -180,13 +191,13 @@ class ESClient { ]; }, onDrop(doc) { - console.error(doc.error, doc.document); + logger.error(`${doc.error} ${doc.document}`); b.abort(); } }); const result = await b; if (result.aborted) { - console.error(result); + logger.error(result); throw new Error('Bulk operation aborted'); } return result; diff --git a/backend/src/tasks/findomain.ts b/backend/src/tasks/findomain.ts index 440d8a56..c4d0ad78 100644 --- a/backend/src/tasks/findomain.ts +++ b/backend/src/tasks/findomain.ts @@ -6,13 +6,14 @@ import { CommandOptions } from './ecs-client'; import getRootDomains from './helpers/getRootDomains'; import saveDomainsToDb from './helpers/saveDomainsToDb'; import * as path from 'path'; +import logger from '../tools/lambda-logger'; const OUT_PATH = path.join(__dirname, 'out-' + Math.random() + '.txt'); export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName, scanId } = commandOptions; - console.log('Running findomain on organization', organizationName); + logger.info(`Running findomain on organization ${organizationName}`); const rootDomains = await getRootDomains(organizationId!); @@ -26,8 +27,15 @@ export const handler = async (commandOptions: CommandOptions) => { '-u', OUT_PATH ]; - console.log('Running findomain with args', args); - spawnSync('findomain', args, { stdio: 'pipe' }); + logger.info(`Running findomain with args ${args}`); + spawnSync('findomain', args, { + stdio: 'pipe', + env: { + ...process.env, + HTTP_PROXY: process.env.HTTPS_PROXY, + HTTPS_PROXY: process.env.HTTPS_PROXY + } + }); const output = String(readFileSync(OUT_PATH)); const lines = output.split('\n'); const domains: Domain[] = []; @@ -46,9 +54,9 @@ export const handler = async (commandOptions: CommandOptions) => { ); } await saveDomainsToDb(domains); - console.log(`Findomain created/updated ${domains.length} new domains`); + logger.info(`Findomain created/updated ${domains.length} new domains`); } catch (e) { - console.error(e); + logger.error(JSON.stringify(e)); continue; } } diff --git a/backend/src/tasks/functions.yml b/backend/src/tasks/functions.yml index c821a00c..a7da691b 100644 --- a/backend/src/tasks/functions.yml +++ b/backend/src/tasks/functions.yml @@ -1,12 +1,3 @@ ---- -cloudwatchToS3: - handler: src/tasks/cloudwatchToS3.handler - timeout: 900 - events: - - schedule: rate(4 hours) - reservedConcurrency: 1 - memorySize: 4096 - scheduler: handler: src/tasks/scheduler.handler timeout: 900 @@ -30,24 +21,6 @@ bastion: makeGlobalAdmin: handler: src/tasks/makeGlobalAdmin.handler -checkUserExpiration: - timeout: 300 - handler: src/tasks/checkUserExpiration.handler - events: - - schedule: cron(0 0 * * ? *) # Runs every day at midnight -scanExecution: - handler: src/tasks/scanExecution.handler - timeout: 300 # 5 minutes - environment: - SQS_QUEUE_NAME: ${self:provider.stage}-worker-control-queue - events: - - sqs: - arn: - Fn::GetAtt: - - WorkerControlQueue - - Arn - memorySize: 4096 - updateScanTaskStatus: handler: src/tasks/updateScanTaskStatus.handler events: diff --git a/backend/src/tasks/helpers/fetchPublicSuffixList.ts b/backend/src/tasks/helpers/fetchPublicSuffixList.ts index 07c8f1df..7292d98b 100644 --- a/backend/src/tasks/helpers/fetchPublicSuffixList.ts +++ b/backend/src/tasks/helpers/fetchPublicSuffixList.ts @@ -1,5 +1,6 @@ import * as fs from 'fs'; import fetch from 'node-fetch'; +import logger from '../../tools/lambda-logger'; // Checks for PSL at ${path} and fetches a new one if missing or out of date export default async (path = 'public_suffix_list.dat'): Promise => { @@ -12,7 +13,7 @@ export default async (path = 'public_suffix_list.dat'): Promise => { try { fs.writeFileSync(fd, await fetchPsl()); } catch (e) { - console.error(e); + logger.error(e); } finally { fs.closeSync(fd); } @@ -26,7 +27,7 @@ async function handleExistingPsl(path) { fs.writeFileSync(fd, await fetchPsl()); } } catch (e) { - console.error(e); + logger.error(e); } finally { fs.closeSync(fd); } diff --git a/backend/src/tasks/hibp.ts b/backend/src/tasks/hibp.ts index f9519a1a..4a595484 100644 --- a/backend/src/tasks/hibp.ts +++ b/backend/src/tasks/hibp.ts @@ -3,6 +3,7 @@ import { CommandOptions } from './ecs-client'; import { plainToClass } from 'class-transformer'; import saveVulnerabilitiesToDb from './helpers/saveVulnerabilitiesToDb'; import axios from 'axios'; +import logger from '../tools/lambda-logger'; /** * The hibp scan looks up emails from a particular .gov domain @@ -90,7 +91,7 @@ async function lookupEmails( finalResults['Breaches'] = breachResults; return finalResults; } catch (error) { - console.error( + logger.error( `An error occured when trying to access the HIPB API using the domain: ${domain.name}: ${error} ` ); return null; @@ -100,7 +101,7 @@ async function lookupEmails( export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName } = commandOptions; - console.log('Running hibp on organization', organizationName); + logger.info(`Running hibp on organization ${organizationName}`); const domainsWithIPs = await getIps(organizationId); const { data } = await axios.get( 'https://haveibeenpwned.com/api/v2/breaches', @@ -121,7 +122,7 @@ export const handler = async (commandOptions: CommandOptions) => { const results = await lookupEmails(breachesDict, domain); if (results) { - console.log( + logger.info( `Got ${Object.keys(results['Emails']).length} emails for domain ${ domain.name }` diff --git a/backend/src/tasks/intrigue-ident.ts b/backend/src/tasks/intrigue-ident.ts index fc074d3d..48934b97 100644 --- a/backend/src/tasks/intrigue-ident.ts +++ b/backend/src/tasks/intrigue-ident.ts @@ -3,9 +3,10 @@ import { getLiveWebsites, LiveDomain } from './helpers/getLiveWebsites'; import PQueue from 'p-queue'; import * as buffer from 'buffer'; import { spawnSync } from 'child_process'; +import logger from '../tools/lambda-logger'; const intrigueIdent = async (domain: LiveDomain): Promise => { - console.log('Domain', domain.name); + logger.info(`Domain ${domain.name}`); const { stdout, stderr, status } = spawnSync( 'intrigue-ident', ['--uri', domain.url, '--json'], @@ -19,10 +20,10 @@ const intrigueIdent = async (domain: LiveDomain): Promise => { } ); if (stderr?.toString()) { - console.error('stderr', stderr.toString()); + logger.error(`stderr ${stderr.toString()}`); } if (status !== 0) { - console.error('IntrigueIdent failed'); + logger.error('IntrigueIdent failed'); return; } const output = stdout.toString(); @@ -36,7 +37,7 @@ const intrigueIdent = async (domain: LiveDomain): Promise => { export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName } = commandOptions; - console.log('Running intrigueIdent on organization', organizationName); + logger.info(`Running intrigueIdent on organization ${organizationName}`); const liveWebsites = await getLiveWebsites(organizationId!); const queue = new PQueue({ concurrency: 5 }); @@ -44,5 +45,5 @@ export const handler = async (commandOptions: CommandOptions) => { liveWebsites.map((site) => queue.add(() => intrigueIdent(site))) ); - console.log(`IntrigueIdent finished for ${liveWebsites.length} domains`); + logger.info(`IntrigueIdent finished for ${liveWebsites.length} domains`); }; diff --git a/backend/src/tasks/lambda-client.ts b/backend/src/tasks/lambda-client.ts index 81e727ec..9ac849b2 100644 --- a/backend/src/tasks/lambda-client.ts +++ b/backend/src/tasks/lambda-client.ts @@ -1,5 +1,6 @@ import { Lambda } from 'aws-sdk'; import { handler as scheduler } from './scheduler'; +import logger from '../tools/lambda-logger'; /** * Lambda Client used to invoke lambda functions. @@ -24,7 +25,7 @@ class LambdaClient { }: { name: string; }): Promise { - console.log('Invoking lambda function ', name); + logger.info(`Invoking lambda function ${name}`); if (this.isLocal) { scheduler({}, {} as any, () => null); return { StatusCode: 202, Payload: '' }; diff --git a/backend/src/tasks/lookingGlass.ts b/backend/src/tasks/lookingGlass.ts index da37636b..4a5f626c 100644 --- a/backend/src/tasks/lookingGlass.ts +++ b/backend/src/tasks/lookingGlass.ts @@ -10,6 +10,7 @@ import { plainToClass } from 'class-transformer'; import saveVulnerabilitiesToDb from './helpers/saveVulnerabilitiesToDb'; import { exit } from 'process'; import saveDomainsToDb from './helpers/saveDomainsToDb'; +import logger from '../tools/lambda-logger'; interface LGCollectionsResponse { children: any[]; @@ -201,7 +202,7 @@ async function saveAndPullDomains( export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName, scanId } = commandOptions; - console.log('Running lookingGlass on organization', organizationName); + logger.info(`Running lookingGlass on organization ${organizationName}`); const collections: LGCollectionsResponse[] = await getCollectionForCurrentWorkspace(); @@ -223,7 +224,7 @@ export const handler = async (commandOptions: CommandOptions) => { // Only pull domains that have been seen in the last two months. const twoMonthsAgo = new Date(); twoMonthsAgo.setMonth(twoMonthsAgo.getMonth() - 2); - console.log(`Pulling domains seen since ${twoMonthsAgo}`); + logger.info(`Pulling domains seen since ${twoMonthsAgo}`); for (const l of data.results) { // Create a dictionary of relevant fields from the API request. const lastSeen = new Date(l.lastSeen); @@ -291,7 +292,7 @@ export const handler = async (commandOptions: CommandOptions) => { } await saveVulnerabilitiesToDb(vulnerabilities, false); - console.log('Vulnerabilities saved to db'); + logger.info('Vulnerabilities saved to db'); } } }; diff --git a/backend/src/tasks/makeGlobalAdmin.ts b/backend/src/tasks/makeGlobalAdmin.ts index b1067311..8862cb1e 100644 --- a/backend/src/tasks/makeGlobalAdmin.ts +++ b/backend/src/tasks/makeGlobalAdmin.ts @@ -1,8 +1,10 @@ import { Handler } from 'aws-lambda'; import { connectToDatabase, User, UserType } from '../models'; +import logger from '../tools/lambda-logger'; -export const handler: Handler = async (event) => { - await connectToDatabase(true); +export const handler: Handler = async (event, context) => { + logger.info('makeGlobalAdmin function started', { context }); + await connectToDatabase(); if (event.email) { const user = await User.findOne({ email: event.email @@ -12,4 +14,5 @@ export const handler: Handler = async (event) => { await User.save(user); } } + logger.info('Success', { context }); }; diff --git a/backend/src/tasks/portscanner.ts b/backend/src/tasks/portscanner.ts index 1521e2b2..af1be4f9 100644 --- a/backend/src/tasks/portscanner.ts +++ b/backend/src/tasks/portscanner.ts @@ -7,11 +7,12 @@ import * as portscanner from 'portscanner'; import getIps from './helpers/getIps'; import { CommandOptions } from './ecs-client'; import saveServicesToDb from './helpers/saveServicesToDb'; +import logger from '../tools/lambda-logger'; export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName } = commandOptions; - console.log('Running portscanner on organization', organizationName); + logger.info(`Running portscanner on organization ${organizationName}`); const domainsWithIPs = await getIps(organizationId); @@ -31,7 +32,7 @@ export const handler = async (commandOptions: CommandOptions) => { ); } } catch (e) { - console.error(e); + logger.error(JSON.stringify(e)); continue; } } @@ -39,5 +40,5 @@ export const handler = async (commandOptions: CommandOptions) => { await saveServicesToDb(services); - console.log(`Portscan finished for ${services.length} services`); + logger.info(`Portscan finished for ${services.length} services`); }; diff --git a/backend/src/tasks/rootDomainSync.ts b/backend/src/tasks/rootDomainSync.ts index d60fb9eb..216d0fce 100644 --- a/backend/src/tasks/rootDomainSync.ts +++ b/backend/src/tasks/rootDomainSync.ts @@ -4,16 +4,17 @@ import { Domain } from '../models'; import { CommandOptions } from './ecs-client'; import saveDomainsToDb from './helpers/saveDomainsToDb'; import * as dns from 'dns'; +import logger from '../tools/lambda-logger'; export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName } = commandOptions; - console.log('Syncing domains from', organizationName); + logger.info(`Syncing domains from ${organizationName}`); const rootDomains = await getRootDomains(organizationId!); const domains: Domain[] = []; for (const rootDomain of rootDomains) { - console.log(rootDomain); + logger.info(rootDomain); let ipAddress; try { ipAddress = (await dns.promises.lookup(rootDomain)).address; @@ -30,5 +31,5 @@ export const handler = async (commandOptions: CommandOptions) => { ); } await saveDomainsToDb(domains); - console.log(`Scan created/updated ${domains.length} new domains`); + logger.info(`Scan created/updated ${domains.length} new domains`); }; diff --git a/backend/src/tasks/s3-client.ts b/backend/src/tasks/s3-client.ts index 923713c8..1fda6f2d 100644 --- a/backend/src/tasks/s3-client.ts +++ b/backend/src/tasks/s3-client.ts @@ -1,4 +1,5 @@ import { S3 } from 'aws-sdk'; +import logger from '../tools/lambda-logger'; /** * S3 Client. Normally, interacts with S3. @@ -46,12 +47,12 @@ class S3Client { // Do this so exports are accessible when running locally. if (this.isLocal) { - console.log(url.replace('minio:9000', 'localhost:9000')); + logger.info(url.replace('minio:9000', 'localhost:9000')); return url.replace('minio:9000', 'localhost:9000'); } return url; } catch (e) { - console.error(e); + logger.error(e); throw e; } } @@ -70,11 +71,10 @@ class S3Client { } return url; } catch (e) { - console.error(e); + logger.error(e); throw e; } } - async listReports(orgId: string) { try { const params = { @@ -90,28 +90,7 @@ class S3Client { .promise(); return data.Contents; } catch (e) { - console.error(e); - throw e; - } - } - - async getEmailAsset(fileName: string) { - try { - const params = { - Bucket: process.env.EMAIL_BUCKET_NAME!, - Key: fileName - }; - - const data = await this.s3 - .getObject(params, function (err, data) { - if (err) throw err; - }) - .promise(); - if (data && data.Body) { - return data.Body.toString('utf-8'); - } - } catch (e) { - console.error(e); + logger.error(e); throw e; } } diff --git a/backend/src/tasks/saved-search.ts b/backend/src/tasks/saved-search.ts index cc63911b..2f4a805c 100644 --- a/backend/src/tasks/saved-search.ts +++ b/backend/src/tasks/saved-search.ts @@ -10,9 +10,10 @@ import { userTokenBody } from '../api/auth'; import { fetchAllResults } from '../api/search'; +import logger from '../tools/lambda-logger'; export const handler = async (commandOptions: CommandOptions) => { - console.log('Running saved search'); + logger.info('Running saved search'); await connectToDatabase(); const savedSearches = await SavedSearch.find(); @@ -44,7 +45,7 @@ export const handler = async (commandOptions: CommandOptions) => { const client = new ESClient(); searchResults = await client.searchDomains(request); } catch (e) { - console.error(e.meta.body.error); + logger.error(e.meta.body.error); continue; } const hits: number = searchResults.body.hits.total.value; @@ -67,5 +68,5 @@ export const handler = async (commandOptions: CommandOptions) => { } } - console.log(`Saved search finished for ${savedSearches.length} searches`); + logger.info(`Saved search finished for ${savedSearches.length} searches`); }; diff --git a/backend/src/tasks/scheduler.ts b/backend/src/tasks/scheduler.ts index b38ec833..ee392121 100644 --- a/backend/src/tasks/scheduler.ts +++ b/backend/src/tasks/scheduler.ts @@ -5,6 +5,7 @@ import { SCAN_SCHEMA } from '../api/scans'; import { In, IsNull, Not } from 'typeorm'; import getScanOrganizations from './helpers/getScanOrganizations'; import { chunk } from 'lodash'; +import logger from '../tools/lambda-logger'; class Scheduler { ecs: ECSClient; @@ -38,8 +39,8 @@ class Scheduler { this.maxConcurrentTasks = Number(process.env.FARGATE_MAX_CONCURRENCY!); this.orgsPerScanTask = orgsPerScanTask; - console.log('Number of running Fargate tasks: ', this.numExistingTasks); - console.log('Number of queued scan tasks: ', this.queuedScanTasks.length); + logger.info(`Number of running Fargate tasks: ${this.numExistingTasks}`); + logger.info(`Number of queued scan tasks: ${this.queuedScanTasks.length}`); } launchSingleScanTask = async ({ @@ -86,9 +87,8 @@ class Scheduler { if (!scanTask.queuedAt) { scanTask.queuedAt = new Date(); } - console.log( - 'Reached maximum concurrency, queueing scantask', - scanTask.id + logger.info( + `Reached maximum concurrency, queueing scantask ${scanTask.id}` ); await scanTask.save(); return; @@ -98,7 +98,7 @@ class Scheduler { if (type === 'fargate') { const result = await ecsClient.runCommand(commandOptions); if (result.tasks!.length === 0) { - console.error(result.failures); + logger.error(result.failures); throw new Error( `Failed to start fargate task for scan ${scan.name} -- got ${ result.failures!.length @@ -108,7 +108,7 @@ class Scheduler { const taskArn = result.tasks![0].taskArn; scanTask.fargateTaskArn = taskArn; if (typeof jest === 'undefined') { - console.log( + logger.info( `Successfully invoked ${scan.name} scan with fargate on ${organizations.length} organizations, with ECS task ARN ${taskArn}` + (commandOptions.numChunks ? `, Chunk ${commandOptions.chunkNumber}/${commandOptions.numChunks}` @@ -122,8 +122,8 @@ class Scheduler { scanTask.requestedAt = new Date(); this.numLaunchedTasks++; } catch (error) { - console.error(`Error invoking ${scan.name} scan.`); - console.error(error); + logger.error(`Error invoking ${scan.name} scan.`); + logger.error(error); scanTask.output = JSON.stringify(error); scanTask.status = 'failed'; scanTask.finishedAt = new Date(); @@ -144,8 +144,6 @@ class Scheduler { // For running server on localhost -- doesn't apply in jest tests, though. numChunks = 1; } - // Sanitizes numChunks to protect against arbitrarily large numbers - numChunks = numChunks > 100 ? 100 : numChunks; for (let chunkNumber = 0; chunkNumber < numChunks; chunkNumber++) { await this.launchSingleScanTask({ organizations, @@ -170,7 +168,7 @@ class Scheduler { const prev_numLaunchedTasks = this.numLaunchedTasks; if (!SCAN_SCHEMA[scan.name]) { - console.error('Invalid scan name ', scan.name); + logger.error(`Invalid scan name ${scan.name}`); continue; } const { global } = SCAN_SCHEMA[scan.name]; @@ -197,11 +195,8 @@ class Scheduler { await this.launchScanTask({ organizations: orgs, scan }); } } - console.log( - 'Launched', - this.numLaunchedTasks, - 'scanTasks for scan', - scan.name + logger.info( + `Launched ${this.numLaunchedTasks}scanTasks for scan ${scan.name}` ); // If at least 1 new scan task was launched for this scan, update the scan if (this.numLaunchedTasks > prev_numLaunchedTasks) { @@ -319,9 +314,9 @@ interface Event { orgsPerScanTask?: number; } -export const handler: Handler = async (event) => { +export const handler: Handler = async (event, context) => { await connectToDatabase(); - console.log('Running scheduler...'); + logger.info('Running scheduler...', { context }); const scanIds = event.scanIds || []; if (event.scanId) { @@ -350,6 +345,7 @@ export const handler: Handler = async (event) => { relations: ['scan'] }); + logger.info('Initializing...', { context }); const scheduler = new Scheduler(); await scheduler.initialize({ scans, @@ -362,5 +358,5 @@ export const handler: Handler = async (event) => { }); await scheduler.runQueued(); await scheduler.run(); - console.log('Finished running scheduler.'); + logger.info('Finished running scheduler.', { context }); }; diff --git a/backend/src/tasks/search-sync.ts b/backend/src/tasks/search-sync.ts index 3d674db8..217f0438 100644 --- a/backend/src/tasks/search-sync.ts +++ b/backend/src/tasks/search-sync.ts @@ -4,6 +4,7 @@ import { In } from 'typeorm'; import ESClient from './es-client'; import { chunk } from 'lodash'; import pRetry from 'p-retry'; +import logger from '../tools/lambda-logger'; /** * Chunk sizes. These values are small during testing to facilitate testing. @@ -13,7 +14,7 @@ export const DOMAIN_CHUNK_SIZE = typeof jest === 'undefined' ? 50 : 10; export const handler = async (commandOptions: CommandOptions) => { const { organizationId, domainId } = commandOptions; - console.log('Running searchSync'); + logger.info('Running searchSync'); await connectToDatabase(); const client = new ESClient(); @@ -40,7 +41,7 @@ export const handler = async (commandOptions: CommandOptions) => { } const domainIds = (await qs.getMany()).map((e) => e.id); - console.log(`Got ${domainIds.length} domains.`); + logger.info(`Got ${domainIds.length} domains.`); if (domainIds.length) { const domainIdChunks = chunk(domainIds, DOMAIN_CHUNK_SIZE); for (const domainIdChunk of domainIdChunks) { @@ -48,7 +49,7 @@ export const handler = async (commandOptions: CommandOptions) => { where: { id: In(domainIdChunk) }, relations: ['services', 'organization', 'vulnerabilities'] }); - console.log(`Syncing ${domains.length} domains...`); + logger.info(`Syncing ${domains.length} domains...`); await pRetry(() => client.updateDomains(domains), { retries: 3, randomize: true @@ -60,8 +61,8 @@ export const handler = async (commandOptions: CommandOptions) => { .where({ id: In(domains.map((e) => e.id)) }) .execute(); } - console.log('Domain sync complete.'); + logger.info('Domain sync complete.'); } else { - console.log('Not syncing any domains.'); + logger.info('Not syncing any domains.'); } }; diff --git a/backend/src/tasks/shodan.ts b/backend/src/tasks/shodan.ts index 1c72b27d..640fd67a 100644 --- a/backend/src/tasks/shodan.ts +++ b/backend/src/tasks/shodan.ts @@ -8,6 +8,7 @@ import axios from 'axios'; import pRetry from 'p-retry'; import { IpToDomainsMap, sanitizeStringField } from './censysIpv4'; import saveVulnerabilitiesToDb from './helpers/saveVulnerabilitiesToDb'; +import logger from '../tools/lambda-logger'; // Shodan allows searching up to 100 IPs at once const CHUNK_SIZE = 100; @@ -47,7 +48,7 @@ const sleep = (milliseconds) => { export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName } = commandOptions; - console.log('Running shodan on organization', organizationName); + logger.info(`Running shodan on organization ${organizationName}`); const domainsWithIPs = await getIps(organizationId); @@ -65,7 +66,7 @@ export const handler = async (commandOptions: CommandOptions) => { const chunks = chunk(domainsWithIPs, CHUNK_SIZE); for (const domainChunk of chunks) { - console.log( + logger.info( `Scanning ${domainChunk.length} domains beginning with ${domainChunk[0].name}` ); try { @@ -109,7 +110,7 @@ export const handler = async (commandOptions: CommandOptions) => { if (service.vulns) { const vulns: Vulnerability[] = []; for (const cve in service.vulns) { - // console.log('Creating vulnerability', cve); + // logger.info('Creating vulnerability', cve); vulns.push( plainToClass(Vulnerability, { domain: domain, @@ -136,11 +137,11 @@ export const handler = async (commandOptions: CommandOptions) => { } } } catch (e) { - console.error(e); + logger.error(JSON.stringify(e)); } await sleep(1000); // Wait for Shodan rate limit of 1 request / second } - console.log(`Shodan finished for ${domainsWithIPs.length} domains`); + logger.info(`Shodan finished for ${domainsWithIPs.length} domains`); }; diff --git a/backend/src/tasks/sslyze.ts b/backend/src/tasks/sslyze.ts index c6c13b7b..4f5ef6ab 100644 --- a/backend/src/tasks/sslyze.ts +++ b/backend/src/tasks/sslyze.ts @@ -2,6 +2,7 @@ import { CommandOptions } from './ecs-client'; import { getLiveWebsites, LiveDomain } from './helpers/getLiveWebsites'; import PQueue from 'p-queue'; import * as sslChecker from 'ssl-checker'; +import logger from '../tools/lambda-logger'; interface IResolvedValues { valid: boolean; @@ -21,7 +22,7 @@ const sslyze = async (domain: LiveDomain): Promise => { validTo: response.validTo, altNames: response.validFor }; - console.log( + logger.info( domain.name, ': valid', response.valid, @@ -32,18 +33,18 @@ const sslyze = async (domain: LiveDomain): Promise => { ); await domain.save(); } catch (e) { - console.error(domain.name, e); + logger.error(domain.name, JSON.stringify(e)); } }; export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName } = commandOptions; - console.log('Running sslyze on organization', organizationName); + logger.info(`Running sslyze on organization ${organizationName}`); const liveWebsites = await getLiveWebsites(organizationId!, [], true); const queue = new PQueue({ concurrency: 5 }); await Promise.all(liveWebsites.map((site) => queue.add(() => sslyze(site)))); - console.log(`sslyze finished for ${liveWebsites.length} domains`); + logger.info(`sslyze finished for ${liveWebsites.length} domains`); }; diff --git a/backend/src/tasks/syncdb.ts b/backend/src/tasks/syncdb.ts index 27738a5d..1c9d124a 100644 --- a/backend/src/tasks/syncdb.ts +++ b/backend/src/tasks/syncdb.ts @@ -5,53 +5,52 @@ import { Domain, Organization, OrganizationTag, + Scan, Vulnerability } from '../models'; import ESClient from './es-client'; import * as Sentencer from 'sentencer'; import * as services from './sample_data/services.json'; import * as cpes from './sample_data/cpes.json'; -import * as cves from './sample_data/cves.json'; import * as vulnerabilities from './sample_data/vulnerabilities.json'; import * as nouns from './sample_data/nouns.json'; import * as adjectives from './sample_data/adjectives.json'; -import { saveToDb } from './cve-sync'; import { sample } from 'lodash'; import { handler as searchSync } from './search-sync'; import { In } from 'typeorm'; +import logger from '../tools/lambda-logger'; const SAMPLE_TAG_NAME = 'Sample Data'; // Tag name for sample data const NUM_SAMPLE_ORGS = 10; // Number of sample orgs const NUM_SAMPLE_DOMAINS = 10; // Number of sample domains per org const PROB_SAMPLE_SERVICES = 0.5; // Higher number means more services per domain const PROB_SAMPLE_VULNERABILITIES = 0.5; // Higher number means more vulnerabilities per domain -const SAMPLE_STATES = ['VA', 'CA', 'CO']; -const SAMPLE_REGIONIDS = ['1', '2', '3']; -export const handler: Handler = async (event) => { +export const handler: Handler = async (event, context) => { const connection = await connectToDatabase(false); const type = event?.type || event; const dangerouslyforce = type === 'dangerouslyforce'; if (connection) { await connection.synchronize(dangerouslyforce); } else { - console.error('Error: could not sync'); + logger.error('Error: could not sync', { context }); } if (process.env.NODE_ENV !== 'test') { // Create indices on elasticsearch only when not using tests. const client = new ESClient(); if (dangerouslyforce) { - console.log('Deleting all data in elasticsearch...'); + logger.info('Deleting all data in elasticsearch...', { context }); await client.deleteAll(); - console.log('Done.'); + logger.info('Done.', { context }); } await client.syncDomainsIndex(); } if (type === 'populate') { - console.log('Populating the database with some sample data...'); - await saveToDb(cves); + logger.info('Populating the database with some sample data...', { + context + }); Sentencer.configure({ nounList: nouns, adjectiveList: adjectives, @@ -75,7 +74,6 @@ export const handler: Handler = async (event) => { } for (let i = 0; i <= NUM_SAMPLE_ORGS; i++) { const organization = await Organization.create({ - acronym: Math.random().toString(36).slice(2, 7), name: Sentencer.make('{{ adjective }} {{ entity }}').replace( /\b\w/g, (l) => l.toUpperCase() @@ -83,12 +81,9 @@ export const handler: Handler = async (event) => { rootDomains: ['crossfeed.local'], ipBlocks: [], isPassive: false, - tags: [tag], - state: SAMPLE_STATES[Math.floor(Math.random() * SAMPLE_STATES.length)], - regionId: - SAMPLE_REGIONIDS[Math.floor(Math.random() * SAMPLE_REGIONIDS.length)] + tags: [tag] }).save(); - console.log(organization.name); + logger.info(organization.name, { context }); organizationIds.push(organization.id); for (let i = 0; i <= NUM_SAMPLE_DOMAINS; i++) { const randomNum = () => Math.floor(Math.random() * 256); @@ -99,7 +94,7 @@ export const handler: Handler = async (event) => { subdomainSource: 'findomain', organization }).save(); - console.log(`\t${domain.name}`); + logger.info(`\t${domain.name}`, { context }); let service; for (const serviceData of services) { if (service && Math.random() < PROB_SAMPLE_SERVICES) continue; @@ -136,7 +131,7 @@ export const handler: Handler = async (event) => { } } - console.log('Done. Running search sync...'); + logger.info('Done. Running search sync...', { context }); for (const organizationId of organizationIds) { await searchSync({ organizationId, @@ -146,6 +141,6 @@ export const handler: Handler = async (event) => { scanTaskId: 'scanTaskId' }); } - console.log('Done.'); + logger.info('Done.', { context }); } }; diff --git a/backend/src/tasks/trustymail.ts b/backend/src/tasks/trustymail.ts index 35650893..7fa86da1 100644 --- a/backend/src/tasks/trustymail.ts +++ b/backend/src/tasks/trustymail.ts @@ -3,30 +3,31 @@ import { ChildProcessWithoutNullStreams, spawn } from 'child_process'; import { CommandOptions } from './ecs-client'; import saveTrustymailResultsToDb from './helpers/saveTrustymailResultsToDb'; import * as chokidar from 'chokidar'; +import logger from '../tools/lambda-logger'; // TODO: Retry failed domains // TODO: PSL is downloaded once per container (number of orgs / 2, rounded up); would like to download only once per day export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName } = commandOptions; - console.log('Running Trustymail on organization', organizationName); + logger.info(`Running Trustymail on organization ${organizationName}`); const domains = await getAllDomains([organizationId!]); const queue = new Set(domains.map((domain) => `${domain.id}.json`)); const failedDomains = new Set(); - console.log( + logger.info( `${organizationName} domains to be scanned:`, domains.map((domain) => domain.name) ); - console.log(`queue`, queue); + logger.info(`queue ${queue}`); for (const domain of domains) { const path = `${domain.id}.json`; // Event listener detects Trustymail results file at creation and syncs it to db chokidar.watch(path).on('add', (path) => { - console.log('Trustymail saved results to', path); - console.log(`Syncing ${path} to db...`); + logger.info(`Trustymail saved results to ${path}`); + logger.info(`Syncing ${path} to db...`); saveTrustymailResultsToDb(path).then(() => { - console.log(`Deleting ${path} and removing it from queue...`); + logger.info(`Deleting ${path} and removing it from queue...`); queue.delete(path); - console.log(`Items left in queue:`, queue); + logger.info(`Items left in queue: ${queue}`); }); }); try { @@ -36,7 +37,7 @@ export const handler = async (commandOptions: CommandOptions) => { `--output=${domain.id}`, '--psl-filename=public_suffix_list.dat' ]; - console.log('Running Trustymail with args:', args); + logger.info(`Running Trustymail with args: ${args}`); const child = spawn('trustymail', args, { stdio: 'pipe' }); addEventListenersToChildProcess( child, @@ -46,21 +47,20 @@ export const handler = async (commandOptions: CommandOptions) => { failedDomains ); } catch (e) { - console.error(e); + logger.error(JSON.stringify(e)); } } // Keep container alive while syncing results to db; timeout after 10 minutes (60 * 10 seconds) let dbSyncTimeout = 0; while (queue.size > 0 && dbSyncTimeout < 60) { - console.log('Syncing...'); + logger.info('Syncing...'); await delay(1000 * 2); dbSyncTimeout++; } - console.log( + logger.info( `Trustymail successfully scanned ${ domains.length - failedDomains.size - } out of ${domains.length} domains \n failed domains:`, - failedDomains + } out of ${domains.length} domains \n failed domains: ${failedDomains}` ); }; @@ -76,25 +76,22 @@ function addEventListenersToChildProcess( failedDomains: Set ) { child.stdout.on('data', (data) => { - console.log(`${domain.name} (${domain.id}) stdout: ${data}`); + logger.info(`${domain.name} (${domain.id}) stdout: ${data}`); }); child.on('spawn', () => { - console.log( + logger.info( `Spawned ${domain.name} (${domain.id}) Trustymail child process` ); }); child.on('error', (err) => - console.error( + logger.error( `Error with Trustymail ${domain.name} (${domain.id}) child process:`, - err + JSON.stringify(err) ) ); child.on('exit', (code, signal) => { - console.log( - `Trustymail child process ${domain.name} (${domain.id}) exited with code`, - code, - 'and signal', - signal + logger.info( + `Trustymail child process ${domain.name} (${domain.id}) exited with code ${code} and signal ${signal}` ); if (code !== 0) { queue.delete(path); diff --git a/backend/src/tasks/updateScanTaskStatus.ts b/backend/src/tasks/updateScanTaskStatus.ts index 6d5e195b..a4b302cc 100644 --- a/backend/src/tasks/updateScanTaskStatus.ts +++ b/backend/src/tasks/updateScanTaskStatus.ts @@ -2,6 +2,7 @@ import { Handler } from 'aws-lambda'; import { connectToDatabase, ScanTask } from '../models'; import { Task } from 'aws-sdk/clients/ecs'; import pRetry from 'p-retry'; +import logger from '../tools/lambda-logger'; export type EventBridgeEvent = { detail: Task & { @@ -51,7 +52,7 @@ export const handler: Handler = async ( } else { return; } - console.log( + logger.info( `Updating status of ScanTask ${scanTask.id} from ${oldStatus} to ${scanTask.status}.` ); await scanTask.save(); diff --git a/backend/src/tasks/wappalyzer.ts b/backend/src/tasks/wappalyzer.ts index 91d0c273..ed0cf3e2 100644 --- a/backend/src/tasks/wappalyzer.ts +++ b/backend/src/tasks/wappalyzer.ts @@ -3,10 +3,11 @@ import { CommandOptions } from './ecs-client'; import { getLiveWebsites, LiveDomain } from './helpers/getLiveWebsites'; import PQueue from 'p-queue'; import { wappalyzer } from './helpers/simple-wappalyzer'; +import logger from '../tools/lambda-logger'; const wappalyze = async (domain: LiveDomain): Promise => { try { - console.log(`Executing wapplyzer on ${domain.url}`); + logger.info(`Executing wapplyzer on ${domain.url}`); const { data, status, headers } = await axios.get(domain.url, { timeout: 10000, @@ -23,17 +24,17 @@ const wappalyze = async (domain: LiveDomain): Promise => { if (filteredResults.length > 0) { domain.service.wappalyzerResults = filteredResults; await domain.service.save(); - console.log( + logger.info( `${domain.url} - ${filteredResults.length} technology matches saved.` ); } else { - console.log( + logger.info( `${domain.url} - there were no technology matches for domain.` ); } } } else { - console.log( + logger.info( `${domain.url} returned and HTTP error code. HTTPStatusCode: ${status}` ); } @@ -42,24 +43,24 @@ const wappalyze = async (domain: LiveDomain): Promise => { const error = e as AxiosError; if (error.response) { // a response was received but we failed after the response - console.error(`${domain.url} returned error. + logger.error(`${domain.url} returned error. Code: ${error.code}. Response: ${error.response}`); } else if (error.code === 'ECONNABORTED') { // request timed out - console.error( + logger.error( `${domain.url} domain did not respond in a timely manner: ${error.message}` ); } else { // other errors - console.error( + logger.error( `${domain.url} - Axios unexpected error. Code (if any): ${error.code}. Error: ${JSON.stringify(error, null, 4)}` ); } } else { - console.error( + logger.error( `${domain.url} - Unknown unexpected error. Type: ${e.typeof}. Error: ${JSON.stringify(e, null, 4)}` @@ -71,7 +72,7 @@ const wappalyze = async (domain: LiveDomain): Promise => { export const handler = async (commandOptions: CommandOptions) => { const { organizationId, organizationName } = commandOptions; - console.log(`Running wappalyzer on organization ${organizationName}`); + logger.info(`Running wappalyzer on organization ${organizationName}`); const liveWebsites = await getLiveWebsites(organizationId!); const queue = new PQueue({ concurrency: 5 }); @@ -79,7 +80,7 @@ export const handler = async (commandOptions: CommandOptions) => { liveWebsites.map((site) => queue.add(() => wappalyze(site))) ); - console.log( + logger.info( `Wappalyzer finished for organization ${organizationName} on ${liveWebsites.length} domains` ); }; diff --git a/backend/src/tasks/webscraper.ts b/backend/src/tasks/webscraper.ts index d1a2240a..fa296276 100644 --- a/backend/src/tasks/webscraper.ts +++ b/backend/src/tasks/webscraper.ts @@ -16,6 +16,7 @@ import PQueue from 'p-queue'; import { chunk } from 'lodash'; import { In } from 'typeorm'; import getScanOrganizations from './helpers/getScanOrganizations'; +import logger from '../tools/lambda-logger'; const WEBSCRAPER_DIRECTORY = '/app/worker/webscraper'; const INPUT_PATH = path.join(WEBSCRAPER_DIRECTORY, 'domains.txt'); @@ -58,13 +59,13 @@ export const handler = async (commandOptions: CommandOptions) => { const organizationIds = ( chunk(organizations, numChunks)[chunkNumber!] || [] ).map((e) => e.id); - console.log('Running webscraper on organizations ', organizationIds); + logger.info(`Running webscraper on organizations ${organizationIds}`); const liveWebsites = await getLiveWebsites(undefined, organizationIds); const urls = liveWebsites.map((domain) => domain.url); - console.log('input urls', urls); + logger.info(`input urls ${urls}`); if (urls.length === 0) { - console.log('no urls, returning'); + logger.info('no urls, returning'); return; } @@ -101,14 +102,14 @@ export const handler = async (commandOptions: CommandOptions) => { }); await new Promise((resolve, reject) => { - console.log('Going to save webpages to the database...'); + logger.info('Going to save webpages to the database...'); let scrapedWebpages: ScraperItem[] = []; readInterfaceStderr.on('line', (line) => - console.error(line?.substring(0, 999)) + logger.error(line?.substring(0, 999)) ); readInterface.on('line', async (line) => { if (!line?.trim() || line.indexOf('database_output: ') === -1) { - console.log(line); + logger.info(line); return; } const item: ScraperItem = JSON.parse( @@ -118,7 +119,7 @@ export const handler = async (commandOptions: CommandOptions) => { ); const domain = liveWebsitesMap[item.domain_name]; if (!domain) { - console.error( + logger.error( `No corresponding domain found for item with domain_name ${item.domain_name}.` ); return; @@ -134,7 +135,7 @@ export const handler = async (commandOptions: CommandOptions) => { if (scrapedWebpages.length === 0) { return; } - console.log( + logger.info( `Saving ${scrapedWebpages.length} webpages, starting with ${scrapedWebpages[0].url}...` ); await saveWebpagesToDb(scrapedWebpages); @@ -147,7 +148,7 @@ export const handler = async (commandOptions: CommandOptions) => { readInterface.on('close', async () => { await queue.onIdle(); if (scrapedWebpages.length > 0) { - console.log( + logger.info( `Saving ${scrapedWebpages.length} webpages to the database...` ); await saveWebpagesToDb(scrapedWebpages); @@ -160,7 +161,7 @@ export const handler = async (commandOptions: CommandOptions) => { readInterface.on('SIGCONT', reject); readInterface.on('SIGTSTP', reject); }); - console.log( + logger.info( `Webscraper finished for ${liveWebsites.length} domains, saved ${totalNumWebpages} webpages in total` ); }; diff --git a/backend/src/tools/lambda-logger.js b/backend/src/tools/lambda-logger.js new file mode 100644 index 00000000..90c7d770 --- /dev/null +++ b/backend/src/tools/lambda-logger.js @@ -0,0 +1,40 @@ +// logger.js +import { createLogger, transports, format } from 'winston'; + +/** + * Initializes custom logger for Cloudwatch + */ + +// Define a custom format to uppercase the level +const uppercaseLevelFormat = format((info) => { + info.level = info.level.toUpperCase(); + return info; +}); + +// Middleware function to add RequestId +const addRequestId = format((info) => { + // Extract requestId from the context + const requestId = info.context?.awsRequestId; + if (requestId) { + info.requestId = requestId; + } + return info; +}); + +// Configure Winston logger +const logger = createLogger({ + format: format.combine( + format.timestamp(), + uppercaseLevelFormat(), + addRequestId(), + format.printf( + (info) => + `${info.level} RequestId: ${info.requestId || 'undefined'} ${ + info.timestamp + } ${info.message}` + ) + ), + transports: [new transports.Console()] +}); + +export default logger; diff --git a/backend/worker/shodan.sh b/backend/worker/shodan.sh deleted file mode 100644 index d73535fa..00000000 --- a/backend/worker/shodan.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -set -e - -cd /app/pe-reports - -echo "Starting Shodan" - -pe-source shodan --orgs=DHS --soc_med_included - -echo "Done" \ No newline at end of file diff --git a/backend/worker/worker-entry.sh b/backend/worker/worker-entry.sh index 2a510ab8..56e57b13 100755 --- a/backend/worker/worker-entry.sh +++ b/backend/worker/worker-entry.sh @@ -5,7 +5,7 @@ set -e PROXY_PORT=8080 # Reduce some long and unnecessary tabular output from pm2 with grep -pm2 start --interpreter none --error ~/pm2-error.log mitmdump -- -s worker/mitmproxy_sign_requests.py --set stream_large_bodies=1 --listen-port $PROXY_PORT | grep "^\[PM2\]" +pm2 start --interpreter none --error ~/pm2-error.log mitmdump -- -s worker/mitmproxy_sign_requests.py --set stream_large_bodies=1 --listen-port $PROXY_PORT --mode upstream:http://proxy.lz.us-cert.gov:8080 | grep "^\[PM2\]" wait-port $PROXY_PORT -t 5000 || pm2 logs diff --git a/docs/package-lock.json b/docs/package-lock.json index 671872ba..db14dc7f 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -9,25 +9,25 @@ "version": "1.0.0", "hasInstallScript": true, "dependencies": { + "@babel/eslint-parser": "^7.22.5", "@reach/router": "^1.3.4", + "@typescript-eslint/eslint-plugin": "^5.59.0", + "@typescript-eslint/parser": "^5.59.0", "clipboardy": "^3.0.0", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", "resolve-url-loader": "^5.0.0", "swagger-jsdoc": "^5.0.1" }, "devDependencies": { - "@babel/eslint-parser": "^7.22.5", "@fortawesome/fontawesome-svg-core": "^1.2.32", "@fortawesome/free-solid-svg-icons": "^5.15.1", "@fortawesome/react-fontawesome": "^0.2.0", - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", "classnames": "^2.2.6", "eslint-config-react-app": "^7.0.1", - "eslint-plugin-flowtype": "^8.0.3", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", "gatsby": "^5.9.0", "gatsby-cli": "^5.9.0", "gatsby-plugin-manifest": "^5.9.0", @@ -56,20 +56,10 @@ "node": ">=18.0.0" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -220,48 +210,44 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", + "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/highlight": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", + "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", + "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.5", + "@babel/parser": "^7.22.5", "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "json5": "^2.2.2", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -272,30 +258,28 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.11.tgz", - "integrity": "sha512-YjOYZ3j7TjV8OhLW6NCtyg8G04uStATEUe5eiLuCZaXz2VSDQ3dsAtm2D+TuQyAqNMUK2WacGo0/uma9Pein1w==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.5.tgz", + "integrity": "sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" + "semver": "^6.3.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, "peerDependencies": { - "@babel/core": "^7.11.0", + "@babel/core": ">=7.11.0", "eslint": "^7.5.0 || ^8.0.0" } }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", + "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", "dependencies": { - "@babel/types": "^7.23.0", + "@babel/types": "^7.22.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -308,7 +292,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -317,37 +300,39 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz", - "integrity": "sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", + "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", "dev": true, "dependencies": { - "@babel/types": "^7.22.10" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", + "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", "dependencies": { - "@babel/compat-data": "^7.22.9", + "@babel/compat-data": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "browserslist": "^4.21.3", "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz", - "integrity": "sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.5.tgz", + "integrity": "sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -355,10 +340,10 @@ "@babel/helper-function-name": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" + "@babel/helper-split-export-declaration": "^7.22.5", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -368,14 +353,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", - "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.5.tgz", + "integrity": "sha512-1VpEFOIbMRaXyDeUwUfmTIxExLwQ+zkW+Bh5zXpApA3oQedBx9v/updixWxnx/bZpKw7u8VxWjb/qWpIcmPq8A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", - "semver": "^6.3.1" + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -385,38 +370,37 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", - "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.0.tgz", + "integrity": "sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.14.2", + "semver": "^6.1.2" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.4.0-0" } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -426,7 +410,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -450,7 +433,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -459,22 +441,21 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", + "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", "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/helper-split-export-declaration": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { @@ -493,20 +474,20 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", - "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.5.tgz", + "integrity": "sha512-cU0Sq1Rf4Z55fgz7haOakIyM7+x/uCFwXpLPaeRzfoUtAEAuUZjZvFPjL/rk5rW693dIgn2hng1W7xbT7lWT4g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-wrap-function": "^7.22.9" + "@babel/helper-wrap-function": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -516,27 +497,26 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", - "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.5.tgz", + "integrity": "sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-member-expression-to-functions": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-simple-access": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, "dependencies": { "@babel/types": "^7.22.5" }, @@ -557,10 +537,9 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", + "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", "dependencies": { "@babel/types": "^7.22.5" }, @@ -572,16 +551,14 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "engines": { "node": ">=6.9.0" } @@ -590,47 +567,45 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", - "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.5.tgz", + "integrity": "sha512-bYqLIBSEshYcYQyfks8ewYA8S30yaGSeRslcvKMvoUk6HHPySbxHq9YRi6ghhzEU+yhQv9bP/jXnygkStOcqZw==", "dev": true, "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.5", - "@babel/types": "^7.22.10" + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", + "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", "dependencies": { "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", - "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", + "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.4.2", + "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, "engines": { @@ -638,10 +613,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", + "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", "bin": { "parser": "bin/babel-parser.js" }, @@ -698,16 +672,16 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.10.tgz", - "integrity": "sha512-KxN6TqZzcFi4uD3UifqXElBTBNLAEH1l3vzMQj6JwJZbL2sZlThxSViOKCYY+4Ah4V4JhQ95IVB7s/Y6SJSlMQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.5.tgz", + "integrity": "sha512-h8hlezQ4dl6ixodgXkH8lUfcD7x+WAuIqPUjwGoItynrXOAv4a4Tci1zA/qjzQjjcl0v3QpLdc2LM6ZACQuY7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.10", + "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/plugin-syntax-decorators": "^7.22.10" + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/plugin-syntax-decorators": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -812,6 +786,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -852,9 +842,9 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz", - "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.5.tgz", + "integrity": "sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -894,7 +884,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz", "integrity": "sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -963,7 +952,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1123,14 +1111,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.11.tgz", - "integrity": "sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.5.tgz", + "integrity": "sha512-gGOEvFzm3fWoyD5uZq7vVTD57pPJ3PczPUD/xCFGjzBpUosnklmXyKnGQbbbGs1NPNPskFex0j93yKbHt0cHyg==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/helper-remap-async-to-generator": "^7.22.5", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1173,9 +1161,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", - "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", + "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1204,12 +1192,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", + "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -1221,19 +1209,19 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", - "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.5.tgz", + "integrity": "sha512-2edQhLfibpWpsVBx2n/GKOz6JdGQvLruZQfGr9l1qes2KQaWswjBzhQF7UDUZMNaMMQeYnQzxwOMPsbYF7wqPQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-compilation-targets": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-function-name": "^7.22.5", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-split-export-declaration": "^7.22.5", "globals": "^11.1.0" }, "engines": { @@ -1260,9 +1248,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", - "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", + "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1306,9 +1294,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", + "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1338,9 +1326,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", + "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1402,9 +1390,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", + "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1433,9 +1421,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", + "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1480,12 +1468,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.11.tgz", - "integrity": "sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1497,13 +1485,13 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz", - "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.5" }, @@ -1562,9 +1550,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", + "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1578,9 +1566,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", + "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1594,13 +1582,13 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.11.tgz", - "integrity": "sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", + "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.22.5" @@ -1629,9 +1617,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", + "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1645,9 +1633,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.22.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.12.tgz", - "integrity": "sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.5.tgz", + "integrity": "sha512-AconbMKOMkyG+xCng2JogMCDcqW8wedQAqpVIL4cOSescZ7+iW8utC6YDZLMCSUIReEA733gzRSaOSXMAt/4WQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1693,13 +1681,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", + "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -1744,7 +1732,6 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", - "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-module-imports": "^7.22.5", @@ -1791,13 +1778,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", + "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" + "regenerator-transform": "^0.15.1" }, "engines": { "node": ">=6.9.0" @@ -1822,17 +1809,17 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.10.tgz", - "integrity": "sha512-RchI7HePu1eu0CYNKHHHQdfenZcM4nz8rew5B1VWqeRKdcwW5aQ5HeG9eTUbWiAS1UrmHVLmoxTWHt3iLD/NhA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.5.tgz", + "integrity": "sha512-bg4Wxd1FWeFx3daHFTWk1pkSWK/AyQuiyAoeZAOkAOUBjnZPH6KT7eMxouV47tQ6hl6ax2zyAWBdWZXbrvXlaw==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "semver": "^6.3.1" + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -1918,13 +1905,13 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.11.tgz", - "integrity": "sha512-0E4/L+7gfvHub7wsbTv03oRtD69X31LByy44fGmFzbZScpupFByMcgCJ0VbBTkzyjSJKuRoGN8tcijOWKTmqOA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.5.tgz", + "integrity": "sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.22.5" }, @@ -1936,9 +1923,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", + "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1999,13 +1986,13 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.10.tgz", - "integrity": "sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.5.tgz", + "integrity": "sha512-fj06hw89dpiZzGZtxn+QybifF07nNiZjZ7sazs2aVDcysAZVGjW7+7iFYxg6GLNM47R/thYfLdrXc+2f11Vi9A==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.10", + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", @@ -2030,15 +2017,15 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.10", + "@babel/plugin-transform-async-generator-functions": "^7.22.5", "@babel/plugin-transform-async-to-generator": "^7.22.5", "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.10", + "@babel/plugin-transform-block-scoping": "^7.22.5", "@babel/plugin-transform-class-properties": "^7.22.5", "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-classes": "^7.22.5", "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.10", + "@babel/plugin-transform-destructuring": "^7.22.5", "@babel/plugin-transform-dotall-regex": "^7.22.5", "@babel/plugin-transform-duplicate-keys": "^7.22.5", "@babel/plugin-transform-dynamic-import": "^7.22.5", @@ -2061,29 +2048,29 @@ "@babel/plugin-transform-object-rest-spread": "^7.22.5", "@babel/plugin-transform-object-super": "^7.22.5", "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.10", + "@babel/plugin-transform-optional-chaining": "^7.22.5", "@babel/plugin-transform-parameters": "^7.22.5", "@babel/plugin-transform-private-methods": "^7.22.5", "@babel/plugin-transform-private-property-in-object": "^7.22.5", "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-regenerator": "^7.22.5", "@babel/plugin-transform-reserved-words": "^7.22.5", "@babel/plugin-transform-shorthand-properties": "^7.22.5", "@babel/plugin-transform-spread": "^7.22.5", "@babel/plugin-transform-sticky-regex": "^7.22.5", "@babel/plugin-transform-template-literals": "^7.22.5", "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", "@babel/plugin-transform-unicode-property-regex": "^7.22.5", "@babel/plugin-transform-unicode-regex": "^7.22.5", "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.22.10", - "babel-plugin-polyfill-corejs2": "^0.4.5", - "babel-plugin-polyfill-corejs3": "^0.8.3", - "babel-plugin-polyfill-regenerator": "^0.5.2", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.3", + "babel-plugin-polyfill-corejs3": "^0.8.1", + "babel-plugin-polyfill-regenerator": "^0.5.0", + "core-js-compat": "^3.30.2", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -2093,17 +2080,19 @@ } }, "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-react": { @@ -2127,16 +2116,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.11.tgz", - "integrity": "sha512-tWY5wyCZYBGY7IlalfKI1rLiGlIfnwsRHZqlky0HVv8qviwQ1Uo/05M6+s+TcTCVa6Bmoo2uJW5TMFX6Wa4qVg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz", + "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.5", "@babel/plugin-syntax-jsx": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.11", - "@babel/plugin-transform-typescript": "^7.22.11" + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-typescript": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2152,58 +2141,55 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz", - "integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", + "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", "dependencies": { - "regenerator-runtime": "^0.14.0" + "regenerator-runtime": "^0.13.11" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.11.tgz", - "integrity": "sha512-NhfzUbdWbiE6fCFypbWCPu6AR8xre31EOPF7wwAIJEvGQ2avov04eymayWinCuyXmV1b0+jzoXP/HYzzUYdvwg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.5.tgz", + "integrity": "sha512-TNPDN6aBFaUox2Lu+H/Y1dKKQgr4ucz/FGyCz67RVYLsBpVpUFf1dDngzg+Od8aqbrqwyztkaZjtWCZEUOT8zA==", "dev": true, "dependencies": { "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" + "regenerator-runtime": "^0.13.11" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", + "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", "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/code-frame": "^7.22.5", + "@babel/generator": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", "@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", + "@babel/helper-split-export-declaration": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2212,13 +2198,12 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2244,7 +2229,6 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, "dependencies": { "eslint-visitor-keys": "^3.3.0" }, @@ -2256,10 +2240,9 @@ } }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2268,24 +2251,22 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz", - "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==", - "dev": true, + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dev": true, + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", + "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", + "espree": "^9.5.2", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -2301,10 +2282,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", - "dev": true, + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "peer": true, "dependencies": { "type-fest": "^0.20.2" @@ -2317,10 +2297,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", - "dev": true, + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", + "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2376,15 +2355,15 @@ } }, "node_modules/@gatsbyjs/parcel-namer-relative-to-cwd": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-2.12.0.tgz", - "integrity": "sha512-ENTps2Fg3EMy5WyTrX3TY62McmZcyhJbU/rD90UTyqZnB9XbuEFNW72Ya6qH0jXMPV7tcxNeD2P7HijuJ1O5lQ==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-2.10.0.tgz", + "integrity": "sha512-HRHJua+grDQbYYg7jeOecT0CwVrDTalZq8Zq9leyszF5PlaVx/4IjXovoO4DwY0LNvRXIBk0vYAozuMB4yGqBQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", "@parcel/namer-default": "2.8.3", "@parcel/plugin": "2.8.3", - "gatsby-core-utils": "^4.12.0" + "gatsby-core-utils": "^4.10.0" }, "engines": { "node": ">=18.0.0", @@ -2893,7 +2872,6 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -2908,7 +2886,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, "peer": true, "engines": { "node": ">=12.22" @@ -2921,28 +2898,27 @@ "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@sinclair/typebox": "^0.25.16" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", + "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -3027,7 +3003,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3038,10 +3013,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "engines": { "node": ">=6.0.0" } @@ -3050,15 +3024,14 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -3068,19 +3041,22 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", - "dev": true, + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, "node_modules/@jsdevtools/ono": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", @@ -3275,7 +3251,6 @@ "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, "dependencies": { "eslint-scope": "5.1.1" } @@ -3284,7 +3259,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3297,7 +3271,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -3306,7 +3279,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3617,9 +3589,9 @@ } }, "node_modules/@parcel/core/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, "bin": { "semver": "bin/semver" @@ -3869,9 +3841,9 @@ } }, "node_modules/@parcel/node-resolver-core/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, "bin": { "semver": "bin/semver" @@ -3925,9 +3897,9 @@ } }, "node_modules/@parcel/package-manager/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, "bin": { "semver": "bin/semver" @@ -3957,9 +3929,9 @@ } }, "node_modules/@parcel/packager-js/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -4101,16 +4073,10 @@ "@parcel/core": "^2.8.3" } }, - "node_modules/@parcel/transformer-js/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, "node_modules/@parcel/transformer-js/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, "bin": { "semver": "bin/semver" @@ -4242,51 +4208,17 @@ } }, "node_modules/@parcel/watcher": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", - "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.1.0.tgz", + "integrity": "sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==", "dev": true, "hasInstallScript": true, "dependencies": { - "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.3.0", - "@parcel/watcher-darwin-arm64": "2.3.0", - "@parcel/watcher-darwin-x64": "2.3.0", - "@parcel/watcher-freebsd-x64": "2.3.0", - "@parcel/watcher-linux-arm-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-musl": "2.3.0", - "@parcel/watcher-linux-x64-glibc": "2.3.0", - "@parcel/watcher-linux-x64-musl": "2.3.0", - "@parcel/watcher-win32-arm64": "2.3.0", - "@parcel/watcher-win32-ia32": "2.3.0", - "@parcel/watcher-win32-x64": "2.3.0" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", - "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], "engines": { "node": ">= 10.0.0" }, @@ -4295,254 +4227,34 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", - "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", - "cpu": [ - "arm64" - ], + "node_modules/@parcel/workers": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.8.3.tgz", + "integrity": "sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@parcel/diagnostic": "2.8.3", + "@parcel/logger": "2.8.3", + "@parcel/types": "2.8.3", + "@parcel/utils": "2.8.3", + "chrome-trace-event": "^1.0.2", + "nullthrows": "^1.1.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.8.3" } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", - "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", - "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", - "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", - "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", - "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", - "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", - "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", - "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", - "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", - "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/workers": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.8.3.tgz", - "integrity": "sha512-+AxBnKgjqVpUHBcHLWIHcjYgKIvHIpZjN33mG5LG9XXvrZiqdWvouEzqEXlVLq5VzzVbKIQQcmsvRy138YErkg==", - "dev": true, - "dependencies": { - "@parcel/diagnostic": "2.8.3", - "@parcel/logger": "2.8.3", - "@parcel/types": "2.8.3", - "@parcel/utils": "2.8.3", - "chrome-trace-event": "^1.0.2", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "peerDependencies": { - "@parcel/core": "^2.8.3" - } - }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", - "integrity": "sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==", + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", + "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==", "dev": true, "dependencies": { "ansi-html-community": "^0.0.8", @@ -4562,7 +4274,7 @@ "@types/webpack": "4.x || 5.x", "react-refresh": ">=0.10.0 <1.0.0", "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <5.0.0", + "type-fest": ">=0.17.0 <4.0.0", "webpack": ">=4.43.0 <6.0.0", "webpack-dev-server": "3.x || 4.x", "webpack-hot-middleware": "2.x", @@ -4617,9 +4329,9 @@ "dev": true }, "node_modules/@pnpm/npm-conf": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", - "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.0.tgz", + "integrity": "sha512-roLI1ul/GwzwcfcVpZYPdrgW2W/drLriObl1h+yLF5syc8/5ULWw2ALbCHUWF+4YltIqA3xFSbG4IwyJz37e9g==", "dev": true, "dependencies": { "@pnpm/config.env-replace": "^1.1.0", @@ -4646,9 +4358,9 @@ } }, "node_modules/@rushstack/eslint-patch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", - "integrity": "sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.1.tgz", + "integrity": "sha512-RkmuBcqiNioeeBKbgzMlOdreUkJfYaSjwgx9XDgGGpjvWgyaxWvDmZVSN9CS6LjEASadhgPv2BcFp+SeouWXXA==", "dev": true }, "node_modules/@sideway/address": { @@ -4673,9 +4385,9 @@ "dev": true }, "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", "dev": true }, "node_modules/@sindresorhus/is": { @@ -4750,361 +4462,359 @@ "dev": true }, "node_modules/@swagger-api/apidom-ast": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-0.75.0.tgz", - "integrity": "sha512-IOAVA835ZuNFR23Tpca/q1FUyv4cQ8c4nnN3NsmXU+rLP+qrhsyyqkUa0pRAMvE77EfZfOcfJpUo0WTYozPTag==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-0.70.0.tgz", + "integrity": "sha512-zQ1RUkXjx5NPYv1bmkoXwlQi7oJC7DJqYi0syTQKswJZDbOkHCwz8cDP/YystOEOL+yyIN7i5EQBIHfy5yAMmA==", "dev": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@types/ramda": "~0.29.3", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2", - "unraw": "^3.0.0" + "unraw": "^2.0.1" } }, "node_modules/@swagger-api/apidom-core": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-0.75.0.tgz", - "integrity": "sha512-DuWQm0YYhBhEDX/u8EbLtKhWpgrk7+DjYD6WYh8emt6eZGpRuVWDABPN6LXZy4BpQ60Fy0aBSZaSf5C+404LCw==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-0.70.0.tgz", + "integrity": "sha512-nUw0aehnhm2BUd17pbCLUuyd4E5bsn+K3teYLGs8Z/LGo9gpjZ/BMTL3H/3+F42ZRux79/3b6QksDj4f9yeSpg==", "dev": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-ast": "^0.70.0", + "@types/ramda": "~0.29.1", "minim": "~0.23.8", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "short-unique-id": "^4.4.4", "stampit": "^4.3.2" } }, "node_modules/@swagger-api/apidom-json-pointer": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.75.0.tgz", - "integrity": "sha512-BdwXIHA3Ulmdik3bOzvX2n320fDcdOX+GO0eUG2Ewi7OHI5gQEQZdkeGONF6PFpG5M5afKYnduYOxkz4MPQEjA==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.70.0.tgz", + "integrity": "sha512-6MSgWgl1juBMiK4lFp/IBuWO21FB6dm+T9PnRIl2D8tSESndhNHfk3EPkfrfXDOtCK2gqij52w9JorRKEfxfWw==", "dev": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-ns-api-design-systems": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.75.0.tgz", - "integrity": "sha512-3+2w4WJ5iHeTeI5Go3T1kbpHUVeTd/GGrbjP5YpD8FGeW5aNodRnMZi5DnmPZ1jqJJT6JLLxQWTubFnd3v1ksQ==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.70.0.tgz", + "integrity": "sha512-CA/5cyLWr1lC4oqoEm3BNbQ7ZLXQWhCK6ddTGckgrFNj4j6TxJycC83JGFvt8K2M9uSNRTh7t6b1o1kRzQ+Scg==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2" } }, "node_modules/@swagger-api/apidom-ns-asyncapi-2": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.75.0.tgz", - "integrity": "sha512-W+EifcReXeNTaDlp75+sX5Ev3upkT1aZ3D1HLSKhGyi3weuOcPFYc7PTDVmoDJTSCch4NFXIFrAEvRNNxzhHvA==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.70.0.tgz", + "integrity": "sha512-P7r6LZR1o8BVGcY+j4HWWlIk1XhP8H2tL7XCHJ3fmYCgqrbdyo3pJxZujfddbvI/TT4/8YMfq2fat6MMu0DhfQ==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-json-schema-draft-7": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-json-schema-draft-7": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.75.0.tgz", - "integrity": "sha512-DjkbOjeqz5AYr6PWFWSPb4hKiVFUpB0iRdZEtPOU4YKd9lSImDe4rnob2uDDJR5uQV6FoG2BAVRTckEvPQa0+g==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.70.0.tgz", + "integrity": "sha512-Y8O8Xl4P2cKDIunsvDV5Gvq+BVN/uIN5rJ5axHsZt0PL1D0c2Ypu6uCBDNb6iPdUZ3REpzemYNi2eZanL5gKtQ==", "dev": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.75.0", - "@swagger-api/apidom-core": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.75.0.tgz", - "integrity": "sha512-sDQLgRpjRUons2B8s3fvRZXCS4Zg5gC3zhkuQmh4a1Uu+Fu+QG2wQ/WY5Q7MBj6G8QL2wnxihCYOdTd9IpA/Xg==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.70.0.tgz", + "integrity": "sha512-xaYZ7NeivNZreYzaufNLpxAqusjAXji8Ls+HArzgZWdpjddnN2wvHDEkF8gPBdYMRWiXWLKzXFey/ZhOSwLi9Q==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.75.0.tgz", - "integrity": "sha512-P0g0J16QmAO4Tjd8E1Gi7ESlEcyouq3CaYVZ0Rz1KSNNi9nkUOKTd4/i1LSTgKQHs86U4WlJFSk6iQxfkzhgcQ==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.70.0.tgz", + "integrity": "sha512-yy1cha8GiIHBfhK31ycTSd3UwWzQGjWcSLAl7dfT/UpemcHn4wGzJtoFx+tqpGHwpUie3qpEm7ReLRrYzeg0Ew==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-json-schema-draft-6": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-json-schema-draft-6": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2" } }, "node_modules/@swagger-api/apidom-ns-openapi-3-0": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.75.0.tgz", - "integrity": "sha512-ndJC9QeIIMeK2WpeJeEGUuwcmDXXuEtOKl9GCX4sbXicZbI00cv7FJCJeFPL7QdVsHFfAm+e9DbDgn1k2K7Eww==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.70.0.tgz", + "integrity": "sha512-wEw5uHd1/XqgkwvGM1DrhwPsDWcMNedxHybq0b7Bp2ZE7QWI4V/OS1gOnYpBvB6OUpHkEc5c2z++hr6fd0FhHQ==", "dev": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2" } }, "node_modules/@swagger-api/apidom-ns-openapi-3-1": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.75.0.tgz", - "integrity": "sha512-j2lvGKceplAVDnhm84klUPzBAwJewdpZf7fD28szEeMMNfXi40y70rs6iFKTH6FVuBc/k5/nf/M44tQY+sdqGw==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.70.0.tgz", + "integrity": "sha512-0d8IPy7A9lCjscXsw260j07xTQu8ExG3OpFxSJPOwQsrZ6X2Oooaq/0e0hnK15ngaVQzv9Iq8pBXSpJ/oJD8Ww==", "dev": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.75.0", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.75.0.tgz", - "integrity": "sha512-DE16Dg2Fjgv7mmZYhGkcvmcQVHk6+7ly1GRbTVBgLY10CGibd41FF3ttS1jiiT+yJxQbnuhvV0gJGV5X17GPNg==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.70.0.tgz", + "integrity": "sha512-mXR+0EjOa+1trve5xGKmhDSXdIs8zMMJAN9KlnPvAVVezpoDLgg8s687qfPyNmfRmYcnO/18X8pn3/WhQCVFHA==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.75.0", - "@swagger-api/apidom-parser-adapter-json": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.70.0", + "@swagger-api/apidom-parser-adapter-json": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.75.0.tgz", - "integrity": "sha512-i3RMF3GKR62tW+cEYkRhbcnlm0SpGh59iQb+90my8udk3eeNwblvoqk5DlBWlZwT4FFQyAMXczYzX69DahKZKw==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.70.0.tgz", + "integrity": "sha512-sfQq2cetMAH9CWS9UINTDdZ+Hs735C6CojtG6dkeA+BJe0gJg+NmQI2qwePQ1jY9p9D+lHMMl56ispYQQnaCjg==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.75.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.70.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.75.0.tgz", - "integrity": "sha512-1Pa+cBFTMJFSVKdtsk7Q8h+/rR1/7Tfa/jkS6bIHRxuebQS6eY3JXgU22FhhOiuqNpLIkQOO1qHTknIJG77K2Q==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.70.0.tgz", + "integrity": "sha512-u35roIPmq9zvXKfuGyMzY9gZMj1kTLmFSdCvOA5JvysEQLSx59s/Qs4um+BLvH2Z9/D5DYVb2cnyujTIVmoMYg==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.75.0", - "@swagger-api/apidom-parser-adapter-json": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.70.0", + "@swagger-api/apidom-parser-adapter-json": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.75.0.tgz", - "integrity": "sha512-iqdmbdHgZ0I1KfrqZ+/qLqsDa/CuHzF/EvhAGHAwpVFP3w1bFS1gkUfnj5iSev4IUySyFpjf1dpZjHlXunrczg==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.70.0.tgz", + "integrity": "sha512-NYxbr+BFDf6y92+o8sFaQ0UWxh72jNo8TkCl1/JYSrc5QuLSIu5UIMbjtLPGY+82okMRxCwjG7dCd8h62/KpiQ==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.75.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.70.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-json": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.75.0.tgz", - "integrity": "sha512-uYw1E7xUvf7fEaY9UdctTWmelztPv1qVl7VnZfct1LawOgtW8/hldhUaVrBmirBI10C6piy+3tDRA/mxRo6Y1Q==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.70.0.tgz", + "integrity": "sha512-j0Pb4Xg1VdFaCwYInF9qQxCDpaznzgse4oSUy1uJkLK0W/eC6bLNHyDGJmxR/TAqxY4yzb5zNCJnlJkjZqKxkQ==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.75.0", - "@swagger-api/apidom-core": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-ast": "^0.70.0", + "@swagger-api/apidom-core": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2", - "tree-sitter": "=0.20.4", + "tree-sitter": "=0.20.1", "tree-sitter-json": "=0.20.0", - "web-tree-sitter": "=0.20.3" + "web-tree-sitter": "=0.20.7" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.75.0.tgz", - "integrity": "sha512-3Rc8tucPhqGakh4Txgmu+uoASnIDvjSwOo6Vh36LQo6SRf5S86NLmLOMd+nXfiP3WnWwoQtcfvi0IHML/dQhKg==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.70.0.tgz", + "integrity": "sha512-GsQH3GaOWVnGYtd+jajrsXjn1N0JqH1cQz/RoyxaD2zeI0LDW3efXGfa2zr3tFWqxTPrdOIMu6irH8aWtiC5sA==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.75.0", - "@swagger-api/apidom-parser-adapter-json": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.70.0", + "@swagger-api/apidom-parser-adapter-json": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.75.0.tgz", - "integrity": "sha512-UBqvU6RwGVFPLO52+N/iW+g3pgfoIOxX6wtCtaeu71IvC8klQnvRPl7DRydNM46DuDeJRYfAR7rDUO/kWxu/LQ==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.70.0.tgz", + "integrity": "sha512-e8bUiTa+q4xTS77hZC9pyg6U91rWlbfXBhzUGAn6fB+JF4PXxyep6sH+8JbJvGjI6DFvvuiwzRvVFt6DyKFhZg==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.75.0", - "@swagger-api/apidom-parser-adapter-json": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.70.0", + "@swagger-api/apidom-parser-adapter-json": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.75.0.tgz", - "integrity": "sha512-nQAuODuSgQw3JcY4lEll2RCp7Tj5RtksLwXGBpd6ZMmy4fqsYvgmhgpqlc/T4V3OXdsB98YVdEnGrwAq5GYdag==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.70.0.tgz", + "integrity": "sha512-4dwRV9uhjuIziV5Z9742RpVCo+QtrQDrGxh5pQaTbU8mNvXdrZ7ebFOxYQIPmxGcPAbxm1x6dvicUvhs97Lsrg==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.75.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.70.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.75.0.tgz", - "integrity": "sha512-7kICmmDib+Lg/HLe7pwUeXD1CzNyLhIocvxg4wz1nBxwLAcBnLybN1sAsPTISHG/1SVh/XOPaYMyOyfN1TmkAw==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.70.0.tgz", + "integrity": "sha512-u/JE8maz+PSm3prCTE9jx0XaK1/+kxoFT1v7l9AXqAyczsyQ/FMPNUvQ8Qyr/Jad5wHW6IcIIhqG79n4e819JQ==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.75.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.70.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.75.0.tgz", - "integrity": "sha512-8d443eF60U/8lYhuzbRyloGISqCy2ypugGAKaDGPDwgldy232mQG6Izhrwqj65qj+945n3j/rD0FcwKdUZmK6w==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.70.0.tgz", + "integrity": "sha512-DfJ9f7Qm6QdmGJMMHicksEZKRJYR0yY9KTF+UKPBGChakXxr9Gt6ZkxWwRz0ataPFJZbW+Q8/P56Mrp/ETH+WQ==", "dev": true, "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.75.0", - "@swagger-api/apidom-core": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-ast": "^0.70.0", + "@swagger-api/apidom-core": "^0.70.0", + "@types/ramda": "~0.29.1", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2", - "tree-sitter": "=0.20.4", + "tree-sitter": "=0.20.1", "tree-sitter-yaml": "=0.5.0", - "web-tree-sitter": "=0.20.3" + "web-tree-sitter": "=0.20.7" } }, "node_modules/@swagger-api/apidom-reference": { - "version": "0.75.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-0.75.0.tgz", - "integrity": "sha512-3eqMfGaNBa3+Ao/9zrRPfxCuz9/3jag3W2XV8xuS4Xq2g3xqCEzPPUeraf6zoerk5EdXMSSoO6O8v074E4R4dg==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-0.70.0.tgz", + "integrity": "sha512-HKfDmfQQc/RmdSdOpN/WtGF+97WjgRmvIdt3FmuPTqFRM4CeGpDM/MXvcxa71sN1yUx/o6LkRRwYSqDlYfutIw==", "dev": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.75.0", - "@types/ramda": "~0.29.3", + "@swagger-api/apidom-core": "^0.70.0", + "@types/ramda": "~0.29.1", "axios": "^1.4.0", "minimatch": "^7.4.3", "process": "^0.11.10", "ramda": "~0.29.0", - "ramda-adjunct": "^4.1.1", + "ramda-adjunct": "^4.0.0", "stampit": "^4.3.2" }, "optionalDependencies": { - "@swagger-api/apidom-json-pointer": "^0.75.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.75.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.75.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.75.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.75.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.75.0", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.75.0", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.75.0", - "@swagger-api/apidom-parser-adapter-json": "^0.75.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.75.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.75.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.75.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.75.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.75.0" + "@swagger-api/apidom-json-pointer": "^0.70.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.70.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.70.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.70.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.70.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.70.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.70.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.70.0", + "@swagger-api/apidom-parser-adapter-json": "^0.70.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.70.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.70.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.70.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.70.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.70.0" } }, "node_modules/@swagger-api/apidom-reference/node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "dev": true, "dependencies": { "follow-redirects": "^1.15.0", @@ -5151,12 +4861,11 @@ } }, "node_modules/@swc/helpers": { - "version": "0.4.36", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.36.tgz", - "integrity": "sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", "dev": true, "dependencies": { - "legacy-swc-helpers": "npm:@swc/helpers@=0.4.14", "tslib": "^2.4.0" } }, @@ -5293,12 +5002,12 @@ } }, "node_modules/@types/hast": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.5.tgz", - "integrity": "sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", "dev": true, "dependencies": { - "@types/unist": "^2" + "@types/unist": "*" } }, "node_modules/@types/hoist-non-react-statics": { @@ -5358,8 +5067,7 @@ "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, "node_modules/@types/keyv": { "version": "3.1.4", @@ -5371,18 +5079,18 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.197", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz", - "integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==", + "version": "4.14.195", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", + "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", "dev": true }, "node_modules/@types/mdast": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", - "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz", + "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==", "dev": true, "dependencies": { - "@types/unist": "^2" + "@types/unist": "*" } }, "node_modules/@types/minimatch": { @@ -5401,9 +5109,9 @@ } }, "node_modules/@types/node": { - "version": "20.5.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz", - "integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==", + "version": "20.2.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz", + "integrity": "sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==", "dev": true }, "node_modules/@types/node-fetch": { @@ -5435,12 +5143,12 @@ "dev": true }, "node_modules/@types/ramda": { - "version": "0.29.3", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.3.tgz", - "integrity": "sha512-Yh/RHkjN0ru6LVhSQtTkCRo6HXkfL9trot/2elzM/yXLJmbLm2v6kJc8yftTnwv1zvUob6TEtqI2cYjdqG3U0Q==", + "version": "0.29.2", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.2.tgz", + "integrity": "sha512-JxvBGR3G4gV3RTOBugVHAAOD6iiv2WjlJ8BHr0s7KALdPpx2l+didoTuoJMmrA0eqpUaCm/slKP4TmxMRihd8g==", "dev": true, "dependencies": { - "types-ramda": "^0.29.4" + "types-ramda": "^0.29.3" } }, "node_modules/@types/reach__router": { @@ -5453,9 +5161,9 @@ } }, "node_modules/@types/react": { - "version": "18.2.21", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.21.tgz", - "integrity": "sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==", + "version": "18.2.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.9.tgz", + "integrity": "sha512-pL3JAesUkF7PEQGxh5XOwdXGV907te6m1/Qe1ERJLgomojS6Ne790QiA7GUl434JEkFA2aAaB6qJ5z4e1zJn/w==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -5489,10 +5197,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==", - "dev": true + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" }, "node_modules/@types/tmp": { "version": "0.0.33", @@ -5501,9 +5208,9 @@ "dev": true }, "node_modules/@types/unist": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", - "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, "node_modules/@types/use-sync-external-store": { @@ -5534,17 +5241,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.9.tgz", + "integrity": "sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==", "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/scope-manager": "5.59.9", + "@typescript-eslint/type-utils": "5.59.9", + "@typescript-eslint/utils": "5.59.9", "debug": "^4.3.4", - "graphemer": "^1.4.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "semver": "^7.3.7", @@ -5571,7 +5277,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -5580,10 +5285,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5597,16 +5301,15 @@ "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", - "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.9.tgz", + "integrity": "sha512-eZTK/Ci0QAqNc/q2MqMwI2+QI5ZI9HM12FcfGwbEvKif5ev/CIIYLmrlckvgPrC8XSbl39HtErR5NJiQkRkvWg==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.62.0" + "@typescript-eslint/utils": "5.59.9" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5620,14 +5323,13 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.9.tgz", + "integrity": "sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==", "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "5.59.9", + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/typescript-estree": "5.59.9", "debug": "^4.3.4" }, "engines": { @@ -5647,13 +5349,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz", + "integrity": "sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/visitor-keys": "5.59.9" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5664,13 +5365,12 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.9.tgz", + "integrity": "sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==", "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "5.59.9", + "@typescript-eslint/utils": "5.59.9", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -5691,10 +5391,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.9.tgz", + "integrity": "sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -5704,13 +5403,12 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz", + "integrity": "sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/visitor-keys": "5.59.9", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5734,7 +5432,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -5743,10 +5440,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5760,21 +5456,19 @@ "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.9.tgz", + "integrity": "sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "5.59.9", + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/typescript-estree": "5.59.9", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -5793,7 +5487,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -5802,10 +5495,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -5819,16 +5511,14 @@ "node_modules/@typescript-eslint/utils/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz", + "integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==", "dependencies": { - "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/types": "5.59.9", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -5840,10 +5530,9 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -6044,10 +5733,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "bin": { "acorn": "bin/acorn" }, @@ -6068,7 +5756,6 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -6119,7 +5806,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -6204,30 +5890,12 @@ } }, "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/ansi-html-community": { @@ -6246,7 +5914,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -6255,7 +5922,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -6288,6 +5954,13 @@ "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==", "dev": true }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true, + "optional": true + }, "node_modules/arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", @@ -6307,25 +5980,34 @@ } ] }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dependencies": { - "dequal": "^2.0.3" + "deep-equal": "^2.0.5" } }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -6344,7 +6026,6 @@ "version": "3.1.6", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6373,35 +6054,14 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, "engines": { "node": ">=8" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz", - "integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array.prototype.flat": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6419,7 +6079,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6437,7 +6096,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -6446,26 +6104,6 @@ "get-intrinsic": "^1.1.3" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -6484,8 +6122,7 @@ "node_modules/ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" }, "node_modules/astral-regex": { "version": "2.0.0", @@ -6502,15 +6139,6 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -6548,9 +6176,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.15", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.15.tgz", - "integrity": "sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==", + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", "dev": true, "funding": [ { @@ -6560,15 +6188,11 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001520", + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", "fraction.js": "^4.2.0", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", @@ -6588,7 +6212,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -6600,7 +6223,6 @@ "version": "4.7.2", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", - "dev": true, "engines": { "node": ">=4" } @@ -6615,37 +6237,30 @@ } }, "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", - "dev": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", "dependencies": { - "dequal": "^2.0.3" + "deep-equal": "^2.0.5" } }, - "node_modules/b4a": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", - "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", - "dev": true - }, "node_modules/babel-eslint": { "name": "@babel/eslint-parser", - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.11.tgz", - "integrity": "sha512-YjOYZ3j7TjV8OhLW6NCtyg8G04uStATEUe5eiLuCZaXz2VSDQ3dsAtm2D+TuQyAqNMUK2WacGo0/uma9Pein1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.5.tgz", + "integrity": "sha512-C69RWYNYtrgIRE5CmTd77ZiLDXqgBipahJc/jHP3sLcAGj6AJzxNIuKNpVnICqbyK7X3pFUfEvL++rvtbQpZkQ==", "dev": true, "peer": true, "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" + "semver": "^6.3.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, "peerDependencies": { - "@babel/core": "^7.11.0", + "@babel/core": ">=7.11.0", "eslint": "^7.5.0 || ^8.0.0" } }, @@ -6736,53 +6351,53 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", - "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz", + "integrity": "sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.2", - "semver": "^6.3.1" + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.4.0", + "semver": "^6.1.1" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", - "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.1.tgz", + "integrity": "sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2", - "core-js-compat": "^3.31.0" + "@babel/helper-define-polyfill-provider": "^0.4.0", + "core-js-compat": "^3.30.1" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", - "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.0.tgz", + "integrity": "sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.2" + "@babel/helper-define-polyfill-provider": "^0.4.0" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-remove-graphql-queries": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-5.12.0.tgz", - "integrity": "sha512-9lLU6pYKtS0tSfqzehAHp1ODgTzOtoZPIkVfmjCTxATtEmgCO+Z8tptdW+pcp2cKEs9BIJ6SuOkE47SEXxVeiw==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-5.10.0.tgz", + "integrity": "sha512-YVjBg0RD6aHE8LOWeuDSqadOB2lPV9FeGpc32rLClaDK+wHdIPaXYqUd9ty30UY30PfB/gDclyexXlfv7qgcxA==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", "@babel/types": "^7.20.7", - "gatsby-core-utils": "^4.12.0" + "gatsby-core-utils": "^4.10.0" }, "engines": { "node": ">=18.0.0" @@ -6843,9 +6458,9 @@ } }, "node_modules/babel-preset-gatsby": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-3.12.0.tgz", - "integrity": "sha512-355xQi5cZIFYCdCbeJ9mHipEZrk0Jmk5zq21Kd4FlYAAYn0L8lC/YiSG44muRyPDdSVJiLOr6pMGOWQRe5PPyg==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-3.10.0.tgz", + "integrity": "sha512-sogPa6DBrH2fZpiVOD6mYDCbnX/OEExl4jtZzfYPuKjcFDKPs8hs6lmmeLIdXKZhLIM2tJhJXQV/bqYlwWRARw==", "dev": true, "dependencies": { "@babel/plugin-proposal-class-properties": "^7.18.6", @@ -6861,8 +6476,8 @@ "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-macros": "^3.1.0", "babel-plugin-transform-react-remove-prop-types": "^0.4.24", - "gatsby-core-utils": "^4.12.0", - "gatsby-legacy-polyfills": "^3.12.0" + "gatsby-core-utils": "^4.10.0", + "gatsby-legacy-polyfills": "^3.10.0" }, "engines": { "node": ">=18.0.0" @@ -7033,6 +6648,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -7159,7 +6783,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -7168,10 +6791,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", - "dev": true, + "version": "4.21.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", + "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", "funding": [ { "type": "opencollective", @@ -7187,9 +6809,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001489", + "electron-to-chromium": "^1.4.411", + "node-releases": "^2.0.12", "update-browserslist-db": "^1.0.11" }, "bin": { @@ -7251,22 +6873,22 @@ } }, "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, "engines": { "node": ">= 0.8" } }, "node_modules/cache-manager": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-5.2.3.tgz", - "integrity": "sha512-9OErI8fksFkxAMJ8Mco0aiZSdphyd90HcKiOMJQncSlU1yq/9lHHxrT8PDayxrmr9IIIZPOAEfXuGSD7g29uog==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-5.2.2.tgz", + "integrity": "sha512-QYEct/rVt5HfNvyWpHQurOa1IgpjP9V0X3E5O8rdEmuKcucpnMs7CwK0bHvv92svxZXlN2w5hgMFdrbiYoHeIQ==", "dev": true, "dependencies": { "lodash.clonedeep": "^4.5.0", - "lru-cache": "^9.1.2" + "lru-cache": "~9.1.1" } }, "node_modules/cache-manager/node_modules/lru-cache": { @@ -7324,7 +6946,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -7342,7 +6963,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -7382,10 +7002,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001524", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz", - "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==", - "dev": true, + "version": "1.0.30001497", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001497.tgz", + "integrity": "sha512-I4/duVK4wL6rAK/aKZl3HXB4g+lIZvaT4VLAn2rCgJ38jVLb0lv2Xug6QuqmxXFVRJMF74SPPWPJ/1Sdm3vCzw==", "funding": [ { "type": "opencollective", @@ -7426,7 +7045,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -7805,6 +7423,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -7822,7 +7450,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -7830,8 +7457,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/color-string": { "version": "1.9.1", @@ -7961,15 +7587,6 @@ "node": ">= 0.8.0" } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -8044,6 +7661,13 @@ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true, + "optional": true + }, "node_modules/constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", @@ -8115,9 +7739,9 @@ } }, "node_modules/core-js": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.1.tgz", - "integrity": "sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==", + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz", + "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==", "dev": true, "hasInstallScript": true, "funding": { @@ -8126,12 +7750,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", - "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.2.tgz", + "integrity": "sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==", "dev": true, "dependencies": { - "browserslist": "^4.21.10" + "browserslist": "^4.21.5" }, "funding": { "type": "opencollective", @@ -8139,9 +7763,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.1.tgz", - "integrity": "sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ==", + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.2.tgz", + "integrity": "sha512-p/npFUJXXBkCCTIlEGBdghofn00jWG6ZOtdoIXSJmAu2QBvN0IqpZXWweOytcwE6cfx8ZvVUy1vw8zxhe4Y2vg==", "dev": true, "hasInstallScript": true, "funding": { @@ -8185,9 +7809,9 @@ } }, "node_modules/create-gatsby": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/create-gatsby/-/create-gatsby-3.12.0.tgz", - "integrity": "sha512-cAWZ6046W0kUDAVRwpAEYlHTUAZApN5xmuq24JMDQPO5Qzn1eWe7s2LZ8V3isWOMOHXHKMMVm83NtJYIHql80g==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/create-gatsby/-/create-gatsby-3.10.0.tgz", + "integrity": "sha512-ZKkibIo8B75yxw0/IobjMITZKdZJ+m24mbFY/nLwrMcN6RfkZ98Pa4DNTmUIyfA4AFF4nZCDgVkl+3sfoNk8iQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13" @@ -8210,12 +7834,12 @@ } }, "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", + "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", "dev": true, "dependencies": { - "node-fetch": "^2.6.12" + "node-fetch": "^2.6.11" } }, "node_modules/cross-spawn": { @@ -8241,9 +7865,9 @@ } }, "node_modules/css-declaration-sorter": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", - "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", + "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", "dev": true, "engines": { "node": "^10 || ^12 || >=14" @@ -8293,9 +7917,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -8314,17 +7938,17 @@ "dev": true }, "node_modules/css-minimizer-webpack-plugin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", - "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.0.tgz", + "integrity": "sha512-1wZ/PYvg+ZKwi5FX6YrvbB31jMAdurS+CmRQLwWCVSlfzJC85l/a6RVICqUHFa+jXyhilfnCyjafzJGbmz5tcA==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "cssnano": "^6.0.1", + "cssnano": "^6.0.0", "jest-worker": "^29.4.3", - "postcss": "^8.4.24", - "schema-utils": "^4.0.1", - "serialize-javascript": "^6.0.1" + "postcss": "^8.4.21", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.1", + "source-map": "^0.6.1" }, "engines": { "node": ">= 14.15.0" @@ -8392,9 +8016,9 @@ "dev": true }, "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.1.0.tgz", + "integrity": "sha512-Jw+GZVbP5IggB2WAn6UHI02LBwGmsIeYN/lNbSMZyDziQ7jmtAUrqKqDja+W89YHVs+KL/3IkIMltAklqB1vAw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", @@ -8410,6 +8034,15 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -8602,8 +8235,7 @@ "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" }, "node_modules/date-fns": { "version": "2.30.0", @@ -8625,7 +8257,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -8683,6 +8314,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/deep-equal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", + "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.0", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -8695,8 +8354,7 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/deepmerge": { "version": "4.3.1", @@ -8729,7 +8387,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -8750,6 +8407,13 @@ "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true, + "optional": true + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -8768,15 +8432,6 @@ "node": ">= 0.6.0" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -8925,7 +8580,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, "dependencies": { "path-type": "^4.0.0" }, @@ -9079,10 +8733,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.504", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.504.tgz", - "integrity": "sha512-cSMwIAd8yUh54VwitVRVvHK66QqHWE39C3DRj8SWiXitEpVSY3wNPD9y1pxQtLIi4w3UdzF9klLsmuPshz09DQ==", - "dev": true + "version": "1.4.427", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.427.tgz", + "integrity": "sha512-HK3r9l+Jm8dYAm1ctXEWIC+hV60zfcjS9UA5BDlYvnI5S7PU/yytjpvSrTNrSSRRkuu3tDyZhdkwIczh+0DWaw==" }, "node_modules/element-closest": { "version": "2.0.2", @@ -9096,8 +8749,7 @@ "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -9147,27 +8799,18 @@ } }, "node_modules/engine.io-client": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.2.tgz", - "integrity": "sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.4.0.tgz", + "integrity": "sha512-GyKPDyoEha+XZ7iEqam49vz6auPnNJ9ZBfy89f+rMMas8AuiMWOZ9PVzu8xb9ZC6rafUqiGHSCfu22ih66E+1g==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", + "engine.io-parser": "~5.0.3", "ws": "~8.11.0", "xmlhttprequest-ssl": "~2.0.0" } }, - "node_modules/engine.io-client/node_modules/engine.io-parser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", - "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/engine.io-parser": { "version": "5.0.7", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.7.tgz", @@ -9187,9 +8830,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", + "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -9200,13 +8843,12 @@ } }, "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" + "ansi-colors": "^4.1.1" }, "engines": { "node": ">=8.6" @@ -9225,9 +8867,9 @@ } }, "node_modules/envinfo": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", - "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -9261,19 +8903,17 @@ } }, "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", - "dev": true, + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "dependencies": { "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -9293,18 +8933,14 @@ "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", + "regexp.prototype.flags": "^1.4.3", "safe-regex-test": "^1.0.0", "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.9" }, "engines": { "node": ">= 0.4" @@ -9313,39 +8949,35 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-iterator-helpers": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.14.tgz", - "integrity": "sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw==", - "dev": true, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dependencies": { - "asynciterator.prototype": "^1.0.0", "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "get-intrinsic": "^1.1.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.0", - "safe-array-concat": "^1.0.0" + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, "node_modules/es-set-tostringtag": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3", "has": "^1.0.3", @@ -9359,7 +8991,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, "dependencies": { "has": "^1.0.3" } @@ -9368,7 +8999,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -9439,7 +9069,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -9454,34 +9083,32 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", - "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", - "dev": true, + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", + "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.48.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.3", + "@eslint/js": "8.42.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", + "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "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", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.1", + "espree": "^9.5.2", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -9491,6 +9118,7 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -9500,8 +9128,9 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", + "optionator": "^0.9.1", "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -9543,21 +9172,19 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dependencies": { "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, "dependencies": { "ms": "^2.1.1" } @@ -9566,7 +9193,6 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dev": true, "dependencies": { "debug": "^3.2.7" }, @@ -9583,7 +9209,6 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, "dependencies": { "ms": "^2.1.1" } @@ -9592,7 +9217,6 @@ "version": "8.0.3", "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", - "dev": true, "dependencies": { "lodash": "^4.17.21", "string-natural-compare": "^3.0.1" @@ -9607,28 +9231,25 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", - "dev": true, + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dependencies": { "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", "array.prototype.flat": "^1.3.1", "array.prototype.flatmap": "^1.3.1", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.8.0", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.13.0", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", "object.values": "^1.1.6", - "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" }, "engines": { "node": ">=4" @@ -9641,7 +9262,6 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, "dependencies": { "ms": "^2.1.1" } @@ -9650,7 +9270,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, "dependencies": { "esutils": "^2.0.2" }, @@ -9686,7 +9305,6 @@ "version": "6.7.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dev": true, "dependencies": { "@babel/runtime": "^7.20.7", "aria-query": "^5.1.3", @@ -9713,16 +9331,14 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", @@ -9732,7 +9348,7 @@ "object.values": "^1.1.6", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", + "semver": "^6.3.0", "string.prototype.matchall": "^4.0.8" }, "engines": { @@ -9746,7 +9362,6 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, "engines": { "node": ">=10" }, @@ -9758,7 +9373,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, "dependencies": { "esutils": "^2.0.2" }, @@ -9770,7 +9384,6 @@ "version": "2.0.0-next.4", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, "dependencies": { "is-core-module": "^2.9.0", "path-parse": "^1.0.7", @@ -9784,9 +9397,9 @@ } }, "node_modules/eslint-plugin-testing-library": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", - "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.0.tgz", + "integrity": "sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.58.0" @@ -9803,7 +9416,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -9816,7 +9428,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -9849,7 +9460,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, "engines": { "node": ">=10" } @@ -9921,7 +9531,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -9937,7 +9546,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -9954,7 +9562,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "peer": true, "dependencies": { "color-name": "~1.1.4" @@ -9967,14 +9574,12 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "peer": true }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "peer": true, "engines": { "node": ">=10" @@ -9984,10 +9589,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", "peer": true, "dependencies": { "esrecurse": "^4.3.0", @@ -10001,10 +9605,9 @@ } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -10014,10 +9617,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", - "dev": true, + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "peer": true, "dependencies": { "type-fest": "^0.20.2" @@ -10033,7 +9635,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "peer": true, "engines": { "node": ">=8" @@ -10043,7 +9644,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -10053,13 +9653,12 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", + "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", "peer": true, "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -10071,10 +9670,9 @@ } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -10099,7 +9697,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -10111,7 +9708,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -10123,7 +9719,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -10343,20 +9938,12 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -10372,7 +9959,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -10389,14 +9975,12 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", @@ -10411,7 +9995,6 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -10478,7 +10061,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -10562,7 +10144,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -10633,7 +10214,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -10655,24 +10235,21 @@ } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", - "dev": true, + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dependencies": { - "flatted": "^3.2.7", - "keyv": "^4.5.3", + "flatted": "^3.1.0", "rimraf": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/follow-redirects": { "version": "1.15.2", @@ -10698,7 +10275,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -10862,9 +10438,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -10955,9 +10531,9 @@ } }, "node_modules/fraction.js": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.1.tgz", - "integrity": "sha512-/KxoyCnPM0GwYI4NN0Iag38Tqt+od3/mLuguepLgCAKPn0ZhC544nssAW0tG2/00zXEYl9W+7hwAIpLHo6Oc7Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true, "engines": { "node": "*" @@ -11014,9 +10590,9 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, "optional": true, @@ -11030,19 +10606,17 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -11061,15 +10635,14 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/gatsby": { - "version": "5.12.3", - "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-5.12.3.tgz", - "integrity": "sha512-+qO2gKA95HH+b4RCf3AYHOW3Pz8YC1t3W9MOwbUQe7QgDXd0D9lRc7YAqk8XuXp8Pkp/NWuoeZY3d/1B8d8nng==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-5.10.0.tgz", + "integrity": "sha512-/CsCBskAzrit4olmzzN58v6ayvUYUwVRwQVxkHTDb8b9bGRy0VBG9Ntsq/IvGtEYRvYd6VrWpj/U0Xfcf+pnDg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -11097,8 +10670,8 @@ "@parcel/core": "2.8.3", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", "@types/http-proxy": "^1.17.11", - "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", + "@typescript-eslint/eslint-plugin": "^5.57.0", + "@typescript-eslint/parser": "^5.57.0", "@vercel/webpack-asset-relocator-loader": "^1.7.3", "acorn-loose": "^8.3.0", "acorn-walk": "^8.2.0", @@ -11111,19 +10684,18 @@ "babel-plugin-add-module-exports": "^1.0.4", "babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-lodash": "^3.3.4", - "babel-plugin-remove-graphql-queries": "^5.12.0", - "babel-preset-gatsby": "^3.12.0", + "babel-plugin-remove-graphql-queries": "^5.10.0", + "babel-preset-gatsby": "^3.10.0", "better-opn": "^2.1.1", "bluebird": "^3.7.2", - "body-parser": "1.20.1", - "browserslist": "^4.21.9", + "browserslist": "^4.21.5", "cache-manager": "^2.11.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", "common-tags": "^1.8.2", "compression": "^1.7.4", "cookie": "^0.5.0", - "core-js": "^3.31.0", + "core-js": "^3.30.1", "cors": "^2.8.5", "css-loader": "^5.2.7", "css-minimizer-webpack-plugin": "^2.0.0", @@ -11134,7 +10706,7 @@ "detect-port": "^1.5.1", "devcert": "^1.2.2", "dotenv": "^8.6.0", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.13.0", "error-stack-parser": "^2.1.4", "eslint": "^7.32.0", "eslint-config-react-app": "^6.0.0", @@ -11154,26 +10726,26 @@ "find-cache-dir": "^3.3.2", "fs-exists-cached": "1.0.0", "fs-extra": "^11.1.1", - "gatsby-cli": "^5.12.0", - "gatsby-core-utils": "^4.12.0", - "gatsby-graphiql-explorer": "^3.12.0", - "gatsby-legacy-polyfills": "^3.12.0", - "gatsby-link": "^5.12.0", - "gatsby-page-utils": "^3.12.0", - "gatsby-parcel-config": "1.12.0", - "gatsby-plugin-page-creator": "^5.12.0", - "gatsby-plugin-typescript": "^5.12.0", - "gatsby-plugin-utils": "^4.12.0", - "gatsby-react-router-scroll": "^6.12.0", - "gatsby-script": "^2.12.0", - "gatsby-telemetry": "^4.12.0", - "gatsby-worker": "^2.12.0", + "gatsby-cli": "^5.10.0", + "gatsby-core-utils": "^4.10.0", + "gatsby-graphiql-explorer": "^3.10.0", + "gatsby-legacy-polyfills": "^3.10.0", + "gatsby-link": "^5.10.0", + "gatsby-page-utils": "^3.10.0", + "gatsby-parcel-config": "1.10.0", + "gatsby-plugin-page-creator": "^5.10.0", + "gatsby-plugin-typescript": "^5.10.0", + "gatsby-plugin-utils": "^4.10.0", + "gatsby-react-router-scroll": "^6.10.0", + "gatsby-script": "^2.10.0", + "gatsby-telemetry": "^4.10.0", + "gatsby-worker": "^2.10.0", "glob": "^7.2.3", "globby": "^11.1.0", "got": "^11.8.6", - "graphql": "^16.7.1", + "graphql": "^16.6.0", "graphql-compose": "^9.0.10", - "graphql-http": "^1.19.0", + "graphql-http": "^1.18.0", "graphql-tag": "^2.12.6", "hasha": "^5.2.2", "invariant": "^2.2.4", @@ -11182,7 +10754,6 @@ "joi": "^17.9.2", "json-loader": "^0.5.7", "latest-version": "^7.0.0", - "linkfs": "^2.1.0", "lmdb": "2.5.3", "lodash": "^4.17.21", "meant": "^1.0.3", @@ -11193,7 +10764,7 @@ "mitt": "^1.2.0", "moment": "^2.29.4", "multer": "^1.4.5-lts.1", - "node-fetch": "^2.6.11", + "node-fetch": "^2.6.9", "node-html-parser": "^5.4.2", "normalize-path": "^3.0.0", "null-loader": "^4.0.1", @@ -11202,7 +10773,7 @@ "parseurl": "^1.3.3", "physical-cpu-count": "^2.0.0", "platform": "^1.3.6", - "postcss": "^8.4.24", + "postcss": "^8.4.23", "postcss-flexbugs-fixes": "^5.0.2", "postcss-loader": "^5.3.0", "prompts": "^2.4.2", @@ -11215,29 +10786,28 @@ "redux": "4.2.1", "redux-thunk": "^2.4.2", "resolve-from": "^5.0.0", - "semver": "^7.5.3", + "semver": "^7.5.0", "shallow-compare": "^1.2.2", "signal-exit": "^3.0.7", "slugify": "^1.6.6", - "socket.io": "4.7.1", - "socket.io-client": "4.7.1", + "socket.io": "4.6.1", + "socket.io-client": "4.6.1", "stack-trace": "^0.0.10", "string-similarity": "^1.2.2", "strip-ansi": "^6.0.1", "style-loader": "^2.0.0", - "style-to-object": "^0.4.1", - "terser-webpack-plugin": "^5.3.9", + "terser-webpack-plugin": "^5.3.7", "tmp": "^0.2.1", "true-case-path": "^2.2.1", "type-of": "^2.0.1", "url-loader": "^4.1.1", "uuid": "^8.3.2", - "webpack": "^5.88.1", + "webpack": "^5.81.0", "webpack-dev-middleware": "^4.3.0", - "webpack-merge": "^5.9.0", - "webpack-stats-plugin": "^1.1.3", + "webpack-merge": "^5.8.0", + "webpack-stats-plugin": "^1.1.1", "webpack-virtual-modules": "^0.5.0", - "xstate": "^4.38.0", + "xstate": "^4.37.2", "yaml-loader": "^0.8.0" }, "bin": { @@ -11247,7 +10817,7 @@ "node": ">=18.0.0" }, "optionalDependencies": { - "gatsby-sharp": "^1.12.0" + "gatsby-sharp": "^1.10.0" }, "peerDependencies": { "react": "^18.0.0 || ^0.0.0", @@ -11255,9 +10825,9 @@ } }, "node_modules/gatsby-cli": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-5.12.0.tgz", - "integrity": "sha512-XLLwwq2l0AIM9O2OqT74EpxjTyJYwCLh1r0t1+dIt4p5owpNvpu9HSPPFgPGRfV0ADoBzrAHcixNOBtLPRax0Q==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-5.10.0.tgz", + "integrity": "sha512-k8Z5l+2pAzf09/w1YgODAExjJKnZCd8WON6pxsHV1nht9I+zXE3sqB5FbsitckufaHhoOer6ezsQjxLVAe4+mA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -11277,25 +10847,25 @@ "clipboardy": "^2.3.0", "common-tags": "^1.8.2", "convert-hrtime": "^3.0.0", - "create-gatsby": "^3.12.0", - "envinfo": "^7.10.0", + "create-gatsby": "^3.10.0", + "envinfo": "^7.8.1", "execa": "^5.1.1", "fs-exists-cached": "^1.0.0", "fs-extra": "^11.1.1", - "gatsby-core-utils": "^4.12.0", - "gatsby-telemetry": "^4.12.0", + "gatsby-core-utils": "^4.10.0", + "gatsby-telemetry": "^4.10.0", "hosted-git-info": "^3.0.8", "is-valid-path": "^0.1.1", "joi": "^17.9.2", "lodash": "^4.17.21", - "node-fetch": "^2.6.11", + "node-fetch": "^2.6.9", "opentracing": "^0.14.7", "pretty-error": "^2.1.2", "progress": "^2.0.3", "prompts": "^2.4.2", "redux": "4.2.1", "resolve-cwd": "^3.0.0", - "semver": "^7.5.3", + "semver": "^7.5.0", "signal-exit": "^3.0.7", "stack-trace": "^0.0.10", "strip-ansi": "^6.0.1", @@ -11395,9 +10965,9 @@ } }, "node_modules/gatsby-cli/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11428,9 +10998,9 @@ "dev": true }, "node_modules/gatsby-core-utils": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-4.12.0.tgz", - "integrity": "sha512-1vK0cmL8FNHAddQ5WZt0yTPdFSZuMPNUSsHckM+ZdVmRxyif3aZYSi7ofj6sJo/UvhKj7fBqJv/smZYpp2PRqg==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-4.10.0.tgz", + "integrity": "sha512-7wNANRPzxyTsZMnZFyCq1f2D0T6299l1qUew8q8Ax2QJM0kzFY/4uuJaV/fnrC0RdjWnkwGIAiZ1ZnGK4E8HSA==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", @@ -11455,28 +11025,28 @@ } }, "node_modules/gatsby-graphiql-explorer": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-3.12.0.tgz", - "integrity": "sha512-vr86oLhif5uZ+VSTE34DYjtBDCIHWpJHh4+65fmgZh+WtDv1lyONJ/WWmyD+dNMHlGsZtR6wVvBjrj5iFRDGRw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-3.10.0.tgz", + "integrity": "sha512-KUYzObIk+W0zRlyVjOWdNLTTL4KyozygT54TOhbBMq4LgUf0mFtnA50UzwV/SqfjksUwE9Xtv7278K1z1Hjuiw==", "dev": true, "engines": { "node": ">=18.0.0" } }, "node_modules/gatsby-legacy-polyfills": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-3.12.0.tgz", - "integrity": "sha512-hj0M4w4xFvKHtBNE3StkLmbCS3LXK0oxW5g3UkubbyMAwFqylQnWzXfysBpeFicQN/tr2px1cNGaqp91Z3Nh+g==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-3.10.0.tgz", + "integrity": "sha512-b1uNl/Fdfry+7cHjRNa9mtQcmN6xQgqgAOf5F9Z1rJ9vKCylNny4Fs1qkmI8H6UiZYyI33lZq+G1C0SYbhwgxA==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", - "core-js-compat": "3.31.0" + "core-js-compat": "3.30.1" } }, "node_modules/gatsby-legacy-polyfills/node_modules/core-js-compat": { - "version": "3.31.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", - "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", + "version": "3.30.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz", + "integrity": "sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==", "dev": true, "dependencies": { "browserslist": "^4.21.5" @@ -11487,13 +11057,13 @@ } }, "node_modules/gatsby-link": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-5.12.0.tgz", - "integrity": "sha512-Ky7q6zeminbKQpSYjKW8YkkbV8+b01MUM/WNtGDMzu6jOfYFvv0+2kJXTxF0mzyAJMq9Xx44yFK0LX5kLF5fZA==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/gatsby-link/-/gatsby-link-5.10.0.tgz", + "integrity": "sha512-bcPFOcBQNJuSPRyqYE7ELBB4FEmQ7x/xWATzzs2ZCRMzp+SO13iZb5Vi+i0Obdu/YLJZhJ0f+pOIjlio4XNEZA==", "dev": true, "dependencies": { "@types/reach__router": "^1.3.10", - "gatsby-page-utils": "^3.12.0", + "gatsby-page-utils": "^3.10.0", "prop-types": "^15.8.1" }, "engines": { @@ -11506,16 +11076,16 @@ } }, "node_modules/gatsby-page-utils": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-3.12.0.tgz", - "integrity": "sha512-xkwGE3qf+wzpI0Y7dQyZlWFC7HL7O6eTZ2DrkbIUPAyq3nWSJQnbuhZ9KaPBK3Qs955T8/iUeHU9YQu3Y5Wcgg==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-3.10.0.tgz", + "integrity": "sha512-tpbcPhpi1CNQVc/dZiroktSY3wGk0iQ57HpSGL6Xo92XOLtjNXl0ipkYQhz0ecWABDcsKKn7H+E+GBbi9XHYqw==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", "bluebird": "^3.7.2", "chokidar": "^3.5.3", "fs-exists-cached": "^1.0.0", - "gatsby-core-utils": "^4.12.0", + "gatsby-core-utils": "^4.10.0", "glob": "^7.2.3", "lodash": "^4.17.21", "micromatch": "^4.0.5" @@ -11525,12 +11095,12 @@ } }, "node_modules/gatsby-parcel-config": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/gatsby-parcel-config/-/gatsby-parcel-config-1.12.0.tgz", - "integrity": "sha512-Ouru3TuIadzcTJ3zC943V3TKaesKOB0PW07dAlvXnjX8BXLDz9bgaS+eQlq+kvIrE1bsdpIWwAo/eL58a2+RCg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/gatsby-parcel-config/-/gatsby-parcel-config-1.10.0.tgz", + "integrity": "sha512-F1ESLH7/RxdPsCHnpbB2tZ78+NDvUoawHi/3+QHLSt8p9PrejY9qFKV9vKBS9S4qI1k713enFF54zJo1O80aeQ==", "dev": true, "dependencies": { - "@gatsbyjs/parcel-namer-relative-to-cwd": "^2.12.0", + "@gatsbyjs/parcel-namer-relative-to-cwd": "^2.10.0", "@parcel/bundler-default": "2.8.3", "@parcel/compressor-raw": "2.8.3", "@parcel/namer-default": "2.8.3", @@ -11551,15 +11121,15 @@ } }, "node_modules/gatsby-plugin-manifest": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-manifest/-/gatsby-plugin-manifest-5.12.0.tgz", - "integrity": "sha512-M4tq4AX4yVNUQnYQ5SI1ba/Khqof4PtyVtIpzzGE82O53Jg3M5AWZ0KGcz+d3UFdw1PGXYF+UtTzPlzMiTTeEg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-manifest/-/gatsby-plugin-manifest-5.10.0.tgz", + "integrity": "sha512-y3TUARyNaK29oD/8ZJOVvLVRvSvfKNjLHmNc0D6KPJRQld7T+ZKCZh4ylwN+Hor8vHnXKHyVoBZd+BIEjTBVAg==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", - "gatsby-core-utils": "^4.12.0", - "gatsby-plugin-utils": "^4.12.0", - "semver": "^7.5.3", + "gatsby-core-utils": "^4.10.0", + "gatsby-plugin-utils": "^4.10.0", + "semver": "^7.5.0", "sharp": "^0.32.1" }, "engines": { @@ -11582,9 +11152,9 @@ } }, "node_modules/gatsby-plugin-manifest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11647,9 +11217,9 @@ } }, "node_modules/gatsby-plugin-page-creator": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-5.12.0.tgz", - "integrity": "sha512-CwpI0Bp20+t7D8CVMD3R09df4eDo2RVB6Z6vgpmNdNzcRzk8GojuLSrdlA2s/RzwyCuxpDGyGGu5Ocnp4xJEhQ==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-5.10.0.tgz", + "integrity": "sha512-Vji1iC9CabZExrJZkWvDNPbqJ8nwLJ1kE1u04HN+IopA+hheJ8natBucNf8Xol/40R/xk62peJXlkuV/s5jM1g==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", @@ -11658,10 +11228,10 @@ "chokidar": "^3.5.3", "fs-exists-cached": "^1.0.0", "fs-extra": "^11.1.1", - "gatsby-core-utils": "^4.12.0", - "gatsby-page-utils": "^3.12.0", - "gatsby-plugin-utils": "^4.12.0", - "gatsby-telemetry": "^4.12.0", + "gatsby-core-utils": "^4.10.0", + "gatsby-page-utils": "^3.10.0", + "gatsby-plugin-utils": "^4.10.0", + "gatsby-telemetry": "^4.10.0", "globby": "^11.1.0", "lodash": "^4.17.21" }, @@ -11673,9 +11243,9 @@ } }, "node_modules/gatsby-plugin-react-helmet": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-6.12.0.tgz", - "integrity": "sha512-agcBCT9H8nlpkAU3D1fUeJbjh7IMPjGO/njoa7avIYLGsQ2nyGlHwcrEmS2zBHxYKaxPkztvr47OpCdnuEIvEw==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-6.10.0.tgz", + "integrity": "sha512-js/XJdx1wGA6ht306PXV5mhk+traQ7rOcoLBzcHAiIC6nS+7M4AuFDu+Sb4fLXd8S666UBoCA+b0P5CSP27ntQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13" @@ -11689,9 +11259,9 @@ } }, "node_modules/gatsby-plugin-sass": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sass/-/gatsby-plugin-sass-6.12.0.tgz", - "integrity": "sha512-nAQ5Y0zLSxoexXmWCNo6AzTbCTJ8GTMtdCRF379dCnssUh3bFewdnaGraN8z7mTVb1Q12TfcRF+D4VGvVm/oig==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-sass/-/gatsby-plugin-sass-6.10.0.tgz", + "integrity": "sha512-DRGG4AaDYcH07/UL75ciF1cm+wyihOMWWUBhY3lFCEJsS52r/j5GbWBlJgmSh7mDu5tNu5kbmlcZUVoe3S6pRQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", @@ -11707,9 +11277,9 @@ } }, "node_modules/gatsby-plugin-sharp": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-5.12.0.tgz", - "integrity": "sha512-of9E26/eLenTgNUjzFYJGbwIIGoXRCOCA1Dsz7dKvcx11b0pNf27C65AiEWPudWXHl+OUjFX/bNNBBooqN+nlg==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-5.10.0.tgz", + "integrity": "sha512-hG95JQrpByH8w7Ey25zlFsvgyi99NFmk1+0hmKjMkfh43BxNsTuvhcB2kcbcO2FaZdO9OK89pilRGbLaeA0gew==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", @@ -11718,11 +11288,11 @@ "debug": "^4.3.4", "filenamify": "^4.3.0", "fs-extra": "^11.1.1", - "gatsby-core-utils": "^4.12.0", - "gatsby-plugin-utils": "^4.12.0", + "gatsby-core-utils": "^4.10.0", + "gatsby-plugin-utils": "^4.10.0", "lodash": "^4.17.21", "probe-image-size": "^7.2.3", - "semver": "^7.5.3", + "semver": "^7.5.0", "sharp": "^0.32.1" }, "engines": { @@ -11745,9 +11315,9 @@ } }, "node_modules/gatsby-plugin-sharp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11766,9 +11336,9 @@ "dev": true }, "node_modules/gatsby-plugin-typescript": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-5.12.0.tgz", - "integrity": "sha512-6oLxghN1y/XqDQKg8MwWgvJnkQu+5D+5NZqOlpDsGkJQz+k06S3WTK+diGnGJ9epmE0i7vCY5ZutGgrJ7icA+w==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-typescript/-/gatsby-plugin-typescript-5.10.0.tgz", + "integrity": "sha512-e/jkoRHUxHlswOWTJBwkQCI9iBh8JcRq9YZaibfWwY9cZBEtBHjMDiic8zhQvyObnUKhke5IYDqLLCignrvC7A==", "dev": true, "dependencies": { "@babel/core": "^7.20.12", @@ -11777,7 +11347,7 @@ "@babel/plugin-proposal-optional-chaining": "^7.20.7", "@babel/preset-typescript": "^7.18.6", "@babel/runtime": "^7.20.13", - "babel-plugin-remove-graphql-queries": "^5.12.0" + "babel-plugin-remove-graphql-queries": "^5.10.0" }, "engines": { "node": ">=18.0.0" @@ -11787,16 +11357,16 @@ } }, "node_modules/gatsby-plugin-utils": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-utils/-/gatsby-plugin-utils-4.12.0.tgz", - "integrity": "sha512-lU84VmWC9qGojROMZkBgGjCAzxcAUlyGAsd75vjj2y3yqGYtyvqInvK5tZvDyNNVvU21u040Ps4AKIvRVgMV/Q==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/gatsby-plugin-utils/-/gatsby-plugin-utils-4.10.0.tgz", + "integrity": "sha512-+hQ4wVvdai8cNI+Mg0CoJbZGJVXAda7hPEekiI9oTSbqGxtTkIw0L3s4EADUEJ5jTuuJhNQzuuueOBkwJVioIw==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", "fastq": "^1.15.0", "fs-extra": "^11.1.1", - "gatsby-core-utils": "^4.12.0", - "gatsby-sharp": "^1.12.0", + "gatsby-core-utils": "^4.10.0", + "gatsby-sharp": "^1.10.0", "graphql-compose": "^9.0.10", "import-from": "^4.0.0", "joi": "^17.9.2", @@ -11811,9 +11381,9 @@ } }, "node_modules/gatsby-react-router-scroll": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-6.12.0.tgz", - "integrity": "sha512-KZqkJE/2LPtBemFVKKzCSDN86jqZatTCfMi+D0fkfeHDteaxDhJxIILtCizxr4TfPJRvvip0Wy/Oaafv4exmiA==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/gatsby-react-router-scroll/-/gatsby-react-router-scroll-6.10.0.tgz", + "integrity": "sha512-jiI8Q2VDa2rAyK+NCuzCX23tYuCc6Me1kNOSMLDT6pto6x2+P/arnbNq+SL1G1u8u5bnijEwNm5fD/ivd6sqtg==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", @@ -11829,9 +11399,9 @@ } }, "node_modules/gatsby-remark-autolink-headers": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-6.12.0.tgz", - "integrity": "sha512-c+zXq+frX7TCFoGPig4H4zn5RqsV2pduO/jF/NQLtnH2D5JnaDT0rPwiTzUi+9soyZpAenuV8Sprv6JFELPW+w==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-6.10.0.tgz", + "integrity": "sha512-ZxGbOEBAVtdhlJChgmzFsHthdNt5G3sGaFQxW7/YcbzR5L5+NTtOzZmUXNM61hBUjcG1v4z5ABfcPkgq383oNg==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", @@ -11850,15 +11420,15 @@ } }, "node_modules/gatsby-remark-images": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-images/-/gatsby-remark-images-7.12.0.tgz", - "integrity": "sha512-+jTbqcAcR2dj676w9W38oQKeTZDFy0kYT/gJncbS0fEdlk9MlZFErpoXZ4gmqOxxbTxRDbrSCaNBMF/k89F0fg==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/gatsby-remark-images/-/gatsby-remark-images-7.10.0.tgz", + "integrity": "sha512-Oh2cTlsGn0gDZug8wuW+eiQn3EU0476B/U8ieyE6eiLy0kTybpUbF9Ic8InnIFJfDOB+hCX5Ve9Ao8nj+PnytQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", "chalk": "^4.1.2", "cheerio": "^1.0.0-rc.10", - "gatsby-core-utils": "^4.12.0", + "gatsby-core-utils": "^4.10.0", "is-relative-url": "^3.0.0", "lodash": "^4.17.21", "mdast-util-definitions": "^4.0.0", @@ -11945,9 +11515,9 @@ } }, "node_modules/gatsby-remark-prismjs": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-prismjs/-/gatsby-remark-prismjs-7.12.0.tgz", - "integrity": "sha512-W5NETUn0UTdvfNUfCnAgfpEI0wIlWk0UDTOvqUFptvyN8R6UW3FMm+KC18uv9WOQyKMgvNGU+UjJ1towTQvNLw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/gatsby-remark-prismjs/-/gatsby-remark-prismjs-7.10.0.tgz", + "integrity": "sha512-J9a52Cbl+GrX4l2XHiO8OnBIJvs0FEtKhXlfzyKH5MipREkGFbq6ppm0YAXr2i2LSVvT71sXAJpKThStsq0Efw==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", @@ -11963,9 +11533,9 @@ } }, "node_modules/gatsby-script": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/gatsby-script/-/gatsby-script-2.12.0.tgz", - "integrity": "sha512-prYN8x8q+ErQpy8G4c8VR+BalFe1H7v09/esJWF8Ufmy7xi0FsbG56a/Ee2YDrnuu942lhY+ailWR+UnDSDA8g==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/gatsby-script/-/gatsby-script-2.10.0.tgz", + "integrity": "sha512-VeHXBNP3nZZCMILcVi8W+50clgH0b2X/Z6k2q3GNH6QNYxMy+Uyf9hgen0jPMH4B+O8anruAumOlDaO5srDY2g==", "dev": true, "engines": { "node": ">=18.0.0" @@ -11977,9 +11547,9 @@ } }, "node_modules/gatsby-sharp": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/gatsby-sharp/-/gatsby-sharp-1.12.0.tgz", - "integrity": "sha512-5MbTPKfzkOCtwT74+FZTUFKaul/2UyF10apvMcmIKomq71/jHf6wJx+rHtSdgyq19r4VWL8DGG2CKgSpe0z9GQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/gatsby-sharp/-/gatsby-sharp-1.10.0.tgz", + "integrity": "sha512-9D1hYBRyr85RBCqbqXbKdGgSoNO5qrqhqs7F9igOEAT9Qv8m65gfBBg+rVz6eWhlCA7TvYRBIsUfpAbB2dfTUg==", "dev": true, "dependencies": { "sharp": "^0.32.1" @@ -11989,20 +11559,20 @@ } }, "node_modules/gatsby-source-filesystem": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-5.12.0.tgz", - "integrity": "sha512-0BZkgADBu56vTzZ6TLvrMXhp8MzpEqvtpsI+VRtNTlsu6ULaHRjoMClomlAqWecjBXTkujhwpSjnIfEmpmCaLQ==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-5.10.0.tgz", + "integrity": "sha512-pTcqFvngUqap4NJfzG9VMmJ4T5TTf/WsMVTVORw18kprXZBchioLu0m5vVb9Tm7/MW7XPXvKJPZQkw+/otmVYw==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", "chokidar": "^3.5.3", "file-type": "^16.5.4", "fs-extra": "^11.1.1", - "gatsby-core-utils": "^4.12.0", + "gatsby-core-utils": "^4.10.0", "mime": "^3.0.0", "pretty-bytes": "^5.6.0", "valid-url": "^1.0.9", - "xstate": "^4.38.0" + "xstate": "^4.37.2" }, "engines": { "node": ">=18.0.0" @@ -12012,9 +11582,9 @@ } }, "node_modules/gatsby-telemetry": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-4.12.0.tgz", - "integrity": "sha512-pgaGCzKPZKWvNrX/VC/nE1S9Z20fzg4aA4ETD6hlI7ztu+BSyQG+Oebly4SdFGlVSLeq3x3+gOe/LY9Fry7TrA==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-4.10.0.tgz", + "integrity": "sha512-t3QRGZdRWIxMQ3yHtdON8KgihkMgq1VROjRb+fqzJtHRFIQu8wsrpXCrYmaYv2oWoWH9fWymMu5PhrSywjGuGQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -12025,24 +11595,24 @@ "boxen": "^5.1.2", "configstore": "^5.0.1", "fs-extra": "^11.1.1", - "gatsby-core-utils": "^4.12.0", + "gatsby-core-utils": "^4.10.0", "git-up": "^7.0.0", "is-docker": "^2.2.1", "lodash": "^4.17.21", - "node-fetch": "^2.6.11" + "node-fetch": "^2.6.9" }, "engines": { "node": ">=18.0.0" } }, "node_modules/gatsby-transformer-remark": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-6.12.0.tgz", - "integrity": "sha512-W7euQegQ3EzRvVntEldQWeCirInnhzKir2cMhFeAlqZm74h7fn2vlDr7CnHMncFsjZllj0AA73c+35+60Msntg==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-6.10.0.tgz", + "integrity": "sha512-Je8K75eNuVeGClegqb09KNbF3bSzNJSslEdzlH6AyyJYsh4A3DxFotA+5qshWCVx3J5psQ0cYoXGBXBbAltXOw==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.13", - "gatsby-core-utils": "^4.12.0", + "gatsby-core-utils": "^4.10.0", "gray-matter": "^4.0.3", "hast-util-raw": "^6.1.0", "hast-util-to-html": "^7.1.3", @@ -12057,7 +11627,7 @@ "remark-retext": "^4.0.0", "remark-stringify": "^9.0.1", "retext-english": "^3.0.4", - "sanitize-html": "^2.11.0", + "sanitize-html": "^2.10.0", "underscore.string": "^3.3.6", "unified": "^9.2.2", "unist-util-remove-position": "^3.0.0", @@ -12072,9 +11642,9 @@ } }, "node_modules/gatsby-worker": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/gatsby-worker/-/gatsby-worker-2.12.0.tgz", - "integrity": "sha512-wQTlAH8HdbJvCYZJ9jHCHSzF8E4SwB65suQ2hNo29wg4BhuMMpPWrLmraqPIGeAsBnWUEjzNGdedtzbCVwBJPQ==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/gatsby-worker/-/gatsby-worker-2.10.0.tgz", + "integrity": "sha512-LWsfp/NC4DljuQx5LxBwiz24yp8FpY1WLyZB61idc1Xqf2mhIYUKkeqpmPNzMiuICm44XkJadzdn77AdSEgw0Q==", "dev": true, "dependencies": { "@babel/core": "^7.20.12", @@ -12621,9 +12191,9 @@ } }, "node_modules/gatsby/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -12679,9 +12249,9 @@ } }, "node_modules/gatsby/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -12717,11 +12287,78 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "optional": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "optional": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "optional": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -12739,7 +12376,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -12774,7 +12410,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -12812,7 +12447,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -12832,7 +12466,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "peer": true, "dependencies": { "is-glob": "^4.0.3" @@ -12889,7 +12522,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -12898,7 +12530,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, "dependencies": { "define-properties": "^1.1.3" }, @@ -12913,7 +12544,6 @@ "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -12933,7 +12563,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -12972,16 +12601,21 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "peer": true }, "node_modules/graphql": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", - "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" @@ -12997,9 +12631,9 @@ } }, "node_modules/graphql-http": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/graphql-http/-/graphql-http-1.22.0.tgz", - "integrity": "sha512-9RBUlGJWBFqz9LwfpmAbjJL/8j/HCNkZwPBU5+Bfmwez+1Ay43DocMNQYpIWsWqH0Ftv6PTNAh2aRnnMCBJgLw==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/graphql-http/-/graphql-http-1.19.0.tgz", + "integrity": "sha512-fOD3hfp/G+Lhx2FWW5HsfmtJSsw6CikcpOboG7/mFo/pPUzn3yOwKdTFRnJ8MVY4ru69MT1nSPr/1gI/iuGNlw==", "dev": true, "engines": { "node": ">=12" @@ -13099,7 +12733,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -13111,7 +12744,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13120,7 +12752,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -13129,7 +12760,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -13141,7 +12771,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -13153,7 +12782,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -13165,7 +12793,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -13176,6 +12803,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true, + "optional": true + }, "node_modules/hash-wasm": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.9.0.tgz", @@ -13226,15 +12860,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-to-hyperscript/node_modules/style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "dev": true, - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, "node_modules/hast-util-from-parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", @@ -13436,20 +13061,10 @@ "dev": true }, "node_modules/html-entities": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", - "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.5.tgz", + "integrity": "sha512-72TJlcMkYsEJASa/3HnX7VT59htM7iSHbH59NSZbtc+22Ap0Txnlx91sfeB+/A7wNZg7UxtZdhAW4y+/jimrdg==", + "dev": true }, "node_modules/html-loader": { "version": "4.2.0", @@ -13612,7 +13227,6 @@ "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, "engines": { "node": ">= 4" } @@ -13640,7 +13254,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -13656,7 +13269,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -13677,7 +13289,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -13732,6 +13343,21 @@ "node": ">=8.0.0" } }, + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inquirer/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -13802,11 +13428,22 @@ "node": ">=8" } }, + "node_modules/inquirer/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, "dependencies": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -13879,11 +13516,25 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -13899,26 +13550,10 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -13942,7 +13577,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -13981,7 +13615,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -14002,10 +13635,9 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", "dependencies": { "has": "^1.0.3" }, @@ -14017,7 +13649,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -14065,23 +13696,10 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -14091,26 +13709,10 @@ "node": ">=8" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -14174,7 +13776,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14183,7 +13784,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -14195,7 +13795,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -14204,7 +13803,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -14228,7 +13826,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "peer": true, "engines": { "node": ">=8" @@ -14262,7 +13859,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -14311,7 +13907,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14320,7 +13915,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -14352,7 +13946,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -14367,7 +13960,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -14379,12 +13971,15 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "dependencies": { - "which-typed-array": "^1.1.11" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -14445,7 +14040,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14454,7 +14048,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -14466,7 +14059,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -14496,10 +14088,9 @@ } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/isexe": { "version": "2.0.0", @@ -14509,23 +14100,10 @@ "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/iterator.prototype": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.0.tgz", - "integrity": "sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "has-tostringtag": "^1.0.0", - "reflect.getprototypeof": "^1.0.3" + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/javascript-stringify": { @@ -14535,12 +14113,12 @@ "dev": true }, "node_modules/jest-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", - "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", "dev": true, "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "^29.5.0", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -14637,13 +14215,13 @@ } }, "node_modules/jest-worker": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", - "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.6.3", + "jest-util": "^29.5.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -14676,9 +14254,9 @@ } }, "node_modules/joi": { - "version": "17.10.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.0.tgz", - "integrity": "sha512-hrazgRSlhzacZ69LdcKfhi3Vu13z2yFfoAzmEov3yFIJlatTdVGUW6vle1zjH8qkzdCn/qGw8rapjqsObbYXAg==", + "version": "17.9.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz", + "integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==", "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0", @@ -14714,7 +14292,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -14743,14 +14320,12 @@ "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "node_modules/json5": { "version": "2.2.3", @@ -14776,15 +14351,12 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" }, "engines": { "node": ">=4.0" @@ -14797,9 +14369,9 @@ "dev": true }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -14844,14 +14416,12 @@ "node_modules/language-subtag-registry": { "version": "0.3.22", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" }, "node_modules/language-tags": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dev": true, "dependencies": { "language-subtag-registry": "~0.3.2" } @@ -14871,21 +14441,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/legacy-swc-helpers": { - "name": "@swc/helpers", - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "dev": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -14909,12 +14468,6 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/linkfs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/linkfs/-/linkfs-2.1.0.tgz", - "integrity": "sha512-kmsGcmpvjStZ0ATjuHycBujtNnXiZR28BTivEu0gAMDTT7GEyodcK6zSRtu6xsrdorrPZEIN380x7BD7xEYkew==", - "dev": true - }, "node_modules/lmdb": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.5.3.tgz", @@ -14969,7 +14522,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -14989,8 +14541,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", @@ -15059,8 +14610,7 @@ "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "node_modules/lodash.truncate": { "version": "4.4.2", @@ -15140,7 +14690,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -15539,7 +15088,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -15670,7 +15218,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -15777,7 +15324,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15818,13 +15364,12 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/msgpackr": { - "version": "1.9.7", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.7.tgz", - "integrity": "sha512-baUNaLvKQvVhzfWTNO07njwbZK1Lxjtb0P1JL6/EhXdLTHzR57/mZqqJC39TtQKvOmkJA4pcejS4dbk7BDgLLA==", + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.5.tgz", + "integrity": "sha512-/IJ3cFSN6Ci3eG2wLhbFEL6GT63yEaoN/R5My2QkV6zro+OJaVRLPlwvxY7EtHYSmDlQpk8stvOQTL2qJFkDRg==", "dev": true, "optionalDependencies": { "msgpackr-extract": "^3.0.2" @@ -15921,14 +15466,12 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/natural-compare-lite": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" }, "node_modules/needle": { "version": "2.9.1", @@ -16004,9 +15547,9 @@ } }, "node_modules/node-abi": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", - "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", + "version": "3.45.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz", + "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -16028,9 +15571,9 @@ } }, "node_modules/node-abi/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -16049,9 +15592,9 @@ "dev": true }, "node_modules/node-addon-api": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", - "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true }, "node_modules/node-domexception": { @@ -16074,9 +15617,9 @@ } }, "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -16093,6 +15636,17 @@ } } }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/node-gyp-build-optional-packages": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz", @@ -16198,10 +15752,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -16250,6 +15803,19 @@ "node": ">=8" } }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -16288,6 +15854,16 @@ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "dev": true }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -16300,7 +15876,21 @@ "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16309,7 +15899,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -16318,7 +15907,6 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -16333,14 +15921,13 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", - "dev": true, + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" @@ -16350,7 +15937,6 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -16363,40 +15949,26 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" - } - }, "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", - "dev": true, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", - "dev": true, + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" @@ -16480,26 +16052,25 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/ordered-binary": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.1.tgz", - "integrity": "sha512-9LtiGlPy982CsgxZvJGNNp2/NnrgEr6EAyN3iIEP3/8vd3YLgAZQHbQ75ZrkfBRGrNg37Dk3U6tuVb+B4Xfslg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.4.0.tgz", + "integrity": "sha512-EHQ/jk4/a9hLupIKxTfUsQRej1Yd/0QLQs3vGvIqg5ZtCYSzNhkzHoZc7Zf4e4kUlDaC3Uw8Q/1opOLNN2OKRQ==", "dev": true }, "node_modules/os-tmpdir": { @@ -16533,7 +16104,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -16548,7 +16118,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -16569,9 +16138,9 @@ } }, "node_modules/package-json": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", - "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", "dev": true, "dependencies": { "got": "^12.1.0", @@ -16587,9 +16156,9 @@ } }, "node_modules/package-json/node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", + "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", "dev": true, "engines": { "node": ">=14.16" @@ -16620,15 +16189,15 @@ } }, "node_modules/package-json/node_modules/cacheable-request": { - "version": "10.2.13", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.13.tgz", - "integrity": "sha512-3SD4rrMu1msNGEtNSt8Od6enwdo//U9s4ykmXfA2TD58kcLkCobtCDiby7kNyj7a/Q7lz/mAesAFI54rTdnvBA==", + "version": "10.2.10", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.10.tgz", + "integrity": "sha512-v6WB+Epm/qO4Hdlio/sfUn69r5Shgh39SsE9DSd4bIezP0mblOlObI+I0kUEM7J0JFc+I7pSeMeYaOYtX1N/VQ==", "dev": true, "dependencies": { "@types/http-cache-semantics": "^4.0.1", "get-stream": "^6.0.1", "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", + "keyv": "^4.5.2", "mimic-response": "^4.0.0", "normalize-url": "^8.0.0", "responselike": "^3.0.0" @@ -16757,9 +16326,9 @@ } }, "node_modules/package-json/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -16791,7 +16360,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -16955,13 +16523,80 @@ } }, "node_modules/password-prompt": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", - "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", + "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", + "dev": true, + "dependencies": { + "ansi-escapes": "^3.1.0", + "cross-spawn": "^6.0.5" + } + }, + "node_modules/password-prompt/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/password-prompt/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/password-prompt/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/password-prompt/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "dependencies": { - "ansi-escapes": "^4.3.2", - "cross-spawn": "^7.0.3" + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, "node_modules/patch-package": { @@ -17104,9 +16739,9 @@ } }, "node_modules/patch-package/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, "bin": { "semver": "bin/semver" @@ -17192,7 +16827,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -17216,8 +16850,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-root": { "version": "0.1.1", @@ -17250,7 +16883,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -17283,7 +16915,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -17435,9 +17066,9 @@ "dev": true }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", + "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", "funding": [ { "type": "opencollective", @@ -17603,9 +17234,9 @@ } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -18037,61 +17668,18 @@ } }, "node_modules/prebuild-install/node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/prebuild-install/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -18278,7 +17866,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, "engines": { "node": ">=6" } @@ -18316,6 +17903,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -18326,7 +17923,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -18342,12 +17938,6 @@ } ] }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true - }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -18371,9 +17961,9 @@ } }, "node_modules/ramda-adjunct": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-4.1.1.tgz", - "integrity": "sha512-BnCGsZybQZMDGram9y7RiryoRHS5uwx8YeGuUeDKuZuvK38XO6JJfmK85BwRWAKFA6pZ5nZBO/HBFtExVaf31w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-4.0.0.tgz", + "integrity": "sha512-W/NiJAlZdwZ/iUkWEQQgRdH5Szqqet1WoVH9cdqDVjFbVaZHuJfJRvsxqHhvq6tZse+yVbFatLDLdVa30wBlGQ==", "dev": true, "engines": { "node": ">=0.10.3" @@ -18432,6 +18022,15 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/raw-loader": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", @@ -18738,9 +18337,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-redux": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.2.tgz", - "integrity": "sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw==", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.7.tgz", + "integrity": "sha512-1vRQuCQI5Y2uNmrMXg81RXKiBHY3jBzvCvNmZF437O/Z9/pZ+ba2uYHbemYXb3g8rjsacBGo+/wmfrQKzMhJsg==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.1", @@ -18751,6 +18350,7 @@ "use-sync-external-store": "^1.0.0" }, "peerDependencies": { + "@reduxjs/toolkit": "^1 || ^2.0.0-beta.0", "@types/react": "^16.8 || ^17.0 || ^18.0", "@types/react-dom": "^16.8 || ^17.0 || ^18.0", "react": "^16.8 || ^17.0 || ^18.0", @@ -18759,6 +18359,9 @@ "redux": "^4 || ^5.0.0-beta.0" }, "peerDependenciesMeta": { + "@reduxjs/toolkit": { + "optional": true + }, "@types/react": { "optional": true }, @@ -18873,6 +18476,12 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -18957,30 +18566,10 @@ "node_modules/redux-thunk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", - "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", - "dev": true, - "peerDependencies": { - "redux": "^4" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.3.tgz", - "integrity": "sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "redux": "^4" } }, "node_modules/refractor": { @@ -19026,15 +18615,14 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", "dev": true, "dependencies": { "@babel/runtime": "^7.8.4" @@ -19049,7 +18637,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -19451,12 +19038,11 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", - "dev": true, + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -19584,7 +19170,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -19594,7 +19179,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -19618,7 +19202,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -19655,30 +19238,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -19703,7 +19262,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -19720,9 +19278,9 @@ "dev": true }, "node_modules/sanitize-html": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.11.0.tgz", - "integrity": "sha512-BG68EDHRaGKqlsNjJ2xUB7gpInPA8gVx/mvjO743hZaeMCZ2DwzW7xvsqZ+KNU4QKwj86HJ3uu2liISf2qBBUA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.10.0.tgz", + "integrity": "sha512-JqdovUd81dG4k87vZt6uA6YhDfWkUGruUu/aPmXLxXi45gZExnt9Bnw/qeQU8oGf82vPyaE0vO4aH0PbobB9JQ==", "dev": true, "dependencies": { "deepmerge": "^4.2.2", @@ -19746,9 +19304,9 @@ } }, "node_modules/sass": { - "version": "1.66.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", - "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", + "version": "1.63.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.63.3.tgz", + "integrity": "sha512-ySdXN+DVpfwq49jG1+hmtDslYqpS7SkOR5GpF6o2bmb1RL/xS+wvPmegMvMywyfsmAV6p7TgwXYGrCZIFFbAHg==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -19812,9 +19370,9 @@ } }, "node_modules/sass-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -19833,9 +19391,9 @@ "dev": true }, "node_modules/sass/node_modules/immutable": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", "dev": true }, "node_modules/sax": { @@ -19853,9 +19411,9 @@ } }, "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.2.0.tgz", + "integrity": "sha512-0zTyLGyDJYd/MBxG1AhJkKa6fpEBds4OQO2ut0w7OYG+ZGhGea09lijvzsqegYSik88zc7cUtIlnnO+/BvD6gQ==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -19884,10 +19442,9 @@ } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "bin": { "semver": "bin/semver.js" } @@ -20049,19 +19606,19 @@ "dev": true }, "node_modules/sharp": { - "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.1.tgz", + "integrity": "sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg==", "dev": true, "hasInstallScript": true, "dependencies": { "color": "^4.2.3", - "detect-libc": "^2.0.2", + "detect-libc": "^2.0.1", "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.1", - "semver": "^7.5.4", + "semver": "^7.5.0", "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", + "tar-fs": "^2.1.1", "tunnel-agent": "^0.6.0" }, "engines": { @@ -20072,9 +19629,9 @@ } }, "node_modules/sharp/node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "dev": true, "engines": { "node": ">=8" @@ -20099,9 +19656,9 @@ "dev": true }, "node_modules/sharp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -20161,7 +19718,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -20252,7 +19808,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, "engines": { "node": ">=8" } @@ -20353,15 +19908,15 @@ } }, "node_modules/socket.io-client": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.1.tgz", - "integrity": "sha512-Qk3Xj8ekbnzKu3faejo4wk2MzXA029XppiXtTF/PkbTg+fcwaTw1PlDrTrrrU4mKoYC4dvlApOnSeyLCKwek2w==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.6.1.tgz", + "integrity": "sha512-5UswCV6hpaRsNg5kkEHVcbBIXEYoVbMQaHJBXJCyEQ+CiFPV1NIOY0XOFWG4XR4GZcB8Kn6AsRs/9cy9TbqVMQ==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.5.1", - "socket.io-parser": "~4.2.4" + "engine.io-client": "~6.4.0", + "socket.io-parser": "~4.2.1" }, "engines": { "node": ">=10.0.0" @@ -20486,6 +20041,17 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-parser": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", @@ -20519,16 +20085,6 @@ "node": ">=10.0.0" } }, - "node_modules/streamx": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", - "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", - "dev": true, - "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" - } - }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -20556,8 +20112,7 @@ "node_modules/string-natural-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" }, "node_modules/string-similarity": { "version": "1.2.2", @@ -20597,7 +20152,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -20616,7 +20170,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -20633,7 +20186,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -20647,7 +20199,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -20676,7 +20227,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -20688,7 +20238,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, "engines": { "node": ">=4" } @@ -20714,7 +20263,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, "engines": { "node": ">=8" }, @@ -20772,9 +20320,9 @@ } }, "node_modules/style-to-object": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz", - "integrity": "sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", "dev": true, "dependencies": { "inline-style-parser": "0.1.1" @@ -20806,7 +20354,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -20818,7 +20365,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -20860,16 +20406,16 @@ } }, "node_modules/swagger-client": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.20.0.tgz", - "integrity": "sha512-5RLge2NIE1UppIT/AjUPEceT05hcBAzjiQkrXJYjpxsbFV/UDH3pp+fsrWbAeuZtgRdhNB9KDo+szLoUpzkydQ==", + "version": "3.19.8", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.19.8.tgz", + "integrity": "sha512-+zfLp+1U6kOK+o9QyYDWMXxMYGKiOK20LFjNDtZsVzscbg1S3REKW5BaH9zioWKtK1x2zZWeiqnhNKDL8WgLTQ==", "dev": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.13", - "@swagger-api/apidom-core": ">=0.74.1 <1.0.0", - "@swagger-api/apidom-json-pointer": ">=0.74.1 <1.0.0", - "@swagger-api/apidom-ns-openapi-3-1": ">=0.74.1 <1.0.0", - "@swagger-api/apidom-reference": ">=0.74.1 <1.0.0", + "@swagger-api/apidom-core": ">=0.70.0 <1.0.0", + "@swagger-api/apidom-json-pointer": ">=0.70.0 <1.0.0", + "@swagger-api/apidom-ns-openapi-3-1": ">=0.70.0 <1.0.0", + "@swagger-api/apidom-reference": ">=0.70.0 <1.0.0", "cookie": "~0.5.0", "cross-fetch": "^3.1.5", "deepmerge": "~4.3.0", @@ -20966,12 +20512,12 @@ } }, "node_modules/swagger-ui-react": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.19.1.tgz", - "integrity": "sha512-km83cp5ZlmCfROOq6QD1E7bM9f0RsvNrM2C1756UqZ6rRM0J3ex3ySyWa5+mcJRltn0eUB5NahqW8c6I4qwC6A==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-4.19.0.tgz", + "integrity": "sha512-DuGGmvYVqzfGUxvnC2WX9wPjHvBGewtw40mfzPxQYijQsx88UY9hCxRgomT+IojsG8AzSkUVmoXW486vn9V2uQ==", "dev": true, "dependencies": { - "@babel/runtime-corejs3": "^7.22.5", + "@babel/runtime-corejs3": "^7.21.5", "@braintree/sanitize-url": "=6.0.2", "base64-js": "^1.5.1", "classnames": "^2.3.1", @@ -21086,31 +20632,51 @@ } }, "node_modules/tar-fs": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", - "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "dependencies": { + "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^3.1.5" + "tar-stream": "^2.1.4" } }, "node_modules/tar-stream": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", - "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/terser": { - "version": "5.19.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", - "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "version": "5.17.7", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", + "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -21206,8 +20772,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "node_modules/through": { "version": "2.3.8", @@ -21250,7 +20815,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, "engines": { "node": ">=4" } @@ -21259,7 +20823,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -21315,15 +20878,15 @@ } }, "node_modules/tree-sitter": { - "version": "0.20.4", - "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.20.4.tgz", - "integrity": "sha512-rjfR5dc4knG3jnJNN/giJ9WOoN1zL/kZyrS0ILh+eqq8RNcIbiXA63JsMEgluug0aNvfQvK4BfCErN1vIzvKog==", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/tree-sitter/-/tree-sitter-0.20.1.tgz", + "integrity": "sha512-Cmb8V0ocamHbgWMVhZIa+78k/7r8VCQ6+ePG8eYEAO7AccwWi06Ct4ATNiI94KwhIkRl0+OwZ42/5nk3GnEMpQ==", "dev": true, "hasInstallScript": true, "optional": true, "dependencies": { - "nan": "^2.17.0", - "prebuild-install": "^7.1.1" + "nan": "^2.14.0", + "prebuild-install": "^6.0.1" } }, "node_modules/tree-sitter-json": { @@ -21348,6 +20911,54 @@ "nan": "^2.14.0" } }, + "node_modules/tree-sitter/node_modules/node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dev": true, + "optional": true, + "dependencies": { + "semver": "^5.4.1" + } + }, + "node_modules/tree-sitter/node_modules/prebuild-install": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", + "integrity": "sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.21.0", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tree-sitter/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -21386,7 +20997,6 @@ "version": "3.14.2", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dev": true, "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -21398,7 +21008,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, "dependencies": { "minimist": "^1.2.0" }, @@ -21416,7 +21025,6 @@ "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, "dependencies": { "tslib": "^1.8.1" }, @@ -21430,8 +21038,7 @@ "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/tunnel-agent": { "version": "0.6.0", @@ -21455,7 +21062,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -21467,7 +21073,6 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, "engines": { "node": ">=10" }, @@ -21494,62 +21099,10 @@ "integrity": "sha512-39wxbwHdQ2sTiBB8wAzKfQ9GN+om8w+sjNWzr+vZJR5AMD5J+J7Yc8AtXnU9r/r2c8XiDZ/smxutDmZehX/qpQ==", "dev": true }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -21575,19 +21128,18 @@ } }, "node_modules/types-ramda": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.4.tgz", - "integrity": "sha512-XO/820iRsCDwqLjE8XE+b57cVGPyk1h+U9lBGpDWvbEky+NQChvHVwaKM05WnW1c5z3EVQh8NhXFmh2E/1YazQ==", + "version": "0.29.3", + "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.3.tgz", + "integrity": "sha512-6z8/UCI5/kRorQ91Mo+TUXImHpGAhmhg8ZIdT/tNrG+xSQvDwJXYyT5Nlw2U5VpoKetUZVqQXYYLQyq5Bzccsg==", "dev": true, "dependencies": { "ts-toolbelt": "^9.6.0" } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true, + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", "peer": true, "bin": { "tsc": "bin/tsc", @@ -21620,7 +21172,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -21915,16 +21466,15 @@ } }, "node_modules/unraw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unraw/-/unraw-3.0.0.tgz", - "integrity": "sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unraw/-/unraw-2.0.1.tgz", + "integrity": "sha512-tdOvLfRzHolwYcHS6HIX860MkK9LQ4+oLuNwFYL7bpgTEO64PZrcQxkisgwJYCfF8sKiWLwwu1c83DvMkbefIQ==", "dev": true }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, "funding": [ { "type": "opencollective", @@ -21972,19 +21522,18 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", - "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", "dev": true, "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.0" + "punycode": "1.3.2", + "querystring": "0.2.0" } }, "node_modules/url-loader": { @@ -22025,9 +21574,9 @@ } }, "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", "dev": true }, "node_modules/use-sync-external-store": { @@ -22095,9 +21644,9 @@ } }, "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "node_modules/valid-url": { @@ -22107,9 +21656,9 @@ "dev": true }, "node_modules/validator": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", - "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", "engines": { "node": ">= 0.10" } @@ -22219,9 +21768,9 @@ } }, "node_modules/web-tree-sitter": { - "version": "0.20.3", - "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.3.tgz", - "integrity": "sha512-zKGJW9r23y3BcJusbgvnOH2OYAW40MXAOi9bi3Gcc7T4Gms9WWgXF8m6adsJWpGJEhgOzCrfiz1IzKowJWrtYw==", + "version": "0.20.7", + "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.20.7.tgz", + "integrity": "sha512-flC9JJmTII9uAeeYpWF8hxDJ7bfY+leldQryetll8Nv4WgI+MXc6h7TiyAZASWl9uC9TvmfdgOjZn1DAQecb3A==", "dev": true, "optional": true }, @@ -22232,9 +21781,9 @@ "dev": true }, "node_modules/webpack": { - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "version": "5.86.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.86.0.tgz", + "integrity": "sha512-3BOvworZ8SO/D4GVP+GoRC3fVeg5MO4vzmq8TJJEkdmopxyazGDxN8ClqN12uzrZW9Tv8EED8v5VSb6Sqyi0pg==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -22246,7 +21795,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.14.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -22256,7 +21805,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^3.1.2", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -22383,7 +21932,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -22395,43 +21943,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", - "dev": true, - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/which-collection": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, "dependencies": { "is-map": "^2.0.1", "is-set": "^2.0.1", @@ -22449,16 +21964,16 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -22467,6 +21982,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -22485,6 +22010,14 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -22607,9 +22140,9 @@ } }, "node_modules/xstate": { - "version": "4.38.2", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.38.2.tgz", - "integrity": "sha512-Fba/DwEPDLneHT3tbJ9F3zafbQXszOlyCJyQqqdzmtlY/cwE2th462KK48yaANf98jHlP6lJvxfNtN0LFKXPQg==", + "version": "4.37.2", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.37.2.tgz", + "integrity": "sha512-Qm337O49CRTZ3PRyRuK6b+kvI+D3JGxXIZCTul+xEsyFCVkTFDt5jixaL1nBWcUBcaTQ9um/5CRGVItPi7fveg==", "dev": true, "funding": { "type": "opencollective", @@ -22640,13 +22173,12 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true, "engines": { "node": ">= 14" @@ -22766,7 +22298,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js index f324abf0..81f22b42 100644 --- a/docs/src/pages/index.js +++ b/docs/src/pages/index.js @@ -15,20 +15,4 @@ const IndexPage = () => ( ); -export function Head() { - return ( - <> - - - - - ); -} - export default IndexPage; diff --git a/frontend/env.yml b/frontend/env.yml index ee3a04fd..30ff4b5a 100644 --- a/frontend/env.yml +++ b/frontend/env.yml @@ -1,12 +1,13 @@ ---- dev: FRONTEND_DOMAIN: '' staging: - DOMAIN: 'staging-cd.crossfeed.cyber.dhs.gov' + DOMAIN: 'staging.crossfeed.cyber.dhs.gov' + VPC_ENDPOINT: ${ssm:/crossfeed/staging/BACKEND_VPC_ENDPOINT} prod: DOMAIN: 'crossfeed.cyber.dhs.gov' + VPC_ENDPOINT: ${ssm:/crossfeed/prod/BACKEND_VPC_ENDPOINT} dev-vpc: securityGroupIds: diff --git a/frontend/prod.env b/frontend/prod.env index 46f8c593..c6c9430b 100644 --- a/frontend/prod.env +++ b/frontend/prod.env @@ -1,8 +1,8 @@ REACT_APP_API_URL=https://api.crossfeed.cyber.dhs.gov REACT_APP_FARGATE_LOG_GROUP=crossfeed-prod-worker REACT_APP_USE_COGNITO=1 -REACT_APP_USER_POOL_ID=us-east-1_MZgKoBmkN -REACT_APP_USER_POOL_CLIENT_ID=6qseah01b4vse02srrpra2u350 +REACT_APP_USER_POOL_ID=us-gov-west-1_9hASwOxcw +REACT_APP_USER_POOL_CLIENT_ID=1d3d10ksfpaq4rmsdo64fltsaa REACT_APP_TERMS_VERSION=1 REACT_APP_COOKIE_DOMAIN=crossfeed.cyber.dhs.gov REACT_APP_TOTP_ISSUER=CISA Crossfeed \ No newline at end of file diff --git a/frontend/public/index.html b/frontend/public/index.html index 3d3e117f..9141c91d 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -1,22 +1,20 @@ - - - - - - - - - Crossfeed - - -
- - + + + + + + + + + + + Crossfeed + + + +
+ + + \ No newline at end of file diff --git a/frontend/scripts/api.js b/frontend/scripts/api.js index 9dcc23d8..3ada623b 100644 --- a/frontend/scripts/api.js +++ b/frontend/scripts/api.js @@ -1,11 +1,10 @@ // Main entrypoint for serverless frontend code. import serverless from 'serverless-http'; -import cors from 'cors'; import helmet from 'helmet'; import express from 'express'; import path from 'path'; -import { ALLOW_ORIGIN, ALLOW_METHODS } from './constants.js'; +import logger from 'lambda-logger'; export const app = express(); @@ -13,32 +12,23 @@ app.use((req, res, next) => { const sanitizedHeaders = { ...req.headers }; // Remove or replace sensitive headers delete sanitizedHeaders['authorization']; - console.log(`Request Headers: ${JSON.stringify(sanitizedHeaders)}`); + res.on('finish', () => { + const logInfo = { + httpMethod: req.method, + protocol: req.protocol, + originalUrl: req.originalUrl, + path: req.path, + statusCode: res.statusCode, + headers: sanitizedHeaders + }; + logger.info(`Request Info: ${JSON.stringify(logInfo)}`); + }); next(); }); -app.use(cors({ origin: ALLOW_ORIGIN, methods: ALLOW_METHODS })); - app.use( helmet({ - contentSecurityPolicy: { - directives: { - defaultSrc: [ - "'self'", - 'https://cognito-idp.us-east-1.amazonaws.com', - 'https://api.staging-cd.crossfeed.cyber.dhs.gov' - ], - objectSrc: ["'none'"], - scriptSrc: [ - "'self'", - 'https://api.staging-cd.crossfeed.cyber.dhs.gov' - // Add any other allowed script sources here - ], - frameAncestors: ["'none'"] - // Add other directives as needed - } - }, - hsts: { + strictTransportSecurity: { maxAge: 31536000, includeSubDomains: true, preload: true @@ -46,10 +36,28 @@ app.use( }) ); -app.use((req, res, next) => { - res.setHeader('X-XSS-Protection', '0'); - next(); -}); +app.use( + helmet.contentSecurityPolicy({ + directives: { + defaultSrc: [ + "'self'", + 'https://cognito-idp.us-gov-west-1.amazonaws.com', + 'https://api.crossfeed.cyber.dhs.gov' + ], + scriptSrc: [ + "'self'", + 'https://api.crossfeed.cyber.dhs.gov', + // Add any other allowed script sources here + "'unsafe-inline'" // Allow inline scripts (not recommended for security) + ] + // Add other directives as needed + } + }) +); + +// app.get('/', (request, response) => { +// response.send("Hello world " + __dirname + " " + JSON.stringify(getDirectories(path.join(__dirname, '../')))); +// }) app.use(express.static(path.join(__dirname, '../build'))); diff --git a/frontend/scripts/lambda-logger.js b/frontend/scripts/lambda-logger.js new file mode 100644 index 00000000..90c7d770 --- /dev/null +++ b/frontend/scripts/lambda-logger.js @@ -0,0 +1,40 @@ +// logger.js +import { createLogger, transports, format } from 'winston'; + +/** + * Initializes custom logger for Cloudwatch + */ + +// Define a custom format to uppercase the level +const uppercaseLevelFormat = format((info) => { + info.level = info.level.toUpperCase(); + return info; +}); + +// Middleware function to add RequestId +const addRequestId = format((info) => { + // Extract requestId from the context + const requestId = info.context?.awsRequestId; + if (requestId) { + info.requestId = requestId; + } + return info; +}); + +// Configure Winston logger +const logger = createLogger({ + format: format.combine( + format.timestamp(), + uppercaseLevelFormat(), + addRequestId(), + format.printf( + (info) => + `${info.level} RequestId: ${info.requestId || 'undefined'} ${ + info.timestamp + } ${info.message}` + ) + ), + transports: [new transports.Console()] +}); + +export default logger; diff --git a/frontend/serverless.yml b/frontend/serverless.yml index 22a03f0e..83dd593e 100644 --- a/frontend/serverless.yml +++ b/frontend/serverless.yml @@ -1,4 +1,3 @@ ---- service: crossfeed-frontend frameworkVersion: '3' @@ -17,18 +16,27 @@ custom: provider: name: aws - region: us-east-1 - endpointType: REGIONAL + region: us-gov-east-1 + endpointType: PRIVATE runtime: nodejs16.x timeout: 30 stage: ${opt:stage, 'dev'} environment: ${file(env.yml):${self:provider.stage}, ''} vpc: ${file(env.yml):${self:provider.stage}-vpc, ''} + vpcEndpointIds: + - ${file(env.yml):${self:provider.stage}.VPC_ENDPOINT, ''} apiGateway: binaryMediaTypes: - 'image/*' - 'font/*' resourcePolicy: + - Effect: Deny + Principal: '*' + Action: 'execute-api:Invoke' + Resource: 'execute-api:/${self:provider.stage}/*/*' + Condition: + StringNotEquals: + 'aws:sourceVpce': ${file(env.yml):${self:provider.stage}.VPC_ENDPOINT, ''} - Effect: Allow Principal: '*' Action: 'execute-api:Invoke' @@ -43,18 +51,12 @@ functions: handler: scripts/api.handler events: - http: - path: / # this matches the base path + path: / # this matches the base path method: GET - http: - path: /{any+} # this matches any path, the token 'any' doesn't mean anything special + path: /{any+} # this matches any path, the token 'any' doesn't mean anything special method: GET # provisionedConcurrency: 1 - docs: - handler: scripts/docs.handler - events: - - http: - path: /docs - method: GET plugins: - serverless-domain-manager diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 818a0f3d..bf934043 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -16,7 +16,6 @@ import { import { Domain, AuthLogin, - AuthLoginCreate, AuthCreateAccount, Scans, Scan, @@ -32,10 +31,10 @@ import { LoginGovCallback, Feeds, Domains, - Reports, - RegionUsers + Reports } from 'pages'; import { Layout, RouteGuard } from 'components'; +import { CrossfeedFooter } from './components/Footer'; import './styles.scss'; import { Authenticator } from '@aws-amplify/ui-react'; @@ -50,7 +49,7 @@ API.configure({ if (process.env.REACT_APP_USE_COGNITO) { Auth.configure({ - region: 'us-east-1', + region: 'us-gov-west-1', userPoolId: process.env.REACT_APP_USER_POOL_ID, userPoolWebClientId: process.env.REACT_APP_USER_POOL_CLIENT_ID }); @@ -104,14 +103,9 @@ const App: React.FC = () => ( exact path="/signup" render={() => } - unauth={AuthLoginCreate} - component={Risk} - /> - } - unauth={AuthLoginCreate} + unauth={(props) => ( + + )} component={Risk} /> ( /> - + ( )} - permissions={['standard', 'globalView']} /> - - - - - + + + + + + - - - - + + + + diff --git a/frontend/src/pages/Scans/ScanTasksView.tsx b/frontend/src/pages/Scans/ScanTasksView.tsx index 78e958b9..f3bee932 100644 --- a/frontend/src/pages/Scans/ScanTasksView.tsx +++ b/frontend/src/pages/Scans/ScanTasksView.tsx @@ -92,7 +92,7 @@ export const ScanTasksView: React.FC = () => {