perf(backend): use mutex for nsfw model loading (#97)

Co-authored-by: popkirby <popkirby@gmail.com>
This commit is contained in:
riku6460 2023-07-06 03:37:35 +09:00 committed by GitHub
parent 3e93450fd4
commit f7ad3e847a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 99 additions and 78 deletions

View file

@ -75,6 +75,7 @@
"accepts": "1.3.8", "accepts": "1.3.8",
"ajv": "8.12.0", "ajv": "8.12.0",
"archiver": "5.3.1", "archiver": "5.3.1",
"async-mutex": "^0.4.0",
"autwh": "0.1.0", "autwh": "0.1.0",
"bcryptjs": "2.4.3", "bcryptjs": "2.4.3",
"blurhash": "2.0.5", "blurhash": "2.0.5",

View file

@ -4,6 +4,7 @@ import { dirname } from 'node:path';
import { Inject, Injectable } from '@nestjs/common'; import { Inject, Injectable } from '@nestjs/common';
import * as nsfw from 'nsfwjs'; import * as nsfw from 'nsfwjs';
import si from 'systeminformation'; import si from 'systeminformation';
import { Mutex } from 'async-mutex';
import type { Config } from '@/config.js'; import type { Config } from '@/config.js';
import { DI } from '@/di-symbols.js'; import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js'; import { bindThis } from '@/decorators.js';
@ -17,6 +18,7 @@ let isSupportedCpu: undefined | boolean = undefined;
@Injectable() @Injectable()
export class AiService { export class AiService {
private model: nsfw.NSFWJS; private model: nsfw.NSFWJS;
private modelLoadMutex: Mutex = new Mutex();
constructor( constructor(
@Inject(DI.config) @Inject(DI.config)
@ -31,16 +33,22 @@ export class AiService {
const cpuFlags = await this.getCpuFlags(); const cpuFlags = await this.getCpuFlags();
isSupportedCpu = REQUIRED_CPU_FLAGS.every(required => cpuFlags.includes(required)); isSupportedCpu = REQUIRED_CPU_FLAGS.every(required => cpuFlags.includes(required));
} }
if (!isSupportedCpu) { if (!isSupportedCpu) {
console.error('This CPU cannot use TensorFlow.'); console.error('This CPU cannot use TensorFlow.');
return null; return null;
} }
const tf = await import('@tensorflow/tfjs-node'); const tf = await import('@tensorflow/tfjs-node');
if (this.model == null) this.model = await nsfw.load(`file://${_dirname}/../../nsfw-model/`, { size: 299 }); if (this.model == null) {
await this.modelLoadMutex.runExclusive(async () => {
if (this.model == null) {
this.model = await nsfw.load(`file://${_dirname}/../../nsfw-model/`, { size: 299 });
}
});
}
const buffer = await fs.promises.readFile(path); const buffer = await fs.promises.readFile(path);
const image = await tf.node.decodeImage(buffer, 3) as any; const image = await tf.node.decodeImage(buffer, 3) as any;
try { try {

View file

@ -140,6 +140,9 @@ importers:
archiver: archiver:
specifier: 5.3.1 specifier: 5.3.1
version: 5.3.1 version: 5.3.1
async-mutex:
specifier: ^0.4.0
version: 0.4.0
autwh: autwh:
specifier: 0.1.0 specifier: 0.1.0
version: 0.1.0 version: 0.1.0
@ -1195,13 +1198,13 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/chunked-blob-reader@3.310.0: /@aws-sdk/chunked-blob-reader@3.310.0:
resolution: {integrity: sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg==} resolution: {integrity: sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg==}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/client-s3@3.321.1: /@aws-sdk/client-s3@3.321.1:
@ -1386,7 +1389,7 @@ packages:
'@aws-sdk/util-user-agent-node': 3.310.0 '@aws-sdk/util-user-agent-node': 3.310.0
'@aws-sdk/util-utf8': 3.310.0 '@aws-sdk/util-utf8': 3.310.0
fast-xml-parser: 4.1.2 fast-xml-parser: 4.1.2
tslib: 2.5.2 tslib: 2.5.3
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
dev: false dev: false
@ -1398,7 +1401,7 @@ packages:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-config-provider': 3.310.0 '@aws-sdk/util-config-provider': 3.310.0
'@aws-sdk/util-middleware': 3.310.0 '@aws-sdk/util-middleware': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/credential-provider-env@3.310.0: /@aws-sdk/credential-provider-env@3.310.0:
@ -1407,7 +1410,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/property-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/credential-provider-imds@3.310.0: /@aws-sdk/credential-provider-imds@3.310.0:
@ -1418,7 +1421,7 @@ packages:
'@aws-sdk/property-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/url-parser': 3.310.0 '@aws-sdk/url-parser': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/credential-provider-ini@3.321.1: /@aws-sdk/credential-provider-ini@3.321.1:
@ -1433,7 +1436,7 @@ packages:
'@aws-sdk/property-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0
'@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/shared-ini-file-loader': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
dev: false dev: false
@ -1451,7 +1454,7 @@ packages:
'@aws-sdk/property-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0
'@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/shared-ini-file-loader': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
dev: false dev: false
@ -1463,7 +1466,7 @@ packages:
'@aws-sdk/property-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0
'@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/shared-ini-file-loader': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/credential-provider-sso@3.321.1: /@aws-sdk/credential-provider-sso@3.321.1:
@ -1475,7 +1478,7 @@ packages:
'@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/shared-ini-file-loader': 3.310.0
'@aws-sdk/token-providers': 3.321.1 '@aws-sdk/token-providers': 3.321.1
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
dev: false dev: false
@ -1486,7 +1489,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/property-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/eventstream-codec@3.310.0: /@aws-sdk/eventstream-codec@3.310.0:
@ -1504,7 +1507,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/eventstream-serde-universal': 3.310.0 '@aws-sdk/eventstream-serde-universal': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/eventstream-serde-config-resolver@3.310.0: /@aws-sdk/eventstream-serde-config-resolver@3.310.0:
@ -1512,7 +1515,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/eventstream-serde-node@3.310.0: /@aws-sdk/eventstream-serde-node@3.310.0:
@ -1521,7 +1524,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/eventstream-serde-universal': 3.310.0 '@aws-sdk/eventstream-serde-universal': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/eventstream-serde-universal@3.310.0: /@aws-sdk/eventstream-serde-universal@3.310.0:
@ -1530,7 +1533,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/eventstream-codec': 3.310.0 '@aws-sdk/eventstream-codec': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/fetch-http-handler@3.310.0: /@aws-sdk/fetch-http-handler@3.310.0:
@ -1540,7 +1543,7 @@ packages:
'@aws-sdk/querystring-builder': 3.310.0 '@aws-sdk/querystring-builder': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-base64': 3.310.0 '@aws-sdk/util-base64': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/hash-blob-browser@3.310.0: /@aws-sdk/hash-blob-browser@3.310.0:
@ -1548,7 +1551,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/chunked-blob-reader': 3.310.0 '@aws-sdk/chunked-blob-reader': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/hash-node@3.310.0: /@aws-sdk/hash-node@3.310.0:
@ -1558,7 +1561,7 @@ packages:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-buffer-from': 3.310.0 '@aws-sdk/util-buffer-from': 3.310.0
'@aws-sdk/util-utf8': 3.310.0 '@aws-sdk/util-utf8': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/hash-stream-node@3.310.0: /@aws-sdk/hash-stream-node@3.310.0:
@ -1567,21 +1570,21 @@ packages:
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-utf8': 3.310.0 '@aws-sdk/util-utf8': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/invalid-dependency@3.310.0: /@aws-sdk/invalid-dependency@3.310.0:
resolution: {integrity: sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==} resolution: {integrity: sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/is-array-buffer@3.310.0: /@aws-sdk/is-array-buffer@3.310.0:
resolution: {integrity: sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==} resolution: {integrity: sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/lib-storage@3.321.1(@aws-sdk/abort-controller@3.310.0)(@aws-sdk/client-s3@3.321.1): /@aws-sdk/lib-storage@3.321.1(@aws-sdk/abort-controller@3.310.0)(@aws-sdk/client-s3@3.321.1):
@ -1606,7 +1609,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-utf8': 3.310.0 '@aws-sdk/util-utf8': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-bucket-endpoint@3.310.0: /@aws-sdk/middleware-bucket-endpoint@3.310.0:
@ -1617,7 +1620,7 @@ packages:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-arn-parser': 3.310.0 '@aws-sdk/util-arn-parser': 3.310.0
'@aws-sdk/util-config-provider': 3.310.0 '@aws-sdk/util-config-provider': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-content-length@3.310.0: /@aws-sdk/middleware-content-length@3.310.0:
@ -1626,7 +1629,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/protocol-http': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-endpoint@3.310.0: /@aws-sdk/middleware-endpoint@3.310.0:
@ -1637,7 +1640,7 @@ packages:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/url-parser': 3.310.0 '@aws-sdk/url-parser': 3.310.0
'@aws-sdk/util-middleware': 3.310.0 '@aws-sdk/util-middleware': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-expect-continue@3.310.0: /@aws-sdk/middleware-expect-continue@3.310.0:
@ -1646,7 +1649,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/protocol-http': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-flexible-checksums@3.310.0: /@aws-sdk/middleware-flexible-checksums@3.310.0:
@ -1659,7 +1662,7 @@ packages:
'@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/protocol-http': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-utf8': 3.310.0 '@aws-sdk/util-utf8': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-host-header@3.310.0: /@aws-sdk/middleware-host-header@3.310.0:
@ -1668,7 +1671,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/protocol-http': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-location-constraint@3.310.0: /@aws-sdk/middleware-location-constraint@3.310.0:
@ -1676,7 +1679,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-logger@3.310.0: /@aws-sdk/middleware-logger@3.310.0:
@ -1684,7 +1687,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-recursion-detection@3.310.0: /@aws-sdk/middleware-recursion-detection@3.310.0:
@ -1693,7 +1696,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/protocol-http': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-retry@3.310.0: /@aws-sdk/middleware-retry@3.310.0:
@ -1705,7 +1708,7 @@ packages:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-middleware': 3.310.0 '@aws-sdk/util-middleware': 3.310.0
'@aws-sdk/util-retry': 3.310.0 '@aws-sdk/util-retry': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
uuid: 8.3.2 uuid: 8.3.2
dev: false dev: false
@ -1716,7 +1719,7 @@ packages:
'@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/protocol-http': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-arn-parser': 3.310.0 '@aws-sdk/util-arn-parser': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-sdk-sts@3.310.0: /@aws-sdk/middleware-sdk-sts@3.310.0:
@ -1725,7 +1728,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/middleware-signing': 3.310.0 '@aws-sdk/middleware-signing': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-serde@3.310.0: /@aws-sdk/middleware-serde@3.310.0:
@ -1733,7 +1736,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-signing@3.310.0: /@aws-sdk/middleware-signing@3.310.0:
@ -1745,7 +1748,7 @@ packages:
'@aws-sdk/signature-v4': 3.310.0 '@aws-sdk/signature-v4': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-middleware': 3.310.0 '@aws-sdk/util-middleware': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-ssec@3.310.0: /@aws-sdk/middleware-ssec@3.310.0:
@ -1753,14 +1756,14 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-stack@3.310.0: /@aws-sdk/middleware-stack@3.310.0:
resolution: {integrity: sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==} resolution: {integrity: sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/middleware-user-agent@3.319.0: /@aws-sdk/middleware-user-agent@3.319.0:
@ -1770,7 +1773,7 @@ packages:
'@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/protocol-http': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-endpoints': 3.319.0 '@aws-sdk/util-endpoints': 3.319.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/node-config-provider@3.310.0: /@aws-sdk/node-config-provider@3.310.0:
@ -1780,7 +1783,7 @@ packages:
'@aws-sdk/property-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0
'@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/shared-ini-file-loader': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/node-http-handler@3.321.1: /@aws-sdk/node-http-handler@3.321.1:
@ -1799,7 +1802,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/protocol-http@3.310.0: /@aws-sdk/protocol-http@3.310.0:
@ -1807,7 +1810,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/querystring-builder@3.310.0: /@aws-sdk/querystring-builder@3.310.0:
@ -1816,7 +1819,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-uri-escape': 3.310.0 '@aws-sdk/util-uri-escape': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/querystring-parser@3.310.0: /@aws-sdk/querystring-parser@3.310.0:
@ -1824,7 +1827,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/service-error-classification@3.310.0: /@aws-sdk/service-error-classification@3.310.0:
@ -1837,7 +1840,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/signature-v4-multi-region@3.310.0: /@aws-sdk/signature-v4-multi-region@3.310.0:
@ -1852,7 +1855,7 @@ packages:
'@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/protocol-http': 3.310.0
'@aws-sdk/signature-v4': 3.310.0 '@aws-sdk/signature-v4': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/signature-v4@3.310.0: /@aws-sdk/signature-v4@3.310.0:
@ -1865,7 +1868,7 @@ packages:
'@aws-sdk/util-middleware': 3.310.0 '@aws-sdk/util-middleware': 3.310.0
'@aws-sdk/util-uri-escape': 3.310.0 '@aws-sdk/util-uri-escape': 3.310.0
'@aws-sdk/util-utf8': 3.310.0 '@aws-sdk/util-utf8': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/smithy-client@3.316.0: /@aws-sdk/smithy-client@3.316.0:
@ -1874,7 +1877,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/middleware-stack': 3.310.0 '@aws-sdk/middleware-stack': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/token-providers@3.321.1: /@aws-sdk/token-providers@3.321.1:
@ -1894,7 +1897,7 @@ packages:
resolution: {integrity: sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==} resolution: {integrity: sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/url-parser@3.310.0: /@aws-sdk/url-parser@3.310.0:
@ -1902,14 +1905,14 @@ packages:
dependencies: dependencies:
'@aws-sdk/querystring-parser': 3.310.0 '@aws-sdk/querystring-parser': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-arn-parser@3.310.0: /@aws-sdk/util-arn-parser@3.310.0:
resolution: {integrity: sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==} resolution: {integrity: sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-base64@3.310.0: /@aws-sdk/util-base64@3.310.0:
@ -1917,20 +1920,20 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/util-buffer-from': 3.310.0 '@aws-sdk/util-buffer-from': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-body-length-browser@3.310.0: /@aws-sdk/util-body-length-browser@3.310.0:
resolution: {integrity: sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==} resolution: {integrity: sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-body-length-node@3.310.0: /@aws-sdk/util-body-length-node@3.310.0:
resolution: {integrity: sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==} resolution: {integrity: sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-buffer-from@3.310.0: /@aws-sdk/util-buffer-from@3.310.0:
@ -1938,14 +1941,14 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/is-array-buffer': 3.310.0 '@aws-sdk/is-array-buffer': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-config-provider@3.310.0: /@aws-sdk/util-config-provider@3.310.0:
resolution: {integrity: sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==} resolution: {integrity: sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-defaults-mode-browser@3.316.0: /@aws-sdk/util-defaults-mode-browser@3.316.0:
@ -1955,7 +1958,7 @@ packages:
'@aws-sdk/property-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
bowser: 2.11.0 bowser: 2.11.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-defaults-mode-node@3.316.0: /@aws-sdk/util-defaults-mode-node@3.316.0:
@ -1967,7 +1970,7 @@ packages:
'@aws-sdk/node-config-provider': 3.310.0 '@aws-sdk/node-config-provider': 3.310.0
'@aws-sdk/property-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-endpoints@3.319.0: /@aws-sdk/util-endpoints@3.319.0:
@ -1975,28 +1978,28 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-hex-encoding@3.310.0: /@aws-sdk/util-hex-encoding@3.310.0:
resolution: {integrity: sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==} resolution: {integrity: sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-locate-window@3.208.0: /@aws-sdk/util-locate-window@3.208.0:
resolution: {integrity: sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==} resolution: {integrity: sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-middleware@3.310.0: /@aws-sdk/util-middleware@3.310.0:
resolution: {integrity: sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==} resolution: {integrity: sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-retry@3.310.0: /@aws-sdk/util-retry@3.310.0:
@ -2004,7 +2007,7 @@ packages:
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
dependencies: dependencies:
'@aws-sdk/service-error-classification': 3.310.0 '@aws-sdk/service-error-classification': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-stream-browser@3.310.0: /@aws-sdk/util-stream-browser@3.310.0:
@ -2015,7 +2018,7 @@ packages:
'@aws-sdk/util-base64': 3.310.0 '@aws-sdk/util-base64': 3.310.0
'@aws-sdk/util-hex-encoding': 3.310.0 '@aws-sdk/util-hex-encoding': 3.310.0
'@aws-sdk/util-utf8': 3.310.0 '@aws-sdk/util-utf8': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-stream-node@3.321.1: /@aws-sdk/util-stream-node@3.321.1:
@ -2025,14 +2028,14 @@ packages:
'@aws-sdk/node-http-handler': 3.321.1 '@aws-sdk/node-http-handler': 3.321.1
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
'@aws-sdk/util-buffer-from': 3.310.0 '@aws-sdk/util-buffer-from': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-uri-escape@3.310.0: /@aws-sdk/util-uri-escape@3.310.0:
resolution: {integrity: sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==} resolution: {integrity: sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-user-agent-browser@3.310.0: /@aws-sdk/util-user-agent-browser@3.310.0:
@ -2040,7 +2043,7 @@ packages:
dependencies: dependencies:
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
bowser: 2.11.0 bowser: 2.11.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-user-agent-node@3.310.0: /@aws-sdk/util-user-agent-node@3.310.0:
@ -2054,13 +2057,13 @@ packages:
dependencies: dependencies:
'@aws-sdk/node-config-provider': 3.310.0 '@aws-sdk/node-config-provider': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-utf8-browser@3.259.0: /@aws-sdk/util-utf8-browser@3.259.0:
resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-utf8@3.310.0: /@aws-sdk/util-utf8@3.310.0:
@ -2068,7 +2071,7 @@ packages:
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
'@aws-sdk/util-buffer-from': 3.310.0 '@aws-sdk/util-buffer-from': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/util-waiter@3.310.0: /@aws-sdk/util-waiter@3.310.0:
@ -2077,14 +2080,14 @@ packages:
dependencies: dependencies:
'@aws-sdk/abort-controller': 3.310.0 '@aws-sdk/abort-controller': 3.310.0
'@aws-sdk/types': 3.310.0 '@aws-sdk/types': 3.310.0
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@aws-sdk/xml-builder@3.310.0: /@aws-sdk/xml-builder@3.310.0:
resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: false dev: false
/@babel/code-frame@7.21.4: /@babel/code-frame@7.21.4:
@ -9214,7 +9217,7 @@ packages:
resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==}
engines: {node: '>=4'} engines: {node: '>=4'}
dependencies: dependencies:
tslib: 2.5.2 tslib: 2.5.3
dev: true dev: true
/ast-types@0.15.2: /ast-types@0.15.2:
@ -9253,6 +9256,12 @@ packages:
resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==}
dev: true dev: true
/async-mutex@0.4.0:
resolution: {integrity: sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==}
dependencies:
tslib: 2.5.3
dev: false
/async-settle@1.0.0: /async-settle@1.0.0:
resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==} resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==}
engines: {node: '>= 0.10'} engines: {node: '>= 0.10'}
@ -20449,6 +20458,9 @@ packages:
/tslib@2.5.2: /tslib@2.5.2:
resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==}
/tslib@2.5.3:
resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==}
/tsutils@3.21.0(typescript@5.0.4): /tsutils@3.21.0(typescript@5.0.4):
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'} engines: {node: '>= 6'}