diff --git a/packages/effects/common-ui/src/authentication/typings.ts b/packages/effects/common-ui/src/authentication/typings.ts
index 7eeca08a..407f04a3 100644
--- a/packages/effects/common-ui/src/authentication/typings.ts
+++ b/packages/effects/common-ui/src/authentication/typings.ts
@@ -3,6 +3,7 @@ interface AuthenticationProps {
* @zh_CN 验证码登录路径
*/
codeLoginPath?: string;
+
/**
* @zh_CN 忘记密码路径
*/
@@ -32,6 +33,7 @@ interface AuthenticationProps {
* @zh_CN 是否显示验证码登录
*/
showCodeLogin?: boolean;
+
/**
* @zh_CN 是否显示忘记密码
*/
@@ -66,7 +68,6 @@ interface AuthenticationProps {
* @zh_CN 登录框标题
*/
title?: string;
-
/**
* @zh_CN 用户名占位符
*/
@@ -74,8 +75,12 @@ interface AuthenticationProps {
}
interface LoginAndRegisterParams {
+ code?: string;
+ grantType: string;
password: string;
+ tenantId: string;
username: string;
+ uuid?: string;
}
interface LoginCodeParams {
diff --git a/packages/effects/hooks/src/use-app-config.ts b/packages/effects/hooks/src/use-app-config.ts
index 857ac7cb..dd60d5a7 100644
--- a/packages/effects/hooks/src/use-app-config.ts
+++ b/packages/effects/hooks/src/use-app-config.ts
@@ -15,9 +15,26 @@ export function useAppConfig(
? window._VBEN_ADMIN_PRO_APP_CONF_
: (env as VbenAdminProAppConfigRaw);
- const { VITE_GLOB_API_URL } = config;
+ const {
+ VITE_GLOB_API_URL,
+ VITE_GLOB_APP_CLIENT_ID,
+ VITE_GLOB_ENABLE_ENCRYPT,
+ VITE_GLOB_RSA_PRIVATE_KEY,
+ VITE_GLOB_RSA_PUBLIC_KEY,
+ VITE_GLOB_WEBSOCKET_ENABLE,
+ } = config;
return {
+ // 后端地址
apiURL: VITE_GLOB_API_URL,
+ // 客户端key
+ clientId: VITE_GLOB_APP_CLIENT_ID,
+ enableEncrypt: VITE_GLOB_ENABLE_ENCRYPT === 'true',
+ // RSA私钥
+ rsaPrivateKey: VITE_GLOB_RSA_PRIVATE_KEY,
+ // RSA公钥
+ rsaPublicKey: VITE_GLOB_RSA_PUBLIC_KEY,
+ // 是否开启websocket
+ websocketEnable: VITE_GLOB_WEBSOCKET_ENABLE === 'true',
};
}
diff --git a/packages/effects/request/src/request-client/request-client.ts b/packages/effects/request/src/request-client/request-client.ts
index f42b4a2f..df3f1dc5 100644
--- a/packages/effects/request/src/request-client/request-client.ts
+++ b/packages/effects/request/src/request-client/request-client.ts
@@ -99,7 +99,8 @@ class RequestClient {
const authorization = this.makeAuthorization?.(config);
if (authorization) {
const { token } = authorization.tokenHandler?.() ?? {};
- config.headers[authorization.key || 'Authorization'] = token;
+ config.headers[authorization.key || 'Authorization'] =
+ `Bearer ${token}`;
}
const requestHeader = this.makeRequestHeaders?.(config);
diff --git a/packages/effects/request/src/request-client/types.ts b/packages/effects/request/src/request-client/types.ts
index d894e165..4b0237b6 100644
--- a/packages/effects/request/src/request-client/types.ts
+++ b/packages/effects/request/src/request-client/types.ts
@@ -43,13 +43,9 @@ interface RequestClientOptions extends CreateAxiosDefaults {
}
interface HttpResponse {
- /**
- * 0 表示成功 其他表示失败
- * 0 means success, others means fail
- */
code: number;
data: T;
- message: string;
+ msg: string;
}
export type {
@@ -60,3 +56,44 @@ export type {
RequestClientOptions,
RequestContentType,
};
+
+export type ErrorMessageMode = 'message' | 'modal' | 'none' | undefined;
+export type SuccessMessageMode = ErrorMessageMode;
+
+/**
+ * 拓展axios的请求配置
+ */
+declare module 'axios' {
+ interface AxiosRequestConfig {
+ /** 是否加密请求参数 */
+ encrypt?: boolean;
+ /**
+ * 错误弹窗类型
+ */
+ errorMessageMode?: ErrorMessageMode;
+ /**
+ * 是否格式化日期
+ */
+ formatDate?: boolean;
+ /**
+ * 是否返回原生axios响应
+ */
+ isReturnNativeResponse?: boolean;
+ /**
+ * 是否需要转换响应 即只获取{code, msg, data}中的data
+ */
+ isTransformResponse?: boolean;
+ /**
+ * param添加到url后
+ */
+ joinParamsToUrl?: boolean;
+ /**
+ * 加入时间戳
+ */
+ joinTime?: boolean;
+ /**
+ * 成功弹窗类型
+ */
+ successMessageMode?: SuccessMessageMode;
+ }
+}
diff --git a/packages/locales/src/langs/en-US.json b/packages/locales/src/langs/en-US.json
index 9100d7ba..08f20425 100644
--- a/packages/locales/src/langs/en-US.json
+++ b/packages/locales/src/langs/en-US.json
@@ -51,7 +51,12 @@
"unauthorized": "Unauthorized. Please log in to continue.",
"forbidden": "Forbidden. You do not have permission to access this resource.",
"notFound": "Not Found. The requested resource could not be found.",
- "internalServerError": "Internal Server Error. Something went wrong on our end. Please try again later."
+ "internalServerError": "Internal Server Error. Something went wrong on our end. Please try again later.",
+ "apiRequestFailed": "The interface request failed, please try again later!",
+ "operationSuccess": "Operation Success",
+ "operationFailed": "Operation failed",
+ "errorTip": "Error Tip",
+ "successTip": "Success Tip"
}
},
"widgets": {
@@ -95,8 +100,10 @@
"loginSubtitle": "Enter your account details to manage your projects",
"username": "Username",
"password": "Password",
+ "captcha": "Captcha",
"usernameTip": "Please enter username",
"passwordTip": "Please enter password",
+ "captchaTip": "Please enter captcha",
"rememberMe": "Remember Me",
"createAnAccount": "Create an Account",
"createAccount": "Create Account",
diff --git a/packages/locales/src/langs/zh-CN.json b/packages/locales/src/langs/zh-CN.json
index a832a9b2..ec4bb080 100644
--- a/packages/locales/src/langs/zh-CN.json
+++ b/packages/locales/src/langs/zh-CN.json
@@ -1,10 +1,10 @@
{
"page": {
"core": {
- "login": "登陆",
+ "login": "登录",
"register": "注册",
- "codeLogin": "验证码登陆",
- "qrcodeLogin": "二维码登陆",
+ "codeLogin": "验证码登录",
+ "qrcodeLogin": "二维码登录",
"forgetPassword": "忘记密码"
},
"dashboard": {
@@ -51,7 +51,12 @@
"unauthorized": "登录认证过期。请重新登录后继续。",
"forbidden": "禁止访问, 您没有权限访问此资源。",
"notFound": "未找到, 请求的资源不存在。",
- "internalServerError": "内部服务器错误,请稍后再试。"
+ "internalServerError": "内部服务器错误,请稍后再试。",
+ "apiRequestFailed": "请求出错,请稍候重试",
+ "operationSuccess": "操作成功",
+ "operationFailed": "操作失败",
+ "errorTip": "错误提示",
+ "successTip": "成功提示"
}
},
"widgets": {
@@ -95,8 +100,10 @@
"loginSubtitle": "请输入您的帐户信息以开始管理您的项目",
"username": "账号",
"password": "密码",
+ "captcha": "验证码",
"usernameTip": "请输入用户名",
"passwordTip": "请输入密码",
+ "captchaTip": "请输入验证码",
"rememberMe": "记住账号",
"createAnAccount": "创建一个账号",
"createAccount": "创建账号",
diff --git a/packages/stores/src/modules/user.ts b/packages/stores/src/modules/user.ts
index 49b4dbb9..3c8d8794 100644
--- a/packages/stores/src/modules/user.ts
+++ b/packages/stores/src/modules/user.ts
@@ -5,6 +5,10 @@ interface BasicUserInfo {
* 头像
*/
avatar: string;
+ /**
+ * 用户权限
+ */
+ permissions: string[];
/**
* 用户昵称
*/
@@ -12,11 +16,11 @@ interface BasicUserInfo {
/**
* 用户角色
*/
- roles?: string[];
+ roles: string[];
/**
* 用户id
*/
- userId: string;
+ userId: number | string;
/**
* 用户名
*/
diff --git a/packages/types/global.d.ts b/packages/types/global.d.ts
index 0c8f0198..a333612e 100644
--- a/packages/types/global.d.ts
+++ b/packages/types/global.d.ts
@@ -8,11 +8,33 @@ declare module 'vue-router' {
}
export interface VbenAdminProAppConfigRaw {
+ // 后端接口地址
VITE_GLOB_API_URL: string;
+ // 客户端ID
+ VITE_GLOB_APP_CLIENT_ID: string;
+ // # 全局加密开关(即开启了加解密功能才会生效 不是全部接口加密 需要和后端对应)
+ VITE_GLOB_ENABLE_ENCRYPT: string;
+ // RSA请求解密私钥
+ VITE_GLOB_RSA_PRIVATE_KEY: string;
+ // RSA请求加密公钥
+ VITE_GLOB_RSA_PUBLIC_KEY: string;
+ // 是否开启websocket 注意从配置文件获取的类型为string
+ VITE_GLOB_WEBSOCKET_ENABLE: string;
}
export interface ApplicationConfig {
+ // 后端接口地址
apiURL: string;
+ // 客户端key
+ clientId: string;
+ // 全局加密开关(即开启了加解密功能才会生效 不是全部接口加密 需要和后端对应)
+ enableEncrypt: boolean;
+ // RSA响应解密私钥
+ rsaPrivateKey: string;
+ // RSA请求加密公钥
+ rsaPublicKey: string;
+ // 是否开启websocket
+ websocketEnable: boolean;
}
declare global {
diff --git a/packages/types/src/user.d.ts b/packages/types/src/user.d.ts
index 44dc5b4a..82d1b12b 100644
--- a/packages/types/src/user.d.ts
+++ b/packages/types/src/user.d.ts
@@ -3,18 +3,9 @@ import type { BasicUserInfo } from '@vben-core/typings';
/** 用户信息 */
interface UserInfo extends BasicUserInfo {
/**
- * 用户描述
+ * 拓展使用
*/
- desc: string;
- /**
- * 首页地址
- */
- homePath: string;
-
- /**
- * accessToken
- */
- token: string;
+ [key: string]: any;
}
export type { UserInfo };
diff --git a/packages/utils/src/helpers/generate-routes-backend.ts b/packages/utils/src/helpers/generate-routes-backend.ts
index f1ba04c1..26a6f505 100644
--- a/packages/utils/src/helpers/generate-routes-backend.ts
+++ b/packages/utils/src/helpers/generate-routes-backend.ts
@@ -61,6 +61,11 @@ function convertRoutes(
? normalizePath
: `${normalizePath}.vue`
];
+ if (!route.component) {
+ console.error(`未找到对应组件: ${component}`);
+ // 默认为404页面
+ route.component = layoutMap.NotFoundComponent;
+ }
}
return route;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9ea2f8a3..cc1144cd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -160,9 +160,21 @@ importers:
ant-design-vue:
specifier: ^4.2.3
version: 4.2.3(vue@3.4.35(typescript@5.5.4))
+ crypto-js:
+ specifier: ^4.2.0
+ version: 4.2.0
dayjs:
specifier: ^1.11.12
version: 1.11.12
+ echarts:
+ specifier: ^5.5.1
+ version: 5.5.1
+ jsencrypt:
+ specifier: ^3.3.2
+ version: 3.3.2
+ lodash-es:
+ specifier: ^4.17.21
+ version: 4.17.21
pinia:
specifier: 2.2.0
version: 2.2.0(typescript@5.5.4)(vue@3.4.35(typescript@5.5.4))
@@ -172,6 +184,13 @@ importers:
vue-router:
specifier: ^4.4.2
version: 4.4.2(vue@3.4.35(typescript@5.5.4))
+ devDependencies:
+ '@types/crypto-js':
+ specifier: ^4.2.2
+ version: 4.2.2
+ '@types/lodash-es':
+ specifier: ^4.17.12
+ version: 4.17.12
apps/web-ele:
dependencies:
@@ -1219,36 +1238,42 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@ast-grep/napi-linux-arm64-gnu@0.22.6':
resolution: {integrity: sha512-9PAqNJlAQfFm1RW0DVCM/S4gFHdppxUTWacB3qEeJZXgdLnoH0KGQa4z3Xo559SPYDKZy0VnY02mZ3XJ+v6/Vw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@ast-grep/napi-linux-x64-gnu@0.21.4':
resolution: {integrity: sha512-U7jl8RGpxKV+pjFstY0y5qD+D+wm9dXNO7NBbIOnETgTMizTFiUuQWT7SOlIklhcxxuXqWzfwhNN1qwI0tGNWw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@ast-grep/napi-linux-x64-gnu@0.22.6':
resolution: {integrity: sha512-nZf+gxXVrZqvP1LN6HwzOMA4brF3umBXfMequQzv8S6HeJ4c34P23F0Tw8mHtQpVYP9PQWJUvt3LJQ8Xvd5Hiw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@ast-grep/napi-linux-x64-musl@0.21.4':
resolution: {integrity: sha512-SOGR93kGomRR+Vh87+jXI3pJLR+J+dekCI8a4S22kGX9iAen8/+Ew++lFouDueKLyszmmhCrIk1WnJvYPuSFBw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@ast-grep/napi-linux-x64-musl@0.22.6':
resolution: {integrity: sha512-gcJeBMgJQf2pZZo0lgH0Vg4ycyujM7Am8VlomXhavC/dPpkddA1tiHSIC4fCNneLU1EqHITy3ALSmM4GLdsjBw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@ast-grep/napi-win32-arm64-msvc@0.21.4':
resolution: {integrity: sha512-ciGaTbkPjbCGqUyLwIPvcNeftNXjSG3cXE+5NiLThRbDhh2yUOE8YJkElUQcu0xQCdSlXnb4l/imEED/65jGfw==}
@@ -3281,7 +3306,6 @@ packages:
'@ls-lint/ls-lint@2.2.3':
resolution: {integrity: sha512-ekM12jNm/7O2I/hsRv9HvYkRdfrHpiV1epVuI2NP+eTIcEgdIdKkKCs9KgQydu/8R5YXTov9aHdOgplmCHLupw==}
- cpu: [x64, arm64, s390x]
os: [darwin, linux, win32]
hasBin: true
@@ -3384,30 +3408,35 @@ packages:
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-arm64-glibc@2.4.1':
resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-arm64-musl@2.4.1':
resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@parcel/watcher-linux-x64-glibc@2.4.1':
resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@parcel/watcher-linux-x64-musl@2.4.1':
resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@parcel/watcher-wasm@2.4.1':
resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==}
@@ -3607,91 +3636,109 @@ packages:
resolution: {integrity: sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-gnueabihf@4.20.0':
resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.19.2':
resolution: {integrity: sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm-musleabihf@4.20.0':
resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.19.2':
resolution: {integrity: sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-gnu@4.20.0':
resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.19.2':
resolution: {integrity: sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-musl@4.20.0':
resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-powerpc64le-gnu@4.19.2':
resolution: {integrity: sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.19.2':
resolution: {integrity: sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.20.0':
resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.19.2':
resolution: {integrity: sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-s390x-gnu@4.20.0':
resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.19.2':
resolution: {integrity: sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.20.0':
resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.19.2':
resolution: {integrity: sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-x64-musl@4.20.0':
resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.19.2':
resolution: {integrity: sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==}
@@ -3819,6 +3866,9 @@ packages:
'@types/conventional-commits-parser@5.0.0':
resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==}
+ '@types/crypto-js@4.2.2':
+ resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==}
+
'@types/eslint@8.56.11':
resolution: {integrity: sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==}
@@ -4905,6 +4955,9 @@ packages:
uWebSockets.js:
optional: true
+ crypto-js@4.2.0:
+ resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
+
crypto-random-string@2.0.0:
resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==}
engines: {node: '>=8'}
@@ -6558,6 +6611,9 @@ packages:
canvas:
optional: true
+ jsencrypt@3.3.2:
+ resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==}
+
jsesc@0.5.0:
resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
hasBin: true
@@ -12489,6 +12545,8 @@ snapshots:
dependencies:
'@types/node': 22.1.0
+ '@types/crypto-js@4.2.2': {}
+
'@types/eslint@8.56.11':
dependencies:
'@types/estree': 1.0.5
@@ -13775,6 +13833,8 @@ snapshots:
crossws@0.2.4: {}
+ crypto-js@4.2.0: {}
+
crypto-random-string@2.0.0: {}
cspell-config-lib@8.13.1:
@@ -15689,6 +15749,8 @@ snapshots:
- supports-color
- utf-8-validate
+ jsencrypt@3.3.2: {}
+
jsesc@0.5.0: {}
jsesc@2.5.2: {}