From f7ad3e847ab4215bb26b2ca30746b2d49ce9dd18 Mon Sep 17 00:00:00 2001 From: riku6460 <17585784+riku6460@users.noreply.github.com> Date: Thu, 6 Jul 2023 03:37:35 +0900 Subject: [PATCH] perf(backend): use mutex for nsfw model loading (#97) Co-authored-by: popkirby --- packages/backend/package.json | 1 + packages/backend/src/core/AiService.ts | 18 ++- pnpm-lock.yaml | 158 +++++++++++++------------ 3 files changed, 99 insertions(+), 78 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 85677f8a9e..39282efa08 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -75,6 +75,7 @@ "accepts": "1.3.8", "ajv": "8.12.0", "archiver": "5.3.1", + "async-mutex": "^0.4.0", "autwh": "0.1.0", "bcryptjs": "2.4.3", "blurhash": "2.0.5", diff --git a/packages/backend/src/core/AiService.ts b/packages/backend/src/core/AiService.ts index 059e335eff..c0596446dd 100644 --- a/packages/backend/src/core/AiService.ts +++ b/packages/backend/src/core/AiService.ts @@ -4,6 +4,7 @@ import { dirname } from 'node:path'; import { Inject, Injectable } from '@nestjs/common'; import * as nsfw from 'nsfwjs'; import si from 'systeminformation'; +import { Mutex } from 'async-mutex'; import type { Config } from '@/config.js'; import { DI } from '@/di-symbols.js'; import { bindThis } from '@/decorators.js'; @@ -17,6 +18,7 @@ let isSupportedCpu: undefined | boolean = undefined; @Injectable() export class AiService { private model: nsfw.NSFWJS; + private modelLoadMutex: Mutex = new Mutex(); constructor( @Inject(DI.config) @@ -31,16 +33,22 @@ export class AiService { const cpuFlags = await this.getCpuFlags(); isSupportedCpu = REQUIRED_CPU_FLAGS.every(required => cpuFlags.includes(required)); } - + if (!isSupportedCpu) { console.error('This CPU cannot use TensorFlow.'); return null; } - + 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 image = await tf.node.decodeImage(buffer, 3) as any; try { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 063ec0ed10..0ed97ba293 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -140,6 +140,9 @@ importers: archiver: specifier: 5.3.1 version: 5.3.1 + async-mutex: + specifier: ^0.4.0 + version: 0.4.0 autwh: specifier: 0.1.0 version: 0.1.0 @@ -1195,13 +1198,13 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/chunked-blob-reader@3.310.0: resolution: {integrity: sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg==} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/client-s3@3.321.1: @@ -1386,7 +1389,7 @@ packages: '@aws-sdk/util-user-agent-node': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 fast-xml-parser: 4.1.2 - tslib: 2.5.2 + tslib: 2.5.3 transitivePeerDependencies: - aws-crt dev: false @@ -1398,7 +1401,7 @@ packages: '@aws-sdk/types': 3.310.0 '@aws-sdk/util-config-provider': 3.310.0 '@aws-sdk/util-middleware': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/credential-provider-env@3.310.0: @@ -1407,7 +1410,7 @@ packages: dependencies: '@aws-sdk/property-provider': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/credential-provider-imds@3.310.0: @@ -1418,7 +1421,7 @@ packages: '@aws-sdk/property-provider': 3.310.0 '@aws-sdk/types': 3.310.0 '@aws-sdk/url-parser': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/credential-provider-ini@3.321.1: @@ -1433,7 +1436,7 @@ packages: '@aws-sdk/property-provider': 3.310.0 '@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 transitivePeerDependencies: - aws-crt dev: false @@ -1451,7 +1454,7 @@ packages: '@aws-sdk/property-provider': 3.310.0 '@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 transitivePeerDependencies: - aws-crt dev: false @@ -1463,7 +1466,7 @@ packages: '@aws-sdk/property-provider': 3.310.0 '@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/credential-provider-sso@3.321.1: @@ -1475,7 +1478,7 @@ packages: '@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/token-providers': 3.321.1 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 transitivePeerDependencies: - aws-crt dev: false @@ -1486,7 +1489,7 @@ packages: dependencies: '@aws-sdk/property-provider': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/eventstream-codec@3.310.0: @@ -1504,7 +1507,7 @@ packages: dependencies: '@aws-sdk/eventstream-serde-universal': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/eventstream-serde-config-resolver@3.310.0: @@ -1512,7 +1515,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/eventstream-serde-node@3.310.0: @@ -1521,7 +1524,7 @@ packages: dependencies: '@aws-sdk/eventstream-serde-universal': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/eventstream-serde-universal@3.310.0: @@ -1530,7 +1533,7 @@ packages: dependencies: '@aws-sdk/eventstream-codec': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/fetch-http-handler@3.310.0: @@ -1540,7 +1543,7 @@ packages: '@aws-sdk/querystring-builder': 3.310.0 '@aws-sdk/types': 3.310.0 '@aws-sdk/util-base64': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/hash-blob-browser@3.310.0: @@ -1548,7 +1551,7 @@ packages: dependencies: '@aws-sdk/chunked-blob-reader': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/hash-node@3.310.0: @@ -1558,7 +1561,7 @@ packages: '@aws-sdk/types': 3.310.0 '@aws-sdk/util-buffer-from': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/hash-stream-node@3.310.0: @@ -1567,21 +1570,21 @@ packages: dependencies: '@aws-sdk/types': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/invalid-dependency@3.310.0: resolution: {integrity: sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/is-array-buffer@3.310.0: resolution: {integrity: sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@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: '@aws-sdk/types': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-bucket-endpoint@3.310.0: @@ -1617,7 +1620,7 @@ packages: '@aws-sdk/types': 3.310.0 '@aws-sdk/util-arn-parser': 3.310.0 '@aws-sdk/util-config-provider': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-content-length@3.310.0: @@ -1626,7 +1629,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-endpoint@3.310.0: @@ -1637,7 +1640,7 @@ packages: '@aws-sdk/types': 3.310.0 '@aws-sdk/url-parser': 3.310.0 '@aws-sdk/util-middleware': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-expect-continue@3.310.0: @@ -1646,7 +1649,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-flexible-checksums@3.310.0: @@ -1659,7 +1662,7 @@ packages: '@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/types': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-host-header@3.310.0: @@ -1668,7 +1671,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-location-constraint@3.310.0: @@ -1676,7 +1679,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-logger@3.310.0: @@ -1684,7 +1687,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-recursion-detection@3.310.0: @@ -1693,7 +1696,7 @@ packages: dependencies: '@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-retry@3.310.0: @@ -1705,7 +1708,7 @@ packages: '@aws-sdk/types': 3.310.0 '@aws-sdk/util-middleware': 3.310.0 '@aws-sdk/util-retry': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 uuid: 8.3.2 dev: false @@ -1716,7 +1719,7 @@ packages: '@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/types': 3.310.0 '@aws-sdk/util-arn-parser': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-sdk-sts@3.310.0: @@ -1725,7 +1728,7 @@ packages: dependencies: '@aws-sdk/middleware-signing': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-serde@3.310.0: @@ -1733,7 +1736,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-signing@3.310.0: @@ -1745,7 +1748,7 @@ packages: '@aws-sdk/signature-v4': 3.310.0 '@aws-sdk/types': 3.310.0 '@aws-sdk/util-middleware': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-ssec@3.310.0: @@ -1753,14 +1756,14 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-stack@3.310.0: resolution: {integrity: sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/middleware-user-agent@3.319.0: @@ -1770,7 +1773,7 @@ packages: '@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/types': 3.310.0 '@aws-sdk/util-endpoints': 3.319.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/node-config-provider@3.310.0: @@ -1780,7 +1783,7 @@ packages: '@aws-sdk/property-provider': 3.310.0 '@aws-sdk/shared-ini-file-loader': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/node-http-handler@3.321.1: @@ -1799,7 +1802,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/protocol-http@3.310.0: @@ -1807,7 +1810,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/querystring-builder@3.310.0: @@ -1816,7 +1819,7 @@ packages: dependencies: '@aws-sdk/types': 3.310.0 '@aws-sdk/util-uri-escape': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/querystring-parser@3.310.0: @@ -1824,7 +1827,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/service-error-classification@3.310.0: @@ -1837,7 +1840,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/signature-v4-multi-region@3.310.0: @@ -1852,7 +1855,7 @@ packages: '@aws-sdk/protocol-http': 3.310.0 '@aws-sdk/signature-v4': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/signature-v4@3.310.0: @@ -1865,7 +1868,7 @@ packages: '@aws-sdk/util-middleware': 3.310.0 '@aws-sdk/util-uri-escape': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/smithy-client@3.316.0: @@ -1874,7 +1877,7 @@ packages: dependencies: '@aws-sdk/middleware-stack': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/token-providers@3.321.1: @@ -1894,7 +1897,7 @@ packages: resolution: {integrity: sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/url-parser@3.310.0: @@ -1902,14 +1905,14 @@ packages: dependencies: '@aws-sdk/querystring-parser': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-arn-parser@3.310.0: resolution: {integrity: sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-base64@3.310.0: @@ -1917,20 +1920,20 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-body-length-browser@3.310.0: resolution: {integrity: sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-body-length-node@3.310.0: resolution: {integrity: sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-buffer-from@3.310.0: @@ -1938,14 +1941,14 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/is-array-buffer': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-config-provider@3.310.0: resolution: {integrity: sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-defaults-mode-browser@3.316.0: @@ -1955,7 +1958,7 @@ packages: '@aws-sdk/property-provider': 3.310.0 '@aws-sdk/types': 3.310.0 bowser: 2.11.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-defaults-mode-node@3.316.0: @@ -1967,7 +1970,7 @@ packages: '@aws-sdk/node-config-provider': 3.310.0 '@aws-sdk/property-provider': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-endpoints@3.319.0: @@ -1975,28 +1978,28 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-hex-encoding@3.310.0: resolution: {integrity: sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-locate-window@3.208.0: resolution: {integrity: sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-middleware@3.310.0: resolution: {integrity: sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-retry@3.310.0: @@ -2004,7 +2007,7 @@ packages: engines: {node: '>= 14.0.0'} dependencies: '@aws-sdk/service-error-classification': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-stream-browser@3.310.0: @@ -2015,7 +2018,7 @@ packages: '@aws-sdk/util-base64': 3.310.0 '@aws-sdk/util-hex-encoding': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-stream-node@3.321.1: @@ -2025,14 +2028,14 @@ packages: '@aws-sdk/node-http-handler': 3.321.1 '@aws-sdk/types': 3.310.0 '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-uri-escape@3.310.0: resolution: {integrity: sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-user-agent-browser@3.310.0: @@ -2040,7 +2043,7 @@ packages: dependencies: '@aws-sdk/types': 3.310.0 bowser: 2.11.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-user-agent-node@3.310.0: @@ -2054,13 +2057,13 @@ packages: dependencies: '@aws-sdk/node-config-provider': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-utf8-browser@3.259.0: resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-utf8@3.310.0: @@ -2068,7 +2071,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/util-buffer-from': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/util-waiter@3.310.0: @@ -2077,14 +2080,14 @@ packages: dependencies: '@aws-sdk/abort-controller': 3.310.0 '@aws-sdk/types': 3.310.0 - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@aws-sdk/xml-builder@3.310.0: resolution: {integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: false /@babel/code-frame@7.21.4: @@ -9214,7 +9217,7 @@ packages: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} dependencies: - tslib: 2.5.2 + tslib: 2.5.3 dev: true /ast-types@0.15.2: @@ -9253,6 +9256,12 @@ packages: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} 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: resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==} engines: {node: '>= 0.10'} @@ -20449,6 +20458,9 @@ packages: /tslib@2.5.2: resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} + /tslib@2.5.3: + resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} + /tsutils@3.21.0(typescript@5.0.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'}