From bf7c9b96653ce2c56a3b09d2af3231180efdd05c Mon Sep 17 00:00:00 2001 From: bailey Date: Thu, 13 Feb 2025 11:10:01 -0700 Subject: [PATCH 01/16] woohoo --- .dockerignore | 6 ++ .evergreen/config.in.yml | 14 +++- .evergreen/config.yml | 45 +++++++++++ .evergreen/docker/Dockerfile.musl | 35 ++++++++ .evergreen/generate_evergreen_tasks.js | 27 +++++++ .evergreen/run-alpine-fle-tests.sh | 6 ++ etc/docker.sh | 47 +++++++++++ package-lock.json | 79 ++++++++++--------- package.json | 3 +- ..._side_encryption.prose.12.deadlock.test.ts | 52 ++++++------ .../client_side_encryption.prose.test.js | 7 ++ .../node-specific/client_encryption.test.ts | 4 +- test/tools/runner/config.ts | 20 +++++ test/tools/runner/hooks/configuration.ts | 14 ++-- test/tools/utils.ts | 5 +- 15 files changed, 287 insertions(+), 77 deletions(-) create mode 100644 .dockerignore create mode 100644 .evergreen/docker/Dockerfile.musl create mode 100644 .evergreen/run-alpine-fle-tests.sh create mode 100644 etc/docker.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000000..9394fbe55fa --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +node_modules +lib +.nyc_output +docs +*dylib +*md diff --git a/.evergreen/config.in.yml b/.evergreen/config.in.yml index f9edbae340a..012edd9ad12 100644 --- a/.evergreen/config.in.yml +++ b/.evergreen/config.in.yml @@ -734,6 +734,19 @@ functions: args: - ${PROJECT_DIRECTORY}/.evergreen/install-mongodb-client-encryption.sh + "build docker alpine image": + - command: subprocess.exec + type: test + params: + working_dir: "src" + env: + INSTALL_DIR: mongodb-client-encryption + PROJECT_DIRECTORY: ${PROJECT_DIRECTORY} + DRIVERS_TOOLS: ${DRIVERS_TOOLS} + binary: bash + args: + - etc/docker.sh + tasks: - name: 'test-atlas-data-lake' tags: ["datalake", "mongohouse"] @@ -994,7 +1007,6 @@ tasks: add_expansions_to_env: true args: - .evergreen/run-search-index-management-tests.sh - task_groups: - name: serverless_task_group setup_group_can_fail_task: true diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 7216fcb9a0d..1428e9ae75d 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -657,6 +657,18 @@ functions: binary: bash args: - ${PROJECT_DIRECTORY}/.evergreen/install-mongodb-client-encryption.sh + build docker alpine image: + - command: subprocess.exec + type: test + params: + working_dir: src + env: + INSTALL_DIR: mongodb-client-encryption + PROJECT_DIRECTORY: ${PROJECT_DIRECTORY} + DRIVERS_TOOLS: ${DRIVERS_TOOLS} + binary: bash + args: + - etc/docker.sh tasks: - name: test-atlas-data-lake tags: @@ -1627,6 +1639,25 @@ tasks: - func: install dependencies - func: bootstrap mongo-orchestration - func: run-compression-tests + - name: test-alpine-fle + tags: + - alpine-fle + commands: + - command: expansions.update + type: setup + params: + updates: + - {key: VERSION, value: latest} + - {key: TOPOLOGY, value: replica_set} + - {key: AUTH, value: auth} + - {key: CLIENT_ENCRYPTION, value: 'true'} + - {key: TEST_CSFLE, value: 'true'} + - {key: MONGODB_BINARIES, value: '${PROJECT_DIRECTORY}/mongodb/bin'} + - func: install dependencies + - func: bootstrap mongo-orchestration + - func: bootstrap kms servers + - func: assume secrets manager rule + - func: build docker alpine image - name: test-tls-support-latest tags: - tls-support @@ -3244,6 +3275,7 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression + - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3304,6 +3336,7 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression + - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3364,6 +3397,7 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression + - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3424,6 +3458,7 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression + - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3481,6 +3516,7 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression + - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3530,6 +3566,7 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression + - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3579,6 +3616,7 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression + - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3628,6 +3666,7 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression + - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3677,6 +3716,7 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression + - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3871,3 +3911,8 @@ buildvariants: run_on: rhel80-large tasks: - .resource-management + - name: alpine FLE test + display_name: alpine FLE test + run_on: ubuntu2204-small + tasks: + - .alpine-fle diff --git a/.evergreen/docker/Dockerfile.musl b/.evergreen/docker/Dockerfile.musl new file mode 100644 index 00000000000..97132bb793f --- /dev/null +++ b/.evergreen/docker/Dockerfile.musl @@ -0,0 +1,35 @@ +ARG ARCH=arm64 +ARG NODE_VERSION=16.20.1 + +FROM ${ARCH}/node:${NODE_VERSION}-alpine AS dependencies + +RUN apk --no-cache add make g++ libc-dev curl bash python3 py3-pip cmake git vim ranger + +# useful debugging output +RUN < variant.expansions && ['latest'].includes(variant.expansions.NODE_LTS_VERSION) diff --git a/.evergreen/run-alpine-fle-tests.sh b/.evergreen/run-alpine-fle-tests.sh new file mode 100644 index 00000000000..cd0416b43ce --- /dev/null +++ b/.evergreen/run-alpine-fle-tests.sh @@ -0,0 +1,6 @@ +#! /usr/bin/env bash + +source secrets-export.sh + +export ALPINE=true +npm run check:csfle diff --git a/etc/docker.sh b/etc/docker.sh new file mode 100644 index 00000000000..7e17ada2a37 --- /dev/null +++ b/etc/docker.sh @@ -0,0 +1,47 @@ +#! /bin/bash + +# script to aid in local testing of linux platforms +# requires a running docker instance + +# s390x, arm64, amd64 for ubuntu +# amd64 or arm64v8 for alpine +LINUX_ARCH=arm64v8 + +# 16.20.1+, default 16.20.1 +NODE_VERSION=20.0.0 + +IMAGE_TAG=alpine-fle-image + +build_alpine() { + docker buildx create --name builder --bootstrap --use + + BASE_TAG=$LINUX_ARCH-alpine-base-node-$NODE_VERSION + docker --debug buildx build --load --progress=plain \ + --platform linux/$LINUX_ARCH \ + --build-arg="ARCH=$LINUX_ARCH" \ + --build-arg="NODE_VERSION=$NODE_VERSION" \ + --build-arg="DRIVERS_TOOLS=$DRIVERS_TOOLS" \ + -f ./.evergreen/docker/Dockerfile.musl -t $IMAGE_TAG \ + . +} + +test_alpine() { + # set up FLE creds on host. don't download cryptd because we don't need it. + RUN_WITH_MONGOCRYPTD=true bash .evergreen/setup-fle.sh + + # launch a mongocryptd on the host. + ./mongodb/bin/mongocryptd --fork --port 3000 --pidfilepath $(pwd)/pid.file --logpath $(pwd)/logpath + MONGOCRYPTD_URI='mongodb://localhost:3000' + + # run FLE tests in container, using mongocryptd and replica set running on host + docker --debug run \ + --platform linux/$LINUX_ARCH \ + -e MONGODB_URI=${MONGODB_URI} -e MONGOCRYPTD_URI=${MONGOCRYPTD_URI} \ + --network host \ + --entrypoint bash \ + $IMAGE_TAG \ + '.evergreen/run-alpine-fle-tests.sh' +} + +build_alpine +test_alpine diff --git a/package-lock.json b/package-lock.json index 84c32bf30ab..b1a4c7cc171 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,6 @@ "express": "^4.21.2", "gcp-metadata": "^5.3.0", "js-yaml": "^4.1.0", - "kerberos": "^2.2.1", "mocha": "^10.8.2", "mocha-sinon": "^2.1.2", "mongodb-client-encryption": "^6.1.1", @@ -3442,7 +3441,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -3486,7 +3485,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -3620,7 +3619,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -3878,7 +3877,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/clean-stack": { @@ -4068,7 +4067,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" @@ -4097,7 +4096,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=4.0.0" @@ -4151,7 +4150,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -4240,7 +4239,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -4769,7 +4768,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, + "devOptional": true, "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" @@ -5124,7 +5123,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/fs-extra": { @@ -5287,7 +5286,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/glob": { @@ -5576,7 +5575,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -5666,14 +5665,14 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/ip-address": { @@ -6171,9 +6170,10 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-2.2.1.tgz", "integrity": "sha512-Vlyv1tjAPb0y2VIJ03dKkUjsneGIBuTkH24uGRx6/DrKpFlVuGPmct3m5aEotljVUlw7PAGWABwR5aNeW7y8Zw==", - "dev": true, "hasInstallScript": true, "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.2" @@ -6186,8 +6186,9 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/keyv": { "version": "4.5.4", @@ -6508,7 +6509,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=10" @@ -6544,7 +6545,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, + "devOptional": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6569,7 +6570,7 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/mocha": { @@ -6772,7 +6773,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/natural-compare": { @@ -6830,7 +6831,7 @@ "version": "3.74.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -7192,7 +7193,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, + "devOptional": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -7502,7 +7503,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", @@ -7623,7 +7624,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -7733,7 +7734,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, + "devOptional": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", @@ -7749,7 +7750,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -7896,7 +7897,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -8096,7 +8097,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -8124,7 +8125,7 @@ "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, + "devOptional": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8335,7 +8336,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -8356,7 +8357,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -8591,7 +8592,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -8755,7 +8756,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "chownr": "^1.1.1", @@ -8768,7 +8769,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "bl": "^4.0.3", @@ -8983,7 +8984,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -9199,7 +9200,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/utils-merge": { @@ -9367,7 +9368,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, + "devOptional": true, "license": "ISC" }, "node_modules/write-file-atomic": { diff --git a/package.json b/package.json index 90c03767498..bd40da4840d 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,6 @@ "express": "^4.21.2", "gcp-metadata": "^5.3.0", "js-yaml": "^4.1.0", - "kerberos": "^2.2.1", "mocha": "^10.8.2", "mocha-sinon": "^2.1.2", "mongodb-client-encryption": "^6.1.1", @@ -176,4 +175,4 @@ "moduleResolution": "node" } } -} +} \ No newline at end of file diff --git a/test/integration/client-side-encryption/client_side_encryption.prose.12.deadlock.test.ts b/test/integration/client-side-encryption/client_side_encryption.prose.12.deadlock.test.ts index ee833fcbd52..0e40e8057f0 100644 --- a/test/integration/client-side-encryption/client_side_encryption.prose.12.deadlock.test.ts +++ b/test/integration/client-side-encryption/client_side_encryption.prose.12.deadlock.test.ts @@ -5,7 +5,8 @@ import * as path from 'path'; // eslint-disable-next-line @typescript-eslint/no-restricted-imports import { ClientEncryption } from '../../../src/client-side-encryption/client_encryption'; -import { type CommandStartedEvent, MongoClient, type MongoClientOptions } from '../../mongodb'; +import { type CommandStartedEvent, type MongoClient, type MongoClientOptions } from '../../mongodb'; +import { type TestConfiguration } from '../../tools/runner/config'; import { getEncryptExtraOptions } from '../../tools/utils'; import { dropCollection } from '../shared'; @@ -30,20 +31,26 @@ const $jsonSchema = BSON.EJSON.parse( ) ); -class CapturingMongoClient extends MongoClient { - commandStartedEvents: Array = []; - clientsCreated = 0; - constructor(url: string, options: MongoClientOptions = {}) { - options = { ...options, monitorCommands: true, __skipPingOnConnect: true }; - if (process.env.MONGODB_API_VERSION) { - options.serverApi = process.env.MONGODB_API_VERSION as MongoClientOptions['serverApi']; - } +function makeClient( + configuration: TestConfiguration, + options: MongoClientOptions = {} +): MongoClient & { + commandStartedEvents: Array; + clientsCreated: number; +} { + options = { ...options, monitorCommands: true, __skipPingOnConnect: true }; + if (process.env.MONGODB_API_VERSION) { + options.serverApi = process.env.MONGODB_API_VERSION as MongoClientOptions['serverApi']; + } - super(url, options); + const client = configuration.newClient(undefined, options) as ReturnType; - this.on('commandStarted', ev => this.commandStartedEvents.push(ev)); - this.on('topologyOpening', () => this.clientsCreated++); - } + client.commandStartedEvents = []; + client.clientsCreated = 0; + client.on('commandStarted', ev => client.commandStartedEvents.push(ev)); + client.on('topologyOpening', () => client.clientsCreated++); + + return client; } function deadlockTest( @@ -55,11 +62,10 @@ function deadlockTest( assertions ) { return async function () { - const url = this.configuration.url(); const clientTest = this.clientTest; const ciphertext = this.ciphertext; - const clientEncryptedOpts = { + const clientEncryptedOpts: MongoClientOptions = { autoEncryption: { keyVaultNamespace: 'keyvault.datakeys', kmsProviders: { local: { key: LOCAL_KEY } }, @@ -70,7 +76,7 @@ function deadlockTest( maxPoolSize }; - const clientEncrypted = new CapturingMongoClient(url, clientEncryptedOpts); + const clientEncrypted = makeClient(this.configuration, clientEncryptedOpts); await clientEncrypted.connect(); @@ -95,19 +101,18 @@ function deadlockTest( }; } -const metadata = { +const metadata: MongoDBMetadataUI = { requires: { clientSideEncryption: true, mongodb: '>=4.2.0', topology: '!load-balanced' } }; + describe('Connection Pool Deadlock Prevention', function () { beforeEach(async function () { - const url: string = this.configuration.url(); - - this.clientTest = new CapturingMongoClient(url); - this.clientKeyVault = new CapturingMongoClient(url, { + this.clientTest = makeClient(this.configuration); + this.clientKeyVault = makeClient(this.configuration, { monitorCommands: true, maxPoolSize: 1 }); @@ -132,8 +137,7 @@ describe('Connection Pool Deadlock Prevention', function () { this.clientEncryption = new ClientEncryption(this.clientTest, { kmsProviders: { local: { key: LOCAL_KEY } }, keyVaultNamespace: 'keyvault.datakeys', - keyVaultClient: this.keyVaultClient, - extraOptions: getEncryptExtraOptions() + keyVaultClient: this.keyVaultClient }); this.ciphertext = await this.clientEncryption.encrypt('string0', { @@ -143,7 +147,7 @@ describe('Connection Pool Deadlock Prevention', function () { }); afterEach(function () { - return Promise.all([this.clientKeyVault.close(), this.clientTest.close()]).then(() => { + return Promise.all([this.clientKeyVault?.close(), this.clientTest?.close()]).then(() => { this.clientKeyVault = undefined; this.clientTest = undefined; this.clientEncryption = undefined; diff --git a/test/integration/client-side-encryption/client_side_encryption.prose.test.js b/test/integration/client-side-encryption/client_side_encryption.prose.test.js index adbc8b4964b..d067bf1804c 100644 --- a/test/integration/client-side-encryption/client_side_encryption.prose.test.js +++ b/test/integration/client-side-encryption/client_side_encryption.prose.test.js @@ -20,6 +20,7 @@ const { ClientSideEncryptionFilter } = require('../../tools/runner/filters/client_encryption_filter'); const { getCSFLEKMSProviders } = require('../../csfle-kms-providers'); +const { AlpineTestConfiguration } = require('../../tools/runner/config'); const getKmsProviders = (localKey, kmipEndpoint, azureEndpoint, gcpEndpoint) => { const result = getCSFLEKMSProviders(); @@ -1113,6 +1114,12 @@ describe('Client Side Encryption Prose Tests', metadata, function () { // configure with `client_encrypted` to use the schema `external/external-schema.json` for // `db.coll` by setting a schema map like `{"db.coll": , + serverOptions?: MongoClientOptions + ): MongoClient { + const options = serverOptions ?? {}; + + if (options.autoEncryption) { + const extraOptions: MongoClientOptions['autoEncryption']['extraOptions'] = { + ...options.autoEncryption.extraOptions, + mongocryptdBypassSpawn: true, + mongocryptdURI: process.env.MONGOCRYPTD_URI + }; + options.autoEncryption.extraOptions = extraOptions; + } + + return super.newClient(urlOrQueryOptions, options); + } +} diff --git a/test/tools/runner/hooks/configuration.ts b/test/tools/runner/hooks/configuration.ts index 959c62d1325..1af5e7a6ee6 100644 --- a/test/tools/runner/hooks/configuration.ts +++ b/test/tools/runner/hooks/configuration.ts @@ -6,7 +6,7 @@ require('source-map-support').install({ }); import { MongoClient } from '../../../mongodb'; -import { AstrolabeTestConfiguration, TestConfiguration } from '../config'; +import { AlpineTestConfiguration, AstrolabeTestConfiguration, TestConfiguration } from '../config'; import { getEnvironmentalOptions } from '../../utils'; import * as mock from '../../mongodb-mock/index'; import { inspect } from 'util'; @@ -153,10 +153,10 @@ const testConfigBeforeHook = async function () { .command({ getParameter: '*' }) .catch(error => ({ noReply: error })); - this.configuration = new TestConfiguration( - loadBalanced ? SINGLE_MONGOS_LB_URI : MONGODB_URI, - context - ); + const Config: typeof TestConfiguration = process.env.ALPINE + ? AlpineTestConfiguration + : TestConfiguration; + this.configuration = new Config(loadBalanced ? SINGLE_MONGOS_LB_URI : MONGODB_URI, context); await client.close(); @@ -169,6 +169,8 @@ const testConfigBeforeHook = async function () { version: this.configuration.buildInfo.version, node: process.version, os: process.platform, + alpineLinux: Boolean(process.env.ALPINE), + cryptdUri: process.env.MONGOCRYPTD_URI, pid: process.pid, serverless: process.env.SERVERLESS === '1', auth: process.env.AUTH === 'auth', @@ -186,7 +188,7 @@ const testConfigBeforeHook = async function () { adl: this.configuration.buildInfo.dataLake ? this.configuration.buildInfo.dataLake.version : false, - kerberos: process.env.KRB5_PRINCIPAL != null, + kerberos: process.env.PRINCIPAL != null, ldap: MONGODB_URI.includes('authMechanism=PLAIN'), socks5: MONGODB_URI.includes('proxyHost='), compressor: process.env.COMPRESSOR, diff --git a/test/tools/utils.ts b/test/tools/utils.ts index 80906d0a343..b0ac3703f1e 100644 --- a/test/tools/utils.ts +++ b/test/tools/utils.ts @@ -15,6 +15,7 @@ import { type Document, type HostAddress, MongoClient, + type MongoClientOptions, now, OP_MSG, Topology, @@ -108,9 +109,7 @@ export class EventCollector { } } -export function getEncryptExtraOptions(): { - cryptSharedLibPath?: string; -} { +export function getEncryptExtraOptions(): MongoClientOptions['autoEncryption']['extraOptions'] { if ( typeof process.env.CRYPT_SHARED_LIB_PATH === 'string' && process.env.CRYPT_SHARED_LIB_PATH.length > 0 From 07bf5051c60618065bbf54e4d3365c93ff396241 Mon Sep 17 00:00:00 2001 From: bailey Date: Thu, 13 Feb 2025 11:13:59 -0700 Subject: [PATCH 02/16] cleanup cleanup --- .evergreen/config.in.yml | 28 +++++++++ .evergreen/config.yml | 83 ++++++++++++-------------- .evergreen/generate_evergreen_tasks.js | 27 --------- 3 files changed, 65 insertions(+), 73 deletions(-) diff --git a/.evergreen/config.in.yml b/.evergreen/config.in.yml index 012edd9ad12..04ab31a19d8 100644 --- a/.evergreen/config.in.yml +++ b/.evergreen/config.in.yml @@ -1007,6 +1007,27 @@ tasks: add_expansions_to_env: true args: - .evergreen/run-search-index-management-tests.sh + + - name: test-alpine-fle + tags: + - alpine-fle + commands: + - command: expansions.update + type: setup + params: + updates: + - {key: VERSION, value: latest} + - {key: TOPOLOGY, value: replica_set} + - {key: AUTH, value: auth} + - {key: CLIENT_ENCRYPTION, value: 'true'} + - {key: TEST_CSFLE, value: 'true'} + - {key: MONGODB_BINARIES, value: '${PROJECT_DIRECTORY}/mongodb/bin'} + - func: install dependencies + - func: bootstrap mongo-orchestration + - func: bootstrap kms servers + - func: assume secrets manager rule + - func: build docker alpine image + task_groups: - name: serverless_task_group setup_group_can_fail_task: true @@ -1284,3 +1305,10 @@ post: ignore: - "*.md" + +buildvariants: + - name: Alpine FLE Tests + display_name: alpine FLE test + run_on: ubuntu2204-small + tasks: + - .alpine-fle diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 1428e9ae75d..0120c919aa2 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -925,6 +925,25 @@ tasks: add_expansions_to_env: true args: - .evergreen/run-search-index-management-tests.sh + - name: test-alpine-fle + tags: + - alpine-fle + commands: + - command: expansions.update + type: setup + params: + updates: + - {key: VERSION, value: latest} + - {key: TOPOLOGY, value: replica_set} + - {key: AUTH, value: auth} + - {key: CLIENT_ENCRYPTION, value: 'true'} + - {key: TEST_CSFLE, value: 'true'} + - {key: MONGODB_BINARIES, value: '${PROJECT_DIRECTORY}/mongodb/bin'} + - func: install dependencies + - func: bootstrap mongo-orchestration + - func: bootstrap kms servers + - func: assume secrets manager rule + - func: build docker alpine image - name: test-latest-server tags: - latest @@ -1639,25 +1658,6 @@ tasks: - func: install dependencies - func: bootstrap mongo-orchestration - func: run-compression-tests - - name: test-alpine-fle - tags: - - alpine-fle - commands: - - command: expansions.update - type: setup - params: - updates: - - {key: VERSION, value: latest} - - {key: TOPOLOGY, value: replica_set} - - {key: AUTH, value: auth} - - {key: CLIENT_ENCRYPTION, value: 'true'} - - {key: TEST_CSFLE, value: 'true'} - - {key: MONGODB_BINARIES, value: '${PROJECT_DIRECTORY}/mongodb/bin'} - - func: install dependencies - - func: bootstrap mongo-orchestration - - func: bootstrap kms servers - - func: assume secrets manager rule - - func: build docker alpine image - name: test-tls-support-latest tags: - tls-support @@ -3208,20 +3208,12 @@ task_groups: setup_group_timeout_secs: 1800 tasks: - test-search-index-helpers -pre: - - func: fetch source - - func: windows fix - - func: fix absolute paths - - func: make files executable -post: - - func: reset aws instance profile - - func: upload test results - - func: stop mongo-orchestration - - func: upload coverage report - - func: cleanup -ignore: - - '*.md' buildvariants: + - name: alpine FLE test + display_name: alpine FLE test + run_on: ubuntu2204-small + tasks: + - .alpine-fle - name: rhel80-large-gallium display_name: rhel8 Node16 run_on: rhel80-large @@ -3275,7 +3267,6 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression - - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3336,7 +3327,6 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression - - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3397,7 +3387,6 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression - - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3458,7 +3447,6 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression - - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3516,7 +3504,6 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression - - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3566,7 +3553,6 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression - - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3616,7 +3602,6 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression - - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3666,7 +3651,6 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression - - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3716,7 +3700,6 @@ buildvariants: - test-snappy-compression - test-zstd-1.x-compression - test-zstd-2.x-compression - - test-alpine-fle - test-tls-support-latest - test-tls-support-8.0 - test-tls-support-7.0 @@ -3911,8 +3894,16 @@ buildvariants: run_on: rhel80-large tasks: - .resource-management - - name: alpine FLE test - display_name: alpine FLE test - run_on: ubuntu2204-small - tasks: - - .alpine-fle +pre: + - func: fetch source + - func: windows fix + - func: fix absolute paths + - func: make files executable +post: + - func: reset aws instance profile + - func: upload test results + - func: stop mongo-orchestration + - func: upload coverage report + - func: cleanup +ignore: + - '*.md' diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 39bd2ee6176..2af924466f3 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -276,26 +276,6 @@ TASKS.push({ ] }); -TASKS.push({ - name: `test-alpine-fle`, - tags: ['alpine-fle'], - commands: [ - updateExpansions({ - VERSION: 'latest', - TOPOLOGY: 'replica_set', - AUTH: 'auth', - CLIENT_ENCRYPTION: 'true', - TEST_CSFLE: 'true', - MONGODB_BINARIES: '${PROJECT_DIRECTORY}/mongodb/bin' - }), - { func: 'install dependencies' }, - { func: 'bootstrap mongo-orchestration' }, - { func: 'bootstrap kms servers' }, - { func: 'assume secrets manager rule' }, - { func: 'build docker alpine image' } - ] -}); - const AWS_LAMBDA_HANDLER_TASKS = []; // Add task for testing lambda example without aws auth. AWS_LAMBDA_HANDLER_TASKS.push({ @@ -889,13 +869,6 @@ BUILD_VARIANTS.push({ tasks: ['.resource-management'] }); -BUILD_VARIANTS.push({ - name: 'alpine FLE test', - display_name: 'alpine FLE test', - run_on: 'ubuntu2204-small', - tasks: ['.alpine-fle'] -}); - // TODO(NODE-4897): Debug socks5 tests on node latest for (const variant of BUILD_VARIANTS.filter( variant => variant.expansions && ['latest'].includes(variant.expansions.NODE_LTS_VERSION) From 5459268ad585d86f962ea5ae4e771be0a9f955be Mon Sep 17 00:00:00 2001 From: bailey Date: Thu, 13 Feb 2025 11:15:32 -0700 Subject: [PATCH 03/16] don't touch serverless --- .evergreen/generate_evergreen_tasks.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 2af924466f3..463e7d012b2 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -787,16 +787,16 @@ BUILD_VARIANTS.push({ }); // special case for serverless testing -BUILD_VARIANTS.push({ - name: 'rhel8-test-serverless', - display_name: 'Serverless Test', - run_on: DEFAULT_OS, - expansions: { - NODE_LTS_VERSION: LOWEST_LTS, - NPM_VERSION: 9 - }, - tasks: ['serverless_task_group'] -}); +// BUILD_VARIANTS.push({ +// name: 'rhel8-test-serverless', +// display_name: 'Serverless Test', +// run_on: DEFAULT_OS, +// expansions: { +// NODE_LTS_VERSION: LOWEST_LTS, +// NPM_VERSION: 9 +// }, +// tasks: ['serverless_task_group'] +// }); BUILD_VARIANTS.push({ name: 'rhel8-test-gcp-kms', From 57efd6256e83d31d4a9680609ac6b89f8b6dcdd2 Mon Sep 17 00:00:00 2001 From: bailey Date: Thu, 13 Feb 2025 11:24:58 -0700 Subject: [PATCH 04/16] wahhooo --- etc/docker.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/etc/docker.sh b/etc/docker.sh index 7e17ada2a37..676e3a1dddc 100644 --- a/etc/docker.sh +++ b/etc/docker.sh @@ -15,6 +15,10 @@ IMAGE_TAG=alpine-fle-image build_alpine() { docker buildx create --name builder --bootstrap --use + # set up FLE creds on host. don't download cryptd because we don't need it. + # TODO: once we map cwd onto the host, we don't need to build the image with the credential file present. + RUN_WITH_MONGOCRYPTD=true bash .evergreen/setup-fle.sh + BASE_TAG=$LINUX_ARCH-alpine-base-node-$NODE_VERSION docker --debug buildx build --load --progress=plain \ --platform linux/$LINUX_ARCH \ @@ -26,9 +30,6 @@ build_alpine() { } test_alpine() { - # set up FLE creds on host. don't download cryptd because we don't need it. - RUN_WITH_MONGOCRYPTD=true bash .evergreen/setup-fle.sh - # launch a mongocryptd on the host. ./mongodb/bin/mongocryptd --fork --port 3000 --pidfilepath $(pwd)/pid.file --logpath $(pwd)/logpath MONGOCRYPTD_URI='mongodb://localhost:3000' From acb3c4625da8ec95824619dd23fd78d5ef3ee65a Mon Sep 17 00:00:00 2001 From: bailey Date: Thu, 13 Feb 2025 11:38:07 -0700 Subject: [PATCH 05/16] committing for patch --- .evergreen/config.in.yml | 6 +-- .evergreen/config.yml | 42 ++++++++------------ etc/docker.sh => .evergreen/docker/alpine.sh | 5 +-- 3 files changed, 22 insertions(+), 31 deletions(-) rename etc/docker.sh => .evergreen/docker/alpine.sh (94%) diff --git a/.evergreen/config.in.yml b/.evergreen/config.in.yml index 04ab31a19d8..9810bd4df68 100644 --- a/.evergreen/config.in.yml +++ b/.evergreen/config.in.yml @@ -734,7 +734,7 @@ functions: args: - ${PROJECT_DIRECTORY}/.evergreen/install-mongodb-client-encryption.sh - "build docker alpine image": + "build and test alpine FLE": - command: subprocess.exec type: test params: @@ -745,7 +745,7 @@ functions: DRIVERS_TOOLS: ${DRIVERS_TOOLS} binary: bash args: - - etc/docker.sh + - .evergreen/docker/apline.sh tasks: - name: 'test-atlas-data-lake' @@ -1026,7 +1026,7 @@ tasks: - func: bootstrap mongo-orchestration - func: bootstrap kms servers - func: assume secrets manager rule - - func: build docker alpine image + - func: build and test alpine FLE task_groups: - name: serverless_task_group diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 0120c919aa2..b491808739e 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -657,7 +657,7 @@ functions: binary: bash args: - ${PROJECT_DIRECTORY}/.evergreen/install-mongodb-client-encryption.sh - build docker alpine image: + build and test alpine FLE: - command: subprocess.exec type: test params: @@ -668,7 +668,7 @@ functions: DRIVERS_TOOLS: ${DRIVERS_TOOLS} binary: bash args: - - etc/docker.sh + - .evergreen/docker/apline.sh tasks: - name: test-atlas-data-lake tags: @@ -943,7 +943,7 @@ tasks: - func: bootstrap mongo-orchestration - func: bootstrap kms servers - func: assume secrets manager rule - - func: build docker alpine image + - func: build and test alpine FLE - name: test-latest-server tags: - latest @@ -3208,8 +3208,21 @@ task_groups: setup_group_timeout_secs: 1800 tasks: - test-search-index-helpers +pre: + - func: fetch source + - func: windows fix + - func: fix absolute paths + - func: make files executable +post: + - func: reset aws instance profile + - func: upload test results + - func: stop mongo-orchestration + - func: upload coverage report + - func: cleanup +ignore: + - '*.md' buildvariants: - - name: alpine FLE test + - name: Alpine FLE Tests display_name: alpine FLE test run_on: ubuntu2204-small tasks: @@ -3807,14 +3820,6 @@ buildvariants: - run-custom-csfle-tests-rapid - run-custom-csfle-tests-latest - test-latest-driver-mongodb-client-encryption-6.0.0 - - name: rhel8-test-serverless - display_name: Serverless Test - run_on: rhel80-large - expansions: - NODE_LTS_VERSION: 16 - NPM_VERSION: 9 - tasks: - - serverless_task_group - name: rhel8-test-gcp-kms display_name: GCP KMS Test run_on: debian11-small @@ -3894,16 +3899,3 @@ buildvariants: run_on: rhel80-large tasks: - .resource-management -pre: - - func: fetch source - - func: windows fix - - func: fix absolute paths - - func: make files executable -post: - - func: reset aws instance profile - - func: upload test results - - func: stop mongo-orchestration - - func: upload coverage report - - func: cleanup -ignore: - - '*.md' diff --git a/etc/docker.sh b/.evergreen/docker/alpine.sh similarity index 94% rename from etc/docker.sh rename to .evergreen/docker/alpine.sh index 676e3a1dddc..e83bfccff7e 100644 --- a/etc/docker.sh +++ b/.evergreen/docker/alpine.sh @@ -3,9 +3,8 @@ # script to aid in local testing of linux platforms # requires a running docker instance -# s390x, arm64, amd64 for ubuntu -# amd64 or arm64v8 for alpine -LINUX_ARCH=arm64v8 +# ubuntu2204 hosts in ci use amd64 +LINUX_ARCH=amd64 # 16.20.1+, default 16.20.1 NODE_VERSION=20.0.0 From bb2bd38c68194eb0eb41a3ce78cf24e2444cb864 Mon Sep 17 00:00:00 2001 From: bailey Date: Thu, 13 Feb 2025 13:51:33 -0700 Subject: [PATCH 06/16] qwas;ldkjf;? --- .evergreen/config.in.yml | 24 ++------------- .evergreen/config.yml | 42 ++++++++++++++------------ .evergreen/docker/alpine.sh | 11 ++++--- .evergreen/generate_evergreen_tasks.js | 22 ++++++++++++++ 4 files changed, 53 insertions(+), 46 deletions(-) diff --git a/.evergreen/config.in.yml b/.evergreen/config.in.yml index 9810bd4df68..d0824606e12 100644 --- a/.evergreen/config.in.yml +++ b/.evergreen/config.in.yml @@ -743,9 +743,11 @@ functions: INSTALL_DIR: mongodb-client-encryption PROJECT_DIRECTORY: ${PROJECT_DIRECTORY} DRIVERS_TOOLS: ${DRIVERS_TOOLS} + NODE_VERSION: ${NODE_VERSION} + MONGODB_URI: ${MONGODB_URI} binary: bash args: - - .evergreen/docker/apline.sh + - .evergreen/docker/alpine.sh tasks: - name: 'test-atlas-data-lake' @@ -1008,26 +1010,6 @@ tasks: args: - .evergreen/run-search-index-management-tests.sh - - name: test-alpine-fle - tags: - - alpine-fle - commands: - - command: expansions.update - type: setup - params: - updates: - - {key: VERSION, value: latest} - - {key: TOPOLOGY, value: replica_set} - - {key: AUTH, value: auth} - - {key: CLIENT_ENCRYPTION, value: 'true'} - - {key: TEST_CSFLE, value: 'true'} - - {key: MONGODB_BINARIES, value: '${PROJECT_DIRECTORY}/mongodb/bin'} - - func: install dependencies - - func: bootstrap mongo-orchestration - - func: bootstrap kms servers - - func: assume secrets manager rule - - func: build and test alpine FLE - task_groups: - name: serverless_task_group setup_group_can_fail_task: true diff --git a/.evergreen/config.yml b/.evergreen/config.yml index b491808739e..0bcdfeb3ea8 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -666,9 +666,11 @@ functions: INSTALL_DIR: mongodb-client-encryption PROJECT_DIRECTORY: ${PROJECT_DIRECTORY} DRIVERS_TOOLS: ${DRIVERS_TOOLS} + NODE_VERSION: ${NODE_VERSION} + MONGODB_URI: ${MONGODB_URI} binary: bash args: - - .evergreen/docker/apline.sh + - .evergreen/docker/alpine.sh tasks: - name: test-atlas-data-lake tags: @@ -925,25 +927,6 @@ tasks: add_expansions_to_env: true args: - .evergreen/run-search-index-management-tests.sh - - name: test-alpine-fle - tags: - - alpine-fle - commands: - - command: expansions.update - type: setup - params: - updates: - - {key: VERSION, value: latest} - - {key: TOPOLOGY, value: replica_set} - - {key: AUTH, value: auth} - - {key: CLIENT_ENCRYPTION, value: 'true'} - - {key: TEST_CSFLE, value: 'true'} - - {key: MONGODB_BINARIES, value: '${PROJECT_DIRECTORY}/mongodb/bin'} - - func: install dependencies - - func: bootstrap mongo-orchestration - - func: bootstrap kms servers - - func: assume secrets manager rule - - func: build and test alpine FLE - name: test-latest-server tags: - latest @@ -2331,6 +2314,25 @@ tasks: vars: PACKAGE: mongodb-client-encryption@6.0.0 - func: run tests + - name: test-alpine-fle + tags: + - alpine-fle + commands: + - command: expansions.update + type: setup + params: + updates: + - {key: NODE_VERSION, value: 16.20.1} + - {key: VERSION, value: latest} + - {key: TOPOLOGY, value: replica_set} + - {key: CLIENT_ENCRYPTION, value: 'true'} + - {key: TEST_CSFLE, value: 'true'} + - {key: MONGODB_BINARIES, value: '${PROJECT_DIRECTORY}/mongodb/bin'} + - func: install dependencies + - func: bootstrap mongo-orchestration + - func: bootstrap kms servers + - func: assume secrets manager rule + - func: build and test alpine FLE - name: test-latest-server-noauth tags: - latest diff --git a/.evergreen/docker/alpine.sh b/.evergreen/docker/alpine.sh index e83bfccff7e..3b76488229f 100644 --- a/.evergreen/docker/alpine.sh +++ b/.evergreen/docker/alpine.sh @@ -3,13 +3,14 @@ # script to aid in local testing of linux platforms # requires a running docker instance -# ubuntu2204 hosts in ci use amd64 -LINUX_ARCH=amd64 +if [ -z ${NODE_VERSION+omitted} ]; then echo "NODE_VERSION is unset" && exit 1; fi +if [ -z ${DRIVERS_TOOLS+omitted} ]; then echo "DRIVERS_TOOLS is unset" && exit 1; fi +if [ -z ${MONGODB_URI+omitted} ]; then echo "MONGODB_URI is unset" && exit 1; fi -# 16.20.1+, default 16.20.1 -NODE_VERSION=20.0.0 +# ubuntu2204 hosts in ci use amd64 +LINUX_ARCH=${LINUX_ARCH:-amd64} -IMAGE_TAG=alpine-fle-image +IMAGE_TAG=${IMAGE_TAG:-alpine-fle-image} build_alpine() { docker buildx create --name builder --bootstrap --use diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 463e7d012b2..61aed55d719 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -729,6 +729,28 @@ const coverageTask = { SINGLETON_TASKS.push(coverageTask); SINGLETON_TASKS.push(...customDependencyTests); +SINGLETON_TASKS.push( + { + name: `test-alpine-fle`, + tags: ['alpine-fle'], + commands: [ + updateExpansions({ + NODE_VERSION: '16.20.1', + VERSION: 'latest', + TOPOLOGY: 'replica_set', + CLIENT_ENCRYPTION: true, + TEST_CSFLE: true, + MONGODB_BINARIES: '${PROJECT_DIRECTORY}/mongodb/bin', + }), + { func: 'install dependencies' }, + { func: 'bootstrap mongo-orchestration' }, + { func: 'bootstrap kms servers' }, + { func: 'assume secrets manager rule' }, + { func: 'build and test alpine FLE' } + ] + } +) + function addPerformanceTasks() { const makePerfTask = (name, MONGODB_CLIENT_OPTIONS) => ({ name, From 5d4c8fe5efe329eac1c47e67dbd04761cc815930 Mon Sep 17 00:00:00 2001 From: bailey Date: Thu, 13 Feb 2025 15:04:31 -0700 Subject: [PATCH 07/16] remove AWS provider from tests --- .../node-specific/client_encryption.test.ts | 49 +++++++------------ 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/test/integration/node-specific/client_encryption.test.ts b/test/integration/node-specific/client_encryption.test.ts index 420f4bde118..2286da12b04 100644 --- a/test/integration/node-specific/client_encryption.test.ts +++ b/test/integration/node-specific/client_encryption.test.ts @@ -463,16 +463,10 @@ describe('ClientEncryption integration tests', function () { let client: MongoClient; let clientEncryption: ClientEncryption; let collection: Collection; - // Data Key Stuff - const AWS_ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID; - const AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY; - const AWS_REGION = 'us-east-1'; - const AWS_CMK_ID = 'dummy-cmk-id'; const kmsProviders = { - aws: { accessKeyId: AWS_ACCESS_KEY_ID, secretAccessKey: AWS_SECRET_ACCESS_KEY } + local: { key: Buffer.alloc(96) } }; - const dataKeyOptions = { masterKey: { key: AWS_CMK_ID, region: AWS_REGION } }; beforeEach(function () { client = this.configuration.newClient(); @@ -487,41 +481,32 @@ describe('ClientEncryption integration tests', function () { await client?.close(); }); - function makeOptions(keyAltNames) { - expect(dataKeyOptions.masterKey).to.be.an('object'); - expect(dataKeyOptions.masterKey.key).to.be.a('string'); - expect(dataKeyOptions.masterKey.region).to.be.a('string'); - - return { - masterKey: { - key: dataKeyOptions.masterKey.key, - region: dataKeyOptions.masterKey.region - }, - keyAltNames - }; - } - describe('errors', function () { for (const val of [42, 'hello', { keyAltNames: 'foobar' }, /foobar/]) { it(`should fail if typeof keyAltNames = ${typeof val}`, metadata, async function () { - const options = makeOptions(val); - const error = await clientEncryption.createDataKey('aws', options).catch(error => error); + const error = await clientEncryption.createDataKey('local', { + // @ts-expect-error Invalid type tests + keyAltNames: val + }).catch(error => error); expect(error).to.be.instanceOf(MongoCryptInvalidArgumentError); }); } for (const val of [undefined, null, 42, { keyAltNames: 'foobar' }, ['foobar'], /foobar/]) { it(`should fail if typeof keyAltNames[x] = ${typeof val}`, metadata, async function () { - const options = makeOptions([val]); - const error = await clientEncryption.createDataKey('aws', options).catch(error => error); + const error = await clientEncryption.createDataKey('local', { + // @ts-expect-error Invalid type tests + keyAltNames: [val] + }).catch(error => error); expect(error).to.be.instanceOf(MongoCryptInvalidArgumentError); }); } }); it('should create a key with keyAltNames', metadata, async function () { - const options = makeOptions(['foobar']); - const dataKey = await clientEncryption.createDataKey('aws', options); + const dataKey = await clientEncryption.createDataKey('local', { + keyAltNames: ['foobar'] + }); const document = await collection.findOne({ keyAltNames: 'foobar' }); expect(document).to.be.an('object'); expect(document).to.have.property('keyAltNames').that.includes.members(['foobar']); @@ -530,8 +515,10 @@ describe('ClientEncryption integration tests', function () { it('should create a key with multiple keyAltNames', metadata, async function () { const dataKey = await clientEncryption.createDataKey( - 'aws', - makeOptions(['foobar', 'fizzbuzz']) + 'local', + { + keyAltNames: ['foobar', 'fizzbuzz'] + } ); const docs = await Promise.all([ collection.findOne({ keyAltNames: 'foobar' }), @@ -557,7 +544,9 @@ describe('ClientEncryption integration tests', function () { const valueToEncrypt = 'foobar'; - const keyId = await clientEncryption.createDataKey('aws', makeOptions([keyAltName])); + const keyId = await clientEncryption.createDataKey('local', { + keyAltNames: [keyAltName] + }); const encryptedValue = await clientEncryption.encrypt(valueToEncrypt, { keyId, algorithm }); const encryptedValue2 = await clientEncryption.encrypt(valueToEncrypt, { keyAltName, From 71e64f9e9b77b6b47f8350e724116015aa5693a9 Mon Sep 17 00:00:00 2001 From: bailey Date: Thu, 13 Feb 2025 15:56:07 -0700 Subject: [PATCH 08/16] lint --- .../node-specific/client_encryption.test.ts | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/test/integration/node-specific/client_encryption.test.ts b/test/integration/node-specific/client_encryption.test.ts index 2286da12b04..d21de71a56f 100644 --- a/test/integration/node-specific/client_encryption.test.ts +++ b/test/integration/node-specific/client_encryption.test.ts @@ -484,20 +484,24 @@ describe('ClientEncryption integration tests', function () { describe('errors', function () { for (const val of [42, 'hello', { keyAltNames: 'foobar' }, /foobar/]) { it(`should fail if typeof keyAltNames = ${typeof val}`, metadata, async function () { - const error = await clientEncryption.createDataKey('local', { - // @ts-expect-error Invalid type tests - keyAltNames: val - }).catch(error => error); + const error = await clientEncryption + .createDataKey('local', { + // @ts-expect-error Invalid type tests + keyAltNames: val + }) + .catch(error => error); expect(error).to.be.instanceOf(MongoCryptInvalidArgumentError); }); } for (const val of [undefined, null, 42, { keyAltNames: 'foobar' }, ['foobar'], /foobar/]) { it(`should fail if typeof keyAltNames[x] = ${typeof val}`, metadata, async function () { - const error = await clientEncryption.createDataKey('local', { - // @ts-expect-error Invalid type tests - keyAltNames: [val] - }).catch(error => error); + const error = await clientEncryption + .createDataKey('local', { + // @ts-expect-error Invalid type tests + keyAltNames: [val] + }) + .catch(error => error); expect(error).to.be.instanceOf(MongoCryptInvalidArgumentError); }); } @@ -514,12 +518,9 @@ describe('ClientEncryption integration tests', function () { }); it('should create a key with multiple keyAltNames', metadata, async function () { - const dataKey = await clientEncryption.createDataKey( - 'local', - { - keyAltNames: ['foobar', 'fizzbuzz'] - } - ); + const dataKey = await clientEncryption.createDataKey('local', { + keyAltNames: ['foobar', 'fizzbuzz'] + }); const docs = await Promise.all([ collection.findOne({ keyAltNames: 'foobar' }), collection.findOne({ keyAltNames: 'fizzbuzz' }) From 6655185497e6760fc62cb6fe75773f702cc6f6f4 Mon Sep 17 00:00:00 2001 From: bailey Date: Fri, 14 Feb 2025 10:53:39 -0700 Subject: [PATCH 09/16] woohoo? --- .evergreen/docker/Dockerfile.musl | 14 -------------- .evergreen/docker/alpine.sh | 12 ++++++------ .evergreen/run-alpine-fle-tests.sh | 1 + package-lock.json | 10 +++++----- package.json | 2 +- 5 files changed, 13 insertions(+), 26 deletions(-) diff --git a/.evergreen/docker/Dockerfile.musl b/.evergreen/docker/Dockerfile.musl index 97132bb793f..18daf0413d4 100644 --- a/.evergreen/docker/Dockerfile.musl +++ b/.evergreen/docker/Dockerfile.musl @@ -19,17 +19,3 @@ EOF ARG DRIVERS_TOOLS=drivers-evergreen-tools WORKDIR ${DRIVERS_TOOLS} RUN git clone https://github.com/mongodb-labs/drivers-evergreen-tools.git . - -# TODO: remove this cloning once we have an official release of FLE -WORKDIR /mongodb-client-encryption -RUN <=16.20.1" diff --git a/package.json b/package.json index bd40da4840d..4498ba86402 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "js-yaml": "^4.1.0", "mocha": "^10.8.2", "mocha-sinon": "^2.1.2", - "mongodb-client-encryption": "^6.1.1", + "mongodb-client-encryption": "^6.2.0", "mongodb-legacy": "^6.1.3", "nyc": "^15.1.0", "prettier": "^3.4.2", From 0199c9cc71d8b0994143b28c247d49b0f1f68023 Mon Sep 17 00:00:00 2001 From: bailey Date: Fri, 14 Feb 2025 11:01:34 -0700 Subject: [PATCH 10/16] prettier display name --- .evergreen/config.in.yml | 2 +- .evergreen/run-alpine-fle-tests.sh | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.evergreen/config.in.yml b/.evergreen/config.in.yml index d0824606e12..ab21ef1f009 100644 --- a/.evergreen/config.in.yml +++ b/.evergreen/config.in.yml @@ -1290,7 +1290,7 @@ ignore: buildvariants: - name: Alpine FLE Tests - display_name: alpine FLE test + display_name: Alpine FLE Test run_on: ubuntu2204-small tasks: - .alpine-fle diff --git a/.evergreen/run-alpine-fle-tests.sh b/.evergreen/run-alpine-fle-tests.sh index c6b0d0fd7d8..6d07b378885 100644 --- a/.evergreen/run-alpine-fle-tests.sh +++ b/.evergreen/run-alpine-fle-tests.sh @@ -1,5 +1,9 @@ #! /usr/bin/env bash +set -o errexit + +export npm_cache_dir=$(pwd) + npm i source secrets-export.sh From ebd19edea0c20b430c563c285791d0601b4c418f Mon Sep 17 00:00:00 2001 From: bailey Date: Fri, 14 Feb 2025 11:06:25 -0700 Subject: [PATCH 11/16] asdf --- .evergreen/config.yml | 2 +- .evergreen/run-alpine-fle-tests.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 0bcdfeb3ea8..69c6b2dad74 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -3225,7 +3225,7 @@ ignore: - '*.md' buildvariants: - name: Alpine FLE Tests - display_name: alpine FLE test + display_name: Alpine FLE Test run_on: ubuntu2204-small tasks: - .alpine-fle diff --git a/.evergreen/run-alpine-fle-tests.sh b/.evergreen/run-alpine-fle-tests.sh index 6d07b378885..54dd57b6448 100644 --- a/.evergreen/run-alpine-fle-tests.sh +++ b/.evergreen/run-alpine-fle-tests.sh @@ -2,7 +2,7 @@ set -o errexit -export npm_cache_dir=$(pwd) +export npm_config_cache=$(pwd)/.cache npm i source secrets-export.sh From 8d2b2f0955c9e8ae02e7c293409467b6e2719fd3 Mon Sep 17 00:00:00 2001 From: bailey Date: Fri, 14 Feb 2025 11:22:45 -0700 Subject: [PATCH 12/16] asdfasdfasdf --- .evergreen/run-alpine-fle-tests.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.evergreen/run-alpine-fle-tests.sh b/.evergreen/run-alpine-fle-tests.sh index 54dd57b6448..1d9b59814a2 100644 --- a/.evergreen/run-alpine-fle-tests.sh +++ b/.evergreen/run-alpine-fle-tests.sh @@ -1,11 +1,16 @@ #! /usr/bin/env bash set -o errexit +source secrets-export.sh +set -o xtrace export npm_config_cache=$(pwd)/.cache npm i -source secrets-export.sh + +npm ls + +node --print "require('mongodb-client-encryption')" export ALPINE=true npm run check:csfle From 71b606a5d1f421d39b48070ade952f3068efd2ec Mon Sep 17 00:00:00 2001 From: bailey Date: Fri, 14 Feb 2025 12:05:20 -0700 Subject: [PATCH 13/16] passing --- .evergreen/docker/alpine.sh | 13 +++++++++---- .evergreen/run-alpine-fle-tests.sh | 13 +++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.evergreen/docker/alpine.sh b/.evergreen/docker/alpine.sh index c80acedb5ba..3fe36479aef 100644 --- a/.evergreen/docker/alpine.sh +++ b/.evergreen/docker/alpine.sh @@ -26,14 +26,19 @@ build_alpine() { } test_alpine() { - # set up FLE creds on host. don't download cryptd because we don't need it. - RUN_WITH_MONGOCRYPTD=true bash .evergreen/setup-fle.sh - # # launch a mongocryptd on the host. ./mongodb/bin/mongocryptd --fork --port 3000 --pidfilepath $(pwd)/pid.file --logpath $(pwd)/logpath MONGOCRYPTD_URI='mongodb://localhost:3000' - # # run FLE tests in container, using mongocryptd and replica set running on host + # set up FLE creds on host. don't download cryptd because we don't need it. + RUN_WITH_MONGOCRYPTD=true bash .evergreen/setup-fle.sh + + # remove node_modules to remove any already downloaded prebuilds + rm -rf node_modules + + # run FLE tests in container, using mongocryptd and replica set running on host. + # mount the current directory (the driver's root) as /node-mongodb-native and + # use that as the working directory for `run-alpine-fle-tests.sh` docker --debug run \ --platform linux/$LINUX_ARCH \ -e MONGODB_URI=${MONGODB_URI} -e MONGOCRYPTD_URI=${MONGOCRYPTD_URI} \ diff --git a/.evergreen/run-alpine-fle-tests.sh b/.evergreen/run-alpine-fle-tests.sh index 1d9b59814a2..cd518c1b4ee 100644 --- a/.evergreen/run-alpine-fle-tests.sh +++ b/.evergreen/run-alpine-fle-tests.sh @@ -4,13 +4,10 @@ set -o errexit source secrets-export.sh set -o xtrace +# use local cache - otherwise npm tries to install to ~ in the docker container, which +# fails when in a mounted volume export npm_config_cache=$(pwd)/.cache +npm install -npm i - -npm ls - -node --print "require('mongodb-client-encryption')" - -export ALPINE=true -npm run check:csfle +ALPINE=true \ + npm run check:csfle From 47eded11c649f67d751eae7e8d24839717ae922b Mon Sep 17 00:00:00 2001 From: bailey Date: Fri, 14 Feb 2025 12:08:14 -0700 Subject: [PATCH 14/16] rebuild easdf --- .evergreen/config.yml | 8 ++++++++ .evergreen/generate_evergreen_tasks.js | 20 ++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 69c6b2dad74..c0e67beb004 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -3822,6 +3822,14 @@ buildvariants: - run-custom-csfle-tests-rapid - run-custom-csfle-tests-latest - test-latest-driver-mongodb-client-encryption-6.0.0 + - name: rhel8-test-serverless + display_name: Serverless Test + run_on: rhel80-large + expansions: + NODE_LTS_VERSION: 16 + NPM_VERSION: 9 + tasks: + - serverless_task_group - name: rhel8-test-gcp-kms display_name: GCP KMS Test run_on: debian11-small diff --git a/.evergreen/generate_evergreen_tasks.js b/.evergreen/generate_evergreen_tasks.js index 61aed55d719..9f1b97baaee 100644 --- a/.evergreen/generate_evergreen_tasks.js +++ b/.evergreen/generate_evergreen_tasks.js @@ -809,16 +809,16 @@ BUILD_VARIANTS.push({ }); // special case for serverless testing -// BUILD_VARIANTS.push({ -// name: 'rhel8-test-serverless', -// display_name: 'Serverless Test', -// run_on: DEFAULT_OS, -// expansions: { -// NODE_LTS_VERSION: LOWEST_LTS, -// NPM_VERSION: 9 -// }, -// tasks: ['serverless_task_group'] -// }); +BUILD_VARIANTS.push({ + name: 'rhel8-test-serverless', + display_name: 'Serverless Test', + run_on: DEFAULT_OS, + expansions: { + NODE_LTS_VERSION: LOWEST_LTS, + NPM_VERSION: 9 + }, + tasks: ['serverless_task_group'] +}); BUILD_VARIANTS.push({ name: 'rhel8-test-gcp-kms', From f73917c26e760b666f5d26e29b6f34b02ac5fd56 Mon Sep 17 00:00:00 2001 From: bailey Date: Tue, 18 Feb 2025 08:24:11 -0700 Subject: [PATCH 15/16] install kerberos --- .evergreen/run-kerberos-tests.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/.evergreen/run-kerberos-tests.sh b/.evergreen/run-kerberos-tests.sh index 50e2c03a504..4fab785b3ac 100644 --- a/.evergreen/run-kerberos-tests.sh +++ b/.evergreen/run-kerberos-tests.sh @@ -28,6 +28,7 @@ export MONGODB_URI="mongodb://${USER}@${SASL_HOST}/${GSSAPI_DB}?authMechanism=GS set -o xtrace +npm i kerberos npm run check:kerberos set +o xtrace From 1f1fa50443d560850b17cd7dfc24b0a33f91c1b5 Mon Sep 17 00:00:00 2001 From: bailey Date: Tue, 18 Feb 2025 08:27:00 -0700 Subject: [PATCH 16/16] remove kerberos --- package-lock.json | 557 +++++++++++++++++++++------------------------- 1 file changed, 256 insertions(+), 301 deletions(-) diff --git a/package-lock.json b/package-lock.json index e7473810c9e..a273b043f5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -251,46 +251,46 @@ } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.744.0.tgz", - "integrity": "sha512-Z6NAl6pXSOO+9XYh3yWmvrzsE2qbc3abD9LDWNwj1j08fNF0gcKTMZol90dz7J3edaEbt2DBAze/I1cU/QgQCQ==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.750.0.tgz", + "integrity": "sha512-ia5+l7U1ludU/YqQAnEMj5DIp1kfMTu14lUOMG3uTIwTcj8OjkCvAe6BuM0OY6zd8enrJYWLqIqxuKPOWw4I7Q==", "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.744.0", - "@aws-sdk/credential-provider-node": "3.744.0", + "@aws-sdk/core": "3.750.0", + "@aws-sdk/credential-provider-node": "3.750.0", "@aws-sdk/middleware-host-header": "3.734.0", "@aws-sdk/middleware-logger": "3.734.0", "@aws-sdk/middleware-recursion-detection": "3.734.0", - "@aws-sdk/middleware-user-agent": "3.744.0", + "@aws-sdk/middleware-user-agent": "3.750.0", "@aws-sdk/region-config-resolver": "3.734.0", "@aws-sdk/types": "3.734.0", "@aws-sdk/util-endpoints": "3.743.0", "@aws-sdk/util-user-agent-browser": "3.734.0", - "@aws-sdk/util-user-agent-node": "3.744.0", + "@aws-sdk/util-user-agent-node": "3.750.0", "@smithy/config-resolver": "^4.0.1", - "@smithy/core": "^3.1.2", + "@smithy/core": "^3.1.4", "@smithy/fetch-http-handler": "^5.0.1", "@smithy/hash-node": "^4.0.1", "@smithy/invalid-dependency": "^4.0.1", "@smithy/middleware-content-length": "^4.0.1", - "@smithy/middleware-endpoint": "^4.0.3", - "@smithy/middleware-retry": "^4.0.4", + "@smithy/middleware-endpoint": "^4.0.5", + "@smithy/middleware-retry": "^4.0.6", "@smithy/middleware-serde": "^4.0.2", "@smithy/middleware-stack": "^4.0.1", "@smithy/node-config-provider": "^4.0.1", "@smithy/node-http-handler": "^4.0.2", "@smithy/protocol-http": "^5.0.1", - "@smithy/smithy-client": "^4.1.3", + "@smithy/smithy-client": "^4.1.5", "@smithy/types": "^4.1.0", "@smithy/url-parser": "^4.0.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.4", - "@smithy/util-defaults-mode-node": "^4.0.4", + "@smithy/util-defaults-mode-browser": "^4.0.6", + "@smithy/util-defaults-mode-node": "^4.0.6", "@smithy/util-endpoints": "^3.0.1", "@smithy/util-middleware": "^4.0.1", "@smithy/util-retry": "^4.0.1", @@ -302,45 +302,45 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.744.0.tgz", - "integrity": "sha512-mzJxPQ9mcnNY50pi7+pxB34/Dt7PUn0OgkashHdJPTnavoriLWvPcaQCG1NEVAtyzxNdowhpi4KjC+aN1EwAeA==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.750.0.tgz", + "integrity": "sha512-y0Rx6pTQXw0E61CaptpZF65qNggjqOgymq/RYZU5vWba5DGQ+iqGt8Yq8s+jfBoBBNXshxq8l8Dl5Uq/JTY1wg==", "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.744.0", + "@aws-sdk/core": "3.750.0", "@aws-sdk/middleware-host-header": "3.734.0", "@aws-sdk/middleware-logger": "3.734.0", "@aws-sdk/middleware-recursion-detection": "3.734.0", - "@aws-sdk/middleware-user-agent": "3.744.0", + "@aws-sdk/middleware-user-agent": "3.750.0", "@aws-sdk/region-config-resolver": "3.734.0", "@aws-sdk/types": "3.734.0", "@aws-sdk/util-endpoints": "3.743.0", "@aws-sdk/util-user-agent-browser": "3.734.0", - "@aws-sdk/util-user-agent-node": "3.744.0", + "@aws-sdk/util-user-agent-node": "3.750.0", "@smithy/config-resolver": "^4.0.1", - "@smithy/core": "^3.1.2", + "@smithy/core": "^3.1.4", "@smithy/fetch-http-handler": "^5.0.1", "@smithy/hash-node": "^4.0.1", "@smithy/invalid-dependency": "^4.0.1", "@smithy/middleware-content-length": "^4.0.1", - "@smithy/middleware-endpoint": "^4.0.3", - "@smithy/middleware-retry": "^4.0.4", + "@smithy/middleware-endpoint": "^4.0.5", + "@smithy/middleware-retry": "^4.0.6", "@smithy/middleware-serde": "^4.0.2", "@smithy/middleware-stack": "^4.0.1", "@smithy/node-config-provider": "^4.0.1", "@smithy/node-http-handler": "^4.0.2", "@smithy/protocol-http": "^5.0.1", - "@smithy/smithy-client": "^4.1.3", + "@smithy/smithy-client": "^4.1.5", "@smithy/types": "^4.1.0", "@smithy/url-parser": "^4.0.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.4", - "@smithy/util-defaults-mode-node": "^4.0.4", + "@smithy/util-defaults-mode-browser": "^4.0.6", + "@smithy/util-defaults-mode-node": "^4.0.6", "@smithy/util-endpoints": "^3.0.1", "@smithy/util-middleware": "^4.0.1", "@smithy/util-retry": "^4.0.1", @@ -352,19 +352,19 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.744.0.tgz", - "integrity": "sha512-R0XLfDDq7MAXYyDf7tPb+m0R7gmzTRRDtPNQ5jvuq8dbkefph5gFMkxZ2zSx7dfTsfYHhBPuTBsQ0c5Xjal3Vg==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.750.0.tgz", + "integrity": "sha512-bZ5K7N5L4+Pa2epbVpUQqd1XLG2uU8BGs/Sd+2nbgTf+lNQJyIxAg/Qsrjz9MzmY8zzQIeRQEkNmR6yVAfCmmQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.734.0", - "@smithy/core": "^3.1.2", + "@smithy/core": "^3.1.4", "@smithy/node-config-provider": "^4.0.1", "@smithy/property-provider": "^4.0.1", "@smithy/protocol-http": "^5.0.1", "@smithy/signature-v4": "^5.0.1", - "@smithy/smithy-client": "^4.1.3", + "@smithy/smithy-client": "^4.1.5", "@smithy/types": "^4.1.0", "@smithy/util-middleware": "^4.0.1", "fast-xml-parser": "4.4.1", @@ -375,13 +375,13 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.744.0.tgz", - "integrity": "sha512-NUxBVFzoVBmS6JH1sK8nzw8AAOI5hCM+lMLa0Dtwxk+dRIe6XRpU9wHkIbaA6Adwp8qvvyYZsgymuMvoAzGmcQ==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.750.0.tgz", + "integrity": "sha512-TwBzrxgIWcQk846XFn0A9DHBHbfg4sHR3M2GL4E7NcffEkh7r642ILiLa58VvQjO2nB1tcOOFtRqbZvVOKexUw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.744.0", + "@aws-sdk/client-cognito-identity": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/property-provider": "^4.0.1", "@smithy/types": "^4.1.0", @@ -392,13 +392,13 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.744.0.tgz", - "integrity": "sha512-hyjC7xqzAeERorYYjhQG1ivcr1XlxgfBpa+r4pG29toFG60mACyVzaR7+og3kgzjRFAB7D1imMxPQyEvQ1QokA==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.750.0.tgz", + "integrity": "sha512-In6bsG0p/P31HcH4DBRKBbcDS/3SHvEPjfXV8ODPWZO/l3/p7IRoYBdQ07C9R+VMZU2D0+/Sc/DWK/TUNDk1+Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.744.0", + "@aws-sdk/core": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/property-provider": "^4.0.1", "@smithy/types": "^4.1.0", @@ -409,21 +409,21 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.744.0.tgz", - "integrity": "sha512-k+P1Tl5ewBvVByR6hB726qFIzANgQVf2cY87hZ/e09pQYlH4bfBcyY16VJhkqYnKmv6HMdWxKHX7D8nwlc8Obg==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.750.0.tgz", + "integrity": "sha512-wFB9qqfa20AB0dElsQz5ZlZT5o+a+XzpEpmg0erylmGYqEOvh8NQWfDUVpRmQuGq9VbvW/8cIbxPoNqEbPtuWQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.744.0", + "@aws-sdk/core": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/fetch-http-handler": "^5.0.1", "@smithy/node-http-handler": "^4.0.2", "@smithy/property-provider": "^4.0.1", "@smithy/protocol-http": "^5.0.1", - "@smithy/smithy-client": "^4.1.3", + "@smithy/smithy-client": "^4.1.5", "@smithy/types": "^4.1.0", - "@smithy/util-stream": "^4.0.2", + "@smithy/util-stream": "^4.1.1", "tslib": "^2.6.2" }, "engines": { @@ -431,19 +431,19 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.744.0.tgz", - "integrity": "sha512-hjEWgkF86tkvg8PIsDiB3KkTj7z8ZFGR0v0OLQYD47o17q1qfoMzZmg9wae3wXp9KzU+lZETo+8oMqX9a+7aVQ==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.750.0.tgz", + "integrity": "sha512-2YIZmyEr5RUd3uxXpxOLD9G67Bibm4I/65M6vKFP17jVMUT+R1nL7mKqmhEVO2p+BoeV+bwMyJ/jpTYG368PCg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.744.0", - "@aws-sdk/credential-provider-env": "3.744.0", - "@aws-sdk/credential-provider-http": "3.744.0", - "@aws-sdk/credential-provider-process": "3.744.0", - "@aws-sdk/credential-provider-sso": "3.744.0", - "@aws-sdk/credential-provider-web-identity": "3.744.0", - "@aws-sdk/nested-clients": "3.744.0", + "@aws-sdk/core": "3.750.0", + "@aws-sdk/credential-provider-env": "3.750.0", + "@aws-sdk/credential-provider-http": "3.750.0", + "@aws-sdk/credential-provider-process": "3.750.0", + "@aws-sdk/credential-provider-sso": "3.750.0", + "@aws-sdk/credential-provider-web-identity": "3.750.0", + "@aws-sdk/nested-clients": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/credential-provider-imds": "^4.0.1", "@smithy/property-provider": "^4.0.1", @@ -456,18 +456,18 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.744.0.tgz", - "integrity": "sha512-4oUfRd6pe/VGmKoav17pPoOO0WP0L6YXmHqtJHSDmFUOAa+Vh0ZRljTj/yBdleRgdO6rOfdWqoGLFSFiAZDrsQ==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.750.0.tgz", + "integrity": "sha512-THWHHAceLwsOiowPEmKyhWVDlEUxH07GHSw5AQFDvNQtGKOQl0HSIFO1mKObT2Q2Vqzji9Bq8H58SO5BFtNPRw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.744.0", - "@aws-sdk/credential-provider-http": "3.744.0", - "@aws-sdk/credential-provider-ini": "3.744.0", - "@aws-sdk/credential-provider-process": "3.744.0", - "@aws-sdk/credential-provider-sso": "3.744.0", - "@aws-sdk/credential-provider-web-identity": "3.744.0", + "@aws-sdk/credential-provider-env": "3.750.0", + "@aws-sdk/credential-provider-http": "3.750.0", + "@aws-sdk/credential-provider-ini": "3.750.0", + "@aws-sdk/credential-provider-process": "3.750.0", + "@aws-sdk/credential-provider-sso": "3.750.0", + "@aws-sdk/credential-provider-web-identity": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/credential-provider-imds": "^4.0.1", "@smithy/property-provider": "^4.0.1", @@ -480,13 +480,13 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.744.0.tgz", - "integrity": "sha512-m0d/pDBIaiEAAxWXt/c79RHsKkUkyPOvF2SAMRddVhhOt1GFZI4ml+3f4drmAZfXldIyJmvJTJJqWluVPwTIqQ==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.750.0.tgz", + "integrity": "sha512-Q78SCH1n0m7tpu36sJwfrUSxI8l611OyysjQeMiIOliVfZICEoHcLHLcLkiR+tnIpZ3rk7d2EQ6R1jwlXnalMQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.744.0", + "@aws-sdk/core": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/property-provider": "^4.0.1", "@smithy/shared-ini-file-loader": "^4.0.1", @@ -498,15 +498,15 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.744.0.tgz", - "integrity": "sha512-xdMufTZOvpbDoDPI2XLu0/Rg3qJ/txpS8IJR63NsCGotHJZ/ucLNKwTcGS40hllZB8qSHTlvmlOzElDahTtx/A==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.750.0.tgz", + "integrity": "sha512-FGYrDjXN/FOQVi/t8fHSv8zCk+NEvtFnuc4cZUj5OIbM4vrfFc5VaPyn41Uza3iv6Qq9rZg0QOwWnqK8lNrqUw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.744.0", - "@aws-sdk/core": "3.744.0", - "@aws-sdk/token-providers": "3.744.0", + "@aws-sdk/client-sso": "3.750.0", + "@aws-sdk/core": "3.750.0", + "@aws-sdk/token-providers": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/property-provider": "^4.0.1", "@smithy/shared-ini-file-loader": "^4.0.1", @@ -518,14 +518,14 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.744.0.tgz", - "integrity": "sha512-cNk93GZxORzqEojWfXdrPBF6a7Nu3LpPCWG5mV+lH2tbuGsmw6XhKkwpt7o+OiIP4tKCpHlvqOD8f1nmhe1KDA==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.750.0.tgz", + "integrity": "sha512-Nz8zs3YJ+GOTSrq+LyzbbC1Ffpt7pK38gcOyNZv76pP5MswKTUKNYBJehqwa+i7FcFQHsCk3TdhR8MT1ZR23uA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.744.0", - "@aws-sdk/nested-clients": "3.744.0", + "@aws-sdk/core": "3.750.0", + "@aws-sdk/nested-clients": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/property-provider": "^4.0.1", "@smithy/types": "^4.1.0", @@ -536,25 +536,25 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.744.0.tgz", - "integrity": "sha512-8vXnKA/TklSx6HdF88RVohtsvYNuGP9nm5RTCSGbWVR7+xEU/Eh15B+EKoGasCjZW7/9GxnSULp0DN1msCR23A==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.750.0.tgz", + "integrity": "sha512-HpJyLHAjcn/IcvsL4WhEIgbzEWfTnn29u8QFNa5Ii9pVtxdeP/DkSthP3SNxLK2jVNcqWL9xago02SiasNOKfw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.744.0", - "@aws-sdk/core": "3.744.0", - "@aws-sdk/credential-provider-cognito-identity": "3.744.0", - "@aws-sdk/credential-provider-env": "3.744.0", - "@aws-sdk/credential-provider-http": "3.744.0", - "@aws-sdk/credential-provider-ini": "3.744.0", - "@aws-sdk/credential-provider-node": "3.744.0", - "@aws-sdk/credential-provider-process": "3.744.0", - "@aws-sdk/credential-provider-sso": "3.744.0", - "@aws-sdk/credential-provider-web-identity": "3.744.0", - "@aws-sdk/nested-clients": "3.744.0", + "@aws-sdk/client-cognito-identity": "3.750.0", + "@aws-sdk/core": "3.750.0", + "@aws-sdk/credential-provider-cognito-identity": "3.750.0", + "@aws-sdk/credential-provider-env": "3.750.0", + "@aws-sdk/credential-provider-http": "3.750.0", + "@aws-sdk/credential-provider-ini": "3.750.0", + "@aws-sdk/credential-provider-node": "3.750.0", + "@aws-sdk/credential-provider-process": "3.750.0", + "@aws-sdk/credential-provider-sso": "3.750.0", + "@aws-sdk/credential-provider-web-identity": "3.750.0", + "@aws-sdk/nested-clients": "3.750.0", "@aws-sdk/types": "3.734.0", - "@smithy/core": "^3.1.2", + "@smithy/core": "^3.1.4", "@smithy/credential-provider-imds": "^4.0.1", "@smithy/property-provider": "^4.0.1", "@smithy/types": "^4.1.0", @@ -612,16 +612,16 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.744.0.tgz", - "integrity": "sha512-ROUbDQHfVWiBHXd4m9E9mKj1Azby8XCs8RC8OCf9GVH339GSE6aMrPJSzMlsV1LmzPdPIypgp5qqh5NfSrKztg==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.750.0.tgz", + "integrity": "sha512-YYcslDsP5+2NZoN3UwuhZGkhAHPSli7HlJHBafBrvjGV/I9f8FuOO1d1ebxGdEP4HyRXUGyh+7Ur4q+Psk0ryw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.744.0", + "@aws-sdk/core": "3.750.0", "@aws-sdk/types": "3.734.0", "@aws-sdk/util-endpoints": "3.743.0", - "@smithy/core": "^3.1.2", + "@smithy/core": "^3.1.4", "@smithy/protocol-http": "^5.0.1", "@smithy/types": "^4.1.0", "tslib": "^2.6.2" @@ -631,45 +631,45 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.744.0.tgz", - "integrity": "sha512-Mnrlh4lRY1gZQnKvN2Lh/5WXcGkzC41NM93mtn2uaqOh+DZLCXCttNCfbUesUvYJLOo3lYaOpiDsjTkPVB1yjw==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.750.0.tgz", + "integrity": "sha512-OH68BRF0rt9nDloq4zsfeHI0G21lj11a66qosaljtEP66PWm7tQ06feKbFkXHT5E1K3QhJW3nVyK8v2fEBY5fg==", "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.744.0", + "@aws-sdk/core": "3.750.0", "@aws-sdk/middleware-host-header": "3.734.0", "@aws-sdk/middleware-logger": "3.734.0", "@aws-sdk/middleware-recursion-detection": "3.734.0", - "@aws-sdk/middleware-user-agent": "3.744.0", + "@aws-sdk/middleware-user-agent": "3.750.0", "@aws-sdk/region-config-resolver": "3.734.0", "@aws-sdk/types": "3.734.0", "@aws-sdk/util-endpoints": "3.743.0", "@aws-sdk/util-user-agent-browser": "3.734.0", - "@aws-sdk/util-user-agent-node": "3.744.0", + "@aws-sdk/util-user-agent-node": "3.750.0", "@smithy/config-resolver": "^4.0.1", - "@smithy/core": "^3.1.2", + "@smithy/core": "^3.1.4", "@smithy/fetch-http-handler": "^5.0.1", "@smithy/hash-node": "^4.0.1", "@smithy/invalid-dependency": "^4.0.1", "@smithy/middleware-content-length": "^4.0.1", - "@smithy/middleware-endpoint": "^4.0.3", - "@smithy/middleware-retry": "^4.0.4", + "@smithy/middleware-endpoint": "^4.0.5", + "@smithy/middleware-retry": "^4.0.6", "@smithy/middleware-serde": "^4.0.2", "@smithy/middleware-stack": "^4.0.1", "@smithy/node-config-provider": "^4.0.1", "@smithy/node-http-handler": "^4.0.2", "@smithy/protocol-http": "^5.0.1", - "@smithy/smithy-client": "^4.1.3", + "@smithy/smithy-client": "^4.1.5", "@smithy/types": "^4.1.0", "@smithy/url-parser": "^4.0.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.4", - "@smithy/util-defaults-mode-node": "^4.0.4", + "@smithy/util-defaults-mode-browser": "^4.0.6", + "@smithy/util-defaults-mode-node": "^4.0.6", "@smithy/util-endpoints": "^3.0.1", "@smithy/util-middleware": "^4.0.1", "@smithy/util-retry": "^4.0.1", @@ -699,13 +699,13 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.744.0.tgz", - "integrity": "sha512-v/1+lWkDCd60Ei6oyhJqli6mTsPEVepLoSMB50vHUVlJP0fzXu/3FMje90/RzeUoh/VugZQJCEv/NNpuC6wztg==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.750.0.tgz", + "integrity": "sha512-X/KzqZw41iWolwNdc8e3RMcNSMR364viHv78u6AefXOO5eRM40c4/LuST1jDzq35/LpnqRhL7/MuixOetw+sFw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/nested-clients": "3.744.0", + "@aws-sdk/nested-clients": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/property-provider": "^4.0.1", "@smithy/shared-ini-file-loader": "^4.0.1", @@ -773,13 +773,13 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.744.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.744.0.tgz", - "integrity": "sha512-BJURjwIXhNa4heXkLC0+GcL+8wVXaU7JoyW6ckdvp93LL+sVHeR1d5FxXZHQW/pMI4E3gNlKyBqjKaT75tObNQ==", + "version": "3.750.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.750.0.tgz", + "integrity": "sha512-84HJj9G9zbrHX2opLk9eHfDceB+UIHVrmflMzWHpsmo9fDuro/flIBqaVDlE021Osj6qIM0SJJcnL6s23j7JEw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.744.0", + "@aws-sdk/middleware-user-agent": "3.750.0", "@aws-sdk/types": "3.734.0", "@smithy/node-config-provider": "^4.0.1", "@smithy/types": "^4.1.0", @@ -823,23 +823,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.8.tgz", - "integrity": "sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", + "@babel/generator": "^7.26.9", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.7", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/traverse": "^7.26.8", - "@babel/types": "^7.26.8", - "@types/gensync": "^1.0.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -872,14 +871,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", - "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -978,27 +977,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", - "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.8" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -1008,32 +1007,32 @@ } }, "node_modules/@babel/template": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", - "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8" + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", - "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1052,9 +1051,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", - "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "dev": true, "license": "MIT", "dependencies": { @@ -1452,9 +1451,9 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.49.2", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.49.2.tgz", - "integrity": "sha512-DI/WnvhbkHcucxxc4ys00ejCiViFls5EKPrEfe4NV3GGpVkoM5ZXF61HZNSGA8IG0oEV4KfTqIa59Rc3wdMopw==", + "version": "7.50.0", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.50.0.tgz", + "integrity": "sha512-Ds/PHTiVzuENQsmXrJKkSdfgNkr/SDG/2rDef0AWl3BchAnXdO7gXaYsAkNx4gWiC4OngNA3fQfd3+BcQxP1DQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1463,8 +1462,8 @@ "@microsoft/tsdoc-config": "~0.17.1", "@rushstack/node-core-library": "5.11.0", "@rushstack/rig-package": "0.5.3", - "@rushstack/terminal": "0.14.6", - "@rushstack/ts-command-line": "4.23.4", + "@rushstack/terminal": "0.15.0", + "@rushstack/ts-command-line": "4.23.5", "lodash": "~4.17.15", "minimatch": "~3.0.3", "resolve": "~1.22.1", @@ -1944,9 +1943,9 @@ } }, "node_modules/@rushstack/terminal": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.14.6.tgz", - "integrity": "sha512-4nMUy4h0u5PGXVG71kEA9uYI3l8GjVqewoHOFONiM6fuqS51ORdaJZ5ZXB2VZEGUyfg1TOTSy88MF2cdAy+lqA==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.15.0.tgz", + "integrity": "sha512-vXQPRQ+vJJn4GVqxkwRe+UGgzNxdV8xuJZY2zem46Y0p3tlahucH9/hPmLGj2i9dQnUBFiRnoM9/KW7PYw8F4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1963,13 +1962,13 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "4.23.4", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.4.tgz", - "integrity": "sha512-pqmzDJCm0TS8VyeqnzcJ7ncwXgiLDQ6LVmXXfqv2nPL6VIz+UpyTpNVfZRJpyyJ+UDxqob1vIj2liaUfBjv8/A==", + "version": "4.23.5", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.23.5.tgz", + "integrity": "sha512-jg70HfoK44KfSP3MTiL5rxsZH7X1ktX3cZs9Sl8eDu1/LxJSbPsh0MOFRC710lIuYYSgxWjI5AjbCBAl7u3RxA==", "dev": true, "license": "MIT", "dependencies": { - "@rushstack/terminal": "0.14.6", + "@rushstack/terminal": "0.15.0", "@types/argparse": "1.0.38", "argparse": "~1.0.9", "string-argv": "~0.3.1" @@ -2063,9 +2062,9 @@ } }, "node_modules/@smithy/core": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.2.tgz", - "integrity": "sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.4.tgz", + "integrity": "sha512-wFExFGK+7r2wYriOqe7RRIBNpvxwiS95ih09+GSLRBdoyK/O1uZA7K7pKesj5CBvwJuSBeXwLyR88WwIAY+DGA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2074,7 +2073,7 @@ "@smithy/types": "^4.1.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.1", - "@smithy/util-stream": "^4.0.2", + "@smithy/util-stream": "^4.1.1", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -2175,13 +2174,13 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.3.tgz", - "integrity": "sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.5.tgz", + "integrity": "sha512-cPzGZV7qStHwboFrm6GfrzQE+YDiCzWcTh4+7wKrP/ZQ4gkw+r7qDjV8GjM4N0UYsuUyLfpzLGg5hxsYTU11WA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.1.2", + "@smithy/core": "^3.1.4", "@smithy/middleware-serde": "^4.0.2", "@smithy/node-config-provider": "^4.0.1", "@smithy/shared-ini-file-loader": "^4.0.1", @@ -2195,16 +2194,16 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.4.tgz", - "integrity": "sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.6.tgz", + "integrity": "sha512-s8QzuOQnbdvRymD9Gt9c9zMq10wUQAHQ3z72uirrBHCwZcLTrL5iCOuVTMdka2IXOYhQE890WD5t6G24+F+Qcg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.0.1", "@smithy/protocol-http": "^5.0.1", "@smithy/service-error-classification": "^4.0.1", - "@smithy/smithy-client": "^4.1.3", + "@smithy/smithy-client": "^4.1.5", "@smithy/types": "^4.1.0", "@smithy/util-middleware": "^4.0.1", "@smithy/util-retry": "^4.0.1", @@ -2381,18 +2380,18 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.3.tgz", - "integrity": "sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.5.tgz", + "integrity": "sha512-DMXYoYeL4QkElr216n1yodTFeATbfb4jwYM9gKn71Rw/FNA1/Sm36tkTSCsZEs7mgpG3OINmkxL9vgVFzyGPaw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.1.2", - "@smithy/middleware-endpoint": "^4.0.3", + "@smithy/core": "^3.1.4", + "@smithy/middleware-endpoint": "^4.0.5", "@smithy/middleware-stack": "^4.0.1", "@smithy/protocol-http": "^5.0.1", "@smithy/types": "^4.1.0", - "@smithy/util-stream": "^4.0.2", + "@smithy/util-stream": "^4.1.1", "tslib": "^2.6.2" }, "engines": { @@ -2496,14 +2495,14 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.4.tgz", - "integrity": "sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.6.tgz", + "integrity": "sha512-N8+VCt+piupH1A7DgSVDNrVHqRLz8r6DvBkpS7EWHiIxsUk4jqGuQLjqC/gnCzmwGkVBdNruHoYAzzaSQ8e80w==", "dev": true, "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.0.1", - "@smithy/smithy-client": "^4.1.3", + "@smithy/smithy-client": "^4.1.5", "@smithy/types": "^4.1.0", "bowser": "^2.11.0", "tslib": "^2.6.2" @@ -2513,9 +2512,9 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.4.tgz", - "integrity": "sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.6.tgz", + "integrity": "sha512-9zhx1shd1VwSSVvLZB8CM3qQ3RPD3le7A3h/UPuyh/PC7g4OaWDi2xUNzamsVoSmCGtmUBONl56lM2EU6LcH7A==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2523,7 +2522,7 @@ "@smithy/credential-provider-imds": "^4.0.1", "@smithy/node-config-provider": "^4.0.1", "@smithy/property-provider": "^4.0.1", - "@smithy/smithy-client": "^4.1.3", + "@smithy/smithy-client": "^4.1.5", "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, @@ -2589,9 +2588,9 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.0.2.tgz", - "integrity": "sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.1.1.tgz", + "integrity": "sha512-+Xvh8nhy0Wjv1y71rBVyV3eJU3356XsFQNI8dEZVNrQju7Eib8G31GWtO+zMa9kTCGd41Mflu+ZKfmQL/o2XzQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2719,13 +2718,11 @@ } }, "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -2764,13 +2761,6 @@ "@types/send": "*" } }, - "node_modules/@types/gensync": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz", - "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", @@ -2814,9 +2804,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", - "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", + "version": "22.13.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", + "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", "dev": true, "license": "MIT", "dependencies": { @@ -3441,7 +3431,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -3485,7 +3475,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -3619,7 +3609,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -3674,9 +3664,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3743,9 +3733,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001699", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", - "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "dev": true, "funding": [ { @@ -3877,7 +3867,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/clean-stack": { @@ -4067,7 +4057,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" @@ -4096,7 +4086,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=4.0.0" @@ -4150,7 +4140,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "engines": { "node": ">=8" @@ -4212,9 +4202,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.97", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.97.tgz", - "integrity": "sha512-HKLtaH02augM7ZOdYRuO19rWDeY+QSJ1VxnXFa/XDFLf07HvM90pALIJFgrO+UVaajI3+aJMMpojoUTLZyQ7JQ==", + "version": "1.5.102", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", + "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", "dev": true, "license": "ISC" }, @@ -4239,7 +4229,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -4421,17 +4411,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-formatter-pretty/node_modules/@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, "node_modules/eslint-plugin-mocha": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.5.0.tgz", @@ -4768,7 +4747,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "devOptional": true, + "dev": true, "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" @@ -5058,9 +5037,9 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -5123,7 +5102,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/fs-extra": { @@ -5286,7 +5265,7 @@ "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/glob": { @@ -5575,7 +5554,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -5665,14 +5644,14 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/ip-address": { @@ -6166,30 +6145,6 @@ "dev": true, "license": "MIT" }, - "node_modules/kerberos": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/kerberos/-/kerberos-2.2.1.tgz", - "integrity": "sha512-Vlyv1tjAPb0y2VIJ03dKkUjsneGIBuTkH24uGRx6/DrKpFlVuGPmct3m5aEotljVUlw7PAGWABwR5aNeW7y8Zw==", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.2" - }, - "engines": { - "node": ">=12.9.0" - } - }, - "node_modules/kerberos/node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -6509,7 +6464,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -6545,7 +6500,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "devOptional": true, + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6570,7 +6525,7 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/mocha": { @@ -6773,7 +6728,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/natural-compare": { @@ -6831,7 +6786,7 @@ "version": "3.74.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -7193,7 +7148,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -7503,7 +7458,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", @@ -7537,9 +7492,9 @@ } }, "node_modules/prettier": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", - "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", + "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", "dev": true, "license": "MIT", "bin": { @@ -7624,7 +7579,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -7734,7 +7689,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "devOptional": true, + "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", @@ -7750,7 +7705,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -7897,7 +7852,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -8097,7 +8052,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -8125,7 +8080,7 @@ "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "devOptional": true, + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -8336,7 +8291,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -8357,7 +8312,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -8592,7 +8547,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -8756,7 +8711,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chownr": "^1.1.1", @@ -8769,7 +8724,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "bl": "^4.0.3", @@ -8984,7 +8939,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" @@ -9200,7 +9155,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/utils-merge": { @@ -9247,9 +9202,9 @@ } }, "node_modules/v8-heapsnapshot/node_modules/@types/node": { - "version": "18.19.75", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.75.tgz", - "integrity": "sha512-UIksWtThob6ZVSyxcOqCLOUNg/dyO1Qvx4McgeuhrEtHTLFTf7BBhEazaE4K806FGTPtzd/2sE90qn4fVr7cyw==", + "version": "18.19.76", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.76.tgz", + "integrity": "sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==", "dev": true, "license": "MIT", "dependencies": { @@ -9368,7 +9323,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": {