From eef7dbd8571f863f32f474c1e3349514684cd9ea Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Tue, 1 Oct 2024 11:04:54 -0700 Subject: [PATCH 01/25] Bump version for next release. (#93) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cb8d77a..20f6702 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@oracle/coherence", - "version": "1.2.2", + "version": "1.2.3", "license": "UPL-1.0", "main": "lib/index.js", "keywords": [ From 46459cfa6837911594aa7cc914e3e5b9a656119b Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Thu, 10 Oct 2024 09:57:22 -0700 Subject: [PATCH 02/25] Add trivy scan. (#94) --- .github/workflows/trivy-scan.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/trivy-scan.yml diff --git a/.github/workflows/trivy-scan.yml b/.github/workflows/trivy-scan.yml new file mode 100644 index 0000000..e1a0d66 --- /dev/null +++ b/.github/workflows/trivy-scan.yml @@ -0,0 +1,29 @@ +# Copyright 2024 Oracle Corporation and/or its affiliates. +# Licensed under the Universal Permissive License v 1.0 as shown at +# https://oss.oracle.com/licenses/upl. + +# --------------------------------------------------------------------------- +# Coherence JS Client GitHub Actions Scheduled Trivy Scan +# --------------------------------------------------------------------------- +name: Scheduled Trivy Scan + +on: + workflow_dispatch: + schedule: + # Every day at midnight + - cron: '0 0 * * *' + +jobs: + trivy-scan: + runs-on: ubuntu-latest + container: + image: ghcr.io/aquasecurity/trivy:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /home/runner/work/coherence-py-client/coherence-py-client:/repo + + steps: + - uses: actions/checkout@v4 + + - name: Trivy Scan + run: trivy fs --exit-code 1 /repo \ No newline at end of file From 1f9b706d7a4e3a0915de26ee27baf58df0c7d879 Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Thu, 10 Oct 2024 10:22:50 -0700 Subject: [PATCH 03/25] Fix error in workflow. (#95) --- .github/workflows/trivy-scan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/trivy-scan.yml b/.github/workflows/trivy-scan.yml index e1a0d66..db28efc 100644 --- a/.github/workflows/trivy-scan.yml +++ b/.github/workflows/trivy-scan.yml @@ -20,7 +20,7 @@ jobs: image: ghcr.io/aquasecurity/trivy:latest volumes: - /var/run/docker.sock:/var/run/docker.sock - - /home/runner/work/coherence-py-client/coherence-py-client:/repo + - /home/runner/work/coherence-js-client/coherence-js-client:/repo steps: - uses: actions/checkout@v4 From 2776a33f6cea4d835af67fa3bafd38ed437f0c98 Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Tue, 15 Oct 2024 11:16:09 -0700 Subject: [PATCH 04/25] Update to 22.06.10 (#96) --- .github/workflows/node.js.yml | 2 +- .github/workflows/release.yml | 4 ++-- DEVELOPING.md | 2 +- README.md | 2 +- bin/docker-utils.sh | 2 +- bin/npm-post-install.sh | 2 +- bin/test-cycle.sh | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 00ca3c1..6b54ff6 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -28,7 +28,7 @@ jobs: fail-fast: false matrix: node-version: [18.15.x, 19.x] - coherence-version: [22.06.7, 24.03] + coherence-version: [22.06.10, 24.09] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 860465a..0a05d93 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,8 +37,8 @@ jobs: - run: echo "/tmp/grpc/bin" >> $GITHUB_PATH - run: npm install # run unit tests - - run: COHERENCE_VERSION=22.06.5 npm run test-cycle - - run: COHERENCE_VERSION=23.09 npm run test-cycle + - run: COHERENCE_VERSION=22.06.10 npm run test-cycle + - run: COHERENCE_VERSION=24.09 npm run test-cycle - run: npm install --no-save typedoc # generate dist which runs other tasks - run: npm run dist diff --git a/DEVELOPING.md b/DEVELOPING.md index 658ac50..108bb55 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -44,7 +44,7 @@ The above can also be shortened to: However, if developing new functionality or tests, the manual start of the cluster using `coh-up` may be preferred as it avoids restarting the cluster allowing for quicker development times. -**Important!** When calling `coh-up`, `test`, `coh-down`, or `test-cycle` the LTS version of Coherence will be used (`22.06.2`). +**Important!** When calling `coh-up`, `test`, `coh-down`, or `test-cycle` the LTS version of Coherence will be used (`22.06.10`). To use a later Coherence version, such as `22.03`, prefix the calls with, or export `COHERENCE_VERSION=`. For example: ```bash diff --git a/README.md b/README.md index 6b7785f..4d3afd7 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ or to save some keystrokes/time, use the included npm script, `coh-up` to start npm run coh-up ``` -**Important!** When calling `coh-up` or `coh-down`, the LTS version of Coherence will be used (`22.06.2`). +**Important!** When calling `coh-up` or `coh-down`, the LTS version of Coherence will be used (`22.06.10`). To use a later Coherence version, such as `24.03`, prefix the calls with, or export `COHERENCE_VERSION=`. For example: ```bash diff --git a/bin/docker-utils.sh b/bin/docker-utils.sh index e2c455e..1ce73f1 100755 --- a/bin/docker-utils.sh +++ b/bin/docker-utils.sh @@ -7,7 +7,7 @@ set -e -declare VERSION=${COHERENCE_VERSION:=22.06.5} +declare VERSION=${COHERENCE_VERSION:=22.06.10} declare TYPE=${COHERENCE_TYPE:=coherence-ce} declare REGISTRY=${DOCKER_REGISTRY:=ghcr.io/oracle} diff --git a/bin/npm-post-install.sh b/bin/npm-post-install.sh index 8828bcc..c995284 100755 --- a/bin/npm-post-install.sh +++ b/bin/npm-post-install.sh @@ -11,7 +11,7 @@ declare -r ROOT="${PWD}" # Grabs the proto files from the Coherence project. function grab_proto_files() { - declare -r BASE_URL="https://raw.githubusercontent.com/oracle/coherence/22.06.5/prj/coherence-grpc/src/main/proto/" + declare -r BASE_URL="https://raw.githubusercontent.com/oracle/coherence/22.06.10/prj/coherence-grpc/src/main/proto/" declare -r PROTO_FILES=("messages.proto" "services.proto") declare -r PROTO_DIR="${ROOT}/etc/proto" diff --git a/bin/test-cycle.sh b/bin/test-cycle.sh index 5f2d7fd..0336ee6 100755 --- a/bin/test-cycle.sh +++ b/bin/test-cycle.sh @@ -10,7 +10,7 @@ set -e mkdir -p "${PWD}"/etc/cert chmod 777 "${PWD}"/etc/cert -declare VERSION=${COHERENCE_VERSION:=22.06.2} +declare VERSION=${COHERENCE_VERSION:=22.06.10} declare TYPE=${COHERENCE_TYPE:=coherence-ce} declare REGISTRY=${DOCKER_REGISTRY:=ghcr.io/oracle} declare LABEL=clear From b5ad2fc5ffba14b18dfbd35d7ab209f147471ebd Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Wed, 20 Nov 2024 19:16:13 -0800 Subject: [PATCH 05/25] Update to use trivy action. (#97) --- .github/workflows/trivy-scan.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/trivy-scan.yml b/.github/workflows/trivy-scan.yml index db28efc..dbed339 100644 --- a/.github/workflows/trivy-scan.yml +++ b/.github/workflows/trivy-scan.yml @@ -16,14 +16,13 @@ on: jobs: trivy-scan: runs-on: ubuntu-latest - container: - image: ghcr.io/aquasecurity/trivy:latest - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - /home/runner/work/coherence-js-client/coherence-js-client:/repo steps: - - uses: actions/checkout@v4 + - name: Checkout code + uses: actions/checkout@v4 - - name: Trivy Scan - run: trivy fs --exit-code 1 /repo \ No newline at end of file + - name: Run Trivy vulnerability scanner to scan repo + uses: aquasecurity/trivy-action@0.29.0 + with: + scan-type: 'fs' + exit-code: 1 From 230171c941c838c5857a4c1ec2102e37d3d3c784 Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Fri, 10 Jan 2025 10:10:50 -0800 Subject: [PATCH 06/25] Update doc/readme headers. (#98) --- README.md | 2 +- typedoc.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4d3afd7..3f632f8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Coherence JavaScript Client +# JavaScript Client for Oracle Coherence [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=oracle_coherence-js-client&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=oracle_coherence-js-client) Coherence JavaScript Client allows Node applications to act as diff --git a/typedoc.json b/typedoc.json index 75c24aa..05ba830 100644 --- a/typedoc.json +++ b/typedoc.json @@ -6,7 +6,7 @@ "entryPointStrategy": "resolve", "out": "docs", "excludePrivate": true, - "name": "Oracle Coherence JavaScript Client", + "name": "JavaScript Client API Reference for Oracle Coherence", "includeVersion": true, "readme": "README.md", "hideGenerator": true, From 0ac97bffc94aa642e7f6a404d59c537f8694afd0 Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Tue, 21 Jan 2025 13:17:42 -0800 Subject: [PATCH 07/25] Version updates (#99) * Version updates. * Version updates. --- .github/workflows/node.js.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- DEVELOPING.md | 2 +- README.md | 6 +++--- bin/docker-utils.sh | 2 +- bin/test-cycle.sh | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 6b54ff6..3a00e9b 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -27,8 +27,8 @@ jobs: strategy: fail-fast: false matrix: - node-version: [18.15.x, 19.x] - coherence-version: [22.06.10, 24.09] + node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x] + coherence-version: [22.06.11, 24.09] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0a05d93..e5cccfe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: with: ref: ${{ github.event.release.target_commitish }} # install Node.js - - name: Use Node.js 18.15.x + - name: Use Node.js 18.x uses: actions/setup-node@v3 with: node-version: 18.15.x @@ -37,7 +37,7 @@ jobs: - run: echo "/tmp/grpc/bin" >> $GITHUB_PATH - run: npm install # run unit tests - - run: COHERENCE_VERSION=22.06.10 npm run test-cycle + - run: COHERENCE_VERSION=22.06.11 npm run test-cycle - run: COHERENCE_VERSION=24.09 npm run test-cycle - run: npm install --no-save typedoc # generate dist which runs other tasks diff --git a/DEVELOPING.md b/DEVELOPING.md index 108bb55..dfe27cf 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -44,7 +44,7 @@ The above can also be shortened to: However, if developing new functionality or tests, the manual start of the cluster using `coh-up` may be preferred as it avoids restarting the cluster allowing for quicker development times. -**Important!** When calling `coh-up`, `test`, `coh-down`, or `test-cycle` the LTS version of Coherence will be used (`22.06.10`). +**Important!** When calling `coh-up`, `test`, `coh-down`, or `test-cycle` the LTS version of Coherence will be used (`22.06.11`). To use a later Coherence version, such as `22.03`, prefix the calls with, or export `COHERENCE_VERSION=`. For example: ```bash diff --git a/README.md b/README.md index 3f632f8..ad4c533 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ the network transport. Before testing the library, you must ensure a Coherence cluster is available. For local development, we recommend using the Coherence CE Docker image; it contains everything necessary for the client to operate correctly. ```bash -docker run -d -p 1408:1408 ghcr.io/oracle/coherence-ce:24.03 +docker run -d -p 1408:1408 ghcr.io/oracle/coherence-ce:24.09 ``` or to save some keystrokes/time, use the included npm script, `coh-up` to start a two-member Cluster with the gRPC port at 1408" @@ -29,8 +29,8 @@ or to save some keystrokes/time, use the included npm script, `coh-up` to start npm run coh-up ``` -**Important!** When calling `coh-up` or `coh-down`, the LTS version of Coherence will be used (`22.06.10`). -To use a later Coherence version, such as `24.03`, prefix the calls with, or export `COHERENCE_VERSION=`. +**Important!** When calling `coh-up` or `coh-down`, the LTS version of Coherence will be used (`22.06.11`). +To use a later Coherence version, such as `24.09`, prefix the calls with, or export `COHERENCE_VERSION=`. For example: ```bash COHERENCE_VERSION=24.03 npm run coh-up diff --git a/bin/docker-utils.sh b/bin/docker-utils.sh index 1ce73f1..fb95530 100755 --- a/bin/docker-utils.sh +++ b/bin/docker-utils.sh @@ -7,7 +7,7 @@ set -e -declare VERSION=${COHERENCE_VERSION:=22.06.10} +declare VERSION=${COHERENCE_VERSION:=22.06.11} declare TYPE=${COHERENCE_TYPE:=coherence-ce} declare REGISTRY=${DOCKER_REGISTRY:=ghcr.io/oracle} diff --git a/bin/test-cycle.sh b/bin/test-cycle.sh index 0336ee6..e6089d1 100755 --- a/bin/test-cycle.sh +++ b/bin/test-cycle.sh @@ -10,7 +10,7 @@ set -e mkdir -p "${PWD}"/etc/cert chmod 777 "${PWD}"/etc/cert -declare VERSION=${COHERENCE_VERSION:=22.06.10} +declare VERSION=${COHERENCE_VERSION:=22.06.11} declare TYPE=${COHERENCE_TYPE:=coherence-ce} declare REGISTRY=${DOCKER_REGISTRY:=ghcr.io/oracle} declare LABEL=clear From 6e6cfe35365f1b2daa6321e66a9e341677de7700 Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Thu, 23 Jan 2025 12:22:26 -0800 Subject: [PATCH 08/25] Bump Coherence version from 24.09 to 24.09.2. (#100) * Bump Coherence version from 24.09 to 24.09.2. --- .github/dependabot.yml | 10 ++++++++++ .github/workflows/node.js.yml | 6 +++--- .github/workflows/release.yml | 2 +- README.md | 6 +++--- 4 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..e6de33c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" \ No newline at end of file diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 3a00e9b..02e815e 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -28,7 +28,7 @@ jobs: fail-fast: false matrix: node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x] - coherence-version: [22.06.11, 24.09] + coherence-version: [22.06.11, 24.09.2] steps: - uses: actions/checkout@v3 @@ -49,7 +49,7 @@ jobs: # clean up - name: Archive production artifacts if: always() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: save-log-file + name: save-log-file-${{ matrix.node-version }}-${{ matrix.coherence-version }} path: logs-*.txt diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e5cccfe..456f028 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,7 +38,7 @@ jobs: - run: npm install # run unit tests - run: COHERENCE_VERSION=22.06.11 npm run test-cycle - - run: COHERENCE_VERSION=24.09 npm run test-cycle + - run: COHERENCE_VERSION=24.09.2 npm run test-cycle - run: npm install --no-save typedoc # generate dist which runs other tasks - run: npm run dist diff --git a/README.md b/README.md index ad4c533..3d59f40 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ the network transport. Before testing the library, you must ensure a Coherence cluster is available. For local development, we recommend using the Coherence CE Docker image; it contains everything necessary for the client to operate correctly. ```bash -docker run -d -p 1408:1408 ghcr.io/oracle/coherence-ce:24.09 +docker run -d -p 1408:1408 ghcr.io/oracle/coherence-ce:24.09.2 ``` or to save some keystrokes/time, use the included npm script, `coh-up` to start a two-member Cluster with the gRPC port at 1408" @@ -30,10 +30,10 @@ npm run coh-up ``` **Important!** When calling `coh-up` or `coh-down`, the LTS version of Coherence will be used (`22.06.11`). -To use a later Coherence version, such as `24.09`, prefix the calls with, or export `COHERENCE_VERSION=`. +To use a later Coherence version, such as `24.09.2`, prefix the calls with, or export `COHERENCE_VERSION=`. For example: ```bash -COHERENCE_VERSION=24.03 npm run coh-up +COHERENCE_VERSION=24.09.2 npm run coh-up ``` For more details on the image, see the [documentation](https://github.com/oracle/coherence/tree/master/prj/coherence-docker). From 79a40cea2384b339ec06c61d8290c8183d4611f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 14:30:30 -0800 Subject: [PATCH 09/25] Bump decimal.js from 10.4.2 to 10.4.3 (#107) Bumps [decimal.js](https://github.com/MikeMcl/decimal.js) from 10.4.2 to 10.4.3. - [Changelog](https://github.com/MikeMcl/decimal.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/MikeMcl/decimal.js/compare/v10.4.2...v10.4.3) --- updated-dependencies: - dependency-name: decimal.js dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 64a5a0d..5bccd24 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@oracle/coherence", - "version": "1.2.2-SNAPSHOT", + "version": "1.2.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@oracle/coherence", - "version": "1.2.2-SNAPSHOT", + "version": "1.2.3", "license": "UPL-1.0", "dependencies": { "@grpc/grpc-js": "^1.11", @@ -1314,9 +1314,10 @@ } }, "node_modules/decimal.js": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==" + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "license": "MIT" }, "node_modules/default-require-extensions": { "version": "3.0.0", @@ -4441,9 +4442,9 @@ "dev": true }, "decimal.js": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", - "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==" + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, "default-require-extensions": { "version": "3.0.0", From 5128b3d4f00cce113c011ef9e79d7e224ba0f5e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 14:32:07 -0800 Subject: [PATCH 10/25] Bump ts-node from 10.9.1 to 10.9.2 (#106) Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 10.9.1 to 10.9.2. - [Release notes](https://github.com/TypeStrong/ts-node/releases) - [Changelog](https://github.com/TypeStrong/ts-node/blob/main/development-docs/release-template.md) - [Commits](https://github.com/TypeStrong/ts-node/compare/v10.9.1...v10.9.2) --- updated-dependencies: - dependency-name: ts-node dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5bccd24..98883e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3098,10 +3098,11 @@ "dev": true }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -5771,9 +5772,9 @@ "dev": true }, "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", From c52d5e7a6753f1956d32fe904735800474fe9c9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 14:32:53 -0800 Subject: [PATCH 11/25] Bump typescript from 5.0.4 to 5.7.3 (#105) Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.0.4 to 5.7.3. - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/microsoft/TypeScript/compare/v5.0.4...v5.7.3) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 17 +++++++++-------- package.json | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 98883e3..b5b826f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "nyc": "^15.1", "source-map-support": "^0.5", "ts-node": "^10.9", - "typescript": "^5.0" + "typescript": "^5.7" } }, "node_modules/@ampproject/remapping": { @@ -3169,16 +3169,17 @@ } }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/uglify-js": { @@ -5816,9 +5817,9 @@ } }, "typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index 20f6702..0c21b07 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "nyc": "^15.1", "source-map-support": "^0.5", "ts-node": "^10.9", - "typescript": "^5.0" + "typescript": "^5.7" }, "scripts": { "grpc": "bin/npm-post-install.sh", From 03cf0083faa3467faa4c443a35862cdfc854e6b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 14:33:29 -0800 Subject: [PATCH 12/25] Bump mocha from 10.2.0 to 11.1.0 (#104) Bumps [mocha](https://github.com/mochajs/mocha) from 10.2.0 to 11.1.0. - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/main/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v10.2.0...v11.1.0) --- updated-dependencies: - dependency-name: mocha dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 818 ++++++++++++++++++++++++++++++++++------------ package.json | 2 +- 2 files changed, 613 insertions(+), 207 deletions(-) diff --git a/package-lock.json b/package-lock.json index b5b826f..4f4efe6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "glob-parent": "^6.0", "grpc_tools_node_protoc_ts": "^5.3", "grpc-tools": "^1.12", - "mocha": "^10.2", + "mocha": "^11.1", "nyc": "^15.1", "source-map-support": "^0.5", "ts-node": "^10.9", @@ -555,42 +555,107 @@ "node": ">=6" } }, - "node_modules/@grpc/proto-loader/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { "node": ">=12" } }, - "node_modules/@grpc/proto-loader/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@grpc/proto-loader/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/@istanbuljs/load-nyc-config": { @@ -769,6 +834,17 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -911,10 +987,11 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1023,6 +1100,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -1205,14 +1283,17 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/color-convert": { @@ -1288,12 +1369,13 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1347,14 +1429,22 @@ } }, "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.4.174", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.174.tgz", @@ -2010,6 +2100,22 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2142,10 +2248,11 @@ "dev": true }, "node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -2197,69 +2304,125 @@ } }, "node_modules/mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 14.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/mocha/node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "node_modules/mocha/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, "bin": { - "nanoid": "bin/nanoid.cjs" + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" } }, + "node_modules/mocha/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -2583,6 +2746,13 @@ "node": ">=8" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -2610,6 +2780,40 @@ "node": ">=8" } }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -2732,6 +2936,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -2834,10 +3039,11 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -2959,6 +3165,22 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -2970,6 +3192,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -3295,15 +3531,36 @@ "dev": true }, "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3349,30 +3606,30 @@ "dev": true }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-unparser": { @@ -3848,36 +4105,70 @@ "long": "^5.0.0", "protobufjs": "^7.2.5", "yargs": "^17.7.2" - }, - "dependencies": { - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + } + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" } }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "ansi-regex": "^6.0.1" } }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } } } }, @@ -4018,6 +4309,13 @@ "tar": "^6.1.11" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -4145,9 +4443,9 @@ } }, "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true }, "ansi-regex": { @@ -4355,13 +4653,12 @@ "dev": true }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, @@ -4429,12 +4726,12 @@ } }, "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "decamelize": { @@ -4470,9 +4767,15 @@ "dev": true }, "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, "electron-to-chromium": { @@ -4953,6 +5256,16 @@ "istanbul-lib-report": "^3.0.0" } }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5048,9 +5361,9 @@ "dev": true }, "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -5088,52 +5401,86 @@ "dev": true }, "mocha": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", - "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", "dev": true, "requires": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + }, + "dependencies": { + "foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "dependencies": { + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true } } }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "neo-async": { @@ -5384,6 +5731,12 @@ "release-zalgo": "^1.0.0" } }, + "package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5402,6 +5755,30 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } + } + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -5570,9 +5947,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -5668,6 +6045,17 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -5676,6 +6064,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -5904,9 +6301,9 @@ "dev": true }, "workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true }, "wrap-ansi": { @@ -5919,6 +6316,17 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -5949,25 +6357,23 @@ "dev": true }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" }, "yargs-unparser": { "version": "2.0.0", diff --git a/package.json b/package.json index 0c21b07..24810fd 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@types/google-protobuf": "^3.15", "glob-parent": "^6.0", "grpc_tools_node_protoc_ts": "^5.3", - "mocha": "^10.2", + "mocha": "^11.1", "nyc": "^15.1", "source-map-support": "^0.5", "ts-node": "^10.9", From f2a13999e98405b680f60e7cf6a53ef826e0ca80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 14:34:30 -0800 Subject: [PATCH 13/25] Bump actions/checkout from 3 to 4 (#102) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/node.js.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 02e815e..d00ffda 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -31,7 +31,7 @@ jobs: coherence-version: [22.06.11, 24.09.2] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 456f028..50bb7fc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ github.event.release.target_commitish }} # install Node.js From 3d5db2f845d5b7c24a4ee86b9cc437407eb6c9bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 14:34:51 -0800 Subject: [PATCH 14/25] Bump actions/setup-node from 3 to 4 (#101) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/node.js.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index d00ffda..af28ca0 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -33,7 +33,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} # install protoc diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 50bb7fc..4f750d9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: ref: ${{ github.event.release.target_commitish }} # install Node.js - name: Use Node.js 18.x - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 18.15.x # Specifies the registry, this field is required! From 259402af7aca9377c86c2029138c2354b344f53e Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Thu, 23 Jan 2025 14:43:36 -0800 Subject: [PATCH 15/25] Updates from npm audit. (#108) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4f4efe6..d0073ac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1355,10 +1355,11 @@ "dev": true }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4715,9 +4716,9 @@ "dev": true }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", From a282d243c2d5fe67448a4b88609bdecd3ced144d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 12:15:11 -0800 Subject: [PATCH 16/25] Bump google-protobuf and @types/google-protobuf (#112) Bumps [google-protobuf](https://github.com/protocolbuffers/protobuf-javascript) and [@types/google-protobuf](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/google-protobuf). These dependencies needed to be updated together. Updates `google-protobuf` from 3.21.2 to 3.21.4 - [Release notes](https://github.com/protocolbuffers/protobuf-javascript/releases) - [Changelog](https://github.com/protocolbuffers/protobuf-javascript/blob/main/protobuf_javascript_release.bzl) - [Commits](https://github.com/protocolbuffers/protobuf-javascript/compare/v3.21.2...v3.21.4) Updates `@types/google-protobuf` from 3.15.6 to 3.15.12 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/google-protobuf) --- updated-dependencies: - dependency-name: google-protobuf dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: "@types/google-protobuf" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index d0073ac..e40383f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -924,10 +924,11 @@ "dev": true }, "node_modules/@types/google-protobuf": { - "version": "3.15.6", - "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.6.tgz", - "integrity": "sha512-pYVNNJ+winC4aek+lZp93sIKxnXt5qMkuKmaqS3WGuTq0Bw1ZDYNBgzG5kkdtwcv+GmYJGo3yEg6z2cKKAiEdw==", - "dev": true + "version": "3.15.12", + "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz", + "integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "18.0.0", @@ -1725,9 +1726,10 @@ } }, "node_modules/google-protobuf": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", - "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", + "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==", + "license": "(BSD-3-Clause AND Apache-2.0)" }, "node_modules/graceful-fs": { "version": "4.2.10", @@ -4396,9 +4398,9 @@ "dev": true }, "@types/google-protobuf": { - "version": "3.15.6", - "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.6.tgz", - "integrity": "sha512-pYVNNJ+winC4aek+lZp93sIKxnXt5qMkuKmaqS3WGuTq0Bw1ZDYNBgzG5kkdtwcv+GmYJGo3yEg6z2cKKAiEdw==", + "version": "3.15.12", + "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz", + "integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==", "dev": true }, "@types/node": { @@ -4972,9 +4974,9 @@ "dev": true }, "google-protobuf": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", - "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.4.tgz", + "integrity": "sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==" }, "graceful-fs": { "version": "4.2.10", From 49965382a780d86c8728f8eb436489f2667a7d61 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 12:15:39 -0800 Subject: [PATCH 17/25] Bump grpc_tools_node_protoc_ts from 5.3.2 to 5.3.3 (#111) Bumps [grpc_tools_node_protoc_ts](https://github.com/agreatfool/grpc_tools_node_protoc_ts) from 5.3.2 to 5.3.3. - [Commits](https://github.com/agreatfool/grpc_tools_node_protoc_ts/commits) --- updated-dependencies: - dependency-name: grpc_tools_node_protoc_ts dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index e40383f..c1159ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1738,10 +1738,11 @@ "dev": true }, "node_modules/grpc_tools_node_protoc_ts": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.2.tgz", - "integrity": "sha512-7xPSeu8bwjcird3i9R5+9O4BF2Lhv9fMBdeobfUc2Bys9tSVtm/VB3WjTpKV78WlLYJyD94+wL/8hJqaMZ53Hw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.3.tgz", + "integrity": "sha512-M/YrklvVXMtuuj9kb42PxeouZhs7Ul+R4e/31XwrankUcKL8cQQP50Q9q+KEHGyHQaPt6VtKKsxMgLaKbCxeww==", "dev": true, + "license": "MIT", "dependencies": { "google-protobuf": "3.15.8", "handlebars": "4.7.7" @@ -4985,9 +4986,9 @@ "dev": true }, "grpc_tools_node_protoc_ts": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.2.tgz", - "integrity": "sha512-7xPSeu8bwjcird3i9R5+9O4BF2Lhv9fMBdeobfUc2Bys9tSVtm/VB3WjTpKV78WlLYJyD94+wL/8hJqaMZ53Hw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.3.tgz", + "integrity": "sha512-M/YrklvVXMtuuj9kb42PxeouZhs7Ul+R4e/31XwrankUcKL8cQQP50Q9q+KEHGyHQaPt6VtKKsxMgLaKbCxeww==", "dev": true, "requires": { "google-protobuf": "3.15.8", From 746307ab486c55864cac694eaded878fa54fcf99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 12:16:03 -0800 Subject: [PATCH 18/25] Bump @grpc/grpc-js from 1.11.3 to 1.12.5 (#110) Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) from 1.11.3 to 1.12.5. - [Release notes](https://github.com/grpc/grpc-node/releases) - [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.11.3...@grpc/grpc-js@1.12.5) --- updated-dependencies: - dependency-name: "@grpc/grpc-js" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index c1159ef..46798b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.2.3", "license": "UPL-1.0", "dependencies": { - "@grpc/grpc-js": "^1.11", + "@grpc/grpc-js": "^1.12", "@grpc/proto-loader": "^0.7", "decimal.js": "^10.4", "google-protobuf": "^3.21" @@ -526,9 +526,9 @@ } }, "node_modules/@grpc/grpc-js": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.11.3.tgz", - "integrity": "sha512-i9UraDzFHMR+Iz/MhFLljT+fCpgxZ3O6CxwGJ8YuNYHJItIHUzKJpW2LvoFZNnGPwqc9iWy9RAucxV0JoR9aUQ==", + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.5.tgz", + "integrity": "sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.7.13", @@ -4092,9 +4092,9 @@ } }, "@grpc/grpc-js": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.11.3.tgz", - "integrity": "sha512-i9UraDzFHMR+Iz/MhFLljT+fCpgxZ3O6CxwGJ8YuNYHJItIHUzKJpW2LvoFZNnGPwqc9iWy9RAucxV0JoR9aUQ==", + "version": "1.12.5", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.5.tgz", + "integrity": "sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==", "requires": { "@grpc/proto-loader": "^0.7.13", "@js-sdsl/ordered-map": "^4.4.2" diff --git a/package.json b/package.json index 24810fd..b40e3c6 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "repository": "https://github.com/oracle/coherence-js-client", "dependencies": { "@grpc/proto-loader": "^0.7", - "@grpc/grpc-js": "^1.11", + "@grpc/grpc-js": "^1.12", "google-protobuf": "^3.21", "decimal.js": "^10.4" }, From 78281c3ae4bec564e38488b37d86d024984bddc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 12:16:23 -0800 Subject: [PATCH 19/25] Bump decimal.js from 10.4.3 to 10.5.0 (#109) Bumps [decimal.js](https://github.com/MikeMcl/decimal.js) from 10.4.3 to 10.5.0. - [Changelog](https://github.com/MikeMcl/decimal.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/MikeMcl/decimal.js/compare/v10.4.3...v10.5.0) --- updated-dependencies: - dependency-name: decimal.js dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46798b5..efa95bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@grpc/grpc-js": "^1.12", "@grpc/proto-loader": "^0.7", - "decimal.js": "^10.4", + "decimal.js": "^10.5", "google-protobuf": "^3.21" }, "devDependencies": { @@ -1398,9 +1398,9 @@ } }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", "license": "MIT" }, "node_modules/default-require-extensions": { @@ -4745,9 +4745,9 @@ "dev": true }, "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==" }, "default-require-extensions": { "version": "3.0.0", diff --git a/package.json b/package.json index b40e3c6..c5edad7 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "@grpc/proto-loader": "^0.7", "@grpc/grpc-js": "^1.12", "google-protobuf": "^3.21", - "decimal.js": "^10.4" + "decimal.js": "^10.5" }, "devDependencies": { "grpc-tools": "^1.12", From 5e56dc4e67cff84da66d6950313ec77d6311fe84 Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Mon, 3 Feb 2025 23:29:20 -0800 Subject: [PATCH 20/25] Add support to lookup gRPC proxies using the Coherence NameService (#113) --- .github/workflows/{node.js.yml => build.yml} | 10 +- .github/workflows/discovery.yml | 68 +++ README.md | 40 +- etc/docker-compose-2-members.yaml | 1 + etc/jvm-args-clear.txt | 4 +- etc/jvm-args-tls.txt | 4 +- package.json | 1 + src/session.ts | 420 +++++++++++++++++-- src/util.ts | 4 +- test/discovery/resolver-tests.js | 77 ++++ test/session-tests.js | 32 +- 11 files changed, 612 insertions(+), 49 deletions(-) rename .github/workflows/{node.js.yml => build.yml} (89%) create mode 100644 .github/workflows/discovery.yml create mode 100644 test/discovery/resolver-tests.js diff --git a/.github/workflows/node.js.yml b/.github/workflows/build.yml similarity index 89% rename from .github/workflows/node.js.yml rename to .github/workflows/build.yml index af28ca0..52bc3d5 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -# Copyright 2020, 2023, Oracle Corporation and/or its affiliates. All rights reserved. +# Copyright 2020, 2025, Oracle Corporation and/or its affiliates. All rights reserved. # Licensed under the Universal Permissive License v 1.0 as shown at # https://oss.oracle.com/licenses/upl. @@ -6,7 +6,7 @@ # Coherence JavaScript Client GitHub Actions CI build. # --------------------------------------------------------------------------- -name: Node.js CI +name: JS Client Validation on: schedule: @@ -18,7 +18,7 @@ on: types: - opened branches: - - 'main' + - '*' jobs: build: @@ -28,7 +28,7 @@ jobs: fail-fast: false matrix: node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x] - coherence-version: [22.06.11, 24.09.2] + coherence-version: [22.06.11, 14.1.2-0-1, 24.09.2] steps: - uses: actions/checkout@v4 @@ -48,7 +48,7 @@ jobs: - run: COHERENCE_VERSION=${{ matrix.coherence-version }} npm run test-cycle-tls # clean up - name: Archive production artifacts - if: always() + if: failure() uses: actions/upload-artifact@v4 with: name: save-log-file-${{ matrix.node-version }}-${{ matrix.coherence-version }} diff --git a/.github/workflows/discovery.yml b/.github/workflows/discovery.yml new file mode 100644 index 0000000..89e1304 --- /dev/null +++ b/.github/workflows/discovery.yml @@ -0,0 +1,68 @@ +# Copyright 2025, Oracle Corporation and/or its affiliates. All rights reserved. +# Licensed under the Universal Permissive License v 1.0 as shown at +# https://oss.oracle.com/licenses/upl. + +# --------------------------------------------------------------------------- +# Coherence JavaScript Client GitHub Actions CI build. +# --------------------------------------------------------------------------- + +name: JS Client Discovery Validation + +on: + schedule: + - cron: "0 5 * * *" + push: + branches-ignore: + - ghpages + pull_request: + types: + - opened + branches: + - '*' +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + node-version: [20.x, 21.x, 22.x, 23.x] + coherence-version: [22.06.11, 14.1.2-0-1, 24.09.2] + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - run: curl -LO "https://github.com/protocolbuffers/protobuf/releases/download/v22.2/protoc-22.2-linux-x86_64.zip" + - run: unzip protoc-22.2-linux-x86_64.zip -d /tmp/grpc + - run: echo "/tmp/grpc/bin" >> $GITHUB_PATH + - run: npm install + - run: npm run compile + + - name: Run Coherence Server + shell: bash + run: | + export COHERENCE_VERSION=${{ matrix.coherence-version }} + curl -sL https://raw.githubusercontent.com/oracle/coherence-cli/main/scripts/install.sh | bash + cohctl version + cohctl set profile grpc-cluster1 -v "-Dcoherence.grpc.server.port=10000" -y + cohctl create cluster grpc-cluster1 -P grpc-cluster1 -r 1 -v ${{ matrix.coherence-version }} -y -a coherence-grpc-proxy + cohctl set profile grpc-cluster2 -v "-Dcoherence.grpc.server.port=10001" -y + cohctl create cluster grpc-cluster2 -P grpc-cluster2 -r 1 -H 30001 -v ${{ matrix.coherence-version }} -y -a coherence-grpc-proxy + sleep 20 + cohctl monitor health -n localhost:7574 -T 40 -w + + - name: Run resolver tests + shell: bash + run: | + npm run test-resolver + + - name: Archive production artifacts + if: failure() + uses: actions/upload-artifact@v4 + with: + name: save-log-file-${{ matrix.node-version }}-${{ matrix.coherence-version }} + path: ~/.cohctl/logs/*.*.log diff --git a/README.md b/README.md index 3d59f40..5121636 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ the network transport. * Registration of listeners to be notified of map mutations ### Requirements -* Coherence CE `22.06` or later (or equivalent non-open source editions) with a configured [gRPC Proxy](https://docs.oracle.com/en/middleware/standalone/coherence/14.1.1.2206/develop-remote-clients/using-coherence-grpc-server.html) +* Coherence CE versions `22.06`, `14.1.2-0-0`, `24.09` or later (or equivalent non-open source editions) with a configured [gRPC Proxy](https://docs.oracle.com/en/middleware/standalone/coherence/14.1.1.2206/develop-remote-clients/using-coherence-grpc-server.html) * Node `18.15.x` or later * NPM `9.x` or later @@ -40,7 +40,7 @@ For more details on the image, see the [documentation](https://github.com/oracle ### Declare Your Dependency -To use the Coherence gRPC JavaScript Client, simply declare it as a dependency in your +To use the JavaScript Client for Oracle Coherence, simply declare it as a dependency in your project's `package.json`: ``` ... @@ -52,8 +52,8 @@ project's `package.json`: ### Compatibility with Java Types The following table provides a listing of mappings between Java types and Javascript types when working with -Coherence `23.09` or later. If using Coherence `22.06.x`, these types will be returned as Number. It is recommended -using `23.09` if intentionally using `java.math.BigInteger` or `java.math.BigDecimal` as part of your application. +Coherence `24.09` or later. If using Coherence `22.06.x`, these types will be returned as Number. It is recommended +using `24.09` if intentionally using `java.math.BigInteger` or `java.math.BigDecimal` as part of your application. | Java Type | JavascriptType | |----------------------|------------------------| @@ -68,7 +68,7 @@ using `23.09` if intentionally using `java.math.BigInteger` or `java.math.BigDec #### Establishing a Session The Coherence uses the concept of a `Session` to manage a set of related Coherence resources, -such as maps and/or caches. When using the Coherence JavaScript Client, a `Session` connects to a specific +such as maps and/or caches. When using the JavaScript Client for Oracle Coherence, a `Session` connects to a specific gRPC endpoint and uses a specific serialization format to marshal requests and responses. This means that different sessions using different serializers may connect to the same server endpoint. Typically, for efficiency the client and server would be configured to use matching serialization formats to avoid @@ -76,7 +76,7 @@ deserialization of data on the server, but this does not have to be the case. If serializer for the server-side caches, it must be able to deserialize the client's requests, so there must be a serializer configured on the server to match that used by the client. -> NOTE: Currently, the Coherence JavaScript client only supports JSON serialization +> NOTE: Currently, the JavaScript Client for Oracle Coherence only supports JSON serialization A `Session` is constructed using an `Options` instance, or a generic object with the same keys and values. @@ -126,6 +126,34 @@ const opts = new Options({address: 'example.com:4444'}) let session = new Session(opts) ``` +As of v1.2.3 of the JavaScript Client for Oracle Coherence, it's now possible to use the Coherence +NameService to lookup gRPC Proxy endpoints. The format to enable this feature is +`coherence:///([:port]|[/cluster-name]|[:port/cluster-name])` + +For example: + * `coherence:///localhost` will connect to the name service bound to a local coherence cluster on port `7574` (the default Coherence cluster port). + * `coherence:///localhost:8000` will connect to the name service bound to a local coherence cluster on port `8000`. + * `coherence:///localhost/remote-cluster` will connect to the name service bound to a local coherence cluster on port `7574` (the default Coherence cluster port) and look up the name service for the given cluster name. Note: this typically means both clusters have a local member sharing a cluster port. + * `coherence:///localhost:8000/remote-cluster` will connect to the name service bound to a local coherence cluster on port `8000` and look up the name service for the given cluster name. Note: this typically means both clusters have a local member sharing a cluster port. + +While this is useful for local development, this may have limited uses in a production environment. For example, +Coherence running within a container with the cluster port (`7574`) exposed so external clients may connect. The +lookup will fail to work for the client as the Coherence name service return a private network address which +won't resolve. Lastly, if connecting to a cluster that has multiple proxies bound to different ports, gRPC, by default, +will use the first address returned by the resolver. It is possible to enable round-robin load balancing by including +a custom channel option when creating the session: + +```typescript +const { Session } = require('@oracle/coherence') + +const opts = new Options({address: 'coherence:///localhost', + channelOptions: {'grpc.service_config': JSON.stringify({ loadBalancingConfig: [{ round_robin: {} }], })}}) + +let session = new Session(opts) +``` + +*NOTE* The Coherence NameService feature requires Node `20.x` or later. + It's also possible to control the default address the session will bind to by providing an address via the `COHERENCE_SERVER_ADDRESS` environment variable. The format of the value would be the same as if you configured it programmatically as the above example shows. diff --git a/etc/docker-compose-2-members.yaml b/etc/docker-compose-2-members.yaml index fa3b2dc..860631b 100644 --- a/etc/docker-compose-2-members.yaml +++ b/etc/docker-compose-2-members.yaml @@ -19,6 +19,7 @@ services: - "9612:9612" - "8080:8080" - "6676:6676" + - "7574:7574" volumes: - .:/args - ./cert:/certs diff --git a/etc/jvm-args-clear.txt b/etc/jvm-args-clear.txt index 232a58c..2542bf4 100644 --- a/etc/jvm-args-clear.txt +++ b/etc/jvm-args-clear.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2023, Oracle and/or its affiliates. +# Copyright (c) 2023, 2025, Oracle and/or its affiliates. # # Licensed under the Universal Permissive License v 1.0 as shown at # https://oss.oracle.com/licenses/upl. @@ -6,4 +6,4 @@ -Xms1g -Xmx1g -Dcoherence.log.level=9 --Dcoherence.io.json.debug=true +-Dcoherence.io.json.debug=false diff --git a/etc/jvm-args-tls.txt b/etc/jvm-args-tls.txt index 14ccb41..63bb284 100644 --- a/etc/jvm-args-tls.txt +++ b/etc/jvm-args-tls.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2023, Oracle and/or its affiliates. +# Copyright (c) 2023, 2025, Oracle and/or its affiliates. # # Licensed under the Universal Permissive License v 1.0 as shown at # https://oss.oracle.com/licenses/upl. @@ -6,7 +6,7 @@ -Xms1g -Xmx1g -Dcoherence.log.level=9 --Dcoherence.io.json.debug=true +-Dcoherence.io.json.debug=false -Dcoherence.grpc.server.socketprovider=tls-files -Dcoherence.security.key=/certs/star-lord.pem -Dcoherence.security.cert=/certs/star-lord.crt diff --git a/package.json b/package.json index c5edad7..9d090fa 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "test": "npm run compile && npm exec mocha 'test/**.js' --recursive --exit", "test-cycle": "bin/test-cycle.sh -c", "test-cycle-tls": "bin/test-cycle.sh -s", + "test-resolver": "npm run compile && npm exec mocha test/discovery/resolver-tests.js --recursive --exit", "coh-up": "bin/docker-utils.sh -u", "coh-down": "bin/docker-utils.sh -d", "coverage": "nyc mocha 'test/**.js' --exit", diff --git a/src/session.ts b/src/session.ts index 9eb6fcc..8718506 100644 --- a/src/session.ts +++ b/src/session.ts @@ -1,18 +1,29 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. + * Copyright (c) 2020, 2025, Oracle and/or its affiliates. * * Licensed under the Universal Permissive License v 1.0 as shown at * https://oss.oracle.com/licenses/upl. */ -import {CallOptions, Channel, ChannelCredentials, credentials} from '@grpc/grpc-js' +import { + CallOptions, + Channel, + ChannelCredentials, + ChannelOptions, + credentials, + experimental, Metadata, + status, +} from '@grpc/grpc-js' import {EventEmitter} from 'events' import {PathLike, readFileSync} from 'fs' import {event} from './events' import {NamedCache, NamedCacheClient, NamedMap} from './named-cache-client' import {util} from './util' -import {ConnectivityState} from "@grpc/grpc-js/build/src/connectivity-state"; +import {ConnectivityState} from "@grpc/grpc-js/build/src/connectivity-state" +import {registerResolver} from "@grpc/grpc-js/build/src/resolver" +import {Endpoint} from "@grpc/grpc-js/build/src/subchannel-address" +import * as net from "node:net" /** * Supported {@link Session} options. @@ -21,7 +32,7 @@ export class Options { /** * Regular expression for basic validation of IPv4 address. */ - private static readonly ADDRESS_REGEXP = RegExp('\\S+:\\d{1,5}$') + private static readonly ADDRESS_REGEXP = RegExp('^(coherence:///\\S+|coherence:\\S+:\\d{1,5}|coherence:///\\S+:\\d{1,5}/[a-zA-Z0-9]+|coherence:///\\S+/[a-zA-Z0-9]+|\\S+:\\d{1,5})$') /** * Address of the target Coherence cluster. If not explicitly set, this defaults to {@link Session.DEFAULT_ADDRESS}. @@ -74,7 +85,7 @@ export class Options { /** * Flag indicating mutations are no longer allowed. */ - private locked: boolean = false; + private locked: boolean = false /** * Optional TLS configuration. @@ -91,17 +102,24 @@ export class Options { } /** - * Set the IPv4 host address and port in the format of `[host]:[port]` + * Set the IPv4 host address and port in the format of `[host]:[port]`. + *

+ * If the Coherence cluster port is available, it's possible to uss + * the Coherence name service in order to resolve and connect to the available + * gRPC proxies. If using this functionality, the format is + * `coherence:///([:port]|[/cluster-name]|[:port/cluster-name])`. * * @param address the IPv4 host address and port in the format of `[host]:[port]` + * or the Coherence name service format of + * `coherence:///([:port]|[/cluster-name]|[:port/cluster-name])` */ set address (address: string) { if (this.locked) { - return; + return } // ensure address is sane if (!Options.ADDRESS_REGEXP.test(address)) { - throw new Error('Expected address format is \':\'. Configured: ' + address) + throw new Error('Expected address format is \':\' or \'coherence:([:port]|[/cluster-name]|[:port/cluster-name])\'. Configured: ' + address) } this._address = address @@ -123,7 +141,7 @@ export class Options { */ set requestTimeoutInMillis (timeout: number) { if (this.locked) { - return; + return } if (timeout <= 0) { timeout = Number.POSITIVE_INFINITY @@ -137,7 +155,7 @@ export class Options { * @return the ready timeout in `milliseconds` */ get readyTimeoutInMillis(): number { - return this._readyTimeoutInMillis; + return this._readyTimeoutInMillis } /** @@ -147,12 +165,12 @@ export class Options { */ set readyTimeoutInMillis(timeout: number) { if (this.locked) { - return; + return } if (timeout <= 0) { timeout = Number.POSITIVE_INFINITY } - this._readyTimeoutInMillis = timeout; + this._readyTimeoutInMillis = timeout } /** @@ -181,7 +199,7 @@ export class Options { * Return the `gRPC` `ChannelOptions`. */ get channelOptions(): { [p: string]: any } { - return this._channelOptions; + return this._channelOptions } /** @@ -193,9 +211,9 @@ export class Options { */ set channelOptions(value: { [p: string]: any }) { if (this.locked) { - return; + return } - this._channelOptions = value; + this._channelOptions = value } /** @@ -233,7 +251,7 @@ export class Options { */ set callOptions (callOptions: () => CallOptions) { if (this.locked) { - return; + return } this._callOptions = callOptions } @@ -252,7 +270,7 @@ export class Options { * @hidden */ lock(): void { - this.locked = true; + this.locked = true this.tls.lock() } @@ -340,7 +358,7 @@ export class TlsOptions { */ set enabled (value: boolean) { if (this.locked) { - return; + return } this._enabled = value } @@ -361,7 +379,7 @@ export class TlsOptions { */ set caCertPath (value: PathLike | undefined) { if (this.locked) { - return; + return } this._caCertPath = value } @@ -382,7 +400,7 @@ export class TlsOptions { */ set clientCertPath (value: PathLike | undefined) { if (this.locked) { - return; + return } this._clientCertPath = value } @@ -403,7 +421,7 @@ export class TlsOptions { */ set clientKeyPath (value: PathLike | undefined) { if (this.locked) { - return; + return } this._clientKeyPath = value } @@ -507,6 +525,9 @@ export class Session */ constructor (sessionOptions?: Options | object) { super() + + registerResolver("coherence", CoherenceResolver) + if (sessionOptions) { this._sessionOptions = Object.assign(new Options(), sessionOptions) // @ts-ignore -- added for 'tls' index access @@ -545,15 +566,15 @@ export class Session // emit the `disconnect` event. // When transitioning from any other state, // other than SHUTDOWN, to READY, emit the 'reconnect' event. - let connected: boolean = false; - let firstConnect: boolean = true; - let lastState: number = 0; + let connected: boolean = false + let firstConnect: boolean = true + let lastState: number = 0 let callback = async () => { - let state = channel.getConnectivityState(false); - lastState = state; + let state = channel.getConnectivityState(false) + lastState = state if (state === ConnectivityState.SHUTDOWN) { // nothing to do - return; + return } else if (state === ConnectivityState.READY) { if (!firstConnect && !connected) { this.emit(event.SessionLifecycleEvent.RECONNECTED) @@ -566,7 +587,7 @@ export class Session } else { if (connected) { this.emit(event.SessionLifecycleEvent.DISCONNECTED) - connected = false; + connected = false } } let deadline = Number.POSITIVE_INFINITY @@ -836,3 +857,346 @@ export class Session }) } } + +enum ResolveState { + CHANNEL, + CONNECTION, + DONE, + INITIAL, + LOOKUP, +} + +class LookupState { + state: ResolveState = ResolveState.INITIAL + query: string + result?: string + channel?: Buffer + resolve?: (value: (PromiseLike | void)) => void; + reject?: (reason?: any) => void + waitResolve: Promise + + constructor(query: string) { + this.query = query + this.waitResolve = new Promise((resolve, reject) => { + this.resolve = resolve + this.reject = reject + }) + } +} + +/** + * INTERNAL: Implementation of the gRPC Resolver that will resolve gRPC proxies endpoints + * using the Coherence name service. + */ +export class CoherenceResolver implements experimental.Resolver { + + private static readonly MULTIPLEXED_SOCKET = Buffer.from([90, 193, 224, 0]) + private static readonly NAME_SERVICE_SUB_PORT = Buffer.from([0, 0, 0, 3]) + private static readonly CONNECTION_OPEN = Buffer.from([ + 0, 1, 2, 0, 66, 0, 1, 14, 0, 0, 66, 166, 182, 159, 222, 178, 81, + 1, 65, 227, 243, 228, 221, 15, 2, 65, 143, 246, 186, 153, 1, 3, + 65, 248, 180, 229, 242, 4, 4, 65, 196, 254, 220, 245, 5, 5, 65, 215, + 206, 195, 141, 7, 6, 65, 219, 137, 220, 213, 10, 64, 2, 110, 3, + 93, 78, 87, 2, 17, 77, 101, 115, 115, 97, 103, 105, 110, 103, 80, + 114, 111, 116, 111, 99, 111, 108, 2, 65, 2, 65, 2, 19, 78, 97, 109, + 101, 83, 101, 114, 118, 105, 99, 101, 80, 114, 111, 116, 111, 99, + 111, 108, 2, 65, 1, 65, 1, 5, 160, 2, 0, 0, 14, 0, 0, 66, 174, 137, + 158, 222, 178, 81, 1, 65, 129, 128, 128, 240, 15, 5, 65, 152, 159, + 129, 128, 8, 6, 65, 147, 158, 1, 64, 1, 106, 2, 110, 3, 106, 4, 113, + 5, 113, 6, 78, 8, 67, 108, 117, 115, 116, 101, 114, 66, 9, 78, 9, 108, + 111, 99, 97, 108, 104, 111, 115, 116, 10, 78, 5, 50, 48, 50, 51, 51, 12, + 78, 16, 67, 111, 104, 101, 114, 101, 110, 99, 101, 67, 111, 110, 115, + 111, 108, 101, 64, 64, + ]) + private static readonly CHANNEL_OPEN = Buffer.from([ + 0, 11, 2, 0, 66, 1, 1, 78, 19, 78, 97, 109, 101, 83, 101, 114, 118, + 105, 99, 101, 80, 114, 111, 116, 111, 99, 111, 108, 2, 78, 11, 78, + 97, 109, 101, 83, 101, 114, 118, 105, 99, 101, 64, + ]) + private static readonly NS_LOOKUP_REQ_ID = Buffer.from([1, 1, 0, 66, 0, 1, 78]) + private static readonly REQ_END_MARKER = Buffer.from([64]) + + private static readonly NAME_SERVICE: string = 'NameService/string' + private static readonly CLUSTER_NS_LOOKUP_PREFIX: string = `${CoherenceResolver.NAME_SERVICE}/Cluster/foreign/` + private static readonly CLUSTER_NS_LOOKUP_SUFFIX: string = '/NameService/localPort' + private static readonly GRPC_PROXY_LOOKUP: string = `${CoherenceResolver.NAME_SERVICE}/$GRPC:GrpcProxy` + + private readonly target: experimental.GrpcUri + private readonly listener: experimental.ResolverListener + + constructor ( + target: experimental.GrpcUri, + listener: experimental.ResolverListener, + channelOptions: ChannelOptions + ) { + this.target = target + this.listener = listener + } + + // ----- experimental.Resolver interface ---------------------------------- + + destroy(): void { + } + + updateResolution(): void { + let [host, port, clusterName] = CoherenceResolver.parseConn(this.target.path) + let socket + // check for foreign cluster reference + if (clusterName.length > 0) { + let clusterNameState: LookupState = this.createForeignLookupState(clusterName) + socket = this.createSocket(clusterNameState) + socket.connect(parseInt(port), host) + clusterNameState.waitResolve.then(() => { + if (clusterNameState.result) { + port = clusterNameState.result + this.runLookup(this.createGrpcLookupState(), host, parseInt(port)) + } else { + this.listener.onError({ + code: status.UNAVAILABLE, + details: `Unable to resolve an address from ${JSON.stringify(this.target)}`, + metadata: new Metadata(), + }) + } + }).catch(reason => { + console.log(`Unable to resolve an address from ${JSON.stringify(this.target)}: ${reason}`) + this.listener.onError({ + code: status.UNAVAILABLE, + details: reason, + metadata: new Metadata(), + }) + }) + } else { + this.runLookup(this.createGrpcLookupState(), host, parseInt(port)) + } + } + + static getDefaultAuthority(target: experimental.GrpcUri): string { + let [host] = this.parseConn(target.path) + return host + } + + // ----- internal --------------------------------------------------------- + + createForeignLookupState(clusterName: string): LookupState { + return new LookupState(`${CoherenceResolver.CLUSTER_NS_LOOKUP_PREFIX}${clusterName}${CoherenceResolver.CLUSTER_NS_LOOKUP_SUFFIX}`) + } + + createGrpcLookupState(): LookupState { + return new LookupState(CoherenceResolver.GRPC_PROXY_LOOKUP) + } + + static parseConn(path: string): [string, string, string] { + let parts: string[] = path.split(/[/:]/) + const host = parts[0] + let port = '7574' + let clusterName = '' + if (parts.length === 2) { + let p = parseInt(parts[1]) + if (isNaN(p)) { + // this is a cluster reference using the default port + clusterName = parts[1] + } + } else if (parts.length === 3) { + port = parts[1] + clusterName = parts[2] + } + return [host, port, clusterName] + } + + private runLookup(state: LookupState, host: string, port: number): void { + let socket: net.Socket = this.createSocket(state) + socket.connect(port, host) + state.waitResolve.then(() => { + let ep: Endpoint[] = this.parseLookupResult(state) + if (ep.length > 0) { + this.listener.onSuccessfulResolution(ep, null, null, null, {}) + } else { + this.listener.onError({ + code: status.UNAVAILABLE, + details: `Unable to resolve an address from ${JSON.stringify(this.target)}`, + metadata: new Metadata(), + }) + } + }) + } + + private parseLookupResult(state: LookupState): Endpoint[] { + if (state.result) { + const parts: string[] = state.result.substring(1, state.result.length - 1).split(', ') + if (parts) { + const iterCnt: number = parts.length / 2 + return Array.from({length: iterCnt}, (_, i) => ({ + addresses: [{ + port: parseInt(parts[i * 2 + 1]), + host: parts[i * 2], + }], + })) + } else { + return [] + } + } + return [] + } + + private static readResponse(socket: net.Socket): Buffer { + const length: number = CoherenceResolver.readPackedInt(socket) + return socket.read(length) + } + + private static writePackedInt(n: number): Buffer { + let result: Buffer = Buffer.alloc(0) + let b = 0 + + if (n < 0) { + b = 0x40 + n = ~n // bitwise negation + } + + b |= n & 0x3F + n >>= 6 + + while (n !== 0) { + result = Buffer.concat([result, Buffer.from([b | 0x80])]) + b = n & 0x7F + n >>= 7 + } + + return Buffer.concat([result, Buffer.from([b])]) + } + + private static readPackedInt(socket: net.Socket): number { + let bits = 6 + let bytes: Buffer = socket.read(1) + let byte = bytes[0] + let negative: boolean = (byte & 0x40) !== 0 + let result = (byte & 0x3F) + + while ((byte & 0x80) !== 0) { + bytes = socket.read(1) + byte = bytes[0] + result |= (byte & 0x7F) << bits + bits += 7 + } + + return negative ? ~result : result + } + + private static readPackedIntFromBuffer(bytes: Buffer): [number, number] { + let bits = 6 + + if (bytes.length > 7) { + let byte = bytes ? bytes[6] : 0 + let negative: boolean = (byte & 0x40) !== 0 + let result = (byte & 0x3F) + + while ((byte & 0x80) !== 0) { + byte = bytes ? bytes[7] : 0 + result |= (byte & 0x7F) << bits + bits += 7 + } + + return [negative ? ~result : result, bits] + } + return [0, bits] + } + + private static sendConnectionOpen(socket: net.Socket) { + socket.write(CoherenceResolver.MULTIPLEXED_SOCKET) + socket.write(CoherenceResolver.NAME_SERVICE_SUB_PORT) + socket.write(CoherenceResolver.writePackedInt(CoherenceResolver.CONNECTION_OPEN.length)) + socket.write(CoherenceResolver.CONNECTION_OPEN) + } + + private static sendChannelOpen(socket: net.Socket) { + socket.write(CoherenceResolver.writePackedInt(CoherenceResolver.CHANNEL_OPEN.length)) + socket.write(CoherenceResolver.CHANNEL_OPEN) + } + + private static sendLookup(socket: net.Socket, channel: Buffer, query: string) { + const request = Buffer.concat([ + channel, + CoherenceResolver.NS_LOOKUP_REQ_ID, + CoherenceResolver.writePackedInt(query.length), + Buffer.from(query), + CoherenceResolver.REQ_END_MARKER, + ]) + + socket.write(CoherenceResolver.writePackedInt(request.length)) + socket.write(request) + } + + // Read a string from the response + private static readString(data: Buffer): string { + let [len, bits] = CoherenceResolver.readPackedIntFromBuffer(data) + return data.subarray(7 + (bits / 7), 7 + (bits / 7) + len).toString() + } + + private createSocket(state: LookupState): net.Socket { + let socket = new net.Socket() + + socket.setNoDelay(true) + socket.setTimeout(10 * 1000) // Set timeout + + socket.on("connect", () => { + CoherenceResolver.sendConnectionOpen(socket) + state.state = ResolveState.CONNECTION + } + ) + + socket.on('error', err => { + state.reject!(err) + }) + + socket.on('readable', () => { + switch (state.state) { + case ResolveState.DONE: + return + + case ResolveState.CONNECTION: { + while (socket.read() !== null) {} // consume the open connection response + + // open the remote channel + CoherenceResolver.sendChannelOpen(socket) + + // transition read state + state.state = ResolveState.CHANNEL + + break + } + + case ResolveState.CHANNEL: { + let msg: Buffer = CoherenceResolver.readResponse(socket) + + state.channel = msg.subarray(8, 8 + msg.length - 9) + + if (!state.channel) { + state.state = ResolveState.DONE + state.reject!("Unable to parse channel from response") + } + + CoherenceResolver.sendLookup(socket, state.channel, state.query) + + // transition read state + state.state = ResolveState.LOOKUP + + break + } + + case ResolveState.LOOKUP: { + let msg = CoherenceResolver.readResponse(socket) + msg = msg.subarray(state.channel!.length + 1) + state.result = CoherenceResolver.readString(msg) + socket.destroy() + if (state.result.length > 0) { + state.resolve!() // signal caller, resolution completed + } else { + state.reject!("Failure to parse lookup response") + } + } + } + }) + + return socket + } +} + diff --git a/src/util.ts b/src/util.ts index 7a23ef4..7b51985 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, 2023, Oracle and/or its affiliates. + * Copyright (c) 2022, 2025, Oracle and/or its affiliates. * * Licensed under the Universal Permissive License v 1.0 as shown at * https://oss.oracle.com/licenses/upl. @@ -1585,7 +1585,7 @@ export namespace util { * When Coherence serializes a type, it populates the `@class` metadata with the type alias name, which * can be used to reconstruct the Java class running in another VM, or in our case reconstruct a similar * object in Javascript. Using 1BigInt` as an example; using a TypeHandler the BigInt can be deserialized - * to JSON in the required fashion in order to have a BigInteger created in Coherence and vice-versa. + * to JSON in the required fashion in order to have a BigInteger created in Coherence and vice versa. */ export abstract class TypeHandler { protected readonly _type: string diff --git a/test/discovery/resolver-tests.js b/test/discovery/resolver-tests.js new file mode 100644 index 0000000..4f42741 --- /dev/null +++ b/test/discovery/resolver-tests.js @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2025, Oracle and/or its affiliates. + * + * Licensed under the Universal Permissive License v 1.0 as shown at + * https://oss.oracle.com/licenses/upl. + */ + +const { CoherenceResolver, Session } = require('../../lib') +const assert = require('assert').strict +const { describe, it } = require('mocha'); + +describe('CoherenceResolver Test Suite (unit/IT)', () => { + describe('A CoherenceResolver', () => { + + function createListener(done, expectedPort) { + return { + onSuccessfulResolution: ( + addressList, + serviceConfig, + serviceConfigError, + configSelector, + attributes + ) => { + try { + assert.equal(addressList.length, 1) + assert.equal(addressList[0].addresses[0].host, '127.0.0.1') + assert.equal(addressList[0].addresses[0].port, expectedPort) + done() + } catch (error) { + done(error) + } + }, + onError(error) { + done(new Error(`Unexpected error resolving: ${JSON.stringify(error)}`)) + } + } + } + + it('should parse and resolve the connection format \'coherence:///[host]\'', (done) => { + const resolver = new CoherenceResolver({scheme: 'coherence', path: 'localhost'}, createListener(done, 10000), null) + resolver.updateResolution() + }) + + it('should parse and resolve the connection format \'coherence:///[host]:[port]\'', (done) => { + const resolver = new CoherenceResolver({scheme: 'coherence', path: 'localhost:7574'}, createListener(done, 10000), null) + resolver.updateResolution() + }) + + it('should parse and resolve the connection format \'coherence:///[host]:[clusterName]\'', (done) => { + const resolver = new CoherenceResolver({scheme: 'coherence', path: 'localhost/grpc-cluster2'}, createListener(done, 10001), null) + resolver.updateResolution() + }) + + it('should parse and resolve the connection format \'coherence:///[host]:[port]:[clusterName]\'', (done) => { + const resolver = new CoherenceResolver({scheme: 'coherence', path: 'localhost:7574/grpc-cluster2'}, createListener(done, 10001), null) + resolver.updateResolution() + }) + }) + + describe('A Session', () => { + it('should be able to resolve the gRPC Proxy', async () => { + const session = new Session({address: 'coherence:///localhost'}) + const cache = session.getCache('test') + await cache.set('a', 'b') + assert.equal(await cache.get('a'), 'b') + await session.close() + }) + + it('should be able to resolve the gRPC Proxy of a foreign cluster', async () => { + const session = new Session({address: 'coherence:///localhost/grpc-cluster2'}) + const cache = session.getCache('test') + await cache.set('a', 'b') + assert.equal(await cache.get('a'), 'b') + await session.close() + }) + }) +}) \ No newline at end of file diff --git a/test/session-tests.js b/test/session-tests.js index bd6c59c..2144202 100644 --- a/test/session-tests.js +++ b/test/session-tests.js @@ -1,14 +1,13 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. + * Copyright (c) 2020, 2025, Oracle and/or its affiliates. * * Licensed under the Universal Permissive License v 1.0 as shown at - * http://oss.oracle.com/licenses/upl. + * https://oss.oracle.com/licenses/upl. */ const { event, Session } = require('../lib') const assert = require('assert').strict const { describe, it } = require('mocha'); -const path = require('path') describe('Session Tests Suite (unit/IT)', () => { describe('Session Unit Test Suite', () => { @@ -29,7 +28,9 @@ describe('Session Tests Suite (unit/IT)', () => { assert.equal(session.options.tls.clientKeyPath, undefined) } - assert.equal(session.address, Session.DEFAULT_ADDRESS) + if (!process.env.COHERENCE_SERVER_ADDRESS) { + assert.equal(session.address, Session.DEFAULT_ADDRESS) + } assert.equal(session.options.requestTimeoutInMillis, 60000) assert.equal(session.options.format, Session.DEFAULT_FORMAT) }) @@ -65,6 +66,29 @@ describe('Session Tests Suite (unit/IT)', () => { describe('Session IT Test Suite', () => { describe('A Session', () => { + it('should not allow invalid addresses', () => { + assert.throws(() => new Session({address: 'localhost'})) + assert.throws(() => new Session({address: 'localhost:801a'})) + assert.throws(() => new Session({address: 'localhost:800000'})) + assert.throws(() => new Session({address: 'localhost:8000:'})) + assert.throws(() => new Session({address: 'localhost:8000:test'})) + assert.throws(() => new Session({address: 'coherence'})) + assert.throws(() => new Session({address: 'coherence:'})) + assert.throws(() => new Session({address: 'coherence:/'})) + assert.throws(() => new Session({address: 'coherence://'})) + assert.throws(() => new Session({address: 'coherence://localhost'})) + // assert.throws(() => new Session({address: 'coherence:localhost:8080:'})) + // assert.throws(() => new Session({address: 'coherence:localhost:'})) + }) + + it('should allow valid addresses', () => { + assert.doesNotThrow(() => new Session({address: 'localhost:8080'})) + assert.doesNotThrow(() => new Session({address: 'coherence:///localhost'})) + assert.doesNotThrow(() => new Session({address: 'coherence:///localhost:8080'})) + assert.doesNotThrow(() => new Session({address: 'coherence:///localhost:test'})) + assert.doesNotThrow(() => new Session({address: 'coherence:///localhost:8080:test'})) + }) + it('should not have active sessions upon creation', async () => { const sess = new Session() From dbe78acb96875d9b97211f1e2fa652bed2bc16c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 08:18:12 -0800 Subject: [PATCH 21/25] Bump @grpc/grpc-js from 1.12.5 to 1.12.6 (#114) Bumps [@grpc/grpc-js](https://github.com/grpc/grpc-node) from 1.12.5 to 1.12.6. - [Release notes](https://github.com/grpc/grpc-node/releases) - [Commits](https://github.com/grpc/grpc-node/compare/@grpc/grpc-js@1.12.5...@grpc/grpc-js@1.12.6) --- updated-dependencies: - dependency-name: "@grpc/grpc-js" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index efa95bf..d5a5e65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -526,9 +526,9 @@ } }, "node_modules/@grpc/grpc-js": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.5.tgz", - "integrity": "sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==", + "version": "1.12.6", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.6.tgz", + "integrity": "sha512-JXUj6PI0oqqzTGvKtzOkxtpsyPRNsrmhh41TtIz/zEB6J+AUiZZ0dxWzcMwO9Ns5rmSPuMdghlTbUuqIM48d3Q==", "license": "Apache-2.0", "dependencies": { "@grpc/proto-loader": "^0.7.13", @@ -4092,9 +4092,9 @@ } }, "@grpc/grpc-js": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.5.tgz", - "integrity": "sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==", + "version": "1.12.6", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.6.tgz", + "integrity": "sha512-JXUj6PI0oqqzTGvKtzOkxtpsyPRNsrmhh41TtIz/zEB6J+AUiZZ0dxWzcMwO9Ns5rmSPuMdghlTbUuqIM48d3Q==", "requires": { "@grpc/proto-loader": "^0.7.13", "@js-sdsl/ordered-map": "^4.4.2" From 44fac9ed3a2d94080ff09725027b01f2dbc8a6de Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Thu, 6 Feb 2025 10:22:23 -0800 Subject: [PATCH 22/25] Bump Coherence from 24.09.2 to 24.09.3. (#115) --- .github/workflows/build.yml | 2 +- .github/workflows/discovery.yml | 2 +- .github/workflows/release.yml | 2 +- README.md | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 52bc3d5..553ef70 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,7 +28,7 @@ jobs: fail-fast: false matrix: node-version: [18.x, 19.x, 20.x, 21.x, 22.x, 23.x] - coherence-version: [22.06.11, 14.1.2-0-1, 24.09.2] + coherence-version: [22.06.11, 14.1.2-0-1, 24.09.3] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/discovery.yml b/.github/workflows/discovery.yml index 89e1304..4e82503 100644 --- a/.github/workflows/discovery.yml +++ b/.github/workflows/discovery.yml @@ -28,7 +28,7 @@ jobs: fail-fast: false matrix: node-version: [20.x, 21.x, 22.x, 23.x] - coherence-version: [22.06.11, 14.1.2-0-1, 24.09.2] + coherence-version: [22.06.11, 14.1.2-0-1, 24.09.3] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4f750d9..ce8d950 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,7 +38,7 @@ jobs: - run: npm install # run unit tests - run: COHERENCE_VERSION=22.06.11 npm run test-cycle - - run: COHERENCE_VERSION=24.09.2 npm run test-cycle + - run: COHERENCE_VERSION=24.09.3 npm run test-cycle - run: npm install --no-save typedoc # generate dist which runs other tasks - run: npm run dist diff --git a/README.md b/README.md index 5121636..a385bc1 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ the network transport. Before testing the library, you must ensure a Coherence cluster is available. For local development, we recommend using the Coherence CE Docker image; it contains everything necessary for the client to operate correctly. ```bash -docker run -d -p 1408:1408 ghcr.io/oracle/coherence-ce:24.09.2 +docker run -d -p 1408:1408 ghcr.io/oracle/coherence-ce:24.09.3 ``` or to save some keystrokes/time, use the included npm script, `coh-up` to start a two-member Cluster with the gRPC port at 1408" @@ -30,10 +30,10 @@ npm run coh-up ``` **Important!** When calling `coh-up` or `coh-down`, the LTS version of Coherence will be used (`22.06.11`). -To use a later Coherence version, such as `24.09.2`, prefix the calls with, or export `COHERENCE_VERSION=`. +To use a later Coherence version, such as `24.09.3`, prefix the calls with, or export `COHERENCE_VERSION=`. For example: ```bash -COHERENCE_VERSION=24.09.2 npm run coh-up +COHERENCE_VERSION=24.09.3 npm run coh-up ``` For more details on the image, see the [documentation](https://github.com/oracle/coherence/tree/master/prj/coherence-docker). From 689d88b0da9cd86555196c32ae12296a7ab62b92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Feb 2025 08:42:42 -0800 Subject: [PATCH 23/25] Bump grpc-tools from 1.12.4 to 1.13.0 (#116) Bumps [grpc-tools](https://github.com/grpc/grpc-node) from 1.12.4 to 1.13.0. - [Release notes](https://github.com/grpc/grpc-node/releases) - [Commits](https://github.com/grpc/grpc-node/compare/grpc-tools@1.12.4...grpc@1.13.0) --- updated-dependencies: - dependency-name: grpc-tools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index d5a5e65..0be8999 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@types/google-protobuf": "^3.15", "glob-parent": "^6.0", "grpc_tools_node_protoc_ts": "^5.3", - "grpc-tools": "^1.12", + "grpc-tools": "^1.13", "mocha": "^11.1", "nyc": "^15.1", "source-map-support": "^0.5", @@ -1758,9 +1758,9 @@ "dev": true }, "node_modules/grpc-tools": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.12.4.tgz", - "integrity": "sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.13.0.tgz", + "integrity": "sha512-7CbkJ1yWPfX0nHjbYG58BQThNhbICXBZynzCUxCb3LzX5X9B3hQbRY2STiRgIEiLILlK9fgl0z0QVGwPCdXf5g==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -5004,9 +5004,9 @@ } }, "grpc-tools": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.12.4.tgz", - "integrity": "sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.13.0.tgz", + "integrity": "sha512-7CbkJ1yWPfX0nHjbYG58BQThNhbICXBZynzCUxCb3LzX5X9B3hQbRY2STiRgIEiLILlK9fgl0z0QVGwPCdXf5g==", "dev": true, "requires": { "@mapbox/node-pre-gyp": "^1.0.5" diff --git a/package.json b/package.json index 9d090fa..4f444d7 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "decimal.js": "^10.5" }, "devDependencies": { - "grpc-tools": "^1.12", + "grpc-tools": "^1.13", "@types/google-protobuf": "^3.15", "glob-parent": "^6.0", "grpc_tools_node_protoc_ts": "^5.3", From b12eedd364a7554f30dc3921a7bcf61fb79aaf6f Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Tue, 11 Feb 2025 21:40:54 -0800 Subject: [PATCH 24/25] Minor Update to README.md. (#117) --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index a385bc1..8e38d85 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # JavaScript Client for Oracle Coherence -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=oracle_coherence-js-client&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=oracle_coherence-js-client) -Coherence JavaScript Client allows Node applications to act as +The JavaScript Client for Oracle Coherence allows Node applications to act as cache clients to a Coherence Cluster using Google's `gRPC` framework for the network transport. From 88703c9873f3c60a1edcb3f111cbca31e738d033 Mon Sep 17 00:00:00 2001 From: Ryan Lubke Date: Thu, 13 Feb 2025 07:42:05 -0800 Subject: [PATCH 25/25] Archive NPM publish logs in case of failure. (#118) --- .github/workflows/release.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ce8d950..f70f355 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -# Copyright 2020, 2023, Oracle Corporation and/or its affiliates. All rights reserved. +# Copyright 2020, 2025, Oracle Corporation and/or its affiliates. All rights reserved. # Licensed under the Universal Permissive License v 1.0 as shown at # https://oss.oracle.com/licenses/upl. @@ -46,3 +46,9 @@ jobs: - run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_KEY }} + - name: Archive Failure Logs + if: failure() + uses: actions/upload-artifact@v4 + with: + name: npm.log + path: /home/runner/.npm/_logs/*