diff --git a/README.md b/README.md index 4c351782b..3bb80a753 100644 --- a/README.md +++ b/README.md @@ -128,15 +128,14 @@ module.exports = (async () => { ``` ```js -// Version with promises +// Version with native promises // webpack.config.js const webpack = require('webpack') const slsw = require('serverless-webpack'); -const BbPromise = require('bluebird'); -module.exports = BbPromise.try(() => { - return slsw.lib.serverless.providers.aws.getAccountId() +module.exports = Promise.resolve() + .then(() => slsw.lib.serverless.providers.aws.getAccountId()) .then(accountId => ({ entry: './handler.js', target: 'node', @@ -149,7 +148,6 @@ module.exports = BbPromise.try(() => { loaders: [ ... ] } })); -}); ``` ### serverless-webpack lib export helper diff --git a/__mocks__/fs.js b/__mocks__/fs.js index 9ce9ab5b2..2bec0940f 100644 --- a/__mocks__/fs.js +++ b/__mocks__/fs.js @@ -7,7 +7,8 @@ const streamMock = { }; const statMock = { - isDirectory: jest.fn() + isDirectory: jest.fn(), + mode: 0o644 }; const actual = jest.requireActual('fs'); @@ -15,7 +16,9 @@ const actual = jest.requireActual('fs'); module.exports = { ...actual, createWriteStream: jest.fn().mockReturnValue(streamMock), + readFile: jest.fn((_path, callback) => callback(null, Buffer.from('mock file'))), readFileSync: jest.fn(), + stat: jest.fn((_path, callback) => callback(null, statMock)), statSync: jest.fn().mockReturnValue(statMock), writeFileSync: jest.fn(), copyFileSync: jest.fn(), diff --git a/biome.jsonc b/biome.jsonc index 6d8f0c84e..d2e259082 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.4.5/schema.json", + "$schema": "https://biomejs.dev/schemas/2.4.12/schema.json", "vcs": { "enabled": true, "clientKind": "git", diff --git a/index.js b/index.js index 126b15081..c63baafd3 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,3 @@ -const BbPromise = require('bluebird'); const _ = require('lodash'); const validate = require('./lib/validate'); @@ -150,13 +149,13 @@ class ServerlessWebpack { } }, 'before:package:createDeploymentArtifacts': () => - BbPromise.bind(this) + Promise.resolve() .then(() => this.serverless.pluginManager.spawn('webpack:validate')) - .then(() => (this.skipCompile ? BbPromise.resolve() : this.serverless.pluginManager.spawn('webpack:compile'))) + .then(() => (this.skipCompile ? undefined : this.serverless.pluginManager.spawn('webpack:compile'))) .then(() => this.serverless.pluginManager.spawn('webpack:package')) .then(() => this.log && this.progress.get('webpack').remove()), - 'after:package:createDeploymentArtifacts': () => BbPromise.bind(this).then(this.cleanup), + 'after:package:createDeploymentArtifacts': () => Promise.resolve().then(() => this.cleanup()), 'before:deploy:function:packageFunction': () => { const runtime = @@ -165,7 +164,7 @@ class ServerlessWebpack { 'nodejs'; if (isNodeRuntime(runtime)) { - return BbPromise.bind(this) + return Promise.resolve() .then(() => this.serverless.pluginManager.spawn('webpack:validate')) .then(() => this.serverless.pluginManager.spawn('webpack:compile')) .then(() => this.serverless.pluginManager.spawn('webpack:package')); @@ -173,41 +172,39 @@ class ServerlessWebpack { }, 'before:invoke:local:invoke': () => - BbPromise.bind(this) + Promise.resolve() .then(() => { lib.webpack.isLocal = true; return this.serverless.pluginManager.spawn('webpack:validate'); }) - .then(() => (this.skipCompile ? BbPromise.resolve() : this.serverless.pluginManager.spawn('webpack:compile'))) - .then(this.prepareLocalInvoke), + .then(() => (this.skipCompile ? undefined : this.serverless.pluginManager.spawn('webpack:compile'))) + .then(() => this.prepareLocalInvoke()), 'after:invoke:local:invoke': () => - BbPromise.bind(this).then(() => { + Promise.resolve().then(() => { if (this.options.watch && !this.isWatching) { return this.watch('invoke:local'); } - return BbPromise.resolve(); }), 'before:run:run': () => - BbPromise.bind(this) + Promise.resolve() .then(() => _.set(this.serverless, 'service.package.individually', false)) .then(() => this.serverless.pluginManager.spawn('webpack:validate')) .then(() => this.serverless.pluginManager.spawn('webpack:compile')) - .then(this.packExternalModules) - .then(this.prepareRun), + .then(() => this.packExternalModules()) + .then(() => this.prepareRun()), 'after:run:run': () => - BbPromise.bind(this).then(() => { + Promise.resolve().then(() => { if (this.options.watch && !this.isWatching) { return this.watch(this.watchRun.bind(this)); } - return BbPromise.resolve(); }), 'webpack:webpack': () => - BbPromise.bind(this) + Promise.resolve() .then(() => this.serverless.pluginManager.spawn('webpack:validate')) .then(() => this.serverless.pluginManager.spawn('webpack:compile')) .then(() => this.serverless.pluginManager.spawn('webpack:package')), @@ -215,48 +212,48 @@ class ServerlessWebpack { /* * Internal webpack events (can be hooked by plugins) */ - 'webpack:validate:validate': () => BbPromise.bind(this).then(this.validate), + 'webpack:validate:validate': () => Promise.resolve().then(() => this.validate()), - 'webpack:compile:compile': () => BbPromise.bind(this).then(this.compile), + 'webpack:compile:compile': () => Promise.resolve().then(() => this.compile()), - 'webpack:compile:watch:compile': () => BbPromise.resolve(), + 'webpack:compile:watch:compile': () => Promise.resolve(), - 'webpack:package:packExternalModules': () => BbPromise.bind(this).then(this.packExternalModules), + 'webpack:package:packExternalModules': () => Promise.resolve().then(() => this.packExternalModules()), - 'webpack:package:packageModules': () => BbPromise.bind(this).then(this.packageModules), + 'webpack:package:packageModules': () => Promise.resolve().then(() => this.packageModules()), - 'webpack:package:copyExistingArtifacts': () => BbPromise.bind(this).then(this.copyExistingArtifacts), + 'webpack:package:copyExistingArtifacts': () => Promise.resolve().then(() => this.copyExistingArtifacts()), 'before:offline:start': () => - BbPromise.bind(this) - .tap(() => { + Promise.resolve() + .then(() => { lib.webpack.isLocal = true; // --skip-build override if (this.options['skip-build'] === false) { this.skipCompile = true; } }) - .then(this.prepareOfflineInvoke) - .then(() => (this.skipCompile ? BbPromise.resolve() : this.wpwatch())), + .then(() => this.prepareOfflineInvoke()) + .then(() => (this.skipCompile ? undefined : this.wpwatch())), 'before:offline:start:init': () => - BbPromise.bind(this) - .tap(() => { + Promise.resolve() + .then(() => { lib.webpack.isLocal = true; // --skip-build override if (this.options['skip-build'] === false) { this.skipCompile = true; } }) - .then(this.prepareOfflineInvoke) - .then(() => (this.skipCompile ? BbPromise.resolve() : this.wpwatch())), + .then(() => this.prepareOfflineInvoke()) + .then(() => (this.skipCompile ? undefined : this.wpwatch())), 'before:step-functions-offline:start': () => - BbPromise.bind(this) - .tap(() => { + Promise.resolve() + .then(() => { lib.webpack.isLocal = true; }) - .then(this.prepareStepOfflineInvoke) + .then(() => this.prepareStepOfflineInvoke()) .then(() => this.serverless.pluginManager.spawn('webpack:compile')) }; } diff --git a/lib/cleanup.js b/lib/cleanup.js index bce556045..688a558fd 100644 --- a/lib/cleanup.js +++ b/lib/cleanup.js @@ -1,5 +1,4 @@ const _ = require('lodash'); -const BbPromise = require('bluebird'); const fse = require('fs-extra'); module.exports = { @@ -40,6 +39,6 @@ module.exports = { } } - return BbPromise.resolve(); + return Promise.resolve(); } }; diff --git a/lib/compile.js b/lib/compile.js index 32de5e633..ebbe17f3f 100644 --- a/lib/compile.js +++ b/lib/compile.js @@ -1,5 +1,4 @@ const _ = require('lodash'); -const BbPromise = require('bluebird'); const webpack = require('webpack'); const { isBuiltin } = require('node:module'); const logStats = require('./logStats'); @@ -104,61 +103,84 @@ function getExternalModules({ compilation }) { return Array.from(externals); } -function webpackCompile(config, logStats) { - return BbPromise.fromCallback(cb => webpack(config).run(cb)).then(stats => { - // ensure stats in any array in the case of concurrent build. - stats = stats.stats ? stats.stats : [stats]; +async function webpackCompile(config, logStats) { + let stats = await new Promise((resolve, reject) => { + webpack(config).run((error, result) => { + if (error) { + reject(error); + return; + } + resolve(result); + }); + }); - _.forEach(stats, logStats); + // ensure stats in any array in the case of concurrent build. + stats = stats.stats ? stats.stats : [stats]; - return _.map(stats, compileStats => ({ - outputPath: compileStats.compilation.compiler.outputPath, - externalModules: getExternalModules(compileStats) - })); - }); + _.forEach(stats, logStats); + + return _.map(stats, compileStats => ({ + outputPath: compileStats.compilation.compiler.outputPath, + externalModules: getExternalModules(compileStats) + })); +} + +async function mapWithConcurrency(items, concurrency, iteratee) { + const results = new Array(items.length); + let currentIndex = 0; + + async function worker() { + while (currentIndex < items.length) { + const index = currentIndex; + currentIndex += 1; + results[index] = await iteratee(items[index], index); + } + } + + const workerCount = Math.min(concurrency, items.length); + await Promise.all(Array.from({ length: workerCount }, () => worker())); + return results; } -function webpackConcurrentCompile(configs, logStats, concurrency, ServerlessError) { +async function webpackConcurrentCompile(configs, logStats, concurrency, ServerlessError) { const errors = []; - return BbPromise.map( - configs, - config => { - if (isIndividialPackaging.call(this) && _.get(config, 'cache.type') === 'filesystem') { - const clonedConfig = _.clone(config); - const entryFunc = _.find(this.entryFunctions, ['entry.key', _.keys(config.entry)[0]]); - clonedConfig.cache.name = entryFunc.func.name; - return webpackCompile(clonedConfig, logStats, ServerlessError).catch(error => { - errors.push(error); - return error.stats; - }); - } - return webpackCompile(config, logStats, ServerlessError).catch(error => { + + const stats = await mapWithConcurrency(configs, concurrency, async config => { + if (isIndividialPackaging.call(this) && _.get(config, 'cache.type') === 'filesystem') { + const clonedConfig = _.clone(config); + const entryFunc = _.find(this.entryFunctions, ['entry.key', _.keys(config.entry)[0]]); + clonedConfig.cache.name = entryFunc.func.name; + return webpackCompile(clonedConfig, logStats, ServerlessError).catch(error => { errors.push(error); return error.stats; }); - }, - { concurrency } - ).then(stats => { - if (errors.length) { - if (!this.log) { - if (errors.length === 1) { - throw errors[0]; - } - throw new ServerlessError('Webpack compilation errors, see stats above'); - } - throw new ServerlessError( - `Webpack compilation failed:\n\n${_.join( - _.map(errors, error => error.message), - '\n\n' - )}` - ); } - return _.flatten(stats); + return webpackCompile(config, logStats, ServerlessError).catch(error => { + errors.push(error); + return error.stats; + }); }); + + if (errors.length) { + if (!this.log) { + if (errors.length === 1) { + throw errors[0]; + } + throw new ServerlessError('Webpack compilation errors, see stats above'); + } + throw new ServerlessError( + `Webpack compilation failed:\n\n${_.join( + _.map(errors, error => error.message), + '\n\n' + )}` + ); + } + + return _.flatten(stats); } module.exports = { - compile() { + async compile() { if (this.log) { this.log.verbose('[Webpack] Building with Webpack'); this.progress.get('webpack').update('[Webpack] Building with Webpack'); @@ -168,7 +190,7 @@ module.exports = { const configs = ensureArray(this.webpackConfig); if (configs[0] === undefined) { - return BbPromise.reject('Unable to find Webpack configuration'); + throw new this.serverless.classes.Error('Unable to find Webpack configuration'); } const logStats = getStatsLogger(configs[0].stats, this.serverless.cli.consoleLog, { @@ -177,20 +199,21 @@ module.exports = { }); if (!this.configuration) { - return BbPromise.reject(new this.serverless.classes.Error('Missing plugin configuration')); + throw new this.serverless.classes.Error('Missing plugin configuration'); } const concurrency = this.configuration.concurrency; - return webpackConcurrentCompile - .call(this, configs, logStats, concurrency, this.serverless.classes.Error) - .then(stats => { - this.compileStats = { stats }; - - if (this.log) { - this.progress.get('webpack').remove(); - } + const stats = await webpackConcurrentCompile.call( + this, + configs, + logStats, + concurrency, + this.serverless.classes.Error + ); + this.compileStats = { stats }; - return BbPromise.resolve(); - }); + if (this.log) { + this.progress.get('webpack').remove(); + } } }; diff --git a/lib/packExternalModules.js b/lib/packExternalModules.js index e19d8388b..4ae8287c0 100644 --- a/lib/packExternalModules.js +++ b/lib/packExternalModules.js @@ -1,4 +1,3 @@ -const BbPromise = require('bluebird'); const _ = require('lodash'); const path = require('node:path'); const fse = require('fs-extra'); @@ -7,6 +6,49 @@ const findWorkspaceRoot = require('find-yarn-workspace-root'); const Packagers = require('./packagers'); const { isProviderGoogle } = require('./utils'); +function callWithOptionalCallback(fn, ...args) { + return new Promise((resolve, reject) => { + let settled = false; + + const callback = (error, result) => { + settled = true; + if (error) { + reject(error); + return; + } + resolve(result); + }; + + let result; + try { + result = fn(...args, callback); + } catch (error) { + reject(error); + return; + } + + if (result && typeof result.then === 'function') { + result.then( + value => { + if (!settled) { + resolve(value); + } + }, + error => { + if (!settled) { + reject(error); + } + } + ); + return; + } + + if (!settled && result !== undefined) { + resolve(result); + } + }); +} + function rebaseFileReferences(pathToPackageRoot, moduleVersion) { if (/^(?:file:[^/]{2}|\.\/|\.\.\/)/.test(moduleVersion)) { const filePath = _.replace(moduleVersion, /^file:/, ''); @@ -159,7 +201,7 @@ function getProdModules(externalModules, packagePath, nodeModulesRelativeDir, de } } } else { - if (!packageJson.devDependencies || !packageJson.devDependencies[module.external]) { + if (!packageJson.devDependencies?.[module.external]) { // Add transient dependencies if they appear not in the service's dev dependencies const originInfo = _.get(dependencyGraph, 'dependencies', {})[module.origin] || {}; moduleVersion = _.get(_.get(originInfo, 'dependencies', {})[module.external], 'version'); @@ -223,9 +265,9 @@ module.exports = { * This will utilize the npm cache at its best and give us the needed results * and performance. */ - packExternalModules() { + async packExternalModules() { if (this.skipCompile) { - return BbPromise.resolve(); + return; } const stats = this.compileStats; @@ -233,7 +275,7 @@ module.exports = { const includes = this.configuration.includeModules; if (!includes) { - return BbPromise.resolve(); + return; } if (this.log) { this.log.verbose('Packing external modules'); @@ -256,257 +298,226 @@ module.exports = { ); // Determine and create packager - return BbPromise.try(() => Packagers.get.call(this, this.configuration.packager)).then(packager => { - // Fetch needed original package.json sections - const sectionNames = packager.copyPackageSectionNames(this.configuration.packagerOptions); - const packageJson = this.serverless.utils.readFileSync(packageJsonPath); - const packageSections = _.pick(packageJson, sectionNames); - if (!_.isEmpty(packageSections)) { + const packager = Packagers.get.call(this, this.configuration.packager); + + // Fetch needed original package.json sections + const sectionNames = packager.copyPackageSectionNames(this.configuration.packagerOptions); + const packageJson = this.serverless.utils.readFileSync(packageJsonPath); + const packageSections = _.pick(packageJson, sectionNames); + if (!_.isEmpty(packageSections)) { + if (this.log) { + this.log.verbose(`Using package.json sections ${_.join(_.keys(packageSections), ', ')}`); + } else { + this.options.verbose && + this.serverless.cli.log(`Using package.json sections ${_.join(_.keys(packageSections), ', ')}`); + } + } + + // Get first level dependency graph + if (this.log) { + this.log.verbose(`Fetch dependency graph from ${packageJsonPath}`); + } else { + this.options.verbose && this.serverless.cli.log(`Fetch dependency graph from ${packageJsonPath}`); + } + + const dependencyGraph = await packager.getProdDependencies( + path.dirname(packageJsonPath), + 1, + this.configuration.packagerOptions + ); + const problems = _.get(dependencyGraph, 'problems', []); + if (this.options.verbose && !_.isEmpty(problems)) { + if (this.log) { + this.log.verbose(`Ignoring ${_.size(problems)} NPM errors:`); + } else { + this.serverless.cli.log(`Ignoring ${_.size(problems)} NPM errors:`); + } + _.forEach(problems, problem => { if (this.log) { - this.log.verbose(`Using package.json sections ${_.join(_.keys(packageSections), ', ')}`); + this.log.verbose(`=> ${problem}`); } else { - this.options.verbose && - this.serverless.cli.log(`Using package.json sections ${_.join(_.keys(packageSections), ', ')}`); + this.serverless.cli.log(`=> ${problem}`); } + }); + } + + // (1) Generate dependency composition + const compositeModules = _.uniq( + _.flatMap(stats.stats, compileStats => { + const externalModules = _.concat( + compileStats.externalModules, + _.map(packageForceIncludes, whitelistedPackage => ({ + external: whitelistedPackage + })) + ); + return getProdModules.call( + this, + externalModules, + packagePath, + nodeModulesRelativeDir, + dependencyGraph, + packageForceExcludes + ); + }) + ); + removeExcludedModules.call(this, compositeModules, packageForceExcludes, true); + + if (_.isEmpty(compositeModules)) { + // The compiled code does not reference any external modules at all + if (this.log) { + this.log('No external modules needed'); + } else { + this.serverless.cli.log('No external modules needed'); } + return; + } - // Get first level dependency graph + // (1.a) Install all needed modules + const compositeModulePath = path.join(this.webpackOutputPath, 'dependencies'); + const compositePackageJson = path.join(compositeModulePath, 'package.json'); + + // (1.a.1) Create a package.json + const compositePackage = _.defaults( + { + name: this.serverless.service.service, + version: '1.0.0', + description: `Packaged externals for ${this.serverless.service.service}`, + private: true, + scripts: packageScripts + }, + packageSections + ); + const relPath = path.relative(compositeModulePath, path.dirname(packageJsonPath)); + addModulesToPackageJson(compositeModules, compositePackage, relPath); + this.serverless.utils.writeFileSync(compositePackageJson, JSON.stringify(compositePackage, null, 2)); + + // (1.a.2) Copy package-lock.json if it exists, to prevent unwanted upgrades + const packagerOptions = this.configuration.packagerOptions || {}; + const packageLockPath = path.join( + findWorkspaceRoot(path.dirname(packageJsonPath)) || path.dirname(packageJsonPath), + packagerOptions.lockFile || packager.lockfileName + ); + let hasPackageLock = false; + const exists = await callWithOptionalCallback(fse.pathExists, packageLockPath); + if (exists) { if (this.log) { - this.log.verbose(`Fetch dependency graph from ${packageJsonPath}`); + this.log('Package lock found - Using locked versions'); } else { - this.options.verbose && this.serverless.cli.log(`Fetch dependency graph from ${packageJsonPath}`); + this.serverless.cli.log('Package lock found - Using locked versions'); } + try { + let packageLockFile = this.serverless.utils.readFileSync(packageLockPath); + packageLockFile = packager.rebaseLockfile(relPath, packageLockFile); + if (_.isObject(packageLockFile)) { + packageLockFile = JSON.stringify(packageLockFile, null, 2); + } - return packager - .getProdDependencies(path.dirname(packageJsonPath), 1, this.configuration.packagerOptions) - .then(dependencyGraph => { - const problems = _.get(dependencyGraph, 'problems', []); - if (this.options.verbose && !_.isEmpty(problems)) { - if (this.log) { - this.log.verbose(`Ignoring ${_.size(problems)} NPM errors:`); - } else { - this.serverless.cli.log(`Ignoring ${_.size(problems)} NPM errors:`); - } - _.forEach(problems, problem => { - if (this.log) { - this.log.verbose(`=> ${problem}`); - } else { - this.serverless.cli.log(`=> ${problem}`); - } - }); - } + this.serverless.utils.writeFileSync(path.join(compositeModulePath, packager.lockfileName), packageLockFile); + hasPackageLock = true; + } catch (err) { + if (this.log) { + this.log.warning(`Could not read lock file: ${err.message}`); + } else { + this.serverless.cli.log(`Warning: Could not read lock file: ${err.message}`); + } + } + } - // (1) Generate dependency composition - const compositeModules = _.uniq( - _.flatMap(stats.stats, compileStats => { - const externalModules = _.concat( - compileStats.externalModules, - _.map(packageForceIncludes, whitelistedPackage => ({ - external: whitelistedPackage - })) - ); - return getProdModules.call( - this, - externalModules, - packagePath, - nodeModulesRelativeDir, - dependencyGraph, - packageForceExcludes - ); - }) - ); - removeExcludedModules.call(this, compositeModules, packageForceExcludes, true); - - if (_.isEmpty(compositeModules)) { - // The compiled code does not reference any external modules at all - if (this.log) { - this.log('No external modules needed'); - } else { - this.serverless.cli.log('No external modules needed'); - } - return BbPromise.resolve(); - } + const start = _.now(); + if (this.log) { + this.log(`Packing external modules: ${compositeModules.join(', ')}`); + } else { + this.serverless.cli.log(`Packing external modules: ${compositeModules.join(', ')}`); + } - // (1.a) Install all needed modules - const compositeModulePath = path.join(this.webpackOutputPath, 'dependencies'); - const compositePackageJson = path.join(compositeModulePath, 'package.json'); - - // (1.a.1) Create a package.json - const compositePackage = _.defaults( - { - name: this.serverless.service.service, - version: '1.0.0', - description: `Packaged externals for ${this.serverless.service.service}`, - private: true, - scripts: packageScripts - }, - packageSections - ); - const relPath = path.relative(compositeModulePath, path.dirname(packageJsonPath)); - addModulesToPackageJson(compositeModules, compositePackage, relPath); - this.serverless.utils.writeFileSync(compositePackageJson, JSON.stringify(compositePackage, null, 2)); - - // (1.a.2) Copy package-lock.json if it exists, to prevent unwanted upgrades - const packagerOptions = this.configuration.packagerOptions || {}; - const packageLockPath = path.join( - findWorkspaceRoot(path.dirname(packageJsonPath)) || path.dirname(packageJsonPath), - packagerOptions.lockFile || packager.lockfileName - ); - let hasPackageLock = false; - return BbPromise.fromCallback(cb => fse.pathExists(packageLockPath, cb)) - .then(exists => { - if (exists) { - if (this.log) { - this.log('Package lock found - Using locked versions'); - } else { - this.serverless.cli.log('Package lock found - Using locked versions'); - } - try { - let packageLockFile = this.serverless.utils.readFileSync(packageLockPath); - packageLockFile = packager.rebaseLockfile(relPath, packageLockFile); - if (_.isObject(packageLockFile)) { - packageLockFile = JSON.stringify(packageLockFile, null, 2); - } - - this.serverless.utils.writeFileSync( - path.join(compositeModulePath, packager.lockfileName), - packageLockFile - ); - hasPackageLock = true; - } catch (err) { - if (this.log) { - this.log.warning(`Could not read lock file: ${err.message}`); - } else { - this.serverless.cli.log(`Warning: Could not read lock file: ${err.message}`); - } - } - } - return BbPromise.resolve(); - }) - .then(() => { - const start = _.now(); - if (this.log) { - this.log(`Packing external modules: ${compositeModules.join(', ')}`); - } else { - this.serverless.cli.log(`Packing external modules: ${compositeModules.join(', ')}`); - } + const compositePackagerVersion = await packager.getPackagerVersion(compositeModulePath); + await packager.install(compositeModulePath, this.configuration.packagerOptions, compositePackagerVersion); + if (this.log) { + this.log.verbose(`Package took [${_.now() - start} ms]`); + } else { + this.options.verbose && this.serverless.cli.log(`Package took [${_.now() - start} ms]`); + } - return packager.getPackagerVersion(compositeModulePath).then(version => { - return packager - .install(compositeModulePath, this.configuration.packagerOptions, version) - .then(() => { - if (this.log) { - this.log.verbose(`Package took [${_.now() - start} ms]`); - } else { - this.options.verbose && this.serverless.cli.log(`Package took [${_.now() - start} ms]`); - } - return null; - }) - .return(stats.stats); - }); - }) - .mapSeries(compileStats => { - const modulePath = compileStats.outputPath; - - // Create package.json - const modulePackageJson = path.join(modulePath, 'package.json'); - const modulePackage = _.defaults( - { - name: this.serverless.service.service, - version: '1.0.0', - description: `Packaged externals for ${this.serverless.service.service}`, - private: true, - scripts: packageScripts, - dependencies: {} - }, - packageSections - ); - const prodModules = getProdModules.call( - this, - _.concat( - compileStats.externalModules, - _.map(packageForceIncludes, whitelistedPackage => ({ - external: whitelistedPackage - })) - ), - packagePath, - nodeModulesRelativeDir, - dependencyGraph, - packageForceExcludes - ); - removeExcludedModules.call(this, prodModules, packageForceExcludes); - const relPath = path.relative(modulePath, path.dirname(packageJsonPath)); - addModulesToPackageJson(prodModules, modulePackage, relPath); - this.serverless.utils.writeFileSync(modulePackageJson, JSON.stringify(modulePackage, null, 2)); - - // GOOGLE: Copy modules only if not google-cloud-functions - // GCF Auto installs the package json - if (isProviderGoogle(this.serverless)) { - return BbPromise.resolve(); - } + for (const compileStats of stats.stats) { + const modulePath = compileStats.outputPath; + + // Create package.json + const modulePackageJson = path.join(modulePath, 'package.json'); + const modulePackage = _.defaults( + { + name: this.serverless.service.service, + version: '1.0.0', + description: `Packaged externals for ${this.serverless.service.service}`, + private: true, + scripts: packageScripts, + dependencies: {} + }, + packageSections + ); + const prodModules = getProdModules.call( + this, + _.concat( + compileStats.externalModules, + _.map(packageForceIncludes, whitelistedPackage => ({ + external: whitelistedPackage + })) + ), + packagePath, + nodeModulesRelativeDir, + dependencyGraph, + packageForceExcludes + ); + removeExcludedModules.call(this, prodModules, packageForceExcludes); + const moduleRelPath = path.relative(modulePath, path.dirname(packageJsonPath)); + addModulesToPackageJson(prodModules, modulePackage, moduleRelPath); + this.serverless.utils.writeFileSync(modulePackageJson, JSON.stringify(modulePackage, null, 2)); + + // GOOGLE: Copy modules only if not google-cloud-functions + // GCF Auto installs the package json + if (isProviderGoogle(this.serverless)) { + continue; + } - const startCopy = _.now(); - return BbPromise.try(() => { - // Only copy dependency modules if demanded by packager - if (packager.mustCopyModules) { - return BbPromise.fromCallback(callback => - fse.copy( - path.join(compositeModulePath, 'node_modules'), - path.join(modulePath, 'node_modules'), - callback - ) - ); - } - return BbPromise.resolve(); - }) - .then(() => - hasPackageLock - ? BbPromise.fromCallback(callback => - fse.copy( - path.join(compositeModulePath, packager.lockfileName), - path.join(modulePath, packager.lockfileName), - callback - ) - ) - : BbPromise.resolve() - ) - .tap(() => { - if (this.log) { - this.log.verbose(`Copy modules: ${modulePath} [${_.now() - startCopy} ms]`); - } else { - this.options.verbose && - this.serverless.cli.log(`Copy modules: ${modulePath} [${_.now() - startCopy} ms]`); - } - }) - .then(() => { - // Prune extraneous packages - removes not needed ones - const startPrune = _.now(); - return packager.getPackagerVersion(modulePath).then(version => { - return packager.prune(modulePath, this.configuration.packagerOptions, version).tap(() => { - if (this.log) { - this.log.verbose(`Prune: ${modulePath} [${_.now() - startPrune} ms]`); - } else { - this.options.verbose && - this.serverless.cli.log(`Prune: ${modulePath} [${_.now() - startPrune} ms]`); - } - }); - }); - }) - .then(() => { - // Prune extraneous packages - removes not needed ones - const startRunScripts = _.now(); - return packager.runScripts(modulePath, _.keys(packageScripts)).tap(() => { - if (this.log) { - this.log.verbose(`Run scripts: ${modulePath} [${_.now() - startRunScripts} ms]`); - } else { - this.options.verbose && - this.serverless.cli.log(`Run scripts: ${modulePath} [${_.now() - startRunScripts} ms]`); - } - }); - }); - }) - .return(); - }); - }); + const startCopy = _.now(); + // Only copy dependency modules if demanded by packager + if (packager.mustCopyModules) { + await callWithOptionalCallback( + fse.copy, + path.join(compositeModulePath, 'node_modules'), + path.join(modulePath, 'node_modules') + ); + } + if (hasPackageLock) { + await callWithOptionalCallback( + fse.copy, + path.join(compositeModulePath, packager.lockfileName), + path.join(modulePath, packager.lockfileName) + ); + } + if (this.log) { + this.log.verbose(`Copy modules: ${modulePath} [${_.now() - startCopy} ms]`); + } else { + this.options.verbose && this.serverless.cli.log(`Copy modules: ${modulePath} [${_.now() - startCopy} ms]`); + } + + // Prune extraneous packages - removes not needed ones + const startPrune = _.now(); + const modulePackagerVersion = await packager.getPackagerVersion(modulePath); + await packager.prune(modulePath, this.configuration.packagerOptions, modulePackagerVersion); + if (this.log) { + this.log.verbose(`Prune: ${modulePath} [${_.now() - startPrune} ms]`); + } else { + this.options.verbose && this.serverless.cli.log(`Prune: ${modulePath} [${_.now() - startPrune} ms]`); + } + + // Run package scripts after prune + const startRunScripts = _.now(); + await packager.runScripts(modulePath, _.keys(packageScripts)); + if (this.log) { + this.log.verbose(`Run scripts: ${modulePath} [${_.now() - startRunScripts} ms]`); + } else { + this.options.verbose && this.serverless.cli.log(`Run scripts: ${modulePath} [${_.now() - startRunScripts} ms]`); + } + } } }; diff --git a/lib/packageModules.js b/lib/packageModules.js index 83ffb09e0..97f6152ff 100644 --- a/lib/packageModules.js +++ b/lib/packageModules.js @@ -1,14 +1,14 @@ -const BbPromise = require('bluebird'); const _ = require('lodash'); const path = require('node:path'); const glob = require('glob'); const archiver = require('archiver'); const semver = require('semver'); const fs = require('node:fs'); +const { promisify } = require('node:util'); const { getAllNodeFunctions, isProviderGoogle } = require('./utils'); -const readFileAsync = BbPromise.promisify(fs.readFile); -const statAsync = BbPromise.promisify(fs.stat); +const readFileAsync = promisify(fs.readFile); +const statAsync = promisify(fs.stat); function setArtifactPath(funcName, func, artifactPath) { const version = this.serverless.getVersion(); @@ -44,39 +44,42 @@ function serverlessZip(args) { const zip = archiver.create('zip'); const output = fs.createWriteStream(artifactFilePath); - return new BbPromise((resolve, reject) => { + return new Promise((resolve, reject) => { output.on('close', () => resolve(artifactFilePath)); - output.on('error', err => reject(err)); - zip.on('error', err => reject(err)); - - output.on('open', () => { - zip.pipe(output); - - // normalize both maps to avoid problems with e.g. Path Separators in different shells - const normalizedFiles = _.uniq(_.map(files, file => path.normalize(file))); - - BbPromise.all(_.map(normalizedFiles, file => getFileContentAndStat.call(this, directory, file))) - .then(contents => { - _.forEach( - contents.sort((content1, content2) => content1.filePath.localeCompare(content2.filePath)), - file => { - const name = file.filePath; - // Ensure file is executable if it is locally executable or - // we force it to be executable if platform is windows - const mode = file.stat.mode & 0o100 || process.platform === 'win32' ? 0o755 : 0o644; - zip.append(file.data, { - name, - mode, - // necessary to get the same hash when zipping the same content - // as well as `contents.sort` few lines above - date: new Date(0) - }); - } - ); - - return zip.finalize(); - }) - .catch(reject); + output.on('error', reject); + zip.on('error', reject); + + output.on('open', async () => { + try { + zip.pipe(output); + + // normalize both maps to avoid problems with e.g. Path Separators in different shells + const normalizedFiles = _.uniq(_.map(files, file => path.normalize(file))); + const contents = await Promise.all( + _.map(normalizedFiles, file => getFileContentAndStat.call(this, directory, file)) + ); + + _.forEach( + contents.sort((content1, content2) => content1.filePath.localeCompare(content2.filePath)), + file => { + const name = file.filePath; + // Ensure file is executable if it is locally executable or + // we force it to be executable if platform is windows + const mode = file.stat.mode & 0o100 || process.platform === 'win32' ? 0o755 : 0o644; + zip.append(file.data, { + name, + mode, + // necessary to get the same hash when zipping the same content + // as well as `contents.sort` few lines above + date: new Date(0) + }); + } + ); + + zip.finalize(); + } catch (error) { + reject(error); + } }); }); } @@ -86,29 +89,30 @@ function serverlessZip(args) { * * @see https://github.com/serverless/serverless/blob/63d54e1537e10ae63c171892edd886f6b81e83f6/lib/plugins/package/lib/zipService.js#L112 */ -function getFileContentAndStat(directory, filePath) { +async function getFileContentAndStat(directory, filePath) { const fullPath = `${directory}/${filePath}`; - return BbPromise.all([ - // Get file contents and stat in parallel - readFileAsync(fullPath), - statAsync(fullPath) - ]).then( - result => ({ - data: result[0], - stat: result[1], + try { + const [data, stat] = await Promise.all([ + // Get file contents and stat in parallel + readFileAsync(fullPath), + statAsync(fullPath) + ]); + + return { + data, + stat, filePath - }), - error => { - throw new this.serverless.classes.Error( - `Cannot read file ${filePath} due to: ${error.message}`, - 'CANNOT_READ_FILE' - ); - } - ); + }; + } catch (error) { + throw new this.serverless.classes.Error( + `Cannot read file ${filePath} due to: ${error.message}`, + 'CANNOT_READ_FILE' + ); + } } -function zip(directory, zipFileName) { +async function zip(directory, zipFileName) { // Check that files exist to be zipped let files = glob.sync('**', { cwd: directory, @@ -134,9 +138,7 @@ function zip(directory, zipFileName) { } if (_.isEmpty(files)) { - const error = new this.serverless.classes.Error('Packaging: No files found'); - - return BbPromise.reject(error); + throw new this.serverless.classes.Error('Packaging: No files found'); } // Create artifact in temp path and move it to the package path (if any) later @@ -182,9 +184,9 @@ function getArtifactName(entryFunction) { } module.exports = { - packageModules() { + async packageModules() { if (this.skipCompile) { - return BbPromise.resolve(); + return; } if (this.log) { this.log.verbose('[Webpack] Packaging modules'); @@ -192,29 +194,33 @@ module.exports = { } const stats = this.compileStats; + const zippedArtifacts = []; - return BbPromise.mapSeries(stats.stats, (compileStats, index) => { + for (const [index, compileStats] of stats.stats.entries()) { const entryFunction = _.get(this.entryFunctions, index, {}); const filename = getArtifactName.call(this, entryFunction); const modulePath = compileStats.outputPath; const startZip = _.now(); - return zip.call(this, modulePath, filename).tap(() => { - if (this.log) { - this.log.verbose( + const artifactPath = await zip.call(this, modulePath, filename); + zippedArtifacts.push(artifactPath); + + if (this.log) { + this.log.verbose( + `Zip ${_.isEmpty(entryFunction) ? 'service' : 'function'}: ${modulePath} [${_.now() - startZip} ms]` + ); + } else { + this.options.verbose && + this.serverless.cli.log( `Zip ${_.isEmpty(entryFunction) ? 'service' : 'function'}: ${modulePath} [${_.now() - startZip} ms]` ); - } else { - this.options.verbose && - this.serverless.cli.log( - `Zip ${_.isEmpty(entryFunction) ? 'service' : 'function'}: ${modulePath} [${_.now() - startZip} ms]` - ); - } - }); - }); + } + } + + return zippedArtifacts; }, - copyExistingArtifacts() { + async copyExistingArtifacts() { if (this.log) { this.log.verbose('[Webpack] Copying existing artifacts'); this.progress.get('webpack').notice('[Webpack] Copying existing artifacts'); @@ -259,7 +265,5 @@ module.exports = { const { serverlessArtifact } = getArtifactLocations.call(this, archiveName); setServiceArtifactPath.call(this, serverlessArtifact); } - - return BbPromise.resolve(); } }; diff --git a/lib/packagers/index.js b/lib/packagers/index.js index 9291a1547..e77296418 100644 --- a/lib/packagers/index.js +++ b/lib/packagers/index.js @@ -8,12 +8,12 @@ * static get lockfileName(): string; * static get mustCopyModules(): boolean; * static copyPackageSectionNames(packagerOptions: Object): Array; - * static getPackagerVersion(cwd: string): BbPromise - * static getProdDependencies(cwd: string, depth: number = 1): BbPromise; + * static getPackagerVersion(cwd: string): Promise + * static getProdDependencies(cwd: string, depth: number = 1): Promise; * static rebaseLockfile(pathToPackageRoot: string, lockfile: Object): void; - * static install(cwd: string): BbPromise; - * static prune(cwd: string): BbPromise; - * static runScripts(cwd: string, scriptNames): BbPromise; + * static install(cwd: string): Promise; + * static prune(cwd: string): Promise; + * static runScripts(cwd: string, scriptNames): Promise; * * } */ @@ -31,7 +31,7 @@ const registeredPackagers = { * Factory method. * @this ServerlessWebpack - Active plugin instance * @param {string} packagerId - Well known packager id. - * @returns {BbPromise} - Promised packager to allow packagers be created asynchronously. + * @returns {Packager} - Selected packager implementation. */ module.exports.get = function (packagerId) { if (!_.has(registeredPackagers, packagerId)) { diff --git a/lib/packagers/npm.js b/lib/packagers/npm.js index a1faf7dce..04770f37b 100644 --- a/lib/packagers/npm.js +++ b/lib/packagers/npm.js @@ -3,7 +3,6 @@ */ const _ = require('lodash'); -const BbPromise = require('bluebird'); const Utils = require('../utils'); const { join } = require('node:path'); const fse = require('fs-extra'); @@ -23,25 +22,26 @@ class NPM { return options.copyPackageSectionNames || []; } - static getPackagerVersion(cwd) { + static async getPackagerVersion(cwd) { const command = /^win/.test(process.platform) ? 'npm.cmd' : 'npm'; const args = ['-v']; - return Utils.spawnProcess(command, args, { cwd }) - .catch(err => { - return BbPromise.resolve({ stdout: err.stdout }); - }) - .then(processOutput => processOutput.stdout); + try { + const processOutput = await Utils.spawnProcess(command, args, { cwd }); + return processOutput.stdout; + } catch (err) { + return err.stdout; + } } - static getProdDependencies(cwd, depth, packagerOptions) { + static async getProdDependencies(cwd, depth, packagerOptions) { // Try to use NPM lockfile v2 when possible const options = packagerOptions || {}; const lockPath = join(cwd, options.lockFile || NPM.lockfileName); if (fse.pathExistsSync(lockPath)) { - const lock = Utils.safeJsonParse(fs.readFileSync(lockPath)); - if (lock.lockfileVersion === 2) { - return BbPromise.resolve(lock); + const lock = Utils.safeJsonParse(fs.readFileSync(lockPath, 'utf8')); + if (lock && lock.lockfileVersion === 2) { + return lock; } } @@ -61,41 +61,47 @@ class NPM { { npmError: 'peer dep missing', log: true } ]; - return Utils.spawnProcess(command, args, { - cwd: cwd - }) - .catch(err => { - if (err instanceof Utils.SpawnError) { - // Only exit with an error if we have critical npm errors for 2nd level inside - // ignoring any extra output from npm >= 7 - const lines = _.split(err.stderr, '\n'); - const errors = _.takeWhile(lines, line => line !== '{'); - const failed = _.reduce( - errors, - (failed, error) => { - if (failed) { - return true; - } - return ( - !_.isEmpty(error) && - !_.some(ignoredNpmErrors, ignoredError => _.startsWith(error, `npm ERR! ${ignoredError.npmError}`)) - ); - }, - false - ); - - if (!failed && !_.isEmpty(err.stdout)) { - return BbPromise.resolve({ stdout: err.stdout }); - } + let depJson; + + try { + const processOutput = await Utils.spawnProcess(command, args, { + cwd: cwd + }); + depJson = processOutput.stdout; + } catch (err) { + if (err instanceof Utils.SpawnError) { + // Only exit with an error if we have critical npm errors for 2nd level inside + // ignoring any extra output from npm >= 7 + const lines = _.split(err.stderr, '\n'); + const errors = _.takeWhile(lines, line => line !== '{'); + const failed = _.reduce( + errors, + (hasFailed, error) => { + if (hasFailed) { + return true; + } + return ( + !_.isEmpty(error) && + !_.some(ignoredNpmErrors, ignoredError => _.startsWith(error, `npm ERR! ${ignoredError.npmError}`)) + ); + }, + false + ); + + if (!failed && !_.isEmpty(err.stdout)) { + depJson = err.stdout; + } else { if (process.env.SLS_DEBUG) { console.error(`DEBUG: ${err.stdout}\nSTDERR: ${err.stderr}`); } + throw err; } + } else { + throw err; + } + } - return BbPromise.reject(err); - }) - .then(processOutput => processOutput.stdout) - .then(depJson => BbPromise.try(() => JSON.parse(depJson))); + return JSON.parse(depJson); } static _rebaseFileReferences(pathToPackageRoot, moduleVersion) { @@ -128,9 +134,9 @@ class NPM { return lockfile; } - static install(cwd, packagerOptions) { + static async install(cwd, packagerOptions) { if (packagerOptions.noInstall) { - return BbPromise.resolve(); + return; } const command = /^win/.test(process.platform) ? 'npm.cmd' : 'npm'; @@ -140,23 +146,22 @@ class NPM { args.push('--ignore-scripts'); } - return Utils.spawnProcess(command, args, { cwd }).return(); + await Utils.spawnProcess(command, args, { cwd }); } - static prune(cwd) { + static async prune(cwd) { const command = /^win/.test(process.platform) ? 'npm.cmd' : 'npm'; const args = ['prune']; - return Utils.spawnProcess(command, args, { cwd }).return(); + await Utils.spawnProcess(command, args, { cwd }); } - static runScripts(cwd, scriptNames) { + static async runScripts(cwd, scriptNames) { const command = /^win/.test(process.platform) ? 'npm.cmd' : 'npm'; - return BbPromise.mapSeries(scriptNames, scriptName => { + for (const scriptName of scriptNames) { const args = ['run', scriptName]; - - return Utils.spawnProcess(command, args, { cwd }); - }).return(); + await Utils.spawnProcess(command, args, { cwd }); + } } } diff --git a/lib/packagers/yarn.js b/lib/packagers/yarn.js index 0c791d056..6ebb259d3 100644 --- a/lib/packagers/yarn.js +++ b/lib/packagers/yarn.js @@ -10,7 +10,6 @@ */ const _ = require('lodash'); -const BbPromise = require('bluebird'); const Utils = require('../utils'); const findWorkspaceRoot = require('find-yarn-workspace-root'); @@ -34,90 +33,91 @@ class Yarn { return mainVersion > 1; } - static getPackagerVersion(cwd) { + static async getPackagerVersion(cwd) { const command = /^win/.test(process.platform) ? 'yarn.cmd' : 'yarn'; const args = ['-v']; - return Utils.spawnProcess(command, args, { cwd }) - .catch(err => { - return BbPromise.resolve({ stdout: err.stdout }); - }) - .then(processOutput => processOutput.stdout); + try { + const processOutput = await Utils.spawnProcess(command, args, { cwd }); + return processOutput.stdout; + } catch (err) { + return err.stdout; + } } - static getProdDependencies(cwd, depth) { + static async getProdDependencies(cwd, depth) { const command = /^win/.test(process.platform) ? 'yarn.cmd' : 'yarn'; const args = ['list', `--depth=${depth || 1}`, '--json', '--production']; // If we need to ignore some errors add them here const ignoredYarnErrors = []; - return Utils.spawnProcess(command, args, { - cwd: findWorkspaceRoot(cwd) || cwd - }) - .catch(err => { - if (err instanceof Utils.SpawnError) { - // Only exit with an error if we have critical npm errors for 2nd level inside - const errors = _.split(err.stderr, '\n'); - const failed = _.reduce( - errors, - (failed, error) => { - if (failed) { - return true; - } - return ( - !_.isEmpty(error) && - !_.some(ignoredYarnErrors, ignoredError => _.startsWith(error, `npm ERR! ${ignoredError.npmError}`)) - ); - }, - false - ); - - if (!failed && !_.isEmpty(err.stdout)) { - return BbPromise.resolve({ stdout: err.stdout }); - } + let stdout; + + try { + const processOutput = await Utils.spawnProcess(command, args, { + cwd: findWorkspaceRoot(cwd) || cwd + }); + stdout = processOutput.stdout; + } catch (err) { + if (err instanceof Utils.SpawnError) { + // Only exit with an error if we have critical npm errors for 2nd level inside + const errors = _.split(err.stderr, '\n'); + const failed = _.reduce( + errors, + (hasFailed, error) => { + if (hasFailed) { + return true; + } + return ( + !_.isEmpty(error) && + !_.some(ignoredYarnErrors, ignoredError => _.startsWith(error, `npm ERR! ${ignoredError.npmError}`)) + ); + }, + false + ); + + if (!failed && !_.isEmpty(err.stdout)) { + stdout = err.stdout; + } else { if (process.env.SLS_DEBUG) { console.error(`DEBUG: ${err.stdout}\nSTDERR: ${err.stderr}`); } + throw err; } + } else { + throw err; + } + } - return BbPromise.reject(err); - }) - .then(processOutput => processOutput.stdout) - .then(stdout => - BbPromise.try(() => { - const lines = Utils.splitLines(stdout); - const parsedLines = _.map(lines, Utils.safeJsonParse); - return _.find(parsedLines, line => line && line.type === 'tree'); - }) - ) - .then(parsedTree => { - const convertTrees = trees => - _.reduce( - trees, - (__, tree) => { - const splitModule = _.split(tree.name, '@'); - // If we have a scoped module we have to re-add the @ - if (_.startsWith(tree.name, '@')) { - splitModule.splice(0, 1); - splitModule[0] = `@${splitModule[0]}`; - } - __[_.first(splitModule)] = { - version: _.join(_.tail(splitModule), '@'), - dependencies: convertTrees(tree.children) - }; - return __; - }, - {} - ); - - const trees = _.get(parsedTree, 'data.trees', []); - const result = { - problems: [], - dependencies: convertTrees(trees) - }; - return result; - }); + const lines = Utils.splitLines(stdout); + const parsedLines = _.map(lines, Utils.safeJsonParse); + const parsedTree = _.find(parsedLines, line => line && line.type === 'tree'); + + const convertTrees = trees => + _.reduce( + trees, + (__, tree) => { + const splitModule = _.split(tree.name, '@'); + // If we have a scoped module we have to re-add the @ + if (_.startsWith(tree.name, '@')) { + splitModule.splice(0, 1); + splitModule[0] = `@${splitModule[0]}`; + } + __[_.first(splitModule)] = { + version: _.join(_.tail(splitModule), '@'), + dependencies: convertTrees(tree.children) + }; + return __; + }, + {} + ); + + const trees = _.get(parsedTree, 'data.trees', []); + return { + problems: [], + dependencies: convertTrees(trees) + }; } static rebaseLockfile(pathToPackageRoot, lockfile) { @@ -137,9 +137,9 @@ class Yarn { return _.reduce(replacements, (__, replacement) => _.replace(__, replacement.oldRef, replacement.newRef), lockfile); } - static install(cwd, packagerOptions, version) { + static async install(cwd, packagerOptions, version) { if (packagerOptions.noInstall) { - return BbPromise.resolve(); + return; } const isBerry = Yarn.isBerryVersion(version); @@ -163,7 +163,7 @@ class Yarn { args.push(`--network-concurrency ${packagerOptions.networkConcurrency}`); } - return Utils.spawnProcess(command, args, { cwd }).return(); + await Utils.spawnProcess(command, args, { cwd }); } // "Yarn install" prunes automatically @@ -171,13 +171,12 @@ class Yarn { return Yarn.install(cwd, packagerOptions, version); } - static runScripts(cwd, scriptNames) { + static async runScripts(cwd, scriptNames) { const command = /^win/.test(process.platform) ? 'yarn.cmd' : 'yarn'; - return BbPromise.mapSeries(scriptNames, scriptName => { + for (const scriptName of scriptNames) { const args = ['run', scriptName]; - - return Utils.spawnProcess(command, args, { cwd }); - }).return(); + await Utils.spawnProcess(command, args, { cwd }); + } } } diff --git a/lib/run.js b/lib/run.js index 11c61ce90..0aaef924f 100644 --- a/lib/run.js +++ b/lib/run.js @@ -1,5 +1,4 @@ const _ = require('lodash'); -const BbPromise = require('bluebird'); const webpack = require('webpack'); module.exports = { @@ -34,14 +33,16 @@ module.exports = { } } - return new BbPromise((_resolve, reject) => { + return new Promise((_resolve, reject) => { compiler.watch(watchOptions, (err /*, stats */) => { if (err) { reject(err); return; } - BbPromise.try(() => { + let action; + + try { if (this.originalServicePath) { process.chdir(this.originalServicePath); this.serverless.config.servicePath = this.originalServicePath; @@ -49,25 +50,29 @@ module.exports = { if (!this.isWatching) { this.isWatching = true; - return BbPromise.resolve(); - } - - if (this.log) { - this.log('Sources changed.'); } else { - this.serverless.cli.log('Sources changed.'); - } - if (_.isFunction(command)) { - return command(); + if (this.log) { + this.log('Sources changed.'); + } else { + this.serverless.cli.log('Sources changed.'); + } + if (_.isFunction(command)) { + action = command(); + } else { + if (this.log) { + this.log.verbose(`Invoke ${command}`); + } else { + this.options.verbose && this.serverless.cli.log(`Invoke ${command}`); + } + action = this.serverless.pluginManager.spawn(command); + } } + } catch (error) { + reject(error); + return; + } - if (this.log) { - this.log.verbose(`Invoke ${command}`); - } else { - this.options.verbose && this.serverless.cli.log(`Invoke ${command}`); - } - return this.serverless.pluginManager.spawn(command); - }).then(() => { + Promise.resolve(action).then(() => { if (this.log) { if (functionName) { this.log.verbose(`[Webpack] Watch function "${functionName}"`); @@ -79,7 +84,6 @@ module.exports = { } else { this.serverless.cli.log('Waiting for changes ...'); } - return null; }, reject); }); }); diff --git a/lib/runPluginSupport.js b/lib/runPluginSupport.js index be5fbd256..453fb33fd 100644 --- a/lib/runPluginSupport.js +++ b/lib/runPluginSupport.js @@ -1,4 +1,3 @@ -const BbPromise = require('bluebird'); const path = require('node:path'); module.exports = { @@ -14,7 +13,7 @@ module.exports = { // Prevent a respawn to delete our output directory this.keepOutputDirectory = true; - return BbPromise.resolve(); + return Promise.resolve(); }, watchRun() { diff --git a/lib/utils.js b/lib/utils.js index e4a61f093..f17afa737 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,5 +1,3 @@ -const _ = require('lodash'); -const BbPromise = require('bluebird'); const childProcess = require('node:child_process'); function guid() { @@ -19,12 +17,11 @@ function purgeCache(moduleName) { return searchAndProcessCache(moduleName, mod => { delete require.cache[mod.id]; }).then(() => { - _.forEach(_.keys(module.constructor._pathCache), cacheKey => { + for (const cacheKey of Object.keys(module.constructor._pathCache)) { if (cacheKey.indexOf(moduleName) > 0) { delete module.constructor._pathCache[cacheKey]; } - }); - return BbPromise.resolve(); + } }); } @@ -34,16 +31,16 @@ function searchAndProcessCache(moduleName, processor) { if (mod_src && (mod_src = require.cache[mod_src]) !== undefined) { const modStack = [mod_src]; - while (!_.isEmpty(modStack)) { + while (modStack.length > 0) { const mod = modStack.pop(); - if (!_.includes(visitedModules, mod)) { + if (!visitedModules.includes(mod)) { visitedModules.push(mod); Array.prototype.push.apply(modStack, mod.children); processor(mod); } } } - return BbPromise.resolve(); + return Promise.resolve(); } class SpawnError extends Error { @@ -66,9 +63,10 @@ class SpawnError extends Error { * @param {string[]} [args] - Arguments * @param {Object} [options] - Options for child_process.spawn */ -function spawnProcess(command, args, options) { - return new BbPromise((resolve, reject) => { - const child = childProcess.spawn(command, args, { +function spawnProcess(command, args = [], options) { + return new Promise((resolve, reject) => { + const normalizedArgs = args || []; + const child = childProcess.spawn(command, normalizedArgs, { ...options, // nodejs 20 on windows doesn't allow `.cmd` command to run without `shell: true` // https://github.com/serverless-heaven/serverless-webpack/issues/1791 @@ -95,7 +93,7 @@ function spawnProcess(command, args, options) { }); child.on('close', exitCode => { if (exitCode !== 0) { - reject(new SpawnError(`${command} ${_.join(args, ' ')} failed with code ${exitCode}`, stdout, stderr)); + reject(new SpawnError(`${command} ${normalizedArgs.join(' ')} failed with code ${exitCode}`, stdout, stderr)); } else { resolve({ stdout, stderr }); } @@ -112,7 +110,7 @@ function safeJsonParse(str) { } function splitLines(str) { - return _.split(str, /\r?\n/); + return str.split(/\r?\n/); } function isNodeRuntime(runtime) { @@ -123,9 +121,9 @@ function getAllNodeFunctions() { const functions = this.serverless.service.getAllFunctions(); const ecrImages = Object.keys(this.serverless.service.provider?.ecr?.images || []); - return _.filter(functions, funcName => { + return functions.filter(funcName => { const func = this.serverless.service.getFunction(funcName); - const imageName = _.get(func, 'image.name'); + const imageName = func.image?.name; const isEcrImage = imageName && ecrImages.includes(imageName); // if `uri` or `name` is provided or simple remote image path, it means the @@ -145,7 +143,7 @@ function getAllNodeFunctions() { * @returns true if the provider is google, otherwise false */ function isProviderGoogle(serverless) { - return _.get(serverless, 'service.provider.name') === 'google'; + return serverless?.service?.provider?.name === 'google'; } module.exports = { diff --git a/lib/validate.js b/lib/validate.js index 329ac0716..f35c01617 100644 --- a/lib/validate.js +++ b/lib/validate.js @@ -1,4 +1,3 @@ -const BbPromise = require('bluebird'); const path = require('node:path'); const fse = require('fs-extra'); const glob = require('glob'); @@ -29,7 +28,7 @@ module.exports = { if (imageProp && typeof imageProp === 'string') return imageProp; - if (!imageProp || !imageProp.command || imageProp.command.length < 1) { + if (!imageProp?.command || imageProp.command.length < 1) { const docsLink = 'https://www.serverless.com/blog/container-support-for-lambda'; throw new this.serverless.classes.Error( `Either function.handler or function.image must be defined. Pass the handler name (i.e. 'index.handler') as the value for function.image.command[0]. For help see: ${docsLink}` @@ -172,7 +171,7 @@ module.exports = { if (_.isString(this.webpackConfig)) { const webpackConfigFilePath = path.join(this.serverless.config.servicePath, this.webpackConfig); if (!this.serverless.utils.fileExistsSync(webpackConfigFilePath)) { - return BbPromise.reject( + return Promise.reject( new this.serverless.classes.Error( `The webpack plugin could not find the configuration file at: ${webpackConfigFilePath}` ) @@ -187,7 +186,7 @@ module.exports = { } else { this.serverless.cli.log(`Could not load webpack config '${webpackConfigFilePath}'`); } - return BbPromise.reject(err); + return Promise.reject(err); } } @@ -235,7 +234,7 @@ module.exports = { this.serverless.cli.log('Skipping build and using existing compiled output'); } if (!fse.pathExistsSync(this.webpackConfig.output.path)) { - return BbPromise.reject(new this.serverless.classes.Error('No compiled output found')); + return Promise.reject(new this.serverless.classes.Error('No compiled output found')); } this.keepOutputDirectory = true; } @@ -263,7 +262,7 @@ module.exports = { ); } if (this.webpackConfig.entry && !_.isEqual(this.webpackConfig.entry, entries)) { - return BbPromise.reject( + return Promise.reject( new this.serverless.classes.Error( 'Webpack entry must be automatically resolved when package.individually is set to true. ' + 'In webpack.config.js, remove the entry declaration or set entry to slsw.lib.entries.' @@ -315,12 +314,12 @@ module.exports = { this.webpackConfig.output.path = path.join(this.webpackConfig.output.path, 'service'); } - return BbPromise.resolve(); + return Promise.resolve(); }; // Webpack config can be a Promise, If it's a Promise wait for resolved config object. if (this.webpackConfig && _.isFunction(this.webpackConfig.then)) { - return BbPromise.resolve(this.webpackConfig.then(config => processConfig(config))); + return Promise.resolve(this.webpackConfig).then(config => processConfig(config)); } return processConfig(this.webpackConfig); diff --git a/lib/wpwatch.js b/lib/wpwatch.js index 2029dd7cc..ebaf7026c 100644 --- a/lib/wpwatch.js +++ b/lib/wpwatch.js @@ -1,5 +1,4 @@ const _ = require('lodash'); -const BbPromise = require('bluebird'); const webpack = require('webpack'); const logStats = require('./logStats'); @@ -36,8 +35,8 @@ module.exports = { // This allows us to hold the compile until "webpack:compile:watch" has resolved const beforeCompile = () => - new BbPromise(resolve => { - BbPromise.resolve(currentCompileWatch) + new Promise(resolve => { + Promise.resolve(currentCompileWatch) // Forwarding the error to the then so we don't display it twice // (once when it was originally thrown, and once when the promise rejects) .catch(error => error) @@ -124,15 +123,21 @@ module.exports = { } callback(); } else if (canEmit && currentCompileWatch === null) { - currentCompileWatch = BbPromise.resolve(this.serverless.pluginManager.spawn('webpack:compile:watch')).then( + currentCompileWatch = Promise.resolve(this.serverless.pluginManager.spawn('webpack:compile:watch')).then( () => !this.log && this.serverless.cli.log('Watching for changes...') ); } }); }; - return BbPromise.fromCallback(cb => { - startWatch(cb); + return new Promise((resolve, reject) => { + startWatch(error => { + if (error) { + reject(error); + return; + } + resolve(); + }); }); } }; diff --git a/package-lock.json b/package-lock.json index c12ac14ca..e8824833a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "license": "MIT", "dependencies": { "archiver": "^7.0.1", - "bluebird": "^3.7.2", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^11.3.4", "glob": "^13.0.6", @@ -264,52 +263,52 @@ } }, "node_modules/@aws-sdk/client-api-gateway": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-api-gateway/-/client-api-gateway-3.1001.0.tgz", - "integrity": "sha512-muPJO/DORAbmwrJhVTvZPCo3o2/h7brTUSk7BwdzSGiL1v7kP/TPELBf1eGHaqmZiUJwZ6WcHxXGXe/4/QZlGA==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-api-gateway/-/client-api-gateway-3.1033.0.tgz", + "integrity": "sha512-BOKeEPu/10FJiYfaNZfhXrDX4yjJbyMPIncYft6+3JM31D72Cb815HCHjvNmZtn6gcCdCytMDaKLDWVi8KPIDg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-sdk-api-gateway": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-sdk-api-gateway": "^3.972.10", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-stream": "^4.5.23", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -317,51 +316,51 @@ } }, "node_modules/@aws-sdk/client-apigatewayv2": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewayv2/-/client-apigatewayv2-3.1001.0.tgz", - "integrity": "sha512-NeZRtUHr7TAaaa3Q+83IQeFnsi9CKaXVCe1XL2SgmLcf2/cvP5HU521+D/+yGgJy8uCI1LlZrx/8KKj7luvwXQ==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-apigatewayv2/-/client-apigatewayv2-3.1033.0.tgz", + "integrity": "sha512-1TRkUGbAGTfUUUo0sZO9uJOx9hmQBMdyTP/5HqvJ0HMcVL/Tb3nn5WN3bBcP5osLUw0Ym8XjJDUOkJ3GIWvK1Q==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-stream": "^4.5.23", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -369,51 +368,51 @@ } }, "node_modules/@aws-sdk/client-cloudformation": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.1001.0.tgz", - "integrity": "sha512-9SuAsg+KeGNPrmNsS2eA5yQWgSMXHtpyTKvPe2NNwrSoLLaxA3CdIQgByKVGUvoP8lry/dF78k8DN3pTphWX6A==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.1033.0.tgz", + "integrity": "sha512-i/J24sMop/qooItSztDLrdoGQ3iDyqFS/8WdmCn65k4JsjlqyDDV5/z6KOJdGusPfwvv4wJJjlrkjz7/hAbSEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.16", "tslib": "^2.6.2" }, "engines": { @@ -421,52 +420,52 @@ } }, "node_modules/@aws-sdk/client-cloudwatch": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.1001.0.tgz", - "integrity": "sha512-/khzEWn02tjiMES/IsZHkC4YPPKEoe05/OfgfRb/Ku11Pa8LO8vA84f/3qqpD90Clm2pgFZQvLP9UCyiy2mqFw==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.1033.0.tgz", + "integrity": "sha512-cFSVP/JISeJAW0kfx84pIBmMyAkZMxqHEiq2ALbbSSNwqPw51OjIAh2yVV0z5JhNzp7tt31pjOIyZQ58Q0Ppjg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-compression": "^4.3.36", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-compression": "^4.3.44", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.16", "tslib": "^2.6.2" }, "engines": { @@ -474,53 +473,53 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.1001.0.tgz", - "integrity": "sha512-o8wHfVuDDsOpnhcLOKnOg/ryqlZhvP9k8HPqGv6mjC+9OAdQt1gXgUqEKOL8jCzClOOKzSfrML4KtdIz3ap1dw==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.1033.0.tgz", + "integrity": "sha512-Un7CtOsUQhNaxvizEEsECGVIjOwF2ZmcQbA6EXK0s0nT82ZdObwkxClc3F0sGBtro2oAzsZdeGej0468EwD3EA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/eventstream-serde-browser": "^4.2.10", - "@smithy/eventstream-serde-config-resolver": "^4.3.10", - "@smithy/eventstream-serde-node": "^4.2.10", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/eventstream-serde-browser": "^4.2.14", + "@smithy/eventstream-serde-config-resolver": "^4.3.14", + "@smithy/eventstream-serde-node": "^4.2.14", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -528,50 +527,50 @@ } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.1001.0.tgz", - "integrity": "sha512-eQSkLtI5DbYoUQfrlz9iKIE+qgfsyqToufhkqXeaiegV8lz99hh8DbKc7WitKo5NSQumf+GS8B6VzmsrWH0gFg==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.1033.0.tgz", + "integrity": "sha512-Hv5EfavKUukxwfhdGkH5fBCo3djIbrx7LXt84sARkiRiYPVX/UZHX3GslB3R0z1OPns42ZLNP7D1WGE3dZy3nw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -579,50 +578,50 @@ } }, "node_modules/@aws-sdk/client-cognito-identity-provider": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.1001.0.tgz", - "integrity": "sha512-Azz9UkFJgKGvlCA+pyZhGWjR7v5qfIHYBS4VopTAvAig3/ZutBCs6brpvpPSpKe1E7IUoWp/NbmKfpyM0woMJA==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.1033.0.tgz", + "integrity": "sha512-Gb3Ji504K/Np0u3+NfJIEjvCuiaCeIkiMLgEHkriUMG31ID4FaKGaWNAIT11EeFYYs89nKwz3VtAMu6va+7aGA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -630,53 +629,53 @@ } }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.1001.0.tgz", - "integrity": "sha512-mPmib0VFBnPR3s9Yz+e5HFd2HIbRlLrlnAbD+aEmPKB7Wqm4MOfWp7xMYyxpms+/CdDFnB1dk3vQyD5x6l4abw==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.1033.0.tgz", + "integrity": "sha512-cVKiF4sQ+4fTyZGOBBgEcuSRgryJkXGli5XmIJ/IsPGVjnNYOJDSxnXvRnW14zBEBaq6Q6ZQppwNtiFPVNHiNQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/dynamodb-codec": "^3.972.17", - "@aws-sdk/middleware-endpoint-discovery": "^3.972.6", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/dynamodb-codec": "^3.973.2", + "@aws-sdk/middleware-endpoint-discovery": "^3.972.11", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.16", "tslib": "^2.6.2" }, "engines": { @@ -684,51 +683,51 @@ } }, "node_modules/@aws-sdk/client-ecr": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecr/-/client-ecr-3.1001.0.tgz", - "integrity": "sha512-nz2//TUpIijghQa3PVJl5uPAFAb/31ZBcDadZdv1y5C5jApHgAusixVjNMqgykxgS/i4fqp4XKhDOe7XcyEuDg==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecr/-/client-ecr-3.1033.0.tgz", + "integrity": "sha512-W2HaBJWC5y8Zc6hoHYG/XETb8wBGgTdu6ocFXP3TvdNGab74VOwFRgy2a5Y4U/xOfXSyfj2Kx+Em+DFsGfhPsg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.16", "tslib": "^2.6.2" }, "engines": { @@ -736,51 +735,51 @@ } }, "node_modules/@aws-sdk/client-eventbridge": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-eventbridge/-/client-eventbridge-3.1001.0.tgz", - "integrity": "sha512-asySfaKnDTxhMtxCX1dvjDPfJwrQ5xy/tzdmFHmRyURNhIhXG3dwishJ6ROXzOrY7hFCiz+OTWWjZ+IJbrfzkA==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-eventbridge/-/client-eventbridge-3.1033.0.tgz", + "integrity": "sha512-MD5fMT72xlIFMN3j9yIdt2hc7CBnCruIfqMqrlfW2UHbb9tpWuC3VsDf0m/6r23rkg748VqWhfpLZ3hS1XvdeQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/signature-v4-multi-region": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/signature-v4-multi-region": "^3.996.19", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -788,51 +787,51 @@ } }, "node_modules/@aws-sdk/client-iam": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.1001.0.tgz", - "integrity": "sha512-+ascrJmif0lrKgO8zBhi/4QGsHS6SAEoG3MFWCzdB4+bDEGCKAV77s48gTbGqMTEWnSyiHdudCBjhxvsZhcPZw==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.1033.0.tgz", + "integrity": "sha512-vcq8fkvsSxRIz5/nAIvjphmy8XCcv+zhykzv47ztK8WB0kcpZFIV8UgLc4CUD3EzuDsW+SeSgRl2uEwWHQivrA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.16", "tslib": "^2.6.2" }, "engines": { @@ -840,50 +839,50 @@ } }, "node_modules/@aws-sdk/client-iot": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-iot/-/client-iot-3.1001.0.tgz", - "integrity": "sha512-xL6HsDm7koMSnMogpLRzGK8dKos7R7OjKWwLkUsaqqOdFrUdnX7W4FCRfZ/ru6ftpvPW3L/8o2ZKZbbE/qgMOg==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-iot/-/client-iot-3.1033.0.tgz", + "integrity": "sha512-YL2V/4svVl3HL1HYaiDoYnJFLMzBNuKU4OLIlhKMk38exQqgSK74RTajSyy7Mi7GFgfEbV7FjdvXOEPPRmSreA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -891,51 +890,51 @@ } }, "node_modules/@aws-sdk/client-iot-data-plane": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-iot-data-plane/-/client-iot-data-plane-3.1001.0.tgz", - "integrity": "sha512-F2P1NDnHwEp44V3FVuBhrELx7e6K1rRcOtqXYFKG5KMWdzTgMxbnQZL7Bj9m1BSiMLHGyWJvEHjEeMrV9V76lA==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-iot-data-plane/-/client-iot-data-plane-3.1033.0.tgz", + "integrity": "sha512-GJpEXoDZJLawVkzo3ErWCsXRW/0/bpRW0RFpJ6KxDS/h0VEiGWUBjOqhcrt2MupoZlsNBR7vsD8CzDyTJABA5A==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-stream": "^4.5.23", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -943,54 +942,54 @@ } }, "node_modules/@aws-sdk/client-kinesis": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.1001.0.tgz", - "integrity": "sha512-iIOtac9Wt1R2EzhyoFtE2mK1ltz/HKIipO7mdiaXml6H+n4A62EIyMUvnc8sapZB8lpDV9hZCZefXx7DaQI5Sg==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.1033.0.tgz", + "integrity": "sha512-A9AUXsnsafZW3tHbnlXE96ugPwCz7fiB2xe8fkkLNx6dTLWU8oc+jGq9tp3hW18RocodqRIJlGMzAIut9kaQcw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/eventstream-serde-browser": "^4.2.10", - "@smithy/eventstream-serde-config-resolver": "^4.3.10", - "@smithy/eventstream-serde-node": "^4.2.10", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/eventstream-serde-browser": "^4.2.14", + "@smithy/eventstream-serde-config-resolver": "^4.3.14", + "@smithy/eventstream-serde-node": "^4.2.14", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.16", "tslib": "^2.6.2" }, "engines": { @@ -998,55 +997,55 @@ } }, "node_modules/@aws-sdk/client-lambda": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.1001.0.tgz", - "integrity": "sha512-YR3ntp0YY0f/Fdx9UNmRLa5PVOik0J1dIHGrTRRC241QjL2Le9b1DkDordto2QtvGQeK5LNPMbuxiGZqQ594Tg==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.1033.0.tgz", + "integrity": "sha512-DiAI5SDIwyCCkcLvcSPyUhAkt0ax2HHsoofu6sGTqX9q0gHcls38Pu1EXJsIe00fJHaqdlWwyGL0z8Lobj9krw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/eventstream-serde-browser": "^4.2.10", - "@smithy/eventstream-serde-config-resolver": "^4.3.10", - "@smithy/eventstream-serde-node": "^4.2.10", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/eventstream-serde-browser": "^4.2.14", + "@smithy/eventstream-serde-config-resolver": "^4.3.14", + "@smithy/eventstream-serde-node": "^4.2.14", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-stream": "^4.5.23", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.16", "tslib": "^2.6.2" }, "engines": { @@ -1054,66 +1053,66 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1001.0.tgz", - "integrity": "sha512-uKgFjQuBjMcd0iigLQwnqIp9gOy/5TGBxa42rcb6l5byDt1mrwOe6fyWTEUEJaNHG2LKYSPUibteGvM1zfm0Rw==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1033.0.tgz", + "integrity": "sha512-c8iDFppzyhQUTTPsUWDy43mSKzQsTIi+RkY9u9fHPDiu1bUJWO/2xhuFx9j6l0+29HKqlQx8yJGe8lRF3xSw3w==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.6", - "@aws-sdk/middleware-expect-continue": "^3.972.6", - "@aws-sdk/middleware-flexible-checksums": "^3.973.2", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-location-constraint": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-sdk-s3": "^3.972.16", - "@aws-sdk/middleware-ssec": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/signature-v4-multi-region": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/eventstream-serde-browser": "^4.2.10", - "@smithy/eventstream-serde-config-resolver": "^4.3.10", - "@smithy/eventstream-serde-node": "^4.2.10", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-blob-browser": "^4.2.11", - "@smithy/hash-node": "^4.2.10", - "@smithy/hash-stream-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/md5-js": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.10", + "@aws-sdk/middleware-expect-continue": "^3.972.10", + "@aws-sdk/middleware-flexible-checksums": "^3.974.10", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-location-constraint": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-sdk-s3": "^3.972.31", + "@aws-sdk/middleware-ssec": "^3.972.10", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/signature-v4-multi-region": "^3.996.19", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/eventstream-serde-browser": "^4.2.14", + "@smithy/eventstream-serde-config-resolver": "^4.3.14", + "@smithy/eventstream-serde-node": "^4.2.14", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-blob-browser": "^4.2.15", + "@smithy/hash-node": "^4.2.14", + "@smithy/hash-stream-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/md5-js": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-stream": "^4.5.23", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.16", "tslib": "^2.6.2" }, "engines": { @@ -1121,50 +1120,50 @@ } }, "node_modules/@aws-sdk/client-sns": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.1001.0.tgz", - "integrity": "sha512-+IhiJq+bKmrqhuMBNgaaIfigiqQ4PhlRMOu0WH/LMyMvWePG5zaneMGfgNWIWnd7XN0w2GLKcRNVe0yYBxEmbA==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.1033.0.tgz", + "integrity": "sha512-1dD3vuDH76U9A3WaWKYzfVIImJy+03yBxLiHqsox7CCYPJSAPvdqXCcqHi4DNFIRqvyDYPuBH3QGL2Pq+Lab/g==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -1172,52 +1171,52 @@ } }, "node_modules/@aws-sdk/client-sqs": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.1001.0.tgz", - "integrity": "sha512-q5lUCFJwwIb2Qn8nHrTptJpIjyx8wmWpm0VRhzxvx4idUNWmp5g1QsexD3qMWYvDB++C8EO9cvtNytMnN+ukQA==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.1033.0.tgz", + "integrity": "sha512-oB5SWYYzBh1GGNKF4dlVJOWFO5KfJmP+r96VeiiHSqAYmmR7Aj8qh10Kmt4pPgnETno0bgiMRp0Zo2+j7G08mw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-sdk-sqs": "^3.972.12", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/md5-js": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-sdk-sqs": "^3.972.20", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/md5-js": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -1225,51 +1224,51 @@ } }, "node_modules/@aws-sdk/client-ssm": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.1001.0.tgz", - "integrity": "sha512-WnEFtzczBF1f+hNvnmucbccYeGfHXnQOaARnI4c2WYGzcCN0SF/R7B4Xl2V1DpsLxtldx5dkX2hwIc40rYk1Rg==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.1033.0.tgz", + "integrity": "sha512-xWfVxa9g//HSPGK7SETjRQNLwt7RH1tJUYkMe6Q5Su/1bQE5wafPR+OVmc1cXozKrb8iF46p5FOy6gt5npniEA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", - "@smithy/util-waiter": "^4.2.10", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.16", "tslib": "^2.6.2" }, "engines": { @@ -1277,50 +1276,51 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.1001.0.tgz", - "integrity": "sha512-1HVxJcad+BTMVQ4lN2jw4SzyVqnIRZ7mb8YjwqMQ6p1MjuklSriVUXKtYFyxLVJnqaw61nFv9F8oHMOK69p6BQ==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.1033.0.tgz", + "integrity": "sha512-adkXryXCIgrfktuN0ZYkfsVFy9eo4OvlULL7euWPYipRKl/31MH/t6nq/uU99Kuz5PZSmfRqmiA4f9CMfaZZ2g==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/signature-v4-multi-region": "^3.996.19", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -1328,24 +1328,24 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.973.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.16.tgz", - "integrity": "sha512-Nasoyb5K4jfvncTKQyA13q55xHoz9as01NVYP05B0Kzux/X5UhMn3qXsZDyWOSXkfSCAIrMBKmVVWbI0vUapdQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/xml-builder": "^3.972.9", - "@smithy/core": "^3.23.7", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/signature-v4": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "version": "3.974.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.2.tgz", + "integrity": "sha512-oav5AOAz+1XkwUfp6SrEm42UPDpUP5D4jNYXkDwFR1VfWqYX62+jpytdfzURmJ9McSoJIQwi0OJlC4oCi6t0VQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/xml-builder": "^3.972.18", + "@smithy/core": "^3.23.15", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -1353,13 +1353,13 @@ } }, "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.972.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.3.tgz", - "integrity": "sha512-UExeK+EFiq5LAcbHm96CQLSia+5pvpUVSAsVApscBzayb7/6dJBJKwV4/onsk4VbWSmqxDMcfuTD+pC4RxgZHg==", + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz", + "integrity": "sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1367,16 +1367,16 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.972.7", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.7.tgz", - "integrity": "sha512-0mn0mnu7UiA+7s0weXVlAGmXyC0vb9sqnWpBbuuSNDHK3v7IXBaq2WdNKRwmVPqqBFSuy+R7nOIq9LerdpyNJA==", + "version": "3.972.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.25.tgz", + "integrity": "sha512-Tld1tSAw/ft0Ukdv0UJXxTt51BtKJlC44BJBkVsbc66Fqfb0iUnBXEl9fkt3Vkk+4iFF5iU9y/0lIACIikprSQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/nested-clients": "^3.997.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1384,16 +1384,16 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.14.tgz", - "integrity": "sha512-PvnBY9rwBuLh9MEsAng28DG+WKl+txerKgf4BU9IPAqYI7FBIo1x6q/utLf4KLyQYgSy1TLQnbQuXx5xfBGASg==", + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.28.tgz", + "integrity": "sha512-87GdRJ2OR0qR4VkMjXN/SZi66DZsunW2qQCbtw9rKw3Y7JurFi6tQWYKOSLY/gOADrU6OxGqFmdw3hKzZqDZOQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1401,21 +1401,21 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.16.tgz", - "integrity": "sha512-m/QAcvw5OahqGPjeAnKtgfWgjLxeWOYj7JSmxKK6PLyKp2S/t2TAHI6EELEzXnIz28RMgbQLukJkVAqPASVAGQ==", + "version": "3.972.30", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.30.tgz", + "integrity": "sha512-6quozmW2PKwBJTUQLb+lk1q8w5Pm45qaqhx4Tld9EIqYYQOVGj+MT0a8NRVS7QgWJj7rzGlB7rQu3KYBFHemJw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/property-provider": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-stream": "^4.5.16", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/types": "^3.973.8", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/util-stream": "^4.5.23", "tslib": "^2.6.2" }, "engines": { @@ -1423,25 +1423,25 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.14.tgz", - "integrity": "sha512-EGA7ufqNpZKZcD0RwM6gRDEQgwAf19wQ99R1ptdWYDJAnpcMcWiFyT0RIrgiZFLD28CwJmYjnra75hChnEveWA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-env": "^3.972.14", - "@aws-sdk/credential-provider-http": "^3.972.16", - "@aws-sdk/credential-provider-login": "^3.972.14", - "@aws-sdk/credential-provider-process": "^3.972.14", - "@aws-sdk/credential-provider-sso": "^3.972.14", - "@aws-sdk/credential-provider-web-identity": "^3.972.14", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "version": "3.972.32", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.32.tgz", + "integrity": "sha512-Nkr+UKtczZlocUjc6g96WzQadZSIZO/HVXPki4qbfaVOZYSbfLQKWKfADtJ0kGYsCvSYOZrO66tSc9dkboUt/w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-env": "^3.972.28", + "@aws-sdk/credential-provider-http": "^3.972.30", + "@aws-sdk/credential-provider-login": "^3.972.32", + "@aws-sdk/credential-provider-process": "^3.972.28", + "@aws-sdk/credential-provider-sso": "^3.972.32", + "@aws-sdk/credential-provider-web-identity": "^3.972.32", + "@aws-sdk/nested-clients": "^3.997.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1449,19 +1449,19 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.14.tgz", - "integrity": "sha512-P2kujQHAoV7irCTv6EGyReKFofkHCjIK+F0ZYf5UxeLeecrCwtrDkHoO2Vjsv/eRUumaKblD8czuk3CLlzwGDw==", + "version": "3.972.32", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.32.tgz", + "integrity": "sha512-UxgwT1HmZz1QPXuBy5ZUPJNFXOSlhwdQL61eGhWRthF0xRrT02BCOVJ1p5Ejg5AXfnESTWoKPJ7v/sCkNUtB9g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/nested-clients": "^3.997.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1469,23 +1469,23 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.15.tgz", - "integrity": "sha512-59NBJgTcQ2FC94T+SWkN5UQgViFtrLnkswSKhG5xbjPAotOXnkEF2Bf0bfUV1F3VaXzqAPZJoZ3bpg4rr8XD5Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.14", - "@aws-sdk/credential-provider-http": "^3.972.16", - "@aws-sdk/credential-provider-ini": "^3.972.14", - "@aws-sdk/credential-provider-process": "^3.972.14", - "@aws-sdk/credential-provider-sso": "^3.972.14", - "@aws-sdk/credential-provider-web-identity": "^3.972.14", - "@aws-sdk/types": "^3.973.4", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "version": "3.972.33", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.33.tgz", + "integrity": "sha512-6pGQnEdSeRvBViTQh/FwaRKB38a3Th+W2mVxuvqAd2Z1Ayo3e6eJ5QqJoZwEMwR6xoxkl3wz3qAfiB1xRhMC+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.28", + "@aws-sdk/credential-provider-http": "^3.972.30", + "@aws-sdk/credential-provider-ini": "^3.972.32", + "@aws-sdk/credential-provider-process": "^3.972.28", + "@aws-sdk/credential-provider-sso": "^3.972.32", + "@aws-sdk/credential-provider-web-identity": "^3.972.32", + "@aws-sdk/types": "^3.973.8", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1493,17 +1493,17 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.14.tgz", - "integrity": "sha512-KAF5LBkJInUPaR9dJDw8LqmbPDRTLyXyRoWVGcJQ+DcN9rxVKBRzAK+O4dTIvQtQ7xaIDZ2kY7zUmDlz6CCXdw==", + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.28.tgz", + "integrity": "sha512-CRAlD8u6oNBhjnX/3ekVGocarD+lFmEn/qeDzytgIdmwrmwMJGFPqS9lGwEfhOTihZKrQ0xSp3z6paX+iXJJhA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1511,19 +1511,19 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.14.tgz", - "integrity": "sha512-LQzIYrNABnZzkyuIguFa3VVOox9UxPpRW6PL+QYtRHaGl1Ux/+Zi54tAVK31VdeBKPKU3cxqeu8dbOgNqy+naw==", + "version": "3.972.32", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.32.tgz", + "integrity": "sha512-whhmQghRYOt9mJxFyVMhX7eB8n0oA25OCvqoR7dzFAZjmioCkf7WVB22Bc6llM5cFpBXFX7s4Jv+xVq32VPGWg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/token-providers": "3.1001.0", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/nested-clients": "^3.997.0", + "@aws-sdk/token-providers": "3.1033.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1531,18 +1531,18 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.14.tgz", - "integrity": "sha512-rOwB3vXHHHnGvAOjTgQETxVAsWjgF61XlbGd/ulvYo7EpdXs8cbIHE3PGih9tTj/65ZOegSqZGFqLaKntaI9Kw==", + "version": "3.972.32", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.32.tgz", + "integrity": "sha512-Z0Y0LDaqyQDznlmr9gv6n4+eWKKWNgmi9j5L6RENr6wyOCguhO8FRPmqDbVLSw0DPdMqICKnA3PurJiS8bD6Cw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/nested-clients": "^3.997.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1550,31 +1550,31 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.1001.0.tgz", - "integrity": "sha512-l83IOlkbPBiBl9zXV4A9z/EtUNgEzb4lMusRIe1L2N5xEic83mhP8lFzQzVoq4TGbCObFdr/C62VzNbrOM0QaA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.1001.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/credential-provider-cognito-identity": "^3.972.7", - "@aws-sdk/credential-provider-env": "^3.972.14", - "@aws-sdk/credential-provider-http": "^3.972.16", - "@aws-sdk/credential-provider-ini": "^3.972.14", - "@aws-sdk/credential-provider-login": "^3.972.14", - "@aws-sdk/credential-provider-node": "^3.972.15", - "@aws-sdk/credential-provider-process": "^3.972.14", - "@aws-sdk/credential-provider-sso": "^3.972.14", - "@aws-sdk/credential-provider-web-identity": "^3.972.14", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/types": "^4.13.0", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.1033.0.tgz", + "integrity": "sha512-yxwiYB3z8ilVLmtLEwrEL/MIISYDLRyhAJmXoziNIxqKLoCnZed4A2AhlCcPMvFfA8B56oNJ64nGoepMaEagzw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.1033.0", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/credential-provider-cognito-identity": "^3.972.25", + "@aws-sdk/credential-provider-env": "^3.972.28", + "@aws-sdk/credential-provider-http": "^3.972.30", + "@aws-sdk/credential-provider-ini": "^3.972.32", + "@aws-sdk/credential-provider-login": "^3.972.32", + "@aws-sdk/credential-provider-node": "^3.972.33", + "@aws-sdk/credential-provider-process": "^3.972.28", + "@aws-sdk/credential-provider-sso": "^3.972.32", + "@aws-sdk/credential-provider-web-identity": "^3.972.32", + "@aws-sdk/nested-clients": "^3.997.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1582,17 +1582,16 @@ } }, "node_modules/@aws-sdk/dynamodb-codec": { - "version": "3.972.17", - "resolved": "https://registry.npmjs.org/@aws-sdk/dynamodb-codec/-/dynamodb-codec-3.972.17.tgz", - "integrity": "sha512-Q2sff1qeHbFSsmRXAhzCl6KM1FVUPvk4njNWvGkBcbbLwTc+i3AxErv1SWhE1SQP0ETMPbcJOEDgc+Ycw1htQg==", + "version": "3.973.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/dynamodb-codec/-/dynamodb-codec-3.973.2.tgz", + "integrity": "sha512-CEinPow54jr1y4bvhdyRDR0uM+t8J+27U1jh5lOm2shXVBrx9W1SHVCklxZ0oaWXiSJcYil1G8RTBYj4OGHn8A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@smithy/core": "^3.23.7", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", + "@aws-sdk/core": "^3.974.2", + "@smithy/core": "^3.23.15", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -1600,9 +1599,9 @@ } }, "node_modules/@aws-sdk/endpoint-cache": { - "version": "3.972.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.972.3.tgz", - "integrity": "sha512-s5oiwOTe0ajI5y/cRMsThZsmlrZiAEcUct723O9NivR/es8fDtglbhHo7eQE4ydddCivFCm2lpNj8RPDLdL3AA==", + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.972.5.tgz", + "integrity": "sha512-itVdge0NozgtgmtbZ25FVwWU3vGlE7x7feE/aOEJNkQfEpbkrF8Rj1QmnK+2blFfYE1xWt/iU+6/jUp/pv1+MA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1614,36 +1613,37 @@ } }, "node_modules/@aws-sdk/lib-dynamodb": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.1001.0.tgz", - "integrity": "sha512-4iqiaohK/LokK4kQ212huBUjehuCLndQrobvYTF24v+gk4EoPpbKQ6ksPLnd5VyzwkbMKBMbNtd7eQQdRGcm0A==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.1033.0.tgz", + "integrity": "sha512-S9a3Rv2SM0575PTtypBCKleTLuRPLNb7TXQ+nkee1dDMhwm2OpkQ9OS7duSq18kFHKytwShPSJPwOmJakzh3Bg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/util-dynamodb": "^3.996.1", - "@smithy/core": "^3.23.7", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/util-dynamodb": "^3.996.2", + "@smithy/core": "^3.23.15", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.1001.0" + "@aws-sdk/client-dynamodb": "^3.1033.0" } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.1001.0.tgz", - "integrity": "sha512-h1EO4CKayPb7KqdC8M8aSr/7g8LueCN048WvasFMKxH5wuN5UBa+slE1OHfi/tR+fHILa6K7YUJ6L0Ibg3OdBA==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.1033.0.tgz", + "integrity": "sha512-ILWSK/WvjM2hgbuLCTVNK1n1sh/8D3PrHcuRigu6jWKqALyCeBRB+nc7faSaZPsCx4p1wYQ0qhhXM18LUO95Dw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/smithy-client": "^4.12.1", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", "buffer": "5.6.0", "events": "3.3.0", "stream-browserify": "3.0.0", @@ -1653,7 +1653,7 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@aws-sdk/client-s3": "^3.1001.0" + "@aws-sdk/client-s3": "^3.1033.0" } }, "node_modules/@aws-sdk/lib-storage/node_modules/buffer": { @@ -1668,18 +1668,18 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.6.tgz", - "integrity": "sha512-3H2bhvb7Cb/S6WFsBy/Dy9q2aegC9JmGH1inO8Lb2sWirSqpLJlZmvQHPE29h2tIxzv6el/14X/tLCQ8BQU6ZQ==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz", + "integrity": "sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-arn-parser": "^3.972.2", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -1687,17 +1687,17 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.972.6.tgz", - "integrity": "sha512-p5DYw2cpnsuT/bFA4DEBxucY/wn3TVGDZ7wonEds6EEox35I5DThCsw6aWDIN/fTpG0FMLO3q7s1PUKozWl3CQ==", + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.972.11.tgz", + "integrity": "sha512-vXARCZVFQHdsd6qPPZyC/hh+5x2XsCYKqUQDCqnUlpGpChMpDojOOacQWdLJ+FFXKN8X3cmLOGrtgx/zysCKqQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/endpoint-cache": "^3.972.3", - "@aws-sdk/types": "^3.973.4", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/endpoint-cache": "^3.972.5", + "@aws-sdk/types": "^3.973.8", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1705,15 +1705,15 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.6.tgz", - "integrity": "sha512-QMdffpU+GkSGC+bz6WdqlclqIeCsOfgX8JFZ5xvwDtX+UTj4mIXm3uXu7Ko6dBseRcJz1FA6T9OmlAAY6JgJUg==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz", + "integrity": "sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1721,25 +1721,25 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.973.2", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.973.2.tgz", - "integrity": "sha512-KM6QujWdasNjRLG+f7YEqEY5D36vR6Govm7nPIwxjILpb5rJ0pPJZpYY1nrzgtlxwJIYAznfBK5YXoLOHKHyfQ==", + "version": "3.974.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.10.tgz", + "integrity": "sha512-R9oqyD1hR7aF2UQaYBo90/ILNn8Sq7gl/2Y4WkDDvsaqklqPomso++sFbgYgNmN/Kfx6gqvJwcjSkxJHEBK1tQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/crc64-nvme": "^3.972.3", - "@aws-sdk/types": "^3.973.4", - "@smithy/is-array-buffer": "^4.2.1", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/crc64-nvme": "^3.972.7", + "@aws-sdk/types": "^3.973.8", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.23", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -1747,15 +1747,15 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.6.tgz", - "integrity": "sha512-5XHwjPH1lHB+1q4bfC7T8Z5zZrZXfaLcjSMwTd1HPSPrCmPFMbg3UQ5vgNWcVj0xoX4HWqTGkSf2byrjlnRg5w==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", + "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1763,14 +1763,14 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.6.tgz", - "integrity": "sha512-XdZ2TLwyj3Am6kvUc67vquQvs6+D8npXvXgyEUJAdkUDx5oMFJKOqpK+UpJhVDsEL068WAJl2NEGzbSik7dGJQ==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz", + "integrity": "sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1778,14 +1778,14 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.6.tgz", - "integrity": "sha512-iFnaMFMQdljAPrvsCVKYltPt2j40LQqukAbXvW7v0aL5I+1GO7bZ/W8m12WxW3gwyK5p5u1WlHg8TSAizC5cZw==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", + "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1793,16 +1793,16 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.6.tgz", - "integrity": "sha512-dY4v3of5EEMvik6+UDwQ96KfUFDk8m1oZDdkSc5lwi4o7rFrjnv0A+yTV+gu230iybQZnKgDLg/rt2P3H+Vscw==", + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", + "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", + "@aws-sdk/types": "^3.973.8", "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1810,15 +1810,15 @@ } }, "node_modules/@aws-sdk/middleware-sdk-api-gateway": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-api-gateway/-/middleware-sdk-api-gateway-3.972.6.tgz", - "integrity": "sha512-9nnclsvazLnRt5brG9eMV7oSOgdjbQ8k1T+WZZCkXcYpxVHzUlCFDAzd349mIPTNU/MLABChA/uvkCEf6KhTwg==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-api-gateway/-/middleware-sdk-api-gateway-3.972.10.tgz", + "integrity": "sha512-CeiwtgS4wvq5KQHjXUJ3bxacBkuu3jy3jGkr8d3lFbQ67E53AdLuxD2ZFh2C3fCykjRXSPC504ThyC/PTtaOSA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1826,25 +1826,25 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.16.tgz", - "integrity": "sha512-U4K1rqyJYvT/zgTI3+rN+MToa51dFnnq1VSsVJuJWPNEKcEnuZVqf7yTpkJJMkYixVW5TTi1dgupd+nmJ0JyWw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-arn-parser": "^3.972.2", - "@smithy/core": "^3.23.7", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/signature-v4": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", + "version": "3.972.31", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.31.tgz", + "integrity": "sha512-5hS08Fp0Rm+59uGCmkWhZmveXiA7OUV7Wa+IARejdzf9JTZ1qAVeIOE9JoBpsLPvUgEjmsGNHBuFbtGmYyqiqQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/core": "^3.23.15", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.23", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -1852,17 +1852,17 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.972.12", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.972.12.tgz", - "integrity": "sha512-YYh6560Aa6O/F4j1gnSuEzX7zHYQm2OnSlXBu+wQzyfJ5Dn5Ns2boVlS40UcA+OLrxHZgOLh/gzepbFY/ixteA==", + "version": "3.972.20", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.972.20.tgz", + "integrity": "sha512-yt0w5FKyH8Or7OT/Bp3fDRAtI4/f6uaaRKnW9TmU9qv8c1HFh43C9nQYZ26IcyRm+tYFdrB65yNTav/YThu36A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-hex-encoding": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -1870,14 +1870,14 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.6.tgz", - "integrity": "sha512-acvMUX9jF4I2Ew+Z/EA6gfaFaz9ehci5wxBmXCZeulLuv8m+iGf6pY9uKz8TPjg39bdAz3hxoE0eLP8Qz+IYlA==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz", + "integrity": "sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1885,18 +1885,19 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.16.tgz", - "integrity": "sha512-AmVxtxn8ZkNJbuPu3KKfW9IkJgTgcEtgSwbo0NVcAb31iGvLgHXj2nbbyrUDfh2fx8otXmqL+qw1lRaTi+V3vA==", + "version": "3.972.32", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.32.tgz", + "integrity": "sha512-HQ0x9DDKqLZOGhDiL2eicYXXkYT5dogE4mw0lAfHCpJ6t7MM0PNIsJl2TZzWKU9SpBzOMXHRa7K6ZLKUJu1y0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@smithy/core": "^3.23.7", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@smithy/core": "^3.23.15", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-retry": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -1904,49 +1905,50 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.996.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.4.tgz", - "integrity": "sha512-NowB1HfOnWC4kwZOnTg8E8rSL0U+RSjSa++UtEV4ipoH6JOjMLnHyGilqwl+Pe1f0Al6v9yMkSJ/8Ot0f578CQ==", + "version": "3.997.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.0.tgz", + "integrity": "sha512-4bI5GHjUiY5R8N6PtchpG6tW2Dl8I2IcZNg3JwqwxHRXjfvQlPoo4VMknG4qkd5W0t3Y20rQ6C7pSR561YG5JQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/middleware-host-header": "^3.972.6", - "@aws-sdk/middleware-logger": "^3.972.6", - "@aws-sdk/middleware-recursion-detection": "^3.972.6", - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/region-config-resolver": "^3.972.6", - "@aws-sdk/types": "^3.973.4", - "@aws-sdk/util-endpoints": "^3.996.3", - "@aws-sdk/util-user-agent-browser": "^3.972.6", - "@aws-sdk/util-user-agent-node": "^3.973.1", - "@smithy/config-resolver": "^4.4.9", - "@smithy/core": "^3.23.7", - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/hash-node": "^4.2.10", - "@smithy/invalid-dependency": "^4.2.10", - "@smithy/middleware-content-length": "^4.2.10", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-retry": "^4.4.38", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/protocol-http": "^5.3.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-body-length-node": "^4.2.2", - "@smithy/util-defaults-mode-browser": "^4.3.37", - "@smithy/util-defaults-mode-node": "^4.2.40", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/region-config-resolver": "^3.972.12", + "@aws-sdk/signature-v4-multi-region": "^3.996.19", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.7", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.18", + "@smithy/config-resolver": "^4.4.16", + "@smithy/core": "^3.23.15", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.30", + "@smithy/middleware-retry": "^4.5.3", + "@smithy/middleware-serde": "^4.2.18", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.5.3", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.11", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.47", + "@smithy/util-defaults-mode-node": "^4.2.52", + "@smithy/util-endpoints": "^3.4.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -1954,16 +1956,16 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.6.tgz", - "integrity": "sha512-Aa5PusHLXAqLTX1UKDvI3pHQJtIsF7Q+3turCHqfz/1F61/zDMWfbTC8evjhrrYVAtz9Vsv3SJ/waSUeu7B6gw==", + "version": "3.972.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.12.tgz", + "integrity": "sha512-QQI43Mxd53nBij0pm8HXC+t4IOC6gnhhZfzxE0OATQyO6QfPV4e+aTIRRuAJKA6Nig/cR8eLwPryqYTX9ZrjAQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/config-resolver": "^4.4.9", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/config-resolver": "^4.4.16", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1971,17 +1973,17 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.4.tgz", - "integrity": "sha512-MGa8ro0onekYIiesHX60LwKdkxK3Kd61p7TTbLwZemBqlnD9OLrk9sXZdFOIxXanJ+3AaJnV/jiX866eD/4PDg==", + "version": "3.996.19", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.19.tgz", + "integrity": "sha512-7Sy8+GhfwUi06NQNLplxuJuXMKJURDsNQfK8yTW6E9wN2J1B+8S5dWZG7vg3InvPPhaXqkcYTr8pzeE+dLjMbQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "^3.972.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/protocol-http": "^5.3.10", - "@smithy/signature-v4": "^5.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/middleware-sdk-s3": "^3.972.31", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -1989,18 +1991,18 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1001.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1001.0.tgz", - "integrity": "sha512-09XAq/uIYgeZhohuGRrR/R+ek3+ljFNdzWCXdqb9rlIERDjSfNiLjTtpHgSK1xTPmC5G4yWoEAyMfTXiggS6wA==", + "version": "3.1033.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1033.0.tgz", + "integrity": "sha512-/TsXhqjyRAFb0xVgmbFAha3cJfZdWjnyn6ohJ3AB4E3peLgxNcmKfYr45hruHymyJAydiHoXC3N1a8qgl41cog==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.16", - "@aws-sdk/nested-clients": "^3.996.4", - "@aws-sdk/types": "^3.973.4", - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@aws-sdk/core": "^3.974.2", + "@aws-sdk/nested-clients": "^3.997.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -2008,13 +2010,13 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.973.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.4.tgz", - "integrity": "sha512-RW60aH26Bsc016Y9B98hC0Plx6fK5P2v/iQYwMzrSjiDh1qRMUCP6KrXHYEHe3uFvKiOC93Z9zk4BJsUi6Tj1Q==", + "version": "3.973.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", + "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -2022,9 +2024,9 @@ } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.972.2", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.2.tgz", - "integrity": "sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==", + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", + "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2035,9 +2037,9 @@ } }, "node_modules/@aws-sdk/util-dynamodb": { - "version": "3.996.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.996.1.tgz", - "integrity": "sha512-5Vle00DrIcao9x5UuhkEprIQiMuhVvrxSLQwEhTb1sfWvdrLphcW4LqAtOkWSHpWF9ZdQQVKXvAOjKNV8LSlrw==", + "version": "3.996.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.996.2.tgz", + "integrity": "sha512-ddpwaZmjBzcApYN7lgtAXjk+u+GO8fiPsxzuc59UqP+zqdxI1gsenPvkyiHiF9LnYnyRGijz6oN2JylnN561qQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2047,20 +2049,20 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.997.0" + "@aws-sdk/client-dynamodb": "^3.1003.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.3.tgz", - "integrity": "sha512-yWIQSNiCjykLL+ezN5A+DfBb1gfXTytBxm57e64lYmwxDHNmInYHRJYYRAGWG1o77vKEiWaw4ui28e3yb1k5aQ==", + "version": "3.996.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.7.tgz", + "integrity": "sha512-ty4LQxN1QC+YhUP28NfEgZDEGXkyqOQy+BDriBozqHsrYO4JMgiPhfizqOGF7P+euBTZ5Ez6SKlLAMCLo8tzmw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-endpoints": "^3.3.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-endpoints": "^3.4.1", "tslib": "^2.6.2" }, "engines": { @@ -2068,9 +2070,9 @@ } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.4.tgz", - "integrity": "sha512-H1onv5SkgPBK2P6JR2MjGgbOnttoNzSPIRoeZTNPZYyaplwGg50zS3amXvXqF0/qfXpWEC9rLWU564QTB9bSog==", + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2081,29 +2083,30 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.6.tgz", - "integrity": "sha512-Fwr/llD6GOrFgQnKaI2glhohdGuBDfHfora6iG9qsBBBR8xv1SdCSwbtf5CWlUdCw5X7g76G/9Hf0Inh0EmoxA==", + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", + "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.4", - "@smithy/types": "^4.13.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.1.tgz", - "integrity": "sha512-kmgbDqT7aCBEVrqESM2JUjbf0zhDUQ7wnt3q1RuVS+3mglrcfVb2bwkbmf38npOyyPGtQPV5dWN3m+sSFAVAgQ==", + "version": "3.973.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.18.tgz", + "integrity": "sha512-Nh4YvAL0Mzv5jBvzXLFL0tLf7WPrRMnYZQ5jlFuyS0xiVJQsObMUKAkbYjmt/e04wpQqUaa+Is7k+mBr89A9yA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.16", - "@aws-sdk/types": "^3.973.4", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", + "@aws-sdk/middleware-user-agent": "^3.972.32", + "@aws-sdk/types": "^3.973.8", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -2119,13 +2122,13 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.15.tgz", - "integrity": "sha512-PxMRlCFNiQnke9YR29vjFQwz4jq+6Q04rOVFeTDR2K7Qpv9h9FOWOxG+zJjageimYbWqE3bTuLjmryWHAWbvaA==", + "version": "3.972.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.18.tgz", + "integrity": "sha512-BMDNVG1ETXRhl1tnisQiYBef3RShJ1kfZA7x7afivTFMLirfHNTb6U71K569HNXhSXbQZsweHvSDZ6euBw8hPA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.14.1", "fast-xml-parser": "5.5.8", "tslib": "^2.6.2" }, @@ -2134,9 +2137,9 @@ } }, "node_modules/@aws/lambda-invoke-store": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz", - "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2336,23 +2339,23 @@ } }, "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { @@ -2847,21 +2850,21 @@ } }, "node_modules/@emnapi/core": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz", - "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.2.0", + "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz", - "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "dev": true, "license": "MIT", "optional": true, @@ -2870,9 +2873,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", - "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", "dev": true, "license": "MIT", "optional": true, @@ -2881,9 +2884,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", "cpu": [ "ppc64" ], @@ -2898,9 +2901,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", "cpu": [ "arm" ], @@ -2915,9 +2918,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", "cpu": [ "arm64" ], @@ -2932,9 +2935,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", "cpu": [ "x64" ], @@ -2949,9 +2952,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", "cpu": [ "arm64" ], @@ -2966,9 +2969,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", "cpu": [ "x64" ], @@ -2983,9 +2986,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", "cpu": [ "arm64" ], @@ -3000,9 +3003,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", "cpu": [ "x64" ], @@ -3017,9 +3020,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", "cpu": [ "arm" ], @@ -3034,9 +3037,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", "cpu": [ "arm64" ], @@ -3051,9 +3054,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", "cpu": [ "ia32" ], @@ -3068,9 +3071,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", "cpu": [ "loong64" ], @@ -3085,9 +3088,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", "cpu": [ "mips64el" ], @@ -3102,9 +3105,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", "cpu": [ "ppc64" ], @@ -3119,9 +3122,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", "cpu": [ "riscv64" ], @@ -3136,9 +3139,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", "cpu": [ "s390x" ], @@ -3153,9 +3156,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", "cpu": [ "x64" ], @@ -3170,9 +3173,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", "cpu": [ "arm64" ], @@ -3187,9 +3190,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", "cpu": [ "x64" ], @@ -3204,9 +3207,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", "cpu": [ "arm64" ], @@ -3221,9 +3224,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", "cpu": [ "x64" ], @@ -3238,9 +3241,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", "cpu": [ "arm64" ], @@ -3255,9 +3258,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", "cpu": [ "x64" ], @@ -3272,9 +3275,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", "cpu": [ "arm64" ], @@ -3289,9 +3292,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", "cpu": [ "ia32" ], @@ -3306,9 +3309,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", "cpu": [ "x64" ], @@ -3482,9 +3485,9 @@ } }, "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true, "license": "MIT", "engines": { @@ -3734,9 +3737,9 @@ "license": "MIT" }, "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -4289,9 +4292,9 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, "license": "MIT" }, @@ -4357,24 +4360,10 @@ "dev": true, "license": "(Unlicense OR Apache-2.0)" }, - "node_modules/@smithy/abort-controller": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.10.tgz", - "integrity": "sha512-qocxM/X4XGATqQtUkbE9SPUB6wekBi+FyJOMbPj0AhvyvFGYEmOlz6VB22iMePCQsFmMIvFSeViDvA7mZJG47g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.13.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.1.tgz", - "integrity": "sha512-y5d4xRiD6TzeP5BWlb+Ig/VFqF+t9oANNhGeMqyzU7obw7FYgTgVi50i5JqBTeKp+TABeDIeeXFZdz65RipNtA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", + "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4385,13 +4374,13 @@ } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.2.tgz", - "integrity": "sha512-QzzYIlf4yg0w5TQaC9VId3B3ugSk1MI/wb7tgcHtd7CBV9gNRKZrhc2EPSxSZuDy10zUZ0lomNMgkc6/VVe8xg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", + "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-base64": "^4.3.1", + "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -4399,17 +4388,17 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.9.tgz", - "integrity": "sha512-ejQvXqlcU30h7liR9fXtj7PIAau1t/sFbJpgWPfiYDs7zd16jpH0IsSXKcba2jF6ChTXvIjACs27kNMc5xxE2Q==", + "version": "4.4.17", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.17.tgz", + "integrity": "sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", - "@smithy/util-endpoints": "^3.3.1", - "@smithy/util-middleware": "^4.2.10", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", "tslib": "^2.6.2" }, "engines": { @@ -4417,21 +4406,21 @@ } }, "node_modules/@smithy/core": { - "version": "3.23.7", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.7.tgz", - "integrity": "sha512-/+ldRdtiO5Cb26afAZOG1FZM0x7D4AYdjpyOv2OScJw+4C7X+OLdRnNKF5UyUE0VpPgSKr3rnF/kvprRA4h2kg==", + "version": "3.23.16", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.16.tgz", + "integrity": "sha512-JStomOrINQA1VqNEopLsgcdgwd42au7mykKqVr30XFw89wLt9sDxJDi4djVPRwQmmzyTGy/uOvTc2ultMpFi1w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.2.11", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-body-length-browser": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-stream": "^4.5.16", - "@smithy/util-utf8": "^4.2.1", - "@smithy/uuid": "^1.1.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.24", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" }, "engines": { @@ -4439,16 +4428,16 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.10.tgz", - "integrity": "sha512-3bsMLJJLTZGZqVGGeBVFfLzuRulVsGTj12BzRKODTHqUABpIr0jMN1vN3+u6r2OfyhAQ2pXaMZWX/swBK5I6PQ==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.14.tgz", + "integrity": "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", "tslib": "^2.6.2" }, "engines": { @@ -4456,15 +4445,15 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.10.tgz", - "integrity": "sha512-A4ynrsFFfSXUHicfTcRehytppFBcY3HQxEGYiyGktPIOye3Ot7fxpiy4VR42WmtGI4Wfo6OXt/c1Ky1nUFxYYQ==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.14.tgz", + "integrity": "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.13.0", - "@smithy/util-hex-encoding": "^4.2.1", + "@smithy/types": "^4.14.1", + "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -4472,14 +4461,14 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.10.tgz", - "integrity": "sha512-0xupsu9yj9oDVuQ50YCTS9nuSYhGlrwqdaKQel9y2Fz7LU9fNErVlw9N0o4pm4qqvWEGbSTI4HKc6XJfB30MVw==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.14.tgz", + "integrity": "sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/eventstream-serde-universal": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4487,13 +4476,13 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.10.tgz", - "integrity": "sha512-8kn6sinrduk0yaYHMJDsNuiFpXwQwibR7n/4CDUqn4UgaG+SeBHu5jHGFdU9BLFAM7Q4/gvr9RYxBHz9/jKrhA==", + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.14.tgz", + "integrity": "sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4501,14 +4490,14 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.10.tgz", - "integrity": "sha512-uUrxPGgIffnYfvIOUmBM5i+USdEBRTdh7mLPttjphgtooxQ8CtdO1p6K5+Q4BBAZvKlvtJ9jWyrWpBJYzBKsyQ==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.14.tgz", + "integrity": "sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/eventstream-serde-universal": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4516,14 +4505,14 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.10.tgz", - "integrity": "sha512-aArqzOEvcs2dK+xQVCgLbpJQGfZihw8SD4ymhkwNTtwKbnrzdhJsFDKuMQnam2kF69WzgJYOU5eJlCx+CA32bw==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.14.tgz", + "integrity": "sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/eventstream-codec": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4531,16 +4520,16 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.12", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.12.tgz", - "integrity": "sha512-muS5tFw+A/uo+U+yig06vk1776UFM+aAp9hFM8efI4ZcHhTcgv6NTeK4x7ltHeMPBwnhEjcf0MULTyxNkSNxDw==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.17.tgz", + "integrity": "sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.10", - "@smithy/querystring-builder": "^4.2.10", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/querystring-builder": "^4.2.14", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -4548,15 +4537,15 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.11.tgz", - "integrity": "sha512-DrcAx3PM6AEbWZxsKl6CWAGnVwiz28Wp1ZhNu+Hi4uI/6C1PIZBIaPM2VoqBDAsOWbM6ZVzOEQMxFLLdmb4eBQ==", + "version": "4.2.15", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.15.tgz", + "integrity": "sha512-0PJ4Al3fg2nM4qKrAIxyNcApgqHAXcBkN8FeizOz69z0rb26uZ6lMESYtxegaTlXB5Hj84JfwMPavMrwDMjucA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.1", - "@smithy/chunked-blob-reader-native": "^4.2.2", - "@smithy/types": "^4.13.0", + "@smithy/chunked-blob-reader": "^5.2.2", + "@smithy/chunked-blob-reader-native": "^4.2.3", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4564,15 +4553,15 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.10.tgz", - "integrity": "sha512-1VzIOI5CcsvMDvP3iv1vG/RfLJVVVc67dCRyLSB2Hn9SWCZrDO3zvcIzj3BfEtqRW5kcMg5KAeVf1K3dR6nD3w==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.14.tgz", + "integrity": "sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-buffer-from": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/types": "^4.14.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -4580,14 +4569,14 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.10.tgz", - "integrity": "sha512-w78xsYrOlwXKwN5tv1GnKIRbHb1HygSpeZMP6xDxCPGf1U/xDHjCpJu64c5T35UKyEPwa0bPeIcvU69VY3khUA==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.14.tgz", + "integrity": "sha512-tw4GANWkZPb6+BdD4Fgucqzey2+r73Z/GRo9zklsCdwrnxxumUV83ZIaBDdudV4Ylazw3EPTiJZhpX42105ruQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-utf8": "^4.2.1", + "@smithy/types": "^4.14.1", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -4595,13 +4584,13 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.10.tgz", - "integrity": "sha512-vy9KPNSFUU0ajFYk0sDZIYiUlAWGEAhRfehIr5ZkdFrRFTAuXEPUd41USuqHU6vvLX4r6Q9X7MKBco5+Il0Org==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.14.tgz", + "integrity": "sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4609,9 +4598,9 @@ } }, "node_modules/@smithy/is-array-buffer": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.1.tgz", - "integrity": "sha512-Yfu664Qbf1B4IYIsYgKoABt010daZjkaCRvdU/sPnZG6TtHOB0md0RjNdLGzxe5UIdn9js4ftPICzmkRa9RJ4Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4622,14 +4611,14 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.10.tgz", - "integrity": "sha512-Op+Dh6dPLWTjWITChFayDllIaCXRofOed8ecpggTC5fkh8yXes0vAEX7gRUfjGK+TlyxoCAA05gHbZW/zB9JwQ==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.14.tgz", + "integrity": "sha512-V2v0vx+h0iUSNG1Alt+GNBMSLGCrl9iVsdd+Ap67HPM9PN479x12V8LkuMoKImNZxn3MXeuyUjls+/7ZACZghA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-utf8": "^4.2.1", + "@smithy/types": "^4.14.1", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -4637,20 +4626,20 @@ } }, "node_modules/@smithy/middleware-compression": { - "version": "4.3.36", - "resolved": "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-4.3.36.tgz", - "integrity": "sha512-CHhEjVGkZhe9T3mlCWoGrJZv9CRUwYtfosGMGY3T64cf4TduIxkVkcSAradQwT+3JIi6EylxFZFKrx42qbKZXg==", + "version": "4.3.45", + "resolved": "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-4.3.45.tgz", + "integrity": "sha512-P/tc/HmkxgD2iZBYP4vws+cQktZJrc1pGssNLlN0N9T7rpeSi8i1R7cERz6CGkvB9ApgzdqbgiAxKl+f5zWV3Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.7", - "@smithy/is-array-buffer": "^4.2.1", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-config-provider": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-utf8": "^4.2.1", + "@smithy/core": "^3.23.16", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-utf8": "^4.2.2", "fflate": "0.8.1", "tslib": "^2.6.2" }, @@ -4659,14 +4648,14 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.10.tgz", - "integrity": "sha512-TQZ9kX5c6XbjhaEBpvhSvMEZ0klBs1CFtOdPFwATZSbC9UeQfKHPLPN9Y+I6wZGMOavlYTOlHEPDrt42PMSH9w==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.14.tgz", + "integrity": "sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4674,19 +4663,19 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.21", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.21.tgz", - "integrity": "sha512-CoVGZaqIC0tEjz0ga3ciwCMA5fd/4lIOwO2wx0fH+cTi1zxSFZnMJbIiIF9G1d4vRSDyTupDrpS3FKBBJGkRZg==", + "version": "4.4.31", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.31.tgz", + "integrity": "sha512-KJPdCIN2kOE2aGmqZd7eUTr4WQwOGgtLWgUkswGJggs7rBcQYQjcZMEDa3C0DwbOiXS9L8/wDoQHkfxBYLfiLw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.7", - "@smithy/middleware-serde": "^4.2.11", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", - "@smithy/url-parser": "^4.2.10", - "@smithy/util-middleware": "^4.2.10", + "@smithy/core": "^3.23.16", + "@smithy/middleware-serde": "^4.2.19", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-middleware": "^4.2.14", "tslib": "^2.6.2" }, "engines": { @@ -4694,20 +4683,21 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.38", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.38.tgz", - "integrity": "sha512-WdHvdhjE6Fj78vxFwDKFDwlqGOGRUWrwGeuENUbTVE46Su9mnQM+dXHtbnCaQvwuSYrRsjpe8zUsFpwUp/azlA==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.5.4.tgz", + "integrity": "sha512-/z7nIFK+ZRW3Ie/l3NEVGdy34LvmEOzBrtBAvgWZ/4PrKX0xP3kWm8pkfcwUk523SqxZhdbQP9JSXgjF77Uhpw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/service-error-classification": "^4.2.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-retry": "^4.2.10", - "@smithy/uuid": "^1.1.1", + "@smithy/core": "^3.23.16", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/service-error-classification": "^4.3.0", + "@smithy/smithy-client": "^4.12.12", + "@smithy/types": "^4.14.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.3", + "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" }, "engines": { @@ -4715,14 +4705,15 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.11.tgz", - "integrity": "sha512-STQdONGPwbbC7cusL60s7vOa6He6A9w2jWhoapL0mgVjmR19pr26slV+yoSP76SIssMTX/95e5nOZ6UQv6jolg==", + "version": "4.2.19", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.19.tgz", + "integrity": "sha512-Q6y+W9h3iYVMCKWDoVge+OC1LKFqbEKaq8SIWG2X2bWJRpd/6dDLyICcNLT6PbjH3Rr6bmg/SeDB25XFOFfeEw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", + "@smithy/core": "^3.23.16", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4730,13 +4721,13 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.10.tgz", - "integrity": "sha512-pmts/WovNcE/tlyHa8z/groPeOtqtEpp61q3W0nW1nDJuMq/x+hWa/OVQBtgU0tBqupeXq0VBOLA4UZwE8I0YA==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.14.tgz", + "integrity": "sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4744,15 +4735,15 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.10.tgz", - "integrity": "sha512-UALRbJtVX34AdP2VECKVlnNgidLHA2A7YgcJzwSBg1hzmnO/bZBHl/LDQQyYifzUwp1UOODnl9JJ3KNawpUJ9w==", + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.14.tgz", + "integrity": "sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.10", - "@smithy/shared-ini-file-loader": "^4.4.5", - "@smithy/types": "^4.13.0", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4760,16 +4751,15 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.13.tgz", - "integrity": "sha512-o8CP8w6tlUA0lk+Qfwm6Ed0jCWk3bEY6iBOJjdBaowbXKCSClk8zIHQvUL6RUZMvuNafF27cbRCMYqw6O1v4aA==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.6.0.tgz", + "integrity": "sha512-P734cAoTFtuGfWa/R3jgBnGlURt2w9bYEBwQNMKf58sRM9RShirB2mKwLsVP+jlG/wxpCu8abv8NxdUts8tdLA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/querystring-builder": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/protocol-http": "^5.3.14", + "@smithy/querystring-builder": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4777,13 +4767,13 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.10.tgz", - "integrity": "sha512-5jm60P0CU7tom0eNrZ7YrkgBaoLFXzmqB0wVS+4uK8PPGmosSrLNf6rRd50UBvukztawZ7zyA8TxlrKpF5z9jw==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.14.tgz", + "integrity": "sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4791,13 +4781,13 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.10.tgz", - "integrity": "sha512-2NzVWpYY0tRdfeCJLsgrR89KE3NTWT2wGulhNUxYlRmtRmPwLQwKzhrfVaiNlA9ZpJvbW7cjTVChYKgnkqXj1A==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.14.tgz", + "integrity": "sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4805,14 +4795,14 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.10.tgz", - "integrity": "sha512-HeN7kEvuzO2DmAzLukE9UryiUvejD3tMp9a1D1NJETerIfKobBUCLfviP6QEk500166eD2IATaXM59qgUI+YDA==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.14.tgz", + "integrity": "sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", - "@smithy/util-uri-escape": "^4.2.1", + "@smithy/types": "^4.14.1", + "@smithy/util-uri-escape": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -4820,13 +4810,13 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.10.tgz", - "integrity": "sha512-4Mh18J26+ao1oX5wXJfWlTT+Q1OpDR8ssiC9PDOuEgVBGloqg18Fw7h5Ct8DyT9NBYwJgtJ2nLjKKFU6RP1G1Q==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.14.tgz", + "integrity": "sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4834,26 +4824,26 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.10.tgz", - "integrity": "sha512-0R/+/Il5y8nB/By90o8hy/bWVYptbIfvoTYad0igYQO5RefhNCDmNzqxaMx7K1t/QWo0d6UynqpqN5cCQt1MCg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.3.0.tgz", + "integrity": "sha512-9jKsBYQRPR0xBLgc2415RsA5PIcP2sis4oBdN9s0D13cg1B1284mNTjx9Yc+BEERXzuPm5ObktI96OxsKh8E9A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0" + "@smithy/types": "^4.14.1" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.5.tgz", - "integrity": "sha512-pHgASxl50rrtOztgQCPmOXFjRW+mCd7ALr/3uXNzRrRoGV5G2+78GOsQ3HlQuBVHCh9o6xqMNvlIKZjWn4Euug==", + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.9.tgz", + "integrity": "sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4861,19 +4851,19 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.10.tgz", - "integrity": "sha512-Wab3wW8468WqTKIxI+aZe3JYO52/RYT/8sDOdzkUhjnLakLe9qoQqIcfih/qxcF4qWEFoWBszY0mj5uxffaVXA==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.14.tgz", + "integrity": "sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.1", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-hex-encoding": "^4.2.1", - "@smithy/util-middleware": "^4.2.10", - "@smithy/util-uri-escape": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -4881,18 +4871,18 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.1.tgz", - "integrity": "sha512-Xf9UFHlAihewfkmLNZ6I/Ek6kcYBKoU3cbRS9Z4q++9GWoW0YFbAHs7wMbuXm+nGuKHZ5OKheZMuDdaWPv8DJw==", + "version": "4.12.12", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.12.tgz", + "integrity": "sha512-daO7SJn4eM6ArbmrEs+/BTbH7af8AEbSL3OMQdcRvvn8tuUcR5rU2n6DgxIV53aXMS42uwK8NgKKCh5XgqYOPQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.7", - "@smithy/middleware-endpoint": "^4.4.21", - "@smithy/middleware-stack": "^4.2.10", - "@smithy/protocol-http": "^5.3.10", - "@smithy/types": "^4.13.0", - "@smithy/util-stream": "^4.5.16", + "@smithy/core": "^3.23.16", + "@smithy/middleware-endpoint": "^4.4.31", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-stream": "^4.5.24", "tslib": "^2.6.2" }, "engines": { @@ -4900,9 +4890,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", - "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4913,14 +4903,14 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.10.tgz", - "integrity": "sha512-uypjF7fCDsRk26u3qHmFI/ePL7bxxB9vKkE+2WKEciHhz+4QtbzWiHRVNRJwU3cKhrYDYQE3b0MRFtqfLYdA4A==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.14.tgz", + "integrity": "sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/querystring-parser": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -4928,14 +4918,14 @@ } }, "node_modules/@smithy/util-base64": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.1.tgz", - "integrity": "sha512-BKGuawX4Doq/bI/uEmg+Zyc36rJKWuin3py89PquXBIBqmbnJwBBsmKhdHfNEp0+A4TDgLmT/3MSKZ1SxHcR6w==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -4943,9 +4933,9 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.1.tgz", - "integrity": "sha512-SiJeLiozrAoCrgDBUgsVbmqHmMgg/2bA15AzcbcW+zan7SuyAVHN4xTSbq0GlebAIwlcaX32xacnrG488/J/6g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4956,9 +4946,9 @@ } }, "node_modules/@smithy/util-body-length-node": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.2.tgz", - "integrity": "sha512-4rHqBvxtJEBvsZcFQSPQqXP2b/yy/YlB66KlcEgcH2WNoOKCKB03DSLzXmOsXjbl8dJ4OEYTn31knhdznwk7zw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4969,13 +4959,13 @@ } }, "node_modules/@smithy/util-buffer-from": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.1.tgz", - "integrity": "sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.1", + "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -4983,9 +4973,9 @@ } }, "node_modules/@smithy/util-config-provider": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.1.tgz", - "integrity": "sha512-462id/00U8JWFw6qBuTSWfN5TxOHvDu4WliI97qOIOnuC/g+NDAknTU8eoGXEPlLkRVgWEr03jJBLV4o2FL8+A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4996,15 +4986,15 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.37", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.37.tgz", - "integrity": "sha512-JlPZhV1kQCGNJgofRTU6E8kHrjCKsb6cps8gco8QDVaFl7biFYzHg0p1x89ytIWyVyCkY3nOpO8tJPM47Vqlww==", + "version": "4.3.48", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.48.tgz", + "integrity": "sha512-hxVRVPYaRDWa6YQdse1aWX1qrksmLsvNyGBKdc32q4jFzSjxYVNWfstknAfR228TnzS4tzgswXRuYIbhXBuXFQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", + "@smithy/property-provider": "^4.2.14", + "@smithy/smithy-client": "^4.12.12", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5012,18 +5002,18 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.40", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.40.tgz", - "integrity": "sha512-BM5cPEsyxHdYYO4Da77E94lenhaVPNUzBTyCGDkcw/n/mE8Q1cfHwr+n/w2bNPuUsPC30WaW5/hGKWOTKqw8kw==", + "version": "4.2.53", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.53.tgz", + "integrity": "sha512-ybgCk+9JdBq8pYC8Y6U5fjyS8e4sboyAShetxPNL0rRBtaVl56GSFAxsolVBIea1tXR4LPIzL8i6xqmcf0+DCQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.9", - "@smithy/credential-provider-imds": "^4.2.10", - "@smithy/node-config-provider": "^4.3.10", - "@smithy/property-provider": "^4.2.10", - "@smithy/smithy-client": "^4.12.1", - "@smithy/types": "^4.13.0", + "@smithy/config-resolver": "^4.4.17", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/smithy-client": "^4.12.12", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5031,14 +5021,14 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.1.tgz", - "integrity": "sha512-xyctc4klmjmieQiF9I1wssBWleRV0RhJ2DpO8+8yzi2LO1Z+4IWOZNGZGNj4+hq9kdo+nyfrRLmQTzc16Op2Vg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.4.2.tgz", + "integrity": "sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.10", - "@smithy/types": "^4.13.0", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5046,9 +5036,9 @@ } }, "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.1.tgz", - "integrity": "sha512-c1hHtkgAWmE35/50gmdKajgGAKV3ePJ7t6UtEmpfCWJmQE9BQAQPz0URUVI89eSkcDqCtzqllxzG28IQoZPvwA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5059,13 +5049,13 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.10.tgz", - "integrity": "sha512-LxaQIWLp4y0r72eA8mwPNQ9va4h5KeLM0I3M/HV9klmFaY2kN766wf5vsTzmaOpNNb7GgXAd9a25P3h8T49PSA==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.14.tgz", + "integrity": "sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5073,14 +5063,14 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.10.tgz", - "integrity": "sha512-HrBzistfpyE5uqTwiyLsFHscgnwB0kgv8vySp7q5kZ0Eltn/tjosaSGGDj/jJ9ys7pWzIP/icE2d+7vMKXLv7A==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.3.3.tgz", + "integrity": "sha512-idjUvd4M9Jj6rXkhqw4H4reHoweuK4ZxYWyOrEp4N2rOF5VtaOlQGLDQJva/8WanNXk9ScQtsAb7o5UHGvFm4A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/service-error-classification": "^4.3.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5088,19 +5078,19 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.5.16", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.16.tgz", - "integrity": "sha512-c7awZV6cxY0czgDDSr+Bz0XfRtg8AwW2BWhrHhLJISrpmwv8QzA2qzTllWyMVNdy1+UJr9vCm29hzuh3l8TTFw==", + "version": "4.5.24", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.24.tgz", + "integrity": "sha512-na5vv2mBSDzXewLEEoWGI7LQQkfpmFEomBsmOpzLFjqGctm0iMwXY5lAwesY9pIaErkccW0qzEOUcYP+WKneXg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.12", - "@smithy/node-http-handler": "^4.4.13", - "@smithy/types": "^4.13.0", - "@smithy/util-base64": "^4.3.1", - "@smithy/util-buffer-from": "^4.2.1", - "@smithy/util-hex-encoding": "^4.2.1", - "@smithy/util-utf8": "^4.2.1", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/node-http-handler": "^4.6.0", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5108,9 +5098,9 @@ } }, "node_modules/@smithy/util-uri-escape": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.1.tgz", - "integrity": "sha512-YmiUDn2eo2IOiWYYvGQkgX5ZkBSiTQu4FlDo5jNPpAxng2t6Sjb6WutnZV9l6VR4eJul1ABmCrnWBC9hKHQa6Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5121,13 +5111,13 @@ } }, "node_modules/@smithy/util-utf8": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.1.tgz", - "integrity": "sha512-DSIwNaWtmzrNQHv8g7DBGR9mulSit65KSj5ymGEIAknmIN8IpbZefEep10LaMG/P/xquwbmJ1h9ectz8z6mV6g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.1", + "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5135,14 +5125,13 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.10.tgz", - "integrity": "sha512-4eTWph/Lkg1wZEDAyObwme0kmhEb7J/JjibY2znJdrYRgKbKqB7YoEhhJVJ4R1g/SYih4zuwX7LpJaM8RsnTVg==", + "version": "4.2.16", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.16.tgz", + "integrity": "sha512-GtclrKoZ3Lt7jPQ7aTIYKfjY92OgceScftVnkTsG8e1KV8rkvZgN+ny6YSRhd9hxB8rZtwVbmln7NTvE5O3GmQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.10", - "@smithy/types": "^4.13.0", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5150,9 +5139,9 @@ } }, "node_modules/@smithy/uuid": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.1.tgz", - "integrity": "sha512-dSfDCeihDmZlV2oyr0yWPTUfh07suS+R5OB+FZGiv/hHyK3hrFBW5rR1UYjfa57vBsrP9lciFkRPzebaV1Qujw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6031,6 +6020,19 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/archive-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", @@ -6097,9 +6099,9 @@ "license": "MIT" }, "node_modules/archiver-utils/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -6423,9 +6425,9 @@ } }, "node_modules/bare-fs": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.5.tgz", - "integrity": "sha512-XvwYM6VZqKoqDll8BmSww5luA5eflDzY0uEFfBJtFKe4PAAtxBjU3YIxzIBzhyaEQBy1VXEQBto4cpN5RZJw+w==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz", + "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==", "license": "Apache-2.0", "dependencies": { "bare-events": "^2.5.4", @@ -6447,9 +6449,9 @@ } }, "node_modules/bare-os": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.7.1.tgz", - "integrity": "sha512-ebvMaS5BgZKmJlvuWh14dg9rbUI84QeV3WlWn6Ph6lFI8jJoh7ADtVTyD2c93euwbe+zgi0DVrl4YmqXeM9aIA==", + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz", + "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==", "license": "Apache-2.0", "engines": { "bare": ">=1.14.0" @@ -6465,19 +6467,23 @@ } }, "node_modules/bare-stream": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.8.0.tgz", - "integrity": "sha512-reUN0M2sHRqCdG4lUK3Fw8w98eeUIZHL5c3H7Mbhk2yVBL+oofgaIp0ieLfD5QXwPCypBpmEEKU2WZKzbAk8GA==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.0.tgz", + "integrity": "sha512-3zAJRZMDFGjdn+RVnNpF9kuELw+0Fl3lpndM4NcEOhb9zwtSo/deETfuIwMSE5BXanA0FrN1qVjffGwAg2Y7EA==", "license": "Apache-2.0", "dependencies": { - "streamx": "^2.21.0", + "streamx": "^2.25.0", "teex": "^1.0.1" }, "peerDependencies": { + "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, "bare-buffer": { "optional": true }, @@ -6487,9 +6493,9 @@ } }, "node_modules/bare-url": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", - "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.2.tgz", + "integrity": "sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A==", "license": "Apache-2.0", "dependencies": { "bare-path": "^3.0.0" @@ -6516,9 +6522,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", - "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "version": "2.10.20", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.20.tgz", + "integrity": "sha512-1AaXxEPfXT+GvTBJFuy4yXVHWJBXa4OdbIebGN/wX5DlsIkU0+wzGnd2lOzokSk51d5LUmqjgBLRLlypLUqInQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6559,6 +6565,7 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, "license": "MIT" }, "node_modules/bowser": { @@ -6593,9 +6600,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -6613,11 +6620,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -6771,15 +6778,15 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" }, "engines": { @@ -6841,9 +6848,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001776", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001776.tgz", - "integrity": "sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==", + "version": "1.0.30001788", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz", + "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==", "dev": true, "funding": [ { @@ -7391,9 +7398,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", "dev": true, "license": "MIT" }, @@ -7940,9 +7947,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.307", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz", - "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==", + "version": "1.5.341", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.341.tgz", + "integrity": "sha512-1sZTssferjgDgaqRTc0ieP+ozzpOy7LQTPTtEW3yQFn4+ORdIAZWV5BthXPyHF7YqLvFJCUPhNhdAJQYlYUgiw==", "dev": true, "license": "ISC" }, @@ -7976,9 +7983,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.0.tgz", - "integrity": "sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "dev": true, "license": "MIT", "dependencies": { @@ -8143,9 +8150,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -8156,32 +8163,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.3", - "@esbuild/android-arm": "0.27.3", - "@esbuild/android-arm64": "0.27.3", - "@esbuild/android-x64": "0.27.3", - "@esbuild/darwin-arm64": "0.27.3", - "@esbuild/darwin-x64": "0.27.3", - "@esbuild/freebsd-arm64": "0.27.3", - "@esbuild/freebsd-x64": "0.27.3", - "@esbuild/linux-arm": "0.27.3", - "@esbuild/linux-arm64": "0.27.3", - "@esbuild/linux-ia32": "0.27.3", - "@esbuild/linux-loong64": "0.27.3", - "@esbuild/linux-mips64el": "0.27.3", - "@esbuild/linux-ppc64": "0.27.3", - "@esbuild/linux-riscv64": "0.27.3", - "@esbuild/linux-s390x": "0.27.3", - "@esbuild/linux-x64": "0.27.3", - "@esbuild/netbsd-arm64": "0.27.3", - "@esbuild/netbsd-x64": "0.27.3", - "@esbuild/openbsd-arm64": "0.27.3", - "@esbuild/openbsd-x64": "0.27.3", - "@esbuild/openharmony-arm64": "0.27.3", - "@esbuild/sunos-x64": "0.27.3", - "@esbuild/win32-arm64": "0.27.3", - "@esbuild/win32-ia32": "0.27.3", - "@esbuild/win32-x64": "0.27.3" + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" } }, "node_modules/escalade": { @@ -8551,9 +8558,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-builder": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", - "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz", + "integrity": "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==", "dev": true, "funding": [ { @@ -9097,9 +9104,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.13.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz", + "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==", "dev": true, "license": "MIT", "dependencies": { @@ -9275,9 +9282,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "dev": true, "license": "MIT", "dependencies": { @@ -9992,9 +9999,9 @@ "license": "MIT" }, "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -10169,19 +10176,6 @@ "fsevents": "^2.3.3" } }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/jest-leak-detector": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", @@ -10233,19 +10227,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/jest-mock": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", @@ -10399,9 +10380,9 @@ "license": "MIT" }, "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -10537,19 +10518,6 @@ "node": ">=8" } }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/jest-validate": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", @@ -10763,9 +10731,9 @@ } }, "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -10881,19 +10849,6 @@ "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/listr2": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", @@ -11430,6 +11385,18 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -11510,12 +11477,12 @@ } }, "node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" @@ -11695,9 +11662,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", "dev": true, "license": "MIT" }, @@ -11994,9 +11961,9 @@ } }, "node_modules/path-expression-matcher": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", - "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", "dev": true, "funding": [ { @@ -12057,9 +12024,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -12111,12 +12078,13 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -12296,9 +12264,9 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -12435,9 +12403,9 @@ "license": "MIT" }, "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -12711,39 +12679,39 @@ }, "node_modules/serverless": { "name": "osls", - "version": "3.62.1", - "resolved": "https://registry.npmjs.org/osls/-/osls-3.62.1.tgz", - "integrity": "sha512-yhFvAOcUUyWoUY/4hXIzCtiJrrr6G/vWKC96XgV0u0AhmmUl1x6FuabNLBQpHYipQijr6SXtdctDfgExcrxnCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@aws-sdk/client-api-gateway": "^3.588.0", - "@aws-sdk/client-apigatewayv2": "^3.588.0", - "@aws-sdk/client-cloudformation": "^3.588.0", - "@aws-sdk/client-cloudwatch": "^3.588.0", - "@aws-sdk/client-cloudwatch-logs": "^3.588.0", - "@aws-sdk/client-cognito-identity-provider": "^3.588.0", - "@aws-sdk/client-dynamodb": "^3.588.0", - "@aws-sdk/client-ecr": "^3.588.0", - "@aws-sdk/client-eventbridge": "^3.588.0", - "@aws-sdk/client-iam": "^3.588.0", - "@aws-sdk/client-iot": "^3.588.0", - "@aws-sdk/client-iot-data-plane": "^3.588.0", - "@aws-sdk/client-kinesis": "^3.588.0", - "@aws-sdk/client-lambda": "^3.588.0", - "@aws-sdk/client-s3": "^3.588.0", - "@aws-sdk/client-sns": "^3.588.0", - "@aws-sdk/client-sqs": "^3.588.0", - "@aws-sdk/client-ssm": "^3.588.0", - "@aws-sdk/client-sts": "^3.588.0", - "@aws-sdk/credential-providers": "^3.588.0", - "@aws-sdk/lib-dynamodb": "^3.588.0", - "@aws-sdk/lib-storage": "^3.588.0", + "version": "3.63.2", + "resolved": "https://registry.npmjs.org/osls/-/osls-3.63.2.tgz", + "integrity": "sha512-X37WM+aTjfHeo537dBWgIYkNgxNzhpaG9RGvmsjVG9r5SbZR5yFkDj7Hm5IdDYrxA88Jewumlp/59sV11vJRPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@aws-sdk/client-api-gateway": "^3.975.0", + "@aws-sdk/client-apigatewayv2": "^3.975.0", + "@aws-sdk/client-cloudformation": "^3.975.0", + "@aws-sdk/client-cloudwatch": "^3.975.0", + "@aws-sdk/client-cloudwatch-logs": "^3.975.0", + "@aws-sdk/client-cognito-identity-provider": "^3.975.0", + "@aws-sdk/client-dynamodb": "^3.975.0", + "@aws-sdk/client-ecr": "^3.975.0", + "@aws-sdk/client-eventbridge": "^3.975.0", + "@aws-sdk/client-iam": "^3.975.0", + "@aws-sdk/client-iot": "^3.975.0", + "@aws-sdk/client-iot-data-plane": "^3.975.0", + "@aws-sdk/client-kinesis": "^3.975.0", + "@aws-sdk/client-lambda": "^3.975.0", + "@aws-sdk/client-s3": "^3.975.0", + "@aws-sdk/client-sns": "^3.975.0", + "@aws-sdk/client-sqs": "^3.975.0", + "@aws-sdk/client-ssm": "^3.975.0", + "@aws-sdk/client-sts": "^3.975.0", + "@aws-sdk/credential-providers": "^3.975.0", + "@aws-sdk/lib-dynamodb": "^3.975.0", + "@aws-sdk/lib-storage": "^3.975.0", "@serverless/utils": "^6.13.1", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", "archiver": "^7.0.1", - "aws-sdk": "^2.1692.0", + "aws-sdk": "^2.1693.0", "bluebird": "^3.7.2", "cachedir": "^2.3.0", "chalk": "^4.1.2", @@ -12972,14 +12940,14 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -13255,9 +13223,9 @@ } }, "node_modules/streamx": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", - "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz", + "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==", "license": "MIT", "dependencies": { "events-universal": "^1.0.0", @@ -13427,9 +13395,9 @@ } }, "node_modules/strnum": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.1.tgz", - "integrity": "sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.3.tgz", + "integrity": "sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==", "dev": true, "funding": [ { @@ -13529,9 +13497,9 @@ } }, "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "dev": true, "license": "MIT", "engines": { @@ -13564,9 +13532,9 @@ } }, "node_modules/terser": { - "version": "5.46.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", - "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -13583,9 +13551,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.17.tgz", - "integrity": "sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, "license": "MIT", "dependencies": { @@ -13672,9 +13640,9 @@ "license": "MIT" }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -13748,9 +13716,9 @@ } }, "node_modules/tinyexec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", - "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.1.tgz", + "integrity": "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==", "dev": true, "license": "MIT", "engines": { @@ -13963,9 +13931,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -14457,9 +14425,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "dev": true, "license": "ISC", "bin": { diff --git a/package.json b/package.json index a79f96e6b..50a7bbbd9 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ }, "dependencies": { "archiver": "^7.0.1", - "bluebird": "^3.7.2", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^11.3.4", "glob": "^13.0.6", diff --git a/tests/compile.test.js b/tests/compile.test.js index efa91bd2a..52fc2cfb8 100644 --- a/tests/compile.test.js +++ b/tests/compile.test.js @@ -43,19 +43,15 @@ describe('compile', () => { }); it('should fail if configuration is missing', () => { - expect.assertions(1); delete module.webpackConfig; - return module.compile().catch(e => { - expect(e).toEqual('Unable to find Webpack configuration'); - }); + return expect(module.compile()).rejects.toThrow('Unable to find Webpack configuration'); }); it('should fail if plugin configuration is missing', () => { const testWebpackConfig = 'testconfig'; module.webpackConfig = testWebpackConfig; module.configuration = undefined; - expect.assertions(1); - return module.compile().catch(e => expect(e.toString()).toEqual('ServerlessError: Missing plugin configuration')); + return expect(module.compile()).rejects.toThrow('Missing plugin configuration'); }); it('should fail if there are compilation errors', () => { @@ -66,6 +62,13 @@ describe('compile', () => { return expect(module.compile()).rejects.toThrow(/compilation error/); }); + it('should fail if webpack run returns an error', () => { + module.webpackConfig = 'testconfig'; + module.configuration = { concurrency: 1 }; + webpackMock.compilerMock.run.mockImplementation(cb => cb(new Error('Webpack exploded'))); + return expect(module.compile()).rejects.toThrow('Webpack exploded'); + }); + it('should work with multi compile', () => { const testWebpackConfig = 'testconfig'; const multiStats = { @@ -191,6 +194,57 @@ describe('compile', () => { }); }); + it('should aggregate concurrent webpack errors without logger', () => { + module.webpackConfig = ['testconfig', 'testconfig2']; + module.configuration = { concurrency: 2 }; + webpackMock.compilerMock.run.mockImplementation(cb => cb(new Error('Webpack exploded'))); + return expect(module.compile()).rejects.toThrow('Webpack compilation errors, see stats above'); + }); + + it('should aggregate concurrent webpack errors with logger output', () => { + const log = jest.fn(); + log.verbose = jest.fn(); + const progress = { + update: jest.fn(), + remove: jest.fn() + }; + + module.log = log; + module.progress = { + get: jest.fn().mockReturnValue(progress) + }; + module.webpackConfig = [ + { + cache: { + type: 'filesystem' + }, + entry: { + 'function-name/handler': './function-name/handler.js' + } + } + ]; + module.configuration = { concurrency: 1 }; + module.serverless.service.package = { + individually: true + }; + module.entryFunctions = [ + { + handlerFile: 'function-name/handler', + funcName: 'function-name', + func: { + handler: 'function-name/handler.handler', + name: 'service-stage-function-name' + }, + entry: { + key: 'function-name/handler', + value: './function-name/handler.js' + } + } + ]; + webpackMock.compilerMock.run.mockImplementation(cb => cb(new Error('Webpack exploded'))); + return expect(module.compile()).rejects.toThrow(/Webpack compilation failed:\n\nWebpack exploded/); + }); + it('should concurrently work with individual compile and webpack filesystem cache', () => { const testWebpackConfig = [ { diff --git a/tests/index.test.js b/tests/index.test.js index ee1fae129..5dddeec6c 100644 --- a/tests/index.test.js +++ b/tests/index.test.js @@ -3,7 +3,6 @@ */ const _ = require('lodash'); -const BbPromise = require('bluebird'); const semver = require('semver'); const Serverless = require('serverless'); const ServerlessWebpack = require('../index'); @@ -21,7 +20,7 @@ describe('ServerlessWebpack', () => { log: jest.fn(), consoleLog: jest.fn() }; - serverless.pluginManager.spawn = jest.fn().mockReturnValue(BbPromise.resolve()); + serverless.pluginManager.spawn = jest.fn().mockReturnValue(Promise.resolve()); serverless.service.getFunction = jest.fn().mockReturnValue({ runtime: 'nodejs20.x' }); if (semver.gte(serverless.getVersion(), '2.10.0')) { serverless.configSchemaHandler.defineFunctionProperties = jest.fn(); @@ -121,19 +120,19 @@ describe('ServerlessWebpack', () => { // serverless.processedInput does not exist in serverless@<2.0.0 serverless.processedInput.options = processedOptions; } - slsw.cleanup = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.watch = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.wpwatch = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.packExternalModules = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.copyExistingArtifacts = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.prepareRun = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.watchRun = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.validate = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.compile = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.packageModules = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.prepareLocalInvoke = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.prepareOfflineInvoke = jest.fn().mockReturnValue(BbPromise.resolve()); - slsw.prepareStepOfflineInvoke = jest.fn().mockReturnValue(BbPromise.resolve()); + slsw.cleanup = jest.fn().mockReturnValue(Promise.resolve()); + slsw.watch = jest.fn().mockReturnValue(Promise.resolve()); + slsw.wpwatch = jest.fn().mockReturnValue(Promise.resolve()); + slsw.packExternalModules = jest.fn().mockReturnValue(Promise.resolve()); + slsw.copyExistingArtifacts = jest.fn().mockReturnValue(Promise.resolve()); + slsw.prepareRun = jest.fn().mockReturnValue(Promise.resolve()); + slsw.watchRun = jest.fn().mockReturnValue(Promise.resolve()); + slsw.validate = jest.fn().mockReturnValue(Promise.resolve()); + slsw.compile = jest.fn().mockReturnValue(Promise.resolve()); + slsw.packageModules = jest.fn().mockReturnValue(Promise.resolve()); + slsw.prepareLocalInvoke = jest.fn().mockReturnValue(Promise.resolve()); + slsw.prepareOfflineInvoke = jest.fn().mockReturnValue(Promise.resolve()); + slsw.prepareStepOfflineInvoke = jest.fn().mockReturnValue(Promise.resolve()); }); beforeEach(() => { diff --git a/tests/packExternalModules.test.js b/tests/packExternalModules.test.js index 487669b56..2d6df8baa 100644 --- a/tests/packExternalModules.test.js +++ b/tests/packExternalModules.test.js @@ -1,4 +1,3 @@ -const BbPromise = require('bluebird'); const sinon = require('sinon'); const _ = require('lodash'); const path = require('node:path'); @@ -117,13 +116,26 @@ describe('packExternalModules', () => { 'aws-sdk' ]); + const mockSuccessfulPackaging = () => { + module.webpackOutputPath = '/my/Service/Path/outputPath'; + readFileSyncStub.mockReturnValueOnce(packageMock); + readFileSyncStub.mockReturnValue({ info: 'lockfile' }); + packagerFactoryMock.get('npm').rebaseLockfile.mockImplementation((_pathToPackageRoot, lockfile) => lockfile); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); + module.compileStats = stats; + }; + it('should do nothing if webpackIncludeModules is not set', () => { module.configuration = new Configuration(); module.compileStats = { stats: [] }; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ expect(fsExtraMock.copy).toHaveBeenCalledTimes(0), expect(packagerFactoryMock.get).toHaveBeenCalledTimes(0), expect(writeFileSyncStub).toHaveBeenCalledTimes(0) @@ -143,7 +155,7 @@ describe('packExternalModules', () => { return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ expect(fsExtraMock.copy).toHaveBeenCalledTimes(0), expect(packagerFactoryMock.get).toHaveBeenCalledTimes(0), expect(writeFileSyncStub).toHaveBeenCalledTimes(0) @@ -151,6 +163,53 @@ describe('packExternalModules', () => { ); }); + it('should support promise-based fs-extra helpers', () => { + mockSuccessfulPackaging(); + fsExtraMock.pathExists.mockResolvedValue(true); + fsExtraMock.copy.mockResolvedValue(); + + return expect(module.packExternalModules()) + .resolves.toBeUndefined() + .then(() => + Promise.all([ + expect(fsExtraMock.pathExists).toHaveBeenCalledTimes(1), + expect(fsExtraMock.copy).toHaveBeenCalledTimes(2) + ]) + ); + }); + + it('should support synchronous fs-extra helpers', () => { + mockSuccessfulPackaging(); + fsExtraMock.pathExists.mockReturnValue(true); + fsExtraMock.copy.mockResolvedValue(); + + return expect(module.packExternalModules()).resolves.toBeUndefined(); + }); + + it('should reject if a promise-based fs-extra helper rejects', () => { + mockSuccessfulPackaging(); + fsExtraMock.pathExists.mockRejectedValue(new Error('pathExists failed')); + + return expect(module.packExternalModules()).rejects.toThrow('pathExists failed'); + }); + + it('should reject if an fs-extra helper throws synchronously', () => { + mockSuccessfulPackaging(); + fsExtraMock.pathExists.mockImplementation(() => { + throw new Error('pathExists blew up'); + }); + + return expect(module.packExternalModules()).rejects.toThrow('pathExists blew up'); + }); + + it('should reject if a callback-based fs-extra helper fails', () => { + mockSuccessfulPackaging(); + fsExtraMock.pathExists.mockReturnValue(false); + fsExtraMock.copy.mockImplementation((_from, _to, callback) => callback(new Error('copy failed'))); + + return expect(module.packExternalModules()).rejects.toThrow('copy failed'); + }); + it('should copy needed package sections if available', () => { const originalPackageJSON = { name: 'test-service', @@ -210,16 +269,16 @@ describe('packExternalModules', () => { }); fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), @@ -293,15 +352,15 @@ describe('packExternalModules', () => { throw new Error('Unexpected call to readFileSync'); }); packagerFactoryMock.get('npm').rebaseLockfile.mockImplementation((_pathToPackageRoot, lockfile) => lockfile); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), expect(writeFileSyncStub.mock.calls[1][1]).toEqual(JSON.stringify(expectedPackageJSON, null, 2)) @@ -338,16 +397,16 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), @@ -424,12 +483,12 @@ describe('packExternalModules', () => { readFileSyncStub.mockReturnValue(fakePackageLockJSON); fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, true)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); packagerFactoryMock.get('npm').rebaseLockfile.mockImplementation((_pathToPackageRoot, lockfile) => lockfile); - packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = statsWithFileRef; sandbox.stub(process, 'cwd').returns(path.join(path.sep, 'my', 'Service', 'Path')); @@ -442,7 +501,7 @@ describe('packExternalModules', () => { return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(3), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), @@ -498,16 +557,16 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), @@ -528,18 +587,16 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock - .get('npm') - .install.mockImplementation(() => BbPromise.reject(new Error('npm install failed'))); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').getPackagerVersion.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').install.mockImplementation(() => Promise.reject(new Error('npm install failed'))); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .rejects.toThrow('npm install failed') .then(() => - BbPromise.all([ + Promise.all([ // npm ls and npm install should have been called expect(packagerFactoryMock.get('npm').getProdDependencies).toHaveBeenCalledTimes(1), expect(packagerFactoryMock.get('npm').getPackagerVersion).toHaveBeenCalledTimes(1), @@ -556,12 +613,12 @@ describe('packExternalModules', () => { fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); packagerFactoryMock .get('npm') - .getProdDependencies.mockImplementation(() => BbPromise.reject(new Error('something went wrong'))); + .getProdDependencies.mockImplementation(() => Promise.reject(new Error('something went wrong'))); module.compileStats = stats; return expect(module.packExternalModules()) .rejects.toThrow('something went wrong') .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(0), // The modules should have been copied @@ -578,12 +635,12 @@ describe('packExternalModules', () => { it('should not install modules if no external modules are reported', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve()); module.compileStats = noExtStats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(0), // The modules should have been copied @@ -602,13 +659,13 @@ describe('packExternalModules', () => { fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue( - BbPromise.resolve({ + Promise.resolve({ problems: ['Problem 1', 'Problem 2'] }) ); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() @@ -657,15 +714,15 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), @@ -718,15 +775,15 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), @@ -778,15 +835,15 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), @@ -806,15 +863,15 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = statsWithDevDependency; return expect(module.packExternalModules()) .rejects.toThrow('Serverless-webpack dependency error: eslint.') .then(() => - BbPromise.all([ + Promise.all([ expect(module.serverless.cli.log).toHaveBeenCalledWith( expect.stringMatching(/ERROR: Runtime dependency 'eslint' found in devDependencies/) ), @@ -838,10 +895,10 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = statsWithIgnoredDevDependency; jest.doMock( path.join('..', 'ignoreDevDeps', 'package.json'), @@ -851,7 +908,7 @@ describe('packExternalModules', () => { return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ expect(module.serverless.cli.log).toHaveBeenCalledWith( expect.stringMatching(/INFO: Runtime dependency 'aws-sdk' found in devDependencies/) ), @@ -875,15 +932,15 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = statsWithDevDependency; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // npm ls and npm install should have been called expect(packagerFactoryMock.get('npm').getProdDependencies).toHaveBeenCalledTimes(1), expect(packagerFactoryMock.get('npm').install).toHaveBeenCalledTimes(1), @@ -925,15 +982,15 @@ describe('packExternalModules', () => { readFileSyncStub.mockReturnValueOnce(packageMock); readFileSyncStub.mockReturnValue({ info: 'lockfile' }); packagerFactoryMock.get('npm').rebaseLockfile.mockImplementation((_pathToPackageRoot, lockfile) => lockfile); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ expect(readFileSyncStub).toHaveBeenCalledTimes(2), expect(readFileSyncStub.mock.calls[0][0]).toEqual(path.join(process.cwd(), './package.json')), expect(readFileSyncStub.mock.calls[1][0]).toEqual(path.join(process.cwd(), './mocked-lock.json')), @@ -994,15 +1051,15 @@ describe('packExternalModules', () => { readFileSyncStub.mockReturnValueOnce(packageMock); readFileSyncStub.mockReturnValue({ info: 'lockfile' }); packagerFactoryMock.get('npm').rebaseLockfile.mockImplementation((_pathToPackageRoot, lockfile) => lockfile); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ expect(readFileSyncStub).toHaveBeenCalledTimes(2), expect(readFileSyncStub.mock.calls[0][0]).toEqual(path.join(process.cwd(), './package.json')), expect(readFileSyncStub.mock.calls[1][0]).toEqual(path.join(process.cwd(), '../../package-lock.json')), @@ -1055,15 +1112,15 @@ describe('packExternalModules', () => { }); fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, true)); fsExtraMock.copy.mockImplementationOnce((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), @@ -1110,16 +1167,16 @@ describe('packExternalModules', () => { fsExtraMock.copy.mockImplementationOnce((_from, _to, cb) => { cb(); }); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve({})); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve({})); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); packagerFactoryMock.get('npm').mustCopyModules = false; module.compileStats = stats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), @@ -1187,15 +1244,15 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve(dependencyGraph)); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve(dependencyGraph)); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = peerDepStats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual( @@ -1259,15 +1316,15 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve(dependencyGraph)); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve(dependencyGraph)); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = peerDepStats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual( @@ -1311,15 +1368,15 @@ describe('packExternalModules', () => { fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.pathExistsSync.mockReturnValue(true); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve(dependencyGraph)); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve(dependencyGraph)); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = peerDepStats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual( @@ -1384,15 +1441,15 @@ describe('packExternalModules', () => { module.webpackOutputPath = '/my/Service/Path/outputPath'; fsExtraMock.pathExists.mockImplementation((_p, cb) => cb(null, false)); fsExtraMock.copy.mockImplementation((_from, _to, cb) => cb()); - packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(BbPromise.resolve(dependencyGraph)); - packagerFactoryMock.get('npm').install.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').prune.mockReturnValue(BbPromise.resolve()); - packagerFactoryMock.get('npm').runScripts.mockReturnValue(BbPromise.resolve()); + packagerFactoryMock.get('npm').getProdDependencies.mockReturnValue(Promise.resolve(dependencyGraph)); + packagerFactoryMock.get('npm').install.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').prune.mockReturnValue(Promise.resolve()); + packagerFactoryMock.get('npm').runScripts.mockReturnValue(Promise.resolve()); module.compileStats = transitiveDepStats; return expect(module.packExternalModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // The module package JSON and the composite one should have been stored expect(writeFileSyncStub).toHaveBeenCalledTimes(2), expect(writeFileSyncStub.mock.calls[0][1]).toEqual(JSON.stringify(expectedCompositePackageJSON, null, 2)), diff --git a/tests/packageModules.test.js b/tests/packageModules.test.js index a9b8b0063..25a39a6f4 100644 --- a/tests/packageModules.test.js +++ b/tests/packageModules.test.js @@ -1,4 +1,3 @@ -const BbPromise = require('bluebird'); const _ = require('lodash'); const path = require('node:path'); const Serverless = require('serverless'); @@ -58,7 +57,7 @@ describe('packageModules', () => { return expect(module.packageModules()) .resolves.toEqual([]) .then(() => - BbPromise.all([ + Promise.all([ expect(writeFileDirStub).toHaveBeenCalledTimes(0), expect(fsMock.createWriteStream).toHaveBeenCalledTimes(0), expect(globMock.sync).toHaveBeenCalledTimes(0) @@ -71,7 +70,7 @@ describe('packageModules', () => { return expect(module.packageModules()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ expect(writeFileDirStub).toHaveBeenCalledTimes(0), expect(fsMock.createWriteStream).toHaveBeenCalledTimes(0), expect(globMock.sync).toHaveBeenCalledTimes(0) @@ -130,7 +129,7 @@ describe('packageModules', () => { module.compileStats = stats; return expect(module.packageModules()) .resolves.toEqual([path.join('.webpack', 'test-service.zip')]) - .then(() => BbPromise.all([])); + .then(() => Promise.resolve()); }); describe('with the Google provider', () => { @@ -236,19 +235,17 @@ describe('packageModules', () => { fsMock._statMock.isDirectory.mockReturnValue(false); module.compileStats = stats; - return BbPromise.each(['1.18.1', '2.17.0', '10.15.3'], version => { - getVersionStub.mockReturnValue(version); - return expect(module.packageModules()) - .resolves.toEqual([path.join('.webpack', 'test-service.zip')]) - .then(() => BbPromise.all([])); - }).then(() => - BbPromise.each(['1.17.0', '1.16.0-alpha', '1.15.3'], version => { + return (async () => { + for (const version of ['1.18.1', '2.17.0', '10.15.3']) { getVersionStub.mockReturnValue(version); - return expect(module.packageModules()) - .resolves.toEqual([path.join('.webpack', 'test-service.zip')]) - .then(() => BbPromise.all([])); - }) - ); + await expect(module.packageModules()).resolves.toEqual([path.join('.webpack', 'test-service.zip')]); + } + + for (const version of ['1.17.0', '1.16.0-alpha', '1.15.3']) { + getVersionStub.mockReturnValue(version); + await expect(module.packageModules()).resolves.toEqual([path.join('.webpack', 'test-service.zip')]); + } + })(); }); it('should reject if no files are found', () => { @@ -537,7 +534,7 @@ describe('packageModules', () => { return expect(module.copyExistingArtifacts()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // Should copy the artifact into .serverless expect(fsMock.copyFileSync).toHaveBeenCalledTimes(1), expect(fsMock.copyFileSync).toHaveBeenCalledWith(expectedArtifactSource, expectedArtifactDestination), @@ -592,31 +589,23 @@ describe('packageModules', () => { const expectedArtifactPath = path.join('.serverless', 'test-service.zip'); module.compileStats = stats; - return BbPromise.each(['1.18.1', '2.17.0', '10.15.3'], version => { - getVersionStub.mockReturnValue(version); - return expect(module.copyExistingArtifacts()) - .resolves.toBeUndefined() - .then(() => - BbPromise.all([ - expect(func1).toHaveProperty('package.artifact', expectedArtifactPath), - expect(func2).toHaveProperty('package.artifact', expectedArtifactPath) - ]) - ); - }).then(() => - BbPromise.each(['1.17.0', '1.16.0-alpha', '1.15.3'], version => { + return (async () => { + for (const version of ['1.18.1', '2.17.0', '10.15.3']) { getVersionStub.mockReturnValue(version); - return expect(module.copyExistingArtifacts()) - .resolves.toBeUndefined() - .then(() => - BbPromise.all([ - expect(func1).toHaveProperty('artifact', expectedArtifactPath), - expect(func2).toHaveProperty('artifact', expectedArtifactPath), - expect(func1).toHaveProperty('package.disable', true), - expect(func2).toHaveProperty('package.disable', true) - ]) - ); - }) - ); + await expect(module.copyExistingArtifacts()).resolves.toBeUndefined(); + expect(func1).toHaveProperty('package.artifact', expectedArtifactPath); + expect(func2).toHaveProperty('package.artifact', expectedArtifactPath); + } + + for (const version of ['1.17.0', '1.16.0-alpha', '1.15.3']) { + getVersionStub.mockReturnValue(version); + await expect(module.copyExistingArtifacts()).resolves.toBeUndefined(); + expect(func1).toHaveProperty('artifact', expectedArtifactPath); + expect(func2).toHaveProperty('artifact', expectedArtifactPath); + expect(func1).toHaveProperty('package.disable', true); + expect(func2).toHaveProperty('package.disable', true); + } + })(); }); describe('with the Google provider', () => { @@ -700,7 +689,7 @@ describe('packageModules', () => { return expect(module.copyExistingArtifacts()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // Should copy an artifact per function into .serverless expect(fsMock.copyFileSync).toHaveBeenCalledTimes(2), expect(fsMock.copyFileSync).toHaveBeenCalledWith( @@ -726,7 +715,7 @@ describe('packageModules', () => { return expect(module.copyExistingArtifacts()) .resolves.toBeUndefined() .then(() => - BbPromise.all([ + Promise.all([ // Should copy an artifact per function into .serverless expect(fsMock.copyFileSync).toHaveBeenCalledTimes(1), expect(fsMock.copyFileSync).toHaveBeenCalledWith( diff --git a/tests/packagers/index.test.js b/tests/packagers/index.test.js index b51d8ace4..25f6ae4df 100644 --- a/tests/packagers/index.test.js +++ b/tests/packagers/index.test.js @@ -40,6 +40,15 @@ describe('packagers factory', () => { expect(() => module.get.call({ serverless }, 'unknown')).toThrow(/Could not find packager/); }); + it('should use plugin logger on unknown packagers when available', () => { + const log = { + error: jest.fn() + }; + + expect(() => module.get.call({ serverless, log }, 'unknown')).toThrow(/Could not find packager/); + expect(log.error).toHaveBeenCalledWith('Could not find packager "unknown"'); + }); + it('should return npm packager', () => { const npm = module.get.call(module, 'npm'); expect(npm).toEqual({ diff --git a/tests/packagers/npm.test.js b/tests/packagers/npm.test.js index ce71b7daa..609528fdc 100644 --- a/tests/packagers/npm.test.js +++ b/tests/packagers/npm.test.js @@ -3,7 +3,6 @@ */ const _ = require('lodash'); -const BbPromise = require('bluebird'); const Utils = require('../../lib/utils'); const { sep } = require('node:path'); const npmModule = require('../../lib/packagers/npm'); @@ -51,7 +50,7 @@ describe('npm', () => { describe('getPackagerVersion', () => { it('should use npm version 6.14.17', () => { const npmVersion = '6.14.17'; - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: npmVersion, stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: npmVersion, stderr: '' })); return expect(npmModule.getPackagerVersion('myPath', 1)) .resolves.toEqual(npmVersion) .then(() => { @@ -65,7 +64,7 @@ describe('npm', () => { it('should use npm version 8.19.2', () => { const npmVersion = '8.19.2'; - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: npmVersion, stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: npmVersion, stderr: '' })); return expect(npmModule.getPackagerVersion('myPath', 1)) .resolves.toEqual(npmVersion) .then(() => { @@ -80,7 +79,7 @@ describe('npm', () => { describe('install', () => { it('should use npm install', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'installed successfully', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'installed successfully', stderr: '' })); return expect(npmModule.install('myPath', {})) .resolves.toBeUndefined() .then(() => { @@ -93,7 +92,7 @@ describe('npm', () => { }); it('should use ignoreScripts option', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'installed successfully', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'installed successfully', stderr: '' })); return expect(npmModule.install('myPath', { ignoreScripts: true })) .resolves.toBeUndefined() .then(() => { @@ -123,7 +122,7 @@ describe('npm', () => { describe('prune', () => { it('should use npm prune', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'success', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'success', stderr: '' })); return expect(npmModule.prune('myPath')) .resolves.toBeUndefined() .then(() => { @@ -138,7 +137,7 @@ describe('npm', () => { describe('runScripts', () => { it('should use npm run for the given scripts', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'success', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'success', stderr: '' })); return expect(npmModule.runScripts('myPath', ['s1', 's2'])) .resolves.toBeUndefined() .then(() => { @@ -157,7 +156,7 @@ describe('npm', () => { describe('getProdDependencies', () => { describe('without lock file', () => { it('should use npm ls', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: '{}', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: '{}', stderr: '' })); return expect(npmModule.getProdDependencies('myPath', 10)) .resolves.toEqual({}) .then(() => { @@ -173,7 +172,7 @@ describe('npm', () => { }); it('should default to depth 1', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: '{}', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: '{}', stderr: '' })); return expect(npmModule.getProdDependencies('myPath')) .resolves.toEqual({}) .then(() => { @@ -193,7 +192,7 @@ describe('npm', () => { it('should use npm ls when lock file is not version 2', () => { fseMock.pathExistsSync.mockReturnValue(true); fsMock.readFileSync.mockReturnValue(JSON.stringify({ lockfileVersion: 1 })); - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: '{}', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: '{}', stderr: '' })); return expect(npmModule.getProdDependencies('myPath')) .resolves.toEqual({}) .then(() => { @@ -204,7 +203,7 @@ describe('npm', () => { { cwd: 'myPath' } ); expect(fseMock.pathExistsSync).toHaveBeenCalledWith(`myPath${sep}package-lock.json`); - expect(fsMock.readFileSync).toHaveBeenCalledWith(`myPath${sep}package-lock.json`); + expect(fsMock.readFileSync).toHaveBeenCalledWith(`myPath${sep}package-lock.json`, 'utf8'); return null; }); }); @@ -232,7 +231,7 @@ describe('npm', () => { .then(() => { expect(Utils.spawnProcess).toHaveBeenCalledTimes(0); expect(fseMock.pathExistsSync).toHaveBeenCalledWith(`myPath${sep}package-lock.json`); - expect(fsMock.readFileSync).toHaveBeenCalledWith(`myPath${sep}package-lock.json`); + expect(fsMock.readFileSync).toHaveBeenCalledWith(`myPath${sep}package-lock.json`, 'utf8'); return null; }); }); @@ -264,7 +263,7 @@ describe('npm', () => { .then(() => { expect(Utils.spawnProcess).toHaveBeenCalledTimes(0); expect(fseMock.pathExistsSync).toHaveBeenCalledWith(`root-workspace${sep}package-lock.json`); - expect(fsMock.readFileSync).toHaveBeenCalledWith(`root-workspace${sep}package-lock.json`); + expect(fsMock.readFileSync).toHaveBeenCalledWith(`root-workspace${sep}package-lock.json`, 'utf8'); return null; }); }); @@ -274,9 +273,7 @@ describe('npm', () => { it('should reject if npm returns critical and minor errors', () => { const stderr = 'ENOENT: No such file\nnpm ERR! extraneous: sinon@2.3.8 ./babel-dynamically-entries/node_modules/serverless-webpack/node_modules/sinon\n\n'; - Utils.spawnProcess.mockReturnValue( - BbPromise.reject(new Utils.SpawnError('Command execution failed', '{}', stderr)) - ); + Utils.spawnProcess.mockReturnValue(Promise.reject(new Utils.SpawnError('Command execution failed', '{}', stderr))); return expect(npmModule.getProdDependencies('myPath', 1, {})) .rejects.toThrow('Command execution failed') .then(() => { @@ -292,7 +289,7 @@ describe('npm', () => { }); it('should reject if an error happens without any information in stdout', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.reject(new Utils.SpawnError('Command execution failed', '', ''))); + Utils.spawnProcess.mockReturnValue(Promise.reject(new Utils.SpawnError('Command execution failed', '', ''))); return expect(npmModule.getProdDependencies('myPath', 1)) .rejects.toThrow('Command execution failed') .then(() => @@ -332,7 +329,7 @@ describe('npm', () => { }; Utils.spawnProcess.mockReturnValue( - BbPromise.reject(new Utils.SpawnError('Command execution failed', JSON.stringify(lsResult), stderr)) + Promise.reject(new Utils.SpawnError('Command execution failed', JSON.stringify(lsResult), stderr)) ); return expect(npmModule.getProdDependencies('myPath', 1)) .resolves.toEqual(lsResult) @@ -381,7 +378,7 @@ describe('npm', () => { }; Utils.spawnProcess.mockReturnValue( - BbPromise.reject(new Utils.SpawnError('Command execution failed', JSON.stringify(lsResult), stderr)) + Promise.reject(new Utils.SpawnError('Command execution failed', JSON.stringify(lsResult), stderr)) ); return expect(npmModule.getProdDependencies('myPath', 1)) .resolves.toEqual(lsResult) diff --git a/tests/packagers/yarn.test.js b/tests/packagers/yarn.test.js index bb6a7cd44..50496e176 100644 --- a/tests/packagers/yarn.test.js +++ b/tests/packagers/yarn.test.js @@ -2,7 +2,6 @@ * Unit tests for packagers/yarn */ -const BbPromise = require('bluebird'); const Utils = require('../../lib/utils'); const yarnModule = require('../../lib/packagers/yarn'); @@ -54,7 +53,7 @@ describe('yarn', () => { describe('getPackagerVersion', () => { it('should use yarn version 1.22.19', () => { const yarnVersion = '1.22.19'; - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: yarnVersion, stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: yarnVersion, stderr: '' })); return expect(yarnModule.getPackagerVersion('myPath', 1)) .resolves.toEqual(yarnVersion) .then(() => { @@ -68,7 +67,7 @@ describe('yarn', () => { it('should use yarn version 3.2.3', () => { const yarnVersion = '3.2.3'; - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: yarnVersion, stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: yarnVersion, stderr: '' })); return expect(yarnModule.getPackagerVersion('myPath', 1)) .resolves.toEqual(yarnVersion) .then(() => { @@ -83,7 +82,7 @@ describe('yarn', () => { describe('getProdDependencies', () => { it('should use yarn list', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: '{}', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: '{}', stderr: '' })); return expect(yarnModule.getProdDependencies('myPath', 1)) .resolves.toEqual({ dependencies: {}, @@ -148,13 +147,13 @@ describe('yarn', () => { } } }; - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: testYarnResult, stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: testYarnResult, stderr: '' })); return expect(yarnModule.getProdDependencies('myPath', 1)).resolves.toEqual(expectedResult); }); it('should reject on critical yarn errors', () => { Utils.spawnProcess.mockReturnValue( - BbPromise.reject(new Utils.SpawnError('Exited with code 1', '', 'Yarn failed.\nerror Could not find module.')) + Promise.reject(new Utils.SpawnError('Exited with code 1', '', 'Yarn failed.\nerror Could not find module.')) ); return expect(yarnModule.getProdDependencies('myPath', 1)).rejects.toThrow('Exited with code 1'); }); @@ -250,7 +249,7 @@ describe('yarn', () => { describe('install', () => { it('should use yarn install', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'installed successfully', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'installed successfully', stderr: '' })); return expect(yarnModule.install('myPath', {}, '1.22.19')) .resolves.toBeUndefined() .then(() => { @@ -267,7 +266,7 @@ describe('yarn', () => { }); it('should use noNonInteractive option', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'installed successfully', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'installed successfully', stderr: '' })); return expect(yarnModule.install('myPath', { noNonInteractive: true }, '1.22.19')) .resolves.toBeUndefined() .then(() => { @@ -284,7 +283,7 @@ describe('yarn', () => { }); it('should use ignoreScripts option', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'installed successfully', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'installed successfully', stderr: '' })); return expect(yarnModule.install('myPath', { ignoreScripts: true }, '1.22.19')) .resolves.toBeUndefined() .then(() => { @@ -301,7 +300,7 @@ describe('yarn', () => { }); it('should use noFrozenLockfile option', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'installed successfully', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'installed successfully', stderr: '' })); return expect(yarnModule.install('myPath', { noFrozenLockfile: true }, '1.22.19')) .resolves.toBeUndefined() .then(() => { @@ -318,7 +317,7 @@ describe('yarn', () => { }); it('should use networkConcurrency option', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'installed successfully', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'installed successfully', stderr: '' })); return expect(yarnModule.install('myPath', { networkConcurrency: 1 }, '1.22.19')) .resolves.toBeUndefined() .then(() => { @@ -343,7 +342,7 @@ describe('yarn', () => { describe('prune', () => { it('should call install', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'success', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'success', stderr: '' })); return expect(yarnModule.prune('myPath', {}, '1.22.19')) .resolves.toBeUndefined() .then(() => { @@ -363,7 +362,7 @@ describe('yarn', () => { describe('runScripts', () => { it('should use yarn run for the given scripts', () => { - Utils.spawnProcess.mockReturnValue(BbPromise.resolve({ stdout: 'success', stderr: '' })); + Utils.spawnProcess.mockReturnValue(Promise.resolve({ stdout: 'success', stderr: '' })); return expect(yarnModule.runScripts('myPath', ['s1', 's2'])) .resolves.toBeUndefined() .then(() => { diff --git a/tests/prepareOfflineInvoke.test.js b/tests/prepareOfflineInvoke.test.js index ede799107..70fd4171e 100644 --- a/tests/prepareOfflineInvoke.test.js +++ b/tests/prepareOfflineInvoke.test.js @@ -1,5 +1,4 @@ const _ = require('lodash'); -const BbPromise = require('bluebird'); const Serverless = require('serverless'); const baseModule = require('../lib/prepareOfflineInvoke'); @@ -67,7 +66,7 @@ describe('prepareOfflineInvoke', () => { }); it('should reject if spawn rejects', () => { - serverless.pluginManager.spawn.mockReturnValue(BbPromise.reject(new Error('spawn failed'))); + serverless.pluginManager.spawn.mockReturnValue(Promise.reject(new Error('spawn failed'))); serverless.config.servicePath = 'myPath'; module.webpackOutputPath = '.'; diff --git a/tests/prepareStepOfflineInvoke.test.js b/tests/prepareStepOfflineInvoke.test.js index 7901b70c5..421cdba99 100644 --- a/tests/prepareStepOfflineInvoke.test.js +++ b/tests/prepareStepOfflineInvoke.test.js @@ -1,5 +1,4 @@ const _ = require('lodash'); -const BbPromise = require('bluebird'); const Serverless = require('serverless'); const baseModule = require('../lib/prepareStepOfflineInvoke'); @@ -67,7 +66,7 @@ describe('prepareStepOfflineInvoke', () => { }); it('should reject if spawn rejects', () => { - serverless.pluginManager.spawn.mockReturnValue(BbPromise.reject(new Error('spawn failed'))); + serverless.pluginManager.spawn.mockReturnValue(Promise.reject(new Error('spawn failed'))); serverless.config.servicePath = 'myPath'; module.webpackOutputPath = '.'; diff --git a/tests/run.test.js b/tests/run.test.js index e0af3a2ab..47a465da0 100644 --- a/tests/run.test.js +++ b/tests/run.test.js @@ -1,4 +1,3 @@ -const BbPromise = require('bluebird'); const _ = require('lodash'); const sinon = require('sinon'); const Serverless = require('serverless'); @@ -112,7 +111,7 @@ describe('run', () => { it('should not call given handler function on first run', () => { module.isWatching = false; const watch = module.watch.bind(module); - const watchHandler = jest.fn().mockReturnValue(BbPromise.resolve()); + const watchHandler = jest.fn().mockReturnValue(Promise.resolve()); webpackMock.compilerMock.watch.mockReset(); webpackMock.compilerMock.watch.mockImplementation((_options, cb) => cb(null, {})); @@ -125,7 +124,7 @@ describe('run', () => { it('should call given handler function on subsequent runs', () => { module.isWatching = true; const watch = module.watch.bind(module); - const watchHandler = jest.fn().mockReturnValue(BbPromise.resolve()); + const watchHandler = jest.fn().mockReturnValue(Promise.resolve()); webpackMock.compilerMock.watch.mockReset(); webpackMock.compilerMock.watch.mockImplementation((_options, cb) => cb(null, {})); diff --git a/tests/runPluginSupport.test.js b/tests/runPluginSupport.test.js index 995d44f3a..90d87c330 100644 --- a/tests/runPluginSupport.test.js +++ b/tests/runPluginSupport.test.js @@ -1,4 +1,3 @@ -const BbPromise = require('bluebird'); const _ = require('lodash'); const sinon = require('sinon'); const Serverless = require('serverless'); @@ -65,13 +64,13 @@ describe('runPluginSupport', () => { return expect(prepareRun()) .resolves.toBeUndefined() .then(() => - BbPromise.join( + Promise.all([ expect(module.originalServicePath).toEqual(servicePath), expect(module.originalWebpackOutputPath).toEqual(webpackOutputPath), expect(module.keepOutputDirectory).toBe(true), expect(serverless.config.servicePath).toEqual(path.join(webpackOutputPath, 'service')), expect(chdirStub.args[0]).toEqual([serverless.config.servicePath]) - ) + ]) ); }); }); @@ -93,11 +92,11 @@ describe('runPluginSupport', () => { return expect(watchRun()) .resolves.toBeUndefined() .then(() => - BbPromise.join( + Promise.all([ expect(deployFunctionsToLocalEmulatorStub).toHaveBeenCalledTimes(1), expect(getLocalRootUrlStub).toHaveBeenCalledTimes(1), expect(deployFunctionsToLocalEmulatorStub).toHaveBeenCalledWith(service, undefined, undefined) - ) + ]) ); }); }); diff --git a/tests/utils.test.js b/tests/utils.test.js index bbe3d5f7b..5ca87b1cd 100644 --- a/tests/utils.test.js +++ b/tests/utils.test.js @@ -107,6 +107,30 @@ describe('Utils', () => { }); return expect(Utils.spawnProcess('cmd', [])).rejects.toThrow(Utils.SpawnError); }); + + it('should allow omitted args', () => { + childMock.stdout.on.mockReset(); + childMock.stderr.on.mockReset(); + childMock.on.mockReset(); + childMock.on.mockImplementation((name, cb) => { + if (name === 'close') { + cb(0); + } + }); + + return expect(Utils.spawnProcess('cmd')) + .resolves.toEqual({ stderr: '', stdout: '' }) + .then(() => { + expect(childProcess.spawn).toHaveBeenCalledWith( + 'cmd', + [], + expect.objectContaining({ + shell: expect.any(Boolean) + }) + ); + return null; + }); + }); }); describe('safeJsonParse', () => { diff --git a/tests/validate.test.js b/tests/validate.test.js index 6b8d3e71a..e29918708 100644 --- a/tests/validate.test.js +++ b/tests/validate.test.js @@ -1,5 +1,4 @@ const _ = require('lodash'); -const BbPromise = require('bluebird'); const path = require('node:path'); const Serverless = require('serverless'); @@ -237,7 +236,7 @@ describe('validate', () => { const loadedConfig = { entry: 'testentry' }; - jest.doMock(path.join('testServicePath', 'testconfig'), () => BbPromise.resolve(loadedConfig), { virtual: true }); + jest.doMock(path.join('testServicePath', 'testconfig'), () => Promise.resolve(loadedConfig), { virtual: true }); module.serverless.config.servicePath = 'testServicePath'; module.serverless.service.custom.webpack = 'testconfig'; serverless.utils.fileExistsSync = jest.fn().mockReturnValue(true); @@ -279,7 +278,7 @@ describe('validate', () => { module.serverless.config.servicePath = testServicePath; module.serverless.service.custom.webpack = testConfig; serverless.utils.fileExistsSync = jest.fn().mockReturnValue(true); - const loadedConfigPromise = BbPromise.reject('config failed to load'); + const loadedConfigPromise = Promise.reject('config failed to load'); jest.doMock(requiredPath, () => loadedConfigPromise, { virtual: true }); return expect(module.validate()) .rejects.toEqual('config failed to load') diff --git a/tests/wpwatch.test.js b/tests/wpwatch.test.js index 0134cef7e..6056823f1 100644 --- a/tests/wpwatch.test.js +++ b/tests/wpwatch.test.js @@ -1,4 +1,3 @@ -const BbPromise = require('bluebird'); const _ = require('lodash'); const Serverless = require('serverless'); @@ -57,10 +56,10 @@ describe('wpwatch', () => { return expect(wpwatch()) .resolves.toBeUndefined() .then(() => - BbPromise.join( + Promise.all([ expect(spawnStub).toHaveBeenCalledWith('webpack:compile'), expect(webpackMock.compilerMock.watch).toHaveBeenCalledTimes(0) - ) + ]) ); }); @@ -73,10 +72,10 @@ describe('wpwatch', () => { return expect(wpwatch()) .resolves.toBeUndefined() .then(() => - BbPromise.join( + Promise.all([ expect(spawnStub).toHaveBeenCalledTimes(0), expect(webpackMock.compilerMock.watch).toHaveBeenCalledTimes(1) - ) + ]) ); }); @@ -88,11 +87,11 @@ describe('wpwatch', () => { return expect(wpwatch()) .resolves.toBeUndefined() .then(() => - BbPromise.join( + Promise.all([ expect(spawnStub).toHaveBeenCalledTimes(0), expect(webpackMock.compilerMock.watch).toHaveBeenCalledTimes(1), expect(spawnStub).toHaveBeenCalledTimes(0) - ) + ]) ); }); @@ -105,10 +104,10 @@ describe('wpwatch', () => { return expect(wpwatch()) .resolves.toBeUndefined() .then(() => - BbPromise.join( + Promise.all([ expect(spawnStub).toHaveBeenCalledTimes(0), expect(webpackMock.compilerMock.watch).toHaveBeenCalledTimes(1) - ) + ]) ); }); @@ -122,7 +121,7 @@ describe('wpwatch', () => { return expect(wpwatch()) .resolves.toBeUndefined() .then(() => - BbPromise.join( + Promise.all([ expect(spawnStub).toHaveBeenCalledTimes(0), expect(webpackMock.compilerMock.watch).toHaveBeenCalledTimes(1), expect(webpackMock.compilerMock.watch).toHaveBeenCalledWith( @@ -131,7 +130,7 @@ describe('wpwatch', () => { }, expect.any(Function) ) - ) + ]) ); }); @@ -145,7 +144,7 @@ describe('wpwatch', () => { return expect(wpwatch()) .resolves.toBeUndefined() .then(() => - BbPromise.join( + Promise.all([ expect(spawnStub).toHaveBeenCalledTimes(0), expect(webpackMock.compilerMock.watch).toHaveBeenCalledTimes(1), expect(webpackMock.compilerMock.watch).toHaveBeenCalledWith( @@ -154,7 +153,7 @@ describe('wpwatch', () => { }, expect.any(Function) ) - ) + ]) ); }); @@ -187,11 +186,11 @@ describe('wpwatch', () => { return expect(wpwatch()) .resolves.toBeUndefined() .then(() => - BbPromise.join( + Promise.all([ expect(watchCallbackCount).toBe(4), expect(spawnStub).toHaveBeenCalledTimes(1), expect(spawnStub).toHaveBeenCalledWith('webpack:compile:watch') - ) + ]) ); }); @@ -223,11 +222,11 @@ describe('wpwatch', () => { .resolves.toBeUndefined() .then(() => beforeCompileCallbackPromise) .then(() => - BbPromise.join( + Promise.all([ expect(watchCallbackCount).toBe(3), expect(spawnStub).toHaveBeenCalledTimes(2), expect(spawnStub).toHaveBeenCalledWith('webpack:compile:watch') - ) + ]) ); }); @@ -245,7 +244,7 @@ describe('wpwatch', () => { it('should not resolve before compile if it has an error', () => { const wpwatch = module.wpwatch.bind(module); - spawnStub.mockReturnValue(BbPromise.reject(new Error('actual error'))); + spawnStub.mockReturnValue(Promise.reject(new Error('actual error'))); let beforeCompileCallback; webpackMock.compilerMock.hooks.beforeCompile.tapPromise.mockImplementation((_options, cb) => {