0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00

feat(connector): add vonage connector (#6768)

This commit is contained in:
wangsijie 2024-11-06 15:56:43 +08:00 committed by GitHub
parent 00e17525e7
commit 947d2e4563
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 662 additions and 19 deletions

View file

@ -0,0 +1,28 @@
# Vonage SMS connector
The official Logto connector for Vonage SMS.
## Get started
Vonage is a global communications provider, offering robust cloud-based communication services, including SMS (short message service). The Vonage SMS Connector is a plugin provided by the Logto team to enable Logto end-users to register and sign in to their Logto account via SMS verification codes.
## Set up in Vonage
> 💡 **Tip**
>
> You can skip this step if you have already completed them.
To work with this connector, you will need to [sign up for an account](https://developer.vonage.com/en/account/guides/dashboard-management#create-and-configure-a-vonage-account) in Vonage. This will give you an API key and secret that you can use to access the APIs through this connector.
Once you have an account, you can find your API key and API secret at the top of the Vonage API Dashboard.
And you may need to [rant a virtual number](https://developer.vonage.com/en/numbers/guides/number-management#rent-a-virtual-number) to send SMS messages.
See the [Vonage SMS API](https://developer.vonage.com/en/messaging/sms/overview) for more information.
## Set up in Logto
1. **API Key**: Your Vonage API key.
2. **API Secret**: Your Vonage API secret.
3. **Brand Name**: The brand name you want to use to send the SMS, this is also called the `from` field, see the [Sender Identity](https://developer.vonage.com/en/messaging/sms/guides/custom-sender-id) for more information.
4. **Templates**: The templates you want to use to send the SMS, you can use the default templates or modify them as needed.

View file

@ -0,0 +1,9 @@
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 75.5 65.8" style="enable-background:new 0 0 75.5 65.8;" xml:space="preserve">
<g>
<path d="M14.9,0H0l21.3,48.3c0.2,0.4,0.7,0.4,0.8,0l7.1-16.6L14.9,0z">
</path>
<path d="M60.4,0c0,0-22.9,52.4-25.9,57.2c-3.6,5.6-5.9,7.8-10.3,8.4c0,0-0.1,0-0.1,0.1c0,0,0,0.1,0.1,0.1h13.7
c5.9,0,10.2-4.9,12.6-9.3C53.1,51.5,75.5,0,75.5,0H60.4z">
</path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 495 B

View file

@ -0,0 +1,68 @@
{
"name": "@logto/connector-vonage-sms",
"version": "0.0.0",
"description": "Vonage SMS connector implementation.",
"author": "Silverhand Inc. <contact@silverhand.io>",
"dependencies": {
"@logto/connector-kit": "workspace:^4.0.0",
"@silverhand/essentials": "^2.9.1",
"@vonage/auth": "^1.12.0",
"@vonage/server-sdk": "^3.19.0",
"zod": "^3.23.8"
},
"main": "./lib/index.js",
"module": "./lib/index.js",
"exports": "./lib/index.js",
"license": "MPL-2.0",
"type": "module",
"files": [
"lib",
"docs",
"logo.svg",
"logo-dark.svg"
],
"scripts": {
"precommit": "lint-staged",
"check": "tsc --noEmit",
"build": "tsup",
"dev": "tsup --watch",
"lint": "eslint --ext .ts src",
"lint:report": "pnpm lint --format json --output-file report.json",
"test": "vitest src",
"test:ci": "pnpm run test --silent --coverage",
"prepublishOnly": "pnpm build"
},
"engines": {
"node": "^20.9.0"
},
"eslintConfig": {
"extends": "@silverhand",
"settings": {
"import/core-modules": [
"@silverhand/essentials",
"got",
"nock",
"snakecase-keys",
"zod"
]
}
},
"prettier": "@silverhand/eslint-config/.prettierrc",
"publishConfig": {
"access": "public"
},
"devDependencies": {
"@silverhand/eslint-config": "6.0.1",
"@silverhand/ts-config": "6.0.0",
"@types/node": "^20.11.20",
"@types/supertest": "^6.0.2",
"@vitest/coverage-v8": "^2.0.0",
"eslint": "^8.56.0",
"lint-staged": "^15.0.2",
"prettier": "^3.0.0",
"supertest": "^7.0.0",
"tsup": "^8.3.0",
"typescript": "^5.5.3",
"vitest": "^2.0.0"
}
}

View file

@ -0,0 +1,65 @@
import type { ConnectorMetadata } from '@logto/connector-kit';
import { ConnectorConfigFormItemType } from '@logto/connector-kit';
export const defaultMetadata: ConnectorMetadata = {
id: 'vonage-sms',
target: 'vonage-sms',
platform: null,
name: {
en: 'Vonage SMS Service',
},
logo: './logo.svg',
logoDark: null,
description: {
en: 'Communications APIs to connect the world',
},
readme: './README.md',
formItems: [
{
key: 'apiKey',
label: 'API Key',
type: ConnectorConfigFormItemType.Text,
required: true,
},
{
key: 'apiSecret',
label: 'API Secret',
type: ConnectorConfigFormItemType.Text,
required: true,
},
{
key: 'brandName',
label: 'Brand Name',
type: ConnectorConfigFormItemType.Text,
required: true,
},
{
key: 'templates',
label: 'Templates',
type: ConnectorConfigFormItemType.Json,
required: true,
defaultValue: [
{
usageType: 'SignIn',
content:
'Your Logto sign-in verification code is {{code}}. The code will remain active for 10 minutes.',
},
{
usageType: 'Register',
content:
'Your Logto sign-up verification code is {{code}}. The code will remain active for 10 minutes.',
},
{
usageType: 'ForgotPassword',
content:
'Your Logto password change verification code is {{code}}. The code will remain active for 10 minutes.',
},
{
usageType: 'Generic',
content:
'Your Logto verification code is {{code}}. The code will remain active for 10 minutes.',
},
],
},
],
};

View file

@ -0,0 +1,10 @@
import createConnector from './index.js';
import { mockedConfig } from './mock.js';
const getConfig = vi.fn().mockResolvedValue(mockedConfig);
describe('Vonage SMS connector', () => {
it('init without throwing errors', async () => {
await expect(createConnector({ getConfig })).resolves.not.toThrow();
});
});

View file

@ -0,0 +1,69 @@
import { assert } from '@silverhand/essentials';
import type {
GetConnectorConfig,
SendMessageFunction,
CreateConnector,
SmsConnector,
} from '@logto/connector-kit';
import {
ConnectorError,
ConnectorErrorCodes,
validateConfig,
ConnectorType,
replaceSendMessageHandlebars,
} from '@logto/connector-kit';
import { Auth } from '@vonage/auth';
import { Vonage } from '@vonage/server-sdk';
import { defaultMetadata } from './constant.js';
import { vonageSmsConfigGuard } from './types.js';
const sendMessage =
(getConfig: GetConnectorConfig): SendMessageFunction =>
async (data, inputConfig) => {
const { to, type, payload } = data;
const config = inputConfig ?? (await getConfig(defaultMetadata.id));
validateConfig(config, vonageSmsConfigGuard);
const { apiKey, apiSecret, brandName, templates } = config;
const template = templates.find((template) => template.usageType === type);
assert(
template,
new ConnectorError(
ConnectorErrorCodes.TemplateNotFound,
`Cannot find template for type: ${type}`
)
);
const vonageAuth = new Auth({
apiKey,
apiSecret,
});
const vonage = new Vonage(vonageAuth);
try {
return await vonage.sms.send({
from: brandName,
to,
text: replaceSendMessageHandlebars(template.content, payload),
});
} catch (error: unknown) {
if (error instanceof Error) {
throw new ConnectorError(ConnectorErrorCodes.General, error.message);
}
throw error;
}
};
const createVonageSmsConnector: CreateConnector<SmsConnector> = async ({ getConfig }) => {
return {
metadata: defaultMetadata,
type: ConnectorType.Sms,
configGuard: vonageSmsConfigGuard,
sendMessage: sendMessage(getConfig),
};
};
export default createVonageSmsConnector;

View file

@ -0,0 +1,17 @@
import type { VonageSmsConfig } from './types.js';
const mockedApiKey = 'api-key';
const mockedApiSecret = 'api-secret';
const mockedBrandName = 'brand name';
export const mockedConfig: VonageSmsConfig = {
apiKey: mockedApiKey,
apiSecret: mockedApiSecret,
brandName: mockedBrandName,
templates: [
{
usageType: 'Generic',
content: 'This is for testing purposes only. Your verification code is {{code}}.',
},
],
};

View file

@ -0,0 +1,33 @@
import { z } from 'zod';
/**
* UsageType here is used to specify the use case of the template, can be either
* 'Register', 'SignIn', 'ForgotPassword', 'Generic'.
*/
const requiredTemplateUsageTypes = ['Register', 'SignIn', 'ForgotPassword', 'Generic'];
const templateGuard = z.object({
usageType: z.string(),
content: z.string(),
});
export const vonageSmsConfigGuard = z.object({
apiKey: z.string(),
apiSecret: z.string(),
brandName: z.string(),
templates: z.array(templateGuard).refine(
(templates) =>
requiredTemplateUsageTypes.every((requiredType) =>
templates.map((template) => template.usageType).includes(requiredType)
),
(templates) => ({
message: `Template with UsageType (${requiredTemplateUsageTypes
.filter(
(requiredType) => !templates.map((template) => template.usageType).includes(requiredType)
)
.join(', ')}) should be provided!`,
})
),
});
export type VonageSmsConfig = z.infer<typeof vonageSmsConfigGuard>;

View file

@ -54,6 +54,8 @@ function CreateConnectorForm({ onClose, isOpen: isFormOpen, type }: Props) {
.filter(({ id }) => id !== 'saml') .filter(({ id }) => id !== 'saml')
// Hide the entrance of adding HTTP Email connector // Hide the entrance of adding HTTP Email connector
.filter(({ id }) => id !== 'http-email') .filter(({ id }) => id !== 'http-email')
// Hide the entrance of adding Vonage SMS connector
.filter(({ id }) => id !== 'vonage')
); );
return allGroups return allGroups

View file

@ -2501,6 +2501,61 @@ importers:
specifier: ^2.0.0 specifier: ^2.0.0
version: 2.0.0(@types/node@20.11.20)(happy-dom@14.12.3)(jsdom@20.0.2)(lightningcss@1.25.1)(sass@1.77.8) version: 2.0.0(@types/node@20.11.20)(happy-dom@14.12.3)(jsdom@20.0.2)(lightningcss@1.25.1)(sass@1.77.8)
packages/connectors/connector-vonage-sms:
dependencies:
'@logto/connector-kit':
specifier: workspace:^4.0.0
version: link:../../toolkit/connector-kit
'@silverhand/essentials':
specifier: ^2.9.1
version: 2.9.2
'@vonage/auth':
specifier: ^1.12.0
version: 1.12.0
'@vonage/server-sdk':
specifier: ^3.19.0
version: 3.19.0
zod:
specifier: ^3.23.8
version: 3.23.8
devDependencies:
'@silverhand/eslint-config':
specifier: 6.0.1
version: 6.0.1(eslint@8.57.0)(prettier@3.0.0)(typescript@5.5.3)
'@silverhand/ts-config':
specifier: 6.0.0
version: 6.0.0(typescript@5.5.3)
'@types/node':
specifier: ^20.11.20
version: 20.12.7
'@types/supertest':
specifier: ^6.0.2
version: 6.0.2
'@vitest/coverage-v8':
specifier: ^2.0.0
version: 2.0.0(vitest@2.0.0(@types/node@20.12.7)(happy-dom@14.12.3)(jsdom@20.0.2)(lightningcss@1.25.1)(sass@1.77.8))
eslint:
specifier: ^8.56.0
version: 8.57.0
lint-staged:
specifier: ^15.0.2
version: 15.0.2
prettier:
specifier: ^3.0.0
version: 3.0.0
supertest:
specifier: ^7.0.0
version: 7.0.0
tsup:
specifier: ^8.3.0
version: 8.3.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(jiti@1.21.0)(postcss@8.4.39)(typescript@5.5.3)(yaml@2.4.5)
typescript:
specifier: ^5.5.3
version: 5.5.3
vitest:
specifier: ^2.0.0
version: 2.0.0(@types/node@20.12.7)(happy-dom@14.12.3)(jsdom@20.0.2)(lightningcss@1.25.1)(sass@1.77.8)
packages/connectors/connector-wechat-native: packages/connectors/connector-wechat-native:
dependencies: dependencies:
'@logto/connector-kit': '@logto/connector-kit':
@ -4677,7 +4732,7 @@ packages:
'@azure/core-http@3.0.4': '@azure/core-http@3.0.4':
resolution: {integrity: sha512-Fok9VVhMdxAFOtqiiAtg74fL0UJkt0z3D+ouUUxcRLzZNBioPRAMJFVxiWoJljYpXsRi4GDQHzQHDc9AiYaIUQ==} resolution: {integrity: sha512-Fok9VVhMdxAFOtqiiAtg74fL0UJkt0z3D+ouUUxcRLzZNBioPRAMJFVxiWoJljYpXsRi4GDQHzQHDc9AiYaIUQ==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
deprecated: This package is no longer supported. Please migrate to use @azure/core-rest-pipeline deprecated: deprecating as we migrated to core v2
'@azure/core-lro@2.5.1': '@azure/core-lro@2.5.1':
resolution: {integrity: sha512-JHQy/bA3NOz2WuzOi5zEk6n/TJdAropupxUT521JIJvW7EXV2YN2SFYZrf/2RHeD28QAClGdynYadZsbmP+nyQ==} resolution: {integrity: sha512-JHQy/bA3NOz2WuzOi5zEk6n/TJdAropupxUT521JIJvW7EXV2YN2SFYZrf/2RHeD28QAClGdynYadZsbmP+nyQ==}
@ -6889,6 +6944,9 @@ packages:
'@types/debounce@1.2.4': '@types/debounce@1.2.4':
resolution: {integrity: sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==} resolution: {integrity: sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==}
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
'@types/debug@4.1.7': '@types/debug@4.1.7':
resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==}
@ -6988,6 +7046,15 @@ packages:
'@types/koa__cors@5.0.0': '@types/koa__cors@5.0.0':
resolution: {integrity: sha512-LCk/n25Obq5qlernGOK/2LUwa/2YJb2lxHUkkvYFDOpLXlVI6tKcdfCHRBQnOY4LwH6el5WOLs6PD/a8Uzau6g==} resolution: {integrity: sha512-LCk/n25Obq5qlernGOK/2LUwa/2YJb2lxHUkkvYFDOpLXlVI6tKcdfCHRBQnOY4LwH6el5WOLs6PD/a8Uzau6g==}
'@types/lodash.omit@4.5.8':
resolution: {integrity: sha512-CeIDttD58jS7R7M4rI8ZNBbV6JGG+BkKQFnWjduFJwTxqo8NdT/xjbjmQc39MVB2TKJ0rvQxddNaIna+W/pQvw==}
'@types/lodash.omit@4.5.9':
resolution: {integrity: sha512-zuAVFLUPJMOzsw6yawshsYGgq2hWUHtsZgeXHZmSFhaQQFC6EQ021uDKHkSjOpNhSvtNSU9165/o3o/Q51GpTw==}
'@types/lodash@4.17.13':
resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==}
'@types/mdast@3.0.15': '@types/mdast@3.0.15':
resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
@ -7015,6 +7082,9 @@ packages:
'@types/ms@0.7.31': '@types/ms@0.7.31':
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
'@types/node-fetch@2.6.11':
resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==}
'@types/node-fetch@2.6.2': '@types/node-fetch@2.6.2':
resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==}
@ -7261,6 +7331,63 @@ packages:
'@vitest/utils@2.0.0': '@vitest/utils@2.0.0':
resolution: {integrity: sha512-t0jbx8VugWEP6A29NbyfQKVU68Vo6oUw0iX3a8BwO3nrZuivfHcFO4Y5UsqXlplX+83P9UaqEvC2YQhspC0JSA==} resolution: {integrity: sha512-t0jbx8VugWEP6A29NbyfQKVU68Vo6oUw0iX3a8BwO3nrZuivfHcFO4Y5UsqXlplX+83P9UaqEvC2YQhspC0JSA==}
'@vonage/accounts@1.16.0':
resolution: {integrity: sha512-qSgHZ3mUcrpMaIRwbIJsVqGyqyfvwsB9kuU52+ki+KcUmTVNr1tblfpUMgjrFHNxXeumq2ZUj6IuFRlN6/Rf5Q==}
'@vonage/applications@1.16.0':
resolution: {integrity: sha512-CWZMYdKK2QlzTlChQ3F33PdVfTI0GL6F63zbX/6k0w/pmLf+o2zJzsj1vKShqibo5ulOhtFgW09EICGuYvlQdw==}
'@vonage/auth@1.12.0':
resolution: {integrity: sha512-tV7RvEhLn/w506PjA9NKFq/Kglxs98vpQ7qsyNXB8xUqblJaiajVhBASFKaYai+MdsBjjacbPRc+9hDKNHezEw==}
'@vonage/conversations@1.7.0':
resolution: {integrity: sha512-zeKRYq3wD5EDeeEv+PplumU7Brp2WOD7owlro5SVkektKlw0+rk2KgGUVIBdsVVf5L7ebEZDDq45IuZxdI2AyA==}
'@vonage/jwt@1.11.0':
resolution: {integrity: sha512-P9KM6QYBBkW8ruC+HeOxFGVQh123KCqgVuGyWjp+VjD64WikYAfT73N5isP4rQob0umpMDjGKNOIAYsVAaRdnA==}
'@vonage/messages@1.18.0':
resolution: {integrity: sha512-RXD/MhkL2Ohs2Q7MO9Buta4MgxTy5ecv4YvGyp8x3uJgpA9add++6r8TDgPygBl4TR7WmS4YESdP/2JSnLHQ+Q==}
'@vonage/number-insights@1.16.0':
resolution: {integrity: sha512-YhHKZmEEzdvi8AiDSbl99pYXKEgc8MePzedcFGwQsAthkMVCd7SPExsTuIXr58TrJ+aakAf9SWxovmMRCvSFjg==}
'@vonage/numbers@1.16.0':
resolution: {integrity: sha512-0FOaeRDKkzJdUcyIcryK3Hw9SomgCa/LZJXRbMyjoiO3th4EtSJEg+7u9tKpL7Vq/APdaWwyjKQuVpWAsvAWPQ==}
'@vonage/pricing@1.16.0':
resolution: {integrity: sha512-3OTB2/DDUdKMvK0Ik1k0Njopbm50t79fu/zvbjs8MfRF7V2RGtaWPtQnUzWERPJ0MkW/wgtECJTP3yDz+N01NQ==}
'@vonage/redact@1.15.0':
resolution: {integrity: sha512-t4SK+5RJse0GCz9c8YJ8B1Uoxkwy0S7LOeaWk4JkKxBcRTSBrDHx5gs4Mycw8fvupDqZmJiw8EuaQMoezjfJdg==}
'@vonage/server-client@1.16.0':
resolution: {integrity: sha512-fEzBeBI68B/IcYMnwR0YJ3QfEGWq75fUQPuVLc10+sRpn8K2eJj10Yl24OwtYbLXikg8IzMx0DfIUG05E+BPlg==}
'@vonage/server-sdk@3.19.0':
resolution: {integrity: sha512-Oeag+gT2pi04kgZUkbbdYEKQFgGD/xkQ7wUp9mf3iWaznnd5jpz82Lup4VJ2Q8cNZbAOuInrQb8WwSlDXO9vMQ==}
'@vonage/sms@1.17.0':
resolution: {integrity: sha512-Z07ijLEDCcGPsdjtxB/TZs1Ssyfr2ZScnUgpi2TF8GlpbCsjCyIt4Ib/fzqnKs5boCxeZxdIyLV8i7PeH0I/dA==}
'@vonage/users@1.10.0':
resolution: {integrity: sha512-/yzwjqqxtNoEundGmBHGlf1JeWSoFW6yQEno1oME3nEQwUwChxO0559+MmQ+hRuxaYCIDFCv+oZ2zlJTX0+W+Q==}
'@vonage/verify2@1.15.0':
resolution: {integrity: sha512-EuVpE10YYoDGWkoctK3z53u3kZ9t1M0m8Kis5Mn79/vsfxULcDfmdGrVfZDwT6qIAMsnIdLD+G3QXbpRCgzDDw==}
'@vonage/verify@1.16.0':
resolution: {integrity: sha512-UTt4Yr4bNgzep/XPKyi3WX14mej5NLEqYnLBw4xPDHCWWVf+kn+6QpE7QVJ+kriw/4TwbKAu7hj415i4psJRLg==}
'@vonage/vetch@1.8.0':
resolution: {integrity: sha512-CuYnW5VrywLhWSdnAb+06b0fan2oDa0pexMi7kQHtRte/TIO0t0TSZvV5/74xDNtSqkhNFGgAlc8pgwn84sR4Q==}
'@vonage/video@1.20.0':
resolution: {integrity: sha512-N75h2dgL54ob0AYQt8K35PDxoft4Xzkke8p7N2h7Er3R1Q+MnowECPEiIMFzRghm59JCrwXmYlBoCQCUv9yYJA==}
'@vonage/voice@1.16.0':
resolution: {integrity: sha512-sWLGccwcG63HCDAqyGioc9FgfK9Sq8/4Pa/iOksa0lfFkhqVhWdzLzQZAlNM8uvA+HD9LuzxbKwAvgdwBncbPw==}
'@web/browser-logs@0.4.0': '@web/browser-logs@0.4.0':
resolution: {integrity: sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==} resolution: {integrity: sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
@ -10800,6 +10927,9 @@ packages:
lodash.isnumber@3.0.3: lodash.isnumber@3.0.3:
resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==}
lodash.isobject@3.0.2:
resolution: {integrity: sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==}
lodash.isplainobject@4.0.6: lodash.isplainobject@4.0.6:
resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
@ -10815,6 +10945,9 @@ packages:
lodash.mergewith@4.6.2: lodash.mergewith@4.6.2:
resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==}
lodash.omit@4.5.0:
resolution: {integrity: sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==}
lodash.once@4.1.1: lodash.once@4.1.1:
resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
@ -13361,6 +13494,9 @@ packages:
'@swc/wasm': '@swc/wasm':
optional: true optional: true
ts-xor@1.3.0:
resolution: {integrity: sha512-RLXVjliCzc1gfKQFLRpfeD0rrWmjnSTgj7+RFhoq3KRkUYa8LE/TIidYOzM5h+IdFBDSjjSgk9Lto9sdMfDFEA==}
tsconfig-paths@3.15.0: tsconfig-paths@3.15.0:
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
@ -15717,7 +15853,7 @@ snapshots:
'@jest/console@29.5.0': '@jest/console@29.5.0':
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.10.4 '@types/node': 20.12.7
chalk: 4.1.2 chalk: 4.1.2
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
@ -16621,10 +16757,10 @@ snapshots:
eslint-config-prettier: 9.1.0(eslint@8.57.0) eslint-config-prettier: 9.1.0(eslint@8.57.0)
eslint-config-xo: 0.44.0(eslint@8.57.0) eslint-config-xo: 0.44.0(eslint@8.57.0)
eslint-config-xo-typescript: 4.0.0(@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) eslint-config-xo-typescript: 4.0.0(@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3))(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0) eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0)
eslint-plugin-consistent-default-export-name: 0.0.15 eslint-plugin-consistent-default-export-name: 0.0.15
eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
eslint-plugin-n: 17.2.1(eslint@8.57.0) eslint-plugin-n: 17.2.1(eslint@8.57.0)
eslint-plugin-no-use-extend-native: 0.5.0 eslint-plugin-no-use-extend-native: 0.5.0
eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.0.0) eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.0.0)
@ -17268,7 +17404,7 @@ snapshots:
'@types/body-parser@1.19.2': '@types/body-parser@1.19.2':
dependencies: dependencies:
'@types/connect': 3.4.35 '@types/connect': 3.4.35
'@types/node': 20.10.4 '@types/node': 20.12.7
'@types/caseless@0.12.5': {} '@types/caseless@0.12.5': {}
@ -17328,6 +17464,10 @@ snapshots:
'@types/debounce@1.2.4': {} '@types/debounce@1.2.4': {}
'@types/debug@4.1.12':
dependencies:
'@types/ms': 0.7.31
'@types/debug@4.1.7': '@types/debug@4.1.7':
dependencies: dependencies:
'@types/ms': 0.7.31 '@types/ms': 0.7.31
@ -17346,7 +17486,7 @@ snapshots:
'@types/express-serve-static-core@4.17.26': '@types/express-serve-static-core@4.17.26':
dependencies: dependencies:
'@types/node': 20.10.4 '@types/node': 20.12.7
'@types/qs': 6.9.7 '@types/qs': 6.9.7
'@types/range-parser': 1.2.4 '@types/range-parser': 1.2.4
@ -17363,7 +17503,7 @@ snapshots:
'@types/graceful-fs@4.1.5': '@types/graceful-fs@4.1.5':
dependencies: dependencies:
'@types/node': 20.10.4 '@types/node': 20.12.7
'@types/hast@2.3.4': '@types/hast@2.3.4':
dependencies: dependencies:
@ -17457,6 +17597,16 @@ snapshots:
dependencies: dependencies:
'@types/koa': 2.15.0 '@types/koa': 2.15.0
'@types/lodash.omit@4.5.8':
dependencies:
'@types/lodash': 4.17.13
'@types/lodash.omit@4.5.9':
dependencies:
'@types/lodash': 4.17.13
'@types/lodash@4.17.13': {}
'@types/mdast@3.0.15': '@types/mdast@3.0.15':
dependencies: dependencies:
'@types/unist': 2.0.11 '@types/unist': 2.0.11
@ -17481,6 +17631,11 @@ snapshots:
'@types/ms@0.7.31': {} '@types/ms@0.7.31': {}
'@types/node-fetch@2.6.11':
dependencies:
'@types/node': 20.12.7
form-data: 4.0.1
'@types/node-fetch@2.6.2': '@types/node-fetch@2.6.2':
dependencies: dependencies:
'@types/node': 20.12.7 '@types/node': 20.12.7
@ -17598,7 +17753,7 @@ snapshots:
'@types/serve-static@1.13.10': '@types/serve-static@1.13.10':
dependencies: dependencies:
'@types/mime': 1.3.2 '@types/mime': 1.3.2
'@types/node': 20.10.4 '@types/node': 20.12.7
'@types/shimmer@1.0.2': {} '@types/shimmer@1.0.2': {}
@ -17667,7 +17822,7 @@ snapshots:
'@types/yauzl@2.10.3': '@types/yauzl@2.10.3':
dependencies: dependencies:
'@types/node': 20.10.4 '@types/node': 20.12.7
optional: true optional: true
'@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)': '@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)':
@ -17854,6 +18009,187 @@ snapshots:
loupe: 3.1.1 loupe: 3.1.1
pretty-format: 29.7.0 pretty-format: 29.7.0
'@vonage/accounts@1.16.0':
dependencies:
'@vonage/server-client': 1.16.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/applications@1.16.0':
dependencies:
'@vonage/server-client': 1.16.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/auth@1.12.0':
dependencies:
'@vonage/jwt': 1.11.0
debug: 4.3.7(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
'@vonage/conversations@1.7.0':
dependencies:
'@vonage/messages': 1.18.0
'@vonage/server-client': 1.16.0
'@vonage/users': 1.10.0
'@vonage/voice': 1.16.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/jwt@1.11.0':
dependencies:
debug: 4.3.7(supports-color@5.5.0)
jsonwebtoken: 9.0.2
uuid: 9.0.1
transitivePeerDependencies:
- supports-color
'@vonage/messages@1.18.0':
dependencies:
'@vonage/server-client': 1.16.0
'@vonage/vetch': 1.8.0
debug: 4.3.7(supports-color@5.5.0)
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/number-insights@1.16.0':
dependencies:
'@vonage/auth': 1.12.0
'@vonage/server-client': 1.16.0
'@vonage/vetch': 1.8.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/numbers@1.16.0':
dependencies:
'@types/lodash.omit': 4.5.8
'@vonage/auth': 1.12.0
'@vonage/server-client': 1.16.0
'@vonage/vetch': 1.8.0
lodash.omit: 4.5.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/pricing@1.16.0':
dependencies:
'@vonage/auth': 1.12.0
'@vonage/server-client': 1.16.0
'@vonage/vetch': 1.8.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/redact@1.15.0':
dependencies:
'@vonage/server-client': 1.16.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/server-client@1.16.0':
dependencies:
'@vonage/auth': 1.12.0
'@vonage/vetch': 1.8.0
debug: 4.3.7(supports-color@5.5.0)
lodash.camelcase: 4.3.0
lodash.isobject: 3.0.2
lodash.kebabcase: 4.1.1
lodash.snakecase: 4.1.1
node-fetch: 2.7.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/server-sdk@3.19.0':
dependencies:
'@vonage/accounts': 1.16.0
'@vonage/applications': 1.16.0
'@vonage/auth': 1.12.0
'@vonage/conversations': 1.7.0
'@vonage/messages': 1.18.0
'@vonage/number-insights': 1.16.0
'@vonage/numbers': 1.16.0
'@vonage/pricing': 1.16.0
'@vonage/redact': 1.15.0
'@vonage/server-client': 1.16.0
'@vonage/sms': 1.17.0
'@vonage/users': 1.10.0
'@vonage/verify': 1.16.0
'@vonage/verify2': 1.15.0
'@vonage/video': 1.20.0
'@vonage/voice': 1.16.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/sms@1.17.0':
dependencies:
'@vonage/auth': 1.12.0
'@vonage/server-client': 1.16.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/users@1.10.0':
dependencies:
'@vonage/server-client': 1.16.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/verify2@1.15.0':
dependencies:
'@vonage/server-client': 1.16.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/verify@1.16.0':
dependencies:
'@types/lodash.omit': 4.5.9
'@vonage/auth': 1.12.0
'@vonage/server-client': 1.16.0
'@vonage/vetch': 1.8.0
lodash.omit: 4.5.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/vetch@1.8.0':
dependencies:
'@types/node-fetch': 2.6.11
node-fetch: 2.7.0
transitivePeerDependencies:
- encoding
'@vonage/video@1.20.0':
dependencies:
'@vonage/auth': 1.12.0
'@vonage/jwt': 1.11.0
'@vonage/server-client': 1.16.0
'@vonage/vetch': 1.8.0
transitivePeerDependencies:
- encoding
- supports-color
'@vonage/voice@1.16.0':
dependencies:
'@types/debug': 4.1.12
'@vonage/server-client': 1.16.0
'@vonage/vetch': 1.8.0
debug: 4.3.7(supports-color@5.5.0)
ts-xor: 1.3.0
transitivePeerDependencies:
- encoding
- supports-color
'@web/browser-logs@0.4.0': '@web/browser-logs@0.4.0':
dependencies: dependencies:
errorstacks: 2.4.1 errorstacks: 2.4.1
@ -19818,13 +20154,13 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0): eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0):
dependencies: dependencies:
debug: 4.3.5 debug: 4.3.5
enhanced-resolve: 5.16.0 enhanced-resolve: 5.16.0
eslint: 8.57.0 eslint: 8.57.0
eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
fast-glob: 3.3.2 fast-glob: 3.3.2
get-tsconfig: 4.7.3 get-tsconfig: 4.7.3
is-core-module: 2.13.1 is-core-module: 2.13.1
@ -19835,14 +20171,14 @@ snapshots:
- eslint-import-resolver-webpack - eslint-import-resolver-webpack
- supports-color - supports-color
eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0):
dependencies: dependencies:
debug: 3.2.7 debug: 3.2.7
optionalDependencies: optionalDependencies:
'@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.5.3) '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.5.3)
eslint: 8.57.0 eslint: 8.57.0
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0) eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -19864,7 +20200,7 @@ snapshots:
eslint: 8.57.0 eslint: 8.57.0
ignore: 5.3.1 ignore: 5.3.1
eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
dependencies: dependencies:
array-includes: 3.1.8 array-includes: 3.1.8
array.prototype.findlastindex: 1.2.5 array.prototype.findlastindex: 1.2.5
@ -19874,7 +20210,7 @@ snapshots:
doctrine: 2.1.0 doctrine: 2.1.0
eslint: 8.57.0 eslint: 8.57.0
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
hasown: 2.0.2 hasown: 2.0.2
is-core-module: 2.13.1 is-core-module: 2.13.1
is-glob: 4.0.3 is-glob: 4.0.3
@ -21572,7 +21908,7 @@ snapshots:
'@jest/environment': 29.7.0 '@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.10.4 '@types/node': 20.12.7
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
@ -21779,7 +22115,7 @@ snapshots:
jest-util@29.5.0: jest-util@29.5.0:
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.10.4 '@types/node': 20.12.7
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.8.0 ci-info: 3.8.0
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -21816,7 +22152,7 @@ snapshots:
jest-worker@29.5.0: jest-worker@29.5.0:
dependencies: dependencies:
'@types/node': 20.10.4 '@types/node': 20.12.7
jest-util: 29.7.0 jest-util: 29.7.0
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 8.1.1 supports-color: 8.1.1
@ -22341,6 +22677,8 @@ snapshots:
lodash.isnumber@3.0.3: {} lodash.isnumber@3.0.3: {}
lodash.isobject@3.0.2: {}
lodash.isplainobject@4.0.6: {} lodash.isplainobject@4.0.6: {}
lodash.isstring@4.0.1: {} lodash.isstring@4.0.1: {}
@ -22351,6 +22689,8 @@ snapshots:
lodash.mergewith@4.6.2: {} lodash.mergewith@4.6.2: {}
lodash.omit@4.5.0: {}
lodash.once@4.1.1: {} lodash.once@4.1.1: {}
lodash.snakecase@4.1.1: {} lodash.snakecase@4.1.1: {}
@ -25521,6 +25861,8 @@ snapshots:
'@swc/core': 1.3.52(@swc/helpers@0.5.1) '@swc/core': 1.3.52(@swc/helpers@0.5.1)
optional: true optional: true
ts-xor@1.3.0: {}
tsconfig-paths@3.15.0: tsconfig-paths@3.15.0:
dependencies: dependencies:
'@types/json5': 0.0.29 '@types/json5': 0.0.29