diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e87892734..c0c1e3449c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2681,12 +2681,24 @@ importers: '@ballerine/workflow-node-sdk': specifier: 0.6.89 version: link:../../sdks/workflow-node-sdk + '@bull-board/api': + specifier: ^6.7.1 + version: 6.7.1(@bull-board/ui@6.7.1) + '@bull-board/express': + specifier: ^6.7.1 + version: 6.7.1 + '@bull-board/nestjs': + specifier: ^6.7.1 + version: 6.7.1(@bull-board/api@6.7.1)(@bull-board/express@6.7.1)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@faker-js/faker': specifier: ^7.6.0 version: 7.6.0 '@nestjs/axios': specifier: ^2.0.0 version: 2.0.0(@nestjs/common@9.4.3)(axios@1.6.8)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/bullmq': + specifier: ^10.2.1 + version: 10.2.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(bullmq@5.13.2) '@nestjs/common': specifier: ^9.3.12 version: 9.4.3(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) @@ -2765,6 +2777,9 @@ importers: bcrypt: specifier: 5.1.0 version: 5.1.0 + bullmq: + specifier: ^5.13.2 + version: 5.13.2 class-transformer: specifier: 0.5.1 version: 0.5.1 @@ -3319,7 +3334,7 @@ packages: engines: {node: '>=18.14.1'} dependencies: ci-info: 3.9.0 - debug: 4.3.6 + debug: 4.4.0 dlv: 1.1.3 dset: 3.1.3 is-docker: 3.0.0 @@ -3414,7 +3429,7 @@ packages: /@aws-crypto/supports-web-crypto@5.2.0: resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@aws-crypto/util@3.0.0: @@ -3429,7 +3444,7 @@ packages: dependencies: '@aws-sdk/types': 3.609.0 '@smithy/util-utf8': 2.3.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@aws-sdk/abort-controller@3.347.0: @@ -3437,7 +3452,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/abort-controller@3.374.0: resolution: {integrity: sha512-pO1pqFBdIF28ZvnJmg58Erj35RLzXsTrjvHghdc/xgtSvodFFCNrUsPg6AP3On8eiw9elpHoS4P8jMx1pHDXEw==} @@ -3445,13 +3460,13 @@ packages: deprecated: This package has moved to @smithy/abort-controller dependencies: '@smithy/abort-controller': 1.1.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@aws-sdk/chunked-blob-reader@3.310.0: resolution: {integrity: sha512-CrJS3exo4mWaLnWxfCH+w88Ou0IcAZSIkk4QbmxiHl/5Dq705OLoxf4385MVyExpqpeVJYOYQ2WaD8i/pQZ2fg==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/client-s3@3.347.1: resolution: {integrity: sha512-s7LPecYBo78uMB4ZrSuSV/cGjc9RLzZ5+SA9Ds0mPWudeRROsogBqxK82qZqoCfjPAUVB24e2MIarV8Hzu6+jw==} @@ -3602,7 +3617,7 @@ packages: '@aws-sdk/util-utf8': 3.310.0 '@smithy/protocol-http': 1.2.0 '@smithy/types': 1.2.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt @@ -3692,7 +3707,7 @@ packages: '@aws-sdk/util-utf8': 3.310.0 '@smithy/protocol-http': 1.2.0 '@smithy/types': 1.2.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt @@ -3737,7 +3752,7 @@ packages: '@smithy/util-middleware': 3.0.3 '@smithy/util-retry': 3.0.3 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt dev: false @@ -3864,7 +3879,7 @@ packages: dependencies: '@aws-sdk/property-provider': 3.347.0 '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/credential-provider-env@3.620.1: resolution: {integrity: sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==} @@ -3873,7 +3888,7 @@ packages: '@aws-sdk/types': 3.609.0 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@aws-sdk/credential-provider-http@3.622.0: @@ -3888,7 +3903,7 @@ packages: '@smithy/smithy-client': 3.1.12 '@smithy/types': 3.3.0 '@smithy/util-stream': 3.1.3 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@aws-sdk/credential-provider-imds@3.347.0: @@ -3899,7 +3914,7 @@ packages: '@aws-sdk/property-provider': 3.347.0 '@aws-sdk/types': 3.347.0 '@aws-sdk/url-parser': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/credential-provider-ini@3.347.0: resolution: {integrity: sha512-84TNF34ryabmVbILOq7f+/Jy8tJaskvHdax3X90qxFtXRU11kX0bf5NYL616KT0epR0VGpy50ThfIqvBwxeJfQ==} @@ -3913,7 +3928,7 @@ packages: '@aws-sdk/property-provider': 3.347.0 '@aws-sdk/shared-ini-file-loader': 3.347.0 '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt @@ -3934,7 +3949,7 @@ packages: '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt @@ -3986,7 +4001,7 @@ packages: '@aws-sdk/property-provider': 3.347.0 '@aws-sdk/shared-ini-file-loader': 3.347.0 '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/credential-provider-process@3.620.1: resolution: {integrity: sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==} @@ -3996,7 +4011,7 @@ packages: '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@aws-sdk/credential-provider-sso@3.347.0: @@ -4008,7 +4023,7 @@ packages: '@aws-sdk/shared-ini-file-loader': 3.347.0 '@aws-sdk/token-providers': 3.347.0 '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt @@ -4022,7 +4037,7 @@ packages: '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt @@ -4034,7 +4049,7 @@ packages: dependencies: '@aws-sdk/property-provider': 3.347.0 '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/credential-provider-web-identity@3.621.0(@aws-sdk/client-sts@3.624.0): resolution: {integrity: sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==} @@ -4046,7 +4061,7 @@ packages: '@aws-sdk/types': 3.609.0 '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@aws-sdk/eventstream-codec@3.347.0: @@ -4055,7 +4070,7 @@ packages: '@aws-crypto/crc32': 3.0.0 '@aws-sdk/types': 3.347.0 '@aws-sdk/util-hex-encoding': 3.310.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/eventstream-serde-browser@3.347.0: resolution: {integrity: sha512-9BLVTHWgpiTo/hl+k7qt7E9iYu43zVwJN+4TEwA9ZZB3p12068t1Hay6HgCcgJC3+LWMtw/OhvypV6vQAG4UBg==} @@ -4086,7 +4101,7 @@ packages: dependencies: '@aws-sdk/eventstream-codec': 3.347.0 '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/fetch-http-handler@3.347.0: resolution: {integrity: sha512-sQ5P7ivY8//7wdxfA76LT1sF6V2Tyyz1qF6xXf9sihPN5Q1Y65c+SKpMzXyFSPqWZ82+SQQuDliYZouVyS6kQQ==} @@ -4131,7 +4146,7 @@ packages: resolution: {integrity: sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/lib-storage@3.347.1(@aws-sdk/abort-controller@3.374.0)(@aws-sdk/client-s3@3.347.1): resolution: {integrity: sha512-/ANMHosjSze07saCHzsmIh6a8Tmf9/xhe8C4W1iw/mrZMSpyKXrJjPSGo4uQ5Rrs2mrBJAXYC4USLXtBZhPaow==} @@ -4291,7 +4306,7 @@ packages: dependencies: '@aws-sdk/middleware-signing': 3.347.0 '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/middleware-serde@3.347.0: resolution: {integrity: sha512-x5Foi7jRbVJXDu9bHfyCbhYDH5pKK+31MmsSJ3k8rY8keXLBxm2XEEg/AIoV9/TUF9EeVvZ7F1/RmMpJnWQsEg==} @@ -4368,7 +4383,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/protocol-http@3.347.0: resolution: {integrity: sha512-2YdBhc02Wvy03YjhGwUxF0UQgrPWEy8Iq75pfS42N+/0B/+eWX1aQgfjFxIpLg7YSjT5eKtYOQGlYd4MFTgj9g==} @@ -4383,14 +4398,14 @@ packages: dependencies: '@aws-sdk/types': 3.347.0 '@aws-sdk/util-uri-escape': 3.310.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/querystring-parser@3.347.0: resolution: {integrity: sha512-5VXOhfZz78T2W7SuXf2avfjKglx1VZgZgp9Zfhrt/Rq+MTu2D+PZc5zmJHhYigD7x83jLSLogpuInQpFMA9LgA==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/region-config-resolver@3.614.0: resolution: {integrity: sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==} @@ -4428,7 +4443,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/signature-v4-multi-region@3.347.0: resolution: {integrity: sha512-838h7pbRCVYWlTl8W+r5+Z5ld7uoBObgAn7/RB1MQ4JjlkfLdN7emiITG6ueVL+7gWZNZc/4dXR/FJSzCgrkxQ==} @@ -4455,7 +4470,7 @@ packages: '@aws-sdk/util-middleware': 3.347.0 '@aws-sdk/util-uri-escape': 3.310.0 '@aws-sdk/util-utf8': 3.310.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/smithy-client@3.347.0: resolution: {integrity: sha512-PaGTDsJLGK0sTjA6YdYQzILRlPRN3uVFyqeBUkfltXssvUzkm8z2t1lz2H4VyJLAhwnG5ZuZTNEV/2mcWrU7JQ==} @@ -4473,7 +4488,7 @@ packages: '@aws-sdk/property-provider': 3.347.0 '@aws-sdk/shared-ini-file-loader': 3.347.0 '@aws-sdk/types': 3.347.0 - tslib: 2.6.2 + tslib: 2.6.3 transitivePeerDependencies: - aws-crt @@ -4488,7 +4503,7 @@ packages: '@smithy/property-provider': 3.1.3 '@smithy/shared-ini-file-loader': 3.1.4 '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@aws-sdk/types@3.347.0: @@ -4516,7 +4531,7 @@ packages: resolution: {integrity: sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/util-base64@3.310.0: resolution: {integrity: sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==} @@ -4541,13 +4556,13 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/is-array-buffer': 3.310.0 - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/util-config-provider@3.310.0: resolution: {integrity: sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/util-defaults-mode-browser@3.347.0: resolution: {integrity: sha512-+JHFA4reWnW/nMWwrLKqL2Lm/biw/Dzi/Ix54DAkRZ08C462jMKVnUlzAI+TfxQE3YLm99EIa0G7jiEA+p81Qw==} @@ -4599,19 +4614,19 @@ packages: resolution: {integrity: sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/util-locate-window@3.310.0: resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/util-middleware@3.347.0: resolution: {integrity: sha512-8owqUA3ePufeYTUvlzdJ7Z0miLorTwx+rNol5lourGQZ9JXsVMo23+yGA7nOlFuXSGkoKpMOtn6S0BT2bcfeiw==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/util-retry@3.347.0: resolution: {integrity: sha512-NxnQA0/FHFxriQAeEgBonA43Q9/VPFQa8cfJDuT2A1YZruMasgjcltoZszi1dvoIRWSZsFTW42eY2gdOd0nffQ==} @@ -4643,7 +4658,7 @@ packages: resolution: {integrity: sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/util-user-agent-browser@3.347.0: resolution: {integrity: sha512-ydxtsKVtQefgbk1Dku1q7pMkjDYThauG9/8mQkZUAVik55OUZw71Zzr3XO8J8RKvQG8lmhPXuAQ0FKAyycc0RA==} @@ -4692,7 +4707,7 @@ packages: /@aws-sdk/util-utf8-browser@3.259.0: resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@aws-sdk/util-utf8@3.310.0: resolution: {integrity: sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==} @@ -4810,7 +4825,7 @@ packages: '@babel/traverse': 7.23.7 '@babel/types': 7.23.6 convert-source-map: 2.0.0 - debug: 4.3.6 + debug: 4.4.0 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -4944,7 +4959,25 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.25.2): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.25.2) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 @@ -4962,13 +4995,13 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.25.2): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 @@ -4982,7 +5015,7 @@ packages: '@babel/core': 7.17.9 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.6 + debug: 4.4.0 lodash.debounce: 4.0.8 resolve: 1.22.8 semver: 6.3.1 @@ -4990,15 +5023,15 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.7): + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.25.2): resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.6 + debug: 4.4.0 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -5086,6 +5119,20 @@ packages: '@babel/helper-validator-identifier': 7.22.20 dev: true + /@babel/helper-module-transforms@7.23.3(@babel/core@7.25.2): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} @@ -5124,13 +5171,13 @@ packages: '@babel/helper-wrap-function': 7.22.20 dev: true - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.25.2): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 @@ -5148,13 +5195,13 @@ packages: '@babel/helper-optimise-call-expression': 7.22.5 dev: true - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.25.2): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -5327,13 +5374,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -5349,25 +5396,25 @@ packages: '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.17.9) dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.25.2) dev: true - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.7): + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -5572,13 +5619,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 dev: true /@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.17.9): @@ -5625,6 +5672,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.7): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: @@ -5652,6 +5708,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.17.9): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -5662,13 +5727,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -5681,12 +5746,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -5699,12 +5764,12 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -5718,23 +5783,23 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7): + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7): + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -5747,6 +5812,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.17.9): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -5765,6 +5839,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.17.9): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} @@ -5813,6 +5896,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.17.9): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -5831,6 +5923,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.17.9): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -5849,6 +5950,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.17.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -5867,6 +5977,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.17.9): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -5885,6 +6004,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.17.9): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -5903,6 +6031,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.17.9): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -5913,13 +6050,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -5943,6 +6080,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.17.9): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} @@ -5963,14 +6110,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -5984,27 +6131,27 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) dev: true /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.17.9): @@ -6019,16 +6166,16 @@ packages: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.17.9) dev: true - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.25.2) dev: true /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.17.9): @@ -6041,13 +6188,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6061,37 +6208,37 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) dev: true /@babel/plugin-transform-classes@7.23.3(@babel/core@7.17.9): @@ -6112,20 +6259,20 @@ packages: globals: 11.12.0 dev: true - /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-classes@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.25.2) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true @@ -6141,13 +6288,13 @@ packages: '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: true @@ -6162,13 +6309,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6183,14 +6330,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6204,25 +6351,25 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) dev: true /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.17.9): @@ -6236,26 +6383,26 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) dev: true /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.7): @@ -6279,13 +6426,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6301,27 +6448,27 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) dev: true /@babel/plugin-transform-literals@7.23.3(@babel/core@7.17.9): @@ -6334,25 +6481,25 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) dev: true /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.17.9): @@ -6365,13 +6512,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6386,14 +6533,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6416,7 +6563,19 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.25.2): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true @@ -6434,15 +6593,15 @@ packages: '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 dev: true @@ -6458,14 +6617,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6480,14 +6639,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.25.2): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6501,50 +6660,50 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) dev: true - /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) dev: true - /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.25.2) dev: true /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.17.9): @@ -6558,26 +6717,26 @@ packages: '@babel/helper-replace-supers': 7.22.20(@babel/core@7.17.9) dev: true - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.25.2) dev: true - /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) dev: true /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.17.9): @@ -6592,16 +6751,16 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.17.9) dev: true - /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) dev: true /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.17.9): @@ -6614,38 +6773,38 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) dev: true /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.17.9): @@ -6658,13 +6817,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6778,13 +6937,13 @@ packages: regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: true @@ -6799,13 +6958,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6819,13 +6978,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6840,13 +6999,13 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true @@ -6861,13 +7020,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6881,13 +7040,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6901,13 +7060,13 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6947,24 +7106,24 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -6979,25 +7138,25 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.25.2): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.22.5 dev: true @@ -7097,80 +7256,171 @@ packages: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.7) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.7) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.7) - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.7) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.7) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.7) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.25.2) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.25.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.25.2) + core-js-compat: 3.33.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-env@7.23.3(@babel/core@7.25.2): + resolution: {integrity: sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.25.2) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.25.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.25.2) core-js-compat: 3.33.2 semver: 6.3.1 transitivePeerDependencies: @@ -7202,12 +7452,12 @@ packages: esutils: 2.0.3 dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.22.5 '@babel/types': 7.23.6 esutils: 2.0.3 @@ -7318,7 +7568,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.6 '@babel/types': 7.23.6 - debug: 4.3.6 + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7335,7 +7585,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.23.6 '@babel/types': 7.23.6 - debug: 4.3.6 + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -7510,6 +7760,51 @@ packages: zod: 3.23.4 dev: true + /@bull-board/api@6.7.1(@bull-board/ui@6.7.1): + resolution: {integrity: sha512-Gv+0jo0QYBjNE0DatcUSavMLfGAOuhsLVPxJHR3QjN7Rp0s1VM/O2ExNTezDip1Q67G8fq8Tp9ZfleJZb1KP2Q==} + peerDependencies: + '@bull-board/ui': 6.7.1 + dependencies: + '@bull-board/ui': 6.7.1 + redis-info: 3.1.0 + dev: false + + /@bull-board/express@6.7.1: + resolution: {integrity: sha512-PQ3nMDbafnJPk+O/CPFi+MftBYDomi9jSJkuAMxAIMDGN+nhiVVYkyflUt7ToeV9YppB+GJnunpoGbAN6HZfeg==} + dependencies: + '@bull-board/api': 6.7.1(@bull-board/ui@6.7.1) + '@bull-board/ui': 6.7.1 + ejs: 3.1.10 + express: 4.21.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@bull-board/nestjs@6.7.1(@bull-board/api@6.7.1)(@bull-board/express@6.7.1)(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.1): + resolution: {integrity: sha512-GwbfXn5KTqVPPBfiz5ZuwnZr4IKXMBVNPc/fSDgXEO9JIiLA+RLvk/MFLyZocja/N/5GQF5PsJ3myoj/6iWx/Q==} + peerDependencies: + '@bull-board/api': ^6.7.1 + '@bull-board/express': ^6.7.1 + '@nestjs/common': ^9.0.0 || ^10.0.0 || ^11.0.0 + '@nestjs/core': ^9.0.0 || ^10.0.0 || ^11.0.0 + reflect-metadata: ^0.1.13 || ^0.2.0 + rxjs: ^7.8.1 + dependencies: + '@bull-board/api': 6.7.1(@bull-board/ui@6.7.1) + '@bull-board/express': 6.7.1 + '@nestjs/bull-shared': 10.2.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(@nestjs/websockets@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.1) + reflect-metadata: 0.1.13 + rxjs: 7.8.1 + dev: false + + /@bull-board/ui@6.7.1: + resolution: {integrity: sha512-Bf2S81enM+KSz7ltOmWBE/Z69NtKPmYhUFbPEXooFGXs63yrR/17vzdSlraJb9jC6kMLzJhp0y61rXLdCqPTBw==} + dependencies: + '@bull-board/api': 6.7.1(@bull-board/ui@6.7.1) + dev: false + /@changesets/apply-release-plan@6.1.4: resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} dependencies: @@ -9449,7 +9744,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.6 + debug: 4.4.0 espree: 9.6.1 globals: 13.23.0 ignore: 5.3.0 @@ -9482,7 +9777,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.6 + debug: 4.4.0 espree: 9.6.1 globals: 13.23.0 ignore: 5.3.0 @@ -9661,7 +9956,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.6 + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -9848,6 +10143,10 @@ packages: mute-stream: 1.0.0 dev: true + /@ioredis/commands@1.2.0: + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + dev: false + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -10160,7 +10459,7 @@ packages: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.5.4) typescript: 5.5.4 - vite: 5.3.5(@types/node@20.9.2) + vite: 5.3.5(@types/node@18.17.19) dev: true /@jridgewell/gen-mapping@0.3.3: @@ -10244,7 +10543,7 @@ packages: resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /@lukeed/csprng@1.1.0: @@ -10457,7 +10756,7 @@ packages: '@motionone/easing': 10.16.3 '@motionone/types': 10.16.3 '@motionone/utils': 10.16.3 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@motionone/dom@10.16.4: @@ -10468,14 +10767,14 @@ packages: '@motionone/types': 10.16.3 '@motionone/utils': 10.16.3 hey-listen: 1.0.8 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@motionone/easing@10.16.3: resolution: {integrity: sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==} dependencies: '@motionone/utils': 10.16.3 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@motionone/generators@10.16.4: @@ -10483,7 +10782,7 @@ packages: dependencies: '@motionone/types': 10.16.3 '@motionone/utils': 10.16.3 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@motionone/types@10.16.3: @@ -10495,8 +10794,56 @@ packages: dependencies: '@motionone/types': 10.16.3 hey-listen: 1.0.8 - tslib: 2.6.2 + tslib: 2.6.3 + dev: false + + /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3: + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3: + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3: + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3: + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + requiresBuild: true dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3: + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3: + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true /@mswjs/cookies@0.2.2: resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} @@ -10512,7 +10859,7 @@ packages: '@open-draft/until': 1.0.3 '@types/debug': 4.1.12 '@xmldom/xmldom': 0.8.10 - debug: 4.3.6 + debug: 4.4.0 headers-polyfill: 3.2.5 outvariant: 1.4.3 strict-event-emitter: 0.2.8 @@ -10758,6 +11105,31 @@ packages: rxjs: 7.8.1 dev: false + /@nestjs/bull-shared@10.2.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3): + resolution: {integrity: sha512-zvnTvSq6OJ92omcsFUwaUmPbM3PRgWkIusHPB5TE3IFS7nNdM3OwF+kfe56sgKjMtQQMe/56lok0S04OtPMX5Q==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 + dependencies: + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(@nestjs/websockets@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.1) + tslib: 2.6.3 + dev: false + + /@nestjs/bullmq@10.2.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3)(bullmq@5.13.2): + resolution: {integrity: sha512-nDR0hDabmtXt5gsb5R786BJsGIJoWh/79sVmRETXf4S45+fvdqG1XkCKAeHF9TO9USodw9m+XBNKysTnkY41gw==} + peerDependencies: + '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 + '@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0 + bullmq: ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + '@nestjs/bull-shared': 10.2.1(@nestjs/common@9.4.3)(@nestjs/core@9.4.3) + '@nestjs/common': 9.4.3(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) + '@nestjs/core': 9.4.3(@nestjs/common@9.4.3)(@nestjs/platform-express@9.4.3)(@nestjs/websockets@9.4.3)(reflect-metadata@0.1.13)(rxjs@7.8.1) + bullmq: 5.13.2 + tslib: 2.6.3 + dev: false + /@nestjs/cli@9.3.0: resolution: {integrity: sha512-v/E8Y3zFk30+FljETvPgpoGIUiOfWuOe6WUFw3ExGfDeWrF/A8ceupDHPWNknBAqvNtz2kVrWu5mwsZUEKGIgg==} engines: {node: '>= 12.9.0'} @@ -11322,7 +11694,7 @@ packages: is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.1 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /@playwright/test@1.40.0: @@ -14517,7 +14889,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@smithy/types': 1.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/abort-controller@3.1.1: @@ -14525,7 +14897,7 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/config-resolver@3.0.5: @@ -14561,7 +14933,7 @@ packages: '@smithy/property-provider': 3.1.3 '@smithy/types': 3.3.0 '@smithy/url-parser': 3.0.3 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/fetch-http-handler@3.2.4: @@ -14595,14 +14967,14 @@ packages: resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/is-array-buffer@3.0.0: resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} engines: {node: '>=16.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/middleware-content-length@3.0.5: @@ -14684,7 +15056,7 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/protocol-http@1.2.0: @@ -14708,7 +15080,7 @@ packages: dependencies: '@smithy/types': 3.3.0 '@smithy/util-uri-escape': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/querystring-parser@3.0.3: @@ -14716,7 +15088,7 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/service-error-classification@3.0.3: @@ -14731,7 +15103,7 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@smithy/types': 3.3.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/signature-v4@4.1.0: @@ -14745,7 +15117,7 @@ packages: '@smithy/util-middleware': 3.0.3 '@smithy/util-uri-escape': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/smithy-client@3.1.12: @@ -14808,7 +15180,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@smithy/is-array-buffer': 2.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/util-buffer-from@3.0.0: @@ -14816,14 +15188,14 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@smithy/is-array-buffer': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/util-config-provider@3.0.0: resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} engines: {node: '>=16.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/util-defaults-mode-browser@3.0.14: @@ -14863,7 +15235,7 @@ packages: resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} engines: {node: '>=16.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/util-middleware@3.0.3: @@ -14894,14 +15266,14 @@ packages: '@smithy/util-buffer-from': 3.0.0 '@smithy/util-hex-encoding': 3.0.0 '@smithy/util-utf8': 3.0.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/util-uri-escape@3.0.0: resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} engines: {node: '>=16.0.0'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/util-utf8@2.3.0: @@ -14909,7 +15281,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: '@smithy/util-buffer-from': 2.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@smithy/util-utf8@3.0.0: @@ -16072,10 +16444,10 @@ packages: '@types/find-cache-dir': 3.2.1 '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.18.20) browser-assert: 1.2.1 - ejs: 3.1.9 + ejs: 3.1.10 esbuild: 0.18.20 esbuild-plugin-alias: 0.2.1 - express: 4.18.2 + express: 4.21.2 find-cache-dir: 3.3.2 fs-extra: 11.1.1 process: 0.11.10 @@ -16213,7 +16585,7 @@ packages: '@storybook/client-logger': 7.5.3 '@storybook/core-events': 7.5.3 '@storybook/global': 5.0.0 - qs: 6.11.2 + qs: 6.13.0 telejson: 7.2.0 tiny-invariant: 1.3.1 dev: true @@ -16224,7 +16596,7 @@ packages: '@storybook/client-logger': 7.6.10 '@storybook/core-events': 7.6.10 '@storybook/global': 5.0.0 - qs: 6.11.2 + qs: 6.13.0 telejson: 7.2.0 tiny-invariant: 1.3.1 dev: true @@ -16234,7 +16606,7 @@ packages: hasBin: true dependencies: '@babel/core': 7.23.7 - '@babel/preset-env': 7.23.3(@babel/core@7.23.7) + '@babel/preset-env': 7.23.3(@babel/core@7.25.2) '@babel/types': 7.23.6 '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 7.5.3 @@ -16254,7 +16626,7 @@ packages: detect-indent: 6.1.0 envinfo: 7.11.0 execa: 5.1.1 - express: 4.18.2 + express: 4.21.2 find-up: 5.0.0 fs-extra: 11.1.1 get-npm-tarball-url: 2.1.0 @@ -16332,7 +16704,7 @@ packages: '@storybook/theming': 6.5.16(react-dom@18.2.0)(react@18.2.0) core-js: 3.33.2 memoizerific: 1.11.3 - qs: 6.11.2 + qs: 6.13.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) regenerator-runtime: 0.13.11 @@ -16514,7 +16886,7 @@ packages: cli-table3: 0.6.3 compression: 1.7.4 detect-port: 1.5.1 - express: 4.18.2 + express: 4.21.2 fs-extra: 11.1.1 globby: 11.1.0 ip: 2.0.0 @@ -16695,7 +17067,7 @@ packages: dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 - qs: 6.11.2 + qs: 6.13.0 synchronous-promise: 2.0.17 ts-dedent: 2.2.0 util-deprecate: 1.0.2 @@ -16714,7 +17086,7 @@ packages: dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 - qs: 6.11.2 + qs: 6.13.0 synchronous-promise: 2.0.17 ts-dedent: 2.2.0 util-deprecate: 1.0.2 @@ -16805,7 +17177,7 @@ packages: react: 18.2.0 react-docgen: 6.0.4 react-dom: 18.2.0(react@18.2.0) - vite: 5.3.5(@types/node@20.9.2) + vite: 5.3.5(@types/node@18.17.19) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -16944,7 +17316,7 @@ packages: '@storybook/client-logger': 6.5.16 core-js: 3.33.2 memoizerific: 1.11.3 - qs: 6.11.2 + qs: 6.13.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) regenerator-runtime: 0.13.11 @@ -16958,7 +17330,7 @@ packages: dependencies: '@storybook/client-logger': 7.5.3 memoizerific: 1.11.3 - qs: 6.11.2 + qs: 6.13.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -16968,7 +17340,7 @@ packages: dependencies: '@storybook/client-logger': 7.6.10 memoizerific: 1.11.3 - qs: 6.11.2 + qs: 6.13.0 dev: true /@storybook/semver@7.3.2: @@ -17112,7 +17484,7 @@ packages: vite: ^4.0.0 dependencies: '@sveltejs/vite-plugin-svelte': 2.5.2(svelte@3.59.2)(vite@4.5.3) - debug: 4.3.6 + debug: 4.4.0 svelte: 3.59.2 vite: 4.5.3(@types/node@20.9.2) transitivePeerDependencies: @@ -17403,13 +17775,13 @@ packages: /@swc/helpers@0.4.14: resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /@swc/helpers@0.4.36: resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==} dependencies: legacy-swc-helpers: /@swc/helpers@0.4.14 - tslib: 2.6.2 + tslib: 2.6.3 /@swc/types@0.1.17: resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} @@ -19468,7 +19840,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - debug: 4.3.6 + debug: 4.4.0 eslint: 8.22.0 typescript: 4.9.5 transitivePeerDependencies: @@ -19488,7 +19860,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) - debug: 4.3.6 + debug: 4.4.0 eslint: 8.22.0 typescript: 5.5.4 transitivePeerDependencies: @@ -19528,7 +19900,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) - debug: 4.3.6 + debug: 4.4.0 eslint: 8.54.0 typescript: 4.9.5 transitivePeerDependencies: @@ -19548,7 +19920,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) - debug: 4.3.6 + debug: 4.4.0 eslint: 8.54.0 typescript: 5.1.6 transitivePeerDependencies: @@ -19568,7 +19940,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) - debug: 4.3.6 + debug: 4.4.0 eslint: 8.54.0 typescript: 5.5.4 transitivePeerDependencies: @@ -19789,7 +20161,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.5.4) '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.5.4) - debug: 4.3.6 + debug: 4.4.0 eslint: 8.53.0 ts-api-utils: 1.0.3(typescript@5.5.4) typescript: 5.5.4 @@ -19809,7 +20181,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.2.2) '@typescript-eslint/utils': 6.14.0(eslint@8.55.0)(typescript@5.2.2) - debug: 4.3.6 + debug: 4.4.0 eslint: 8.55.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 @@ -19853,7 +20225,7 @@ packages: dependencies: '@typescript-eslint/types': 4.33.0 '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.6 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -19874,7 +20246,7 @@ packages: dependencies: '@typescript-eslint/types': 4.33.0 '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.6 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -19895,7 +20267,7 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.6 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -19916,7 +20288,7 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.6 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -19937,7 +20309,7 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.6 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -19958,7 +20330,7 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.6 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -19979,7 +20351,7 @@ packages: dependencies: '@typescript-eslint/types': 6.11.0 '@typescript-eslint/visitor-keys': 6.11.0 - debug: 4.3.6 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -20000,7 +20372,7 @@ packages: dependencies: '@typescript-eslint/types': 6.14.0 '@typescript-eslint/visitor-keys': 6.14.0 - debug: 4.3.6 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -20021,7 +20393,7 @@ packages: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.6 + debug: 4.4.0 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -20290,7 +20662,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.3) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 5.3.5(@types/node@20.9.2) + vite: 5.3.5(@types/node@18.17.19) transitivePeerDependencies: - supports-color dev: true @@ -20969,7 +21341,7 @@ packages: esbuild: '>=0.10.0' dependencies: esbuild: 0.18.20 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /@yarnpkg/fslib@2.10.3: @@ -20997,7 +21369,7 @@ packages: engines: {node: '>=18.12.0'} dependencies: js-yaml: 3.14.1 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /@zerodevx/svelte-toast@0.8.2: @@ -21134,7 +21506,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.6 + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -21142,7 +21514,7 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} dependencies: - debug: 4.3.6 + debug: 4.4.0 transitivePeerDependencies: - supports-color dev: true @@ -21393,7 +21765,7 @@ packages: resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} engines: {node: '>=10'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -21410,7 +21782,7 @@ packages: /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-array-buffer: 3.0.2 /array-each@1.0.1: @@ -21490,7 +21862,7 @@ packages: resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 es-array-method-boxes-properly: 1.0.0 @@ -21511,10 +21883,10 @@ packages: engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 @@ -21535,7 +21907,7 @@ packages: /assert@2.1.0: resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-nan: 1.3.2 object-is: 1.1.5 object.assign: 4.1.4 @@ -21555,14 +21927,14 @@ packages: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: true /ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: true /astral-regex@2.0.0: @@ -21583,7 +21955,7 @@ packages: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 astrojs-compiler-sync: 0.3.3(@astrojs/compiler@1.8.2) - debug: 4.3.6 + debug: 4.4.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 semver: 7.5.4 @@ -21872,14 +22244,14 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.7): + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.25.2): resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.7 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.25.2) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -21897,13 +22269,13 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.7): + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.25.2): resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.25.2) core-js-compat: 3.33.2 transitivePeerDependencies: - supports-color @@ -21920,13 +22292,13 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.7): + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.25.2): resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.7) + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.25.2) transitivePeerDependencies: - supports-color dev: true @@ -22145,6 +22517,25 @@ packages: transitivePeerDependencies: - supports-color + /body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -22330,6 +22721,20 @@ packages: semver: 7.5.4 dev: true + /bullmq@5.13.2: + resolution: {integrity: sha512-McGE8k3mrCvdUHdU0sHkTKDS1xr4pff+hbEKBY51wk5S6Za0gkuejYA620VQTo3Zz37E/NVWMgumwiXPQ3yZcA==} + dependencies: + cron-parser: 4.9.0 + ioredis: 5.4.1 + msgpackr: 1.11.0 + node-abort-controller: 3.1.1 + semver: 7.5.4 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} @@ -22401,6 +22806,16 @@ packages: get-intrinsic: 1.2.2 set-function-length: 1.1.1 + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + /call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} dev: false @@ -22413,7 +22828,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /camelcase-css@2.0.1: @@ -22475,7 +22890,7 @@ packages: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 upper-case-first: 2.0.2 dev: true @@ -22556,7 +22971,7 @@ packages: path-case: 3.0.4 sentence-case: 3.0.4 snake-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /char-regex@1.0.2: @@ -22830,6 +23245,11 @@ packages: engines: {node: '>=6'} dev: false + /cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + dev: false + /cmdk@0.2.0(@types/react@18.2.37)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-JQpKvEOb86SnvMZbYaFKYhvzFntWBeSZdyii0rZPhKJj9uwJBxu4DaVYDrRN7r3mPop56oPhRw+JYWTKs66TYw==} peerDependencies: @@ -23193,7 +23613,7 @@ packages: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 upper-case: 2.0.2 dev: true @@ -23265,6 +23685,10 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + /cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + /cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} dev: true @@ -23516,6 +23940,13 @@ packages: resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} dev: false + /cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + dependencies: + luxon: 3.4.4 + dev: false + /cron@3.1.6: resolution: {integrity: sha512-cvFiQCeVzsA+QPM6fhjBtlKGij7tLLISnTSvFxVdnFGLdz+ZdXN37kNe0i2gefmdD17XuZA6n2uPVwzl4FxW/w==} dependencies: @@ -24152,9 +24583,9 @@ packages: engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + call-bind: 1.0.7 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 is-arguments: 1.1.1 is-array-buffer: 3.0.2 is-date-object: 1.0.5 @@ -24165,7 +24596,7 @@ packages: object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.5.1 - side-channel: 1.0.4 + side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.13 @@ -24219,6 +24650,14 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.1 + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -24277,6 +24716,11 @@ packages: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: false + /denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + dev: false + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -24328,7 +24772,7 @@ packages: hasBin: true dependencies: address: 1.2.2 - debug: 4.3.6 + debug: 4.4.0 transitivePeerDependencies: - supports-color dev: true @@ -24407,7 +24851,7 @@ packages: resolution: {integrity: sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ==} engines: {node: '>= 8.0'} dependencies: - debug: 4.3.6 + debug: 4.4.0 readable-stream: 3.6.2 split-ca: 1.0.1 ssh2: 1.14.0 @@ -24519,7 +24963,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /dot-prop@5.3.0: @@ -24602,6 +25046,13 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.8.7 + /ejs@3.1.9: resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} engines: {node: '>=0.10.0'} @@ -24698,6 +25149,10 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + /encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -24824,11 +25279,21 @@ packages: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: true + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + /es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -25046,7 +25511,7 @@ packages: peerDependencies: esbuild: '>=0.12 <1' dependencies: - debug: 4.3.6 + debug: 4.4.0 esbuild: 0.18.20 transitivePeerDependencies: - supports-color @@ -25455,7 +25920,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.54.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.54.0)(typescript@4.9.3) debug: 3.2.7 eslint: 8.54.0 eslint-import-resolver-node: 0.3.9 @@ -25620,7 +26085,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.54.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.54.0)(typescript@4.9.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -25992,7 +26457,7 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.22.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.22.0)(typescript@5.5.4) eslint: 8.22.0 eslint-rule-composer: 0.3.0 dev: true @@ -26573,6 +27038,44 @@ packages: transitivePeerDependencies: - supports-color + /express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -26825,7 +27328,6 @@ packages: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 - dev: true /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -26847,6 +27349,20 @@ packages: transitivePeerDependencies: - supports-color + /finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + /find-cache-dir@2.1.0: resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} engines: {node: '>=6'} @@ -27121,7 +27637,7 @@ packages: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 - qs: 6.11.2 + qs: 6.13.0 dev: true /forwarded@0.2.0: @@ -27234,7 +27750,7 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 @@ -27292,6 +27808,16 @@ packages: has-symbols: 1.0.3 hasown: 2.0.0 + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -27345,8 +27871,8 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 /get-tsconfig@4.7.2: resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} @@ -27585,7 +28111,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 /got@11.8.6: resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} @@ -27687,6 +28213,11 @@ packages: dependencies: get-intrinsic: 1.2.2 + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} @@ -27951,7 +28482,7 @@ packages: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /headers-polyfill@3.2.5: @@ -28104,7 +28635,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.6 + debug: 4.4.0 transitivePeerDependencies: - supports-color dev: true @@ -28122,7 +28653,7 @@ packages: engines: {node: '>= 6.0.0'} dependencies: agent-base: 5.1.1 - debug: 4.3.6 + debug: 4.4.0 transitivePeerDependencies: - supports-color dev: true @@ -28141,7 +28672,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.6 + debug: 4.4.0 transitivePeerDependencies: - supports-color dev: true @@ -28449,7 +28980,7 @@ packages: dependencies: get-intrinsic: 1.2.2 hasown: 2.0.0 - side-channel: 1.0.4 + side-channel: 1.0.6 /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} @@ -28471,6 +29002,23 @@ packages: dependencies: loose-envify: 1.4.0 + /ioredis@5.4.1: + resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} + engines: {node: '>=12.22.0'} + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.3.6 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: true @@ -28507,14 +29055,14 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.0 /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-typed-array: 1.1.12 /is-arrayish@0.2.1: @@ -28550,7 +29098,7 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.0 /is-buffer@2.0.5: @@ -28622,7 +29170,7 @@ packages: /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -28689,7 +29237,7 @@ packages: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 dev: true @@ -28786,7 +29334,7 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.0 /is-regexp@1.0.0: @@ -28812,7 +29360,7 @@ packages: /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -28886,13 +29434,13 @@ packages: /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 /is-what@4.1.16: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} @@ -28985,7 +29533,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.6 + debug: 4.4.0 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -29031,7 +29579,6 @@ packages: chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 - dev: true /javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} @@ -30172,7 +30719,6 @@ packages: /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: true /lodash.difference@4.5.0: resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} @@ -30193,6 +30739,10 @@ packages: resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} dev: false + /lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + dev: false + /lodash.isempty@4.4.0: resolution: {integrity: sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==} dev: false @@ -30334,7 +30884,7 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: true /lowercase-keys@2.0.0: @@ -31041,6 +31591,9 @@ packages: /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + /merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -31605,7 +32158,7 @@ packages: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.6 + debug: 4.4.0 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -31629,7 +32182,7 @@ packages: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.6 + debug: 4.4.0 decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -31727,7 +32280,6 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: true /minimatch@7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} @@ -31859,6 +32411,28 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + /msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + requiresBuild: true + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + dev: false + optional: true + + /msgpackr@1.11.0: + resolution: {integrity: sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==} + optionalDependencies: + msgpackr-extract: 3.0.3 + dev: false + /msw@1.3.2(typescript@4.9.5): resolution: {integrity: sha512-wKLhFPR+NitYTkQl5047pia0reNGgf0P6a1eTnA5aNlripmiz0sabMvvHcicE8kQ3/gZcI0YiPFWmYfowfm3lA==} engines: {node: '>=14'} @@ -32114,7 +32688,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /nock@13.3.8: @@ -32137,7 +32711,6 @@ packages: /node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - dev: true /node-addon-api@3.2.1: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} @@ -32198,6 +32771,15 @@ packages: formdata-polyfill: 4.0.10 dev: true + /node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + requiresBuild: true + dependencies: + detect-libc: 2.0.2 + dev: false + optional: true + /node-gyp-build@4.7.0: resolution: {integrity: sha512-PbZERfeFdrHQOOXiAKOY0VPbykZy90ndPKk0d+CFDegTKmWp1VgOTz2xACVbr1BjCWxrQp68CXtvNsveFhqDJg==} hasBin: true @@ -32394,7 +32976,7 @@ packages: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 dev: true @@ -32442,7 +33024,7 @@ packages: engines: {node: '>= 0.8'} dependencies: array.prototype.reduce: 1.0.6 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 safe-array-concat: 1.0.1 @@ -32769,7 +33351,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /parent-module@1.0.1: @@ -32849,7 +33431,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /passport-http@0.3.0: @@ -32888,7 +33470,7 @@ packages: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /path-exists@3.0.0: @@ -32935,6 +33517,9 @@ packages: minipass: 7.0.4 dev: true + /path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} @@ -33704,7 +34289,7 @@ packages: engines: {node: '>=8.16.0'} dependencies: '@types/mime-types': 2.1.4 - debug: 4.3.6 + debug: 4.4.0 extract-zip: 1.7.0 https-proxy-agent: 4.0.0 mime: 2.6.0 @@ -33731,7 +34316,7 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 /qs@6.11.2: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} @@ -33739,6 +34324,12 @@ packages: dependencies: side-channel: 1.0.4 + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true @@ -34159,7 +34750,7 @@ packages: '@types/react': 18.2.37 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.2.37)(react@18.2.0) - tslib: 2.6.2 + tslib: 2.6.3 /react-remove-scroll-bar@2.3.4(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} @@ -34174,7 +34765,7 @@ packages: '@types/react': 18.2.43 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.2.43)(react@18.2.0) - tslib: 2.6.2 + tslib: 2.6.3 dev: true /react-remove-scroll@2.5.4(@types/react@18.2.37)(react@18.2.0): @@ -34191,7 +34782,7 @@ packages: react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.2.37)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.37)(react@18.2.0) - tslib: 2.6.2 + tslib: 2.6.3 use-callback-ref: 1.3.0(@types/react@18.2.37)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.37)(react@18.2.0) dev: false @@ -34210,7 +34801,7 @@ packages: react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.2.37)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.37)(react@18.2.0) - tslib: 2.6.2 + tslib: 2.6.3 use-callback-ref: 1.3.0(@types/react@18.2.37)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.37)(react@18.2.0) @@ -34228,7 +34819,7 @@ packages: react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.2.43)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.43)(react@18.2.0) - tslib: 2.6.2 + tslib: 2.6.3 use-callback-ref: 1.3.0(@types/react@18.2.43)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.43)(react@18.2.0) dev: true @@ -34323,7 +34914,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 /react-style-singleton@2.2.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} @@ -34339,7 +34930,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /react-textarea-autosize@8.5.3(@types/react@18.2.37)(react@18.2.0): @@ -34384,14 +34975,14 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.2): + /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.3): resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} peerDependencies: react: '*' tslib: '*' dependencies: react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /react-use@17.5.1(react-dom@18.2.0)(react@18.2.0): @@ -34409,13 +35000,13 @@ packages: nano-css: 5.6.2(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-universal-interface: 0.6.2(react@18.2.0)(tslib@2.6.2) + react-universal-interface: 0.6.2(react@18.2.0)(tslib@2.6.3) resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 set-harmonic-interval: 1.0.1 throttle-debounce: 3.0.1 ts-easing: 0.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /react-zoom-pan-pinch@3.3.0(react-dom@18.2.0)(react@18.2.0): @@ -34514,7 +35105,7 @@ packages: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /recast@0.23.4: @@ -34525,7 +35116,7 @@ packages: ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /recharts-scale@0.4.5: @@ -34578,6 +35169,24 @@ packages: strip-indent: 3.0.0 dev: true + /redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + dev: false + + /redis-info@3.1.0: + resolution: {integrity: sha512-ER4L9Sh/vm63DkIE0bkSjxluQlioBiBgf5w1UuldaW/3vPcecdljVDisZhmnCMvsxHNiARTTDDHGg9cGwTfrKg==} + dependencies: + lodash: 4.17.21 + dev: false + + /redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + dependencies: + redis-errors: 1.2.0 + dev: false + /redux@5.0.1: resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} dev: false @@ -34589,10 +35198,10 @@ packages: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 @@ -35260,8 +35869,8 @@ packages: /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-regex: 1.1.4 /safe-stable-stringify@2.4.3: @@ -35393,11 +36002,31 @@ packages: transitivePeerDependencies: - supports-color + /send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 upper-case-first: 2.0.2 dev: true @@ -35434,6 +36063,17 @@ packages: transitivePeerDependencies: - supports-color + /serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0 + transitivePeerDependencies: + - supports-color + /server-destroy@1.0.1: resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} dev: false @@ -35453,6 +36093,17 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.1 + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} @@ -35561,6 +36212,15 @@ packages: get-intrinsic: 1.2.2 object-inspect: 1.13.1 + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true @@ -35700,7 +36360,7 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /socket.io-client@4.7.5: @@ -35918,6 +36578,10 @@ packages: stacktrace-gps: 3.1.2 dev: false + /standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + dev: false + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -36098,27 +36762,27 @@ packages: internal-slot: 1.0.6 regexp.prototype.flags: 1.5.1 set-function-name: 2.0.1 - side-channel: 1.0.4 + side-channel: 1.0.6 /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.3 @@ -36306,13 +36970,13 @@ packages: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.3.6 + debug: 4.4.0 fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 2.1.2 methods: 1.1.2 mime: 2.6.0 - qs: 6.11.2 + qs: 6.13.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -36492,7 +37156,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.4.2 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /tabbable@6.2.0: @@ -36922,7 +37586,7 @@ packages: /title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: true /titleize@3.0.0: @@ -37414,6 +38078,9 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + /tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} @@ -37438,7 +38105,7 @@ packages: bundle-require: 4.2.1(esbuild@0.17.19) cac: 6.7.14 chokidar: 3.5.3 - debug: 4.3.6 + debug: 4.4.0 esbuild: 0.17.19 execa: 5.1.1 globby: 11.1.0 @@ -37600,15 +38267,15 @@ packages: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 is-typed-array: 1.1.12 /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -37618,7 +38285,7 @@ packages: engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 @@ -37626,7 +38293,7 @@ packages: /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 is-typed-array: 1.1.12 @@ -37728,7 +38395,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -38023,13 +38690,13 @@ packages: /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: true /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: true /uri-js@4.4.1: @@ -38056,7 +38723,7 @@ packages: dependencies: '@types/react': 18.2.37 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 /use-callback-ref@1.3.0(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} @@ -38070,7 +38737,7 @@ packages: dependencies: '@types/react': 18.2.43 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /use-composed-ref@1.3.0(react@18.2.0): @@ -38160,7 +38827,7 @@ packages: '@types/react': 18.2.37 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 /use-sidecar@1.1.2(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} @@ -38175,7 +38842,7 @@ packages: '@types/react': 18.2.43 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: true /use-sync-external-store@1.2.0(react@18.2.0): @@ -38407,7 +39074,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.6 + debug: 4.4.0 mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 @@ -38431,7 +39098,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.6 + debug: 4.4.0 mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 @@ -38453,7 +39120,7 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.6 + debug: 4.4.0 mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 @@ -38763,7 +39430,7 @@ packages: debug: 4.3.6 globrex: 0.1.2 tsconfck: 3.1.4(typescript@5.5.4) - vite: 5.3.5(@types/node@20.9.2) + vite: 5.3.5(@types/node@18.17.19) transitivePeerDependencies: - supports-color - typescript @@ -39596,7 +40263,7 @@ packages: engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 diff --git a/services/workflows-service/docker-compose.redis.yml b/services/workflows-service/docker-compose.redis.yml new file mode 100644 index 0000000000..7e51b5ec37 --- /dev/null +++ b/services/workflows-service/docker-compose.redis.yml @@ -0,0 +1,22 @@ +version: '3.8' +services: + redis: + image: redis:alpine + ports: + - '${REDIS_PORT}:6379' + volumes: + - redis-data:/data + command: > + --requirepass ${REDIS_PASSWORD} + --appendonly yes + environment: + - REDIS_PASSWORD=${REDIS_PASSWORD} + - REDIS_PORT=${REDIS_PORT} + networks: + - app-network +volumes: + redis-data: + driver: local +networks: + app-network: + driver: bridge diff --git a/services/workflows-service/package.json b/services/workflows-service/package.json index 66b78fe580..2df0fac003 100644 --- a/services/workflows-service/package.json +++ b/services/workflows-service/package.json @@ -5,7 +5,7 @@ "description": "workflow-service", "scripts": { "spellcheck": "cspell \"*\"", - "setup": "npm run docker:db:down && npm run docker:db && wait-on tcp:5432 && npm run db:reset && npm run seed", + "setup": "npm run docker:db:down && npm run docker:db && wait-on tcp:5432 && npm run docker:redis:down && npm run docker:redis && npm run db:reset && npm run seed", "format": "prettier --write . '!**/*.{md,hbs}'", "format:check": "prettier --check . '!**/*.{md,hbs}'", "lint": "eslint . --fix", @@ -32,6 +32,8 @@ "db:reset:dev:with-data": "npm run db:reset:dev && npm run db:data-migration:migrate && npm run db:data-sync", "db:init": "npm run db:migrate-dev -- --name 'initial version' && npm run db:migrate-up seed", "prisma:generate": "prisma generate", + "docker:redis": "docker compose -f docker-compose.redis.yml up -d --wait", + "docker:redis:down": "docker compose -f docker-compose.redis.yml down --volumes", "docker:db": "docker compose -f docker-compose.db.yml up -d --wait", "docker:db:down": "docker compose -f docker-compose.db.yml down --volumes", "docker:build": "docker build .", @@ -53,8 +55,12 @@ "@ballerine/common": "0.9.70", "@ballerine/workflow-core": "0.6.89", "@ballerine/workflow-node-sdk": "0.6.89", + "@bull-board/api": "^6.7.1", + "@bull-board/express": "^6.7.1", + "@bull-board/nestjs": "^6.7.1", "@faker-js/faker": "^7.6.0", "@nestjs/axios": "^2.0.0", + "@nestjs/bullmq": "^10.2.1", "@nestjs/common": "^9.3.12", "@nestjs/config": "2.3.1", "@nestjs/core": "^9.3.12", @@ -81,6 +87,7 @@ "ballerine-nestjs-typebox": "3.0.2-next.11", "base64-stream": "^1.0.0", "bcrypt": "5.1.0", + "bullmq": "^5.13.2", "class-transformer": "0.5.1", "class-validator": "0.14.0", "concat-stream": "^2.0.0", diff --git a/services/workflows-service/prisma/data-migrations b/services/workflows-service/prisma/data-migrations index d8bb0a6138..38cbcd066f 160000 --- a/services/workflows-service/prisma/data-migrations +++ b/services/workflows-service/prisma/data-migrations @@ -1 +1 @@ -Subproject commit d8bb0a6138f3131679b331d1b1c8ea3786d91ef3 +Subproject commit 38cbcd066ff0af090600061a00999af959cd0e17 diff --git a/services/workflows-service/src/alert/alert.module.ts b/services/workflows-service/src/alert/alert.module.ts index f8b686c782..93506d1d8a 100644 --- a/services/workflows-service/src/alert/alert.module.ts +++ b/services/workflows-service/src/alert/alert.module.ts @@ -24,6 +24,8 @@ import { ProjectModule } from '@/project/project.module'; import { UserRepository } from '@/user/user.repository'; import { AlertDefinitionModule } from '@/alert-definition/alert-definition.module'; import { SentryModule } from '@/sentry/sentry.module'; +import { BullMqModule } from '@/bull-mq/bull-mq.module'; +import { OutgoingWebhooksModule } from '@/webhooks/outgoing-webhooks/outgoing-webhooks.module'; @Module({ imports: [ @@ -32,6 +34,8 @@ import { SentryModule } from '@/sentry/sentry.module'; PrismaModule, SentryModule, ProjectModule, + BullMqModule, + OutgoingWebhooksModule, HttpModule.register({ timeout: 5000, maxRedirects: 10, diff --git a/services/workflows-service/src/alert/webhook-manager/webhook-http.service.ts b/services/workflows-service/src/alert/webhook-manager/webhook-http.service.ts deleted file mode 100644 index 27da0af99a..0000000000 --- a/services/workflows-service/src/alert/webhook-manager/webhook-http.service.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { HttpService } from '@nestjs/axios'; -import { Injectable } from '@nestjs/common'; - -@Injectable() -export abstract class WebhookHttpService extends HttpService {} diff --git a/services/workflows-service/src/alert/webhook-manager/webhook-manager.service.ts b/services/workflows-service/src/alert/webhook-manager/webhook-manager.service.ts index c657fe69b1..eef1f961e2 100644 --- a/services/workflows-service/src/alert/webhook-manager/webhook-manager.service.ts +++ b/services/workflows-service/src/alert/webhook-manager/webhook-manager.service.ts @@ -1,18 +1,18 @@ import { alertWebhookFailure } from '@/events/alert-webhook-failure'; -import { lastValueFrom } from 'rxjs'; import * as common from '@nestjs/common'; -import { ConfigService } from '@nestjs/config'; import { ClsService } from 'nestjs-cls'; import { SentryInterceptor } from '@/sentry/sentry.interceptor'; import { AppLoggerService } from '@/common/app-logger/app-logger.service'; import { WebhookEventEmitterService } from './webhook-event-emitter.service'; import { IWebhookEntityEventData } from './types'; import { Webhook } from '@/events/get-webhooks'; -import { HttpService } from '@nestjs/axios'; -import { sign } from '@ballerine/common'; +import { AnyRecord } from '@ballerine/common'; +import { env } from '@/env'; +import { OutgoingWebhookQueueService } from '@/bull-mq/queues/outgoing-webhook-queue.service'; +import { OutgoingWebhooksService } from '@/webhooks/outgoing-webhooks/outgoing-webhooks.service'; @common.Injectable() -export abstract class WebhookHttpService extends HttpService {} +export class WebhookHttpService {} @common.Injectable() @common.UseInterceptors(SentryInterceptor) @@ -20,8 +20,8 @@ export class WebhookManagerService { constructor( private readonly cls: ClsService, protected readonly logger: AppLoggerService, - protected readonly configService: ConfigService, - protected readonly httpService: WebhookHttpService, + protected readonly outgoingQueueWebhookService: OutgoingWebhookQueueService, + protected readonly outgoingWebhookService: OutgoingWebhooksService, protected readonly webhookEventEmitter: WebhookEventEmitterService, ) { webhookEventEmitter.on('*', async (eventData: any) => { @@ -45,21 +45,34 @@ export class WebhookManagerService { webhook: Webhook; webhookSharedSecret: string; }) { - try { - const { id, url, environment, apiVersion } = webhook; + const { id, url, environment, apiVersion } = webhook; + + if (env.QUEUE_SYSTEM_ENABLED) { + return await this.outgoingQueueWebhookService.addJob({ + url, + method: 'POST', + headers: {}, + body: data as unknown as AnyRecord, + timeout: 15_000, + secret: webhookSharedSecret, + }); + } + try { this.logger.log('Sending webhook', { id, url }); - const res = await lastValueFrom( - this.httpService.post(url, data, { - headers: { - 'X-HMAC-Signature': sign({ - payload: data, - key: webhookSharedSecret, - }), - }, - }), - ); + const response = await this.outgoingWebhookService.invokeWebhook({ + url, + method: 'POST', + headers: {}, + body: data as unknown as AnyRecord, + timeout: 15_000, + secret: webhookSharedSecret, + }); + + if (response.status < 200 || response.status >= 300) { + throw new Error(`Webhook failed with status ${response.status} for ${url}`); + } } catch (error: Error | any) { this.logger.error('Webhook error data', { data, diff --git a/services/workflows-service/src/app.module.ts b/services/workflows-service/src/app.module.ts index b9966c8509..ce0a1cb2c0 100644 --- a/services/workflows-service/src/app.module.ts +++ b/services/workflows-service/src/app.module.ts @@ -39,7 +39,6 @@ import { WorkflowModule } from '@/workflow/workflow.module'; import { TransactionModule } from '@/transaction/transaction.module'; import { AlertModule } from '@/alert/alert.module'; import { SwaggerController } from './swagger/swagger.controller'; -import { WebhooksModule } from '@/webhooks/webhooks.module'; import { BusinessReportModule } from '@/business-report/business-report.module'; import { ScheduleModule } from '@nestjs/schedule'; import { CronModule } from '@/workflow/cron/cron.module'; @@ -49,6 +48,9 @@ import { RuleEngineModule } from './rule-engine/rule-engine.module'; import { NotionModule } from '@/notion/notion.module'; import { SecretsManagerModule } from '@/secrets-manager/secrets-manager.module'; import { NoteModule } from '@/note/note.module'; +import { BullMqModule } from './bull-mq/bull-mq.module'; +import { OutgoingWebhooksModule } from './webhooks/outgoing-webhooks/outgoing-webhooks.module'; +import { IncomingWebhooksModule } from './webhooks/incoming/incoming-webhooks.module'; export const validate = async (config: Record) => { const zodEnvSchema = z @@ -91,7 +93,8 @@ export const validate = async (config: Record) => { EventEmitterModule.forRoot(), UserModule, WorkflowModule, - WebhooksModule, + OutgoingWebhooksModule, + IncomingWebhooksModule, NoteModule, UiDefinitionModule, StorageModule, @@ -133,6 +136,7 @@ export const validate = async (config: Record) => { RuleEngineModule, NotionModule, SecretsManagerModule, + BullMqModule, ], providers: [ { diff --git a/services/workflows-service/src/bull-mq/bull-mq.module.ts b/services/workflows-service/src/bull-mq/bull-mq.module.ts new file mode 100644 index 0000000000..588d448dba --- /dev/null +++ b/services/workflows-service/src/bull-mq/bull-mq.module.ts @@ -0,0 +1,56 @@ +import { BullModule, RegisterQueueOptions } from '@nestjs/bullmq'; +import { Module } from '@nestjs/common'; +import { ConfigModule, ConfigService } from '@nestjs/config'; + +import { BullMQAdapter } from '@bull-board/api/bullMQAdapter'; +import { ExpressAdapter } from '@bull-board/express'; +import { BullBoardModule } from '@bull-board/nestjs'; + +import { QUEUES } from '@/bull-mq/consts'; +import { IncomingWebhookQueueService } from '@/bull-mq/queues/incoming-webhook-queue.service'; +import { OutgoingWebhookQueueService } from '@/bull-mq/queues/outgoing-webhook-queue.service'; +import { AppLoggerModule } from '@/common/app-logger/app-logger.module'; +import { OutgoingWebhooksModule } from '@/webhooks/outgoing-webhooks/outgoing-webhooks.module'; + +@Module({ + imports: [ + AppLoggerModule, + ConfigModule, + OutgoingWebhooksModule, + // Register bull & init redis connection + BullModule.forRootAsync({ + imports: [ConfigModule], + useFactory: async (configService: ConfigService) => ({ + connection: { + host: configService.get('REDIS_HOST'), + port: configService.get('REDIS_PORT'), + password: configService.get('REDIS_PASSWORD'), + }, + }), + inject: [ConfigService], + }), + // Register bull board module at /api/queues + BullBoardModule.forRoot({ + route: '/queues', + adapter: ExpressAdapter, + }), + // Register queues and pass config to bull board forFeature + ...Object.values(QUEUES).flatMap(queue => { + const queues: Array & { name: string }> = [ + { name: queue.name, ...queue.config }, + ]; + + if ('dlq' in queue) { + queues.push({ name: queue.dlq }); + } + + return queues.flatMap(queue => [ + BullModule.registerQueue(queue), + BullBoardModule.forFeature({ name: queue.name, adapter: BullMQAdapter }), + ]); + }), + ], + providers: [OutgoingWebhookQueueService, IncomingWebhookQueueService], + exports: [OutgoingWebhookQueueService, IncomingWebhookQueueService], +}) +export class BullMqModule {} diff --git a/services/workflows-service/src/bull-mq/consts.ts b/services/workflows-service/src/bull-mq/consts.ts new file mode 100644 index 0000000000..72122e2fe7 --- /dev/null +++ b/services/workflows-service/src/bull-mq/consts.ts @@ -0,0 +1,37 @@ +import { BaseJobOptions } from 'bullmq/dist/esm/interfaces'; + +export const QUEUES = { + DEFAULT: { + name: 'default', + dlq: 'default-dlq', + config: { + attempts: 15, + backoff: { + type: 'exponential', + delay: 1000, + }, + }, + }, + INCOMING_WEBHOOKS_QUEUE: { + name: 'incoming-webhook-queue', + dlq: 'incoming-webhook-queue-dlq', + config: { + attempts: 10, + backoff: { + type: 'exponential', + delay: 1000, + }, + }, + }, + OUTGOING_WEBHOOKS_QUEUE: { + name: 'outgoing-webhook-queue', + dlq: 'outgoing-webhook-queue-dlq', + config: { + attempts: 10, + backoff: { + type: 'exponential', + delay: 1000, + }, + }, + }, +} satisfies Record; diff --git a/services/workflows-service/src/bull-mq/queues/base-queue-worker.service.ts b/services/workflows-service/src/bull-mq/queues/base-queue-worker.service.ts new file mode 100644 index 0000000000..955a06bbac --- /dev/null +++ b/services/workflows-service/src/bull-mq/queues/base-queue-worker.service.ts @@ -0,0 +1,125 @@ +import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { Job, Queue, QueueListener, Worker } from 'bullmq'; +import { WorkerListener } from 'bullmq/dist/esm/classes/worker'; +import { randomUUID } from 'node:crypto'; + +import { TJobPayloadMetadata } from '@/bull-mq/types'; +import { AppLoggerService } from '@/common/app-logger/app-logger.service'; + +@Injectable() +export abstract class BaseQueueWorkerService implements OnModuleDestroy, OnModuleInit { + protected worker?: Worker; + + protected constructor( + protected readonly queue: Queue, + protected readonly deadLetterQueue: Queue, + protected readonly logger: AppLoggerService, + protected readonly configService: ConfigService, + ) { + if (!this.configService.get('QUEUE_SYSTEM_ENABLED')) { + return; + } + + this.initializeWorker(); + } + + abstract handleJob(job: Job<{ jobData: T; metadata: TJobPayloadMetadata }>): Promise; + + async addJob(jobData: T, metadata: TJobPayloadMetadata = {}, jobOptions = {}): Promise { + await this.queue?.add(randomUUID(), { metadata, jobData }, jobOptions); + } + + protected initializeWorker() { + this.worker = new Worker(this.queue.name, this.handleJob.bind(this), { + connection: { + host: this.configService.get('REDIS_HOST'), + port: this.configService.get('REDIS_PORT'), + password: this.configService.get('REDIS_PASSWORD'), + }, + }); + + this.addWorkerListeners(); + this.addQueueListeners(); + } + + protected addWorkerListeners() { + this.setWorkerListener({ + worker: this.worker, + eventName: 'active', + listener: (job: Job) => { + this.logger.log(`Webhook job ${job.id} is active`); + }, + }); + + this.setWorkerListener({ + worker: this.worker, + eventName: 'failed', + listener: async job => { + if (!job?.opts.attempts || job.attemptsMade < job.opts.attempts) return; + + this.logger.error(`Job ${job?.id} failed permanently. Moving to DLQ.`); + await this.deadLetterQueue.add(randomUUID(), job?.data); + }, + }); + } + + protected addQueueListeners() { + this.setQueueListener({ + queue: this.queue, + eventName: 'cleaned', + listener: (jobs, type) => { + this.logger.log(`${jobs.length} ${type} jobs have been cleaned from the webhook queue`); + }, + }); + } + + protected setWorkerListener({ + worker, + eventName, + listener, + }: { + worker: Worker | undefined; + eventName: T; + listener: WorkerListener[T]; + }) { + worker?.removeAllListeners(eventName); + worker?.on(eventName, listener); + } + + protected setQueueListener>({ + queue, + eventName, + listener, + }: { + queue: Queue | undefined; + eventName: T; + listener: QueueListener[T]; + }) { + queue?.removeAllListeners(eventName); + queue?.on(eventName, listener); + } + + async onModuleDestroy() { + await this.queue?.pause(); + await Promise.all([this.worker?.close(), this.queue?.close()]); + + this.logger.log(`Queue ${this.queue.name} is paused and closed`); + } + + async onModuleInit() { + if (this.queue) { + const isPaused = await this.queue.isPaused(); + + if (isPaused) { + await this.queue.resume(); + } + + const isPausedAfterResume = await this.queue?.isPaused(); + + if (isPausedAfterResume) { + this.logger.error(`Queue ${this.queue.name} is still paused after trying to resume it`); + } + } + } +} diff --git a/services/workflows-service/src/bull-mq/queues/incoming-webhook-queue.service.ts b/services/workflows-service/src/bull-mq/queues/incoming-webhook-queue.service.ts new file mode 100644 index 0000000000..215f92d446 --- /dev/null +++ b/services/workflows-service/src/bull-mq/queues/incoming-webhook-queue.service.ts @@ -0,0 +1,38 @@ +import { InjectQueue } from '@nestjs/bullmq'; +import { Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { Job, Queue } from 'bullmq'; + +import { QUEUES } from '@/bull-mq/consts'; +import { BaseQueueWorkerService } from '@/bull-mq/queues/base-queue-worker.service'; +import { TJobPayloadMetadata } from '@/bull-mq/types'; +import { AppLoggerService } from '@/common/app-logger/app-logger.service'; +// import { IncomingWebhooksService } from '@/webhooks/incoming/incoming-webhooks.service'; + +type TJobsWebhookIncoming = { jobData: IncomingWebhookData; metadata: TJobPayloadMetadata }; +interface IncomingWebhookData { + source: string; + payload: Record; + service: (payload: Record) => Promise; +} + +@Injectable() +export class IncomingWebhookQueueService extends BaseQueueWorkerService { + constructor( + @InjectQueue(QUEUES.INCOMING_WEBHOOKS_QUEUE.name) incomingQueue: Queue, + @InjectQueue(QUEUES.INCOMING_WEBHOOKS_QUEUE.dlq) incomingDLQ: Queue, + // circular dep + // protected readonly incomingWebhookService: IncomingWebhooksService, + protected readonly logger: AppLoggerService, + protected readonly config: ConfigService, + ) { + super(incomingQueue, incomingDLQ, logger, config); + } + + async handleJob(job: Job) { + this.logger.log(`Processing webhook job ${job.id}`); + + const { service: workingService, payload } = job.data.jobData; + // TODO - handle the invoking webhook job internally + } +} diff --git a/services/workflows-service/src/bull-mq/queues/outgoing-webhook-queue.service.ts b/services/workflows-service/src/bull-mq/queues/outgoing-webhook-queue.service.ts new file mode 100644 index 0000000000..52aab9c28f --- /dev/null +++ b/services/workflows-service/src/bull-mq/queues/outgoing-webhook-queue.service.ts @@ -0,0 +1,30 @@ +import { InjectQueue } from '@nestjs/bullmq'; +import { Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import { Job, Queue } from 'bullmq'; + +import { QUEUES } from '@/bull-mq/consts'; +import { BaseQueueWorkerService } from '@/bull-mq/queues/base-queue-worker.service'; +import { TJobPayloadMetadata } from '@/bull-mq/types'; +import { AppLoggerService } from '@/common/app-logger/app-logger.service'; +import { OutgoingWebhooksService } from '@/webhooks/outgoing-webhooks/outgoing-webhooks.service'; + +type WebhookJobData = Parameters[0]; +type TJobArgs = { jobData: WebhookJobData; metadata: TJobPayloadMetadata }; + +@Injectable() +export class OutgoingWebhookQueueService extends BaseQueueWorkerService { + constructor( + @InjectQueue(QUEUES.OUTGOING_WEBHOOKS_QUEUE.name) outgoingQueue: Queue, + @InjectQueue(QUEUES.OUTGOING_WEBHOOKS_QUEUE.dlq) outgoingDLQ: Queue, + protected readonly outgoingWebhookService: OutgoingWebhooksService, + protected readonly logger: AppLoggerService, + protected readonly config: ConfigService, + ) { + super(outgoingQueue, outgoingDLQ, logger, config); + } + + async handleJob(job: Job) { + await this.outgoingWebhookService.invokeWebhook(job.data.jobData); + } +} diff --git a/services/workflows-service/src/bull-mq/types.ts b/services/workflows-service/src/bull-mq/types.ts new file mode 100644 index 0000000000..270288df14 --- /dev/null +++ b/services/workflows-service/src/bull-mq/types.ts @@ -0,0 +1,4 @@ +export type TJobPayloadMetadata = { + projectId?: string; + customerName?: string; +}; diff --git a/services/workflows-service/src/env.ts b/services/workflows-service/src/env.ts index 2ae6264b8a..b26b72524b 100644 --- a/services/workflows-service/src/env.ts +++ b/services/workflows-service/src/env.ts @@ -93,6 +93,13 @@ export const serverEnvSchema = { IN_MEMORIES_SECRET_ACQUIRER_ID: z.string().optional(), IN_MEMORIES_SECRET_PRIVATE_KEY: z.string().optional(), IN_MEMORIES_SECRET_CONSUMER_KEY: z.string().optional(), + REDIS_HOST: z.string(), + REDIS_PASSWORD: z.string().optional(), + REDIS_PORT: z.string().transform(value => Number(value)), + QUEUE_SYSTEM_ENABLED: z + .string() + .transform(value => value === 'true') + .default('false'), }; if (!process.env['ENVIRONMENT_NAME'] || process.env['ENVIRONMENT_NAME'] === 'local') { diff --git a/services/workflows-service/src/events/document-changed-webhook-caller.ts b/services/workflows-service/src/events/document-changed-webhook-caller.ts index 59dbbb62e2..e0697a1f87 100644 --- a/services/workflows-service/src/events/document-changed-webhook-caller.ts +++ b/services/workflows-service/src/events/document-changed-webhook-caller.ts @@ -6,13 +6,16 @@ import { Injectable } from '@nestjs/common'; import { HttpService } from '@nestjs/axios'; import { AxiosInstance } from 'axios'; import { AppLoggerService } from '@/common/app-logger/app-logger.service'; -import { DefaultContextSchema, getDocumentId, sign } from '@ballerine/common'; +import { DefaultContextSchema, getDocumentId } from '@ballerine/common'; import { alertWebhookFailure } from '@/events/alert-webhook-failure'; import { ExtractWorkflowEventData } from '@/workflow/types'; import { getWebhooks, Webhook } from '@/events/get-webhooks'; import { ConfigService } from '@nestjs/config'; import type { TAuthenticationConfiguration } from '@/customer/types'; import { CustomerService } from '@/customer/customer.service'; +import { env } from '@/env'; +import { OutgoingWebhookQueueService } from '@/bull-mq/queues/outgoing-webhook-queue.service'; +import { OutgoingWebhooksService } from '@/webhooks/outgoing-webhooks/outgoing-webhooks.service'; const getExtensionFromMimeType = (mimeType: string) => { const parts = mimeType?.split('/'); @@ -34,6 +37,8 @@ export class DocumentChangedWebhookCaller { workflowEventEmitter: WorkflowEventEmitterService, private readonly logger: AppLoggerService, private readonly customerService: CustomerService, + private readonly outgoingWebhookQueueService: OutgoingWebhookQueueService, + private readonly outgoingWebhookService: OutgoingWebhooksService, ) { this.#__axios = this.httpService.axiosRef; @@ -174,38 +179,45 @@ export class DocumentChangedWebhookCaller { }) { this.logger.log('Sending webhook', { id, url }); - try { - const payload = { - id, - eventName: 'workflow.context.document.changed', - apiVersion, - timestamp: new Date().toISOString(), - assignee: data.assignee - ? { - id: data.assignee.id, - firstName: data.assignee.firstName, - lastName: data.assignee.lastName, - email: data.assignee.email, - } - : null, - assignedAt: data.assignedAt, - workflowCreatedAt: data.updatedRuntimeData.createdAt, - workflowResolvedAt: data.updatedRuntimeData.resolvedAt, - workflowDefinitionId: data.updatedRuntimeData.workflowDefinitionId, - workflowRuntimeId: data.updatedRuntimeData.id, - ballerineEntityId: data.entityId, - correlationId: data.correlationId, - environment, - data: data.updatedRuntimeData.context, - }; - - const res = await this.#__axios.post(url, payload, { - headers: { - 'X-Authorization': webhookSharedSecret, - 'X-HMAC-Signature': sign({ payload, key: webhookSharedSecret }), - }, - }); + const payload = { + id, + eventName: 'workflow.context.document.changed', + apiVersion, + timestamp: new Date().toISOString(), + assignee: data.assignee + ? { + id: data.assignee.id, + firstName: data.assignee.firstName, + lastName: data.assignee.lastName, + email: data.assignee.email, + } + : null, + assignedAt: data.assignedAt, + workflowCreatedAt: data.updatedRuntimeData.createdAt, + workflowResolvedAt: data.updatedRuntimeData.resolvedAt, + workflowDefinitionId: data.updatedRuntimeData.workflowDefinitionId, + workflowRuntimeId: data.updatedRuntimeData.id, + ballerineEntityId: data.entityId, + correlationId: data.correlationId, + environment, + data: data.updatedRuntimeData.context, + }; + + const webhookArgs = { + url, + method: 'POST', + headers: {}, + body: payload, + timeout: 15_000, + secret: webhookSharedSecret, + } as const; + + if (env.QUEUE_SYSTEM_ENABLED) { + return await this.outgoingWebhookQueueService.addJob(webhookArgs); + } + try { + const res = await this.outgoingWebhookService.invokeWebhook(webhookArgs); this.logger.log('Webhook Result:', { status: res.status, statusText: res.statusText, diff --git a/services/workflows-service/src/events/workflow-completed-webhook-caller.ts b/services/workflows-service/src/events/workflow-completed-webhook-caller.ts index c0c926b485..4a3291967f 100644 --- a/services/workflows-service/src/events/workflow-completed-webhook-caller.ts +++ b/services/workflows-service/src/events/workflow-completed-webhook-caller.ts @@ -13,6 +13,8 @@ import { sign, StateTag } from '@ballerine/common'; import type { TAuthenticationConfiguration } from '@/customer/types'; import { CustomerService } from '@/customer/customer.service'; import { WorkflowRuntimeDataRepository } from '@/workflow/workflow-runtime-data.repository'; +import { env } from '@/env'; +import { OutgoingWebhookQueueService } from '@/bull-mq/queues/outgoing-webhook-queue.service'; @Injectable() export class WorkflowCompletedWebhookCaller { @@ -26,6 +28,7 @@ export class WorkflowCompletedWebhookCaller { private readonly workflowService: WorkflowService, private readonly customerService: CustomerService, private readonly workflowRuntimeDataRepository: WorkflowRuntimeDataRepository, + private readonly outgoingWebhookQueueService: OutgoingWebhookQueueService, ) { this.#__axios = this.httpService.axiosRef; @@ -103,6 +106,47 @@ export class WorkflowCompletedWebhookCaller { }) { this.logger.log('Sending webhook', { id, url }); + // Omit from data properties already sent as part of the webhook payload + const { runtimeData, correlationId, entityId, ...restData } = data; + const { + createdAt, + resolvedAt, + workflowDefinitionId, + id: runtimeDataId, + ...restRuntimeData + } = runtimeData; + const payload = { + id, + eventName: 'workflow.completed', + apiVersion, + timestamp: new Date().toISOString(), + workflowCreatedAt: createdAt, + workflowResolvedAt: resolvedAt, + workflowDefinitionId, + workflowRuntimeId: runtimeDataId, + workflowStatus: data.runtimeData.status, + workflowFinalState: data.runtimeData.state, + ballerineEntityId: entityId, + correlationId, + environment, + data: { + ...restRuntimeData.context, + }, + }; + + const webhookArgs = { + url, + method: 'POST', + headers: {}, + body: payload, + timeout: 15_000, + secret: webhookSharedSecret, + } as const; + + if (env.QUEUE_SYSTEM_ENABLED) { + return await this.outgoingWebhookQueueService.addJob(webhookArgs); + } + try { // Omit from data properties already sent as part of the webhook payload const { runtimeData, correlationId, entityId, childWorkflowsRuntimeData, ...restData } = data; @@ -133,6 +177,17 @@ export class WorkflowCompletedWebhookCaller { }, }; + if (env.QUEUE_SYSTEM_ENABLED) { + return await this.outgoingWebhookQueueService.addJob({ + url, + method: 'POST', + headers: {}, + body: payload, + timeout: 15_000, + secret: webhookSharedSecret, + }); + } + const res = await this.#__axios.post(url, payload, { headers: { 'X-Authorization': webhookSharedSecret, diff --git a/services/workflows-service/src/events/workflow-state-changed-webhook-caller.ts b/services/workflows-service/src/events/workflow-state-changed-webhook-caller.ts index 372d53fa44..57d0214502 100644 --- a/services/workflows-service/src/events/workflow-state-changed-webhook-caller.ts +++ b/services/workflows-service/src/events/workflow-state-changed-webhook-caller.ts @@ -9,7 +9,9 @@ import { ExtractWorkflowEventData } from '@/workflow/types'; import { getWebhooks, Webhook } from '@/events/get-webhooks'; import { CustomerService } from '@/customer/customer.service'; import type { TAuthenticationConfiguration } from '@/customer/types'; -import { sign } from '@ballerine/common'; +import { env } from '@/env'; +import { OutgoingWebhookQueueService } from '@/bull-mq/queues/outgoing-webhook-queue.service'; +import { OutgoingWebhooksService } from '@/webhooks/outgoing-webhooks/outgoing-webhooks.service'; @Injectable() export class WorkflowStateChangedWebhookCaller { @@ -21,6 +23,8 @@ export class WorkflowStateChangedWebhookCaller { private configService: ConfigService, private readonly logger: AppLoggerService, private readonly customerService: CustomerService, + private readonly outgoingWebhookQueueService: OutgoingWebhookQueueService, + private readonly outgoingWebhookService: OutgoingWebhooksService, ) { this.#__axios = this.httpService.axiosRef; @@ -91,13 +95,21 @@ export class WorkflowStateChangedWebhookCaller { data: data.runtimeData.context, }; + const webhookArgs = { + url, + method: 'POST', + headers: {}, + body: payload, + timeout: 15_000, + secret: webhookSharedSecret, + } as const; + + if (env.QUEUE_SYSTEM_ENABLED) { + return await this.outgoingWebhookQueueService.addJob(webhookArgs); + } + try { - const res = await this.#__axios.post(url, payload, { - headers: { - 'X-Authorization': webhookSharedSecret, - 'X-HMAC-Signature': sign({ payload, key: webhookSharedSecret }), - }, - }); + const res = await this.outgoingWebhookService.invokeWebhook(webhookArgs); this.logger.log('Webhook Result:', { status: res.status, diff --git a/services/workflows-service/src/webhooks/webhooks.controller.ts b/services/workflows-service/src/webhooks/incoming/incoming-webhooks.controller.ts similarity index 85% rename from services/workflows-service/src/webhooks/webhooks.controller.ts rename to services/workflows-service/src/webhooks/incoming/incoming-webhooks.controller.ts index 6585e07fef..0b51e62525 100644 --- a/services/workflows-service/src/webhooks/webhooks.controller.ts +++ b/services/workflows-service/src/webhooks/incoming/incoming-webhooks.controller.ts @@ -1,12 +1,12 @@ import * as common from '@nestjs/common'; +import { BadRequestException } from '@nestjs/common'; import * as swagger from '@nestjs/swagger'; -import * as errors from '../errors'; +import * as errors from '../../errors'; import { Public } from '@/common/decorators/public.decorator'; -import { AmlWebhookInput } from './dtos/aml-webhook-input'; +import { AmlWebhookInput } from '../dtos/aml-webhook-input'; import { IndividualAmlWebhookInput } from '@/webhooks/dtos/individual-aml-webhook-input'; -import { WebhooksService } from '@/webhooks/webhooks.service'; +import { IncomingWebhooksService } from '@/webhooks/incoming/incoming-webhooks.service'; import { VerifyUnifiedApiSignatureDecorator } from '@/common/decorators/verify-unified-api-signature.decorator'; -import { BadRequestException } from '@nestjs/common'; import { isObject } from '@ballerine/common'; import { AppLoggerService } from '@/common/app-logger/app-logger.service'; @@ -19,9 +19,9 @@ const EntityType = { @swagger.ApiTags('Internal Webhooks') @swagger.ApiExcludeController() @common.Controller('webhooks') -export class WebhooksController { +export class IncomingWebhooksController { constructor( - private readonly webhooksService: WebhooksService, + private readonly webhooksService: IncomingWebhooksService, private readonly logger: AppLoggerService, ) {} diff --git a/services/workflows-service/src/webhooks/webhooks.module.ts b/services/workflows-service/src/webhooks/incoming/incoming-webhooks.module.ts similarity index 90% rename from services/workflows-service/src/webhooks/webhooks.module.ts rename to services/workflows-service/src/webhooks/incoming/incoming-webhooks.module.ts index 5d9973a62f..d25788295f 100644 --- a/services/workflows-service/src/webhooks/webhooks.module.ts +++ b/services/workflows-service/src/webhooks/incoming/incoming-webhooks.module.ts @@ -26,8 +26,7 @@ import { FileRepository } from '@/storage/storage.repository'; import { HookCallbackHandlerService } from '@/workflow/hook-callback-handler.service'; import { FilterService } from '@/filter/filter.service'; import { FilterRepository } from '@/filter/filter.repository'; -import { WebhooksController } from '@/webhooks/webhooks.controller'; -import { WebhooksService } from '@/webhooks/webhooks.service'; +import { IncomingWebhooksService } from '@/webhooks/incoming/incoming-webhooks.service'; import { BusinessService } from '@/business/business.service'; import { BusinessReportModule } from '@/business-report/business-report.module'; import { AlertModule } from '@/alert/alert.module'; @@ -36,9 +35,10 @@ import { AlertDefinitionModule } from '@/alert-definition/alert-definition.modul import { RuleEngineModule } from '@/rule-engine/rule-engine.module'; import { SentryService } from '@/sentry/sentry.service'; import { WorkflowModule } from '@/workflow/workflow.module'; +import { IncomingWebhooksController } from '@/webhooks/incoming/incoming-webhooks.controller'; @Module({ - controllers: [WebhooksController], + controllers: [IncomingWebhooksController], imports: [ ACLModule, forwardRef(() => AuthModule), @@ -76,9 +76,9 @@ import { WorkflowModule } from '@/workflow/workflow.module'; HookCallbackHandlerService, FilterService, FilterRepository, - WebhooksService, + IncomingWebhooksService, SentryService, ], - exports: [], + exports: [IncomingWebhooksService], }) -export class WebhooksModule {} +export class IncomingWebhooksModule {} diff --git a/services/workflows-service/src/webhooks/webhooks.service.ts b/services/workflows-service/src/webhooks/incoming/incoming-webhooks.service.ts similarity index 98% rename from services/workflows-service/src/webhooks/webhooks.service.ts rename to services/workflows-service/src/webhooks/incoming/incoming-webhooks.service.ts index 5597b59239..3213ae9346 100644 --- a/services/workflows-service/src/webhooks/webhooks.service.ts +++ b/services/workflows-service/src/webhooks/incoming/incoming-webhooks.service.ts @@ -8,7 +8,7 @@ import { AppLoggerService } from '@/common/app-logger/app-logger.service'; import { EndUserService } from '@/end-user/end-user.service'; @Injectable() -export class WebhooksService { +export class IncomingWebhooksService { constructor( private readonly customerService: CustomerService, private readonly workflowService: WorkflowService, diff --git a/services/workflows-service/src/webhooks/outgoing-webhooks/outgoing-webhooks.module.ts b/services/workflows-service/src/webhooks/outgoing-webhooks/outgoing-webhooks.module.ts new file mode 100644 index 0000000000..90ecdac2bf --- /dev/null +++ b/services/workflows-service/src/webhooks/outgoing-webhooks/outgoing-webhooks.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common'; +import { AppLoggerModule } from '@/common/app-logger/app-logger.module'; +import { OutgoingWebhooksService } from '@/webhooks/outgoing-webhooks/outgoing-webhooks.service'; + +@Module({ + imports: [AppLoggerModule], + providers: [OutgoingWebhooksService], + exports: [OutgoingWebhooksService], +}) +export class OutgoingWebhooksModule {} diff --git a/services/workflows-service/src/webhooks/outgoing-webhooks/outgoing-webhooks.service.ts b/services/workflows-service/src/webhooks/outgoing-webhooks/outgoing-webhooks.service.ts new file mode 100644 index 0000000000..e0c52eea24 --- /dev/null +++ b/services/workflows-service/src/webhooks/outgoing-webhooks/outgoing-webhooks.service.ts @@ -0,0 +1,47 @@ +import { AnyRecord, sign } from '@ballerine/common'; +import { Injectable } from '@nestjs/common'; +import axios, { Method, RawAxiosRequestHeaders } from 'axios'; + +import { AppLoggerService } from '@/common/app-logger/app-logger.service'; + +type WebhookInvocationConfig = { + url: string; + method: Method; + headers?: Partial; + body?: AnyRecord | string; + timeout?: number; + secret?: string; +}; + +@Injectable() +export class OutgoingWebhooksService { + constructor(private readonly logger: AppLoggerService) {} + + async invokeWebhook({ + url, + method, + headers: argsHeaders, + body, + timeout, + secret, + }: WebhookInvocationConfig) { + const headers: RawAxiosRequestHeaders = { + Accept: 'application/json', + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + ...argsHeaders, + }; + + if (body && secret) { + headers['X-HMAC-Signature'] = sign({ payload: body, key: secret }); + } + + return axios({ + url, + method, + headers, + data: body, + timeout: timeout ?? 15000, + }); + } +} diff --git a/services/workflows-service/src/workflow/workflow.module.ts b/services/workflows-service/src/workflow/workflow.module.ts index 3e47acdd98..c8d13f546e 100644 --- a/services/workflows-service/src/workflow/workflow.module.ts +++ b/services/workflows-service/src/workflow/workflow.module.ts @@ -46,6 +46,8 @@ import { BusinessReportService } from '@/business-report/business-report.service import { RuleEngineModule } from '@/rule-engine/rule-engine.module'; import { SentryService } from '@/sentry/sentry.service'; import { SecretsManagerModule } from '@/secrets-manager/secrets-manager.module'; +import { BullMqModule } from '@/bull-mq/bull-mq.module'; +import { OutgoingWebhooksModule } from '@/webhooks/outgoing-webhooks/outgoing-webhooks.module'; @Module({ controllers: [WorkflowControllerExternal, WorkflowControllerInternal], @@ -63,6 +65,8 @@ import { SecretsManagerModule } from '@/secrets-manager/secrets-manager.module'; AlertDefinitionModule, RuleEngineModule, SecretsManagerModule, + OutgoingWebhooksModule, + BullMqModule, ], providers: [ WorkflowDefinitionRepository, diff --git a/services/workflows-service/src/workflow/workflow.service.unit.test.ts b/services/workflows-service/src/workflow/workflow.service.unit.test.ts index 17b19e3914..4763af2265 100644 --- a/services/workflows-service/src/workflow/workflow.service.unit.test.ts +++ b/services/workflows-service/src/workflow/workflow.service.unit.test.ts @@ -182,6 +182,8 @@ describe('WorkflowService', () => { eventEmitter as unknown as any, testingModule.get(AppLoggerService), customerService, + {} as any, + {} as any, ); service = new WorkflowService(