From 7a3e68d656c1dcdcd814b69891bd2c2c6fe3098a Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Sun, 15 Feb 2026 18:44:35 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=89=80=E6=9C=89=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/pipeline/src/plugin/api.ts | 8 + .../src/components/cron-editor/utils.ts | 2 +- .../src/views/certd/access/common.tsx | 5 +- packages/ui/certd-server/package.json | 2 + .../src/plugins/plugin-51dns/access.ts | 29 +- .../dns-provider/aliesa-dns-provider.ts | 43 +- .../src/plugins/plugin-aws/access.ts | 22 +- .../src/plugins/plugin-aws/libs/aws-client.ts | 24 +- .../src/plugins/plugin-cachefly/access.ts | 59 + .../plugins/plugin-deploy-to-cdn.ts | 40 +- .../src/plugins/plugin-cloudflare/access.ts | 52 + .../plugins/plugin-cloudflare/dns-provider.ts | 37 +- .../src/plugins/plugin-dnsla/access.ts | 82 +- .../src/plugins/plugin-dnsla/dns-provider.ts | 62 +- .../src/plugins/plugin-doge/access.ts | 20 + .../src/plugins/plugin-gcore/access.ts | 54 + .../plugin-gcore/plugins/plugin-upload.ts | 35 +- .../plugin-huawei/access/huawei-access.ts | 19 + .../src/plugins/plugin-jdcloud/access.ts | 56 +- .../plugins/plugin-jdcloud/dns-provider.ts | 29 +- .../plugin-lib/aliyun/access/aliesa-access.ts | 66 +- .../plugin-lib/aliyun/access/aliyun-access.ts | 62 + .../src/plugins/plugin-namesilo/access.ts | 74 +- .../plugins/plugin-namesilo/dns-provider.ts | 50 +- .../plugin-plus/ctyun/access/ctyun-access.ts | 33 + .../src/plugins/plugin-plus/k8s/access.ts | 34 + .../src/plugins/plugin-plus/kuocai/access.ts | 81 ++ .../kuocai/plugins/plugin-deploy-to-cdn.ts | 68 +- .../src/plugins/plugin-plus/lecdn/access.ts | 84 ++ .../lecdn/plugins/plugin-update-cert-v2.ts | 60 +- .../src/plugins/plugin-plus/lucky/access.ts | 56 + .../lucky/plugins/plugin-upload.ts | 40 +- .../src/plugins/plugin-plus/maoyun/access.ts | 40 + .../maoyun/plugins/plugin-deploy-to-cdn.ts | 18 +- .../plugins/plugin-plus/safeline/access.ts | 43 + .../safeline/plugins/deploy-to-website.ts | 22 +- .../synology/plugins/plugin-keep-alive.ts | 20 +- .../plugins/plugin-plus/unicloud/access.ts | 1 + pnpm-lock.yaml | 1006 ++++++++++++++--- 39 files changed, 1876 insertions(+), 662 deletions(-) diff --git a/packages/core/pipeline/src/plugin/api.ts b/packages/core/pipeline/src/plugin/api.ts index bf5289cac..a27ceaac2 100644 --- a/packages/core/pipeline/src/plugin/api.ts +++ b/packages/core/pipeline/src/plugin/api.ts @@ -299,6 +299,14 @@ export abstract class AbstractTaskPlugin implements ITaskPlugin { buildDomainGroupOptions(options: any[], domains: string[]) { return utils.options.buildGroupOptions(options, domains); } + + getLastStatus(): Runnable { + return this.ctx.lastStatus || ({} as any); + } + + getLastOutput(key: string) { + return this.getLastStatus().status?.output?.[key]; + } } export type OutputVO = { diff --git a/packages/ui/certd-client/src/components/cron-editor/utils.ts b/packages/ui/certd-client/src/components/cron-editor/utils.ts index 8b566c3d8..7a2be77e0 100644 --- a/packages/ui/certd-client/src/components/cron-editor/utils.ts +++ b/packages/ui/certd-client/src/components/cron-editor/utils.ts @@ -9,7 +9,7 @@ export function getCronNextTimes(cron: string, count: number = 1) { const interval = parser.parseExpression(cron); for (let i = 0; i < count; i++) { const next = interval.next().getTime(); - nextTimes.push(dayjs(next).valueOf()); + nextTimes.push(dayjs(next).format("YYYY-MM-DD HH:mm:ss")); } return nextTimes; } diff --git a/packages/ui/certd-client/src/views/certd/access/common.tsx b/packages/ui/certd-client/src/views/certd/access/common.tsx index 0ff0cd7c8..2d232714d 100644 --- a/packages/ui/certd-client/src/views/certd/access/common.tsx +++ b/packages/ui/certd-client/src/views/certd/access/common.tsx @@ -67,7 +67,10 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any) { set(form, key, column.value); } //字段配置赋值 - columnsRef.value[key] = column; + if (columnsRef.value) { + columnsRef.value[key] = column; + } + console.log("form", columnsRef.value); }); } diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index 4387bb78f..9e1afbfb3 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -41,6 +41,7 @@ "@alicloud/openapi-client": "^0.4.12", "@alicloud/openapi-util": "^0.3.2", "@alicloud/pop-core": "^1.7.10", + "@alicloud/sts-sdk": "^1.0.2", "@alicloud/tea-typescript": "^1.8.0", "@alicloud/tea-util": "^1.4.10", "@aws-sdk/client-acm": "^3.964.0", @@ -48,6 +49,7 @@ "@aws-sdk/client-iam": "^3.964.0", "@aws-sdk/client-route-53": "^3.964.0", "@aws-sdk/client-s3": "^3.964.0", + "@aws-sdk/client-sts": "^3.990.0", "@certd/acme-client": "^1.38.9", "@certd/basic": "^1.38.9", "@certd/commercial-core": "^1.38.9", diff --git a/packages/ui/certd-server/src/plugins/plugin-51dns/access.ts b/packages/ui/certd-server/src/plugins/plugin-51dns/access.ts index b665483ea..73a568b22 100644 --- a/packages/ui/certd-server/src/plugins/plugin-51dns/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-51dns/access.ts @@ -1,4 +1,5 @@ import { IsAccess, AccessInput, BaseAccess } from '@certd/pipeline'; +import { Dns51Client } from './client.js'; /** * 这个注解将注册一个授权配置 @@ -27,14 +28,38 @@ export class Dns51Access extends BaseAccess { @AccessInput({ title: '登录密码', component: { - name:"a-input-password", - vModel:"value", + name: "a-input-password", + vModel: "value", placeholder: '密码', }, required: true, encrypt: true, }) password = ''; + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "测试授权是否正确" + }) + testRequest = true; + + async onTestRequest() { + + const client = new Dns51Client({ + logger: this.ctx.logger, + access: this, + }); + + await client.login(); + + return "ok"; + } + + } new Dns51Access(); diff --git a/packages/ui/certd-server/src/plugins/plugin-aliyun/dns-provider/aliesa-dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-aliyun/dns-provider/aliesa-dns-provider.ts index ccfba855a..4043e2c98 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aliyun/dns-provider/aliesa-dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aliyun/dns-provider/aliesa-dns-provider.ts @@ -1,6 +1,6 @@ -import { IAccessService, Pager, PageRes, PageSearch } from '@certd/pipeline'; +import { PageRes, PageSearch } from '@certd/pipeline'; import { AbstractDnsProvider, CreateRecordOptions, DomainRecord, IsDnsProvider, RemoveRecordOptions } from '@certd/plugin-cert'; -import { AliesaAccess, AliyunAccess } from '../../plugin-lib/aliyun/index.js'; +import { AliesaAccess } from '../../plugin-lib/aliyun/index.js'; import { AliyunClientV2 } from '../../plugin-lib/aliyun/lib/aliyun-client-v2.js'; @@ -17,11 +17,8 @@ export class AliesaDnsProvider extends AbstractDnsProvider { client: AliyunClientV2 async onInstance() { - const access: AliesaAccess = this.ctx.access as AliesaAccess - const accessGetter = await this.ctx.serviceGetter.get("accessService") as IAccessService - const aliAccess = await accessGetter.getById(access.accessId) as AliyunAccess - const endpoint = `esa.${access.region}.aliyuncs.com` - this.client = aliAccess.getClient(endpoint) + const access : AliesaAccess = this.ctx.access as AliesaAccess + this.client = await access.getEsaClient() } @@ -103,37 +100,7 @@ export class AliesaDnsProvider extends AbstractDnsProvider { } async getDomainListPage(req: PageSearch): Promise> { - const pager = new Pager(req) - const ret = await this.client.doRequest({ - // 接口名称 - action: "ListSites", - // 接口版本 - version: "2024-09-10", - // 接口协议 - protocol: "HTTPS", - // 接口 HTTP 方法 - method: "GET", - authType: "AK", - style: "RPC", - data: { - query: { - SiteName: req.searchKey, - // ["SiteSearchType"] = "exact"; - SiteSearchType: "fuzzy", - AccessType: "NS", - PageSize: pager.pageSize, - PageNumber: pager.pageNo, - } - } - }) - const list = ret.Sites?.map(item => ({ - domain: item.SiteName, - id: item.SiteId, - })) - return { - list: list || [], - total: ret.TotalCount, - } + return await this.ctx.access.getDomainListPage(req) } } diff --git a/packages/ui/certd-server/src/plugins/plugin-aws/access.ts b/packages/ui/certd-server/src/plugins/plugin-aws/access.ts index fc502be52..b74bfb252 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aws/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aws/access.ts @@ -1,5 +1,6 @@ import { AccessInput, BaseAccess, IsAccess } from '@certd/pipeline'; import { AwsRegions } from './constants.js'; +import { AwsClient } from './libs/aws-client.js'; @IsAccess({ name: 'aws', @@ -33,7 +34,7 @@ export class AwsAccess extends BaseAccess { @AccessInput({ title: 'region', component: { - name:"a-select", + name: "a-select", options: AwsRegions, }, required: true, @@ -41,6 +42,25 @@ export class AwsAccess extends BaseAccess { options: AwsRegions, }) region = ''; + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "测试授权是否正确" + }) + testRequest = true; + + async onTestRequest() { + + const client = new AwsClient({ access: this, logger: this.ctx.logger, region: this.region || 'us-east-1' }); + await client.getCallerIdentity(); + return "ok"; + } + } new AwsAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-aws/libs/aws-client.ts b/packages/ui/certd-server/src/plugins/plugin-aws/libs/aws-client.ts index 5b6943ab6..18a3d2b0c 100644 --- a/packages/ui/certd-server/src/plugins/plugin-aws/libs/aws-client.ts +++ b/packages/ui/certd-server/src/plugins/plugin-aws/libs/aws-client.ts @@ -45,6 +45,26 @@ export class AwsClient { } + async getCallerIdentity() { + const { STSClient, GetCallerIdentityCommand } = await import ("@aws-sdk/client-sts"); + + const client = new STSClient({ + region: this.access.region || 'us-east-1', + credentials: { + accessKeyId: this.access.accessKeyId, // 从环境变量中读取 + secretAccessKey: this.access.secretAccessKey, + }, + }); + + const command = new GetCallerIdentityCommand({}); + const response = await client.send(command); + this.logger.info(` 账户ID: ${response.Account}`); + this.logger.info(` ARN: ${response.Arn}`); + this.logger.info(` 用户ID: ${response.UserId}`); + return response; + } + + async route53ClientGet() { const { Route53Client } = await import('@aws-sdk/client-route-53'); return new Route53Client({ @@ -85,7 +105,7 @@ export class AwsClient { const { ListHostedZonesByNameCommand } = await import("@aws-sdk/client-route-53"); // ES Modules import const client = await this.route53ClientGet(); - const input:any = { // ListHostedZonesByNameRequest + const input: any = { // ListHostedZonesByNameRequest MaxItems: req.pageSize, }; if (req.searchKey) { @@ -93,7 +113,7 @@ export class AwsClient { } const command = new ListHostedZonesByNameCommand(input); const response = await this.doRequest(() => client.send(command)); - let list :any[]= response.HostedZones || []; + let list: any[] = response.HostedZones || []; list = list.map((item: any) => ({ id: item.Id.replace('/hostedzone/', ''), domain: item.Name, diff --git a/packages/ui/certd-server/src/plugins/plugin-cachefly/access.ts b/packages/ui/certd-server/src/plugins/plugin-cachefly/access.ts index fca84f05f..1549d892e 100644 --- a/packages/ui/certd-server/src/plugins/plugin-cachefly/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-cachefly/access.ts @@ -7,6 +7,9 @@ import { AccessInput, BaseAccess, IsAccess } from '@certd/pipeline'; icon: 'clarity:plugin-line', }) export class CacheflyAccess extends BaseAccess { + + + @AccessInput({ title: 'username', component: { @@ -32,6 +35,62 @@ export class CacheflyAccess extends BaseAccess { encrypt: true, }) otpkey = ''; + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "测试授权是否正确" + }) + testRequest = true; + + async onTestRequest() { + await this.login(); + return "ok"; + } + + + async login(){ + let otp = null; + if (this.otpkey) { + const response = await this.ctx.http.request({ + url: `https://cn-api.my-api.cn/api/totp/?key=${this.otpkey}`, + method: 'get', + }); + otp = response; + this.ctx.logger.info('获取到otp:', otp); + } + const loginResponse = await this.doRequestApi(`/api/2.6/auth/login`, { + username: this.username, + password: this.password, + ...(otp && { otp }), + }); + const token = loginResponse.token; + this.ctx.logger.info('Token 获取成功'); + return token; + } + + async doRequestApi(url: string, data: any = null, method = 'post', token: string | null = null) { + + const baseApi = 'https://api.cachefly.com'; + + const headers = { + 'Content-Type': 'application/json', + ...(token ? { 'x-cf-authorization': `Bearer ${token}` } : {}), + }; + const res = await this.ctx.http.request({ + url, + baseURL: baseApi, + method, + data, + headers, + }); + + return res; + } } new CacheflyAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-cachefly/plugins/plugin-deploy-to-cdn.ts b/packages/ui/certd-server/src/plugins/plugin-cachefly/plugins/plugin-deploy-to-cdn.ts index 0df70084b..2bf1d83bf 100644 --- a/packages/ui/certd-server/src/plugins/plugin-cachefly/plugins/plugin-deploy-to-cdn.ts +++ b/packages/ui/certd-server/src/plugins/plugin-cachefly/plugins/plugin-deploy-to-cdn.ts @@ -35,47 +35,21 @@ export class CacheFlyPlugin extends AbstractTaskPlugin { required: true, }) accessId!: string; - private readonly baseApi = 'https://api.cachefly.com'; + async onInstance() {} - private async doRequestApi(url: string, data: any = null, method = 'post', token: string | null = null) { - const headers = { - 'Content-Type': 'application/json', - ...(token ? { 'x-cf-authorization': `Bearer ${token}` } : {}), - }; - const res = await this.http.request({ - url, - method, - data, - headers, - }); - - return res; - } + + async execute(): Promise { const { cert, accessId } = this; const access = (await this.getAccess(accessId)) as CacheflyAccess; - let otp = null; - if (access.otpkey) { - const response = await this.http.request({ - url: `https://cn-api.my-api.cn/api/totp/?key=${access.otpkey}`, - method: 'get', - }); - otp = response; - this.logger.info('获取到otp:', otp); - } - const loginResponse = await this.doRequestApi(`${this.baseApi}/api/2.6/auth/login`, { - username: access.username, - password: access.password, - ...(otp && { otp }), - }); - const token = loginResponse.token; - this.logger.info('Token 获取成功'); + + const token = await access.login(); // 更新证书 - await this.doRequestApi( - `${this.baseApi}/api/2.6/certificates`, + await access.doRequestApi( + `/api/2.6/certificates`, { certificate: cert.crt, certificateKey: cert.key, diff --git a/packages/ui/certd-server/src/plugins/plugin-cloudflare/access.ts b/packages/ui/certd-server/src/plugins/plugin-cloudflare/access.ts index 7e4b5209c..6e50f8609 100644 --- a/packages/ui/certd-server/src/plugins/plugin-cloudflare/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-cloudflare/access.ts @@ -37,6 +37,58 @@ export class CloudflareAccess extends BaseAccess { encrypt: false, }) proxy = ''; + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "测试授权是否正确" + }) + testRequest = true; + + async onTestRequest() { + await this.getZoneList(); + return "ok"; + } + + + async getZoneList() { + const url = `https://api.cloudflare.com/client/v4/zones`; + const res = await this.doRequestApi(url, null, 'get'); + return res.result + } + + async doRequestApi(url: string, data: any = null, method = 'post') { + try { + const res = await this.ctx.http.request({ + url, + method, + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.apiToken}`, + }, + data, + httpProxy: this.proxy, + }); + + if (!res.success) { + throw new Error(`${JSON.stringify(res.errors)}`); + } + return res; + } catch (e: any) { + const data = e.response?.data; + if (data && data.success === false && data.errors && data.errors.length > 0) { + if (data.errors[0].code === 81058) { + this.ctx.logger.info('dns解析记录重复'); + return null; + } + } + throw e; + } + } + } new CloudflareAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts index ddd092654..27e8700fe 100644 --- a/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-cloudflare/dns-provider.ts @@ -41,41 +41,14 @@ export class CloudflareDnsProvider extends AbstractDnsProvider async getZoneId(domain: string) { this.logger.info('获取zoneId:', domain); const url = `https://api.cloudflare.com/client/v4/zones?name=${domain}`; - const res = await this.doRequestApi(url, null, 'get'); + const res = await this.access.doRequestApi(url, null, 'get'); if (res.result.length === 0) { throw new Error(`未找到域名${domain}的zoneId`); } return res.result[0].id; } - private async doRequestApi(url: string, data: any = null, method = 'post') { - try { - const res = await this.http.request({ - url, - method, - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${this.access.apiToken}`, - }, - data, - httpProxy: this.access.proxy, - }); - if (!res.success) { - throw new Error(`${JSON.stringify(res.errors)}`); - } - return res; - } catch (e: any) { - const data = e.response?.data; - if (data && data.success === false && data.errors && data.errors.length > 0) { - if (data.errors[0].code === 81058) { - this.logger.info('dns解析记录重复'); - return null; - } - } - throw e; - } - } /** * 创建dns解析记录,用于验证域名所有权 @@ -95,7 +68,7 @@ export class CloudflareDnsProvider extends AbstractDnsProvider // 给domain下创建txt类型的dns解析记录,fullRecord const url = `https://api.cloudflare.com/client/v4/zones/${zoneId}/dns_records`; - const res = await this.doRequestApi(url, { + const res = await this.access.doRequestApi(url, { content: value, name: fullRecord, type: type, @@ -119,7 +92,7 @@ export class CloudflareDnsProvider extends AbstractDnsProvider async findRecord(zoneId: string, options: CreateRecordOptions): Promise { const { fullRecord, value } = options; const url = `https://api.cloudflare.com/client/v4/zones/${zoneId}/dns_records?type=TXT&name=${fullRecord}&content=${value}`; - const res = await this.doRequestApi(url, null, 'get'); + const res = await this.access.doRequestApi(url, null, 'get'); if (res.result.length === 0) { return null; } @@ -142,7 +115,7 @@ export class CloudflareDnsProvider extends AbstractDnsProvider const zoneId = record.zone_id; const recordId = record.id; const url = `https://api.cloudflare.com/client/v4/zones/${zoneId}/dns_records/${recordId}`; - await this.doRequestApi(url, null, 'delete'); + await this.access.doRequestApi(url, null, 'delete'); this.logger.info(`删除域名解析成功:fullRecord=${fullRecord},value=${value}`); } @@ -153,7 +126,7 @@ export class CloudflareDnsProvider extends AbstractDnsProvider if (req.searchKey) { url += `&name=${req.searchKey}`; } - const ret = await this.doRequestApi(url, null, 'get'); + const ret = await this.access.doRequestApi(url, null, 'get'); let list = ret.result || [] list = list.map((item: any) => ({ diff --git a/packages/ui/certd-server/src/plugins/plugin-dnsla/access.ts b/packages/ui/certd-server/src/plugins/plugin-dnsla/access.ts index eb8372e4e..e73c754e1 100644 --- a/packages/ui/certd-server/src/plugins/plugin-dnsla/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-dnsla/access.ts @@ -1,4 +1,5 @@ -import { IsAccess, AccessInput, BaseAccess } from '@certd/pipeline'; +import { IsAccess, AccessInput, BaseAccess, PageSearch, PageRes, Pager } from '@certd/pipeline'; +import { DomainRecord } from '@certd/plugin-lib'; /** * 这个注解将注册一个授权配置 @@ -19,7 +20,7 @@ export class DnslaAccess extends BaseAccess { component: { placeholder: 'APIID', }, - helper:"从我的账户->API密钥中获取 APIID APISecret", + helper: "从我的账户->API密钥中获取 APIID APISecret", required: true, encrypt: false, }) @@ -36,6 +37,83 @@ export class DnslaAccess extends BaseAccess { encrypt: true, }) apiSecret = ''; + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "测试授权是否正确" + }) + testRequest = true; + + async onTestRequest() { + await this.getDomainListPage({ + pageNo: 1, + pageSize: 1, + }); + return "ok"; + } + + + async getDomainListPage(req: PageSearch): Promise> { + const pager = new Pager(req); + const url = `/api/domainList?pageIndex=${pager.pageNo}&pageSize=${pager.pageSize}`; + const ret = await this.doRequestApi(url, null, 'get'); + + let list = ret.data.results || [] + list = list.map((item: any) => ({ + id: item.id, + domain: item.domain, + })); + const total = ret.data.total || list.length; + return { + total, + list, + }; + } + + + + async doRequestApi(url: string, data: any = null, method = 'post') { + /** + * Basic 认证 + * 我的账户 API 密钥 中获取 APIID APISecret + * APIID=myApiId + * APISecret=mySecret + * 生成 Basic 令牌 + * # 用冒号连接 APIID APISecret + * str = "myApiId:mySecret" + * token = base64Encode(str) + * 在请求头中添加 Basic 认证令牌 + * Authorization: Basic {token} + * 响应示例 + * application/json + * { + * "code":200, + * "msg":"", + * "data":{} + * } + */ + const token = Buffer.from(`${this.apiId}:${this.apiSecret}`).toString('base64'); + const res = await this.ctx.http.request({ + url: "https://api.dns.la" + url, + method, + headers: { + 'Content-Type': 'application/json', + Authorization: `Basic ${token}`, + }, + data, + }); + + if (res.code !== 200) { + throw new Error(res.msg); + } + return res; + + } + } new DnslaAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-dnsla/dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-dnsla/dns-provider.ts index 8682c2360..d9d4ad30b 100644 --- a/packages/ui/certd-server/src/plugins/plugin-dnsla/dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-dnsla/dns-provider.ts @@ -1,7 +1,7 @@ import { AbstractDnsProvider, CreateRecordOptions, DomainRecord, IsDnsProvider, RemoveRecordOptions } from "@certd/plugin-cert"; +import { PageRes, PageSearch } from "@certd/pipeline"; import { DnslaAccess } from "./access.js"; -import { Pager, PageRes, PageSearch } from "@certd/pipeline"; export type DnslaRecord = { id: string; @@ -25,43 +25,6 @@ export class DnslaDnsProvider extends AbstractDnsProvider { } - private async doRequestApi(url: string, data: any = null, method = 'post') { - /** - * Basic 认证 - * 我的账户 API 密钥 中获取 APIID APISecret - * APIID=myApiId - * APISecret=mySecret - * 生成 Basic 令牌 - * # 用冒号连接 APIID APISecret - * str = "myApiId:mySecret" - * token = base64Encode(str) - * 在请求头中添加 Basic 认证令牌 - * Authorization: Basic {token} - * 响应示例 - * application/json - * { - * "code":200, - * "msg":"", - * "data":{} - * } - */ - const token = Buffer.from(`${this.access.apiId}:${this.access.apiSecret}`).toString('base64'); - const res = await this.http.request({ - url:"https://api.dns.la"+url, - method, - headers: { - 'Content-Type': 'application/json', - Authorization: `Basic ${token}`, - }, - data, - }); - - if (res.code !== 200) { - throw new Error(res.msg); - } - return res; - - } async getDomainDetail(domain:string){ /** @@ -88,7 +51,7 @@ export class DnslaDnsProvider extends AbstractDnsProvider { */ const url = `/api/domain?domain=${domain}`; - const res = await this.doRequestApi(url, null, 'get'); + const res = await this.access.doRequestApi(url, null, 'get'); return res.data } @@ -141,7 +104,7 @@ export class DnslaDnsProvider extends AbstractDnsProvider { * CAA 257 * URL转发 256 */ - const res = await this.doRequestApi(url, { + const res = await this.access.doRequestApi(url, { domainId: domainId, type: 16, host: fullRecord.replace(`.${domain}`, ''), @@ -174,27 +137,14 @@ export class DnslaDnsProvider extends AbstractDnsProvider { */ const recordId = record.id; const url = `/api/record?id=${recordId}`; - await this.doRequestApi(url, null, 'delete'); + await this.access.doRequestApi(url, null, 'delete'); this.logger.info(`删除域名解析成功:fullRecord=${fullRecord},value=${value}`); } async getDomainListPage(req: PageSearch): Promise> { - const pager = new Pager(req); - const url = `/api/domain?pageIndex=${pager.pageNo}&pageSize=${pager.pageSize}`; - const ret = await this.doRequestApi(url, null, 'get'); - - - let list = ret.data.results || [] - list = list.map((item: any) => ({ - id: item.id, - domain: item.domain, - })); - const total = ret.data.total || list.length; - return { - total, - list, - }; + return await this.access.getDomainListPage(req); } + } //实例化这个provider,将其自动注册到系统中 diff --git a/packages/ui/certd-server/src/plugins/plugin-doge/access.ts b/packages/ui/certd-server/src/plugins/plugin-doge/access.ts index d7c5c0cda..ea8221131 100644 --- a/packages/ui/certd-server/src/plugins/plugin-doge/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-doge/access.ts @@ -1,4 +1,5 @@ import { IsAccess, AccessInput, BaseAccess } from '@certd/pipeline'; +import { DogeClient } from './lib/index.js'; /** * 这个注解将注册一个授权配置 @@ -35,6 +36,25 @@ export class DogeCloudAccess extends BaseAccess { encrypt: true, }) secretKey = ''; + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "测试授权是否正确" + }) + testRequest = true; + + async onTestRequest() { + const dogeClient = new DogeClient(this, this.ctx.http, this.ctx.logger); + await dogeClient.request( + '/cdn/domain/list.json', + {}, + ); + return "ok"; + } } new DogeCloudAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-gcore/access.ts b/packages/ui/certd-server/src/plugins/plugin-gcore/access.ts index 8ca4ba1e8..9a8c76128 100644 --- a/packages/ui/certd-server/src/plugins/plugin-gcore/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-gcore/access.ts @@ -32,6 +32,60 @@ export class GcoreAccess extends BaseAccess { encrypt: true, }) otpkey = ''; + + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "点击测试接口是否正常" + }) + testRequest = true; + + async onTestRequest() { + await this.login(); + return "ok" + } + + async login() { + let otp = null; + if (this.otpkey) { + const response = await this.ctx.http.request({ + url: `https://cn-api.my-api.cn/api/totp/?key=${this.otpkey}`, + method: 'get', + }); + otp = response; + this.ctx.logger.info('获取到otp:', otp); + } + const loginResponse = await this.doRequestApi(`/iam/auth/jwt/login`, { + username: this.username, + password: this.password, + ...(otp && { otp }), + }); + const token = loginResponse.access; + this.ctx.logger.info('Token 获取成功'); + return token; + } + + async doRequestApi(url: string, data: any = null, method = 'post', token: string | null = null) { + const baseApi = 'https://api.gcore.com'; + const headers = { + 'Content-Type': 'application/json', + ...(token ? { authorization: `Bearer ${token}` } : {}), + }; + const res = await this.ctx.http.request({ + url, + baseURL: baseApi, + method, + data, + headers, + }); + + return res; + } } new GcoreAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-gcore/plugins/plugin-upload.ts b/packages/ui/certd-server/src/plugins/plugin-gcore/plugins/plugin-upload.ts index c61a1a47a..54211c351 100644 --- a/packages/ui/certd-server/src/plugins/plugin-gcore/plugins/plugin-upload.ts +++ b/packages/ui/certd-server/src/plugins/plugin-gcore/plugins/plugin-upload.ts @@ -41,47 +41,20 @@ export class GcoreuploadPlugin extends AbstractTaskPlugin { required: true, }) accessId!: string; - private readonly baseApi = 'https://api.gcore.com'; async onInstance() {} - private async doRequestApi(url: string, data: any = null, method = 'post', token: string | null = null) { - const headers = { - 'Content-Type': 'application/json', - ...(token ? { authorization: `Bearer ${token}` } : {}), - }; - const res = await this.http.request({ - url, - method, - data, - headers, - }); - return res; - } async execute(): Promise { const { cert, accessId } = this; const access = (await this.getAccess(accessId)) as GcoreAccess; - let otp = null; - if (access.otpkey) { - const response = await this.http.request({ - url: `https://cn-api.my-api.cn/api/totp/?key=${access.otpkey}`, - method: 'get', - }); - otp = response; - this.logger.info('获取到otp:', otp); - } - const loginResponse = await this.doRequestApi(`${this.baseApi}/iam/auth/jwt/login`, { - username: access.username, - password: access.password, - ...(otp && { otp }), - }); - const token = loginResponse.access; + + const token = await access.login(); this.logger.info('Token 获取成功'); this.logger.info('开始上传证书'); - await this.doRequestApi( - `${this.baseApi}/cdn/sslData`, + await access.doRequestApi( + `/cdn/sslData`, { name: this.certName, sslCertificate: cert.crt, diff --git a/packages/ui/certd-server/src/plugins/plugin-huawei/access/huawei-access.ts b/packages/ui/certd-server/src/plugins/plugin-huawei/access/huawei-access.ts index 439050a59..1a7c6ff34 100644 --- a/packages/ui/certd-server/src/plugins/plugin-huawei/access/huawei-access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-huawei/access/huawei-access.ts @@ -29,6 +29,25 @@ export class HuaweiAccess extends BaseAccess { accessKeySecret = ''; + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "点击测试接口是否正常" + }) + testRequest = true; + + accessToken: { expiresAt: number, token: string } + + async onTestRequest() { + await this.getProjectList(); + return "ok" + } + + async getProjectList() { const endpoint = "https://iam.cn-north-4.myhuaweicloud.com"; diff --git a/packages/ui/certd-server/src/plugins/plugin-jdcloud/access.ts b/packages/ui/certd-server/src/plugins/plugin-jdcloud/access.ts index ecba2bceb..0281f78d6 100644 --- a/packages/ui/certd-server/src/plugins/plugin-jdcloud/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-jdcloud/access.ts @@ -1,4 +1,5 @@ -import {AccessInput, BaseAccess, IsAccess} from '@certd/pipeline'; +import {AccessInput, BaseAccess, IsAccess, Pager, PageRes, PageSearch} from '@certd/pipeline'; +import { DomainRecord } from '@certd/plugin-lib'; /** * 这个注解将注册一个授权配置 @@ -32,6 +33,59 @@ export class JDCloudAccess extends BaseAccess { }) secretAccessKey = ''; + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "点击测试接口是否正常" + }) + testRequest = true; + + accessToken: { expiresAt: number, token: string } + + async onTestRequest() { + await this.getDomainListPage({ + pageNo: 1, + pageSize: 1, + }); + return "ok" + } + + + async getJDDomainService() { + const {JDDomainService} = await import("@certd/jdcloud") + const service = new JDDomainService({ + credentials: { + accessKeyId: this.accessKeyId, + secretAccessKey: this.secretAccessKey + }, + regionId: "cn-north-1" //地域信息,某个api调用可以单独传参regionId,如果不传则会使用此配置中的regionId + }); + return service; + } + + async getDomainListPage(req: PageSearch): Promise> { + const pager = new Pager(req); + const service = await this.getJDDomainService(); + const domainRes = await service.describeDomains({ + domainName: req.searchKey, + pageNumber: pager.pageNo, + pageSize: pager.pageSize, + }) + let list = domainRes.result?.dataList || [] + list = list.map((item: any) => ({ + id: item.domainId, + domain: item.domainName, + })); + return { + total:domainRes.result.totalCount || list.length, + list, + }; + } + } new JDCloudAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-jdcloud/dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-jdcloud/dns-provider.ts index 8572833d6..a86473fbd 100644 --- a/packages/ui/certd-server/src/plugins/plugin-jdcloud/dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-jdcloud/dns-provider.ts @@ -1,6 +1,6 @@ +import { PageRes, PageSearch } from "@certd/pipeline"; import { AbstractDnsProvider, CreateRecordOptions, DomainRecord, IsDnsProvider, RemoveRecordOptions } from "@certd/plugin-cert"; import { JDCloudAccess } from "./access.js"; -import { Pager, PageRes, PageSearch } from "@certd/pipeline"; @IsDnsProvider({ name: "jdcloud", @@ -85,34 +85,11 @@ export class JDCloudDnsProvider extends AbstractDnsProvider { } private async getJDDomainService() { - const {JDDomainService} = await import("@certd/jdcloud") - const service = new JDDomainService({ - credentials: { - accessKeyId: this.access.accessKeyId, - secretAccessKey: this.access.secretAccessKey - }, - regionId: "cn-north-1" //地域信息,某个api调用可以单独传参regionId,如果不传则会使用此配置中的regionId - }); - return service; + return await this.access.getJDDomainService(); } async getDomainListPage(req: PageSearch): Promise> { - const pager = new Pager(req); - const service = await this.getJDDomainService(); - const domainRes = await service.describeDomains({ - domainName: req.searchKey, - pageNumber: pager.pageNo, - pageSize: pager.pageSize, - }) - let list = domainRes.result?.dataList || [] - list = list.map((item: any) => ({ - id: item.domainId, - domain: item.domainName, - })); - return { - total:domainRes.result.totalCount || list.length, - list, - }; + return await this.access.getDomainListPage(req); } } diff --git a/packages/ui/certd-server/src/plugins/plugin-lib/aliyun/access/aliesa-access.ts b/packages/ui/certd-server/src/plugins/plugin-lib/aliyun/access/aliesa-access.ts index 6101069de..b2b0053da 100644 --- a/packages/ui/certd-server/src/plugins/plugin-lib/aliyun/access/aliesa-access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-lib/aliyun/access/aliesa-access.ts @@ -1,4 +1,6 @@ -import { AccessInput, BaseAccess, IsAccess } from "@certd/pipeline"; +import { AccessInput, BaseAccess, IsAccess, Pager, PageRes, PageSearch } from "@certd/pipeline"; +import { DomainRecord } from "@certd/plugin-lib"; +import { AliyunAccess } from "./aliyun-access.js"; @IsAccess({ name: "aliesa", @@ -40,6 +42,68 @@ export class AliesaAccess extends BaseAccess { required: true, }) region = ""; + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "点击测试接口是否正常" + }) + testRequest = true; + + async onTestRequest() { + await this.getDomainListPage({ + pageNo: 1, + pageSize: 1, + }); + return "ok" + } + + + async getEsaClient(){ + const access: AliesaAccess = this + const aliAccess = await this.ctx.accessService.getById(access.accessId) as AliyunAccess + const endpoint = `esa.${access.region}.aliyuncs.com` + return aliAccess.getClient(endpoint) + } + + async getDomainListPage(req: PageSearch): Promise> { + const pager = new Pager(req) + const client = await this.getEsaClient() + const ret = await client.doRequest({ + // 接口名称 + action: "ListSites", + // 接口版本 + version: "2024-09-10", + // 接口协议 + protocol: "HTTPS", + // 接口 HTTP 方法 + method: "GET", + authType: "AK", + style: "RPC", + data: { + query: { + SiteName: req.searchKey, + // ["SiteSearchType"] = "exact"; + SiteSearchType: "fuzzy", + AccessType: "NS", + PageSize: pager.pageSize, + PageNumber: pager.pageNo, + } + } + }) + const list = ret.Sites?.map(item => ({ + domain: item.SiteName, + id: item.SiteId, + })) + return { + list: list || [], + total: ret.TotalCount, + } + } } new AliesaAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-lib/aliyun/access/aliyun-access.ts b/packages/ui/certd-server/src/plugins/plugin-lib/aliyun/access/aliyun-access.ts index fcb01320d..4ecf5a7f3 100644 --- a/packages/ui/certd-server/src/plugins/plugin-lib/aliyun/access/aliyun-access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-lib/aliyun/access/aliyun-access.ts @@ -1,5 +1,6 @@ import { AccessInput, BaseAccess, IsAccess } from "@certd/pipeline"; import { AliyunClientV2 } from "../lib/aliyun-client-v2.js"; +import { AliyunSslClient } from "../lib/ssl-client.js"; @IsAccess({ name: "aliyun", title: "阿里云授权", @@ -28,6 +29,67 @@ export class AliyunAccess extends BaseAccess { }) accessKeySecret = ""; + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "点击测试接口是否正常" + }) + testRequest = true; + + async onTestRequest() { + await this.getCallerIdentity(); + return "ok" + } + + + async getStsClient() { + const StsClient = await import('@alicloud/sts-sdk'); + + // 配置凭证 + const sts = new StsClient.default({ + endpoint: 'sts.aliyuncs.com', + accessKeyId: this.accessKeyId, + accessKeySecret: this.accessKeySecret, + }); + + return sts + } + + + async getCallerIdentity() { + + const sts = await this.getStsClient(); + // 调用 GetCallerIdentity 接口 + const result = await sts.getCallerIdentity(); + + this.ctx.logger.log("✅ 密钥有效!"); + this.ctx.logger.log(` 账户ID: ${result.AccountId}`); + this.ctx.logger.log(` ARN: ${result.Arn}`); + this.ctx.logger.log(` 用户ID: ${result.UserId}`); + + return { + valid: true, + accountId: result.AccountId, + arn: result.Arn, + userId: result.UserId + }; + } + + + getSslClient({ endpoint }: { endpoint: string }) { + const client = new AliyunSslClient({ + access: this, + logger: this.ctx.logger, + endpoint, + }); + return client + } + + + getClient(endpoint: string) { return new AliyunClientV2({ access: this, diff --git a/packages/ui/certd-server/src/plugins/plugin-namesilo/access.ts b/packages/ui/certd-server/src/plugins/plugin-namesilo/access.ts index 7190e4172..94deda6ba 100644 --- a/packages/ui/certd-server/src/plugins/plugin-namesilo/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-namesilo/access.ts @@ -1,5 +1,7 @@ -import { IsAccess, AccessInput, BaseAccess } from '@certd/pipeline'; - +import { IsAccess, AccessInput, BaseAccess, PageSearch, PageRes, Pager } from '@certd/pipeline'; +import { DomainRecord } from '@certd/plugin-lib'; +import { merge } from 'lodash-es'; +import qs from 'qs'; /** * 这个注解将注册一个授权配置 * 在certd的后台管理系统中,用户可以选择添加此类型的授权 @@ -25,6 +27,74 @@ export class NamesiloAccess extends BaseAccess { encrypt: true, }) apiKey = ''; + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest" + }, + helper: "点击测试接口是否正常" + }) + testRequest = true; + + async onTestRequest() { + await this.getDomainListPage({ + pageNo: 1, + pageSize: 1, + }); + return "ok" + } + + async getDomainListPage(req: PageSearch): Promise> { + + const pager = new Pager(req); + const ret =await this.doRequest('/api/listDomains', { + key:req.searchKey, + page: pager.pageNo, + pageSize: pager.pageSize, + }); + let list = ret.domains ||[] + // this.logger.info("获取域名列表成功:", ret); + list = list.map((item: any) => ({ + id: item.domain, + domain: item.domain, + })); + return { + total:ret.pager?.total || list.length, + list, + }; + } + + + + async doRequest(url: string, params: any = null) { + params = merge( + { + version: 1, + type: 'json', + key: this.apiKey, + }, + params + ); + const qsString = qs.stringify(params); + url = `${url}?${qsString}`; + const res = await this.ctx.http.request({ + url, + baseURL: 'https://www.namesilo.com', + method: 'get', + headers: { + 'Content-Type': 'application/json', + }, + }); + + if (res.reply?.code !== '300' && res.reply?.code !== 300 && res.reply?.detail!=="success") { + throw new Error(`${JSON.stringify(res.reply.detail)}`); + } + return res.reply; + } + } new NamesiloAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-namesilo/dns-provider.ts b/packages/ui/certd-server/src/plugins/plugin-namesilo/dns-provider.ts index 01434462a..09ec1d017 100644 --- a/packages/ui/certd-server/src/plugins/plugin-namesilo/dns-provider.ts +++ b/packages/ui/certd-server/src/plugins/plugin-namesilo/dns-provider.ts @@ -1,8 +1,6 @@ +import { PageRes, PageSearch } from '@certd/pipeline'; import { AbstractDnsProvider, CreateRecordOptions, DomainRecord, IsDnsProvider, RemoveRecordOptions } from '@certd/plugin-cert'; -import qs from 'qs'; import { NamesiloAccess } from './access.js'; -import { merge } from 'lodash-es'; -import { Pager, PageRes, PageSearch } from '@certd/pipeline'; export type NamesiloRecord = { record_id: string; @@ -30,31 +28,6 @@ export class NamesiloDnsProvider extends AbstractDnsProvider { return true; } - private async doRequest(url: string, params: any = null) { - params = merge( - { - version: 1, - type: 'json', - key: this.access.apiKey, - }, - params - ); - const qsString = qs.stringify(params); - url = `${url}?${qsString}`; - const res = await this.http.request({ - url, - baseURL: 'https://www.namesilo.com', - method: 'get', - headers: { - 'Content-Type': 'application/json', - }, - }); - - if (res.reply?.code !== '300' && res.reply?.code !== 300 && res.reply?.detail!=="success") { - throw new Error(`${JSON.stringify(res.reply.detail)}`); - } - return res.reply; - } /** * 创建dns解析记录,用于验证域名所有权 @@ -70,7 +43,7 @@ export class NamesiloDnsProvider extends AbstractDnsProvider { this.logger.info('添加域名解析:', fullRecord, value, type, domain); //domain=namesilo.com&rrtype=A&rrhost=test&rrvalue=55.55.55.55&rrttl=7207 - const record: any = await this.doRequest('/api/dnsAddRecord', { + const record: any = await this.access.doRequest('/api/dnsAddRecord', { domain, rrtype: type, rrhost: hostRecord, @@ -97,7 +70,7 @@ export class NamesiloDnsProvider extends AbstractDnsProvider { //这里调用删除txt dns解析记录接口 const recordId = record.record_id; - await this.doRequest('/api/dnsDeleteRecord', { + await this.access.doRequest('/api/dnsDeleteRecord', { domain: options.recordReq.domain, rrid: recordId, }); @@ -105,22 +78,7 @@ export class NamesiloDnsProvider extends AbstractDnsProvider { } async getDomainListPage(req: PageSearch): Promise> { - - const pager = new Pager(req); - const ret =await this.doRequest('/api/listDomains', { - key:req.searchKey, - page: pager.pageNo, - pageSize: pager.pageSize, - }); - // this.logger.info("获取域名列表成功:", ret); - const list = ret.domains.map((item: any) => ({ - id: item.domain, - domain: item.domain, - })); - return { - total:ret.pager?.total || list.length, - list, - }; + return await this.access.getDomainListPage(req); } } diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/ctyun/access/ctyun-access.ts b/packages/ui/certd-server/src/plugins/plugin-plus/ctyun/access/ctyun-access.ts index 04875b898..b0e845302 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/ctyun/access/ctyun-access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/ctyun/access/ctyun-access.ts @@ -1,4 +1,6 @@ import { IsAccess, AccessInput, BaseAccess } from "@certd/pipeline"; +import { CtyunClient } from "../lib.js"; +import { HttpClient } from "@certd/basic"; @IsAccess({ name: "ctyun", @@ -27,6 +29,37 @@ export class CtyunAccess extends BaseAccess { helper: "", }) securityKey = ""; + + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest", + }, + helper: "点击测试接口看是否正常", + }) + testRequest = true; + + async onTestRequest() { + await this.getCdnDomainList() + return "ok"; + } + + async getCdnDomainList() { + const http: HttpClient = this.ctx.http; + const client = new CtyunClient({ + access:this, + http, + logger: this.ctx.logger, + }); + + // 008 是天翼云的CDN加速域名产品码 + const all = await client.getDomainList({ productCode: "008" }); + const list = all || [] + return list + } } new CtyunAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/k8s/access.ts b/packages/ui/certd-server/src/plugins/plugin-plus/k8s/access.ts index 21315e247..4c951ee90 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/k8s/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/k8s/access.ts @@ -29,6 +29,40 @@ export class K8sAccess extends BaseAccess { encrypt: false, }) skipTLSVerify: boolean; + + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest", + }, + helper: "点击测试接口看是否正常", + }) + testRequest = true; + + async onTestRequest() { + + const k8sClient = await this.getK8sClient() + await k8sClient.getSecrets({ + namespace: "default", + }) + return "ok"; + } + + async getK8sClient() { + const sdk = await import("@certd/lib-k8s"); + const K8sClient = sdk.K8sClient; + + const k8sClient = new K8sClient({ + kubeConfigStr: this.kubeconfig, + logger: this.ctx.logger, + skipTLSVerify: this.skipTLSVerify, + }); + return k8sClient; + } + } new K8sAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/kuocai/access.ts b/packages/ui/certd-server/src/plugins/plugin-plus/kuocai/access.ts index 0df03a0d5..9faf37d24 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/kuocai/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/kuocai/access.ts @@ -30,6 +30,87 @@ export class KuocaiCdnAccess extends BaseAccess { encrypt: true, }) password = ""; + + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest", + }, + helper: "点击测试接口看是否正常", + }) + testRequest = true; + + async onTestRequest() { + const loginRes = await this.getLoginToken(); + await this.getDomainList(loginRes); + return "ok"; + } + + + async getLoginToken() { + const url = "https://kuocaicdn.com/login/loginUser"; + const data = { + userAccount: this.username, + userPwd: this.password, + remember: true, + }; + const http = this.ctx.http; + const res: any = await http.request({ + url, + method: "POST", + data, + headers: { + "Content-Type": "application/x-www-form-urlencoded", + }, + returnOriginRes: true, + }); + if (!res.data?.success) { + throw new Error(res.data?.message); + } + + const jsessionId = this.ctx.utils.request.getCookie(res, "JSESSIONID"); + const token = res.data?.data; + return { + jsessionId, + token, + }; + } + + async getDomainList(loginRes: any) { + const url = "https://kuocaicdn.com/CdnDomain/queryForDatatables"; + const data = { + draw: 1, + start: 0, + length: 1000, + search: { + value: "", + regex: false, + }, + }; + + const res = await this.doRequest(url, loginRes, data); + return res.data?.data; + } + + async doRequest(url: string, loginRes: any, data: any) { + const http = this.ctx.http; + const res: any = await http.request({ + url, + method: "POST", + headers: { + Cookie: `JSESSIONID=${loginRes.jsessionId};kuocai_cdn_token=${loginRes.token}`, + }, + data, + }); + if (!res.success) { + throw new Error(res.message); + } + return res; + } + } new KuocaiCdnAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/kuocai/plugins/plugin-deploy-to-cdn.ts b/packages/ui/certd-server/src/plugins/plugin-plus/kuocai/plugins/plugin-deploy-to-cdn.ts index c5561bd7c..831fb73ef 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/kuocai/plugins/plugin-deploy-to-cdn.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/kuocai/plugins/plugin-deploy-to-cdn.ts @@ -54,7 +54,7 @@ export class KuocaiDeployToCDNPlugin extends AbstractTaskPlugin { async onInstance() {} async execute(): Promise { const access = await this.getAccess(this.accessId); - const loginRes = await this.getLoginToken(access); + const loginRes = await access.getLoginToken(); const curl = "https://kuocaicdn.com/CdnDomainHttps/httpsConfiguration"; for (const domain of this.domains) { @@ -78,71 +78,11 @@ export class KuocaiDeployToCDNPlugin extends AbstractTaskPlugin { private_key: cert.key, }, }; - await this.doRequest(curl, loginRes, update); + await access.doRequest(curl, loginRes, update); this.logger.info(`站点${domain}证书更新成功`); } } - async getLoginToken(access: KuocaiCdnAccess) { - const url = "https://kuocaicdn.com/login/loginUser"; - const data = { - userAccount: access.username, - userPwd: access.password, - remember: true, - }; - const http = this.ctx.http; - const res: any = await http.request({ - url, - method: "POST", - data, - headers: { - "Content-Type": "application/x-www-form-urlencoded", - }, - returnOriginRes: true, - }); - if (!res.data?.success) { - throw new Error(res.data?.message); - } - - const jsessionId = this.ctx.utils.request.getCookie(res, "JSESSIONID"); - const token = res.data?.data; - return { - jsessionId, - token, - }; - } - - async getDomainList(loginRes: any) { - const url = "https://kuocaicdn.com/CdnDomain/queryForDatatables"; - const data = { - draw: 1, - start: 0, - length: 1000, - search: { - value: "", - regex: false, - }, - }; - - const res = await this.doRequest(url, loginRes, data); - return res.data?.data; - } - - private async doRequest(url: string, loginRes: any, data: any) { - const http = this.ctx.http; - const res: any = await http.request({ - url, - method: "POST", - headers: { - Cookie: `JSESSIONID=${loginRes.jsessionId};kuocai_cdn_token=${loginRes.token}`, - }, - data, - }); - if (!res.success) { - throw new Error(res.message); - } - return res; - } async onGetDomainList(data: any) { if (!this.accessId) { @@ -150,9 +90,9 @@ export class KuocaiDeployToCDNPlugin extends AbstractTaskPlugin { } const access = await this.getAccess(this.accessId); - const loginRes = await this.getLoginToken(access); + const loginRes = await access.getLoginToken(); - const list = await this.getDomainList(loginRes); + const list = await access.getDomainList(loginRes); if (!list || list.length === 0) { throw new Error("您账户下还没有站点域名,请先添加域名"); diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/lecdn/access.ts b/packages/ui/certd-server/src/plugins/plugin-plus/lecdn/access.ts index 2771afaaa..d52b081ce 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/lecdn/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/lecdn/access.ts @@ -85,6 +85,90 @@ export class LeCDNAccess extends BaseAccess { `, }) apiToken = ""; + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest", + }, + helper: "点击测试接口看是否正常", + }) + testRequest = true; + + _token: string; + + async onTestRequest() { + await this.getCerts(); + return "ok"; + } + + + + async getCerts() { + // http://cdnadmin.kxfox.com/prod-api/certificate?current_page=1&total=3&page_size=10 + return await this.doRequest({ + url: `/prod-api/certificate`, + method: "get", + params: { + current_page: 1, + page_size: 1000, + }, + }); + } + + async doRequest(config: any) { + + const token = await this.getToken(); + const access = this; + const Authorization = access.type === "token" ? access.apiToken : `Bearer ${token}`; + const res = await this.ctx.http.request({ + baseURL: access.url, + headers: { + Authorization, + }, + ...config, + }); + this.checkRes(res); + return res.data; + } + + + async getToken() { + if (this.type === "token") { + return this.apiToken; + } + if (this._token){ + return this._token; + } + // http://cdnadmin.kxfox.com/prod-api/login + const access = this; + const res = await this.ctx.http.request({ + url: `/prod-api/login`, + baseURL: access.url, + method: "post", + data: { + //新旧版本不一样,旧版本是username,新版本是email + email: access.username, + username: access.username, + password: access.password, + }, + }); + this.checkRes(res); + //新旧版本不一样,旧版本是access_token,新版本是token + const token = res.data.access_token || res.data.token; + + this._token = token; + return token; + } + + private checkRes(res: any) { + if (res.code !== 0 && res.code !== 200) { + throw new Error(res.message || JSON.stringify(res)); + } + } + } new LeCDNAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/lecdn/plugins/plugin-update-cert-v2.ts b/packages/ui/certd-server/src/plugins/plugin-plus/lecdn/plugins/plugin-update-cert-v2.ts index f50093172..7c356c800 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/lecdn/plugins/plugin-update-cert-v2.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/lecdn/plugins/plugin-update-cert-v2.ts @@ -58,49 +58,15 @@ export class LeCDNUpdateCertV2 extends AbstractTaskPlugin { async onInstance() { this.access = await this.getAccess(this.accessId); - this.token = await this.getToken(); + this.access.getToken(); } - async doRequest(config: any) { - const access = this.access; - const Authorization = this.access.type === "token" ? this.access.apiToken : `Bearer ${this.token}`; - const res = await this.ctx.http.request({ - baseURL: access.url, - headers: { - Authorization, - }, - ...config, - }); - this.checkRes(res); - return res.data; - } - async getToken() { - if (this.access.type === "token") { - return this.access.apiToken; - } - // http://cdnadmin.kxfox.com/prod-api/login - const access = this.access; - const res = await this.ctx.http.request({ - url: `/prod-api/login`, - baseURL: access.url, - method: "post", - data: { - //新旧版本不一样,旧版本是username,新版本是email - email: access.username, - username: access.username, - password: access.password, - }, - }); - this.checkRes(res); - //新旧版本不一样,旧版本是access_token,新版本是token - return res.data.access_token || res.data.token; - } async getCertInfo(id: number) { // http://cdnadmin.kxfox.com/prod-api/certificate/9 // Bearer edGkiOiIJ8 - return await this.doRequest({ + return await this.access.doRequest({ url: `/prod-api/certificate/${id}`, method: "get", }); @@ -117,7 +83,7 @@ export class LeCDNUpdateCertV2 extends AbstractTaskPlugin { this.logger.info(`证书名称:${certInfo.name}`); - return await this.doRequest({ + return await this.access.doRequest({ url: `/prod-api/certificate/${id}`, method: "put", data: certInfo, @@ -134,17 +100,13 @@ export class LeCDNUpdateCertV2 extends AbstractTaskPlugin { this.logger.info(`更新证书完成`); } - private checkRes(res: any) { - if (res.code !== 0 && res.code !== 200) { - throw new Error(res.message || JSON.stringify(res)); - } - } + async onGetCertList(data: any) { if (!this.accessId) { throw new Error("请选择Access授权"); } - const res = await this.getCerts(); + const res = await this.access.getCerts(); //新旧版本不一样,一个data 一个是items const list = res.items || res.data; if (!res || list.length === 0) { @@ -158,18 +120,6 @@ export class LeCDNUpdateCertV2 extends AbstractTaskPlugin { }; }); } - - private async getCerts() { - // http://cdnadmin.kxfox.com/prod-api/certificate?current_page=1&total=3&page_size=10 - return await this.doRequest({ - url: `/prod-api/certificate`, - method: "get", - params: { - current_page: 1, - page_size: 1000, - }, - }); - } } new LeCDNUpdateCertV2(); diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/lucky/access.ts b/packages/ui/certd-server/src/plugins/plugin-plus/lucky/access.ts index 53d0e3cea..23d599ecb 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/lucky/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/lucky/access.ts @@ -49,6 +49,62 @@ export class LuckyAccess extends BaseAccess { encrypt: true, }) openToken = ""; + + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest", + }, + helper: "点击测试接口看是否正常", + }) + testRequest = true; + + async onTestRequest() { + await this.getCertList(); + return "ok"; + } + + + async doRequest(req: { urlPath: string; data: any; method?: string }) { + const { urlPath, data, method } = req; + let url = `${this.url}/${this.safePath || ""}${urlPath}?_=${Math.floor(new Date().getTime())}`; + // 从第7个字符起,将//替换成/ + const protocol = url.substring(0, 7); + let suffix = url.substring(7); + suffix = suffix.replaceAll("//", "/"); + suffix = suffix.replaceAll("//", "/"); + url = protocol + suffix; + + const headers: any = { + // Origin: access.url, + "Content-Type": "application/json", + // "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36", + }; + headers["openToken"] = this.openToken; + const res = await this.ctx.http.request({ + method: method || "POST", + url, + data, + headers, + skipSslVerify: true, + }); + if (res.ret !== 0) { + throw new Error(`请求失败:${res.msg}`); + } + return res; + } + + async getCertList() { + const res = await this.doRequest({ + urlPath: "/api/ssl", + data: {}, + method: "GET", + }); + const list = res.list || []; + return list + } } new LuckyAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/lucky/plugins/plugin-upload.ts b/packages/ui/certd-server/src/plugins/plugin-plus/lucky/plugins/plugin-upload.ts index cb66f5ef7..5d05ab5a2 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/lucky/plugins/plugin-upload.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/lucky/plugins/plugin-upload.ts @@ -82,8 +82,7 @@ export class LuckyUpdateCert extends AbstractPlusTaskPlugin { throw new Error(`没有找到证书:Key=${item},请确认该证书是否存在`); } const remark = old.Remark; - const res = await this.doRequest({ - access, + const res = await access.doRequest({ urlPath: "/api/ssl", method: "PUT", data: { @@ -107,44 +106,9 @@ export class LuckyUpdateCert extends AbstractPlusTaskPlugin { this.logger.info("部署成功"); } - async doRequest(req: { access: LuckyAccess; urlPath: string; data: any; method?: string }) { - const { access, urlPath, data, method } = req; - let url = `${access.url}/${access.safePath || ""}${urlPath}?_=${Math.floor(new Date().getTime())}`; - // 从第7个字符起,将//替换成/ - const protocol = url.substring(0, 7); - let suffix = url.substring(7); - suffix = suffix.replaceAll("//", "/"); - suffix = suffix.replaceAll("//", "/"); - url = protocol + suffix; - - const headers: any = { - // Origin: access.url, - "Content-Type": "application/json", - // "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.6261.95 Safari/537.36", - }; - headers["openToken"] = access.openToken; - const res = await this.http.request({ - method: method || "POST", - url, - data, - headers, - skipSslVerify: true, - }); - if (res.ret !== 0) { - throw new Error(`请求失败:${res.msg}`); - } - return res; - } - async onGetCertList() { const access: LuckyAccess = await this.getAccess(this.accessId); - const res = await this.doRequest({ - access, - urlPath: "/api/ssl", - data: {}, - method: "GET", - }); - const list = res.list; + const list = await access.getCertList(); if (!list || list.length === 0) { throw new Error("没有找到证书,请先在SSL/TLS证书页面中手动上传一次证书"); } diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/maoyun/access.ts b/packages/ui/certd-server/src/plugins/plugin-plus/maoyun/access.ts index 652b38f13..def219fb6 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/maoyun/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/maoyun/access.ts @@ -1,4 +1,5 @@ import { IsAccess, AccessInput, BaseAccess } from "@certd/pipeline"; +import { MaoyunClient } from "@certd/plugin-plus"; /** */ @@ -49,6 +50,45 @@ export class MaoyunAccess extends BaseAccess { required: false, }) httpProxy!: string; + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "TestRequest", + }, + helper: "点击测试接口看是否正常", + }) + testRequest = true; + + async onTestRequest() { + await this.getCdnDomainList(); + return "ok"; + } + + async getCdnDomainList() { + const client = new MaoyunClient({ + http: this.ctx.http, + logger: this.ctx.logger, + access: this, + }); + await client.login(); + const res = await client.doRequest({ + url: "/cdn/domain", + data: {}, + params: { + channel_type: "0,1,2", + page: 1, + page_size: 1000, + }, + method: "GET", + }); + const list = res.data || []; + return list + } + + + } new MaoyunAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/maoyun/plugins/plugin-deploy-to-cdn.ts b/packages/ui/certd-server/src/plugins/plugin-plus/maoyun/plugins/plugin-deploy-to-cdn.ts index 4039a710e..549f4a93f 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/maoyun/plugins/plugin-deploy-to-cdn.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/maoyun/plugins/plugin-deploy-to-cdn.ts @@ -115,23 +115,7 @@ export class MaoyunDeployToCdn extends AbstractPlusTaskPlugin { async onGetDomainList() { const access: MaoyunAccess = await this.getAccess(this.accessId); - const client = new MaoyunClient({ - http: this.ctx.http, - logger: this.logger, - access, - }); - await client.login(); - const res = await client.doRequest({ - url: "/cdn/domain", - data: {}, - params: { - channel_type: "0,1,2", - page: 1, - page_size: 1000, - }, - method: "GET", - }); - const list = res.data; + const list = await access.getCdnDomainList(); if (!list || list.length === 0) { throw new Error("没有找到加速域名,请先在控制台添加加速域名"); } diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/safeline/access.ts b/packages/ui/certd-server/src/plugins/plugin-plus/safeline/access.ts index 7aa9cb46e..3b44f59d4 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/safeline/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/safeline/access.ts @@ -1,3 +1,4 @@ +import { HttpRequestConfig } from "@certd/basic"; import { IsAccess, AccessInput, BaseAccess } from "@certd/pipeline"; /** @@ -40,6 +41,48 @@ export class SafelineAccess extends BaseAccess { helper: "如果面板的url是https,且使用的是自签名证书,则需要开启此选项,其他情况可以关闭", }) skipSslVerify = true; + + @AccessInput({ + title: "测试", + component: { + name: "api-test", + action: "onTestRequest", + }, + helper: "点击测试接口看是否正常", + }) + testRequest = true; + + async onTestRequest() { + await this.getCertList(); + return "ok"; + } + + async getCertList() { + const res = await this.doRequest({ + url: "/api/open/cert", + method: "get", + data: {}, + }); + const nodes = res?.nodes || []; + return nodes + } + + + async doRequest(config: HttpRequestConfig) { + config.baseURL = this.baseUrl; + config.skipSslVerify = this.skipSslVerify ?? false; + config.logRes = false; + config.logParams = false; + config.headers = { + "X-SLCE-API-TOKEN": this.apiToken, + }; + const res = await this.ctx.http.request(config); + if (!res.err) { + return res.data; + } + throw new Error(res.msg); + } + } new SafelineAccess(); diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/safeline/plugins/deploy-to-website.ts b/packages/ui/certd-server/src/plugins/plugin-plus/safeline/plugins/deploy-to-website.ts index 63aeaf3d0..eede0d16b 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/safeline/plugins/deploy-to-website.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/safeline/plugins/deploy-to-website.ts @@ -1,9 +1,8 @@ import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput } from "@certd/pipeline"; -import { HttpRequestConfig } from "@certd/basic"; import { CertApplyPluginNames, CertInfo } from "@certd/plugin-cert"; -import { SafelineAccess } from "../access.js"; import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from "@certd/plugin-lib"; +import { SafelineAccess } from "../access.js"; @IsTaskPlugin({ name: "SafelineDeployToWebsitePlugin", @@ -83,7 +82,7 @@ export class SafelineDeployToWebsitePlugin extends AbstractTaskPlugin { data.id = parseInt(certId) type = "更新" } - const res = await this.doRequest({ + const res = await this.access.doRequest({ url: "/api/open/cert", method: "post", data:data @@ -91,25 +90,12 @@ export class SafelineDeployToWebsitePlugin extends AbstractTaskPlugin { this.logger.info(`证书<${certId}>${type}成功,ID:${res}`); } - async doRequest(config: HttpRequestConfig) { - config.baseURL = this.access.baseUrl; - config.skipSslVerify = this.access.skipSslVerify ?? false; - config.logRes = false; - config.logParams = false; - config.headers = { - "X-SLCE-API-TOKEN": this.access.apiToken, - }; - const res = await this.ctx.http.request(config); - if (!res.err) { - return res.data; - } - throw new Error(res.msg); - } + // requestHandle async onGetCertIds() { - const res = await this.doRequest({ + const res = await this.access.doRequest({ url: "/api/open/cert", method: "get", data: {}, diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/synology/plugins/plugin-keep-alive.ts b/packages/ui/certd-server/src/plugins/plugin-plus/synology/plugins/plugin-keep-alive.ts index edb81b549..95593aa46 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/synology/plugins/plugin-keep-alive.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/synology/plugins/plugin-keep-alive.ts @@ -34,11 +34,10 @@ export class SynologyKeepAlivePlugin extends AbstractPlusTaskPlugin { @TaskInput({ title: "间隔天数", helper: "多少天刷新一次,建议15天以内", + value: 15, component: { - name: "number-input", - type: "number", - min: 1, - max: 30, + name: "a-input-number", + vModel:"value", }, required: true, }) @@ -51,7 +50,7 @@ export class SynologyKeepAlivePlugin extends AbstractPlusTaskPlugin { lastRefreshTime!: number; async onInstance() {} - async execute(): Promise { + async execute(): Promise { this.logger.info("开始刷新群晖登录有效期"); const now = dayjs() const status = this.getLastStatus(); @@ -61,18 +60,23 @@ export class SynologyKeepAlivePlugin extends AbstractPlusTaskPlugin { this.lastRefreshTime = lastRefreshTime; const lastTime = dayjs(lastRefreshTime); const diffDays = now.diff(lastTime, "day"); + + this.logger.info(`上次刷新时间${lastTime.format("YYYY-MM-DD")}`); if (diffDays < this.intervalDays) { - this.logger.info(`距离上次刷新有效期${diffDays.toFixed(0)}天(${this.intervalDays}天),无需刷新`); + this.logger.info(`距离上次刷新${diffDays}天,不足${this.intervalDays}天,无需刷新`); this.logger.info(`下一次刷新时间${lastTime.add(this.intervalDays, "day").format("YYYY-MM-DD")}`); - return; + return "skip"; + }else{ + this.logger.info(`超过${this.intervalDays}天,需要刷新`); } + } // const access: SynologyAccess = await this.getAccess(this.accessId); // const client = new SynologyClient(access as any, this.ctx.http, this.ctx.logger, access.skipSslVerify); // await client.doLogin(); // await client.getCertList(); - this.lastRefreshTime = now.unix(); + this.lastRefreshTime = now.valueOf(); this.logger.info("刷新群晖登录有效期成功"); } diff --git a/packages/ui/certd-server/src/plugins/plugin-plus/unicloud/access.ts b/packages/ui/certd-server/src/plugins/plugin-plus/unicloud/access.ts index 2b704c5de..418b093c9 100644 --- a/packages/ui/certd-server/src/plugins/plugin-plus/unicloud/access.ts +++ b/packages/ui/certd-server/src/plugins/plugin-plus/unicloud/access.ts @@ -29,6 +29,7 @@ export class UniCloudAccess extends BaseAccess { encrypt: true, }) password = ""; + } new UniCloudAccess(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 57585edde..9d2c6e510 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,7 +49,7 @@ importers: packages/core/acme-client: dependencies: '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../basic '@peculiar/x509': specifier: ^1.11.0 @@ -213,10 +213,10 @@ importers: packages/core/pipeline: dependencies: '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../basic '@certd/plus-core': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../pro/plus-core dayjs: specifier: ^1.11.7 @@ -412,7 +412,7 @@ importers: packages/libs/lib-k8s: dependencies: '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/basic '@kubernetes/client-node': specifier: 0.21.0 @@ -452,19 +452,19 @@ importers: packages/libs/lib-server: dependencies: '@certd/acme-client': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/pipeline '@certd/plugin-lib': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../plugins/plugin-lib '@certd/plus-core': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../pro/plus-core '@midwayjs/cache': specifier: 3.14.0 @@ -610,16 +610,16 @@ importers: packages/plugins/plugin-cert: dependencies: '@certd/acme-client': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/pipeline '@certd/plugin-lib': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../plugin-lib psl: specifier: ^1.9.0 @@ -683,16 +683,16 @@ importers: specifier: ^3.964.0 version: 3.964.0(aws-crt@1.26.2) '@certd/acme-client': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/pipeline '@certd/plus-core': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../pro/plus-core '@kubernetes/client-node': specifier: 0.21.0 @@ -783,16 +783,16 @@ importers: packages/pro/commercial-core: dependencies: '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/basic '@certd/lib-server': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../libs/lib-server '@certd/pipeline': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/pipeline '@certd/plus-core': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../plus-core '@midwayjs/core': specifier: 3.20.11 @@ -865,16 +865,16 @@ importers: packages/pro/plugin-plus: dependencies: '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/basic '@certd/pipeline': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/pipeline '@certd/plugin-lib': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../plugins/plugin-lib '@certd/plus-core': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../plus-core crypto-js: specifier: ^4.2.0 @@ -950,7 +950,7 @@ importers: packages/pro/plus-core: dependencies: '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/basic dayjs: specifier: ^1.11.7 @@ -1246,10 +1246,10 @@ importers: version: 0.1.3(zod@3.24.4) devDependencies: '@certd/lib-iframe': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../libs/lib-iframe '@certd/pipeline': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/pipeline '@rollup/plugin-commonjs': specifier: ^25.0.7 @@ -1416,6 +1416,9 @@ importers: '@alicloud/pop-core': specifier: ^1.7.10 version: 1.8.0 + '@alicloud/sts-sdk': + specifier: ^1.0.2 + version: 1.0.2 '@alicloud/tea-typescript': specifier: ^1.8.0 version: 1.8.0 @@ -1437,47 +1440,50 @@ importers: '@aws-sdk/client-s3': specifier: ^3.964.0 version: 3.964.0(aws-crt@1.26.2) + '@aws-sdk/client-sts': + specifier: ^3.990.0 + version: 3.990.0(aws-crt@1.26.2) '@certd/acme-client': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/acme-client '@certd/basic': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/basic '@certd/commercial-core': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../pro/commercial-core '@certd/cv4pve-api-javascript': specifier: ^8.4.2 version: 8.4.2 '@certd/jdcloud': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../libs/lib-jdcloud '@certd/lib-huawei': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../libs/lib-huawei '@certd/lib-k8s': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../libs/lib-k8s '@certd/lib-server': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../libs/lib-server '@certd/midway-flyway-js': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../libs/midway-flyway-js '@certd/pipeline': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../core/pipeline '@certd/plugin-cert': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../plugins/plugin-cert '@certd/plugin-lib': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../plugins/plugin-lib '@certd/plugin-plus': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../pro/plugin-plus '@certd/plus-core': - specifier: ^1.38.5 + specifier: ^1.38.9 version: link:../../pro/plus-core '@google-cloud/publicca': specifier: ^1.3.0 @@ -1855,6 +1861,9 @@ packages: '@alicloud/gateway-spi@0.0.8': resolution: {integrity: sha512-KM7fu5asjxZPmrz9sJGHJeSU+cNQNOxW+SFmgmAIrITui5hXL2LB+KNRuzWmlwPjnuA2X3/keq9h6++S9jcV5g==} + '@alicloud/http-core-sdk@1.0.0': + resolution: {integrity: sha512-ZODX85jwCf63Fmzj+pYZq85z8+SZzNg/FL+oW1/L/sRM8oj70+1+pdG0RHynAxBXkjNYt4eLIPrBvIEeVfx+LQ==} + '@alicloud/openapi-client@0.4.15': resolution: {integrity: sha512-4VE0/k5ZdQbAhOSTqniVhuX1k5DUeUMZv74degn3wIWjLY6Bq+hxjaGsaHYlLZ2gA5wUrs8NcI5TE+lIQS3iiA==} @@ -1868,6 +1877,9 @@ packages: resolution: {integrity: sha512-ef6vIVigtr9n8Lw6Ld2GZ9jVUD0+ReHviaQaMqZDPI2HwdpVvrq1Rvn2tBnFToe0tdTpovz9N7XFSf/C274OtA==} engines: {node: '>=8.0.0'} + '@alicloud/sts-sdk@1.0.2': + resolution: {integrity: sha512-WOv1qkNW7r2S6I0f2Qz8+7D5uU7bgE5vHxDWExcXmomMgr2i8JM6GhJeFPNVOzSWPgQi6Ujc+EATZ6ies9+UMA==} + '@alicloud/tea-typescript@1.8.0': resolution: {integrity: sha512-CWXWaquauJf0sW30mgJRVu9aaXyBth5uMBCUc+5vKTK1zlgf3hIqRUjJZbjlwHwQ5y9anwcu18r48nOZb7l2QQ==} @@ -1947,6 +1959,7 @@ packages: '@aws-sdk/client-route-53@3.964.0': resolution: {integrity: sha512-eFiAEzBdh6gI8IyofwE9dPytsNOKqjwJROrsH1S6+Qze9Gp8fnYRdU8Ofw4BUYndhL3XUqjAtao5Kfge2nzS3A==} engines: {node: '>=18.0.0'} + deprecated: Upgrade @aws-sdk/client-route-53 to v3.985.0+ for a fix to Error.message descriptiveness (see https://github.com/aws/aws-sdk-js-v3/pull/7717). '@aws-sdk/client-s3@3.964.0': resolution: {integrity: sha512-mDK+3qpfHnEPXeF6D8nQkJOkOvchllQosgfxv0FK9PNBuU9WVkP8yj7y3YwH6JYTgy1ejz1Ju/YfoUbbE6m7zw==} @@ -1956,6 +1969,14 @@ packages: resolution: {integrity: sha512-IenVyY8Io2CwBgmS22xk/H5LibmSbvLnPA9oFqLORO6Ji1Ks8z/ow+ud/ZurVjFekz3LD/uxVFX3ZKGo6N7Byw==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso@3.990.0': + resolution: {integrity: sha512-xTEaPjZwOqVjGbLOP7qzwbdOWJOo1ne2mUhTZwEBBkPvNk4aXB/vcYwWwrjoSWUqtit4+GDbO75ePc/S6TUJYQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/client-sts@3.990.0': + resolution: {integrity: sha512-w1MfhIKV1GmQJI2gN64gvtwSPJR55n5TIkujIoZZy3V3OlksAOWCnfUBHoyfu8x4aZn70cINfa+ixPtUHtnEew==} + engines: {node: '>=20.0.0'} + '@aws-sdk/core@3.810.0': resolution: {integrity: sha512-s2IJk+qa/15YZcv3pbdQNATDR+YdYnHf94MrAeVAWubtRLnzD8JciC+gh4LSPp7JzrWSvVOg2Ut1S+0y89xqCg==} engines: {node: '>=18.0.0'} @@ -1964,6 +1985,10 @@ packages: resolution: {integrity: sha512-1gIfbt0KRxI8am1UYFcIxQ5QKb22JyN3k52sxyrKXJYC8Knn/rTUAZbYti45CfETe5PLadInGvWqClwGRlZKNg==} engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.973.10': + resolution: {integrity: sha512-4u/FbyyT3JqzfsESI70iFg6e2yp87MB5kS2qcxIA66m52VSTN1fvuvbCY1h/LKq1LvuxIrlJ1ItcyjvcKoaPLg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/crc64-nvme@3.957.0': resolution: {integrity: sha512-qSwSfI+qBU9HDsd6/4fM9faCxYJx2yDuHtj+NVOQ6XYDWQzFab/hUdwuKZ77Pi6goLF1pBZhJ2azaC2w7LbnTA==} engines: {node: '>=18.0.0'} @@ -1972,34 +1997,66 @@ packages: resolution: {integrity: sha512-jWNSXOOBMYuxzI2rXi8x91YL07dhomyGzzh0CdaLej0LRmknmDrZcZNkVpa7Fredy1PFcmOlokwCS5PmZMN8ZQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.972.8': + resolution: {integrity: sha512-r91OOPAcHnLCSxaeu/lzZAVRCZ/CtTNuwmJkUwpwSDshUrP7bkX1OmFn2nUMWd9kN53Q4cEo8b7226G4olt2Mg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-http@3.964.0': resolution: {integrity: sha512-up7dl6vcaoXuYSwGXDvx8RnF8Lwj3jGChhyUR7krZOXLarIfUUN3ILOZnVNK5s/HnVNkEILlkdPvjhr9LVC1/Q==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.972.10': + resolution: {integrity: sha512-DTtuyXSWB+KetzLcWaSahLJCtTUe/3SXtlGp4ik9PCe9xD6swHEkG8n8/BNsQ9dsihb9nhFvuUB4DpdBGDcvVg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-ini@3.964.0': resolution: {integrity: sha512-t4FN9qTWU4nXDU6EQ6jopvyhXw0dbQ3n+3g6x5hmc1ECFAqA+xmFd1i5LljdZCi79cUXHduQWwvW8RJHMf0qJw==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.972.8': + resolution: {integrity: sha512-n2dMn21gvbBIEh00E8Nb+j01U/9rSqFIamWRdGm/mE5e+vHQ9g0cBNdrYFlM6AAiryKVHZmShWT9D1JAWJ3ISw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-login@3.964.0': resolution: {integrity: sha512-c64dmTizMkJXDRzN3NYPTmUpKxegr5lmLOYPeQ60Zcbft6HFwPme8Gwy8pNxO4gG1fw6Ja2Vu6fZuSTn8aDFOQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-login@3.972.8': + resolution: {integrity: sha512-rMFuVids8ICge/X9DF5pRdGMIvkVhDV9IQFQ8aTYk6iF0rl9jOUa1C3kjepxiXUlpgJQT++sLZkT9n0TMLHhQw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-node@3.964.0': resolution: {integrity: sha512-FHxDXPOj888/qc/X8s0x4aUBdp4Y3k9VePRehUJBWRhhTsAyuIJis5V0iQeY1qvtqHXYa2qd1EZHGJ3bTjHxSw==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.972.9': + resolution: {integrity: sha512-LfJfO0ClRAq2WsSnA9JuUsNyIicD2eyputxSlSL0EiMrtxOxELLRG6ZVYDf/a1HCepaYPXeakH4y8D5OLCauag==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-process@3.964.0': resolution: {integrity: sha512-HaTLKqj3jeZY88E/iBjsNJsXgmRTTT7TghqeRiF8FKb/7UY1xEvasBO0c1xqfOye8dsyt35nTfTTyIsd/CBfww==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.972.8': + resolution: {integrity: sha512-6cg26ffFltxM51OOS8NH7oE41EccaYiNlbd5VgUYwhiGCySLfHoGuGrLm2rMB4zhy+IO5nWIIG0HiodX8zdvHA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-sso@3.964.0': resolution: {integrity: sha512-oR78TjSpjVf1IpPWQnGHEGqlnQs+K4f5nCxLK2P6JDPprXay6oknsoSiU4x2urav6VCyMPMC9KTCGjBoFKUIxQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.972.8': + resolution: {integrity: sha512-35kqmFOVU1n26SNv+U37sM8b2TzG8LyqAcd6iM9gprqxyHEh/8IM3gzN4Jzufs3qM6IrH8e43ryZWYdvfVzzKQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-web-identity@3.964.0': resolution: {integrity: sha512-07JQDmbjZjOt3nL/j1wTcvQqjmPkynQYftUV/ooZ+qTbmJXFbCBdal1VCElyeiu0AgBq9dfhw0rBBcbND1ZMlA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.972.8': + resolution: {integrity: sha512-CZhN1bOc1J3ubQPqbmr5b4KaMJBgdDvYsmEIZuX++wFlzmZsKj1bwkaiTEb5U2V7kXuzLlpF5HJSOM9eY/6nGA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/crt-loader@3.810.0': resolution: {integrity: sha512-BEMKTieR4rWG8C2uE9F/vVfShKonhNiopuiGzhPwVMT+G1L9shcNe1tuMj4HLnaID1hjTuckkpi6cBIFZaIYMw==} engines: {node: '>=18.0.0'} @@ -2020,6 +2077,10 @@ packages: resolution: {integrity: sha512-BBgKawVyfQZglEkNTuBBdC3azlyqNXsvvN4jPkWAiNYcY0x1BasaJFl+7u/HisfULstryweJq/dAvIZIxzlZaA==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-host-header@3.972.3': + resolution: {integrity: sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-location-constraint@3.957.0': resolution: {integrity: sha512-y8/W7TOQpmDJg/fPYlqAhwA4+I15LrS7TwgUEoxogtkD8gfur9wFMRLT8LCyc9o4NMEcAnK50hSb4+wB0qv6tQ==} engines: {node: '>=18.0.0'} @@ -2028,10 +2089,18 @@ packages: resolution: {integrity: sha512-w1qfKrSKHf9b5a8O76yQ1t69u6NWuBjr5kBX+jRWFx/5mu6RLpqERXRpVJxfosbep7k3B+DSB5tZMZ82GKcJtQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-logger@3.972.3': + resolution: {integrity: sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-recursion-detection@3.957.0': resolution: {integrity: sha512-D2H/WoxhAZNYX+IjkKTdOhOkWQaK0jjJrDBj56hKjU5c9ltQiaX/1PqJ4dfjHntEshJfu0w+E6XJ+/6A6ILBBA==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-recursion-detection@3.972.3': + resolution: {integrity: sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==} + engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-sdk-route53@3.957.0': resolution: {integrity: sha512-aeH6RcXOLpXM07hJHQrtOUvEh7BDTAlRyFAievlvbqc+NSUShcB5/3X1nvs7D+dj3COplALoDliRxyGvbl1nhw==} engines: {node: '>=18.0.0'} @@ -2056,14 +2125,26 @@ packages: resolution: {integrity: sha512-/QyBl8WLNtqw3ucyAggumQXVCi8GRxaDGE1ElyYMmacfiwHl37S9y8JVW/QLL1lIEXGcsrhMUKV3pyFJFALA7w==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-user-agent@3.972.10': + resolution: {integrity: sha512-bBEL8CAqPQkI91ZM5a9xnFAzedpzH6NYCOtNyLarRAzTUTFN2DKqaC60ugBa7pnU1jSi4mA7WAXBsrod7nJltg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/nested-clients@3.964.0': resolution: {integrity: sha512-ql+ftRwjyZkZeG3qbrRJFVmNR0id83WEUqhFVjvrQMWspNApBhz0Ar4YVSn7Uv0QaKkaR7ALPtmdMzFr3/E4bQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.990.0': + resolution: {integrity: sha512-3NA0s66vsy8g7hPh36ZsUgO4SiMyrhwcYvuuNK1PezO52vX3hXDW4pQrC6OQLGKGJV0o6tbEyQtXb/mPs8zg8w==} + engines: {node: '>=20.0.0'} + '@aws-sdk/region-config-resolver@3.957.0': resolution: {integrity: sha512-V8iY3blh8l2iaOqXWW88HbkY5jDoWjH56jonprG/cpyqqCnprvpMUZWPWYJoI8rHRf2bqzZeql1slxG6EnKI7A==} engines: {node: '>=18.0.0'} + '@aws-sdk/region-config-resolver@3.972.3': + resolution: {integrity: sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==} + engines: {node: '>=20.0.0'} + '@aws-sdk/s3-request-presigner@3.964.0': resolution: {integrity: sha512-gKKdIZGYV8Ohm3X8j3y6Xr2ua1oD/Wsa3N7hYro3HqcnuGvl1h+mdw0IqUU+5yEzcoM5ItLJnH+6Q8Xz+Wv9gw==} engines: {node: '>=18.0.0'} @@ -2084,6 +2165,10 @@ packages: resolution: {integrity: sha512-UqouLQbYepZnMFJGB/DVpA5GhF9uT98vNWSMz9PVbhgEPUKa73FECRT6YFZvZOh8kA+0JiENrnmS6d93I70ykQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.990.0': + resolution: {integrity: sha512-L3BtUb2v9XmYgQdfGBzbBtKMXaP5fV973y3Qdxeevs6oUTVXFmi/mV1+LnScA/1wVPJC9/hlK+1o5vbt7cG7EQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/types@3.804.0': resolution: {integrity: sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==} engines: {node: '>=18.0.0'} @@ -2092,6 +2177,10 @@ packages: resolution: {integrity: sha512-wzWC2Nrt859ABk6UCAVY/WYEbAd7FjkdrQL6m24+tfmWYDNRByTJ9uOgU/kw9zqLCAwb//CPvrJdhqjTznWXAg==} engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.973.1': + resolution: {integrity: sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/util-arn-parser@3.804.0': resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} engines: {node: '>=18.0.0'} @@ -2108,6 +2197,10 @@ packages: resolution: {integrity: sha512-xwF9K24mZSxcxKS3UKQFeX/dPYkEps9wF1b+MGON7EvnbcucrJGyQyK1v1xFPn1aqXkBTFi+SZaMRx5E5YCVFw==} engines: {node: '>=18.0.0'} + '@aws-sdk/util-endpoints@3.990.0': + resolution: {integrity: sha512-kVwtDc9LNI3tQZHEMNbkLIOpeDK8sRSTuT8eMnzGY+O+JImPisfSTjdh+jw9OTznu+MYZjQsv0258sazVKunYg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/util-format-url@3.957.0': resolution: {integrity: sha512-Yyo/tlc0iGFGTPPkuxub1uRAv6XrnVnvSNjslZh5jIYA8GZoeEFPgJa3Qdu0GUS/YwoK8GOLnnaL9h/eH5LDJQ==} engines: {node: '>=18.0.0'} @@ -2119,6 +2212,9 @@ packages: '@aws-sdk/util-user-agent-browser@3.957.0': resolution: {integrity: sha512-exueuwxef0lUJRnGaVkNSC674eAiWU07ORhxBnevFFZEKisln+09Qrtw823iyv5I1N8T+wKfh95xvtWQrNKNQw==} + '@aws-sdk/util-user-agent-browser@3.972.3': + resolution: {integrity: sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==} + '@aws-sdk/util-user-agent-node@3.810.0': resolution: {integrity: sha512-T56/ANEGNuvhqVoWZdr+0ZY2hjV93cH2OfGHIlVTVSAMACWG54XehDPESEso1CJNhJGYZPsE+FE42HGCk/XDMg==} engines: {node: '>=18.0.0'} @@ -2137,6 +2233,15 @@ packages: aws-crt: optional: true + '@aws-sdk/util-user-agent-node@3.972.8': + resolution: {integrity: sha512-XJZuT0LWsFCW1C8dEpPAXSa7h6Pb3krr2y//1X0Zidpcl0vmgY5nL/X0JuBZlntpBzaN3+U4hvKjuijyiiR8zw==} + engines: {node: '>=20.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + '@aws-sdk/util-utf8-browser@3.259.0': resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} @@ -2144,6 +2249,10 @@ packages: resolution: {integrity: sha512-Ai5iiQqS8kJ5PjzMhWcLKN0G2yasAkvpnPlq2EnqlIMdB48HsizElt62qcktdxp4neRMyGkFq4NzgmDbXnhRiA==} engines: {node: '>=18.0.0'} + '@aws-sdk/xml-builder@3.972.4': + resolution: {integrity: sha512-0zJ05ANfYqI6+rGqj8samZBFod0dPPousBjLEqg8WdxSgbMAkRgLyn81lP215Do0rFJ/17LIXwr7q0yK24mP6Q==} + engines: {node: '>=20.0.0'} + '@aws/lambda-invoke-store@0.2.2': resolution: {integrity: sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==} engines: {node: '>=18.0.0'} @@ -4218,14 +4327,14 @@ packages: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} - '@smithy/abort-controller@4.0.2': - resolution: {integrity: sha512-Sl/78VDtgqKxN2+1qduaVE140XF+Xg+TafkncspwM4jFP/LHr76ZHmIY/y3V1M0mMLNk+Je6IGbzxy23RSToMw==} - engines: {node: '>=18.0.0'} - '@smithy/abort-controller@4.2.7': resolution: {integrity: sha512-rzMY6CaKx2qxrbYbqjXWS0plqEy7LOdKHS0bg4ixJ6aoGDPNUcLWk/FRNuCILh7GKLG9TFUXYYeQQldMBBwuyw==} engines: {node: '>=18.0.0'} + '@smithy/abort-controller@4.2.8': + resolution: {integrity: sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==} + engines: {node: '>=18.0.0'} + '@smithy/chunked-blob-reader-native@4.2.1': resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} engines: {node: '>=18.0.0'} @@ -4238,18 +4347,26 @@ packages: resolution: {integrity: sha512-HAGoUAFYsUkoSckuKbCPayECeMim8pOu+yLy1zOxt1sifzEbrsRpYa+mKcMdiHKMeiqOibyPG0sFJnmaV/OGEg==} engines: {node: '>=18.0.0'} + '@smithy/config-resolver@4.4.6': + resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} + engines: {node: '>=18.0.0'} + '@smithy/core@3.20.0': resolution: {integrity: sha512-WsSHCPq/neD5G/MkK4csLI5Y5Pkd9c1NMfpYEKeghSGaD4Ja1qLIohRQf2D5c1Uy5aXp76DeKHkzWZ9KAlHroQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.3.3': - resolution: {integrity: sha512-CiJNc0b/WdnttAfQ6uMkxPQ3Z8hG/ba8wF89x9KtBBLDdZk6CX52K4F8hbe94uNbc8LDUuZFtbqfdhM3T21naw==} + '@smithy/core@3.23.0': + resolution: {integrity: sha512-Yq4UPVoQICM9zHnByLmG8632t2M0+yap4T7ANVw482J0W7HW0pOuxwVmeOwzJqX2Q89fkXz0Vybz55Wj2Xzrsg==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.2.7': resolution: {integrity: sha512-CmduWdCiILCRNbQWFR0OcZlUPVtyE49Sr8yYL0rZQ4D/wKxiNzBNS/YHemvnbkIWj623fplgkexUd/c9CAKdoA==} engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.2.8': + resolution: {integrity: sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-codec@4.2.7': resolution: {integrity: sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ==} engines: {node: '>=18.0.0'} @@ -4270,14 +4387,14 @@ packages: resolution: {integrity: sha512-QVD+g3+icFkThoy4r8wVFZMsIP08taHVKjE6Jpmz8h5CgX/kk6pTODq5cht0OMtcapUx+xrPzUTQdA+TmO0m1g==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.0.2': - resolution: {integrity: sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==} - engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.3.8': resolution: {integrity: sha512-h/Fi+o7mti4n8wx1SR6UHWLaakwHRx29sizvp8OOm7iqwKGFneT06GCSFhml6Bha5BT6ot5pj3CYZnCHhGC2Rg==} engines: {node: '>=18.0.0'} + '@smithy/fetch-http-handler@5.3.9': + resolution: {integrity: sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==} + engines: {node: '>=18.0.0'} + '@smithy/hash-blob-browser@4.2.8': resolution: {integrity: sha512-07InZontqsM1ggTCPSRgI7d8DirqRrnpL7nIACT4PW0AWrgDiHhjGZzbAE5UtRSiU0NISGUYe7/rri9ZeWyDpw==} engines: {node: '>=18.0.0'} @@ -4286,6 +4403,10 @@ packages: resolution: {integrity: sha512-PU/JWLTBCV1c8FtB8tEFnY4eV1tSfBc7bDBADHfn1K+uRbPgSJ9jnJp0hyjiFN2PMdPzxsf1Fdu0eo9fJ760Xw==} engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.2.8': + resolution: {integrity: sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==} + engines: {node: '>=18.0.0'} + '@smithy/hash-stream-node@4.2.7': resolution: {integrity: sha512-ZQVoAwNYnFMIbd4DUc517HuwNelJUY6YOzwqrbcAgCnVn+79/OK7UjwA93SPpdTOpKDVkLIzavWm/Ck7SmnDPQ==} engines: {node: '>=18.0.0'} @@ -4294,6 +4415,10 @@ packages: resolution: {integrity: sha512-ncvgCr9a15nPlkhIUx3CU4d7E7WEuVJOV7fS7nnK2hLtPK9tYRBkMHQbhXU1VvvKeBm/O0x26OEoBq+ngFpOEQ==} engines: {node: '>=18.0.0'} + '@smithy/invalid-dependency@4.2.8': + resolution: {integrity: sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==} + engines: {node: '>=18.0.0'} + '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} @@ -4310,102 +4435,142 @@ packages: resolution: {integrity: sha512-GszfBfCcvt7kIbJ41LuNa5f0wvQCHhnGx/aDaZJCCT05Ld6x6U2s0xsc/0mBFONBZjQJp2U/0uSJ178OXOwbhg==} engines: {node: '>=18.0.0'} + '@smithy/middleware-content-length@4.2.8': + resolution: {integrity: sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-endpoint@4.4.1': resolution: {integrity: sha512-gpLspUAoe6f1M6H0u4cVuFzxZBrsGZmjx2O9SigurTx4PbntYa4AJ+o0G0oGm1L2oSX6oBhcGHwrfJHup2JnJg==} engines: {node: '>=18.0.0'} + '@smithy/middleware-endpoint@4.4.14': + resolution: {integrity: sha512-FUFNE5KVeaY6U/GL0nzAAHkaCHzXLZcY1EhtQnsAqhD8Du13oPKtMB9/0WK4/LK6a/T5OZ24wPoSShff5iI6Ag==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-retry@4.4.17': resolution: {integrity: sha512-MqbXK6Y9uq17h+4r0ogu/sBT6V/rdV+5NvYL7ZV444BKfQygYe8wAhDrVXagVebN6w2RE0Fm245l69mOsPGZzg==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.0.5': - resolution: {integrity: sha512-yREC3q/HXqQigq29xX3hiy6tFi+kjPKXoYUQmwQdgPORLbQ0n6V2Z/Iw9Nnlu66da9fM/WhDtGvYvqwecrCljQ==} + '@smithy/middleware-retry@4.4.31': + resolution: {integrity: sha512-RXBzLpMkIrxBPe4C8OmEOHvS8aH9RUuCOH++Acb5jZDEblxDjyg6un72X9IcbrGTJoiUwmI7hLypNfuDACypbg==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.2.8': resolution: {integrity: sha512-8rDGYen5m5+NV9eHv9ry0sqm2gI6W7mc1VSFMtn6Igo25S507/HaOX9LTHAS2/J32VXD0xSzrY0H5FJtOMS4/w==} engines: {node: '>=18.0.0'} + '@smithy/middleware-serde@4.2.9': + resolution: {integrity: sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-stack@4.2.7': resolution: {integrity: sha512-bsOT0rJ+HHlZd9crHoS37mt8qRRN/h9jRve1SXUhVbkRzu0QaNYZp1i1jha4n098tsvROjcwfLlfvcFuJSXEsw==} engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.1.1': - resolution: {integrity: sha512-1slS5jf5icHETwl5hxEVBj+mh6B+LbVW4yRINsGtUKH+nxM5Pw2H59+qf+JqYFCHp9jssG4vX81f5WKnjMN3Vw==} + '@smithy/middleware-stack@4.2.8': + resolution: {integrity: sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==} engines: {node: '>=18.0.0'} '@smithy/node-config-provider@4.3.7': resolution: {integrity: sha512-7r58wq8sdOcrwWe+klL9y3bc4GW1gnlfnFOuL7CXa7UzfhzhxKuzNdtqgzmTV+53lEp9NXh5hY/S4UgjLOzPfw==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.0.4': - resolution: {integrity: sha512-/mdqabuAT3o/ihBGjL94PUbTSPSRJ0eeVTdgADzow0wRJ0rN4A27EOrtlK56MYiO1fDvlO3jVTCxQtQmK9dZ1g==} + '@smithy/node-config-provider@4.3.8': + resolution: {integrity: sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.4.10': + resolution: {integrity: sha512-u4YeUwOWRZaHbWaebvrs3UhwQwj+2VNmcVCwXcYTvPIuVyM7Ex1ftAj+fdbG/P4AkBwLq/+SKn+ydOI4ZJE9PA==} engines: {node: '>=18.0.0'} '@smithy/node-http-handler@4.4.7': resolution: {integrity: sha512-NELpdmBOO6EpZtWgQiHjoShs1kmweaiNuETUpuup+cmm/xJYjT4eUjfhrXRP4jCOaAsS3c3yPsP3B+K+/fyPCQ==} engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.0.2': - resolution: {integrity: sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==} - engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.2.7': resolution: {integrity: sha512-jmNYKe9MGGPoSl/D7JDDs1C8b3dC8f/w78LbaVfoTtWy4xAd5dfjaFG9c9PWPihY4ggMQNQSMtzU77CNgAJwmA==} engines: {node: '>=18.0.0'} + '@smithy/property-provider@4.2.8': + resolution: {integrity: sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==} + engines: {node: '>=18.0.0'} + '@smithy/protocol-http@5.3.7': resolution: {integrity: sha512-1r07pb994I20dD/c2seaZhoCuNYm0rWrvBxhCQ70brNh11M5Ml2ew6qJVo0lclB3jMIXirD4s2XRXRe7QEi0xA==} engines: {node: '>=18.0.0'} + '@smithy/protocol-http@5.3.8': + resolution: {integrity: sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==} + engines: {node: '>=18.0.0'} + '@smithy/querystring-builder@4.2.7': resolution: {integrity: sha512-eKONSywHZxK4tBxe2lXEysh8wbBdvDWiA+RIuaxZSgCMmA0zMgoDpGLJhnyj+c0leOQprVnXOmcB4m+W9Rw7sg==} engines: {node: '>=18.0.0'} + '@smithy/querystring-builder@4.2.8': + resolution: {integrity: sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==} + engines: {node: '>=18.0.0'} + '@smithy/querystring-parser@4.2.7': resolution: {integrity: sha512-3X5ZvzUHmlSTHAXFlswrS6EGt8fMSIxX/c3Rm1Pni3+wYWB6cjGocmRIoqcQF9nU5OgGmL0u7l9m44tSUpfj9w==} engines: {node: '>=18.0.0'} + '@smithy/querystring-parser@4.2.8': + resolution: {integrity: sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==} + engines: {node: '>=18.0.0'} + '@smithy/service-error-classification@4.2.7': resolution: {integrity: sha512-YB7oCbukqEb2Dlh3340/8g8vNGbs/QsNNRms+gv3N2AtZz9/1vSBx6/6tpwQpZMEJFs7Uq8h4mmOn48ZZ72MkA==} engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.0.2': - resolution: {integrity: sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==} + '@smithy/service-error-classification@4.2.8': + resolution: {integrity: sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==} engines: {node: '>=18.0.0'} '@smithy/shared-ini-file-loader@4.4.2': resolution: {integrity: sha512-M7iUUff/KwfNunmrgtqBfvZSzh3bmFgv/j/t1Y1dQ+8dNo34br1cqVEqy6v0mYEgi0DkGO7Xig0AnuOaEGVlcg==} engines: {node: '>=18.0.0'} + '@smithy/shared-ini-file-loader@4.4.3': + resolution: {integrity: sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==} + engines: {node: '>=18.0.0'} + '@smithy/signature-v4@5.3.7': resolution: {integrity: sha512-9oNUlqBlFZFOSdxgImA6X5GFuzE7V2H7VG/7E70cdLhidFbdtvxxt81EHgykGK5vq5D3FafH//X+Oy31j3CKOg==} engines: {node: '>=18.0.0'} + '@smithy/signature-v4@5.3.8': + resolution: {integrity: sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==} + engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.10.2': resolution: {integrity: sha512-D5z79xQWpgrGpAHb054Fn2CCTQZpog7JELbVQ6XAvXs5MNKWf28U9gzSBlJkOyMl9LA1TZEjRtwvGXfP0Sl90g==} engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.11.3': + resolution: {integrity: sha512-Q7kY5sDau8OoE6Y9zJoRGgje8P4/UY0WzH8R2ok0PDh+iJ+ZnEKowhjEqYafVcubkbYxQVaqwm3iufktzhprGg==} + engines: {node: '>=18.0.0'} + '@smithy/types@4.11.0': resolution: {integrity: sha512-mlrmL0DRDVe3mNrjTcVcZEgkFmufITfUAPBEA+AHYiIeYyJebso/He1qLbP3PssRe22KUzLRpQSdBPbXdgZ2VA==} engines: {node: '>=18.0.0'} + '@smithy/types@4.12.0': + resolution: {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} + engines: {node: '>=18.0.0'} + '@smithy/url-parser@4.2.7': resolution: {integrity: sha512-/RLtVsRV4uY3qPWhBDsjwahAtt3x2IsMGnP5W1b2VZIe+qgCqkLxI1UOHDZp1Q1QSOrdOR32MF3Ph2JfWT1VHg==} engines: {node: '>=18.0.0'} - '@smithy/util-base64@4.0.0': - resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + '@smithy/url-parser@4.2.8': + resolution: {integrity: sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==} engines: {node: '>=18.0.0'} '@smithy/util-base64@4.3.0': resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} engines: {node: '>=18.0.0'} - '@smithy/util-body-length-browser@4.0.0': - resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} - engines: {node: '>=18.0.0'} - '@smithy/util-body-length-browser@4.2.0': resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} engines: {node: '>=18.0.0'} @@ -4418,18 +4583,10 @@ packages: resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} - '@smithy/util-buffer-from@4.0.0': - resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} - engines: {node: '>=18.0.0'} - '@smithy/util-buffer-from@4.2.0': resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} engines: {node: '>=18.0.0'} - '@smithy/util-config-provider@4.0.0': - resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} - engines: {node: '>=18.0.0'} - '@smithy/util-config-provider@4.2.0': resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} engines: {node: '>=18.0.0'} @@ -4438,40 +4595,48 @@ packages: resolution: {integrity: sha512-/eiSP3mzY3TsvUOYMeL4EqUX6fgUOj2eUOU4rMMgVbq67TiRLyxT7Xsjxq0bW3OwuzK009qOwF0L2OgJqperAQ==} engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-browser@4.3.30': + resolution: {integrity: sha512-cMni0uVU27zxOiU8TuC8pQLC1pYeZ/xEMxvchSK/ILwleRd1ugobOcIRr5vXtcRqKd4aBLWlpeBoDPJJ91LQng==} + engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-node@4.2.19': resolution: {integrity: sha512-3a4+4mhf6VycEJyHIQLypRbiwG6aJvbQAeRAVXydMmfweEPnLLabRbdyo/Pjw8Rew9vjsh5WCdhmDaHkQnhhhA==} engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.0.4': - resolution: {integrity: sha512-VfFATC1bmZLV2858B/O1NpMcL32wYo8DPPhHxYxDCodDl3f3mSZ5oJheW1IF91A0EeAADz2WsakM/hGGPGNKLg==} + '@smithy/util-defaults-mode-node@4.2.33': + resolution: {integrity: sha512-LEb2aq5F4oZUSzWBG7S53d4UytZSkOEJPXcBq/xbG2/TmK9EW5naUZ8lKu1BEyWMzdHIzEVN16M3k8oxDq+DJA==} engines: {node: '>=18.0.0'} '@smithy/util-endpoints@3.2.7': resolution: {integrity: sha512-s4ILhyAvVqhMDYREeTS68R43B1V5aenV5q/V1QpRQJkCXib5BPRo4s7uNdzGtIKxaPHCfU/8YkvPAEvTpxgspg==} engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@4.0.0': - resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + '@smithy/util-endpoints@3.2.8': + resolution: {integrity: sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==} engines: {node: '>=18.0.0'} '@smithy/util-hex-encoding@4.2.0': resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.0.2': - resolution: {integrity: sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==} - engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.2.7': resolution: {integrity: sha512-i1IkpbOae6NvIKsEeLLM9/2q4X+M90KV3oCFgWQI4q0Qz+yUZvsr+gZPdAEAtFhWQhAHpTsJO8DRJPuwVyln+w==} engines: {node: '>=18.0.0'} + '@smithy/util-middleware@4.2.8': + resolution: {integrity: sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==} + engines: {node: '>=18.0.0'} + '@smithy/util-retry@4.2.7': resolution: {integrity: sha512-SvDdsQyF5CIASa4EYVT02LukPHVzAgUA4kMAuZ97QJc2BpAqZfA4PINB8/KOoCXEw9tsuv/jQjMeaHFvxdLNGg==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.2.0': - resolution: {integrity: sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==} + '@smithy/util-retry@4.2.8': + resolution: {integrity: sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.5.12': + resolution: {integrity: sha512-D8tgkrmhAX/UNeCZbqbEO3uqyghUnEmmoO9YEvRuwxjlkKKUE7FOgCJnqpTlQPe9MApdWPky58mNQQHbnCzoNg==} engines: {node: '>=18.0.0'} '@smithy/util-stream@4.5.8': @@ -4486,10 +4651,6 @@ packages: resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} - '@smithy/util-utf8@4.0.0': - resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} - engines: {node: '>=18.0.0'} - '@smithy/util-utf8@4.2.0': resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} engines: {node: '>=18.0.0'} @@ -7333,6 +7494,10 @@ packages: resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} hasBin: true + fast-xml-parser@5.3.4: + resolution: {integrity: sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==} + hasBin: true + fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -7640,25 +7805,27 @@ packages: glob@10.4.5: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@11.0.2: resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@7.1.2: resolution: {integrity: sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global-directory@4.0.1: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} @@ -12880,6 +13047,12 @@ snapshots: transitivePeerDependencies: - supports-color + '@alicloud/http-core-sdk@1.0.0': + dependencies: + httpx: 2.3.3 + transitivePeerDependencies: + - supports-color + '@alicloud/openapi-client@0.4.15': dependencies: '@alicloud/credentials': 2.4.4 @@ -12919,6 +13092,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@alicloud/sts-sdk@1.0.2': + dependencies: + '@alicloud/http-core-sdk': 1.0.0 + uuid: 3.4.0 + transitivePeerDependencies: + - supports-color + '@alicloud/tea-typescript@1.8.0': dependencies: '@types/node': 12.20.55 @@ -13004,7 +13184,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.957.0 + '@aws-sdk/types': 3.973.1 '@aws-sdk/util-locate-window': 3.804.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -13012,7 +13192,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.957.0 + '@aws-sdk/types': 3.973.1 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -13310,17 +13490,104 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso@3.990.0(aws-crt@1.26.2)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.10 + '@aws-sdk/middleware-host-header': 3.972.3 + '@aws-sdk/middleware-logger': 3.972.3 + '@aws-sdk/middleware-recursion-detection': 3.972.3 + '@aws-sdk/middleware-user-agent': 3.972.10 + '@aws-sdk/region-config-resolver': 3.972.3 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-endpoints': 3.990.0 + '@aws-sdk/util-user-agent-browser': 3.972.3 + '@aws-sdk/util-user-agent-node': 3.972.8(aws-crt@1.26.2) + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.23.0 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.14 + '@smithy/middleware-retry': 4.4.31 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.10 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.11.3 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.30 + '@smithy/util-defaults-mode-node': 4.2.33 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sts@3.990.0(aws-crt@1.26.2)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.10 + '@aws-sdk/credential-provider-node': 3.972.9(aws-crt@1.26.2) + '@aws-sdk/middleware-host-header': 3.972.3 + '@aws-sdk/middleware-logger': 3.972.3 + '@aws-sdk/middleware-recursion-detection': 3.972.3 + '@aws-sdk/middleware-user-agent': 3.972.10 + '@aws-sdk/region-config-resolver': 3.972.3 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-endpoints': 3.990.0 + '@aws-sdk/util-user-agent-browser': 3.972.3 + '@aws-sdk/util-user-agent-node': 3.972.8(aws-crt@1.26.2) + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.23.0 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.14 + '@smithy/middleware-retry': 4.4.31 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.10 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.11.3 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.30 + '@smithy/util-defaults-mode-node': 4.2.33 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/core@3.810.0': dependencies: '@aws-sdk/types': 3.804.0 - '@smithy/core': 3.3.3 - '@smithy/node-config-provider': 4.1.1 - '@smithy/property-provider': 4.0.2 + '@smithy/core': 3.20.0 + '@smithy/node-config-provider': 4.3.7 + '@smithy/property-provider': 4.2.7 '@smithy/protocol-http': 5.3.7 '@smithy/signature-v4': 5.3.7 '@smithy/smithy-client': 4.10.2 '@smithy/types': 4.11.0 - '@smithy/util-middleware': 4.0.2 + '@smithy/util-middleware': 4.2.7 fast-xml-parser: 4.4.1 tslib: 2.8.1 @@ -13340,6 +13607,22 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@aws-sdk/core@3.973.10': + dependencies: + '@aws-sdk/types': 3.973.1 + '@aws-sdk/xml-builder': 3.972.4 + '@smithy/core': 3.23.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/signature-v4': 5.3.8 + '@smithy/smithy-client': 4.11.3 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@aws-sdk/crc64-nvme@3.957.0': dependencies: '@smithy/types': 4.11.0 @@ -13353,6 +13636,14 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.972.8': + dependencies: + '@aws-sdk/core': 3.973.10 + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.964.0': dependencies: '@aws-sdk/core': 3.964.0 @@ -13366,6 +13657,19 @@ snapshots: '@smithy/util-stream': 4.5.8 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.972.10': + dependencies: + '@aws-sdk/core': 3.973.10 + '@aws-sdk/types': 3.973.1 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/node-http-handler': 4.4.10 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.11.3 + '@smithy/types': 4.12.0 + '@smithy/util-stream': 4.5.12 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.964.0(aws-crt@1.26.2)': dependencies: '@aws-sdk/core': 3.964.0 @@ -13385,6 +13689,25 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-ini@3.972.8(aws-crt@1.26.2)': + dependencies: + '@aws-sdk/core': 3.973.10 + '@aws-sdk/credential-provider-env': 3.972.8 + '@aws-sdk/credential-provider-http': 3.972.10 + '@aws-sdk/credential-provider-login': 3.972.8(aws-crt@1.26.2) + '@aws-sdk/credential-provider-process': 3.972.8 + '@aws-sdk/credential-provider-sso': 3.972.8(aws-crt@1.26.2) + '@aws-sdk/credential-provider-web-identity': 3.972.8(aws-crt@1.26.2) + '@aws-sdk/nested-clients': 3.990.0(aws-crt@1.26.2) + '@aws-sdk/types': 3.973.1 + '@smithy/credential-provider-imds': 4.2.8 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-login@3.964.0(aws-crt@1.26.2)': dependencies: '@aws-sdk/core': 3.964.0 @@ -13398,6 +13721,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-login@3.972.8(aws-crt@1.26.2)': + dependencies: + '@aws-sdk/core': 3.973.10 + '@aws-sdk/nested-clients': 3.990.0(aws-crt@1.26.2) + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-node@3.964.0(aws-crt@1.26.2)': dependencies: '@aws-sdk/credential-provider-env': 3.964.0 @@ -13415,6 +13751,23 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.972.9(aws-crt@1.26.2)': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.8 + '@aws-sdk/credential-provider-http': 3.972.10 + '@aws-sdk/credential-provider-ini': 3.972.8(aws-crt@1.26.2) + '@aws-sdk/credential-provider-process': 3.972.8 + '@aws-sdk/credential-provider-sso': 3.972.8(aws-crt@1.26.2) + '@aws-sdk/credential-provider-web-identity': 3.972.8(aws-crt@1.26.2) + '@aws-sdk/types': 3.973.1 + '@smithy/credential-provider-imds': 4.2.8 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-process@3.964.0': dependencies: '@aws-sdk/core': 3.964.0 @@ -13424,6 +13777,15 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.972.8': + dependencies: + '@aws-sdk/core': 3.973.10 + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.964.0(aws-crt@1.26.2)': dependencies: '@aws-sdk/client-sso': 3.964.0(aws-crt@1.26.2) @@ -13437,6 +13799,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-sso@3.972.8(aws-crt@1.26.2)': + dependencies: + '@aws-sdk/client-sso': 3.990.0(aws-crt@1.26.2) + '@aws-sdk/core': 3.973.10 + '@aws-sdk/token-providers': 3.990.0(aws-crt@1.26.2) + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-web-identity@3.964.0(aws-crt@1.26.2)': dependencies: '@aws-sdk/core': 3.964.0 @@ -13449,6 +13824,18 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-web-identity@3.972.8(aws-crt@1.26.2)': + dependencies: + '@aws-sdk/core': 3.973.10 + '@aws-sdk/nested-clients': 3.990.0(aws-crt@1.26.2) + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/crt-loader@3.810.0': dependencies: '@aws-sdk/util-user-agent-node': 3.810.0(aws-crt@1.26.2) @@ -13501,6 +13888,13 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@aws-sdk/middleware-host-header@3.972.3': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/middleware-location-constraint@3.957.0': dependencies: '@aws-sdk/types': 3.957.0 @@ -13513,6 +13907,12 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@aws-sdk/middleware-logger@3.972.3': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.957.0': dependencies: '@aws-sdk/types': 3.957.0 @@ -13521,6 +13921,14 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.972.3': + dependencies: + '@aws-sdk/types': 3.973.1 + '@aws/lambda-invoke-store': 0.2.2 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/middleware-sdk-route53@3.957.0': dependencies: '@aws-sdk/types': 3.957.0 @@ -13532,16 +13940,16 @@ snapshots: '@aws-sdk/core': 3.810.0 '@aws-sdk/types': 3.804.0 '@aws-sdk/util-arn-parser': 3.804.0 - '@smithy/core': 3.3.3 - '@smithy/node-config-provider': 4.1.1 + '@smithy/core': 3.20.0 + '@smithy/node-config-provider': 4.3.7 '@smithy/protocol-http': 5.3.7 '@smithy/signature-v4': 5.3.7 '@smithy/smithy-client': 4.10.2 '@smithy/types': 4.11.0 - '@smithy/util-config-provider': 4.0.0 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-stream': 4.2.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.7 + '@smithy/util-stream': 4.5.8 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 '@aws-sdk/middleware-sdk-s3@3.964.0': @@ -13572,7 +13980,7 @@ snapshots: '@aws-sdk/core': 3.810.0 '@aws-sdk/types': 3.804.0 '@aws-sdk/util-endpoints': 3.808.0 - '@smithy/core': 3.3.3 + '@smithy/core': 3.20.0 '@smithy/protocol-http': 5.3.7 '@smithy/types': 4.11.0 tslib: 2.8.1 @@ -13587,6 +13995,16 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.972.10': + dependencies: + '@aws-sdk/core': 3.973.10 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-endpoints': 3.990.0 + '@smithy/core': 3.23.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/nested-clients@3.964.0(aws-crt@1.26.2)': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -13630,6 +14048,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/nested-clients@3.990.0(aws-crt@1.26.2)': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.973.10 + '@aws-sdk/middleware-host-header': 3.972.3 + '@aws-sdk/middleware-logger': 3.972.3 + '@aws-sdk/middleware-recursion-detection': 3.972.3 + '@aws-sdk/middleware-user-agent': 3.972.10 + '@aws-sdk/region-config-resolver': 3.972.3 + '@aws-sdk/types': 3.973.1 + '@aws-sdk/util-endpoints': 3.990.0 + '@aws-sdk/util-user-agent-browser': 3.972.3 + '@aws-sdk/util-user-agent-node': 3.972.8(aws-crt@1.26.2) + '@smithy/config-resolver': 4.4.6 + '@smithy/core': 3.23.0 + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/hash-node': 4.2.8 + '@smithy/invalid-dependency': 4.2.8 + '@smithy/middleware-content-length': 4.2.8 + '@smithy/middleware-endpoint': 4.4.14 + '@smithy/middleware-retry': 4.4.31 + '@smithy/middleware-serde': 4.2.9 + '@smithy/middleware-stack': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/node-http-handler': 4.4.10 + '@smithy/protocol-http': 5.3.8 + '@smithy/smithy-client': 4.11.3 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.30 + '@smithy/util-defaults-mode-node': 4.2.33 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/region-config-resolver@3.957.0': dependencies: '@aws-sdk/types': 3.957.0 @@ -13638,6 +14099,14 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@aws-sdk/region-config-resolver@3.972.3': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/config-resolver': 4.4.6 + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/s3-request-presigner@3.964.0': dependencies: '@aws-sdk/signature-v4-multi-region': 3.964.0 @@ -13695,6 +14164,18 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/token-providers@3.990.0(aws-crt@1.26.2)': + dependencies: + '@aws-sdk/core': 3.973.10 + '@aws-sdk/nested-clients': 3.990.0(aws-crt@1.26.2) + '@aws-sdk/types': 3.973.1 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/types@3.804.0': dependencies: '@smithy/types': 4.11.0 @@ -13705,6 +14186,11 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@aws-sdk/types@3.973.1': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@aws-sdk/util-arn-parser@3.804.0': dependencies: tslib: 2.8.1 @@ -13717,7 +14203,7 @@ snapshots: dependencies: '@aws-sdk/types': 3.804.0 '@smithy/types': 4.11.0 - '@smithy/util-endpoints': 3.0.4 + '@smithy/util-endpoints': 3.2.7 tslib: 2.8.1 '@aws-sdk/util-endpoints@3.957.0': @@ -13728,6 +14214,14 @@ snapshots: '@smithy/util-endpoints': 3.2.7 tslib: 2.8.1 + '@aws-sdk/util-endpoints@3.990.0': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-endpoints': 3.2.8 + tslib: 2.8.1 + '@aws-sdk/util-format-url@3.957.0': dependencies: '@aws-sdk/types': 3.957.0 @@ -13746,11 +14240,18 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 + '@aws-sdk/util-user-agent-browser@3.972.3': + dependencies: + '@aws-sdk/types': 3.973.1 + '@smithy/types': 4.12.0 + bowser: 2.11.0 + tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.810.0(aws-crt@1.26.2)': dependencies: '@aws-sdk/middleware-user-agent': 3.810.0 '@aws-sdk/types': 3.804.0 - '@smithy/node-config-provider': 4.1.1 + '@smithy/node-config-provider': 4.3.7 '@smithy/types': 4.11.0 tslib: 2.8.1 optionalDependencies: @@ -13766,6 +14267,16 @@ snapshots: optionalDependencies: aws-crt: 1.26.2 + '@aws-sdk/util-user-agent-node@3.972.8(aws-crt@1.26.2)': + dependencies: + '@aws-sdk/middleware-user-agent': 3.972.10 + '@aws-sdk/types': 3.973.1 + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + optionalDependencies: + aws-crt: 1.26.2 + '@aws-sdk/util-utf8-browser@3.259.0': dependencies: tslib: 2.8.1 @@ -13776,6 +14287,12 @@ snapshots: fast-xml-parser: 5.2.5 tslib: 2.8.1 + '@aws-sdk/xml-builder@3.972.4': + dependencies: + '@smithy/types': 4.12.0 + fast-xml-parser: 5.3.4 + tslib: 2.8.1 + '@aws/lambda-invoke-store@0.2.2': {} '@babel/code-frame@7.12.11': @@ -16333,14 +16850,14 @@ snapshots: '@sindresorhus/is@0.14.0': {} - '@smithy/abort-controller@4.0.2': + '@smithy/abort-controller@4.2.7': dependencies: '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/abort-controller@4.2.7': + '@smithy/abort-controller@4.2.8': dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 '@smithy/chunked-blob-reader-native@4.2.1': @@ -16361,6 +16878,15 @@ snapshots: '@smithy/util-middleware': 4.2.7 tslib: 2.8.1 + '@smithy/config-resolver@4.4.6': + dependencies: + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-endpoints': 3.2.8 + '@smithy/util-middleware': 4.2.8 + tslib: 2.8.1 + '@smithy/core@3.20.0': dependencies: '@smithy/middleware-serde': 4.2.8 @@ -16374,15 +16900,17 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 - '@smithy/core@3.3.3': + '@smithy/core@3.23.0': dependencies: - '@smithy/middleware-serde': 4.0.5 - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 - '@smithy/util-body-length-browser': 4.0.0 - '@smithy/util-middleware': 4.0.2 - '@smithy/util-stream': 4.2.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/middleware-serde': 4.2.9 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-stream': 4.5.12 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 tslib: 2.8.1 '@smithy/credential-provider-imds@4.2.7': @@ -16393,6 +16921,14 @@ snapshots: '@smithy/url-parser': 4.2.7 tslib: 2.8.1 + '@smithy/credential-provider-imds@4.2.8': + dependencies: + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + tslib: 2.8.1 + '@smithy/eventstream-codec@4.2.7': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -16423,14 +16959,6 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.0.2': - dependencies: - '@smithy/protocol-http': 5.3.7 - '@smithy/querystring-builder': 4.2.7 - '@smithy/types': 4.11.0 - '@smithy/util-base64': 4.0.0 - tslib: 2.8.1 - '@smithy/fetch-http-handler@5.3.8': dependencies: '@smithy/protocol-http': 5.3.7 @@ -16439,6 +16967,14 @@ snapshots: '@smithy/util-base64': 4.3.0 tslib: 2.8.1 + '@smithy/fetch-http-handler@5.3.9': + dependencies: + '@smithy/protocol-http': 5.3.8 + '@smithy/querystring-builder': 4.2.8 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + tslib: 2.8.1 + '@smithy/hash-blob-browser@4.2.8': dependencies: '@smithy/chunked-blob-reader': 5.2.0 @@ -16453,6 +16989,13 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/hash-node@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/hash-stream-node@4.2.7': dependencies: '@smithy/types': 4.11.0 @@ -16464,6 +17007,11 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@smithy/invalid-dependency@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 @@ -16484,6 +17032,12 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@smithy/middleware-content-length@4.2.8': + dependencies: + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/middleware-endpoint@4.4.1': dependencies: '@smithy/core': 3.20.0 @@ -16495,6 +17049,17 @@ snapshots: '@smithy/util-middleware': 4.2.7 tslib: 2.8.1 + '@smithy/middleware-endpoint@4.4.14': + dependencies: + '@smithy/core': 3.23.0 + '@smithy/middleware-serde': 4.2.9 + '@smithy/node-config-provider': 4.3.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + '@smithy/url-parser': 4.2.8 + '@smithy/util-middleware': 4.2.8 + tslib: 2.8.1 + '@smithy/middleware-retry@4.4.17': dependencies: '@smithy/node-config-provider': 4.3.7 @@ -16507,10 +17072,16 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 - '@smithy/middleware-serde@4.0.5': + '@smithy/middleware-retry@4.4.31': dependencies: - '@smithy/protocol-http': 5.3.7 - '@smithy/types': 4.11.0 + '@smithy/node-config-provider': 4.3.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/service-error-classification': 4.2.8 + '@smithy/smithy-client': 4.11.3 + '@smithy/types': 4.12.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-retry': 4.2.8 + '@smithy/uuid': 1.1.0 tslib: 2.8.1 '@smithy/middleware-serde@4.2.8': @@ -16519,16 +17090,20 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@smithy/middleware-serde@4.2.9': + dependencies: + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/middleware-stack@4.2.7': dependencies: '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/node-config-provider@4.1.1': + '@smithy/middleware-stack@4.2.8': dependencies: - '@smithy/property-provider': 4.0.2 - '@smithy/shared-ini-file-loader': 4.0.2 - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 '@smithy/node-config-provider@4.3.7': @@ -16538,12 +17113,19 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.0.4': + '@smithy/node-config-provider@4.3.8': dependencies: - '@smithy/abort-controller': 4.0.2 - '@smithy/protocol-http': 5.3.7 - '@smithy/querystring-builder': 4.2.7 - '@smithy/types': 4.11.0 + '@smithy/property-provider': 4.2.8 + '@smithy/shared-ini-file-loader': 4.4.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.4.10': + dependencies: + '@smithy/abort-controller': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/querystring-builder': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 '@smithy/node-http-handler@4.4.7': @@ -16554,46 +17136,66 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/property-provider@4.0.2': - dependencies: - '@smithy/types': 4.11.0 - tslib: 2.8.1 - '@smithy/property-provider@4.2.7': dependencies: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@smithy/property-provider@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/protocol-http@5.3.7': dependencies: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@smithy/protocol-http@5.3.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/querystring-builder@4.2.7': dependencies: '@smithy/types': 4.11.0 '@smithy/util-uri-escape': 4.2.0 tslib: 2.8.1 + '@smithy/querystring-builder@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + '@smithy/util-uri-escape': 4.2.0 + tslib: 2.8.1 + '@smithy/querystring-parser@4.2.7': dependencies: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@smithy/querystring-parser@4.2.8': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/service-error-classification@4.2.7': dependencies: '@smithy/types': 4.11.0 - '@smithy/shared-ini-file-loader@4.0.2': + '@smithy/service-error-classification@4.2.8': dependencies: - '@smithy/types': 4.11.0 - tslib: 2.8.1 + '@smithy/types': 4.12.0 '@smithy/shared-ini-file-loader@4.4.2': dependencies: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@smithy/shared-ini-file-loader@4.4.3': + dependencies: + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/signature-v4@5.3.7': dependencies: '@smithy/is-array-buffer': 4.2.0 @@ -16605,6 +17207,17 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/signature-v4@5.3.8': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-middleware': 4.2.8 + '@smithy/util-uri-escape': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/smithy-client@4.10.2': dependencies: '@smithy/core': 3.20.0 @@ -16615,20 +17228,34 @@ snapshots: '@smithy/util-stream': 4.5.8 tslib: 2.8.1 + '@smithy/smithy-client@4.11.3': + dependencies: + '@smithy/core': 3.23.0 + '@smithy/middleware-endpoint': 4.4.14 + '@smithy/middleware-stack': 4.2.8 + '@smithy/protocol-http': 5.3.8 + '@smithy/types': 4.12.0 + '@smithy/util-stream': 4.5.12 + tslib: 2.8.1 + '@smithy/types@4.11.0': dependencies: tslib: 2.8.1 + '@smithy/types@4.12.0': + dependencies: + tslib: 2.8.1 + '@smithy/url-parser@4.2.7': dependencies: '@smithy/querystring-parser': 4.2.7 '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/util-base64@4.0.0': + '@smithy/url-parser@4.2.8': dependencies: - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/querystring-parser': 4.2.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 '@smithy/util-base64@4.3.0': @@ -16637,10 +17264,6 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/util-body-length-browser@4.0.0': - dependencies: - tslib: 2.8.1 - '@smithy/util-body-length-browser@4.2.0': dependencies: tslib: 2.8.1 @@ -16654,20 +17277,11 @@ snapshots: '@smithy/is-array-buffer': 2.2.0 tslib: 2.8.1 - '@smithy/util-buffer-from@4.0.0': - dependencies: - '@smithy/is-array-buffer': 4.2.0 - tslib: 2.8.1 - '@smithy/util-buffer-from@4.2.0': dependencies: '@smithy/is-array-buffer': 4.2.0 tslib: 2.8.1 - '@smithy/util-config-provider@4.0.0': - dependencies: - tslib: 2.8.1 - '@smithy/util-config-provider@4.2.0': dependencies: tslib: 2.8.1 @@ -16679,6 +17293,13 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 + '@smithy/util-defaults-mode-browser@4.3.30': + dependencies: + '@smithy/property-provider': 4.2.8 + '@smithy/smithy-client': 4.11.3 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + '@smithy/util-defaults-mode-node@4.2.19': dependencies: '@smithy/config-resolver': 4.4.5 @@ -16689,10 +17310,14 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/util-endpoints@3.0.4': + '@smithy/util-defaults-mode-node@4.2.33': dependencies: - '@smithy/node-config-provider': 4.1.1 - '@smithy/types': 4.11.0 + '@smithy/config-resolver': 4.4.6 + '@smithy/credential-provider-imds': 4.2.8 + '@smithy/node-config-provider': 4.3.8 + '@smithy/property-provider': 4.2.8 + '@smithy/smithy-client': 4.11.3 + '@smithy/types': 4.12.0 tslib: 2.8.1 '@smithy/util-endpoints@3.2.7': @@ -16701,22 +17326,24 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/util-hex-encoding@4.0.0': + '@smithy/util-endpoints@3.2.8': dependencies: + '@smithy/node-config-provider': 4.3.8 + '@smithy/types': 4.12.0 tslib: 2.8.1 '@smithy/util-hex-encoding@4.2.0': dependencies: tslib: 2.8.1 - '@smithy/util-middleware@4.0.2': + '@smithy/util-middleware@4.2.7': dependencies: '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/util-middleware@4.2.7': + '@smithy/util-middleware@4.2.8': dependencies: - '@smithy/types': 4.11.0 + '@smithy/types': 4.12.0 tslib: 2.8.1 '@smithy/util-retry@4.2.7': @@ -16725,15 +17352,21 @@ snapshots: '@smithy/types': 4.11.0 tslib: 2.8.1 - '@smithy/util-stream@4.2.0': + '@smithy/util-retry@4.2.8': dependencies: - '@smithy/fetch-http-handler': 5.0.2 - '@smithy/node-http-handler': 4.0.4 - '@smithy/types': 4.11.0 - '@smithy/util-base64': 4.0.0 - '@smithy/util-buffer-from': 4.0.0 - '@smithy/util-hex-encoding': 4.0.0 - '@smithy/util-utf8': 4.0.0 + '@smithy/service-error-classification': 4.2.8 + '@smithy/types': 4.12.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.5.12': + dependencies: + '@smithy/fetch-http-handler': 5.3.9 + '@smithy/node-http-handler': 4.4.10 + '@smithy/types': 4.12.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 '@smithy/util-stream@4.5.8': @@ -16756,11 +17389,6 @@ snapshots: '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 - '@smithy/util-utf8@4.0.0': - dependencies: - '@smithy/util-buffer-from': 4.0.0 - tslib: 2.8.1 - '@smithy/util-utf8@4.2.0': dependencies: '@smithy/util-buffer-from': 4.2.0 @@ -19971,13 +20599,13 @@ snapshots: resolve: 1.22.10 semver: 6.3.1 - eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8): + eslint-plugin-prettier@3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8): dependencies: eslint: 7.32.0 prettier: 2.8.8 prettier-linter-helpers: 1.0.0 optionalDependencies: - eslint-config-prettier: 8.10.0(eslint@8.57.0) + eslint-config-prettier: 8.10.0(eslint@7.32.0) eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8): dependencies: @@ -20276,6 +20904,10 @@ snapshots: dependencies: strnum: 2.1.2 + fast-xml-parser@5.3.4: + dependencies: + strnum: 2.1.2 + fastest-levenshtein@1.0.16: {} fastq@1.19.1: @@ -22377,7 +23009,7 @@ snapshots: eslint: 7.32.0 eslint-config-prettier: 8.10.0(eslint@7.32.0) eslint-plugin-node: 11.1.0(eslint@7.32.0) - eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@7.32.0)(prettier@2.8.8) + eslint-plugin-prettier: 3.4.1(eslint-config-prettier@8.10.0(eslint@7.32.0))(eslint@7.32.0)(prettier@2.8.8) execa: 5.1.1 inquirer: 7.3.3 json5: 2.2.3