From d46d9d54c53ea5b85da394ecfc5f73307151b85c Mon Sep 17 00:00:00 2001 From: shirady <57721533+shirady@users.noreply.github.com> Date: Thu, 11 Dec 2025 08:07:11 +0200 Subject: [PATCH 1/2] IAM | Add Test Cases on IAM API Signed-off-by: shirady <57721533+shirady@users.noreply.github.com> --- src/server/system_services/account_server.js | 48 +-- .../api/iam/test_iam_basic_integration.js | 403 ++++++++++++++++-- src/util/account_util.js | 73 ++-- 3 files changed, 418 insertions(+), 106 deletions(-) diff --git a/src/server/system_services/account_server.js b/src/server/system_services/account_server.js index 2641b45eea..5c604732fb 100644 --- a/src/server/system_services/account_server.js +++ b/src/server/system_services/account_server.js @@ -50,7 +50,7 @@ async function create_account(req) { account_util.validate_create_account_permissions(req); account_util.validate_create_account_params(req); } - const {id, token, access_keys} = await account_util.create_account(req); + const { id, token, access_keys } = await account_util.create_account(req); iam_arn = iam_arn || iam_utils.create_arn_for_root(id); return { @@ -1142,7 +1142,7 @@ function _list_connection_usage(account, credentials) { entity: pool.name, external_entity: pool.cloud_pool_info.target_bucket })); - const namespace_resource_usage = _.map( + const namespace_resource_usage = _.map( _.filter(system_store.data.namespace_resources, ns => ( ns.connection && ns.connection.endpoint_type === credentials.endpoint_type && @@ -1206,7 +1206,7 @@ async function get_user(req) { const requested_account = account_util.validate_and_return_requested_account(req.rpc_params, action, requesting_account); const username = requested_account.name.unwrap(); const iam_arn = iam_utils.create_arn_for_user(requesting_account._id.toString(), username, - requested_account.iam_path || IAM_DEFAULT_PATH); + requested_account.iam_path || IAM_DEFAULT_PATH); const tags = account_util.get_sorted_list_tags_for_user(requested_account.tagging); return { user_id: requested_account._id.toString(), @@ -1221,14 +1221,9 @@ async function get_user(req) { } async function update_user(req) { - const action = IAM_ACTIONS.UPDATE_USER; const requesting_account = req.account; - const old_account_email_wrapped = account_util.get_account_email_from_username( - req.rpc_params.username, requesting_account._id.toString()); - account_util._check_if_requesting_account_is_root_account(action, requesting_account, - { username: req.rpc_params.username, iam_path: req.rpc_params.new_iam_path }); - const requested_account = account_util._check_if_account_exists(action, old_account_email_wrapped, req.rpc_params.username); + const requested_account = account_util.validate_and_return_requested_account(req.rpc_params, action, requesting_account); let iam_path = requested_account.iam_path; let user_name = req.rpc_params.username; // Change to complete user name @@ -1240,8 +1235,6 @@ async function update_user(req) { requesting_account._id.toString()); account_util._check_username_already_exists(action, new_account_email_wrapped, req.rpc_params.new_username); } - account_util._check_if_requested_account_is_root_account_or_IAM_user(action, requesting_account, requested_account); - account_util._check_if_requested_is_owned_by_root_account(action, requesting_account, requested_account); if (req.rpc_params.new_iam_path) iam_path = req.rpc_params.new_iam_path; if (req.rpc_params.new_username) user_name = req.rpc_params.new_username; const iam_arn = iam_utils.create_arn_for_user(requesting_account._id.toString(), user_name, iam_path); @@ -1279,14 +1272,9 @@ async function update_user(req) { } async function delete_user(req) { - const action = IAM_ACTIONS.DELETE_USER; const requesting_account = req.account; - const account_email_wrapped = account_util.get_account_email_from_username(req.rpc_params.username, requesting_account._id.toString()); - account_util._check_if_requesting_account_is_root_account(action, requesting_account, { username: req.rpc_params.username }); - const requested_account = account_util._check_if_account_exists(action, account_email_wrapped, req.rpc_params.username); - account_util._check_if_requested_account_is_root_account_or_IAM_user(action, requesting_account, requested_account); - account_util._check_if_requested_is_owned_by_root_account(action, requesting_account, requested_account); + const requested_account = account_util.validate_and_return_requested_account(req.rpc_params, action, requesting_account); account_util._check_if_user_does_not_have_resources_before_deletion(action, requested_account); return account_util.delete_account(req, requested_account); } @@ -1294,7 +1282,7 @@ async function delete_user(req) { async function list_users(req) { const action = IAM_ACTIONS.LIST_USERS; const requesting_account = req.account; - account_util._check_if_requesting_account_is_root_account(action, requesting_account, { }); + account_util._check_if_requesting_account_is_root_account(action, requesting_account); const is_truncated = false; // GAP - no pagination at this point const requesting_account_iam_users = _.filter(system_store.data.accounts, function(account) { const owner_account_id = account_util.get_owner_account_id(account); @@ -1322,7 +1310,8 @@ async function list_users(req) { async function create_access_key(req) { const action = IAM_ACTIONS.CREATE_ACCESS_KEY; const requesting_account = req.account; - const requested_account = account_util.validate_and_return_requested_account(req.rpc_params, action, requesting_account); + const requested_account = account_util.validate_and_return_requested_account_with_option_itself( + req.rpc_params, action, requesting_account); account_util._check_number_of_access_key_array(action, requested_account); const account_req = { rpc_params: { @@ -1353,12 +1342,16 @@ async function create_access_key(req) { async function list_access_keys(req) { const action = IAM_ACTIONS.LIST_ACCESS_KEYS; const requesting_account = req.account; - const requested_account = account_util.validate_and_return_requested_account(req.rpc_params, action, requesting_account); + const requested_account = account_util.validate_and_return_requested_account_with_option_itself( + req.rpc_params, action, requesting_account); const is_truncated = false; // // GAP - no pagination at this point let members = account_util._list_access_keys_from_account(requesting_account, requested_account, false); - members = members.sort((a, b) => a.access_key.localeCompare(b.access_key)); - return { members, is_truncated, - username: account_util._returned_username(requesting_account, requested_account.name.unwrap(), false) }; + members = members.sort((a, b) => a.access_key.localeCompare(b.access_key)); + return { + members, + is_truncated, + username: account_util._returned_username(requesting_account, requested_account.name.unwrap(), false) + }; } @@ -1366,7 +1359,8 @@ async function update_access_key(req) { const action = IAM_ACTIONS.UPDATE_ACCESS_KEY; const access_key_id = req.rpc_params.access_key; const requesting_account = req.account; - const requested_account = account_util.validate_and_return_requested_account(req.rpc_params, action, requesting_account); + const requested_account = account_util.validate_and_return_requested_account_with_option_itself( + req.rpc_params, action, requesting_account); account_util._check_access_key_belongs_to_account(action, requested_account, access_key_id); const updating_access_key_obj = _.find(requested_account.access_keys, @@ -1422,8 +1416,8 @@ async function delete_access_key(req) { const action = IAM_ACTIONS.DELETE_ACCESS_KEY; const access_key_id = req.rpc_params.access_key; const requesting_account = req.account; - - const requested_account = account_util.validate_and_return_requested_account(req.rpc_params, action, requesting_account); + const requested_account = account_util.validate_and_return_requested_account_with_option_itself( + req.rpc_params, action, requesting_account); account_util._check_access_key_belongs_to_account(action, requested_account, access_key_id); // Filter out the deleting access key from the access key list and save remaining accesskey. const filtered_access_keys = account_util.get_non_updating_access_key(requested_account, access_key_id); @@ -1583,7 +1577,7 @@ async function delete_user_policy(req) { async function list_user_policies(req) { const action = IAM_ACTIONS.LIST_USER_POLICIES; dbg.log1(`AccountSpaceNB.${action}`, req.rpc_params); - const requesting_account = req.account; + const requesting_account = req.account; const requested_account = account_util.validate_and_return_requested_account(req.rpc_params, action, requesting_account); const is_truncated = false; // GAP - no pagination at this point let members = _.map(requested_account.iam_user_policies || [], iam_user_policy => iam_user_policy.policy_name); diff --git a/src/test/integration_tests/api/iam/test_iam_basic_integration.js b/src/test/integration_tests/api/iam/test_iam_basic_integration.js index e17880842f..492bd631e9 100644 --- a/src/test/integration_tests/api/iam/test_iam_basic_integration.js +++ b/src/test/integration_tests/api/iam/test_iam_basic_integration.js @@ -10,22 +10,22 @@ const assert = require('assert'); const SensitiveString = require('../../../../util/sensitive_string'); const fs_utils = require('../../../../util/fs_utils'); const { TMP_PATH, generate_nsfs_account, get_new_buckets_path_by_test_env, generate_iam_client, - require_coretest, is_nc_coretest } = require('../../../system_tests/test_utils'); + require_coretest, is_nc_coretest } = require('../../../system_tests/test_utils'); const { ListUsersCommand, CreateUserCommand, GetUserCommand, UpdateUserCommand, DeleteUserCommand, - ListAccessKeysCommand, CreateAccessKeyCommand, GetAccessKeyLastUsedCommand, - UpdateAccessKeyCommand, DeleteAccessKeyCommand, - ListUserPoliciesCommand, PutUserPolicyCommand, DeleteUserPolicyCommand, GetUserPolicyCommand, - ListUserTagsCommand, TagUserCommand, UntagUserCommand, - ListGroupsForUserCommand, ListAccountAliasesCommand, ListAttachedGroupPoliciesCommand, - ListAttachedRolePoliciesCommand, ListAttachedUserPoliciesCommand, ListEntitiesForPolicyCommand, - ListGroupPoliciesCommand, ListGroupsCommand, ListInstanceProfilesCommand, - ListInstanceProfilesForRoleCommand, ListInstanceProfileTagsCommand, ListMFADevicesCommand, - ListMFADeviceTagsCommand, ListOpenIDConnectProvidersCommand, ListOpenIDConnectProviderTagsCommand, - ListPoliciesCommand, ListPolicyTagsCommand, ListPolicyVersionsCommand, ListRolesCommand, - ListRoleTagsCommand, ListSAMLProvidersCommand, ListServerCertificatesCommand, - ListServerCertificateTagsCommand, ListServiceSpecificCredentialsCommand, - ListSigningCertificatesCommand, ListSSHPublicKeysCommand, - ListVirtualMFADevicesCommand } = require('@aws-sdk/client-iam'); + ListAccessKeysCommand, CreateAccessKeyCommand, GetAccessKeyLastUsedCommand, + UpdateAccessKeyCommand, DeleteAccessKeyCommand, + ListUserPoliciesCommand, PutUserPolicyCommand, DeleteUserPolicyCommand, GetUserPolicyCommand, + ListUserTagsCommand, TagUserCommand, UntagUserCommand, + ListGroupsForUserCommand, ListAccountAliasesCommand, ListAttachedGroupPoliciesCommand, + ListAttachedRolePoliciesCommand, ListAttachedUserPoliciesCommand, ListEntitiesForPolicyCommand, + ListGroupPoliciesCommand, ListGroupsCommand, ListInstanceProfilesCommand, + ListInstanceProfilesForRoleCommand, ListInstanceProfileTagsCommand, ListMFADevicesCommand, + ListMFADeviceTagsCommand, ListOpenIDConnectProvidersCommand, ListOpenIDConnectProviderTagsCommand, + ListPoliciesCommand, ListPolicyTagsCommand, ListPolicyVersionsCommand, ListRolesCommand, + ListRoleTagsCommand, ListSAMLProvidersCommand, ListServerCertificatesCommand, + ListServerCertificateTagsCommand, ListServiceSpecificCredentialsCommand, + ListSigningCertificatesCommand, ListSSHPublicKeysCommand, + ListVirtualMFADevicesCommand } = require('@aws-sdk/client-iam'); const { ACCESS_KEY_STATUS_ENUM } = require('../../../../endpoint/iam/iam_constants'); const IamError = require('../../../../endpoint/iam/iam_errors').IamError; @@ -41,6 +41,7 @@ const { rpc_client, EMAIL, get_current_setup_options, stop_nsfs_process, start_n let iam_account; let account_res; let config_root; +let coretest_endpoint_iam; mocha.describe('IAM integration tests', async function() { this.timeout(50000); // eslint-disable-line no-invalid-this @@ -68,7 +69,7 @@ mocha.describe('IAM integration tests', async function() { } // needed details for creating the account (and then the client) - const coretest_endpoint_iam = coretest.get_https_address_iam(); + coretest_endpoint_iam = coretest.get_https_address_iam(); const access_key = account_res.access_key instanceof SensitiveString ? account_res.access_key.unwrap() : account_res.access_key; @@ -428,15 +429,15 @@ mocha.describe('IAM integration tests', async function() { const sorted = arr => _.sortBy(arr, 'Key'); assert.deepEqual(sorted(response2.Tags), sorted(user_tags)); - // verify it with get user (Tags are included in the User object) - const input3 = { - UserName: username4 - }; - const command3 = new GetUserCommand(input3); - const response3 = await iam_account.send(command3); - _check_status_code_ok(response3); - assert.equal(response3.User.Tags.length, 2); - assert.deepEqual(sorted(response3.User.Tags), sorted(user_tags)); + // verify it with get user (Tags are included in the User object) + const input3 = { + UserName: username4 + }; + const command3 = new GetUserCommand(input3); + const response3 = await iam_account.send(command3); + _check_status_code_ok(response3); + assert.equal(response3.User.Tags.length, 2); + assert.deepEqual(sorted(response3.User.Tags), sorted(user_tags)); }); mocha.it('untag user', async function() { @@ -948,13 +949,21 @@ mocha.describe('IAM integration tests', async function() { const username_uppercase = username.toUpperCase(); const username2 = 'Leonardo'; + let access_key_id; + let iam_user_client; + mocha.describe('IAM CreateUser API', async function() { mocha.before(async () => { - await create_iam_user(username); + await create_iam_user(iam_account, username); + const res = await create_access_key_iam_user(iam_account, username); + access_key_id = res.access_key_id; + // create IAM client for the IAM user + iam_user_client = generate_iam_client(res.access_key_id, res.secret_access_key, coretest_endpoint_iam); }); mocha.after(async () => { - await delete_iam_user(username); + await delete_access_key_iam_user(iam_account, access_key_id, username); + await delete_iam_user(iam_account, username); }); mocha.it('create a user with username that already exists should fail', async function() { @@ -998,19 +1007,83 @@ mocha.describe('IAM integration tests', async function() { assert.equal(err_code, IamError.EntityAlreadyExists.code); } }); + + mocha.it('create a user - requester is IAM user - should fail', async function() { + const username_by_iam_user = 'username-test-by-iam-user'; + try { + const input = { + UserName: username_by_iam_user + }; + const command = new CreateUserCommand(input); + await iam_user_client.send(command); + assert.fail('create user - requester is IAM user - should throw an error'); + } catch (err) { + const err_code = err.Error?.Code || err.Code; + assert.equal(err_code, IamError.AccessDeniedException.code); + } + }); + }); + + mocha.describe('IAM GetUser API', async function() { + mocha.before(async () => { + await create_iam_user(iam_account, username); + const res = await create_access_key_iam_user(iam_account, username); + access_key_id = res.access_key_id; + // create IAM client for the IAM user + iam_user_client = generate_iam_client(res.access_key_id, res.secret_access_key, coretest_endpoint_iam); + }); + + mocha.after(async () => { + await delete_access_key_iam_user(iam_account, access_key_id, username); + await delete_iam_user(iam_account, username); + }); + + mocha.it('get a user - non-existing user - should fail', async function() { + try { + const input = { + UserName: 'non-existing-user' + }; + const command = new GetUserCommand(input); + await iam_account.send(command); + assert.fail('get user - non-existing user - should throw an error'); + } catch (err) { + const err_code = err.Error.Code; + assert.equal(err_code, IamError.NoSuchEntity.code); + } + }); + + mocha.it('get a user - requester is IAM user - should fail', async function() { + try { + const input = { + UserName: username + }; + const command = new GetUserCommand(input); + await iam_user_client.send(command); + assert.fail('get user - requester is IAM user - should throw an error'); + } catch (err) { + const err_code = err.Error?.Code || err.Code; + assert.equal(err_code, IamError.AccessDeniedException.code); + } + }); }); mocha.describe('IAM UpdateUser API', async function() { mocha.before(async () => { // create 2 users - await create_iam_user(username); - await create_iam_user(username2); + await create_iam_user(iam_account, username); + await create_iam_user(iam_account, username2); + + const res = await create_access_key_iam_user(iam_account, username); + access_key_id = res.access_key_id; + // create IAM client for the IAM user + iam_user_client = generate_iam_client(res.access_key_id, res.secret_access_key, coretest_endpoint_iam); }); mocha.after(async () => { + await delete_access_key_iam_user(iam_account, access_key_id, username); // delete 2 users - await delete_iam_user(username); - await delete_iam_user(username2); + await delete_iam_user(iam_account, username); + await delete_iam_user(iam_account, username2); }); mocha.it('update a user with same username', async function() { @@ -1052,31 +1125,138 @@ mocha.describe('IAM integration tests', async function() { assert.equal(err_code, IamError.EntityAlreadyExists.code); } }); + + mocha.it('update a user - non-existing user - should fail', async function() { + try { + const input = { + UserName: 'non-existing-user', + NewUserName: 'new-non-existing-user' + }; + const command = new UpdateUserCommand(input); + await iam_account.send(command); + assert.fail('update user - non-existing user - should throw an error'); + } catch (err) { + const err_code = err.Error.Code; + assert.equal(err_code, IamError.NoSuchEntity.code); + } + }); + + mocha.it('update a user - requester is IAM user - should fail', async function() { + try { + const input = { + UserName: username, + NewUserName: username2, + }; + const command = new UpdateUserCommand(input); + await iam_user_client.send(command); + assert.fail('update user - requester is IAM user - should throw an error'); + } catch (err) { + const err_code = err.Error?.Code || err.Code; + assert.equal(err_code, IamError.AccessDeniedException.code); + } + }); + }); + + mocha.describe('IAM DeleteUser API', async function() { + mocha.before(async () => { + await create_iam_user(iam_account, username); + const res = await create_access_key_iam_user(iam_account, username); + access_key_id = res.access_key_id; + // create IAM client for the IAM user + iam_user_client = generate_iam_client(res.access_key_id, res.secret_access_key, coretest_endpoint_iam); + }); + + mocha.after(async () => { + await delete_access_key_iam_user(iam_account, access_key_id, username); + await delete_iam_user(iam_account, username); + }); + + mocha.it('delete a user - non-existing user - should fail', async function() { + try { + const input = { + UserName: 'non-existing-user' + }; + const command = new DeleteUserCommand(input); + await iam_account.send(command); + assert.fail('delete user - non-existing user - should throw an error'); + } catch (err) { + const err_code = err.Error.Code; + assert.equal(err_code, IamError.NoSuchEntity.code); + } + }); + + mocha.it('delete a user - requester is IAM user - should fail', async function() { + try { + const input = { + UserName: username + }; + const command = new DeleteUserCommand(input); + await iam_user_client.send(command); + assert.fail('delete user - requester is IAM user - should throw an error'); + } catch (err) { + const err_code = err.Error?.Code || err.Code; + assert.equal(err_code, IamError.AccessDeniedException.code); + } + }); }); }); mocha.describe('IAM Access Keys API', async function() { - const username2 = 'Alejandro'; + const username = 'Alejandro'; let access_key_id; + let access_key_id_2; + let iam_user_client; + + mocha.describe('IAM CreateAccessKey API', async function() { + mocha.before(async () => { + await create_iam_user(iam_account, username); + const res = await create_access_key_iam_user(iam_account, username); + access_key_id = res.access_key_id; + // create IAM client for the IAM user + iam_user_client = generate_iam_client(res.access_key_id, res.secret_access_key, coretest_endpoint_iam); + }); + + mocha.after(async () => { + await delete_access_key_iam_user(iam_account, access_key_id, username); + await delete_access_key_iam_user(iam_account, access_key_id_2, username); + await delete_iam_user(iam_account, username); + }); + + mocha.it('create second access key - requester is IAM user', async function() { + const input = { + UserName: username + }; + const command = new CreateAccessKeyCommand(input); + const response = await iam_user_client.send(command); + access_key_id_2 = response.AccessKey.AccessKeyId; + _check_status_code_ok(response); + assert.equal(response.AccessKey.UserName, username); + assert(response.AccessKey.AccessKeyId !== undefined); + assert(response.AccessKey.SecretAccessKey !== undefined); + assert.equal(response.AccessKey.Status, ACCESS_KEY_STATUS_ENUM.ACTIVE); + }); + }); mocha.describe('IAM GetAccessKeyLastUsed API', async function() { mocha.before(async () => { - await create_iam_user(username2); - const res = await create_access_key_iam_user(username2); + await create_iam_user(iam_account, username); + const res = await create_access_key_iam_user(iam_account, username); access_key_id = res.access_key_id; + // create IAM client for the IAM user + iam_user_client = generate_iam_client(res.access_key_id, res.secret_access_key, coretest_endpoint_iam); }); mocha.after(async () => { - await delete_access_key_iam_user(access_key_id, username2); - await delete_iam_user(username2); + await delete_access_key_iam_user(iam_account, access_key_id, username); + await delete_iam_user(iam_account, username); }); - mocha.it('get access key last used with invalid access key ID should fail', async function() { - const access_key_id_invalid = access_key_id + '0'; + mocha.it('get access key last used with non-existing access key ID should fail', async function() { + const access_key_id_non_existing = access_key_id + '0'; try { const input = { - AccessKeyId: access_key_id_invalid + AccessKeyId: access_key_id_non_existing }; const command = new GetAccessKeyLastUsedCommand(input); await iam_account.send(command); @@ -1086,6 +1266,131 @@ mocha.describe('IAM integration tests', async function() { assert.equal(err_code, IamError.NoSuchEntity.code); } }); + + mocha.it('get access key (last used) - requester is IAM user', async function() { + const input = { + AccessKeyId: access_key_id + }; + const command = new GetAccessKeyLastUsedCommand(input); + const response = await iam_user_client.send(command); + _check_status_code_ok(response); + assert.equal(response.UserName, username); + assert(response.AccessKeyLastUsed.LastUsedDate !== undefined); + assert(response.AccessKeyLastUsed.ServiceName !== undefined); + assert(response.AccessKeyLastUsed.Region !== undefined); + }); + }); + + mocha.describe('IAM UpdateAccessKey API', async function() { + mocha.before(async () => { + await create_iam_user(iam_account, username); + const res = await create_access_key_iam_user(iam_account, username); + access_key_id = res.access_key_id; + const res2 = await create_access_key_iam_user(iam_account, username); + access_key_id_2 = res2.access_key_id; + // create IAM client for the IAM user + iam_user_client = generate_iam_client(res.access_key_id, res.secret_access_key, coretest_endpoint_iam); + }); + + mocha.after(async () => { + await delete_access_key_iam_user(iam_account, access_key_id, username); + await delete_access_key_iam_user(iam_account, access_key_id_2, username); + await delete_iam_user(iam_account, username); + }); + + mocha.it('update access key - requester is IAM user', async function() { + const input = { + UserName: username, + AccessKeyId: access_key_id_2, + Status: ACCESS_KEY_STATUS_ENUM.INACTIVE + }; + const command = new UpdateAccessKeyCommand(input); + const response = await iam_user_client.send(command); + _check_status_code_ok(response); + + // verify it using list access keys (from the account) + const input2 = { + UserName: username + }; + const command2 = new ListAccessKeysCommand(input2); + const response2 = await iam_account.send(command2); + _check_status_code_ok(response2); + assert.equal(response2.AccessKeyMetadata.length, 2); + for (const access_key of response2.AccessKeyMetadata) { + if (access_key.AccessKeyId === access_key_id_2) { + assert.equal(access_key.Status, ACCESS_KEY_STATUS_ENUM.INACTIVE); + } else if (access_key.AccessKeyId === access_key_id) { + assert.equal(access_key.Status, ACCESS_KEY_STATUS_ENUM.ACTIVE); + } + } + }); + }); + + mocha.describe('IAM DeleteAccessKey API', async function() { + mocha.before(async () => { + await create_iam_user(iam_account, username); + const res = await create_access_key_iam_user(iam_account, username); + access_key_id = res.access_key_id; + const res2 = await create_access_key_iam_user(iam_account, username); + access_key_id_2 = res2.access_key_id; + // create IAM client for the IAM user + iam_user_client = generate_iam_client(res.access_key_id, res.secret_access_key, coretest_endpoint_iam); + }); + + mocha.after(async () => { + await delete_access_key_iam_user(iam_account, access_key_id, username); + await delete_iam_user(iam_account, username); + }); + + mocha.it('delete access key - requester is IAM user', async function() { + const input = { + UserName: username, + AccessKeyId: access_key_id_2 + }; + const command = new DeleteAccessKeyCommand(input); + const response = await iam_user_client.send(command); + _check_status_code_ok(response); + + // verify it using list access keys (from the account) + const input2 = { + UserName: username + }; + const command2 = new ListAccessKeysCommand(input2); + const response2 = await iam_account.send(command2); + _check_status_code_ok(response2); + assert.equal(response2.AccessKeyMetadata.length, 1); + assert.equal(response2.AccessKeyMetadata[0].UserName, username); + assert.equal(response2.AccessKeyMetadata[0].AccessKeyId, access_key_id); + assert.equal(response2.AccessKeyMetadata[0].Status, ACCESS_KEY_STATUS_ENUM.ACTIVE); + }); + }); + + mocha.describe('IAM ListAccessKeys API', async function() { + mocha.before(async () => { + await create_iam_user(iam_account, username); + const res = await create_access_key_iam_user(iam_account, username); + access_key_id = res.access_key_id; + // create IAM client for the IAM user + iam_user_client = generate_iam_client(res.access_key_id, res.secret_access_key, coretest_endpoint_iam); + }); + + mocha.after(async () => { + await delete_access_key_iam_user(iam_account, access_key_id, username); + await delete_iam_user(iam_account, username); + }); + + mocha.it('list access keys - requester is IAM user', async function() { + const input = { + UserName: username + }; + const command = new ListAccessKeysCommand(input); + const response = await iam_user_client.send(command); + _check_status_code_ok(response); + assert.equal(response.AccessKeyMetadata.length, 1); + assert.equal(response.AccessKeyMetadata[0].UserName, username); + assert.equal(response.AccessKeyMetadata[0].AccessKeyId, access_key_id); + assert.equal(response.AccessKeyMetadata[0].Status, ACCESS_KEY_STATUS_ENUM.ACTIVE); + }); }); }); }); @@ -1102,28 +1407,30 @@ function _check_status_code_ok(response) { /** * Create an IAM user with the given username. * use this function for before/after hooks to avoid code duplication + * @param {object} iam_client * @param {string} username_to_create */ -async function create_iam_user(username_to_create) { +async function create_iam_user(iam_client, username_to_create) { const input = { UserName: username_to_create }; const command = new CreateUserCommand(input); - const response = await iam_account.send(command); + const response = await iam_client.send(command); _check_status_code_ok(response); } /** * Delete an IAM user with the given username. * use this function for before/after hooks to avoid code duplication + * @param {object} iam_client * @param {string} username_to_delete */ -async function delete_iam_user(username_to_delete) { +async function delete_iam_user(iam_client, username_to_delete) { const input = { UserName: username_to_delete }; const command = new DeleteUserCommand(input); - const response = await iam_account.send(command); + const response = await iam_client.send(command); _check_status_code_ok(response); } @@ -1131,14 +1438,15 @@ async function delete_iam_user(username_to_delete) { /** * Create an IAM user's access key with the given username. * use this function for before/after hooks to avoid code duplication + * @param {object} iam_client * @param {string} username */ -async function create_access_key_iam_user(username) { +async function create_access_key_iam_user(iam_client, username) { const input = { UserName: username }; const command = new CreateAccessKeyCommand(input); - const response = await iam_account.send(command); + const response = await iam_client.send(command); _check_status_code_ok(response); return { access_key_id: response.AccessKey.AccessKeyId, secret_access_key: response.AccessKey.SecretAccessKey }; } @@ -1147,15 +1455,16 @@ async function create_access_key_iam_user(username) { /** * Delete an IAM user's access key with the given access key ID and username. * use this function for before/after hooks to avoid code duplication + * @param {object} iam_client * @param {string} access_key_to_delete * @param {string} username */ -async function delete_access_key_iam_user(access_key_to_delete, username) { +async function delete_access_key_iam_user(iam_client, access_key_to_delete, username) { const input = { UserName: username, AccessKeyId: access_key_to_delete }; const command = new DeleteAccessKeyCommand(input); - const response = await iam_account.send(command); + const response = await iam_client.send(command); _check_status_code_ok(response); } diff --git a/src/util/account_util.js b/src/util/account_util.js index 93b0bdf6b0..af7e26dd1c 100644 --- a/src/util/account_util.js +++ b/src/util/account_util.js @@ -385,7 +385,7 @@ function _check_if_requested_is_owned_by_root_account(action, requesting_account const is_user_account_to_get_owned_by_root_user = _check_root_account_owns_user(requesting_account, requested_account); if (!is_user_account_to_get_owned_by_root_user) { const username = requested_account.name instanceof SensitiveString ? - requested_account.name.unwrap() : requested_account.name; + requested_account.name.unwrap() : requested_account.name; dbg.error(`AccountSpaceNB.${action} requested account is not owned by root account`, username); const message_with_details = `The user with name ${username} cannot be found.`; throw new RpcError('NO_SUCH_ENTITY', message_with_details); @@ -393,18 +393,18 @@ function _check_if_requested_is_owned_by_root_account(action, requesting_account } /** -* _returned_username would return the username of IAM Access key API: - * 1. undefined - for root accounts manager on root account (no username, only account name) - * for root account on itself - * 2. username - for IAM user - * @param {object} requesting_account - * @param {Object} username - * @param {boolean} on_itself - */ + * _returned_username would return the username of IAM Access key API: + * 1. undefined - for root accounts manager on root account (no username, only account name) + * for root account on itself + * 2. username - for IAM user + * @param {object} requesting_account + * @param {Object} username + * @param {boolean} on_itself + */ function _returned_username(requesting_account, username, on_itself) { if ((requesting_account.iam_operate_on_root_account) || (_check_root_account(requesting_account) && on_itself)) { - return undefined; + return undefined; } return username instanceof SensitiveString ? username.unwrap() : username; } @@ -441,11 +441,12 @@ function _throw_error_no_such_entity_policy(action, policy_name) { function _throw_access_denied_error(action, requesting_account, details, entity) { const full_action_name = get_action_message_title(action); - const account_id_for_arn = _get_account_owner_id_for_arn(requesting_account).toString(); - const arn_for_requesting_account = create_arn_for_user(account_id_for_arn, requesting_account.name.unwrap(), - requesting_account.iam_path || IAM_DEFAULT_PATH); + const account_id = _get_account_owner_id_for_arn(requesting_account); + const account_id_for_arn = String(account_id); + const arn_for_requesting_account = account_id ? create_arn_for_user(account_id_for_arn, requesting_account.name.unwrap(), + requesting_account.iam_path || IAM_DEFAULT_PATH) : ''; const basic_message = `User: ${arn_for_requesting_account} is not authorized to perform:` + - `${full_action_name} on resource: `; + `${full_action_name} on resource: `; let message_with_details; if (entity === 'USER') { let user_message; @@ -456,7 +457,7 @@ function _throw_access_denied_error(action, requesting_account, details, entity) user_message = create_arn_for_user(account_id_for_arn, details.username, details.path); } message_with_details = basic_message + - `${user_message} because no identity-based policy allows the ${full_action_name} action`; + `${user_message} because no identity-based policy allows the ${full_action_name} action`; } else { message_with_details = basic_message + `access key ${details.access_key}`; } @@ -464,18 +465,18 @@ function _throw_access_denied_error(action, requesting_account, details, entity) } function _throw_error_delete_conflict(action, account_to_delete, resource_name) { - dbg.error(`AccountSpaceNB.${action} requested account ` + - `${account_to_delete.name} ${account_to_delete._id} has ${resource_name}`); - const message_with_details = `Cannot delete entity, must delete ${resource_name} first.`; - throw new RpcError('DELETE_CONFLICT', message_with_details); - } + dbg.error(`AccountSpaceNB.${action} requested account ` + + `${account_to_delete.name} ${account_to_delete._id} has ${resource_name}`); + const message_with_details = `Cannot delete entity, must delete ${resource_name} first.`; + throw new RpcError('DELETE_CONFLICT', message_with_details); +} // ACCESS KEY VALIDATIONS function _check_number_of_access_key_array(action, requested_account) { if (requested_account.access_keys && requested_account.access_keys.length >= MAX_NUMBER_OF_ACCESS_KEYS) { dbg.error(`AccountSpaceNB.${action} cannot exceed quota for AccessKeysPerUser `, - requested_account.name); + requested_account.name); const message_with_details = `Cannot exceed quota for AccessKeysPerUser: ${MAX_NUMBER_OF_ACCESS_KEYS}.`; throw new RpcError('LIMIT_EXCEEDED', message_with_details); } @@ -514,7 +515,7 @@ function _check_access_key_belongs_to_account(action, requested_account, access_ function _check_specific_access_key_exists(access_keys, access_key_to_find) { for (const access_key_obj of access_keys) { const access_key = access_key_obj.access_key instanceof SensitiveString ? - access_key_obj.access_key.unwrap() : access_key_obj.access_key; + access_key_obj.access_key.unwrap() : access_key_obj.access_key; if (access_key_to_find === access_key) { return true; } @@ -535,7 +536,7 @@ function _check_specific_access_key_exists(access_keys, access_key_to_find) { function _get_account_owner_id_for_arn(requesting_account, requested_account) { if (!requesting_account.iam_operate_on_root_account) { if (requesting_account.owner !== undefined) { - return requesting_account.owner._id; + return get_owner_account_id(requesting_account); } return requesting_account._id; } @@ -598,7 +599,7 @@ function _check_user_policy_exists(action, iam_user_policies, policy_name) { function _get_iam_user_policy_index(iam_user_policies, policy_name) { const iam_user_policy_index = iam_user_policies.findIndex(current_iam_user_policy => - current_iam_user_policy.policy_name === policy_name); + current_iam_user_policy.policy_name === policy_name); return iam_user_policy_index; } @@ -720,7 +721,9 @@ function validate_create_account_params(req) { } } -function validate_and_return_requested_account(params, action, requesting_account) { +// implicit policy - we allow a few actions that a IAM user can run on himself +// Currently - all access key actions +function validate_and_return_requested_account_with_option_itself(params, action, requesting_account) { const requester_username = requesting_account.name.unwrap(); // check if root account or IAM user is operating on themselves (with or without --user-name flag) const no_username_or_self_operation = !params.username; // can be root account or IAM user @@ -738,15 +741,20 @@ function validate_and_return_requested_account(params, action, requesting_accoun throw new RpcError('NOT_AUTHORIZED', 'You do not have permission to perform this action.'); } } else { - _check_if_requesting_account_is_root_account(action, requesting_account, { username: params.username }); - const account_email = get_account_email_from_username(params.username, requesting_account._id.toString()); - requested_account = _check_if_account_exists(action, account_email, params.username); - _check_if_requested_account_is_root_account_or_IAM_user(action, requesting_account, requested_account); - _check_if_requested_is_owned_by_root_account(action, requesting_account, requested_account); + return validate_and_return_requested_account(params, action, requesting_account); } return requested_account; } +function validate_and_return_requested_account(params, action, requesting_account) { + _check_if_requesting_account_is_root_account(action, requesting_account, { username: params.username }); + const account_email = get_account_email_from_username(params.username, requesting_account._id.toString()); + const requested_account = _check_if_account_exists(action, account_email, params.username); + _check_if_requested_account_is_root_account_or_IAM_user(action, requesting_account, requested_account); + _check_if_requested_is_owned_by_root_account(action, requesting_account, requested_account); + return requested_account; +} + function return_list_member(iam_user, iam_path, iam_username) { const owner_account_id = get_owner_account_id(iam_user); return { @@ -774,10 +782,10 @@ function get_sorted_list_tags_for_user(user_tagging) { } function get_system_id_for_events(req) { - const sys_id = req.rpc_params.new_system_parameters ? + const sys_id = req.rpc_params.new_system_parameters ? system_store.parse_system_store_id(req.rpc_params.new_system_parameters.new_system_id) : req.system && req.system._id; - return sys_id; + return sys_id; } exports.delete_account = delete_account; @@ -803,6 +811,7 @@ exports._check_user_policy_exists = _check_user_policy_exists; exports._check_if_user_does_not_have_resources_before_deletion = _check_if_user_does_not_have_resources_before_deletion; exports._check_total_policy_size = _check_total_policy_size; exports.validate_and_return_requested_account = validate_and_return_requested_account; +exports.validate_and_return_requested_account_with_option_itself = validate_and_return_requested_account_with_option_itself; exports.return_list_member = return_list_member; exports.get_owner_account_id = get_owner_account_id; exports.get_sorted_list_tags_for_user = get_sorted_list_tags_for_user; From ddabbe59e846a3b8b4530e981000872e2284e0d6 Mon Sep 17 00:00:00 2001 From: liranmauda Date: Wed, 10 Dec 2025 10:56:05 +0200 Subject: [PATCH 2/2] Bumping deps to avoid CVE (11/12/2025) - Bumping deps to avoid CVE (11/12/2025) Signed-off-by: liranmauda --- package-lock.json | 1093 ++++++++++++++++++++++++--------------------- package.json | 34 +- 2 files changed, 597 insertions(+), 530 deletions(-) diff --git a/package-lock.json b/package-lock.json index abfd4ee303..7a736ee32f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,24 +10,24 @@ "hasInstallScript": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@aws-sdk/client-s3": "3.937.0", - "@aws-sdk/client-sts": "3.936.0", - "@aws-sdk/credential-providers": "3.936.0", - "@aws-sdk/lib-storage": "3.937.0", - "@aws-sdk/s3-request-presigner": "3.937.0", + "@aws-sdk/client-s3": "3.948.0", + "@aws-sdk/client-sts": "3.948.0", + "@aws-sdk/credential-providers": "3.948.0", + "@aws-sdk/lib-storage": "3.948.0", + "@aws-sdk/s3-request-presigner": "3.948.0", "@azure/identity": "4.13.0", "@azure/monitor-query-logs": "1.0.0", "@azure/storage-blob": "12.29.1", - "@google-cloud/storage": "7.17.3", + "@google-cloud/storage": "7.18.0", "@smithy/node-http-handler": "4.4.5", "ajv": "8.17.1", - "aws-sdk": "2.1692.0", + "aws-sdk": "2.1693.0", "big-integer": "1.6.52", "bindings": "1.5.0", "chance": "1.1.13", "compression": "1.8.1", "crc-32": "1.2.2", - "express": "4.21.2", + "express": "4.22.1", "express-http-proxy": "2.1.2", "getos": "3.2.1", "glob-to-regexp": "0.4.1", @@ -35,18 +35,18 @@ "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", "ip": "2.0.1", - "jsonwebtoken": "9.0.2", - "ldapts": "8.0.9", + "jsonwebtoken": "9.0.3", + "ldapts": "8.0.19", "linux-blockutils": "0.2.0", "lodash": "4.17.21", "mime-types": "3.0.2", "minimist": "1.2.8", "moment": "2.30.1", "moment-timezone": "0.6.0", - "mongo-query-to-postgres-jsonb": "0.2.17", + "mongo-query-to-postgres-jsonb": "0.2.18", "mongodb": "3.7.4", "morgan": "1.10.1", - "nan": "2.23.1", + "nan": "2.24.0", "node-addon-api": "8.5.0", "performance-now": "2.1.0", "pg": "8.16.3", @@ -58,7 +58,7 @@ "typescript": "5.9.3", "ws": "8.18.3", "xml2js": "0.6.2", - "yaml": "2.8.1", + "yaml": "2.8.2", "yauzl": "3.2.0", "yazl": "3.3.1" }, @@ -66,13 +66,13 @@ "noobaa-core": "src/cmd/index.js" }, "devDependencies": { - "@aws-sdk/client-iam": "3.936.0", + "@aws-sdk/client-iam": "3.948.0", "@stylistic/eslint-plugin-js": "1.8.1", "@types/jest": "30.0.0", "@types/lodash": "4.17.21", "@types/mongodb": "4.0.7", - "@types/node": "24.10.1", - "@types/pg": "8.15.6", + "@types/node": "24.10.3", + "@types/pg": "8.16.0", "eslint": "8.57.1", "eslint-plugin-header": "3.1.1", "eslint-plugin-jest": "28.14.0", @@ -85,7 +85,7 @@ "wtfnode": "0.10.1" }, "optionalDependencies": { - "node-rdkafka": "3.6.0" + "node-rdkafka": "3.6.1" } }, "node_modules/@aws-crypto/crc32": { @@ -291,45 +291,45 @@ } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.936.0.tgz", - "integrity": "sha512-AkJZ426y0G8Lsyi9p7mWudacMKeo8XLZOfxUmeThMkDa3GxGQ1y6BTrOj6ZcvqQ1Hz7Abb3QWPC+EMqhu1Lncw==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.948.0.tgz", + "integrity": "sha512-xuf0zODa1zxiCDEcAW0nOsbkXHK9QnK6KFsCatSdcIsg1zIaGCui0Cg3HCm/gjoEgv+4KkEpYmzdcT5piedzxA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.936.0", - "@aws-sdk/credential-provider-node": "3.936.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/credential-provider-node": "3.948.0", "@aws-sdk/middleware-host-header": "3.936.0", "@aws-sdk/middleware-logger": "3.936.0", - "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.948.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/region-config-resolver": "3.936.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.947.0", "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.12", - "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-endpoint": "^4.3.14", + "@smithy/middleware-retry": "^4.4.14", "@smithy/middleware-serde": "^4.2.6", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.11", - "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-defaults-mode-browser": "^4.3.13", + "@smithy/util-defaults-mode-node": "^4.2.16", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", @@ -341,46 +341,46 @@ } }, "node_modules/@aws-sdk/client-iam": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.936.0.tgz", - "integrity": "sha512-WsqHGNNf77hyT3z8fO2VJ+JfkN1NihSPApexmSyMFZkcy4RFyFdWHb3BQJNAfbuALe95+D5U7eKK5VPIAAcRIw==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.948.0.tgz", + "integrity": "sha512-Mclv7x4mYpSIy47pXUQWuxTsZT/6ECgHMqmINQAjSVX/TZGfIVfweruV+y0J298xQe1EMbK2WQ/FQqlZjBDZFg==", "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.936.0", - "@aws-sdk/credential-provider-node": "3.936.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/credential-provider-node": "3.948.0", "@aws-sdk/middleware-host-header": "3.936.0", "@aws-sdk/middleware-logger": "3.936.0", - "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.948.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/region-config-resolver": "3.936.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.947.0", "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.12", - "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-endpoint": "^4.3.14", + "@smithy/middleware-retry": "^4.4.14", "@smithy/middleware-serde": "^4.2.6", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.11", - "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-defaults-mode-browser": "^4.3.13", + "@smithy/util-defaults-mode-node": "^4.2.16", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", @@ -393,34 +393,34 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.937.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.937.0.tgz", - "integrity": "sha512-ioeNe6HSc7PxjsUQY7foSHmgesxM5KwAeUtPhIHgKx99nrM+7xYCfW4FMvHypUzz7ZOvqlCdH7CEAZ8ParBvVg==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.948.0.tgz", + "integrity": "sha512-uvEjds8aYA9SzhBS8RKDtsDUhNV9VhqKiHTcmvhM7gJO92q0WTn8/QeFTdNyLc6RxpiDyz+uBxS7PcdNiZzqfA==", "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.936.0", - "@aws-sdk/credential-provider-node": "3.936.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/credential-provider-node": "3.948.0", "@aws-sdk/middleware-bucket-endpoint": "3.936.0", "@aws-sdk/middleware-expect-continue": "3.936.0", - "@aws-sdk/middleware-flexible-checksums": "3.936.0", + "@aws-sdk/middleware-flexible-checksums": "3.947.0", "@aws-sdk/middleware-host-header": "3.936.0", "@aws-sdk/middleware-location-constraint": "3.936.0", "@aws-sdk/middleware-logger": "3.936.0", - "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-sdk-s3": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.948.0", + "@aws-sdk/middleware-sdk-s3": "3.947.0", "@aws-sdk/middleware-ssec": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/region-config-resolver": "3.936.0", - "@aws-sdk/signature-v4-multi-region": "3.936.0", + "@aws-sdk/signature-v4-multi-region": "3.947.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.947.0", "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/eventstream-serde-browser": "^4.2.5", "@smithy/eventstream-serde-config-resolver": "^4.3.5", "@smithy/eventstream-serde-node": "^4.2.5", @@ -431,21 +431,21 @@ "@smithy/invalid-dependency": "^4.2.5", "@smithy/md5-js": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.12", - "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-endpoint": "^4.3.14", + "@smithy/middleware-retry": "^4.4.14", "@smithy/middleware-serde": "^4.2.6", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.11", - "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-defaults-mode-browser": "^4.3.13", + "@smithy/util-defaults-mode-node": "^4.2.16", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", @@ -459,44 +459,44 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz", - "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.948.0.tgz", + "integrity": "sha512-iWjchXy8bIAVBUsKnbfKYXRwhLgRg3EqCQ5FTr3JbR+QR75rZm4ZOYXlvHGztVTmtAZ+PQVA1Y4zO7v7N87C0A==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.936.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/middleware-host-header": "3.936.0", "@aws-sdk/middleware-logger": "3.936.0", - "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.948.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/region-config-resolver": "3.936.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.947.0", "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.12", - "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-endpoint": "^4.3.14", + "@smithy/middleware-retry": "^4.4.14", "@smithy/middleware-serde": "^4.2.6", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.11", - "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-defaults-mode-browser": "^4.3.13", + "@smithy/util-defaults-mode-node": "^4.2.16", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", @@ -508,45 +508,45 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.936.0.tgz", - "integrity": "sha512-IKPJ+LHjOep+6to5tjPOI9ReSTqWZKjIqqLzHvgtbNaTMOfYg4mGv7eJdOusgtPoEXZZVhIaLUslFv7oq6y8KQ==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.948.0.tgz", + "integrity": "sha512-sBcuRA8nKvLqwI5QyBDbnvlNwHmxsBLRGNJmJb2dTby3ClX0SHuF/2EDSzbxUXJOU+iT61E+2FCNqY2xb+MAbg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.936.0", - "@aws-sdk/credential-provider-node": "3.936.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/credential-provider-node": "3.948.0", "@aws-sdk/middleware-host-header": "3.936.0", "@aws-sdk/middleware-logger": "3.936.0", - "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.948.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/region-config-resolver": "3.936.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.947.0", "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.12", - "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-endpoint": "^4.3.14", + "@smithy/middleware-retry": "^4.4.14", "@smithy/middleware-serde": "^4.2.6", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.11", - "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-defaults-mode-browser": "^4.3.13", + "@smithy/util-defaults-mode-node": "^4.2.16", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", @@ -558,19 +558,19 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz", - "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.947.0.tgz", + "integrity": "sha512-Khq4zHhuAkvCFuFbgcy3GrZTzfSX7ZIjIcW1zRDxXRLZKRtuhnZdonqTUfaWi5K42/4OmxkYNpsO7X7trQOeHw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", "@aws-sdk/xml-builder": "3.930.0", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/node-config-provider": "^4.3.5", "@smithy/property-provider": "^4.2.5", "@smithy/protocol-http": "^5.3.5", "@smithy/signature-v4": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-middleware": "^4.2.5", @@ -582,12 +582,12 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.936.0.tgz", - "integrity": "sha512-+aSC59yiD4M5RcYp9Gx3iwX/n4hO3ZWA2Mxmkzmt9gYFBbJ9umx2LpBdrV64y57AtOvfGeo0h7PAXniIufagxw==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.948.0.tgz", + "integrity": "sha512-qWzS4aJj09sHJ4ZPLP3UCgV2HJsqFRNtseoDlvmns8uKq4ShaqMoqJrN6A9QTZT7lEBjPFsfVV4Z7Eh6a0g3+g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.936.0", + "@aws-sdk/client-cognito-identity": "3.948.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/types": "^4.9.0", @@ -598,12 +598,12 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz", - "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.947.0.tgz", + "integrity": "sha512-VR2V6dRELmzwAsCpK4GqxUi6UW5WNhAXS9F9AzWi5jvijwJo3nH92YNJUP4quMpgFZxJHEWyXLWgPjh9u0zYOA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.936.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/types": "^4.9.0", @@ -614,18 +614,18 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz", - "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.947.0.tgz", + "integrity": "sha512-inF09lh9SlHj63Vmr5d+LmwPXZc2IbK8lAruhOr3KLsZAIHEgHgGPXWDC2ukTEMzg0pkexQ6FOhXXad6klK4RA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.936.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/node-http-handler": "^4.4.5", "@smithy/property-provider": "^4.2.5", "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" @@ -635,19 +635,19 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz", - "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.936.0", - "@aws-sdk/credential-provider-env": "3.936.0", - "@aws-sdk/credential-provider-http": "3.936.0", - "@aws-sdk/credential-provider-login": "3.936.0", - "@aws-sdk/credential-provider-process": "3.936.0", - "@aws-sdk/credential-provider-sso": "3.936.0", - "@aws-sdk/credential-provider-web-identity": "3.936.0", - "@aws-sdk/nested-clients": "3.936.0", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.948.0.tgz", + "integrity": "sha512-Cl//Qh88e8HBL7yYkJNpF5eq76IO6rq8GsatKcfVBm7RFVxCqYEPSSBtkHdbtNwQdRQqAMXc6E/lEB/CZUDxnA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.947.0", + "@aws-sdk/credential-provider-env": "3.947.0", + "@aws-sdk/credential-provider-http": "3.947.0", + "@aws-sdk/credential-provider-login": "3.948.0", + "@aws-sdk/credential-provider-process": "3.947.0", + "@aws-sdk/credential-provider-sso": "3.948.0", + "@aws-sdk/credential-provider-web-identity": "3.948.0", + "@aws-sdk/nested-clients": "3.948.0", "@aws-sdk/types": "3.936.0", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/property-provider": "^4.2.5", @@ -660,13 +660,13 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.936.0.tgz", - "integrity": "sha512-8DVrdRqPyUU66gfV7VZNToh56ZuO5D6agWrkLQE/xbLJOm2RbeRgh6buz7CqV8ipRd6m+zCl9mM4F3osQLZn8Q==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.948.0.tgz", + "integrity": "sha512-gcKO2b6eeTuZGp3Vvgr/9OxajMrD3W+FZ2FCyJox363ZgMoYJsyNid1vuZrEuAGkx0jvveLXfwiVS0UXyPkgtw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.936.0", - "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/nested-clients": "3.948.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/protocol-http": "^5.3.5", @@ -679,17 +679,17 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz", - "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.948.0.tgz", + "integrity": "sha512-ep5vRLnrRdcsP17Ef31sNN4g8Nqk/4JBydcUJuFRbGuyQtrZZrVT81UeH2xhz6d0BK6ejafDB9+ZpBjXuWT5/Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.936.0", - "@aws-sdk/credential-provider-http": "3.936.0", - "@aws-sdk/credential-provider-ini": "3.936.0", - "@aws-sdk/credential-provider-process": "3.936.0", - "@aws-sdk/credential-provider-sso": "3.936.0", - "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/credential-provider-env": "3.947.0", + "@aws-sdk/credential-provider-http": "3.947.0", + "@aws-sdk/credential-provider-ini": "3.948.0", + "@aws-sdk/credential-provider-process": "3.947.0", + "@aws-sdk/credential-provider-sso": "3.948.0", + "@aws-sdk/credential-provider-web-identity": "3.948.0", "@aws-sdk/types": "3.936.0", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/property-provider": "^4.2.5", @@ -702,12 +702,12 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz", - "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.947.0.tgz", + "integrity": "sha512-WpanFbHe08SP1hAJNeDdBDVz9SGgMu/gc0XJ9u3uNpW99nKZjDpvPRAdW7WLA4K6essMjxWkguIGNOpij6Do2Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.936.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -719,14 +719,14 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz", - "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.948.0.tgz", + "integrity": "sha512-gqLhX1L+zb/ZDnnYbILQqJ46j735StfWV5PbDjxRzBKS7GzsiYoaf6MyHseEopmWrez5zl5l6aWzig7UpzSeQQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.936.0", - "@aws-sdk/core": "3.936.0", - "@aws-sdk/token-providers": "3.936.0", + "@aws-sdk/client-sso": "3.948.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/token-providers": "3.948.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -738,13 +738,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz", - "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.948.0.tgz", + "integrity": "sha512-MvYQlXVoJyfF3/SmnNzOVEtANRAiJIObEUYYyjTqKZTmcRIVVky0tPuG26XnB8LmTYgtESwJIZJj/Eyyc9WURQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.936.0", - "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/nested-clients": "3.948.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -756,26 +756,26 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.936.0.tgz", - "integrity": "sha512-RWiX6wuReeEU7/P7apGwWMNO7nrai/CXmMMaho3+pJW7i6ImosgsjSe5tetdv1r4djOtM1b4J4WAbHPKJUahUg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.936.0", - "@aws-sdk/core": "3.936.0", - "@aws-sdk/credential-provider-cognito-identity": "3.936.0", - "@aws-sdk/credential-provider-env": "3.936.0", - "@aws-sdk/credential-provider-http": "3.936.0", - "@aws-sdk/credential-provider-ini": "3.936.0", - "@aws-sdk/credential-provider-login": "3.936.0", - "@aws-sdk/credential-provider-node": "3.936.0", - "@aws-sdk/credential-provider-process": "3.936.0", - "@aws-sdk/credential-provider-sso": "3.936.0", - "@aws-sdk/credential-provider-web-identity": "3.936.0", - "@aws-sdk/nested-clients": "3.936.0", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.948.0.tgz", + "integrity": "sha512-puFIZzSxByrTS7Ffn+zIjxlyfI0ELjjwvISVUTAZPmH5Jl95S39+A+8MOOALtFQcxLO7UEIiJFJIIkNENK+60w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.948.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/credential-provider-cognito-identity": "3.948.0", + "@aws-sdk/credential-provider-env": "3.947.0", + "@aws-sdk/credential-provider-http": "3.947.0", + "@aws-sdk/credential-provider-ini": "3.948.0", + "@aws-sdk/credential-provider-login": "3.948.0", + "@aws-sdk/credential-provider-node": "3.948.0", + "@aws-sdk/credential-provider-process": "3.947.0", + "@aws-sdk/credential-provider-sso": "3.948.0", + "@aws-sdk/credential-provider-web-identity": "3.948.0", + "@aws-sdk/nested-clients": "3.948.0", "@aws-sdk/types": "3.936.0", "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/property-provider": "^4.2.5", @@ -787,14 +787,14 @@ } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.937.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.937.0.tgz", - "integrity": "sha512-G+AxZX14MaVUT93BGeG17yBC+rR5yOOvE0QLpSViSARjPLI7el1zEEpOzC18OKIchFoM81VfC0xavfNMIp/bfw==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.948.0.tgz", + "integrity": "sha512-dY7wISfWgEqSHGps0DkQiDjHhCqR7bc0mMrBHZ810/j12uzhTakAcb9FlF7mFWkX6zEvz2kjxF4r91lBwNqt5w==", "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.12", - "@smithy/smithy-client": "^4.9.8", + "@smithy/middleware-endpoint": "^4.3.14", + "@smithy/smithy-client": "^4.9.10", "buffer": "5.6.0", "events": "3.3.0", "stream-browserify": "3.0.0", @@ -804,7 +804,7 @@ "node": ">=18.0.0" }, "peerDependencies": { - "@aws-sdk/client-s3": "^3.937.0" + "@aws-sdk/client-s3": "^3.948.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { @@ -841,15 +841,15 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.936.0.tgz", - "integrity": "sha512-l3GG6CrSQtMCM6fWY7foV3JQv0WJWT+3G6PSP3Ceb/KEE/5Lz5PrYFXTBf+bVoYL1b0bGjGajcgAXpstBmtHtQ==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.947.0.tgz", + "integrity": "sha512-kXXxS2raNESNO+zR0L4YInVjhcGGNI2Mx0AE1ThRhDkAt2se3a+rGf9equ9YvOqA1m8Jl/GSI8cXYvSxXmS9Ag==", "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.936.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/is-array-buffer": "^4.2.0", "@smithy/node-config-provider": "^4.3.5", @@ -908,13 +908,13 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz", - "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.948.0.tgz", + "integrity": "sha512-Qa8Zj+EAqA0VlAVvxpRnpBpIWJI9KUwaioY1vkeNVwXPlNaz9y9zCKVM9iU9OZ5HXpoUg6TnhATAHXHAE8+QsQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.936.0", - "@aws/lambda-invoke-store": "^0.2.0", + "@aws/lambda-invoke-store": "^0.2.2", "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" @@ -924,19 +924,19 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.936.0.tgz", - "integrity": "sha512-UQs/pVq4cOygsnKON0pOdSKIWkfgY0dzq4h+fR+xHi/Ng3XzxPJhWeAE6tDsKrcyQc1X8UdSbS70XkfGYr5hng==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.947.0.tgz", + "integrity": "sha512-DS2tm5YBKhPW2PthrRBDr6eufChbwXe0NjtTZcYDfUCXf0OR+W6cIqyKguwHMJ+IyYdey30AfVw9/Lb5KB8U8A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.936.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-arn-parser": "3.893.0", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/node-config-provider": "^4.3.5", "@smithy/protocol-http": "^5.3.5", "@smithy/signature-v4": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/util-config-provider": "^4.2.0", "@smithy/util-middleware": "^4.2.5", @@ -963,15 +963,15 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz", - "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.947.0.tgz", + "integrity": "sha512-7rpKV8YNgCP2R4F9RjWZFcD2R+SO/0R4VHIbY9iZJdH2MzzJ8ZG7h8dZ2m8QkQd1fjx4wrFJGGPJUTYXPV3baA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.936.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" @@ -981,44 +981,44 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz", - "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.948.0.tgz", + "integrity": "sha512-zcbJfBsB6h254o3NuoEkf0+UY1GpE9ioiQdENWv7odo69s8iaGBEQ4BDpsIMqcuiiUXw1uKIVNxCB1gUGYz8lw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.936.0", + "@aws-sdk/core": "3.947.0", "@aws-sdk/middleware-host-header": "3.936.0", "@aws-sdk/middleware-logger": "3.936.0", - "@aws-sdk/middleware-recursion-detection": "3.936.0", - "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.948.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/region-config-resolver": "3.936.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-endpoints": "3.936.0", "@aws-sdk/util-user-agent-browser": "3.936.0", - "@aws-sdk/util-user-agent-node": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.947.0", "@smithy/config-resolver": "^4.4.3", - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", - "@smithy/middleware-endpoint": "^4.3.12", - "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-endpoint": "^4.3.14", + "@smithy/middleware-retry": "^4.4.14", "@smithy/middleware-serde": "^4.2.6", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.11", - "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-defaults-mode-browser": "^4.3.13", + "@smithy/util-defaults-mode-node": "^4.2.16", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", @@ -1046,17 +1046,17 @@ } }, "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.937.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.937.0.tgz", - "integrity": "sha512-AvsCt6FnnKTpkmzDA1pFzmXPyxbGBdtllOIY0mL1iNSVZ3d7SoJKZH4NaqlcgUtbYG9zVh6QfLWememj1yEAmw==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.948.0.tgz", + "integrity": "sha512-tlQhMDsDWwUDUzzlo8XYGpmMfjGDmXgbysv1+h1v2xJe0A+ogv/nJ6KFVP94uf1j4ePmCN/gDdxEp2PWZMBPOQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/signature-v4-multi-region": "3.936.0", + "@aws-sdk/signature-v4-multi-region": "3.947.0", "@aws-sdk/types": "3.936.0", "@aws-sdk/util-format-url": "3.936.0", - "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-endpoint": "^4.3.14", "@smithy/protocol-http": "^5.3.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, @@ -1065,12 +1065,12 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.936.0.tgz", - "integrity": "sha512-8qS0GFUqkmwO7JZ0P8tdluBmt1UTfYUah8qJXGzNh9n1Pcb0AIeT117cCSiCUtwk+gDbJvd4hhRIhJCNr5wgjg==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.947.0.tgz", + "integrity": "sha512-UaYmzoxf9q3mabIA2hc4T6x5YSFUG2BpNjAZ207EA1bnQMiK+d6vZvb83t7dIWL/U1de1sGV19c1C81Jf14rrA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.936.0", + "@aws-sdk/middleware-sdk-s3": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/protocol-http": "^5.3.5", "@smithy/signature-v4": "^5.3.5", @@ -1082,13 +1082,13 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.936.0.tgz", - "integrity": "sha512-vvw8+VXk0I+IsoxZw0mX9TMJawUJvEsg3EF7zcCSetwhNPAU8Xmlhv7E/sN/FgSmm7b7DsqKoW6rVtQiCs1PWQ==", + "version": "3.948.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.948.0.tgz", + "integrity": "sha512-V487/kM4Teq5dcr1t5K6eoUKuqlGr9FRWL3MIMukMERJXHZvio6kox60FZ/YtciRHRI75u14YUqm2Dzddcu3+A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.936.0", - "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/core": "3.947.0", + "@aws-sdk/nested-clients": "3.948.0", "@aws-sdk/types": "3.936.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -1180,12 +1180,12 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.936.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz", - "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==", + "version": "3.947.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.947.0.tgz", + "integrity": "sha512-+vhHoDrdbb+zerV4noQk1DHaUMNzWFWPpPYjVTwW2186k5BEJIecAMChYkghRrBVJ3KPWP1+JnZwOd72F3d4rQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.947.0", "@aws-sdk/types": "3.936.0", "@smithy/node-config-provider": "^4.3.5", "@smithy/types": "^4.9.0", @@ -1218,9 +1218,9 @@ } }, "node_modules/@aws/lambda-invoke-store": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.1.tgz", - "integrity": "sha512-sIyFcoPZkTtNu9xFeEoynMef3bPJIAbOfUh+ueYcfhVl6xm2VRtMcMclSxmZCMnHHd4hlYKJeq/aggmBEWynww==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.2.tgz", + "integrity": "sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==", "license": "Apache-2.0", "engines": { "node": ">=18.0.0" @@ -1441,33 +1441,33 @@ } }, "node_modules/@azure/msal-browser": { - "version": "4.26.2", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.26.2.tgz", - "integrity": "sha512-F2U1mEAFsYGC5xzo1KuWc/Sy3CRglU9Ql46cDUx8x/Y3KnAIr1QAq96cIKCk/ZfnVxlvprXWRjNKoEpgLJXLhg==", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.27.0.tgz", + "integrity": "sha512-bZ8Pta6YAbdd0o0PEaL1/geBsPrLEnyY/RDWqvF1PP9RUH8EMLvUMGoZFYS6jSlUan6KZ9IMTLCnwpWWpQRK/w==", "license": "MIT", "dependencies": { - "@azure/msal-common": "15.13.2" + "@azure/msal-common": "15.13.3" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "15.13.2", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.2.tgz", - "integrity": "sha512-cNwUoCk3FF8VQ7Ln/MdcJVIv3sF73/OT86cRH81ECsydh7F4CNfIo2OAx6Cegtg8Yv75x4506wN4q+Emo6erOA==", + "version": "15.13.3", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.3.tgz", + "integrity": "sha512-shSDU7Ioecya+Aob5xliW9IGq1Ui8y4EVSdWGyI1Gbm4Vg61WpP95LuzcY214/wEjSn6w4PZYD4/iVldErHayQ==", "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.3.tgz", - "integrity": "sha512-Ul7A4gwmaHzYWj2Z5xBDly/W8JSC1vnKgJ898zPMZr0oSf1ah0tiL15sytjycU/PMhDZAlkWtEL1+MzNMU6uww==", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.4.tgz", + "integrity": "sha512-lvuAwsDpPDE/jSuVQOBMpLbXuVuLsPNRwWCyK3/6bPlBk0fGWegqoZ0qjZclMWyQ2JNvIY3vHY7hoFmFmFQcOw==", "license": "MIT", "dependencies": { - "@azure/msal-common": "15.13.2", + "@azure/msal-common": "15.13.3", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -1475,15 +1475,6 @@ "node": ">=16" } }, - "node_modules/@azure/msal-node/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@azure/storage-blob": { "version": "12.29.1", "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.29.1.tgz", @@ -2273,9 +2264,9 @@ } }, "node_modules/@google-cloud/storage": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.17.3.tgz", - "integrity": "sha512-gOnCAbFgAYKRozywLsxagdevTF7Gm+2Ncz5u5CQAuOv/2VCa0rdGJWvJFDOftPx1tc+q8TXiC2pEJfFKu+yeMQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.18.0.tgz", + "integrity": "sha512-r3ZwDMiz4nwW6R922Z1pwpePxyRwE5GdevYX63hRmAQUkUQJcBH/79EnQPDv5cOv1mFBgevdNWQfi3tie3dHrQ==", "license": "Apache-2.0", "dependencies": { "@google-cloud/paginator": "^5.0.0", @@ -2328,15 +2319,6 @@ ], "license": "MIT" }, - "node_modules/@google-cloud/storage/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -3061,11 +3043,11 @@ } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -3220,9 +3202,9 @@ } }, "node_modules/@smithy/core": { - "version": "3.18.5", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.5.tgz", - "integrity": "sha512-6gnIz3h+PEPQGDj8MnRSjDvKBah042jEoPgjFGJ4iJLBE78L4lY/n98x14XyPF4u3lN179Ub/ZKFY5za9GeLQw==", + "version": "3.18.7", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.7.tgz", + "integrity": "sha512-axG9MvKhMWOhFbvf5y2DuyTxQueO0dkedY9QC3mAfndLosRI/9LJv8WaL0mw7ubNhsO4IuXX9/9dYGPFvHrqlw==", "license": "Apache-2.0", "dependencies": { "@smithy/middleware-serde": "^4.2.6", @@ -3440,12 +3422,12 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.3.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.12.tgz", - "integrity": "sha512-9pAX/H+VQPzNbouhDhkW723igBMLgrI8OtX+++M7iKJgg/zY/Ig3i1e6seCcx22FWhE6Q/S61BRdi2wXBORT+A==", + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.14.tgz", + "integrity": "sha512-v0q4uTKgBM8dsqGjqsabZQyH85nFaTnFcgpWU1uydKFsdyyMzfvOkNum9G7VK+dOP01vUnoZxIeRiJ6uD0kjIg==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.18.5", + "@smithy/core": "^3.18.7", "@smithy/middleware-serde": "^4.2.6", "@smithy/node-config-provider": "^4.3.5", "@smithy/shared-ini-file-loader": "^4.4.0", @@ -3459,15 +3441,15 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.12.tgz", - "integrity": "sha512-S4kWNKFowYd0lID7/DBqWHOQxmxlsf0jBaos9chQZUWTVOjSW1Ogyh8/ib5tM+agFDJ/TCxuCTvrnlc+9cIBcQ==", + "version": "4.4.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.14.tgz", + "integrity": "sha512-Z2DG8Ej7FyWG1UA+7HceINtSLzswUgs2np3sZX0YBBxCt+CXG4QUxv88ZDS3+2/1ldW7LqtSY1UO/6VQ1pND8Q==", "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.3.5", "@smithy/protocol-http": "^5.3.5", "@smithy/service-error-classification": "^4.2.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", @@ -3634,13 +3616,13 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.9.8", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.8.tgz", - "integrity": "sha512-8xgq3LgKDEFoIrLWBho/oYKyWByw9/corz7vuh1upv7ZBm0ZMjGYBhbn6v643WoIqA9UTcx5A5htEp/YatUwMA==", + "version": "4.9.10", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.10.tgz", + "integrity": "sha512-Jaoz4Jw1QYHc1EFww/E6gVtNjhoDU+gwRKqXP6C3LKYqqH2UQhP8tMP3+t/ePrhaze7fhLE8vS2q6vVxBANFTQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.18.5", - "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/core": "^3.18.7", + "@smithy/middleware-endpoint": "^4.3.14", "@smithy/middleware-stack": "^4.2.5", "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", @@ -3741,13 +3723,13 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.11", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.11.tgz", - "integrity": "sha512-yHv+r6wSQXEXTPVCIQTNmXVWs7ekBTpMVErjqZoWkYN75HIFN5y9+/+sYOejfAuvxWGvgzgxbTHa/oz61YTbKw==", + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.13.tgz", + "integrity": "sha512-hlVLdAGrVfyNei+pKIgqDTxfu/ZI2NSyqj4IDxKd5bIsIqwR/dSlkxlPaYxFiIaDVrBy0he8orsFy+Cz119XvA==", "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, @@ -3756,16 +3738,16 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.14.tgz", - "integrity": "sha512-ljZN3iRvaJUgulfvobIuG97q1iUuCMrvXAlkZ4msY+ZuVHQHDIqn7FKZCEj+bx8omz6kF5yQXms/xhzjIO5XiA==", + "version": "4.2.16", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.16.tgz", + "integrity": "sha512-F1t22IUiJLHrxW9W1CQ6B9PN+skZ9cqSuzB18Eh06HrJPbjsyZ7ZHecAKw80DQtyGTRcVfeukKaCRYebFwclbg==", "license": "Apache-2.0", "dependencies": { "@smithy/config-resolver": "^4.4.3", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/property-provider": "^4.2.5", - "@smithy/smithy-client": "^4.9.8", + "@smithy/smithy-client": "^4.9.10", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, @@ -4078,18 +4060,18 @@ } }, "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "24.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.3.tgz", + "integrity": "sha512-gqkrWUsS8hcm0r44yn7/xZeV1ERva/nLgrLxFRUGb7aoNMIJfZJ3AC261zDQuOAKC7MiXai1WCpYc48jAHoShQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" } }, "node_modules/@types/pg": { - "version": "8.15.6", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.6.tgz", - "integrity": "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.16.0.tgz", + "integrity": "sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4141,14 +4123,14 @@ "license": "MIT" }, "node_modules/@typescript-eslint/project-service": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz", - "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.49.0.tgz", + "integrity": "sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.47.0", - "@typescript-eslint/types": "^8.47.0", + "@typescript-eslint/tsconfig-utils": "^8.49.0", + "@typescript-eslint/types": "^8.49.0", "debug": "^4.3.4" }, "engines": { @@ -4188,14 +4170,14 @@ "license": "MIT" }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", - "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.49.0.tgz", + "integrity": "sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0" + "@typescript-eslint/types": "8.49.0", + "@typescript-eslint/visitor-keys": "8.49.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4206,9 +4188,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz", - "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.49.0.tgz", + "integrity": "sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==", "dev": true, "license": "MIT", "engines": { @@ -4223,9 +4205,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", - "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.49.0.tgz", + "integrity": "sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==", "dev": true, "license": "MIT", "engines": { @@ -4237,21 +4219,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", - "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.49.0.tgz", + "integrity": "sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.47.0", - "@typescript-eslint/tsconfig-utils": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/visitor-keys": "8.47.0", + "@typescript-eslint/project-service": "8.49.0", + "@typescript-eslint/tsconfig-utils": "8.49.0", + "@typescript-eslint/types": "8.49.0", + "@typescript-eslint/visitor-keys": "8.49.0", "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", + "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "engines": { @@ -4317,16 +4298,16 @@ "license": "MIT" }, "node_modules/@typescript-eslint/utils": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", - "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.49.0.tgz", + "integrity": "sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.47.0", - "@typescript-eslint/types": "8.47.0", - "@typescript-eslint/typescript-estree": "8.47.0" + "@typescript-eslint/scope-manager": "8.49.0", + "@typescript-eslint/types": "8.49.0", + "@typescript-eslint/typescript-estree": "8.49.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4341,13 +4322,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.47.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", - "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.49.0.tgz", + "integrity": "sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/types": "8.49.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -4931,9 +4912,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1692.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1692.0.tgz", - "integrity": "sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw==", + "version": "2.1693.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1693.0.tgz", + "integrity": "sha512-cJmb8xEnVLT+R6fBS5sn/EFJiX7tUnDaPtOPZ1vFbOJtd0fnZn/Ky2XGgsvvoeliWeH7mL3TWSX5zXXGSQV6gQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -5108,9 +5089,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.30", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.30.tgz", - "integrity": "sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==", + "version": "2.9.6", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.6.tgz", + "integrity": "sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5209,23 +5190,23 @@ } }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -5233,9 +5214,9 @@ } }, "node_modules/bowser": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", - "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.13.1.tgz", + "integrity": "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==", "license": "MIT" }, "node_modules/brace-expansion": { @@ -5270,9 +5251,9 @@ "license": "ISC" }, "node_modules/browserslist": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", - "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -5290,11 +5271,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.8.25", - "caniuse-lite": "^1.0.30001754", - "electron-to-chromium": "^1.5.249", + "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.1.4" + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -5420,11 +5401,11 @@ } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -5530,9 +5511,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001756", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz", - "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==", + "version": "1.0.30001760", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", + "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==", "dev": true, "funding": [ { @@ -5809,18 +5790,18 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "license": "MIT" }, "node_modules/core-util-is": { @@ -6135,9 +6116,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.259", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.259.tgz", - "integrity": "sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "dev": true, "license": "ISC" }, @@ -6663,39 +6644,39 @@ "license": "Apache-2.0" }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -6880,17 +6861,17 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -7161,6 +7142,19 @@ "node": ">=14" } }, + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/gcp-metadata": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", @@ -7573,19 +7567,23 @@ "license": "BSD-2-Clause" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-proxy-agent": { @@ -8881,12 +8879,12 @@ } }, "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", "license": "MIT", "dependencies": { - "jws": "^3.2.2", + "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", @@ -8902,27 +8900,6 @@ "npm": ">=6" } }, - "node_modules/jsonwebtoken/node_modules/jwa": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", - "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/jsonwebtoken/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -8941,12 +8918,12 @@ } }, "node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "license": "MIT", "dependencies": { - "jwa": "^2.0.0", + "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, @@ -8961,26 +8938,25 @@ } }, "node_modules/ldapts": { - "version": "8.0.9", - "resolved": "https://registry.npmjs.org/ldapts/-/ldapts-8.0.9.tgz", - "integrity": "sha512-6UwfVFUX0Yp5XFY8ST0p9sytpmHGNm32GehI/dq4HuA3pL5kh0AceHBSfowv+cutIJFQnfBZmBo/6cnj87JDqA==", + "version": "8.0.19", + "resolved": "https://registry.npmjs.org/ldapts/-/ldapts-8.0.19.tgz", + "integrity": "sha512-gDHeUr7Wq3O3XgAm8OOSBvnGNaW77Xp8ZFmw3lCaVuCaQpZ5tTA91eWsRBrCi2hdJ8Wat5Wt8GF4rQsqmlOjMg==", "license": "MIT", "dependencies": { "@types/asn1": ">=0.2.4", "asn1": "0.2.6", - "debug": "4.4.1", + "debug": "4.4.3", "strict-event-emitter-types": "2.0.0", - "uuid": "11.1.0", - "whatwg-url": "14.2.0" + "whatwg-url": "15.1.0" }, "engines": { "node": ">=20" } }, "node_modules/ldapts/node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -9000,19 +8976,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, - "node_modules/ldapts/node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -9649,9 +9612,9 @@ } }, "node_modules/mongo-query-to-postgres-jsonb": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/mongo-query-to-postgres-jsonb/-/mongo-query-to-postgres-jsonb-0.2.17.tgz", - "integrity": "sha512-LZXG9l9oikhZmnoexCzwlg2fmVKzV2478gt5SMS6nDJKwz5X7dmg7JXzO1RQ5ffuJ026dZIAwREk44NcXB2dDw==", + "version": "0.2.18", + "resolved": "https://registry.npmjs.org/mongo-query-to-postgres-jsonb/-/mongo-query-to-postgres-jsonb-0.2.18.tgz", + "integrity": "sha512-F1Keyes5HpWrhe+cw+0M8UVxW7+0bmF7NcDHhGUIAm0eFdTHp2LKS25YkUiugOOxsm5f+YZpkjoXCTwOvEo11A==", "license": "MIT" }, "node_modules/mongodb": { @@ -9753,9 +9716,9 @@ } }, "node_modules/nan": { - "version": "2.23.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.1.tgz", - "integrity": "sha512-r7bBUGKzlqk8oPBDYxt6Z0aEdF1G1rwlMcLk8LCOMbOzf0mG+JUfUzG4fIMWwHWP0iyaLWEQZJmtB7nOHEm/qw==", + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.24.0.tgz", + "integrity": "sha512-Vpf9qnVW1RaDkoNKFUvfxqAbtI8ncb8OJlqZ9wwpXzWPEsvsB1nvdUi6oYrHIkQ1Y/tMDnr1h4nczS0VB9Xykg==", "license": "MIT" }, "node_modules/napi-build-utils": { @@ -9920,15 +9883,15 @@ "license": "MIT" }, "node_modules/node-rdkafka": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/node-rdkafka/-/node-rdkafka-3.6.0.tgz", - "integrity": "sha512-FntdqNV+Q6D7Yb54xn2IuQIBGr/cT+MjFo/4JTXKRikSP0rRkEMY7vZoNd0HJY334b/oaY7dv3+OnY7DGsSbiQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/node-rdkafka/-/node-rdkafka-3.6.1.tgz", + "integrity": "sha512-sfpTbrT35429cs0RE8Yb9avGX9BiRRvpV7aweQsghKTjtrVZP3jBrKOPItWXAqHb8doyh3SkuGuUVBLgig1SRg==", "hasInstallScript": true, "license": "MIT", "optional": true, "dependencies": { "bindings": "^1.3.1", - "nan": "^2.22.0" + "nan": "^2.24.0" }, "engines": { "node": ">=16" @@ -10994,9 +10957,9 @@ } }, "node_modules/proc-log": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.0.0.tgz", - "integrity": "sha512-KG/XsTDN901PNfPfAMmj6N/Ywg9tM+bHK8pAz+27fS4N4Pcr+4zoYBOcGSBu6ceXYNPxkLpa4ohtfxV1XcLAfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", "dev": true, "license": "ISC", "engines": { @@ -11113,12 +11076,12 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -11177,15 +11140,15 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" @@ -11540,15 +11503,15 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", @@ -11563,11 +11526,18 @@ "node": ">= 0.8.0" } }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, "engines": { "node": ">= 0.8" } @@ -11590,6 +11560,15 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -11615,6 +11594,82 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/serve-static/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -11977,9 +12032,9 @@ } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -12444,6 +12499,19 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/teeny-request/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -12576,15 +12644,15 @@ } }, "node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/tr46/node_modules/punycode": { @@ -12798,9 +12866,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", + "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", "dev": true, "funding": [ { @@ -12887,13 +12955,9 @@ } }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", "bin": { "uuid": "dist/bin/uuid" @@ -12934,25 +12998,25 @@ } }, "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz", + "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==", "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">=20" } }, "node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", + "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", "license": "MIT", "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/which": { @@ -13228,15 +13292,18 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", - "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yargs": { diff --git a/package.json b/package.json index 382c59621a..652342aacc 100644 --- a/package.json +++ b/package.json @@ -72,24 +72,24 @@ ] }, "dependencies": { - "@aws-sdk/client-s3": "3.937.0", - "@aws-sdk/client-sts": "3.936.0", - "@aws-sdk/credential-providers": "3.936.0", - "@aws-sdk/lib-storage": "3.937.0", - "@aws-sdk/s3-request-presigner": "3.937.0", + "@aws-sdk/client-s3": "3.948.0", + "@aws-sdk/client-sts": "3.948.0", + "@aws-sdk/credential-providers": "3.948.0", + "@aws-sdk/lib-storage": "3.948.0", + "@aws-sdk/s3-request-presigner": "3.948.0", "@azure/identity": "4.13.0", "@azure/monitor-query-logs": "1.0.0", "@azure/storage-blob": "12.29.1", - "@google-cloud/storage": "7.17.3", + "@google-cloud/storage": "7.18.0", "@smithy/node-http-handler": "4.4.5", "ajv": "8.17.1", - "aws-sdk": "2.1692.0", + "aws-sdk": "2.1693.0", "big-integer": "1.6.52", "bindings": "1.5.0", "chance": "1.1.13", "compression": "1.8.1", "crc-32": "1.2.2", - "express": "4.21.2", + "express": "4.22.1", "express-http-proxy": "2.1.2", "getos": "3.2.1", "glob-to-regexp": "0.4.1", @@ -97,18 +97,18 @@ "http-proxy-agent": "7.0.2", "https-proxy-agent": "7.0.6", "ip": "2.0.1", - "jsonwebtoken": "9.0.2", - "ldapts": "8.0.9", + "jsonwebtoken": "9.0.3", + "ldapts": "8.0.19", "linux-blockutils": "0.2.0", "lodash": "4.17.21", "mime-types": "3.0.2", "minimist": "1.2.8", "moment": "2.30.1", "moment-timezone": "0.6.0", - "mongo-query-to-postgres-jsonb": "0.2.17", + "mongo-query-to-postgres-jsonb": "0.2.18", "mongodb": "3.7.4", "morgan": "1.10.1", - "nan": "2.23.1", + "nan": "2.24.0", "node-addon-api": "8.5.0", "performance-now": "2.1.0", "pg": "8.16.3", @@ -120,21 +120,21 @@ "typescript": "5.9.3", "ws": "8.18.3", "xml2js": "0.6.2", - "yaml": "2.8.1", + "yaml": "2.8.2", "yauzl": "3.2.0", "yazl": "3.3.1" }, "optionalDependencies": { - "node-rdkafka": "3.6.0" + "node-rdkafka": "3.6.1" }, "devDependencies": { - "@aws-sdk/client-iam": "3.936.0", + "@aws-sdk/client-iam": "3.948.0", "@stylistic/eslint-plugin-js": "1.8.1", "@types/jest": "30.0.0", "@types/lodash": "4.17.21", "@types/mongodb": "4.0.7", - "@types/node": "24.10.1", - "@types/pg": "8.15.6", + "@types/node": "24.10.3", + "@types/pg": "8.16.0", "eslint": "8.57.1", "eslint-plugin-header": "3.1.1", "eslint-plugin-jest": "28.14.0",