mirror of
https://github.com/logto-io/logto.git
synced 2024-12-30 20:33:54 -05:00
feat(connector): add http email connector
This commit is contained in:
parent
43d83e8bb3
commit
c0219c33ae
9 changed files with 316 additions and 15 deletions
3
packages/connectors/connector-http-email/README.md
Normal file
3
packages/connectors/connector-http-email/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# HTTP email connector
|
||||||
|
|
||||||
|
TBD
|
10
packages/connectors/connector-http-email/logo.svg
Normal file
10
packages/connectors/connector-http-email/logo.svg
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M-0.00012207 9.64954C-0.00012207 8.86639 0.381982 8.1325 1.02356 7.68338L11.3117 0.481598C11.7249 0.192363 12.2749 0.192363 12.688 0.481598L22.9762 7.68338C23.6178 8.1325 23.9999 8.86639 23.9999 9.64954V19.2001C23.9999 21.8511 21.8508 24.0001 19.1999 24.0001H4.7999C2.14892 24.0001 -0.00012207 21.8511 -0.00012207 19.2001V9.64954Z" fill="#F7F8F8"/>
|
||||||
|
<path d="M-0.00012207 9.64954C-0.00012207 8.86639 0.381982 8.1325 1.02356 7.68338L11.3117 0.481598C11.7249 0.192363 12.2749 0.192363 12.688 0.481598L22.9762 7.68338C23.6178 8.1325 23.9999 8.86639 23.9999 9.64954V19.2001C23.9999 21.8511 21.8508 24.0001 19.1999 24.0001H4.7999C2.14892 24.0001 -0.00012207 21.8511 -0.00012207 19.2001V9.64954Z" fill="#78767F" fill-opacity="0.02"/>
|
||||||
|
<path d="M-0.00012207 9.64954C-0.00012207 8.86639 0.381982 8.1325 1.02356 7.68338L11.3117 0.481598C11.7249 0.192363 12.2749 0.192363 12.688 0.481598L22.9762 7.68338C23.6178 8.1325 23.9999 8.86639 23.9999 9.64954V19.2001C23.9999 21.8511 21.8508 24.0001 19.1999 24.0001H4.7999C2.14892 24.0001 -0.00012207 21.8511 -0.00012207 19.2001V9.64954Z" fill="#5D34F2" fill-opacity="0.16"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.7998 5.39969C10.7998 5.06831 11.0684 4.79968 11.3998 4.79968H12.5998C12.9311 4.79968 13.1998 5.06831 13.1998 5.39969V8.39972H10.7998V5.39969ZM10.7998 16.1998C10.7998 16.5312 11.0684 16.7998 11.3998 16.7998H12.5998C12.9311 16.7998 13.1998 16.5312 13.1998 16.1998V13.1998H10.7998V16.1998ZM6.59976 11.9998C6.26839 11.9998 5.99976 11.7311 5.99976 11.3998V10.1997C5.99976 9.86837 6.26839 9.59974 6.59976 9.59974H9.59976V11.9998H6.59976ZM17.3998 11.9998C17.7311 11.9998 17.9998 11.7311 17.9998 11.3998V10.1997C17.9998 9.86837 17.7311 9.59974 17.3998 9.59974L14.3998 9.59974V11.9998H17.3998Z" fill="#E67EF7"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.33342 7.83014C7.09911 7.59582 7.09911 7.21592 7.33342 6.9816L8.18195 6.13306C8.41626 5.89875 8.79616 5.89875 9.03048 6.13306L11.1518 8.25441L9.45474 9.95148L7.33342 7.83014ZM14.9692 15.4674C15.2035 15.7017 15.5834 15.7017 15.8177 15.4674L16.6662 14.6188C16.9005 14.3845 16.9005 14.0046 16.6662 13.7703L14.5449 11.6489L12.8479 13.346L14.9692 15.4674ZM9.03003 15.4671C8.79572 15.7014 8.41582 15.7014 8.18151 15.4671L7.33298 14.6185C7.09866 14.3842 7.09866 14.0043 7.33298 13.77L9.4543 11.6487L11.1514 13.3457L9.03003 15.4671ZM16.6663 7.83034C16.9006 7.59602 16.9006 7.21612 16.6663 6.9818L15.8177 6.13327C15.5834 5.89895 15.2035 5.89895 14.9692 6.13327L12.8479 8.25461L14.5449 9.95169L16.6663 7.83034Z" fill="#E67EF7"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.9997 15.5999C14.6507 15.5999 16.7997 13.4508 16.7997 10.7998C16.7997 8.14881 14.6507 5.99976 11.9997 5.99976C9.34874 5.99976 7.19971 8.14881 7.19971 10.7998C7.19971 13.4508 9.34874 15.5999 11.9997 15.5999ZM11.9997 13.1998C13.3252 13.1998 14.3997 12.1253 14.3997 10.7998C14.3997 9.47431 13.3252 8.39978 11.9997 8.39978C10.6742 8.39978 9.59971 9.47431 9.59971 10.7998C9.59971 12.1253 10.6742 13.1998 11.9997 13.1998Z" fill="#F099FE"/>
|
||||||
|
<path d="M-0.000244141 9.50452C-0.000244141 8.53368 1.09259 7.9647 1.88793 8.52144L11.3116 15.1181C11.7248 15.4073 12.2747 15.4073 12.6879 15.1181L22.1116 8.52144C22.9069 7.9647 23.9998 8.53369 23.9998 9.50452V21.5999C23.9998 22.9254 22.9252 23.9999 21.5997 23.9999H2.39977C1.07428 23.9999 -0.000244141 22.9254 -0.000244141 21.5999V9.50452Z" fill="#7958FF"/>
|
||||||
|
<path d="M1.90371 23.9999C0.806869 23.9999 0.284907 22.6498 1.0965 21.9119L11.1926 12.7336C11.6503 12.3175 12.3493 12.3175 12.807 12.7336L22.9031 21.9119C23.7147 22.6498 23.1927 23.9999 22.0959 23.9999H1.90371Z" fill="#957BFF"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
68
packages/connectors/connector-http-email/package.json
Normal file
68
packages/connectors/connector-http-email/package.json
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
{
|
||||||
|
"name": "@logto/connector-http-email",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "Email connector to send email via HTTP call.",
|
||||||
|
"author": "Silverhand Inc. <contact@silverhand.io>",
|
||||||
|
"dependencies": {
|
||||||
|
"@logto/connector-kit": "workspace:^4.0.0",
|
||||||
|
"@silverhand/essentials": "^2.9.1",
|
||||||
|
"got": "^14.0.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",
|
||||||
|
"nock": "^13.3.1",
|
||||||
|
"prettier": "^3.0.0",
|
||||||
|
"supertest": "^7.0.0",
|
||||||
|
"tsup": "^8.1.0",
|
||||||
|
"typescript": "^5.5.3",
|
||||||
|
"vitest": "^2.0.0"
|
||||||
|
}
|
||||||
|
}
|
33
packages/connectors/connector-http-email/src/constant.ts
Normal file
33
packages/connectors/connector-http-email/src/constant.ts
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import type { ConnectorMetadata } from '@logto/connector-kit';
|
||||||
|
import { ConnectorConfigFormItemType } from '@logto/connector-kit';
|
||||||
|
|
||||||
|
export const defaultMetadata: ConnectorMetadata = {
|
||||||
|
id: 'http-email-service',
|
||||||
|
target: 'http-mail',
|
||||||
|
platform: null,
|
||||||
|
name: {
|
||||||
|
en: 'HTTP Email',
|
||||||
|
},
|
||||||
|
logo: './logo.svg',
|
||||||
|
logoDark: null,
|
||||||
|
description: {
|
||||||
|
en: 'Send email via HTTP call.',
|
||||||
|
},
|
||||||
|
readme: './README.md',
|
||||||
|
formItems: [
|
||||||
|
{
|
||||||
|
key: 'endpoint',
|
||||||
|
label: 'Endpoint',
|
||||||
|
type: ConnectorConfigFormItemType.Text,
|
||||||
|
required: true,
|
||||||
|
placeholder: '<https://example.com/your-http-endpoint>',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'authorization',
|
||||||
|
label: 'Authorization Header',
|
||||||
|
type: ConnectorConfigFormItemType.Text,
|
||||||
|
required: false,
|
||||||
|
placeholder: '<Bearer your-token>',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
47
packages/connectors/connector-http-email/src/index.test.ts
Normal file
47
packages/connectors/connector-http-email/src/index.test.ts
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
import nock from 'nock';
|
||||||
|
|
||||||
|
import { TemplateType } from '@logto/connector-kit';
|
||||||
|
|
||||||
|
import createConnector from './index.js';
|
||||||
|
import { mockedConfig } from './mock.js';
|
||||||
|
|
||||||
|
const getConfig = vi.fn().mockResolvedValue(mockedConfig);
|
||||||
|
|
||||||
|
describe('HTTP email connector', () => {
|
||||||
|
afterEach(() => {
|
||||||
|
nock.cleanAll();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should init without throwing errors', async () => {
|
||||||
|
await expect(createConnector({ getConfig })).resolves.not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should call endpoint with correct parameters', async () => {
|
||||||
|
const url = new URL(mockedConfig.endpoint);
|
||||||
|
const mockPost = nock(url.origin)
|
||||||
|
.post(url.pathname, (body) => {
|
||||||
|
expect(body).toMatchObject({
|
||||||
|
to: 'foo@logto.io',
|
||||||
|
type: TemplateType.SignIn,
|
||||||
|
payload: {
|
||||||
|
code: '123456',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
})
|
||||||
|
.reply(200, {
|
||||||
|
message: 'Email sent successfully',
|
||||||
|
});
|
||||||
|
|
||||||
|
const connector = await createConnector({ getConfig });
|
||||||
|
await connector.sendMessage({
|
||||||
|
to: 'foo@logto.io',
|
||||||
|
type: TemplateType.SignIn,
|
||||||
|
payload: {
|
||||||
|
code: '123456',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(mockPost.isDone()).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
70
packages/connectors/connector-http-email/src/index.ts
Normal file
70
packages/connectors/connector-http-email/src/index.ts
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
import { assert } from '@silverhand/essentials';
|
||||||
|
import { got, HTTPError } from 'got';
|
||||||
|
|
||||||
|
import type {
|
||||||
|
GetConnectorConfig,
|
||||||
|
SendMessageFunction,
|
||||||
|
CreateConnector,
|
||||||
|
EmailConnector,
|
||||||
|
} from '@logto/connector-kit';
|
||||||
|
import {
|
||||||
|
ConnectorError,
|
||||||
|
ConnectorErrorCodes,
|
||||||
|
validateConfig,
|
||||||
|
ConnectorType,
|
||||||
|
} from '@logto/connector-kit';
|
||||||
|
|
||||||
|
import { defaultMetadata } from './constant.js';
|
||||||
|
import { httpMailConfigGuard } 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, httpMailConfigGuard);
|
||||||
|
const { endpoint, authorization } = config;
|
||||||
|
|
||||||
|
try {
|
||||||
|
return await got.post(endpoint, {
|
||||||
|
headers: {
|
||||||
|
Authorization: authorization,
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
json: {
|
||||||
|
to,
|
||||||
|
type,
|
||||||
|
payload,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (error: unknown) {
|
||||||
|
if (error instanceof HTTPError) {
|
||||||
|
const {
|
||||||
|
response: { body: rawBody },
|
||||||
|
} = error;
|
||||||
|
|
||||||
|
assert(
|
||||||
|
typeof rawBody === 'string',
|
||||||
|
new ConnectorError(
|
||||||
|
ConnectorErrorCodes.InvalidResponse,
|
||||||
|
`Invalid response raw body type: ${typeof rawBody}`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
throw new ConnectorError(ConnectorErrorCodes.General, rawBody);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new ConnectorError(ConnectorErrorCodes.General, error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const createHttpMailConnector: CreateConnector<EmailConnector> = async ({ getConfig }) => {
|
||||||
|
return {
|
||||||
|
metadata: defaultMetadata,
|
||||||
|
type: ConnectorType.Email,
|
||||||
|
configGuard: httpMailConfigGuard,
|
||||||
|
sendMessage: sendMessage(getConfig),
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export default createHttpMailConnector;
|
6
packages/connectors/connector-http-email/src/mock.ts
Normal file
6
packages/connectors/connector-http-email/src/mock.ts
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
import type { HttpMailConfig } from './types.js';
|
||||||
|
|
||||||
|
export const mockedConfig: HttpMailConfig = {
|
||||||
|
endpoint: 'https://example.com/your-http-endpoint',
|
||||||
|
authorization: 'SampleToken',
|
||||||
|
};
|
8
packages/connectors/connector-http-email/src/types.ts
Normal file
8
packages/connectors/connector-http-email/src/types.ts
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
import { z } from 'zod';
|
||||||
|
|
||||||
|
export const httpMailConfigGuard = z.object({
|
||||||
|
endpoint: z.string(),
|
||||||
|
authorization: z.string().optional(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export type HttpMailConfig = z.infer<typeof httpMailConfigGuard>;
|
|
@ -1076,6 +1076,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-http-email:
|
||||||
|
dependencies:
|
||||||
|
'@logto/connector-kit':
|
||||||
|
specifier: workspace:^4.0.0
|
||||||
|
version: link:../../toolkit/connector-kit
|
||||||
|
'@silverhand/essentials':
|
||||||
|
specifier: ^2.9.1
|
||||||
|
version: 2.9.1
|
||||||
|
got:
|
||||||
|
specifier: ^14.0.0
|
||||||
|
version: 14.0.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
|
||||||
|
nock:
|
||||||
|
specifier: ^13.3.1
|
||||||
|
version: 13.3.1
|
||||||
|
prettier:
|
||||||
|
specifier: ^3.0.0
|
||||||
|
version: 3.0.0
|
||||||
|
supertest:
|
||||||
|
specifier: ^7.0.0
|
||||||
|
version: 7.0.0
|
||||||
|
tsup:
|
||||||
|
specifier: ^8.1.0
|
||||||
|
version: 8.1.0(@swc/core@1.3.52(@swc/helpers@0.5.1))(postcss@8.4.39)(ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.5.3))(typescript@5.5.3)
|
||||||
|
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-huggingface:
|
packages/connectors/connector-huggingface:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@logto/connector-kit':
|
'@logto/connector-kit':
|
||||||
|
@ -5536,6 +5591,7 @@ packages:
|
||||||
'@koa/router@12.0.1':
|
'@koa/router@12.0.1':
|
||||||
resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==}
|
resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==}
|
||||||
engines: {node: '>= 12'}
|
engines: {node: '>= 12'}
|
||||||
|
deprecated: Use v12.0.2 or higher to fix the vulnerability issue
|
||||||
|
|
||||||
'@levischuck/tiny-cbor@0.2.2':
|
'@levischuck/tiny-cbor@0.2.2':
|
||||||
resolution: {integrity: sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==}
|
resolution: {integrity: sha512-f5CnPw997Y2GQ8FAvtuVVC19FX8mwNNC+1XJcIi16n/LTJifKO6QBgGLgN3YEmqtGMk17SKSuoWES3imJVxAVw==}
|
||||||
|
@ -7579,7 +7635,7 @@ packages:
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
concat-map@0.0.1:
|
concat-map@0.0.1:
|
||||||
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
|
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||||
|
|
||||||
confusing-browser-globals@1.0.11:
|
confusing-browser-globals@1.0.11:
|
||||||
resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
|
resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
|
||||||
|
@ -8178,7 +8234,7 @@ packages:
|
||||||
resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
|
resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
|
||||||
|
|
||||||
ee-first@1.1.1:
|
ee-first@1.1.1:
|
||||||
resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=}
|
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
|
||||||
|
|
||||||
electron-to-chromium@1.5.0:
|
electron-to-chromium@1.5.0:
|
||||||
resolution: {integrity: sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==}
|
resolution: {integrity: sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==}
|
||||||
|
@ -9199,7 +9255,7 @@ packages:
|
||||||
engines: {node: '>=16.17.0'}
|
engines: {node: '>=16.17.0'}
|
||||||
|
|
||||||
humanize-number@0.0.2:
|
humanize-number@0.0.2:
|
||||||
resolution: {integrity: sha1-EcCvakcWQ2M1iFiASPF5lUFInBg=}
|
resolution: {integrity: sha512-un3ZAcNQGI7RzaWGZzQDH47HETM4Wrj6z6E4TId8Yeq9w5ZKUVB1nrT2jwFheTUjEmqcgTjXDc959jum+ai1kQ==}
|
||||||
|
|
||||||
husky@9.0.7:
|
husky@9.0.7:
|
||||||
resolution: {integrity: sha512-vWdusw+y12DUEeoZqW1kplOFqk3tedGV8qlga8/SF6a3lOiWLqGZZQvfWvY0fQYdfiRi/u1DFNpudTSV9l1aCg==}
|
resolution: {integrity: sha512-vWdusw+y12DUEeoZqW1kplOFqk3tedGV8qlga8/SF6a3lOiWLqGZZQvfWvY0fQYdfiRi/u1DFNpudTSV9l1aCg==}
|
||||||
|
@ -10419,7 +10475,7 @@ packages:
|
||||||
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
|
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
|
||||||
|
|
||||||
media-typer@0.3.0:
|
media-typer@0.3.0:
|
||||||
resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=}
|
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
|
|
||||||
meow@10.1.5:
|
meow@10.1.5:
|
||||||
|
@ -12415,7 +12471,7 @@ packages:
|
||||||
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
|
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
|
||||||
|
|
||||||
stubs@3.0.0:
|
stubs@3.0.0:
|
||||||
resolution: {integrity: sha1-6NK6H6nJBXAwPAMLaQD31fiavls=}
|
resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==}
|
||||||
|
|
||||||
style-search@0.1.0:
|
style-search@0.1.0:
|
||||||
resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==}
|
resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==}
|
||||||
|
@ -13018,7 +13074,7 @@ packages:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
void-elements@3.1.0:
|
void-elements@3.1.0:
|
||||||
resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=}
|
resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
w3c-xmlserializer@3.0.0:
|
w3c-xmlserializer@3.0.0:
|
||||||
|
@ -15695,10 +15751,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)
|
||||||
|
@ -18662,13 +18718,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
|
||||||
|
@ -18679,14 +18735,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(supports-color@5.5.0)
|
debug: 3.2.7(supports-color@5.5.0)
|
||||||
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
|
||||||
|
|
||||||
|
@ -18708,7 +18764,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
|
||||||
|
@ -18718,7 +18774,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
|
||||||
|
|
Loading…
Reference in a new issue